Skip to content

Adam

Gradient-Based

Adaptive Moment Estimation (Adam) optimization algorithm.

Algorithm Overview

This module implements the Adam optimization algorithm. Adam is a gradient-based optimization algorithm that computes adaptive learning rates for each parameter. It combines the advantages of two other extensions of stochastic gradient descent:

- AdaGrad
- RMSProp

Adam works well in practice and compares favorably to other adaptive learning-method algorithms as it converges fast and the learning speed of the Model is quite fast and efficient. It is straightforward to implement, is computationally efficient, has little memory requirements, is invariant to diagonal rescaling of the gradients, and is well suited for problems that are large in terms of data and/or parameters.

Usage

python
from opt.gradient_based.adaptive_moment_estimation import ADAMOptimization
from opt.benchmark.functions import sphere

optimizer = ADAMOptimization(
    func=sphere,
    lower_bound=-5.12,
    upper_bound=5.12,
    dim=10,
    max_iter=500,
)

best_solution, best_fitness = optimizer.search()
print(f"Best solution: {best_solution}")
print(f"Best fitness: {best_fitness:.6e}")

Parameters

ParameterTypeDefaultDescription
funcCallableRequiredObjective function to minimize.
lower_boundfloatRequiredLower bound of search space.
upper_boundfloatRequiredUpper bound of search space.
dimintRequiredProblem dimensionality.
max_iterint1000Maximum iterations.
alphafloat0.001Learning rate (step size).
beta1float0.9Exponential decay rate for first moment estimates (mean of gradients).
beta2float0.999Exponential decay rate for second moment estimates (uncentered variance).
epsilonfloat1e-13Small constant for numerical stability in division operations.
seedint | NoneNoneRandom seed for reproducibility.

Algorithm Metadata

PropertyValue
Algorithm NameAdaptive Moment Estimation
AcronymADAM
Year Introduced2014
AuthorsKingma, Diederik P.; Ba, Jimmy Lei
Algorithm ClassGradient-Based
ComplexityO(dim)
PropertiesGradient-based, Stochastic
ImplementationPython 3.10+
COCO CompatibleYes

Mathematical Formulation

Core update equations:

mt=β1mt1+(1β1)gtvt=β2vt1+(1β2)gt2m^t=mt1β1tv^t=vt1β2txt+1=xtαm^tv^t+ϵ

where:

  • xt is the solution at iteration t
  • gt is the gradient at iteration t
  • α is the step size (learning rate)
  • β1,β2 are exponential decay rates for moment estimates
  • ϵ is a small constant for numerical stability
  • mt is the first moment estimate (mean of gradients)
  • vt is the second moment estimate (uncentered variance)

Constraint handling:

  • Boundary conditions: Clamping to [lower_bound, upper_bound]
  • Feasibility enforcement: Solutions clipped after each update

Hyperparameters

ParameterDefaultBBOB RecommendedDescription
max_iter100010000Maximum iterations
alpha0.0010.001-0.01Learning rate (step size)
beta10.90.9Exponential decay for 1st moment
beta20.9990.999Exponential decay for 2nd moment
epsilon1e-81e-8Numerical stability constant

Sensitivity Analysis:

  • alpha: High impact on convergence - controls step size
  • beta1, beta2: Medium impact - control moment estimates
  • Recommended tuning ranges: α[0.0001,0.01], β1[0.8,0.95]

COCO/BBOB Benchmark Settings

Search Space:

  • Dimensions tested: 2, 3, 5, 10, 20, 40
  • Bounds: Function-specific (typically [-5, 5] or [-100, 100])
  • Instances: 15 per function (BBOB standard)

Evaluation Budget:

  • Budget: dim×10000 function evaluations
  • Independent runs: 15 (for statistical significance)
  • Seeds: 0-14 (reproducibility requirement)

Performance Metrics:

  • Target precision: 1e-8 (BBOB default)
  • Success rate at precision thresholds: [1e-8, 1e-6, 1e-4, 1e-2]
  • Expected Running Time (ERT) tracking

Raises

ValueError: If search space is invalid or function evaluation fails.

Notes

  • Modifies self.history if track_history=True
  • Uses self.seed for all random number generation
  • BBOB: Returns final best solution after max_iter or convergence

Computational Complexity:

  • Time per iteration: O(dim) for gradient computation and moment updates
  • Space complexity: O(dim) for storing moment estimates
  • BBOB budget usage: Typically uses 50-70% of dim*10000 budget for convergence

BBOB Performance Characteristics:

  • Best function classes: Unimodal, ill-conditioned, moderate multimodal
  • Weak function classes: Highly multimodal with many local optima
  • Typical success rate at 1e-8 precision: 50-70% (dim=5)
  • Expected Running Time (ERT): Competitive with other adaptive methods

Convergence Properties:

  • Convergence rate: Fast initial convergence, then linear/sublinear
  • Local vs Global: Tends toward local optima (gradient-based)
  • Premature convergence risk: Low-Medium - adaptive rates help exploration

Reproducibility:

  • Deterministic: Yes - Same seed guarantees same results
  • BBOB compliance: seed parameter required for 15 independent runs
  • Initialization: Uniform random sampling in [lower_bound, upper_bound]
  • RNG usage: numpy.random.default_rng(self.seed) throughout

Implementation Details:

  • Parallelization: Not supported
  • Constraint handling: Clamping to bounds after each update
  • Numerical stability: Bias correction prevents issues in early iterations

Known Limitations:

  • May not converge in some convex optimization scenarios (see AMSGrad paper)
  • Hyperparameter sensitive - alpha tuning often needed
  • Gradient approximation via finite differences less accurate than analytical

Version History:

  • v0.1.0: Initial implementation
  • v0.1.2: BBOB compliance improvements

References

[1] Kingma, D. P., & Ba, J. (2014). "Adam: A Method for Stochastic Optimization." arXiv preprint arXiv:1412.6980. Presented at ICLR 2015. https://arxiv.org/abs/1412.6980

[2] Hansen, N., Auger, A., Ros, R., Mersmann, O., Tušar, T., Brockhoff, D. (2021). "COCO: A platform for comparing continuous optimizers in a black-box setting." Optimization Methods and Software, 36(1), 114-144. https://doi.org/10.1080/10556788.2020.1808977

COCO Data Archive:

Implementation:

See Also

AdamW: Variant with decoupled weight decay BBOB Comparison: AdamW often generalizes better with regularization

Adamax: Variant using infinity norm BBOB Comparison: More robust to large gradients

AMSGrad: Fixes convergence issues in original Adam BBOB Comparison: Better convergence guarantees but similar BBOB performance

Nadam: Combines Adam with Nesterov momentum BBOB Comparison: Often converges faster than standard Adam

AbstractOptimizer: Base class for all optimizers opt.benchmark.functions: BBOB-compatible test functions

Related BBOB Algorithm Classes:

  • Gradient: AdamW, AMSGrad, Nadam, RMSprop, AdaGrad
  • Classical: BFGS, L-BFGS

Benchmark Performance

Interactive fitness landscape of a representative multimodal benchmark function (drag to rotate, scroll to zoom):

Run-based charts

Convergence, distribution and ECDF charts appear here once this optimizer is included in the benchmark suite.


Source Code

View the implementation: adaptive_moment_estimation.py

Released under the MIT License.