记住过去的梯度
普通的梯度步把每次迭代孤立看待,所以在狭窄山谷里来回锯齿,在平坦处爬行。动量保留一个速度,即过去梯度的滚动累加:v←βv+g,w←w−ηv。方向一致的梯度会不断累加,符号来回翻转的梯度则相互抵消。梯度恒定时速度趋于梯度的 1/(1−β) 倍,所以 β=0.9 最终的步长是普通下降的十倍。
v←βv+g,w←w−ηv,v∞=1−βg(1) RMSProp 解决另一个问题,即各参数尺度不同。它为每个坐标跟踪梯度平方的滑动平均 s,并把步长除以 s,于是梯度大且噪声大的坐标步子小,梯度小的坐标步子大。Adam 把两种想法合在一起:对梯度取平均(m,动量部分),对梯度平方取平均(v,RMSProp 部分)。两个平均都从零开始,起初偏小,所以 Adam 除以 1−βt 来纠正这一偏差。常用默认值为 β1=0.9、β2=0.999、η=10−3。
s←ρs+(1−ρ)g2,w←w−ηs+εg(2) m←β1m+(1−β1)g,v←β2v+(1−β2)g2,m^=1−β1tm, v^=1−β2tv,w←w−ηv^+εm^(3) 手算三种更新动量取
β=0.9、
η=0.1、恒定梯度
g=1:
v1=1、
v2=1.9、
v3=2.71,所以第三步长度为
0.271,而普通下降是
0.1。RMSProp 取
ρ=0.9、
g=2:
s1=0.1⋅4=0.4,
g/s1=3.16,步长被放大约
3.16 倍。Adam 在
t=1、
g=2:
m=0.2、
v=0.004,故
m^=2、
v^=4,步长为
η⋅2/2=η,与
g 的大小无关。
- 动量:平滑锯齿,并在方向一致时加速。
- RMSProp:把每个坐标除以其梯度的滑动均方根。
- Adam:两者兼有,再加上因平均从零开始而做的偏差校正。
Adam 是默认选项而非保证由于 Adam 的步长无论梯度大小每个坐标都约为 η,η 就成了主要的调节旋钮:太大则损失来回跳,太小则训练爬行。在噪声大的问题上让 η 随时间衰减,并在相信 Adam 的结果之前与调好的带动量 SGD 比较,因为两者可能停在不同的极小点。 实验:评分内容
- 动量速度15 分
- 长期放大倍数15 分
- RMSProp 平均10 分
- RMSProp 步长倍率15 分
- Adam 的第一步15 分
- 配对方法与思想15 分
- 为什么按坐标缩放有帮助15 分