机器学习中的数学——优化技术:优化算法-[AdaGrad]

AdaGrad算法独立地适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史平方值总和的平方根。具有损失最大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数在学习率上有相对较小的下降。净效果是在参数空间中更为平缓的倾斜方向会取得更大的进步

在凸优化背景中,AdaGrad算法具有一些令人满意的理论性质。然而,经验上已经发现,对于训练深度神经网络模型而言,从训练开始时积累梯度平方会导致有效学习率过早和过量的减小。AdaGrad在某些深度学习模型上效果不错,但不是全部。

AdaGrad算法
输入:全局学习率 ϵ \epsilon ϵ;初始参数 θ \theta θ;小常数 δ \delta δ(为了数值稳定大约设为 1 0 − 7 10^{-7} 107;)
输出:神经网络参数 θ \theta θ
(1) 初始化梯度累积变量 r = 0 r=0 r=0
(2) while 停止准则未满足 \quad\text{停止准则未满足} 停止准则未满足
(1) \quad 从训练集中采包含 m m m个样本 { x ( 1 ) , x ( 2 ) , ⋯   , x ( m ) } \{x^{(1)}, x^{(2)}, \cdots, x^{(m)}\} { x(1),x(2),,x(m)}的小批量,其中 x ( i ) x^{(i)} x(i)对应目标为 y ( i ) y^{(i)} y(i)
(2) \quad 计算梯度估计: g = 1 m ∇ θ ∑ i L ( f ( x ( i ) ; θ ) , y ( i ) ) g = \frac{1}{m}\nabla_\theta\sum_iL(f(x^{(i)}; \theta), y^{(i)}) g=m1θiL(f(x(i);θ),y(i))
(3) \quad 累积平方梯度: r = r + g ⊙ g r=r+g\odot g r=r+gg
(4) \quad 更新参数: θ = θ − ϵ δ + t ⊙ g \theta=\theta-\frac{\epsilon}{\delta+t}\odot g θ=θδ+tϵg
(5) return θ \theta θ

猜你喜欢

转载自blog.csdn.net/hy592070616/article/details/123443250