深度学习笔记(2):2.9 学习率衰减 | 2.10 局部最优问题

2.9 学习率衰减

今天来讲一下关于学习率衰减(learning rate decay)的问题。首先说一下为什么要衰减学习率,如下图所示:

深度学习笔记(2):2.9 学习率衰减 | 2.10 局部最优问题_第1张图片

假设我们使用mini-batch梯度下降法,之前我们已经讲过它的一些特点,比如路径曲折不直接、有噪音(路径曲折不直接和有噪音是一回事)、在最优值附近波动不收敛。也许在刚开始学习时,我们可以承受较大的步长带来的代价,但是随着不断学习至开始收敛时,通过慢慢的减少学习率,减少步长,我们可以使梯度在最优值附近更小的区域内波动,使结果更准确稳定。

深度学习笔记(2):2.9 学习率衰减 | 2.10 局部最优问题_第2张图片

我们在之前的博文中讲过1 epoch表示遍历一次完整的数据集,我们希望学习率能够随着训练过程不断减少,而epoch可以作为这个参数影响学习率的大小,因为epoch的数值表示训练已经遍历了数据集几次。

在这里,我们令\alpha =\frac{1}{1+decayrate*epochnum}\alpha _{0},epochnum就是epoch数值,decay-rate(衰减率)是我们要选择的超参数。

上图举了一个具体的例子,若\alpha _{0}=0.2,decay-rate=1,那么\alpha的值随着epoch的值改变如上表所示,这里老师写法错误,\alpha的值应该是0.1,0.067,0.05,0.04等等。总之,\alpha的值是随着epoch的值增加而不断减少的。

深度学习笔记(2):2.9 学习率衰减 | 2.10 局部最优问题_第3张图片

除了刚才介绍的方法,我们还有一些其他定义\alpha衰减的方法如上图所示。

比如指数衰减(exponentially decay)方法,令\alpha =0.95^{epochnum}\alpha _{0}

或者加一个超参数k,令\alpha =\frac{k}{\sqrt{epochnum}}\alpha _{0},或者\alpha =\frac{k}{\sqrt{t}}\alpha _{0},这里t是mini-batch的大小;

或者是离散化下降(discrete staircase)的方法,在一小段时间内梯度保持不变。我曾经使用过proximal gradient方法,这个算法首先设定一个学习率,然后计算一个不等式,如果不等式成立,那么不更新学习率,若等式不成立,那么令\alpha =0.5\alpha,然后接着训练。那么就会有上图中distance staircase这样的情况。

再或者,就是手动调试啦。

2.10 局部最优问题

在前期对高维神经网络认识还不够深的时候,大家多担心优化算法,害怕求解会困在局部最优。随着对高维神经网络认识的加深,大家想法发生了很大转变,现在我们再来谈一下对局部最优和优化算法的理解。如下图所示:

深度学习笔记(2):2.9 学习率衰减 | 2.10 局部最优问题_第4张图片

以前,大家认为神经网络中会有很多局部最优(local optimal),如上图左侧所示,在三维情况中,图中所标示的蓝点都是局部最优,所以认为神经网络训练困在局部最优是最严重的问题,我们将低维中的问题直接套在高维下是不切实际的,实际上,在高维情况下,局部最优出现的情况很少,而右侧图出现的几率更大,为什么呢?我们来分析一波。

右侧的情况我们称为鞍点(saddle point),我们发现绿点处梯度为0,即它在每个方向上导数都为0。在高维情况下,如果梯度为0,那么在每个方向它既有可能是凸函数,也有可能是凹函数,比如绿点,在w1方向上它是凸函数,但在w2方向上它是凹函数,所以绿点不是一个局部最优,而是鞍点。看到这里你可能知道了,如果一个点是局部最优,那么在每个方向上都应该是凸函数。在20000维的情况中,在所有梯度为0的点中,局部最优出现的概率是2^{-20000},鞍点出现的概率是1-2^{-19999}(除了局部最优,还有全是凹函数的情况)。

对于鞍点和局部最优,可以理解为是扔多枚硬币的过程,这些硬币全为正面就是局部最优解,有部分为正面就为鞍点,硬币的个数就是数据的维度,如果维度越高,那么出现局部最优的概率就越低,但鞍点的数目却是呈指数增长。

至于鞍点为什么叫鞍点,吴老师的神画工可以很好地告诉我们原因。

除了因为局部最优在高维中出现的概率小,我们不必为它太过烦恼(一定要注意是在高维情况下),还有就是局部最优本来也并非想象中那么可怕,我们担心的是找到的解和全局最优相差很大,因为最重要的是要找到相对较低的局部最优值。实践中也会发现最优解附近的解泛化效果通常要比最优解好。

局部最优不是问题,那么什么是问题呢?平原(plateaus)问题。平原是指鞍点周围梯度很小的平稳区域。

深度学习笔记(2):2.9 学习率衰减 | 2.10 局部最优问题_第5张图片

平原会使训练变得很慢,因为梯度长时间接近0。假设从左上开始训练,因为梯度太小,训练很慢,经过很长一段时间后到达鞍点,然后因为优化算法的左右扰动,可能最终会跳出平稳段,沿着红色箭头继续下降。

总之,局部最优问题几乎不是我们需要优先考虑的问题。首先,出现概率很小,其次,问题严重性不高。真正需要我们考虑的是鞍点周围区域平原带来的训练缓慢问题,改进的优化算法momentum,RMSprop,Adam能够大大提高计算速度,帮助神经网络快速离开平稳段。

 

版权声明:尊重博主原创文章,转载请注明出处https://blog.csdn.net/kkkkkiko/article/details/81411530

你可能感兴趣的:(深度学习)