我们将理论付诸实践。你已经学过,偏导数能够帮助我们找到一个多变量函数相对于其中一个变量的变化率,同时保持其他变量不变。你还知道,梯度向量将这些偏导数集合在一起,指向函数最陡峭上升的方向。现在,是时候亲自动手计算它们了。请记住,这个过程很大程度上依赖于你之前学过的导数规则(如幂法则和和法则),但多了一步:在求导时将某些变量视为常量。例子1:一个简单的多项式函数我们从一个包含两个变量$x$和$y$的函数开始:$$ f(x, y) = 2x^3 + 4xy^2 - y^5 + 7 $$我们的目标是找到偏导数$\frac{\partial f}{\partial x}$和$\frac{\partial f}{\partial y}$,然后构成梯度向量$\nabla f(x, y)$。计算$\frac{\partial f}{\partial x}$(相对于$x$的偏导数)要找到$\frac{\partial f}{\partial x}$,我们将$y$视为一个常数(比如5、-2或$\pi$)。项1 ($2x^3$): $2x^3$相对于$x$的导数是$2 \cdot (3x^{3-1}) = 6x^2$。(标准幂法则)。项2 ($4xy^2$): 在这里,我们将$4$和$y^2$视为与$x$相乘的常数。(常数 $\times x$)相对于$x$的导数就是这个常数。所以,$4xy^2$相对于$x$的导数是$4y^2$。项3 ($-y^5$): 由于我们将$y$视为常数,$y^5$也是一个常数。任何常数相对于$x$的导数都是0。项4 ($7$): 这是一个常数,所以它相对于$x$的导数是0。综合起来:$$ \frac{\partial f}{\partial x} = 6x^2 + 4y^2 + 0 + 0 = 6x^2 + 4y^2 $$计算$\frac{\partial f}{\partial y}$(相对于$y$的偏导数)现在,我们转换视角。要找到$\frac{\partial f}{\partial y}$,我们将$x$视为一个常数。项1 ($2x^3$): 由于$x$被视为常数,$2x^3$也是常数。它相对于$y$的导数是0。项2 ($4xy^2$): 将$4x$视为$y^2$的常数系数。(常数 $\times y^2$)相对于$y$的导数是(常数 $\times 2y$)。所以,导数是$4x \cdot (2y) = 8xy$。项3 ($-y^5$): $-y^5$相对于$y$的导数是$-5y^{5-1} = -5y^4$。(标准幂法则)。项4 ($7$): 这是一个常数,所以它相对于$y$的导数是0。综合起来:$$ \frac{\partial f}{\partial y} = 0 + 8xy - 5y^4 + 0 = 8xy - 5y^4 $$构成梯度向量$\nabla f(x, y)$梯度向量只是一个包含偏导数的向量。按照惯例,我们按变量的顺序(先$x$,后$y$)列出它们。$$ \nabla f(x, y) = \begin{bmatrix} \frac{\partial f}{\partial x} \ \frac{\partial f}{\partial y} \end{bmatrix} = \begin{bmatrix} 6x^2 + 4y^2 \ 8xy - 5y^4 \end{bmatrix} $$在某点计算梯度梯度本身是一个函数;它告诉我们函数在任何点 $(x, y)$ 最陡峭的上升方向。让我们在特定点 $(x, y) = (1, 2)$ 找到梯度。我们将 $x=1$ 和 $y=2$ 代入偏导数表达式:$\frac{\partial f}{\partial x}$ 在 $(1, 2)$:$6(1)^2 + 4(2)^2 = 6(1) + 4(4) = 6 + 16 = 22$$\frac{\partial f}{\partial y}$ 在 $(1, 2)$:$8(1)(2) - 5(2)^4 = 16 - 5(16) = 16 - 80 = -64$因此,点$(1, 2)$处的梯度向量是:$$ \nabla f(1, 2) = \begin{bmatrix} 22 \ -64 \end{bmatrix} $$这个向量告诉我们,从函数$f(x, y)$所定义的曲面上的点$(1, 2)$开始,最陡峭的增加方向主要沿着正$x$轴(值为22)和强烈地沿着负$y$轴(值为-64)。在优化(如梯度下降)中,我们通常会沿着相反的方向,即$-\nabla f(1, 2)$,以减小函数值。例子2:带有交互项的函数我们再试一个。考虑一个函数$g(w_1, w_2)$,它可能表示一个取决于两个权重$w_1$和$w_2$的简单成本函数。$$ g(w_1, w_2) = 3w_1^2 - 5w_1w_2 + 2w_2^2 $$计算$\frac{\partial g}{\partial w_1}$将$w_2$视为常数。项1 ($3w_1^2$): 相对于$w_1$的导数是$3(2w_1) = 6w_1$。项2 ($-5w_1w_2$): 将$-5w_2$视为$w_1$的常数系数。相对于$w_1$的导数是$-5w_2$。项3 ($2w_2^2$): 将$w_2$视为常数,所以$2w_2^2$是常数。相对于$w_1$的导数是0。结果: $$ \frac{\partial g}{\partial w_1} = 6w_1 - 5w_2 $$计算$\frac{\partial g}{\partial w_2}$将$w_1$视为常数。项1 ($3w_1^2$): 将$w_1$视为常数,所以$3w_1^2$是常数。相对于$w_2$的导数是0。项2 ($-5w_1w_2$): 将$-5w_1$视为$w_2$的常数系数。相对于$w_2$的导数是$-5w_1$。项3 ($2w_2^2$): 相对于$w_2$的导数是$2(2w_2) = 4w_2$。结果: $$ \frac{\partial g}{\partial w_2} = -5w_1 + 4w_2 $$构成梯度向量$\nabla g(w_1, w_2)$$$ \nabla g(w_1, w_2) = \begin{bmatrix} \frac{\partial g}{\partial w_1} \ \frac{\partial g}{\partial w_2} \end{bmatrix} = \begin{bmatrix} 6w_1 - 5w_2 \ -5w_1 + 4w_2 \end{bmatrix} $$在某点计算梯度让我们在点$(w_1, w_2) = (2, -1)$处计算梯度。$\frac{\partial g}{\partial w_1}$ 在 $(2, -1)$:$6(2) - 5(-1) = 12 + 5 = 17$$\frac{\partial g}{\partial w_2}$ 在 $(2, -1)$:$-5(2) + 4(-1) = -10 - 4 = -14$因此,点$(2, -1)$处的梯度向量是:$$ \nabla g(2, -1) = \begin{bmatrix} 17 \ -14 \end{bmatrix} $$为何要练习这些?计算偏导数和梯度是理解和实现机器学习中优化算法所需的一项基本运算能力。当我们训练模型时,通常会有一个取决于许多参数(权重和偏差)的成本函数。梯度下降利用这个成本函数的梯度,迭代地更新参数,使其朝着成本最小化的方向移动。你将在下一章看到这个过程的运作方式。花些时间练习这些例子,也许可以尝试自己构造并求导一些简单的函数。你对这些计算越熟悉,优化过程就会越清晰。