神经网络的优化算法
1. SGD 随机梯度下降
w t ← w t − 1 − η ∇ w L ( x ) w_t \larr w_{t-1}-\eta\nabla_w L(x) wt←wt−1−η∇wL(x)
训练速度较快,但是不是全局最优解,容易困在鞍点(saddle point)和极小值点。如果函数的形状非均向,搜索路径效率就会非常低(根本原因:梯度方向没有指向最小值方向)
2. Momentum 动量
动量的引入就是为了加快学习过程,特别是对于高曲率、小但一致的梯度,或者噪声比较大的梯度能够很好的加快学习过程。动量的主要思想是积累了之前梯度指数级衰减的移动平均(前面的指数加权平均)。
v
t
←
α
v
t
−
1
−
η
∇
w
L
(
x
)
w
t
←
w
t
−
1
+
v
t
v_t \larr \alpha v_{t-1}-\eta \nabla_w L(x)\\ w_t \larr w_{t-1}+v_t
vt←αvt−1−η∇wL(x)wt←wt−1+vt
其中
v
t
−
1
v_{t-1}
vt−1为之前所有步骤所累积的动量
3. Nesterov Momentum
Nesterov Momentum是对Momentum的改进,可以理解为Nesterov Momentum在标准动量方法中添加了一个校正因子。
w
^
←
w
t
−
1
+
α
v
t
−
1
v
t
←
α
v
t
−
1
−
η
∇
w
L
(
x
;
w
^
)
w
t
←
w
t
−
1
+
v
t
\hat w \larr w_{t-1}+\alpha v_{t-1}\\ v_t \larr \alpha v_{t-1}-\eta \nabla_w L(x;\hat w)\\ w_t \larr w_{t-1}+v_t
w^←wt−1+αvt−1vt←αvt−1−η∇wL(x;w^)wt←wt−1+vt
4. AdaGrad (Adaptive Gradient)
保持一个训练过程中的每一步的梯度的平方和的持续估计,在更新时将梯度除以之前梯度的平方和。
g
t
←
g
t
−
1
+
∇
w
L
(
x
)
⊙
∇
w
L
(
x
)
w
t
←
w
t
−
1
−
η
1
g
t
+
ϵ
⊙
∇
w
L
(
x
)
g_t \larr g_{t-1} + \nabla_w L(x) \odot \nabla_w L(x) \\ w_t \larr w_{t-1}-\eta\frac{1}{\sqrt{g_t+\epsilon}} \odot \nabla_wL(x)
gt←gt−1+∇wL(x)⊙∇wL(x)wt←wt−1−ηgt+ϵ1⊙∇wL(x)
对于梯度较大的参数,学习率会较小,而对于梯度较小的参数,学习率较大。这使得变动较大的参数的学习率减小,增加小梯度维度上的学习速度,不至于在平缓的地方徘徊不前。
但是后期的梯度平方和的估计会很大,导致学习率过小,可能很难找到一个可用的解。
5. RMSProp
RMSProp和AdaDelta一样,使用指数加权平均(指数衰减平均),只保留过去给定窗口大小的梯度信息,s使其能够在找到碗装结构后快速收敛。
g
t
←
γ
g
t
−
1
+
(
1
−
γ
)
∇
w
L
(
x
)
⊙
∇
w
L
(
x
)
w
t
←
w
t
−
1
−
η
1
g
t
+
ϵ
⊙
∇
w
L
(
x
)
g_t \larr \gamma g_{t-1} + (1-\gamma)\nabla_w L(x) \odot \nabla_w L(x) \\ w_t \larr w_{t-1}-\eta\frac{1}{\sqrt{g_t+\epsilon}} \odot \nabla_wL(x)
gt←γgt−1+(1−γ)∇wL(x)⊙∇wL(x)wt←wt−1−ηgt+ϵ1⊙∇wL(x)
6. Adam
Adam实际上是把Momentum和RMSProp结合起来的一种算法。
v
t
←
β
1
t
t
−
1
+
(
1
−
β
1
)
∇
w
L
(
x
)
v_t \larr \beta_1t_{t-1} +(1-\beta_1)\nabla_w L(x)
vt←β1tt−1+(1−β1)∇wL(x)
g t ← β 2 g t − 1 + ( 1 − β 2 ) ∇ w L ( x ) ⊙ ∇ w L ( x ) g_t \larr \beta_2g_{t-1}+(1-\beta_2) \nabla_w L(x) \odot \nabla_w L(x) gt←β2gt−1+(1−β2)∇wL(x)⊙∇wL(x)
v ^ t ← v t 1 − β 1 t , g ^ t ← g t 1 − β 2 t w t ← w t − 1 − η v ^ t g ^ t + ϵ \hat v_t \larr\frac{v_t}{1-\beta_1^t}, \qquad \hat g_t \larr\frac{g_t}{1-\beta_2^t} \\ w_t \larr w_{t-1} -\eta \frac{\hat v_t}{\sqrt{\hat g_t + \epsilon}} v^t←1−β1tvt,g^t←1−β2tgtwt←wt−1−ηg^t+ϵv^t
其中 v ^ t , g ^ t \hat v_t, \ \hat g_t v^t, g^t为 v t , g t v_t,\ g_t vt, gt的无偏修正,为了修正t较小时指数加权平均的值。