Skip to content

Adadelta

Gradient-Based

Adaptive Delta (AdaDelta) optimization algorithm.

Algorithm Overview

This module implements the AdaDelta optimizer, which is an extension of AdaGrad that seeks to reduce its sensitivity to the learning rate hyperparameter.

AdaDelta is a gradient-based optimization algorithm that adapts the learning rate for each of the parameters in the model. It is designed to converge faster than AdaGrad by using a moving average of the squared gradient values to scale the learning rate.

The AdaDelta optimizer is defined by the following update rule:

Eg = rho * Eg + (1 - rho) * g^2
dx = -sqrt(Edx + eps) / sqrt(Eg + eps) * g
Edx = rho * Edx + (1 - rho) * dx^2
x = x + dx

where: - x: current solution - g: gradient of the objective function - rho: decay rate - eps: small constant to avoid dividing by zero - Eg: moving average of squared gradient values - Edx: moving average of squared updates

The algorithm iteratively updates the solution x by computing the gradient of the objective function at x, scaling it by the moving average of the squared gradients, and dividing it by the square root of the moving average of the squared updates.

The algorithm continues for a fixed number of iterations or until a specified stopping criterion is met, returning the best solution found.

This module provides a simple example of how to use the AdaDelta optimizer to minimize the Shifted Ackley's function in two dimensions.

Usage

python
from opt.gradient_based.adadelta import AdaDelta
from opt.benchmark.functions import sphere

optimizer = AdaDelta(
    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.
rhofloat0.97Decay rate for moving averages of squared gradients and updates.
epsfloat1e-08Small constant for numerical stability in division operations.
seedint | NoneNoneRandom seed for reproducibility.

Algorithm Metadata

PropertyValue
Algorithm NameAdaptive Delta
AcronymADADELTA
Year Introduced2012
AuthorsZeiler, Matthew D.
Algorithm ClassGradient-Based
ComplexityO(dim)
PropertiesGradient-based, Adaptive, Stochastic
ImplementationPython 3.10+
COCO CompatibleYes

Mathematical Formulation

Core update equations:

E[g2]t=ρE[g2]t1+(1ρ)gt2Δxt=E[Δx2]t1+ϵE[g2]t+ϵgtE[Δx2]t=ρE[Δx2]t1+(1ρ)Δxt2xt+1=xt+Δxt

where:

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

Constraint handling:

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

Hyperparameters

ParameterDefaultBBOB RecommendedDescription
max_iter100010000Maximum iterations
rho0.950.90-0.99Decay rate for moving averages
eps1e-81e-8Numerical stability constant

Sensitivity Analysis:

  • rho: Medium impact on convergence - controls adaptation speed
  • Recommended tuning ranges: ρ[0.90,0.99], ϵ[1010,106]

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 averages
  • BBOB budget usage: Typically uses 60-80% of dim*10000 budget for convergence

BBOB Performance Characteristics:

  • Best function classes: Unimodal, ill-conditioned functions
  • Weak function classes: Multimodal functions with many local optima
  • Typical success rate at 1e-8 precision: 40-60% (dim=5)
  • Expected Running Time (ERT): Comparable to Adam, better than vanilla SGD

Convergence Properties:

  • Convergence rate: Linear to sublinear
  • Local vs Global: Tends toward local optima (gradient-based)
  • Premature convergence risk: Medium - adaptive rates help 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: Epsilon added to denominators to prevent division by zero

Known Limitations:

  • Gradient approximation via finite differences may be less accurate than analytical gradients
  • Performance depends on problem scaling and conditioning
  • May struggle on highly non-convex landscapes

Version History:

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

References

[1] Zeiler, M. D. (2012). "ADADELTA: An Adaptive Learning Rate Method." arXiv preprint arXiv:1212.5701. https://arxiv.org/abs/1212.5701

[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 code: Not publicly available
  • This implementation: Based on [1] with modifications for BBOB compliance

See Also

AdaGrad: Predecessor algorithm with accumulating gradient history BBOB Comparison: AdaDelta typically converges faster on ill-conditioned functions

RMSprop: Similar adaptive learning rate method BBOB Comparison: Both perform similarly, but AdaDelta doesn't require manual learning rate

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

Related BBOB Algorithm Classes:

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

Released under the MIT License.