Noint's Studio.

Gradient Descent

Word count: 678Reading time: 2 min
2023/12/02

梯度下降(Gradient Descent)是一种常用于机器学习和深度学习中的优化算法,用于最小化一个函数。这个函数通常被称为“代价函数”或“损失函数”,它衡量了模型预测值与实际值之间的差距。梯度下降的核心思想是,通过迭代的方式逐步调整参数以找到使代价函数最小化的参数值。

数学推理

为了理解梯度下降,我们首先需要理解“梯度”的概念。在多变量微积分中,一个函数在某一点的梯度由该点处的偏导数构成,它指向该函数增长最快的方向。因此,梯度的反方向就是函数下降最快的方向。

假设我们有一个代价函数 $ J(\theta) $,其中 $\theta $是模型的参数。我们的目标是找到使 $ J(\theta) $最小的$\theta $值。梯度下降算法会执行以下步骤:

  1. 随机初始化参数 $\theta $。
  2. 计算代价函数 $ J(\theta) $ 在当前 $\theta $ 下的梯度 $ \nabla J(\theta) $。
  3. 更新 $\theta $,使其沿着梯度的反方向移动:$ \theta := \theta - \alpha \nabla J(\theta) $,其中 $\alpha $ 是学习率,控制步长大小。
  4. 重复步骤2和3,直到达到收敛条件(例如,梯度的大小足够小或迭代次数达到某个阈值)。

推理过程

以一个简单的线性回归模型为例,假设我们有一个代价函数 $J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2 $,其中 $h_\theta(x) = \theta^T x $是我们的假设函数,$ m $ 是样本数量。

我们需要计算 $J(\theta) $ 对 $\theta$ 的偏导数,即梯度:

$$ \nabla J(\theta) = \frac{\partial}{\partial \theta} J(\theta) = \frac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)}) x^{(i)} $$

然后,我们使用梯度下降规则更新 $\theta$:

$$\theta := \theta - \alpha \nabla J(\theta) $$

这意味着我们减去了梯度与学习率 $\alpha$的乘积,以使 $J(\theta)$最小化。

举例

假设我们的数据集包含以下点:((1, 1), (2, 2), (3, 3)),我们想要找到一条直线 $ y = \theta x $来拟合这些点。

  1. 随机初始化 $\theta$,比如 $\theta = 0$。
  2. 计算 $J(\theta)$ 的梯度:在 $\theta = 0 $ 时,$\nabla J(\theta) = \frac{1}{3} \sum_{i=1}^{3} (-i) \cdot i = -\frac{14}{3}$。
  3. 选择一个学习率,比如 $ \alpha = 0.01$,并更新 $\theta$:$ \theta := 0 - 0.01 \cdot (-\frac{14}{3}) = \frac{14}{300}$。
  4. 重复步骤2和3,直到 $ \theta $ 收敛到最优解。

通过这个过程,梯度下降算法能够逐渐找到最佳的 $\theta$ 值来最小化代价函数 $J(\theta)$,从而找到最佳的模型参数。

CATALOG
  1. 1. 数学推理
  2. 2. 推理过程
  3. 3. 举例