## 介绍
想象一下,我们有一个函数 ,我们想找到它的最小值。你会怎么办 ?
简单吧?我们只需要解下面的方程:
问题是,找到 的公式并不总是那么容易,因为它们往往非常复杂,尤其是在我们处理复杂函数的深度学习中。所以我们需要找到另一种方法,可以为我们提供函数的最小值,而不需要找到导数的公式。
让我们建立一些直觉
假设我们有一个函数 f 和相应的图:
让我们从随机点 开始。目标是移动该点并使其越来越接近 ,使得 x*。所以问题可以分为两部分:
-
我们应该向哪个方向移动点?左还是右?
-
我们应该移动它多少?
方向
让我们建立一些直觉来回答第一个问题。请看以下几点:
注意:
-
当点 位于最佳点 的右侧时,其切线上升。
-
当点 位于最佳点 的右侧时,其切线向下。
直线的方向由其斜率的符号确定:
-
一条线向上斜率是正。
-
一条线向下斜率是负。
注意: \
函数在某一点 的切线斜率不大于该点 的导数:
因此,作为问题 “我们应该将 移到哪里?” 的答案:
-
位于 右侧 我们需要将 移至左侧。
-
位于 的左侧 我们需要将 移至右侧。
步骤
现在第二个问题,我们应该移动 多少?
看看下面的例子:
我们可以得出结论:
-
接近 => 切线斜率小 => 小。
-
距离 较远 => 切线斜率较大 => 较大。
通过回答这两个问题,我们得出的结论是,只有了解点 的导数才能让我们深入了解最优点 的方向和距离。
梯度下降
梯度下降是前两个问题答案的表述。它是一种优化迭代算法,从随机初始点 开始近似函数的最小值 。算法表述如下:
在哪里:
-
不超过 在点 的导数。
-
是一个正常数,决定步长有多大。
请注意:
-
在 => => => 向左移动。
-
位于 => => => 向右移动。
-
接近 => 接近 => 对 。
测验
-
梯度下降何时停止迭代:
-
当 足够小时。
-
当 接近 时。
-
当 . XXX
-
我们如何选择:
-
我们随机挑选。 XXX
-
我们把它放在附近。
-
这取决于问题。
-
为什么我们需要梯度下降:
-
因为计算机不够强大,无法计算导数。
-
因为深度学习模型的导数公式很难找到。 XXX
-
因为函数有多个局部最小值。