优化算法 类型
优化算法 类型 包括 一阶优化法 和 二阶优化法:
一阶优化法 | 二阶优化法 | |
---|---|---|
具体算法 | 随机梯度下降法、基于动量的随机梯度下降法、Nesterov型动量随机下降法、Adagrad法、Adadelta法、RMSProp法、Adam法 | 牛顿法 |
计算难度 | 较易 | 难 |
运用程度 | 主流 | 少有人用 |
一阶优化法 对比
随机梯度下降法 | 基于动量的随机梯度下降法 | Nesterov型动量随机下降法 | Adagrad法 | Adadelta法 | RMSProp法 | Adam法 | |
---|---|---|---|---|---|---|---|
运用程度 | 最广 | ||||||
训练速度 | 慢 | 快 | 快 | 快 | 快 | ||
模型结果 | 可靠 | 可靠 |
随机梯度下降法、基于动量的随机梯度下降法 和 Nesterov型动量随机下降法 彼此性能相近; Adagrad法、Adadelta法、RMSProp法 和 Adam法 彼此性能相近。
一阶优化法
ωωomega :待学习参数; ηηeta :学习率; ggg :一阶梯度值; ttt :第ttt轮训练。
随机梯度下降法
随机梯度下降算法,Stochastic Gradient Descent,简称 SGD 。
ωt←ωt−1−η⋅gωt←ωt−1−η⋅g
omega_{t} leftarrow omega_{t-1} - eta cdot g
基于动量的随机梯度下降法
由于SGD更新时可能出现 振荡 ,遂通过 累积前几轮的动量 (momentum) 信息 来 辅助参数更新:
vt←μ⋅vt−1−η⋅gvt←μ⋅vt−1−η⋅g
v_{t} leftarrow mu cdot v_{t-1} - eta cdot g
ωt←ωt−1 vtωt←ωt−1 vt
omega_{t} leftarrow omega_{t-1} v_{t}
μμmu :动量因子,控制动量信息对整体梯度更新的影响程度。设置方法分为 静态 (始终为 0.9) 和 动态 (初始为 0.5,逐渐增长为 0.9 或 0.99) 。
Nesterov型动量随机下降法
较罕见,遂略过。
Adagrad法
根据训练轮数的不同,对学习率进行动态调整:
ηt←ηglobal∑tt'=1g2t′ ϵ−−−−−−−−−−√⋅gtηt←ηglobal∑t′=1tgt′2 ϵ⋅gt
eta_{t} leftarrow frac{eta_{global}}{sqrt{sum_{t′=1}^t g_{t'}^2 epsilon}} cdot g_{t}
ηglobalηglobaleta_{global} :全局学习率 (必须提前指定) ; ϵϵepsilon :防止分母为0。
初始时,ηtηteta_{t} 接近于 ηglobalηglobaleta_{global} ,随着 ∑tt'=1g2t′∑t′=1tgt′2sum_{t′=1}^t g_{t'}^2 的不断增大,ηtηteta_{t} 渐渐趋近于 0 。
Adadelta法
Adadelta法 在 Adagrad法 的 基础上,通过引入衰减因子 ρρrho ,使得 ggg 也和 ηglobalηglobaleta_{global} 一起来对 ηtηteta_{t} 施加影响,防止 ηglobalηglobaleta_{global} 垄断:
rt←ρ⋅rt−1 (1−ρ)⋅g2rt←ρ⋅rt−1 (1−ρ)⋅g2
r_{t} leftarrow rho cdot r_{t-1} (1-rho) cdot g^2
ηt←st−1 ϵ−−−−−−√rt ϵ−−−−−√ηt←st−1 ϵrt ϵ
eta_{t} leftarrow frac{sqrt{s_{t-1} epsilon}}{sqrt{r_t epsilon}}
st←ρ⋅st−1 (1−ρ)⋅(ηt⋅g)2st←ρ⋅st−1 (1−ρ)⋅(ηt⋅g)2
s_{t} leftarrow rho cdot s_{t-1} (1-rho) cdot (eta_{t} cdot g)^2
ρρrho :衰减因子,取值范围 [0, 1] ,值越大越促进网络更新,推荐为 0.95 ; ϵϵepsilon :防止为 0,推荐为 10−610−610^{-6} 。
RMSProp法
较罕见,遂略过。
Adam法
在 RMSProp法 基础上 加上了 动量项 。
利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。
优点: 经过偏置校正后,每一次迭代学习率都有一个确定范围,这样可以使得参数更新比较平稳。
[1] 解析卷积神经网络—深度学习实践手册