Adam
Adam(Adaptive Moment Estimation)是一种自适应的优化算法,用于训练神经网络等机器学习模型。Adam算法是一种基于梯度下降的优化算法,结合了动量方法和自适应学习率的优点,并对学习率进行自适应调整。Adam算法的优点是收敛速度快,不需要手动调整学习率,兼顾了稳定性和速度。
Adam算法的步骤如下:
- 初始化模型参数θ\boldsymbol{\theta}θ和梯度缓存变量S\boldsymbol{S}S和R\boldsymbol{R}R;
- 对于每个迭代步骤t=1,2,...t=1,2,...t=1,2,...执行以下操作:
a. 从训练集中随机抽取一个小批量样本Xt\boldsymbol{X}_tXt和其对应的标签yt\boldsymbol{y}_tyt;
b. 计算小批量样本的梯度信息gt\boldsymbol{g}_tgt;
c. 更新第一矩估计向量St\boldsymbol{S}_tSt和第二矩估计向量Rt\boldsymbol{R}_tRt;
d. 计算偏置校正后的梯度信息gt′\boldsymbol{g}'_tgt′;
e. 更新模型参数θ\boldsymbol{\theta}θ。
Adam算法的具体计算公式如下:
-
计算梯度信息:
gt=∇θ J(θ,Xt,yt)\boldsymbol{g}_t = \nabla_{\boldsymbol{\theta}}\ J(\boldsymbol{\theta}, \boldsymbol{X}_t, \boldsymbol{y}_t)gt=∇θ J(θ,Xt,yt)
式中,J(θ,Xt,yt)J(\boldsymbol{\theta}, \boldsymbol{X}_t, \boldsymbol{y}_t)J(θ,Xt,yt)表示目标函数,Xt\boldsymbol{X}_tXt和yt\boldsymbol{y}_tyt分别表示一个小批量样本的特征和标签。 -
计算第一矩估计向量St\boldsymbol{S}_tSt和第二矩估计向量Rt\boldsymbol{R}_tRt:
St=β1St−1+(1−β1)gt\boldsymbol{S}_t = \beta_1 \boldsymbol{S}_{t-1} + (1-\beta_1) \boldsymbol{g}_tSt=β1St−1+(1−β1)gt
Rt=β2Rt−1+(1−β2)gt2\boldsymbol{R}_t = \beta_2 \boldsymbol{R}_{t-1} + (1-\beta_2) \boldsymbol{g}_t^2 Rt=β2Rt−1+(1−β2)gt2
式中,St\boldsymbol{S}_tSt表示第一矩估计向量,Rt\boldsymbol{R}_tRt表示第二矩估计向量;β1\beta_1β1和β2\beta_2β2是衰减率(decay rate),通常取值为0.9和0.999。 -
计算偏置校正后的梯度信息gt′\boldsymbol{g}'_tgt′:
S^t=St1−β1t\boldsymbol{\hat{S}}_t = \frac{\boldsymbol{S}_t}{1-\beta_1^t}S^t=1−β1tSt
R^t=Rt1−β2t\boldsymbol{\hat{R}}_t = \frac{\boldsymbol{R}_t}{1-\beta_2^t}R^t=1−β2tRt
gt′=αS^tR^t+ϵ\boldsymbol{g}'_t = \frac{\alpha \boldsymbol{\hat{S}}_t}{\sqrt{\boldsymbol{\hat{R}}_t}+\epsilon}gt′=R^t+ϵαS^t
式中,S^t\boldsymbol{\hat{S}}_tS^t和R^t\boldsymbol{\hat{R}}_tR^t分别表示经过偏置校正后的第一矩估计向量和第二矩估计向量;α\alphaα表示学习率(learning rate),ϵ\epsilonϵ是平滑项,通常设置为10−810^{-8}10−8,用于防止除0。 -
更新模型参数:
θt+1=θt−gt′\boldsymbol{\theta}_{t+1} = \boldsymbol{\theta}_t - \boldsymbol{g}'_tθt+1=θt−gt′
以上就是Adam算法的具体步骤和计算公式。