Skip to content

AdamW

Gradient-Based

Adam with Decoupled Weight Decay (AdamW) optimization algorithm.

Algorithm Overview

This module implements the AdamW optimization algorithm. AdamW is a variant of Adam that decouples weight decay from the gradient-based update. This decoupling provides better regularization and often leads to improved generalization in machine learning.

AdamW performs the following update rule: m = beta1 * m + (1 - beta1) * gradient v = beta2 * v + (1 - beta2) * gradient^2 m_hat = m / (1 - beta1^t) v_hat = v / (1 - beta2^t) x = x - learning_rate * (m_hat / (sqrt(v_hat) + epsilon) + weight_decay * x)

where: - x: current solution - m: first moment estimate (exponential moving average of gradients) - v: second moment estimate (exponential moving average of squared gradients) - learning_rate: step size for parameter updates - beta1, beta2: exponential decay rates for moment estimates - epsilon: small constant for numerical stability - weight_decay: weight decay coefficient - t: time step

Usage

python
from opt.gradient_based.adamw import AdamW
from opt.benchmark.functions import sphere

optimizer = AdamW(
    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_iterintDEFAULT_MAX_ITERATIONSMaximum iterations.
learning_ratefloatADAMW_LEARNING_RATELearning rate (step size).
beta1floatADAM_BETA1Exponential decay rate for first moment estimates.
beta2floatADAM_BETA2Exponential decay rate for second moment estimates.
epsilonfloatADAM_EPSILONSmall constant for numerical stability.
weight_decayfloatADAMW_WEIGHT_DECAYWeight decay coefficient for L2 regularization decoupled from gradient.
seedint | NoneNoneRandom seed for reproducibility.
target_precisionfloat1e-08Algorithm-specific parameter
f_optfloat | NoneNoneAlgorithm-specific parameter

Algorithm Metadata

PropertyValue
Algorithm NameAdam with Decoupled Weight Decay
AcronymADAMW
Year Introduced2017
AuthorsLoshchilov, Ilya; Hutter, Frank
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+ϵ+λxt)

where:

  • xt is the solution at iteration t
  • gt is the gradient at iteration t
  • α is the learning rate
  • β1,β2 are exponential decay rates for moment estimates
  • ϵ is a small constant for numerical stability
  • λ is the weight decay coefficient
  • mt,vt are biased first and second moment estimates

Constraint handling:

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

Hyperparameters

ParameterDefaultBBOB RecommendedDescription
max_iter100010000Maximum iterations
learning_rate0.0010.001-0.01Learning rate (step size)
beta10.90.9Decay for 1st moment
beta20.9990.999Decay for 2nd moment
epsilon1e-81e-8Numerical stability
weight_decay0.010.0-0.1Weight decay coefficient

Sensitivity Analysis:

  • learning_rate: High impact on convergence
  • weight_decay: Medium impact - provides regularization
  • Recommended tuning ranges: α[0.0001,0.01], λ[0,0.1]

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 functions
  • Weak function classes: Highly multimodal with many local optima
  • Typical success rate at 1e-8 precision: 55-75% (dim=5)
  • Expected Running Time (ERT): Similar to Adam, sometimes better with regularization

Convergence Properties:

  • Convergence rate: Fast initial convergence, linear/sublinear later
  • Local vs Global: Tends toward local optima (gradient-based)
  • Premature convergence risk: Low - weight decay provides regularization

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 and epsilon for numerical stability

Known Limitations:

  • Weight decay hyperparameter requires tuning for optimal performance
  • Gradient approximation via finite differences less accurate than analytical
  • May struggle on highly non-convex landscapes without proper tuning

Version History:

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

References

[1] Loshchilov, I., & Hutter, F. (2017). "Decoupled Weight Decay Regularization." arXiv preprint arXiv:1711.05101. Presented at ICLR 2019. https://arxiv.org/abs/1711.05101

[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

Adam: Base algorithm without decoupled weight decay BBOB Comparison: AdamW often generalizes better with proper regularization

AMSGrad: Fixes convergence issues in Adam BBOB Comparison: Similar BBOB performance but different theoretical guarantees

Nadam: Combines Adam with Nesterov momentum BBOB Comparison: Nadam may converge faster but AdamW has better regularization

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

Related BBOB Algorithm Classes:

  • Gradient: Adam, AMSGrad, Nadam, Adamax
  • Classical: BFGS, L-BFGS

Benchmark Performance

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

Convergence, final-fitness distribution and performance profile on rastrigin (5D), averaged over independent runs (compared against representative baselines):


Source Code

View the implementation: adamw.py

Released under the MIT License.