7.2 优化算法
目前,深度神经网络的参数学习主要是通过梯度下降法来寻找一组可以最小化结构风险的参数.在具体实现中,梯度下降法可以分为:批量梯度下降、随机梯度下降以及小批量梯度下降三种形式.根据不同的数据量和参数量,可以选择一种具体的实现形式.本节介绍一些在训练神经网络时常用的优化算法.这些优化算法大体上可以分为两类:1)调整学习率,使得优化更稳定;2)梯度估计修正,优化训练速度。
影响小批量梯度下降法的主要因素有:1)批量大小𝐾、2)学习率𝛼、3)梯度估计.为了更有效地训练深度神经网络,在标准的小批
量梯度下降法的基础上,也经常使用一些改进方法以加快优化速度,比如如何选择批量大小、如何调整学习率以及如何修正梯度估计.我们分别从这三个方面来介绍在神经网络优化中常用的算法.这些改进的优化算法也同样可以应用在批量或随机梯度下降法上.
批量大小和模型的泛化能力也有一定的关系.[Keskar et al., 2016] 通过实验发现:批量越大,越有可能收敛到尖锐最小值;批量越小,越有可能收敛到平坦最小值。
周期性学习率调整
- 循环学习率一种简单的方法是使用循环学习率 即让学习率在一个区间内周期性地增大和缩小
- 带热重启的随机梯度下降 学习率每间隔一定周期后重新初始化为某个预先设定值,然后逐渐衰减.每次重启后模型参数不是从头开始优化,而是从重启前的参数基础上继续优化.
AdaGrad 算法
- 是借鉴ℓ2 正则化的思想,每次迭代时自适应地调整每个参数的学习率。
RMSprop 算法
- 可以在有些情况下避免AdaGrad 算法中学习率不断单调下降以至于过早衰减的缺点。
AdaDelta 算法
- AdaDelta 算法通过梯度平方的指数衰减移动平均来调整学习率.此外,AdaDelta算法还引入了每次参数更新差值Δ𝜃 的平方的指数衰减权移动平均。