梯度下降可视化
目录
我们提供了一个互动计算器,用于可视化应用于二维函数 \( f(x,y) \) 的梯度下降算法的收敛过程。
梯度下降算法通过迭代调整 \( x \) 和 \( y \) 的值来找到函数 \( f(x, y) \) 的最小值。从初始值 \( x_0 \) 和 \( y_0 \) 开始,算法利用函数的梯度逐步向最小值移动,步长由学习率 \( r \) 控制。过程会持续进行,直到变量值的变化足够小或达到其他停止条件。
以下是针对函数 \( f(x, y) \) 的梯度下降过程的分步描述,初始值为 \( x_0 \) 和 \( y_0 \),学习率为 \( r \):
梯度下降的描述
1. 初始化:
- 以变量 \( x \) 和 \( y \) 的初始猜测值开始。设这些初始值为 \( x_0 \) 和 \( y_0 \)。
- 选择一个学习率 \( r \),它控制朝向最小值移动的步长。
2. 计算梯度:
- 对函数 \( f(x, y) \) 计算相对于 \( x \) 和 \( y \) 的偏导数:
\[
\dfrac{\partial f}{\partial x} \quad \text{和} \quad \dfrac{\partial f}{\partial y}
\]
- 在当前的 \( x \) 和 \( y \) 值下计算这些偏导数。将这些导数记为 \( \dfrac{\partial f}{\partial x}(x_k, y_k) \) 和 \( \dfrac{\partial f}{\partial y}(x_k, y_k) \),其中 \( k \) 是当前迭代的索引。
3. 更新规则:
- 通过朝梯度相反的方向移动来调整 \( x \) 和 \( y \) 的值(因为我们正在最小化函数):
\[
x_{k+1} = x_k - r \dfrac{\partial f}{\partial x}(x_k, y_k)
\]
\[
y_{k+1} = y_k - r \dfrac{\partial f}{\partial y}(x_k, y_k)
\]
- 这里,\( x_{k+1} \) 和 \( y_{k+1} \) 是一次迭代后 \( x \) 和 \( y \) 的更新值。
4. 迭代:
- 重复计算梯度和更新 \( x \) 和 \( y \) 的值,直到满足停止条件。停止条件可以是:
- 最大迭代次数。
- 迭代之间 \( x \) 和 \( y \) 值的变化小于预定义的阈值。
- 梯度的大小 \( \dfrac{\partial f}{\partial x}(x_k, y_k) \) 和 \( \dfrac{\partial f}{\partial y}(x_k, y_k) \) 小于预定义的阈值。
5. 收敛:
- 一旦满足停止条件,\( x \) 和 \( y \) 的值应接近使函数 \( f(x, y) \) 达到最小值的值。
另一个梯度下降计算器也可用于研究收敛性。
计算器的使用
本计算器仅用于教育目的,以可视化梯度下降算法。因此,建议输入的函数应有最小值,并且初始值可以通过图形方式找到。
输入函数 \( f(x,y) \) 、\( x \) 和 \( y \) 的初始值 \( x_0 \) 和 \( y_0 \) 以及学习率 \( r \)。
输出包括:
1) 函数 \( f(x,y) \) 的偏导数 \(
\dfrac{\partial f}{\partial x} \; \text{和} \; \dfrac{\partial f}{\partial y}
\)
2) 步数以及更新后的 \( x \) 和 \( y \) 的值,
3) 更新后 \( x \) 和 \( y \) 处的偏导数的值。
4) 所有更新后 \( x \) 和 \( y \) 值的图形。
5) 表格中显示 \( x \) 和 \( y \) 的值、偏导数的值以及 \( f(x,y) \) 的值。
注意 从下表可以看到,当收敛时,偏导数 \(
\dfrac{\partial f}{\partial x} \; \text{和} \; \dfrac{\partial f}{\partial y}
\) 趋近于零,\( f(x,y) \) 趋近于其局部最小值。
输入 \( f(x,y) = \)
输入初始点 \( (x_0, y_0) \):
输入学习率 \( r \) =
输出
步数 |
\( x \) |
\( y \) |
\( \dfrac{\partial f}{\partial x} \) |
\( \dfrac{\partial f}{\partial y} \) |
\( f(x, y) \) |