笔记总结自《神经网络与深度学习》第7章-网络优化与正则化
1. 高纬空间的非凸优化
在高纬空间中,大部分的局部最优点都是鞍点。因此,在深度网络的非凸优化问题的难点是如何逃离鞍点。通过引入随机因素,能够解决梯度下降方法在鞍点附近梯度为0的问题,从而有效地逃离鞍点。
2. 改善神经网络计算的优化方法
2.1 小批量(Mini-batch )梯度下降
初衷:通常深度神经网络使用的数据量都非常大,不适合一次性加载所有的数据进行梯度计算和更新,因此用到了小批量的梯度更新方法。

影响小批量梯度下降效果的因素
1)批量大小( K K K);2)学习率( α \alpha α);3)梯度估计( g t g_t gt)。
在此基础上研究改进的方法。
1)选择合适的批量;2)选择合适的学习率;3)更好地估计梯度
2.2 选择合适的批量
batch size对网络优化影响很大。
一般而言,批量大小不影响随机梯度的期望,但是会影响随机梯度的方差.批量大小越大,随机梯度的方差越小,引入的噪声也越小,训练也越稳定,因此可以设置较大的学习率.而批量大小较小时,需要设置较小的学习率,否则模型会不收敛.
调整方法:线性缩放规则
当批量大小增加 𝑚 倍时,学习率也增加 𝑚 倍.性缩放规则往往在批量大小比较小时适用,当批量大小非常大时,线性缩放会使得训练不稳定.
2.3 选择合适的学习率
2.3.1 学习率调整方法
调整方法1:学习率衰减
目的:学习率在一开始要保持大些来保证收敛速度,在收敛到最优点附近时要小些以避免来回振荡。
调整方法2:学习率预热
目的:提高小批量梯度下降的训练稳定性。
原因:小批量梯度下降法中,当批量大小的设置比较大时,通常需要比较大的学习率.但在刚开始训练时,由于参数是随机初始化的,梯度往往也比较大,再加上比较大的初始学习率,会使得训练不稳定
调整方法3:周期性学习率
目的:当优化过程处于尖锐最小值附近时,增大学习率有助于逃离尖锐最小值。
我的理解:非凸优化中,局部的尖锐最小值并不对应全局最优解。其次,在尖锐最小值处,模型的鲁棒性较差(模型参数的微小变动会使得性能的大幅改变)。
2.3.2 学习率调整算法
该部分仅简要记录算法的特点,对于算法细节暂时不作阐述。
算法1:AdaGrad
AdaGrad(Adaptive Gradient Algorithm),自适应梯度算法。
算法的自适应是针对模型参数而言的。在每次迭代过程中,调整不同参数的学习率。
算法2:RMSprop
在有些情况下避免 AdaGrad 算法中学习率不断单调下降以至于过早衰减的缺点。
在迭代过程中,每个参数的学习率并不是呈衰减趋势,既可以变小也可以变大。
算法3:AdaDelta
AdaDelta 算法也是对AdaGrad算法的优化。相比 RMSprop 算法,一定程度上平抑了学习率的波动。
2.4 更好地估计梯度
初衷:当批量取值较小时,损失会震荡式下降,增加了训练的随机性。
2.4.1 动量法
动量法相当于对梯度更新的一种平滑,缓解梯度估计的随机性。
2.4.2 Adam 算法
相当于动量法+RMSprop
2.5 总结
优化方法大体上可以分为两类:1)调整学习率,使得优化更稳定;2)梯度估计修正,优化训练速度。
这里我直接贴书本的图和表,对这几个算法的效果有更直观的印象。
下面给出了这几种优化方法在 MNIST 数据集上收敛性的比较(学习率为0.001,批量大小为128)