Optimizer using Gradient Descent¶
GradientDescentOptimizer¶
-
class
l2l.optimizers.gradientdescent.optimizer.
GradientDescentOptimizer
(traj, optimizee_create_individual, optimizee_fitness_weights, parameters, optimizee_bounding_func=None)[source]¶ Bases:
l2l.optimizers.optimizer.Optimizer
Class for a generic gradient descent solver. In the pseudo code the algorithm does:
- For n iterations do:
Explore the fitness of individuals in the close vicinity of the current one
Calculate the gradient based on these fitnesses.
- Create the new ‘current individual’ by taking a step in the parameters space along the direction
of the largest ascent of the plane
NOTE: This expects all parameters of the system to be of floating point
- Parameters
traj (Trajectory) – Use this trajectory to store the parameters of the specific runs. The parameters should be initialized based on the values in parameters
optimizee_create_individual – Function that creates a new individual
optimizee_fitness_weights – Fitness weights. The fitness returned by the Optimizee is multiplied by these values (one for each element of the fitness vector)
parameters – Instance of
namedtuple()
ClassicGDParameters
,namedtuple()
StochasticGDParameters
,namedtuple()
RMSPropParameters
ornamedtuple()
AdamParameters
containing the parameters needed by the Optimizer. The type of this parameter is used to select one of the GD variants.
-
post_process
(traj, fitnesses_results)[source]¶ See
post_process()
-
init_classic_gd
(parameters, traj)[source]¶ Classic Gradient Descent specific initializiation.
- Parameters
traj (Trajectory) – The trajectory on which the parameters should get stored.
- Returns
-
init_rmsprop
(parameters, traj)[source]¶ RMSProp specific initializiation.
- Parameters
traj (Trajectory) – The trajectory on which the parameters should get stored.
- Returns
-
init_adam
(parameters, traj)[source]¶ ADAM specific initializiation.
- Parameters
traj (Trajectory) – The trajectory on which the parameters should get stored.
- Returns
-
init_stochastic_gd
(parameters, traj)[source]¶ Stochastic Gradient Descent specific initializiation.
- Parameters
traj (Trajectory) – The trajectory on which the parameters should get stored.
- Returns
-
classic_gd_update
(traj, gradient)[source]¶ Updates the current individual using the classic Gradient Descent algorithm.
- Parameters
traj (Trajectory) – The trajectory which contains the parameters required by the update algorithm
gradient (ndarray) – The gradient of the fitness curve, evaluated at the current individual
- Returns
-
rmsprop_update
(traj, gradient)[source]¶ Updates the current individual using the RMSProp algorithm.
- Parameters
traj (Trajectory) – The trajectory which contains the parameters required by the update algorithm
gradient (ndarray) – The gradient of the fitness curve, evaluated at the current individual
- Returns
-
adam_update
(traj, gradient)[source]¶ Updates the current individual using the ADAM algorithm.
- Parameters
traj (Trajectory) – The trajectory which contains the parameters required by the update algorithm
gradient (ndarray) – The gradient of the fitness curve, evaluated at the current individual
- Returns
-
stochastic_gd_update
(traj, gradient)[source]¶ Updates the current individual using a stochastic version of the gradient descent algorithm.
- Parameters
traj (Trajectory) – The trajectory which contains the parameters required by the update algorithm
gradient (ndarray) – The gradient of the fitness curve, evaluated at the current individual
- Returns
ClassicGDParameters¶
-
class
l2l.optimizers.gradientdescent.optimizer.
ClassicGDParameters
(learning_rate, exploration_step_size, n_random_steps, n_iteration, stop_criterion, seed)¶ Bases:
tuple
- Parameters
learning_rate – The rate of learning per step of gradient descent
exploration_step_size – The standard deviation of random steps used for finite difference gradient
n_random_steps – The amount of random steps used to estimate gradient
n_iteration – number of iteration to perform
stop_criterion – Stop if change in fitness is below this value
-
property
exploration_step_size
¶
-
property
learning_rate
¶
-
property
n_iteration
¶
-
property
n_random_steps
¶
-
property
seed
¶
-
property
stop_criterion
¶
StochasticGDParameters¶
-
class
l2l.optimizers.gradientdescent.optimizer.
StochasticGDParameters
(learning_rate, stochastic_deviation, stochastic_decay, exploration_step_size, n_random_steps, n_iteration, stop_criterion, seed)¶ Bases:
tuple
- Parameters
learning_rate – The rate of learning per step of gradient descent
stochastic_deviation – The standard deviation of the random vector used to perturbate the gradient
stochastic_decay – The decay of the influence of the random vector that is added to the gradient (set to 0 to disable stochastic perturbation)
exploration_step_size – The standard deviation of random steps used for finite difference gradient
n_random_steps – The amount of random steps used to estimate gradient
n_iteration – number of iteration to perform
stop_criterion – Stop if change in fitness is below this value
-
property
exploration_step_size
¶
-
property
learning_rate
¶
-
property
n_iteration
¶
-
property
n_random_steps
¶
-
property
seed
¶
-
property
stochastic_decay
¶
-
property
stochastic_deviation
¶
-
property
stop_criterion
¶
AdamParameters¶
-
class
l2l.optimizers.gradientdescent.optimizer.
AdamParameters
(learning_rate, exploration_step_size, n_random_steps, first_order_decay, second_order_decay, n_iteration, stop_criterion, seed)¶ Bases:
tuple
- Parameters
learning_rate – The rate of learning per step of gradient descent
exploration_step_size – The standard deviation of random steps used for finite difference gradient
n_random_steps – The amount of random steps used to estimate gradient
first_order_decay – Specifies the amount of decay of the historic first order momentum per gradient descent step
second_order_decay – Specifies the amount of decay of the historic second order momentum per gradient descent step
n_iteration – number of iteration to perform
stop_criterion – Stop if change in fitness is below this value
-
property
exploration_step_size
¶
-
property
first_order_decay
¶
-
property
learning_rate
¶
-
property
n_iteration
¶
-
property
n_random_steps
¶
-
property
second_order_decay
¶
-
property
seed
¶
-
property
stop_criterion
¶
RMSPropParameters¶
-
class
l2l.optimizers.gradientdescent.optimizer.
RMSPropParameters
(learning_rate, exploration_step_size, n_random_steps, momentum_decay, n_iteration, stop_criterion, seed)¶ Bases:
tuple
- Parameters
learning_rate – The rate of learning per step of gradient descent
exploration_step_size – The standard deviation of random steps used for finite difference gradient
n_random_steps – The amount of random steps used to estimate gradient
momentum_decay – Specifies the decay of the historic momentum at each gradient descent step
n_iteration – number of iteration to perform
stop_criterion – Stop if change in fitness is below this value
seed – The random seed used for random number generation in the optimizer
-
property
exploration_step_size
¶
-
property
learning_rate
¶
-
property
momentum_decay
¶
-
property
n_iteration
¶
-
property
n_random_steps
¶
-
property
seed
¶
-
property
stop_criterion
¶