深度学习笔记(10) 优化算法(二)
1. Adam 优化算法
Adam代表的是 Adaptive Moment Estimation
基本上就是将 Momentum 和 RMSprop 结合在一起
首先初始化,vdW=0,SdW=0,vdb=0,Sdb=0
在第 t 次迭代中,要计算微分,用当前的mini-batch计算dW,db
接下来计算Momentum指数加权平均数:
用RMSprop计算:
计算偏差修正:
最后更新权重,所以W,b更新后是
超参数β1常用的缺省值为0.9
这是dW的移动平均数,也就是dW的加权平均数
计算这个微分dW,叫做第一矩
超参数β2,推荐使用0.999
建议 ε 为10-8
计算平方数的指数加权平均数dW2,叫做第二矩
2. 学习率衰减
加快学习算法的一个办法就是随时间慢慢减少学习率,称为学习率衰减
减少a的本质在于,在学习初期,能承受较大的步伐
但当开始收敛的时候,小一些的学习率能让步伐小一些
拆分成不同的mini-batch,第一次遍历训练集叫做第一代
第二次就是第二代,依此类推,
将设学习率:
衰减率:
d
e
c
a
y
−
r
a
t
e
decay-rate
decay−rate
代数:
e
p
o
c
h
−
n
u
m
epoch-num
epoch−num
初始学习率:
α
α
α0
也有指数衰减:
其中a相当于一个小于1的值
如
α
α
α = 0.95epoch-num
α
α
α0,所以学习率呈指数下降
人们用到的其它公式有:
t 为 mini-batch 的数字
3. 局部最优的问题
如果要创建一个神经网络,通常梯度为零的点并不是这个图中的局部最优点,通常是鞍点
但是一个具有高维度空间的函数,如果梯度为0
那么在每个方向,它可能是凸函数,也可能是凹函数
如果在2万维空间中,那么想要得到局部最优,所有的2万个方向都需要是这样
但发生的机率也许很小,也许是2-20000
更有可能遇到有些方向的曲线会这样向上弯曲,另一些方向曲线向下弯,而不是所有的都向上弯曲
因此在高维度空间,更可能碰到鞍点
局部最优不是问题,结果是平稳段会减缓学习
平稳段是一块区域,其中导数长时间接近于0
花上很长时间慢慢抵达平稳段的这个点,因为左边或右边的随机扰动,就能够走出平稳段
像 Momentum 或是 RMSprop ,Adam 这样的算法,能够加速学习算法
在这些情况下,更成熟的优化算法,如 Adam 算法,能够加快速度,尽早往下走出平稳段
参考:
相关推荐:
深度学习笔记(9) 优化算法(一)
深度学习笔记(8) 实践层面(三)
深度学习笔记(7) 实践层面(二)
深度学习笔记(6) 实践层面(一)
深度学习笔记(5) 深层神经网络
谢谢!