Skip to content

SGD with Momentum

Gradient-Based

Stochastic Gradient Descent with Momentum (SGD-M) optimization algorithm.

Algorithm Overview

This module implements the SGD with Momentum optimization algorithm. SGD with Momentum is an extension of SGD that accelerates gradient descent in the relevant direction and dampens oscillations. It does this by adding a fraction of the update vector of the past time step to the current update vector.

SGD with Momentum performs the following update rule: v = momentum * v - learning_rate * gradient x = x + v

where: - x: current solution - v: velocity (momentum term) - learning_rate: step size for parameter updates - momentum: momentum coefficient (typically 0.9) - gradient: gradient of the objective function at x

Usage

python
from opt.gradient_based.sgd_momentum import SGDMomentum
from opt.benchmark.functions import sphere

optimizer = SGDMomentum(
    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.
learning_ratefloat0.01Learning rate (step size).
momentumfloat0.9Momentum coefficient.
seedint | NoneNoneRandom seed for reproducibility.
target_precisionfloat1e-08Algorithm-specific parameter
f_optfloat | NoneNoneAlgorithm-specific parameter

Algorithm Metadata

PropertyValue
Algorithm NameSGD with Momentum
AcronymSGD-M
Year Introduced1964
AuthorsPolyak, Boris T.
Algorithm ClassGradient-Based
ComplexityO(dim)
PropertiesGradient-based, Stochastic
ImplementationPython 3.10+
COCO CompatibleYes

Mathematical Formulation

Core update equations:

vt=μvt1ηgtxt+1=xt+vt

where:

  • xt is the solution at iteration t
  • gt is the gradient at iteration t
  • vt is the velocity (momentum term) at iteration t
  • η is the learning rate
  • μ is the momentum coefficient

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.010.001-0.1Learning rate (step size)
momentum0.90.9-0.99Momentum coefficient

Sensitivity Analysis:

  • learning_rate: High impact on convergence
  • momentum: Medium impact - accelerates convergence
  • Recommended tuning ranges: η[0.0001,0.1], μ[0.8,0.99]

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
  • Space complexity: O(dim) for velocity storage
  • BBOB budget usage: Typically uses 60-80% of dim*10000 budget for convergence

BBOB Performance Characteristics:

  • Best function classes: Convex, smooth functions
  • Weak function classes: Highly multimodal, noisy functions
  • Typical success rate at 1e-8 precision: 35-55% (dim=5)
  • Expected Running Time (ERT): Better than vanilla SGD, comparable to adaptive methods

Convergence Properties:

  • Convergence rate: Faster than SGD, linear for convex functions
  • Local vs Global: Tends toward local optima (gradient-based)
  • Premature convergence risk: Medium - momentum helps escape plateaus

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: No special provisions beyond momentum

Known Limitations:

  • Learning rate still requires manual tuning
  • Momentum can cause overshooting in ravines
  • May oscillate around minima with high momentum
  • Not adaptive to problem conditioning

Version History:

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

References

[1] Polyak, B. T. (1964). "Some methods of speeding up the convergence of iteration methods." USSR Computational Mathematics and Mathematical Physics, 4(5), 1-17. https://doi.org/10.1016/0041-5553(64)90137-5

[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:

  • Original paper: Classical algorithm, widely implemented
  • This implementation: Standard SGD with momentum for BBOB compliance

See Also

SGD: Vanilla stochastic gradient descent without momentum BBOB Comparison: Momentum variant converges faster on most functions

NesterovAcceleratedGradient: Improved momentum with lookahead BBOB Comparison: NAG often outperforms standard momentum

Adam: Adaptive learning rate with momentum-like terms BBOB Comparison: Adam generally more robust than SGD-M

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

Related BBOB Algorithm Classes:

  • Gradient: Adam, AdamW, RMSprop, NAG
  • 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: sgd_momentum.py

Released under the MIT License.