偏导数衡量多变量函数沿着标准坐标轴方向(如 xxx 方向或 yyy 方向)的变化率。但如果我们想知道函数从给定点增加 最快 的方向是什么?这正是梯度向量告诉我们的。
想象一下你站在由函数 f(x,y)f(x, y)f(x,y) 表示的丘陵地带上。如果你沿着正东方向 (∂f∂x\frac{\partial f}{\partial x}∂x∂f) 或正北方向 (∂f∂y\frac{\partial f}{\partial y}∂y∂f) 走,偏导数会告诉你山坡有多陡峭。梯度将这些信息组合成一个单一的向量,它直接指向上坡,即最陡峭坡度的方向。
定义梯度
对于一个依赖于 nnn 个变量的标量函数 f(x1,x2,…,xn)f(x_1, x_2, \dots, x_n)f(x1,x2,…,xn),其梯度是一个包含所有一阶偏导数的向量。它通常表示为 ∇f\nabla f∇f(读作“nabla f”或“del f”)。
∇f(x1,x2,…,xn)=⟨∂f∂x1,∂f∂x2,…,∂f∂xn⟩\nabla f(x_1, x_2, \dots, x_n) = \left\langle \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \dots, \frac{\partial f}{\partial x_n} \right\rangle∇f(x1,x2,…,xn)=⟨∂x1∂f,∂x2∂f,…,∂xn∂f⟩
梯度向量的每个分量都是函数对一个变量的偏导数。因此,梯度是一个向量场;它将一个向量(代表最陡峭上升的方向和大小)分配给函数定义域中的每个点。
计算例子
我们来看函数 f(x,y)=x2+y3f(x, y) = x^2 + y^3f(x,y)=x2+y3。这个函数有两个输入,xxx 和 yyy。
求偏导数:
∂f∂x=∂∂x(x2+y3)=2x\frac{\partial f}{\partial x} = \frac{\partial}{\partial x}(x^2 + y^3) = 2x∂x∂f=∂x∂(x2+y3)=2x (将 yyy 视为常数)
∂f∂y=∂∂y(x2+y3)=3y2\frac{\partial f}{\partial y} = \frac{\partial}{\partial y}(x^2 + y^3) = 3y^2∂y∂f=∂y∂(x2+y3)=3y2 (将 xxx 视为常数)
构成梯度向量:
∇f(x,y)=⟨∂f∂x,∂f∂y⟩=⟨2x,3y2⟩\nabla f(x, y) = \left\langle \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y} \right\rangle = \langle 2x, 3y^2 \rangle∇f(x,y)=⟨∂x∂f,∂y∂f⟩=⟨2x,3y2⟩
在特定点,例如 (x,y)=(1,2)(x, y) = (1, 2)(x,y)=(1,2),梯度是:
∇f(1,2)=⟨2(1),3(22)⟩=⟨2,12⟩\nabla f(1, 2) = \langle 2(1), 3(2^2) \rangle = \langle 2, 12 \rangle∇f(1,2)=⟨2(1),3(22)⟩=⟨2,12⟩
这个向量 ⟨2,12⟩\langle 2, 12 \rangle⟨2,12⟩ 表示从点 (1,2)(1, 2)(1,2) 开始,函数 f(x,y)=x2+y3f(x, y) = x^2 + y^3f(x,y)=x2+y3 增加最快的方向。
几何解释:方向和大小
梯度 ∇f\nabla f∇f 在任何给定点都有两个重要性质:
方向: 向量 ∇f\nabla f∇f 指向函数在该点 最陡峭上升 的方向。如果你想尽可能快地增加函数值,你应该沿着梯度指示的方向移动。
大小: 梯度向量的模长(或长度),记作 ∣∣∇f∣∣||\nabla f||∣∣∇f∣∣,代表该最陡峭方向上的 增加率。模长越大,表示函数增加得越快。
∣∣∇f∣∣=(∂f∂x1)2+(∂f∂x2)2+⋯+(∂f∂xn)2||\nabla f|| = \sqrt{\left(\frac{\partial f}{\partial x_1}\right)^2 + \left(\frac{\partial f}{\partial x_2}\right)^2 + \dots + \left(\frac{\partial f}{\partial x_n}\right)^2}∣∣∇f∣∣=(∂x1∂f)2+(∂x2∂f)2+⋯+(∂xn∂f)2
反之,与梯度相反的方向,−∇f-\nabla f−∇f,指向 最陡峭下降 的方向。这对于机器学习中的优化很重要。如果函数 fff 代表我们希望最小化的成本或误差,沿着 −∇f-\nabla f−∇f 的方向移动可以使我们在每一步中最有效地降低成本。
可视化梯度
等高线图有助于可视化多变量函数。等高线连接函数值相同的点。梯度向量在任何点总是垂直(正交)于通过该点的等高线。
我们来可视化一个简单函数的梯度,f(x,y)=x2+y2f(x, y) = x^2 + y^2f(x,y)=x2+y2。梯度是 ∇f=⟨2x,2y⟩\nabla f = \langle 2x, 2y \rangle∇f=⟨2x,2y⟩。等高线是以原点为中心的圆。
函数 f(x,y)=x2+y2f(x, y) = x^2 + y^2f(x,y)=x2+y2 的等高线图。灰色圆圈是 fff 值恒定的等高线。蓝色箭头表示在选定点处的梯度向量 ∇f=⟨2x,2y⟩\nabla f = \langle 2x, 2y \rangle∇f=⟨2x,2y⟩。请注意梯度向量如何向外指向,垂直于等高线,表示从原点 (0,0) 的最小值向外最陡峭增加的方向。
梯度在机器学习中的作用
在机器学习中,我们通常定义一个成本函数(或损失函数)来衡量模型表现的优劣。这个成本函数通常依赖于许多参数(权重和偏差)。训练模型涉及找到使该成本函数最小化的参数值。
由于负梯度 −∇f-\nabla f−∇f 指向最陡峭下降的方向,它提供了调整模型参数以降低成本的最有效方向。梯度下降等算法直接基于此原理:通过沿着成本函数梯度的反方向迈出小步,迭代更新参数。
因此,理解梯度向量对于理解许多机器学习模型的训练和优化方式很重要。它是指引我们穿过复杂、高维参数,走向更低成本点的指南针。我们将在下一章学习基于梯度的优化算法。