Skip to content

RMSprop

Gradient-Based

Root Mean Square Propagation (RMSprop) optimization algorithm.

Algorithm Overview

This module implements the RMSprop optimization algorithm. RMSprop is an adaptive learning rate method that was proposed by Geoffrey Hinton. It modifies AdaGrad to perform better in non-convex settings by using a moving average of squared gradients instead of accumulating all squared gradients.

RMSprop performs the following update rule: v = rho * v + (1 - rho) * gradient^2 x = x - (learning_rate / sqrt(v + epsilon)) * gradient

where: - x: current solution - v: moving average of squared gradients - learning_rate: step size for parameter updates - rho: decay rate (typically 0.9) - epsilon: small constant to avoid division by zero - gradient: gradient of the objective function at x

Usage

python
from opt.gradient_based.rmsprop import RMSprop
from opt.benchmark.functions import sphere

optimizer = RMSprop(
    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).
rhofloat0.9Decay rate for moving average of squared gradients.
epsilonfloat1e-08Small constant for numerical stability.
seedint | NoneNoneRandom seed for reproducibility.

Algorithm Metadata

PropertyValue
Algorithm NameRoot Mean Square Propagation
AcronymRMSPROP
Year Introduced2012
AuthorsHinton, Geoffrey; Srivastava, Nitish
Algorithm ClassGradient-Based
ComplexityO(dim)
PropertiesGradient-based, Stochastic
ImplementationPython 3.10+
COCO CompatibleYes

Mathematical Formulation

Core update equations:

E[g2]t=ρE[g2]t1+(1ρ)gt2xt+1=xtηE[g2]t+ϵgt

where:

  • xt is the solution at iteration t
  • gt is the gradient at iteration t
  • η is the learning rate
  • ρ is the decay rate for moving average
  • ϵ is a small constant for numerical stability
  • E[g2]t is the moving average of squared gradients

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)
rho0.90.9-0.99Decay rate for moving average
epsilon1e-81e-8Numerical stability constant

Sensitivity Analysis:

  • learning_rate: High impact on convergence
  • rho: Medium impact - controls adaptation speed
  • Recommended tuning ranges: η[0.0001,0.1], ρ[0.85,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 and updates
  • Space complexity: O(dim) for storing moving average
  • BBOB budget usage: Typically uses 55-75% of dim*10000 budget for convergence

BBOB Performance Characteristics:

  • Best function classes: Unimodal, ill-conditioned functions
  • Weak function classes: Highly multimodal functions
  • Typical success rate at 1e-8 precision: 45-65% (dim=5)
  • Expected Running Time (ERT): Comparable to Adam, better than AdaGrad

Convergence Properties:

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

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: Moving average prevents gradient explosion

Known Limitations:

  • Learning rate still requires tuning
  • May not converge in all scenarios without proper LR scheduling
  • Gradient approximation via finite differences less accurate

Version History:

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

References

[1] Tieleman, T., & Hinton, G. (2012). "Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude." COURSERA: Neural networks for machine learning, 4(2), 26-31.

[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 presentation: Hinton's Coursera lecture
  • This implementation: Standard RMSprop with BBOB compliance

See Also

AdaGrad: Predecessor with accumulating gradient history BBOB Comparison: RMSprop more stable due to moving average

Adam: Combines RMSprop with momentum BBOB Comparison: Adam generally outperforms RMSprop

AdaDelta: Similar adaptive method without learning rate BBOB Comparison: Both perform similarly on most BBOB functions

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

Related BBOB Algorithm Classes:

  • Gradient: Adam, AdamW, AdaGrad, AdaDelta
  • 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: rmsprop.py

Released under the MIT License.