1. 简介 AdaGrad 算法是借鉴 ℓ2\ell_2ℓ2 正则化的思想,每次迭代时自适应地调整每个参数的学习率。 2. 原理 第 ttt 次迭代时: ht=ht−1+∂L∂Wt−1⊙∂L∂Wt−1Wt=Wt−1−η1ht+ε∂L∂Wt−1\begin{array}{c} \boldsymbol{h}_t = \boldsymbol{h}_{t-1} + \frac{\partial L}{\partial \boldsymbol{W}_{t-1}} \odot \frac{\partial L}{\partial \boldsymbol{W}_{t-1}}\\ \boldsymbol{W}_t = \boldsymbol{W}_{t-1} - \eta \frac{1}{\sqrt{\boldsymbol{h}_t+\boldsymbol{\varepsilon}}} \frac{\partial L}{\partial \boldsymbol{W}_{t-1}} \end{array} ht=ht−1+∂Wt−1∂L⊙∂Wt−1∂LWt=Wt−1−ηht+ε1∂Wt−1∂L 其中,W\boldsymbol{W}W 为需要更新的参数,LLL 为损失函数,∂L∂W\frac{\partial L}{\partial \boldsymbol{W}}∂W∂L 为 LLL 关于 W\boldsymbol{W}W 的梯度,η\etaη 为学习率,⊙\odot⊙ 表示对应矩阵元素的乘法,ε\boldsymbol{\varepsilon}ε 是为了保持数值稳定而设置的非常小的常数(一般取 e−7e^{-7}e−7 到 e−10e^{-10}e−10)。 在更新参数时,通过乘以 1h+ε\frac{1}{\sqrt{\boldsymbol{h}+\boldsymbol{\varepsilon}}}h+ε1,就可以调整学习的尺度。即可以按参数的元素进行学习率衰减,使变动大的参数的学习率逐渐减小。 AdaGrad 方法会记录过去所有梯度的平方和。因此,学习越深入,更新的幅度就越小。