深度学习: 模型优化算法

优化算法 类型

优化算法 类型 包括 一阶优化法 和 二阶优化法:

一阶优化法 二阶优化法
具体算法 随机梯度下降法、基于动量的随机梯度下降法、Nesterov型动量随机下降法、Adagrad法、Adadelta法、RMSProp法、Adam法 牛顿法
计算难度 较易
运用程度 主流 少有人用

一阶优化法 对比

随机梯度下降法 基于动量的随机梯度下降法 Nesterov型动量随机下降法 Adagrad法 Adadelta法 RMSProp法 Adam法
运用程度 最广
训练速度
模型结果 可靠 可靠

随机梯度下降法、基于动量的随机梯度下降法 和 Nesterov型动量随机下降法 彼此性能相近
Adagrad法、Adadelta法、RMSProp法 和 Adam法 彼此性能相近

一阶优化法

ω \omega ω :待学习参数;
η \eta η :学习率;
g g g :一阶梯度值;
t t t :第 t t t轮训练。

随机梯度下降法

随机梯度下降算法,Stochastic Gradient Descent,简称 SGD

ω t ← ω t − 1 − η ⋅ g \omega_{t} \leftarrow \omega_{t-1} - \eta \cdot g ωtωt1ηg

基于动量的随机梯度下降法

由于SGD更新时可能出现 振荡 ,遂通过 累积前几轮的动量 (momentum) 信息辅助参数更新

v t ← μ ⋅ v t − 1 − η ⋅ g v_{t} \leftarrow \mu \cdot v_{t-1} - \eta \cdot g vtμvt1ηg

ω t ← ω t − 1 + v t \omega_{t} \leftarrow \omega_{t-1} + v_{t} ωtωt1+vt

μ \mu μ :动量因子,控制动量信息对整体梯度更新的影响程度。设置方法分为 静态 (始终为 0.9) 和 动态 (初始为 0.5,逐渐增长为 0.9 或 0.99) 。

Nesterov型动量随机下降法

较罕见,遂略过。

Adagrad法

根据训练轮数的不同,对学习率进行动态调整:

η t ← η g l o b a l ∑ t ′ = 1 t g t ′ 2 + ϵ ⋅ g t \eta_{t} \leftarrow \frac{\eta_{global}}{\sqrt{\sum_{t′=1}^t g_{t'}^2 + \epsilon}} \cdot g_{t} ηtt=1tgt2+ϵ ηglobalgt

η g l o b a l \eta_{global} ηglobal :全局学习率 (必须提前指定) ;
ϵ \epsilon ϵ :防止分母为0。

初始时, η t \eta_{t} ηt 接近于 η g l o b a l \eta_{global} ηglobal ,随着 ∑ t ′ = 1 t g t ′ 2 \sum_{t′=1}^t g_{t'}^2 t=1tgt2 的不断增大, η t \eta_{t} ηt 渐渐趋近于 0 。

Adadelta法

Adadelta法 在 Adagrad法 的 基础上,通过引入衰减因子 ρ \rho ρ ,使得 g g g 也和 η g l o b a l \eta_{global} ηglobal 一起来对 η t \eta_{t} ηt 施加影响,防止 η g l o b a l \eta_{global} ηglobal 垄断:

r t ← ρ ⋅ r t − 1 + ( 1 − ρ ) ⋅ g 2 r_{t} \leftarrow \rho \cdot r_{t-1} + (1-\rho) \cdot g^2 rtρrt1+(1ρ)g2

η t ← s t − 1 + ϵ r t + ϵ \eta_{t} \leftarrow \frac{\sqrt{s_{t-1} + \epsilon}}{\sqrt{r_t + \epsilon}} ηtrt+ϵ st1+ϵ

s t ← ρ ⋅ s t − 1 + ( 1 − ρ ) ⋅ ( η t ⋅ g ) 2 s_{t} \leftarrow \rho \cdot s_{t-1} + (1-\rho) \cdot (\eta_{t} \cdot g)^2 stρst1+(1ρ)(ηtg)2

ρ \rho ρ :衰减因子,取值范围 [0, 1] ,值越大越促进网络更新,推荐为 0.95
ϵ \epsilon ϵ :防止为 0,推荐为 1 0 − 6 10^{-6} 106

RMSProp法

较罕见,遂略过。

Adam法

在 RMSProp法 基础上 加上了 动量项

利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。

Adam和Nadam是前述方法的集大成者:SGD-M在SGD基础上增加了一阶动量,AdaGrad和AdaDelta在SGD基础上增加了二阶动量。把一阶动量和二阶动量都用起来,就是Adam了——Adaptive + Momentum。

优点:
经过偏置校正后,每一次迭代学习率都有一个确定范围,这样可以使得参数更新比较平稳。


[1] 解析卷积神经网络—深度学习实践手册
[2] 卷积神经网络中的优化算法比较

你可能感兴趣的:(深度学习)