梯度下降法简洁介绍

“梯度指向上升最快方向,所以加负号就是下降最快”是不严谨的,应从公式推导得出结论。

需要注意三点:

偏导数不是增量,而是单位自变量变化对应的局部变化率;\(u_i\) 不是实际增量,而是单位方向中第 \(i\) 个坐标分量;最终得到的严格对象是方向导数,而不是任意有限距离下的函数增量。

完整介绍如下:

设有多元函数

\[J=f(x_1,x_2,\ldots,x_n). \]

现在考虑在当前点沿某个方向移动。为了描述这个方向,引入一个单位向量

\[\mathbf u=(u_1,u_2,\ldots,u_n),\qquad \|\mathbf u\|=1. \]

假设沿 (\mathbf u) 方向移动一个很小的距离 (\Delta s)。由于 (\mathbf u) 是单位向量,实际发生的各个自变量变化量近似为

\[\Delta x_i\approx u_i\Delta s. \]

这里要特别注意:\(u_i\) 本身不是 \(x_i\) 的实际增量,而是沿该方向移动一个单位距离时,\(x_i\) 对应的单位变化量;真正的增量是 \(u_i\Delta s\)

对于多元函数,在局部范围内,可以用全微分近似函数的变化:

\[\Delta J \approx \frac{\partial J}{\partial x_1}\Delta x_1 + \frac{\partial J}{\partial x_2}\Delta x_2 +\cdots+ \frac{\partial J}{\partial x_n}\Delta x_n. \]

代入

\[\Delta x_i\approx u_i\Delta s, \]

得到

\[\Delta J \approx \left( \frac{\partial J}{\partial x_1}u_1+ \frac{\partial J}{\partial x_2}u_2+ \cdots+ \frac{\partial J}{\partial x_n}u_n \right)\Delta s. \]

因此,沿单位向量 (\mathbf u) 方向的方向导数

\[D_{\mathbf u}J = \lim_{\Delta s\to0}\frac{\Delta J}{\Delta s} \]

\[D_{\mathbf u}J = \frac{\partial J}{\partial x_1}u_1+ \frac{\partial J}{\partial x_2}u_2+ \cdots+ \frac{\partial J}{\partial x_n}u_n. \]

把所有偏导数打包成一个向量:

\[\boxed{ \nabla J= \left( \frac{\partial J}{\partial x_1}, \frac{\partial J}{\partial x_2}, \ldots, \frac{\partial J}{\partial x_n} \right) } \]

这就是梯度

于是方向导数可以写成两个向量的点积:

\[\boxed{ D_{\mathbf u}J=\nabla J\cdot\mathbf u } \]

而两个向量的点积满足

\[\nabla J\cdot\mathbf u = \|\nabla J\|\,\|\mathbf u\|\cos\theta. \]

由于 (\mathbf u) 是单位向量,

\[\|\mathbf u\|=1, \]

所以

\[\boxed{ D_{\mathbf u}J=\|\nabla J\|\cos\theta } \]

其中,(\theta) 是梯度 (\nabla J) 与方向 (\mathbf u) 之间的夹角。

现在问题变成:在所有单位方向中,哪个方向使 (J) 增长得最快,哪个方向使 (J) 减小得最快?

因为

\[-1\leq\cos\theta\leq1, \]

\[\theta=0^\circ \]

时,

\[\cos\theta=1, \]

方向导数达到最大值:

\[\boxed{ D_{\mathbf u}J_{\max}=\|\nabla J\| } \]

所以,梯度方向是函数局部增长最快的方向

\[\theta=180^\circ \]

时,

\[\cos\theta=-1, \]

方向导数达到最小值:

\[\boxed{ D_{\mathbf u}J_{\min}=-\|\nabla J\| } \]

因此,与梯度方向相反的方向,是函数局部下降最快的方向

由于与 (\nabla J) 相反的方向就是

\[\boxed{-\nabla J}, \]

所以梯度下降法采用

\[\boxed{ \theta_{\text{new}} = \theta_{\text{old}} -\eta\nabla J } \]

这里的“减去梯度”并不是人为规定的技巧,而是由方向导数和向量点积的几何性质自然推导出来的:

\[\boxed{ \text{方向导数} \rightarrow \text{梯度} \rightarrow \text{点积} \rightarrow \cos\theta \rightarrow \text{最大/最小方向} } \]

还要注意一个严格性问题:上述“增长最快”和“下降最快”描述的是当前位置附近的局部变化率。只有当位移足够小时,

\[\Delta J\approx D_{\mathbf u}J\,\Delta s \]

才成立;方向导数本质上描述的是局部一阶变化,而不是任意有限距离上的实际函数增量。

另外,当

\[\nabla J=0 \]

时,

\[D_{\mathbf u}J=0 \]

对所有方向都成立。此时不能仅靠一阶梯度判断哪个方向下降最快,还需要考察二阶导数,即 Hessian 矩阵

你这套思路非常关键,因为它把“为什么是负梯度”从一个需要背诵的结论,变成了一个完整的数学推导:

\[\boxed{ \Delta\mathbf x=\mathbf u\Delta s } \]

\[\boxed{ \Delta J\approx\nabla J\cdot\Delta\mathbf x } \]

\[\boxed{ D_{\mathbf u}J=\nabla J\cdot\mathbf u } \]

\[\boxed{ D_{\mathbf u}J=\|\nabla J\|\cos\theta } \]

\[\boxed{ \max D_{\mathbf u}J=\|\nabla J|,\quad \min D_{\mathbf u}J=-\|\nabla J\| } \]

这条链就是“梯度为什么是最陡上升方向、负梯度为什么是最陡下降方向”最本质的证明。

posted @ 2026-09-11 07:54  立体风  阅读(17)  评论(0)    收藏  举报