“梯度指向上升最快方向,所以加负号就是下降最快”是不严谨的,应从公式推导得出结论。
需要注意三点:
偏导数不是增量,而是单位自变量变化对应的局部变化率;\(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\|
}
\]
这条链就是“梯度为什么是最陡上升方向、负梯度为什么是最陡下降方向”最本质的证明。