1.2.1. 理解优化器(Optimizer)

本文与其他介绍optimizer有所不同的是:
- 本文完整的阐述了批量学习、在线学习两条路线的optimizer进化史
- 本文只从感知上进行理解,不涉及数学推导,着重于记忆与理解,而非严肃的论文体
- 本文为了从理解入手, 改变了原论文中的公式形式
1.2.1.1. 文本结构
[TOC]
1.2.1.2. 源头:SGD
wt+1=wt−η⋅gt
$\eta$:学习率
每次使用一个样本计算损失函数, 从而得到梯度, 逐步的迭代参数
1.2.1.3. 批量学习优化器
使用一个样本容易陷入局部最优点, 且迭代速度慢,容易产生震荡,批量学习正是解决这个问题的方法.
当然在线学习有另一条路子解决,且在线学习是为了参数稀疏化而生的,更适用于搜广推领域.
1.2.1.3.1. momentum
wt+1=wt−η⋅(β1⋅mt−1+(1−β1)⋅gt)
momentum在SGD的基础上加上了惯性, 即如与上一步方向一致,加快速度,与上一步方向不一致减慢.但当局部最优点很深时,动量也无法拯救.
1.2.1.3.2. NAG
vt=αvt−1+η∇J(Wt−αvt−1)
Wt+1=Wt−vt
NAG在SGD的基础上加入了看一步走一步的机制, 即将提前计算一步梯度, 防止小球盲目跟随上一步动量,冲出最优点.
1.2.1.3.3. AdaGrad
wt+1=wt−√∑i=1tgi2+εη0⋅gt
$\varepsilon$:极小的数,防止分母为 0
前面的优化器的学习率都是固定的, 而AdaGrad可随着模型的收敛自适应学习率. 即更新频率高的维度学习率逐渐减缓, 更新频率低的维度维持高学习率.
1.2.1.3.4. RMSProp
wt+1=wt−E[g2]t+εη0⋅gt
AdaGrad 暴力的随着梯度累计越高, 学习率越低. RMS对此做了改进,只取一个窗口下的梯度平均值.
1.2.1.3.5. AdaDelta
wt+1=wt−Δwt
Δwt=E[g2]t+εE[Δw]t−1⋅gt
AdaGrad 和 RMSProp 都得初始化学习率,可不可以连初始化都不用呢?AdaDelta给了答案
1.2.1.3.6. Adam
wt+1=wt−√β2⋅Vt−1+(1−β2)gt2α⋅(β1⋅mt−1+(1−β1)⋅gt)
mt=β1⋅mt−1+(1−β1)⋅gt
Vt=β2⋅Vt−1+(1−β2)gt2
可以理解为动量+学习率自适应
1.2.1.3.7. 可视化对比


1.2.1.3.8. 进展
- SWATS 2017
- AmsGrad 2018
- AdaBound 2019
- RAdam 2019
- AdamW 2019
- RAdam 2020
1.2.1.4. 在线学习优化器
在线学习的优化器用于流式数据的训练,对于数据量相当庞大,且数据相对稀疏的场景尤为合适。
1.2.1.4.1. TG
简单截断法
如何训练出稀疏性的参数呢?简单的想法就是设置一个阈值,小于这个阈值直接置零。
W(t+1)=T0(W(t)−η(t)G(t),θ)
T0(viθ)=⎩⎨⎧0if∣vi∣≤θviotherwise
如此暴力的做法会导致一些训练不足的参数置零,于是就有了优化版本:
梯度截断法
f(wi)=T1(wi−η∇1L(wi,zi),ηgi,θ)
T1(vj,α,θ)=⎩⎨⎧max(0,vj−α)min(0,vj+α)vjotherwisevj∈[0,θ]vj∈[−θ,0]
别被公式吓坏了,下图可更加直观的看出区别,梯度阶段法由两个参数控制稀疏度。直观的理解:参数接近0时,推波助澜至更接近0;更进一步接近0时,直接置零。这比简单截断法要顺滑一些。

1.2.1.4.2. FOBOS
wt+21=wt−ηtgtf
wt+1=argminw{21∣∣w−wt+21∣∣2+ηt+21r(w)}
FOBOS将此问题拆解成了两部分,在梯度下降之后,加入了一个优化问题。即控制与梯度下降得到的结果不太远的第二范数,以及增加稀疏性的第一范数。
1.2.1.4.3. RDA
wt+1=argminw{t1∑r=1t⟨Gr,w⟩+λ∣∣w∣∣1+2√tr∣∣w∣∣22}
FOBOS只是拿了本步的梯度下降结果,在在线学习这种流式学习中,一次只学习一条数据,很容易造成参数的波动,参考的更远,可以减少这种异常点波动。
这不,RDA来了,RDA优化的第一项是梯度对参数的积分平均值,第二项是第一范数(增加稀疏性),第三项第二范数约束参数不离零太远.
1.2.1.4.4. FTRL
wt+1=argminw{t1∑r=1t⟨Gr,w⟩+λ∣∣w∣∣1+λ∣∣w∣∣22+21∑s=1tσ(s)∣∣w−wt+21∣∣2}
FTRL是RDA和FOBOS优点的合集,即又考虑与之前的参数距离,又考虑本步梯度下降的结果.
1.2.1.4.5. 进展
- FTML 2017
- SGDOL 2019
- STORM 2019
- EXP3 2019
- UCB 2019
本文中的公式纯手敲,且为了理解的方便,没有写成原论文的公式形式, 如有错误之处可联系进行改正
关注本公众号,下期更精彩
