Bootstrap

一文讲清楚梯度下降算法

一、随机梯度下降与经典梯度下降    

1、经典梯度下降    

经典的梯度下降法采用所有训练数据的平均损失来近似目标函数    



可以看到每更新一次梯度,就需要计算所有训练数据
-- 当M很大的时候,这需要很大的计算量,耗费很长的计算时间

2、随机梯度下降    

随机梯度下降法(Stochastic Gradient Descent,SGD)用单个训练样本的损失来近似平均损失  

 

随机梯度下降法用单个训练数据即可对模型参数进行一次更新,大大加快了收敛速率
-- 该方法也非常适用于数据源源不断到来的在线更新场景

3、小批量梯度下降法(Mini-Batch Gradient Descent)    

为了充分利用高度优化的矩阵运算操作,在实际应用中我们会同时处理若干训练数据    

通常采用小批量梯度下降法解决训练数据量过大的问题。每次更新模 型参数时,只需要处理m个训练数据即可
-- 其中m是一个远小于总数据量M的常 数,这样能够大大加快训练过程。

4、随机梯度下降失效的原因    

陷入局部最优化    

这些陷阱对随机梯度下降法和批量梯度下降法都是普遍存在的。 但对随机梯度下降法来说,可怕的不是局部最优点,而是山谷和鞍点两类地形。
--  山谷顾名思义就是狭长的山间小道,左右两边是峭壁;
--  鞍点的形状像是一个马 鞍,一个方向上两头翘,另一个方向上两头垂,而中心区域是一片近乎水平的平 地。

为什么随机梯度下降法最害怕遇上这两类地形呢?
-- 在山谷中,准确的梯度方 向是沿山道向下,稍有偏离就会撞向山壁,而粗糙的梯度估计使得它在两山壁间 来回反弹震荡,不能沿山道方向迅速下降,导致收敛不稳定和收敛速度慢。
-- 在鞍 点处,随机梯度下降法会走入一片平坦之地(此时离最低点还很远,故也称 plateau)。想象一下蒙着双眼只凭借脚底感觉坡度,如果坡度很明显,那么基本 能估计出下山的大致方向;如果坡度不明显,则很可能走错方向。
-- 同样,在梯度 近乎为零的区域,随机梯度下降法无法准确察觉出梯度的微小变化,结果就停滞下来


5、解决随机梯度下降的失效--惯性保持和环境感知    

为了解决随机梯度下降法山谷震荡和鞍点停滞的问题
-- 质量越大,惯性越大
-- 想象一下纸团在山谷和鞍点处的运动轨迹,在山谷中纸团受重力作用沿 山道滚下,两边是不规则的山壁,纸团不可避免地撞在山壁,由于质量小受山壁 弹力的干扰大,从一侧山壁反弹回来撞向另一侧山壁,结果来回震荡地滚下;如 果当纸团来到鞍点的一片平坦之地时,还是由于质量小,速度很快减为零。纸团 的情况和随机梯度下降法遇到的问题简直如出一辙。直观地,如果换成一个铁 球,当沿山谷滚下时,不容易受到途中旁力的干扰,轨迹会更稳更直;当来到鞍 点中心处,在惯性作用下继续前行,从而有机会冲出这片平坦的陷阱

二、动量模型

刻画惯性的物理量是动量
-- 产生的动量不断累积,速度越来越快
-- 与随机梯度下降 法相比,动量方法的收敛速度更快,收敛曲线也更稳定

1、前进步伐−v t由两部分组成
-- 一是学习速率η乘以当前估计的梯度gt;
-- 二是带衰减的前一次步伐vt−1。

这里,惯性就体现在对前一次步伐信息的重利用上
-- 类比中学物理知识,当前梯度就好比当前时刻受力产生的加速度,前一次步伐好 比前一时刻的速度,当前步伐好比当前时刻的速度。
-- 为了计算当前时刻的速度, 应当考虑前一时刻速度和当前加速度共同作用的结果,因此vt直接依赖于vt−1和gt, 而不仅仅是gt。另外,衰减系数γ扮演了阻力的作用。

三、环境感知

1、我们期待获得对周围环境的感知

-- 即使蒙上双 眼,依靠前几次迈步的感觉,也应该能判断出一些信息
-- 比如这个方向总是坑坑 洼洼的,那个方向可能很平坦。

数据的稀疏性导致相应参数的梯度的稀疏性
-- 不频繁出现的词或词 组的参数的梯度在大多数情况下为零
-- 从而这些参数被更新的频率很低
-- 在应用中,我们希望更新频率低的参数可以拥有较大的更新步幅,而更新频率高的参数的步幅可以减小"

2、AdaGrad方法采用“历史梯度平方和”

来衡量不同参数的梯度的稀疏性
-- 取值越小表明越稀疏

此方法更新公式如下:

最终效果即是:更新频率低的参数可以拥有较大的更新步幅,而更新频率高的参数 的步幅可以减小

四、Adam方法    

Adam方法将惯性保持和环境感知这两个优点集于一体
-- Adam记录梯度的一阶矩(first moment),即过往梯度与当前梯度的平均,这体现了惯性保持;
-- 另一方面,Adam还记录梯度的二阶矩(second moment),即过往梯度平方与 当前梯度平方的平均,这类似AdaGrad方法,体现了环境感知能力,为不同参数产生自适应的学习速率

具体来说,一阶矩和二阶矩采用指数衰退平均(exponential decay average)技术:


如何理解一阶矩和二阶矩呢?
-- 一阶矩相当于估计E[g1] :由于当下梯度gt是随机 采样得到的估计结果,因此更关注它在统计意义上的期望;
-- 二阶矩相当于估计E[g1^2] ,这点与AdaGrad方法不同,不是gt2从开始到现在的加和,而是它的期望。

它们的物理意义是
-- 当||mt||大且vt大时,梯度大且稳定,这表明遇到一个明显的大 坡,前进方向明确;
-- 当||mt||趋于零且vt大时,梯度不稳定,表明可能遇到一个峡 谷,容易引起反弹震荡; 
-- 当||mt||大且vt趋于零时,这种情况不可能出现;
-- 当||mt||趋 于零且vt趋于零时,梯度趋于零,可能到达局部最低点,也可能走到一片坡度极缓 的平地,此时要避免陷入平原(plateau)。
另外,Adam方法还考虑了mt,vt在零初始值情况下的偏置矫正
            
五、随机梯度下降算法的其他变种    

除了上述三种随机梯度下降法变种,研究者还提出了以下几种方法        

(1)Nesterov Accelerated Gradient。该方法扩展了动量方法,顺着惯性方 向,计算未来可能位置处的梯度而非当前位置的梯度,这个“提前量”的设计让算 法有了对前方环境预判的能力。 
(2)AdaDelta和RMSProp。这两个方法非常类似,是对AdaGrad方法的改 进。AdaGrad方法采用所有历史梯度平方和的平方根做分母,分母随时间单调递 增,产生的自适应学习速率随时间衰减的速度过于激进。针对这个问题,AdaDelta 和RMSProp采用指数衰退平均的计算方法,用过往梯度的均值代替它们的求和。 
(3)AdaMax。该方法是基于Adam方法的一个变种方法,对梯度平方的处理 由指数衰退平均改为指数衰退求最大值。 
(4)Nadam。该方法可看成Nesterov Accelerated Gradient版的Adam。

;