梯度下降

深度学习、数学、梯度下降
梯度下降 cover image

## 介绍

想象一下,我们有一个函数 $f(x)$,我们想找到它的最小值。你会怎么办 ?

简单吧?我们只需要解下面的方程:

$$f'(x) = 0$$

问题是,找到 $f'$ 的公式并不总是那么容易,因为它们往往非常复杂,尤其是在我们处理复杂函数的深度学习中。所以我们需要找到另一种方法,可以为我们提供函数的最小值,而不需要找到导数$f'$的公式。

让我们建立一些直觉

假设我们有一个函数 f 和相应的图:

Graph 1

让我们从随机点 $x_{0}$ 开始。目标是移动该点并使其越来越接近 $x*$,使得 $f'($x*$) = 0$。所以问题可以分为两部分:

  • 我们应该向哪个方向移动点$x$?左还是右?

  • 我们应该移动它多少?

方向

让我们建立一些直觉来回答第一个问题。请看以下几点:

Graph 2

Graph 3

注意:

  • 当点 $x_{0}$ 位于最佳点 $x*$ 的右侧时,其切线上升。

  • 当点 $x_{0}$ 位于最佳点 $x*$ 的右侧时,其切线向下。

直线的方向由其斜率的符号确定:

  • 一条线向上$\暗示$斜率$a$是

  • 一条线向下$\暗示$斜率$a$是

注意: \

函数在某一点 $x_{0}$ 的切线斜率不大于该点 $f'(x_{0})$ 的导数:

$$ tangent(x*{0}): g(x) = f'(x*{0}).(x-x*{0}) + f(x*{0}) $$

因此,作为问题 “我们应该将 $x_{0}$ 移到哪里?” 的答案:

  • $f'(x_{0}) < 0$ $\implies$ $x_{0}$ 位于 $x*$ $\implies$ 右侧 我们需要将 $x_{0}$ 移至左侧。

  • $f'(x_{0}) > 0$ $\implies$ $x_{0}$ 位于 $x*$ $\implies$ 的左侧 我们需要将 $x_{0}$ 移至右侧。

步骤

现在第二个问题,我们应该移动 $x_{0}$ 多少?

看看下面的例子:

Graph 4

Graph 5

我们可以得出结论:

  • $x_{0}$ 接近 $x*$ => 切线斜率小 => $f'(x_{0})$ 小。

  • $x_{0}$ 距离 $x*$ 较远 => 切线斜率较大 => $f'(x_{0})$ 较大。

通过回答这两个问题,我们得出的结论是,只有了解点 $x_{0}$ 的导数才能让我们深入了解最优点 $x_{0}$ 的方向和距离。

梯度下降

梯度下降是前两个问题答案的表述。它是一种优化迭代算法,从随机初始点 $x_{0}$ 开始近似函数的最小值 $x*$。算法表述如下:

$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$

在哪里:

  • $ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ 不超过 $f$ 在点 $x*{n}$ 的导数。

  • $lr$ 是一个正常数,决定步长有多大。

请注意:

  • $x_{n}$ 在 $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 的右侧1} = x_{n} - 正 $ => $x_{n}$ 向左移动。

  • $x_{n}$ 位于 $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} 的左侧 < 0$ => $ x*{n +1} = x*{n} + 正 $ => $x_{n}$ 向右移动。

  • $x_{n}$ 接近 $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ 接近 $0$ => 对 $x_{ 进行小幅更新n}$。

测验

  • 梯度下降何时停止迭代:

  • 当 $x_{n}$ 足够小时。

  • 当 $x_{n}$ 接近 $x_{0}$ 时。

  • 当 $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX

  • 我们如何选择$x_{0}$:

  • 我们随机挑选。 XXX

  • 我们把它放在$x{n}$附近。

  • 这取决于问题。

  • 为什么我们需要梯度下降:

  • 因为计算机不够强大,无法计算导数。

  • 因为深度学习模型的导数公式很难找到。 XXX

  • 因为函数有多个局部最小值。


Career Services background pattern

职业服务

Contact Section background image

让我们保持联系

Code Labs Academy © 2024 版权所有.