Momentum optimizer
OptimizerMomentum.RdThis class defines momentum.
Super class
vistool::Optimizer -> OptimizerMomentum
Methods
Method new()
Creates a new instance of this R6 class.
Usage
OptimizerMomentum$new(
  objective,
  x_start,
  lr = 0.01,
  momentum = 0.9,
  id = "Momentum",
  print_trace = TRUE
)Arguments
objective(
Objective)
The objective to optimize.x_start(
numeric())
Start value of the optimization. Note, after the first call of$optimize()the last value is used to continue optimization. Get this value with$x.lr(
numeric(1))
Step size with which the update is multiplied.momentum(
numeric(1))
Momentum value.id(
character(1))
Id of the object.print_trace(
logical(1))
Indicator whether to print the status of$optimize().
Method optimize()
Optimize steps iteration.
Usage
OptimizerMomentum$optimize(
  steps = 1L,
  step_size_control = function(x, u, obj, opt) {
     return(1)
 },
  minimize = NULL
)Arguments
steps(
integer(1))
Number of steps/iterations.step_size_control(
function()) A function with argumentsx(the old input value),u(the update generated by$update()),obj(the objective object), andoptthe optimizer asself. Default simply returns 1 to include the update as is. Note that the updateuis calculated based on the formula with learning rate, e.g., for GD x_new = x_old + lr * g, with update u = lr * g. Step size control takes x_old and u (with included learning rate) and calculates a value that is used to extend or compress u for the final update.minimize(
logical(1)) Indicator to whether minimize or optimize the objective. The default (NULL) uses the option defined inobjective$minimize.
Method update()
Calculate the update for x