📘
Adam Optimizer Step
HardOptimization
Implement a single step of the Adam optimizer, widely used in deep learning.
Adam (Adaptive Moment Estimation) combines momentum and RMSprop, adapting learning rates per-parameter:
Algorithm (single step at time t):
- Compute gradient gt at current parameters
- Update biased first moment: mt=β1mt−1+(1−β1)gt
- Update biased second moment: vt=β2vt−1+(1−β2)gt2
- Bias correction: m^t=1−β1tmt, v^t=1−β2tvt
- Update parameters: θt=θt−1−αv^t+ϵm^t
Typical hyperparameters: α=0.001, β1=0.9, β2=0.999, ϵ=10−8
Example:
Input:
params = [1.0, 2.0] grads = [0.1, 0.2] m = [0.0, 0.0] v = [0.0, 0.0] t = 1 lr = 0.001 beta1 = 0.9 beta2 = 0.999
Output:
{'params': [0.999, 1.999], 'm': [0.01, 0.02], 'v': [0.00001, 0.00004]}Reasoning:
Step 1: Update first moment (m) m1=0.9×0+0.1×[0.1,0.2]=[0.01,0.02]
Step 2: Update second moment (v) v1=0.999×0+0.001×[0.01,0.04]=[0.00001,0.00004]
Step 3: Bias correction m^1=1−0.91[0.01,0.02]=[0.1,0.2] v^1=1−0.9991[0.00001,0.00004]=[0.01,0.04]
Step 4: Parameter update θ1=[1,2]−0.001×[0.01,0.04]+ϵ[0.1,0.2] θ1=[1,2]−0.001×[0.1,0.2][0.1,0.2] θ1=[1,2]−0.001×[1,1]=[0.999,1.999]
Constraints:
- params: Current parameter values (list)
- grads: Gradients at current params (list)
- m, v: First and second moment estimates (lists)
- t: Current timestep (int >= 1)
- Return: Dict with new 'params', 'm', 'v'
- Round to 6 decimal places
Editor
Python 3.13.1
Test Results
0/0Run code to see test results.