神经网络优化算法

提高神经网络训练速率的方式:

1. 采用Mini-batch的方式,不要等到把所有的数据都遍历一遍才更新权重,采用batch的方式的缺点是收敛过程会有震荡的现象的出现,这样有时候就不得不采用比较小的learning rate来使结果收敛到比较好的结果
神经网络优化算法

为了消除Mini-batch的震荡现象,可以采用以下

2. 动量梯度下降法:合成之前的方向

神经网络优化算法

3. RMSprop:在梯度变化大的地方降低更新数据的速度,在梯度变化小的地方增加梯度变化的速度,以上图为例:在水平方向上梯度较小,因此采用比较大的更新权重

神经网络优化算法

4. Adam优化算法:Adam = 动量下降 + RMSprop

神经网络优化算法


2,3,4都是对Mini-batch有震荡的优化算法,一方面可以消除震荡更快的收敛,另一方面因为震荡小了可以采用更大的learning rate,也可以加速算法


5. learning rate decay:随着算法的运算缓慢减小learning rate,一方面震动幅度减小了,一定程度上可以加速收敛,另外一方面可以收敛到更接近optimal的值


6. 其实在比较深的神经网络中local optimal并不是问题,因为变量的维度高,同时在某一点都是最低点的概率很低,通常都是写saddle point(鞍点)

在deep learning里面真正的问题是plateaus(梯度长时间为0)