337 auto b = scoped_calloc_or_throw<ftrl>();
338 bool ftrl_option =
false;
343 new_options.add(
make_option(
"ftrl", ftrl_option).keep().help(
"FTRL: Follow the Proximal Regularized Leader"))
344 .add(
make_option(
"coin", coin).keep().help(
"Coin betting optimizer"))
345 .add(
make_option(
"pistol", pistol).keep().help(
"PiSTOL: Parameter-free STOchastic Learning"))
346 .add(
make_option(
"ftrl_alpha", b->ftrl_alpha).help(
"Learning rate for FTRL optimization"))
347 .
add(
make_option(
"ftrl_beta", b->ftrl_beta).help(
"Learning rate for FTRL optimization"));
350 if (!ftrl_option && !pistol && !coin)
358 b->ftrl_alpha = options.
was_supplied(
"ftrl_alpha") ? b->ftrl_alpha : 0.005f;
359 b->ftrl_beta = options.
was_supplied(
"ftrl_beta") ? b->ftrl_beta : 0.1f;
363 b->ftrl_alpha = options.
was_supplied(
"ftrl_alpha") ? b->ftrl_alpha : 1.0f;
364 b->ftrl_beta = options.
was_supplied(
"ftrl_beta") ? b->ftrl_beta : 0.5f;
368 b->ftrl_alpha = options.
was_supplied(
"ftrl_alpha") ? b->ftrl_alpha : 4.0f;
369 b->ftrl_beta = options.
was_supplied(
"ftrl_beta") ? b->ftrl_beta : 1.0f;
373 b->no_win_counter = 0;
379 std::string algorithm_name;
382 algorithm_name =
"Proximal-FTRL";
384 learn_ptr = learn_proximal<true>;
386 learn_ptr = learn_proximal<false>;
392 algorithm_name =
"PiSTOL";
399 algorithm_name =
"Coin Betting";
405 b->data.ftrl_alpha = b->ftrl_alpha;
406 b->data.ftrl_beta = b->ftrl_beta;
407 b->data.l1_lambda = b->all->l1_lambda;
408 b->data.l2_lambda = b->all->l2_lambda;
412 std::cerr <<
"Enabling FTRL based optimization" << std::endl;
413 std::cerr <<
"Algorithm used: " << algorithm_name << std::endl;
414 std::cerr <<
"ftrl_alpha = " << b->ftrl_alpha << std::endl;
415 std::cerr <<
"ftrl_beta = " << b->ftrl_beta << std::endl;
421 b->early_stop_thres = options.
get_typed_option<
size_t>(
"early_terminate").value();
431 l->set_multipredict(multipredict<true>);
433 l->set_multipredict(multipredict<false>);
base_learner * make_base(learner< T, E > &base)
float sensitivity(ftrl &b, base_learner &, example &ec)
virtual void add_and_parse(const option_group_definition &group)=0
learner< T, E > & init_learner(free_ptr< T > &dat, L *base, void(*learn)(T &, L &, E &), void(*predict)(T &, L &, E &), size_t ws, prediction_type::prediction_type_t pred_type)
typed_option< T > & get_typed_option(const std::string &key)
virtual bool was_supplied(const std::string &key)=0
int add(svm_params ¶ms, svm_example *fec)
typed_option< T > make_option(std::string name, T &location)
constexpr uint64_t UINT64_ONE
void learn_pistol(ftrl &a, single_learner &base, example &ec)
void learn_cb(ftrl &a, single_learner &base, example &ec)
void save_load(ftrl &b, io_buf &model_file, bool read, bool text)
double normalized_sum_norm_x