优化方法-梯度下降

梯度下降的方法与区别

梯度下降包括:批量式梯度下降,随机梯度下降,小批量梯度下降,此分类是根据每次训练所需的数据量大小分类。

批量式梯度下降(BGD)在每次计算梯度时,将所有的样本带入计算中,通过计算所有样本的误差来更新梯度。

优点每次迭代是对所有的样本进行计算,此时利用矩阵进行操作,实现了并行。另外,利用全体数据集的梯度方向能够更好的表达总体信息,从而更准确的朝着极值所在的方向更新。当目标函数为凸函数,一定能够找到全局最优解。

缺点:由于每一步都需要花费大量的时间和空间,因此无法应用于大规模的场景。

 

随机梯度下降法(SGD)则反其道行之,通过放弃一部分梯度的精度,每次迭代通过随机挑选一个样本计算其梯度方向来训练权值。

优点:每次迭代仅仅使用一个样本计算梯度,因此大大节约了内存和时间消耗,因此迭代速度较快。

缺点准确度下降,即使在目标函数为强凸函数的情况下仍然很难做到线性收敛。 由于单个样本的梯度往往无法代表全体样本的趋势,因此容易陷入局部最优。更甚情况会陷入鞍点山谷。并且很难实现并行。

 

小批量梯度下降(MIni-batch GD)是SGD和BGD的一种折中,其思想是每次迭代使用一个Mini-batch-size的样本进行训练更新参数。

优点:能通过矩阵运算实现并行,从而每次在一个batch上优化神经网络参数并不会比单个数据慢太多。同时可以加快收敛速度,减少收敛的迭代次数,精度也不会比BGD差很多。

缺点:选择的batch-size的大小会影响训练效果。如:较小的batch-size同样会引起震荡。

SGD方法的改进与比较

由于随机梯度下降每次选择一个样本进行训练,因此不同的样本带来的不同的梯度大小导致其在训练过程中会出现震荡的结果,无法稳定的逼近最优点,反而容易陷入局部最优。另外还容易陷入山谷或者鞍点。当进入山谷时,准确的下降方向应该是沿山道向下,但是SGD会在山谷两侧的山壁上来回震荡,降低精度和收敛速度。而在鞍点处,随机梯度下降法会进入一片平坦之地,此时距离最低点很远,但是由于当前位置的梯度几乎为0导致无法继续搜索。

随机梯度下降的公式为$\theta_{t+1} = \theta_{t}-\eta g_{t}$,其中$g_{t}$为$t$时刻的梯度

从而有一系列的改进:两个方向:解决高方差震荡问题;特征稀疏性问题与学习率衰减问题。

动量方法(Momentum)

相当于增加小球的重量,使得在山谷中时因为重力能够快速下降,在鞍点处则可以由于惯性的增加冲出鞍点的平缓地带。其考虑到了历史的前进步伐对当前前进步伐的影响

其迭代公式为:

$v_{t}=\gamma v_{t-1}-\eta g_{t}$

$\theta_{t+1} = \theta_{t}-v_{t}$

通过增加动量的方式来更新。即前进步伐$-v_{t}$由当前的梯度$g_{t}$和上一步的前进步伐$v_{t-1}$决定,这里的惯性体现在对前面的信息的重利用。即当前速度相当于前一步的速度与加速度共同作用得到的。这里的$\gamma$代表了阻力的作用。当其梯度指向实际移动方向时,动量项$\gamma v_{t-1}$增大;当梯度与实际移动方向相反时,$\gamma v_{t-1}$减小。即动量项只对相关样本进行参数更新,减少了不必要的参数更新。

猜你喜欢

转载自www.cnblogs.com/wzhao-cn/p/11279379.html