2020-6-4 吴恩达-改善深层NN-w2 优化算法(2.10 局部最优的问题--高维遇到鞍点,平稳段需要使用优化算法加速学习)

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

2.10 局部最优的问题 The problem of local optima

在DL研究早期,人们总是担心优化算法会困在极差的局部最优,不过随着DL理论不断发展,我们对局部最优的理解也发生了改变。

本节将介绍怎么看待局部最优以及深度学习中的优化问题。

2020-6-4 吴恩达-改善深层NN-w2 优化算法(2.10 局部最优的问题--高维遇到鞍点,平稳段需要使用优化算法加速学习)_第1张图片

上图是人们在想到局部最优时脑海里会出现的图。
W 1 W_1 W1 W 2 W_2 W2是你要优化的参数,平面的高度就是损失函数。在图中似乎各处都分布着局部最优(蓝色点)。梯度下降法或者某个算法可能困在一个局部最优中,而不会抵达全局最优(最下方箭头所指处)。

如果你要绘图,比如说在 W 1 W_1 W1 W 2 W_2 W2两个维度,就容易出现有多个不同局部最优的图,而这些低维的图曾经影响了我们的理解,但是这些理解并不正确。

事实上,如果你要创建一个NN,通常梯度为零的点并不是上图中的局部最优点(蓝色点),实际上成本函数的零梯度点,通常是鞍点(下图中的蓝色点)。
2020-6-4 吴恩达-改善深层NN-w2 优化算法(2.10 局部最优的问题--高维遇到鞍点,平稳段需要使用优化算法加速学习)_第2张图片

上图中高度即成本函数 J J J 的值。

2020-6-4 吴恩达-改善深层NN-w2 优化算法(2.10 局部最优的问题--高维遇到鞍点,平稳段需要使用优化算法加速学习)_第3张图片

如上图。
一个具有高维度空间的函数,如果梯度为0,那么在每个方向,它可能是凸函数,也可能是凹函数。如果你在2万维空间中,那么想要得到局部最优,所有的2万个方向都需要是凹形状(红色箭头所指),但发生的机率也许很小,大概是2-20000

你更有可能遇到有些方向的曲线会这样向上弯曲,另一些方向曲线向下弯,而不是所有的都向上弯曲,因此在高维度空间,你更可能碰到鞍点(类似下图),而不会碰到局部最优。
2020-6-4 吴恩达-改善深层NN-w2 优化算法(2.10 局部最优的问题--高维遇到鞍点,平稳段需要使用优化算法加速学习)_第4张图片

至于为什么会把一个曲面叫做鞍点,你想象一下如下图,就像是放在马背上的马鞍一样。绿色的这个点,是导数为0的点,叫做鞍点。我想那确实是你坐在马鞍上的那个点,这里导数为0。
2020-6-4 吴恩达-改善深层NN-w2 优化算法(2.10 局部最优的问题--高维遇到鞍点,平稳段需要使用优化算法加速学习)_第5张图片

所以我们从DL历史中学到的一课就是,我们对低维度空间的大部分直觉,比如本文第一张图,并不能应用到高维度空间中(如上图)。因为如果你有2万个参数,那么函数有2万个维度向量,你更可能遇到鞍点,而不是局部最优点。

如果局部最优不是问题,那么问题是什么?答案是平稳段(plateaus)会减缓学习。

平稳段是一块区域,其中导数长时间接近于0。
2020-6-4 吴恩达-改善深层NN-w2 优化算法(2.10 局部最优的问题--高维遇到鞍点,平稳段需要使用优化算法加速学习)_第6张图片

观察上图。
从左边蓝色点开始,梯度会从曲面从上向下下降,因为梯度等于或接近0,曲面很平坦,你得花上很长时间慢慢抵达平稳段的最右边蓝色点。然后你的算法能够走出平稳段(红色笔)。

总结

首先,你不太可能困在极差的局部最优中,除非是你在训练较大的NN,存在大量参数,并且成本函数被定义在较高的维度空间。

第二点,平稳段是一个问题,这样使得学习十分缓慢。这就是像Momentum,RMSprop,Adam这样的算法,能够加速学习算法的地方。在这些情况下,更成熟的优化算法,如Adam算法,能够加快速度,让你尽早往下走出平稳段。

因为你的网络要解决优化问题,说实话,要面临如此之高的维度空间,我觉得没有人有那么好的直觉,知道这些空间长什么样,而且我们对它们的理解还在不断发展,不过我希望这一点能够让你更好地理解优化算法所面临的问题。

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