深度学习:网络优化之梯度下降
应用神经网络模型到机器学习时依然存在一些难点问题. 主要分为两大类:
(1)优化问题:神经网络模型是一个非凸函数,很难进行优化。
(2)泛化问题:容易在训练集上产生过拟合。
因此,目前主要从优化和正则化两个方面来提高学习效率并得到一个好的网络模型。
网络优化的问题
高维变量的非凸优化
低维空间中非凸优化的主要难点是如何选择初始化参数和逃离局部最优点,但在高维而是如何逃离鞍点(Saddle Point),如下图,鞍点在一些维度上是最高点,在另一些维度上是最低点。在高维空间中,局部最优点要求在每一维度上都是最低点,这种概率非常低,因此梯度为0往往是处于鞍点的情况,可以通过在梯度方向上引入随机性,从而可以有效地逃离鞍点。
优化算法
目前,深度神经网络的参数学习主要是通过梯度下降法来寻找一组可以最小
化结构风险的参数. 在具体实现中,梯度下降法可以分为:批量梯度下降、随机梯
度下降以及小批量梯度下降三种形式。今天主要讲讲在梯度下降方面,会有哪些优化的方法。一般来说,影响小批量梯度下降法的主要因素有:(1)批量大小Batch Size(2)学习率(3)梯度估计。下面给出这三方面的优化方法的汇总。
事实上,对于大多数的数据集,Adam方法是比较好的优化方法,这个方法可以在工程上很简单的实现,比如用Tensorflow的adam语法即可,下图是在MINIST数据集上不同优化方法的损失图。
(1) 批量大小Batch Size
一般而言,学习率通常要随着批量大小的增大而相应地增大,这种关系并非就是线性的。
(2)学习率
常用的学习率调整方法包括学习率固定衰减、周期性学习率调整以及一些自适应调整学习率。
-
学习率固定衰减
- 周期性学习率
循环学习率
学习率在一个区间内周期性地增大和缩小. 通常可以使用线性缩放来调整学习率, 称为三角循环学习率。
带热重启的随机梯度下降SGDR
学习率每间隔一定周期后重新初始化为某个预先设定值,然后逐渐衰减. 每次重启后模型参数不是从头开始优化,而是从重启前的参数基础上继续优化。
-
自适应学习率
根据不同参数的收敛情况分别设置学习率。
RMSprop算法
(3)梯度估计修正
-
梯度截断
在基于梯度下降的优化过程中,如果梯度突然增大,用大的梯度更新参数反而会导致其远离最优点. 为了避免这种情况,当梯度的模大于一定阈值时, 就对梯度进行截断, 称为梯度截断(Gradient Clipping)。