Adam优化器是一种常用的优化算法,用于训练深度学习模型。它结合了动量法和自适应学习率的方法,能够有效地加速模型的训练过程。其步骤如下:
1. 初始化参数:
- 初始化一阶动量
和二阶动量
,通常设为 0。
- 初始化学习率
。
- 初始化动量衰减系数
和
,通常设为 0.9 和 0.999。
- 初始化小常数
,通常设为
。
2. 计算梯度:
- 计算损失函数
对参数
的梯度
。
- 数学表达式为:
3. 更新一阶动量和二阶动量:
- 更新一阶动量
和二阶动量
。
- 数学表达式为:
- 此外,需要计算偏差修正后的动量和方差,以确保算法的稳定性。
- 数学表达式为:
4. 更新参数:
- 更新参数
。
- 数学表达式为:
标准代码如下
def adam_optimizer(parameter, grad, m, v, t, learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8):
m = beta1 * m + (1 - beta1) * grad
v = beta2 * v + (1 - beta2) * (grad**2)
m_hat = m / (1 - beta1**t)
v_hat = v / (1 - beta2**t)
update = learning_rate * m_hat / (np.sqrt(v_hat) + epsilon)
parameter = parameter - update
return np.round(parameter,5), np.round(m,5), np.round(v,5)