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

受Nesterov Accelerated Gradient算法的启发,Sutskever提出了动量算法的一个变种。这种情况的更新规则如下:
v = α v − ϵ ∇ θ [ 1 m ∑ i = 1 m L ( f ( x ( i ) ) ; θ + α v ) , y ( i ) ] θ = θ + v v=\alpha v-\epsilon\nabla_\theta[\frac{1}{m}\sum_{i=1}^mL(f(x^{(i)});\theta+\alpha v), y^{(i)}]\\ \quad\\ \theta=\theta+v v=αvϵθ[m1i=1mL(f(x(i));θ+αv),y(i)]θ=θ+v

其中参数 α \alpha α ϵ \epsilon ϵ发挥了和标准动量方法中类似的作用。Nesterov动量和标准动量之间的区别体现在梯度计算上。Nesterov动量中,梯度计算在施加当前速度之后。因此,Nesterov动量可以解释为往标准动量方法中添加了一个校正因子。

Nesterov Momentum第 k k k次迭代
输入:学习率 ϵ \epsilon ϵ;初始化参数 θ 0 \theta_0 θ0或第 k − 1 k-1 k1次输出参数 θ k − 1 \theta_{k-1} θk1;动量参数 α \alpha α;第 k − 1 k-1 k1次输出速度 v k − 1 v_{k-1} vk1
输出:第 k k k次迭代后的参数 θ k \theta_k θk
(1) while 停止准则为满足 \quad\text{停止准则为满足} 停止准则为满足
(2) \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)
(3) \quad 计算梯度估计: g k = 1 m ∇ θ + α v ∑ i L ( f ( x ( i ) ; θ + α v ) , y ( i ) ) g_k = \frac{1}{m}\nabla_{\theta+\alpha v}\sum_iL(f(x^{(i)}; \theta+\alpha v), y^{(i)}) gk=m1θ+αviL(f(x(i);θ+αv),y(i))
(4) v k = α v k − 1 − ϵ g k \quad v_k = \alpha v_{k-1} - \epsilon g_k vk=αvk1ϵgk
(5) θ k = θ k − 1 + v \quad\theta_k = \theta_{k-1}+ v θk=θk1+v
(6) k = k + 1 \quad k = k + 1 k=k+1
(7) return θ k \theta_k θk

在凸批量梯度的情况下,Nesterov Momentum将额外误差收敛率从 O ( 1 k ) O(\frac{1}{k}) O(k1)(k步后)改进到 O ( 1 k 2 ) O(\frac{1}{k^2}) O(k21)。可惜,在随机梯度的情况下,Nesterov Momentum没有改进收敛率。

猜你喜欢

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