一阶导数 $f'(x)$ 说明了函数 $f(x)$ 在任意给定点 $x$ 处的瞬时变化率或斜率。这个斜率表明函数是递增还是递减。但如果我们想知道斜率本身是如何变化的呢?为了解决这个问题,我们需要研究高阶导数。二阶导数:衡量弯曲度正如我们可以对函数 $f(x)$ 求导得到其导数 $f'(x)$,我们也可以再次对导数 $f'(x)$ 求导。结果称为 $f(x)$ 的二阶导数。二阶导数的常见符号有:$f''(x)$ (读作“f 双撇 x”)$\frac{d^2y}{dx^2}$ (读作“d 平方 y 比 dx 平方”)$y''$二阶导数衡量了一阶导数(斜率)的变化率。以驾驶汽车为例:您的位置对应 $f(x)$。您的速度(速率和方向)对应一阶导数 $f'(x)$。您的加速度(速度变化有多快)对应二阶导数 $f''(x)$。在函数图的背景下,二阶导数说明了其凹凸性。向上凹: 如果在某个区间内 $f''(x) > 0$,则斜率 $f'(x)$ 正在增加。图形向上弯曲,就像一个盛水的杯子。向下凹: 如果在某个区间内 $f''(x) < 0$,则斜率 $f'(x)$ 正在减小。图形向下弯曲,就像一个倒扣的杯子或一个穹顶。拐点: 凹凸性发生变化(从向上凹到向下凹,或从向下凹到向上凹)的点称为拐点。在这样的点上,我们常会发现 $f''(x) = 0$,尽管 $f''(x) = 0$ 不能保证是拐点。考虑函数 $f(x) = x^3$。 它的一阶导数是 $f'(x) = 3x^2$。 它的二阶导数是 $f''(x) = 6x$。对于 $x > 0$, $f''(x) > 0$,所以 $f(x)=x^3$ 的图是向上凹的。对于 $x < 0$, $f''(x) < 0$,所以 $f(x)=x^3$ 的图是向下凹的。当 $x = 0$ 时,$f''(x) = 0$。点 $(0,0)$ 是一个凹凸性改变的拐点。{"layout": {"xaxis": {"title": "x", "range": [-2, 2]}, "yaxis": {"title": "f(x), f'(x), f''(x)", "range": [-8, 8]}, "title": "f(x)=x^3 及其导数", "legend": {"yanchor": "top", "y": 0.99, "xanchor": "left", "x": 0.01}, "width": 600, "height": 400}, "data": [{"x": [-2,-1.8,-1.6,-1.4,-1.2,-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1,1.2,1.4,1.6,1.8,2], "y": [-8,-5.83,-4.1,-2.74,-1.73,-1,-0.51,-0.22,-0.06,-0.01,0,0.01,0.06,0.22,0.51,1,1.73,2.74,4.1,5.83,8], "mode": "lines", "name": "f(x) = x^3", "line": {"color": "#339af0"}}, {"x": [-2,-1.8,-1.6,-1.4,-1.2,-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1,1.2,1.4,1.6,1.8,2], "y": [12,9.72,7.68,5.88,4.32,3,1.92,1.08,0.48,0.12,0,0.12,0.48,1.08,1.92,3,4.32,5.88,7.68,9.72,12], "mode": "lines", "name": "f'(x) = 3x^2 (斜率)", "line": {"color": "#20c997", "dash": "dash"}}, {"x": [-2,-1.8,-1.6,-1.4,-1.2,-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4,0.6,0.8,1,1.2,1.4,1.6,1.8,2], "y": [-12,-10.8,-9.6,-8.4,-7.2,-6,-4.8,-3.6,-2.4,-1.2,0,1.2,2.4,3.6,4.8,6,7.2,8.4,9.6,10.8,12], "mode": "lines", "name": "f''(x) = 6x (凹凸性)", "line": {"color": "#ff922b", "dash": "dot"}}]}函数 $f(x)=x^3$ 在 $x=0$ 处从向下凹($f''(x)<0$)变为向上凹($f''(x)>0$)。留意斜率 $f'(x)$ 如何在 $x=0$ 处之前减小,然后增加。二阶导数之后的导数我们可以继续这个过程。对二阶导数 $f''(x)$ 求导会得到三阶导数,表示为 $f'''(x)$ 或 $\frac{d^3y}{dx^3}$。再次求导会得到四阶导数,$f^{(4)}(x)$ 或 $\frac{d^4y}{dx^4}$,依此类推。函数 $f(x)$ 经过 $n$ 次求导所得的结果是n 阶导数,表示为 $f^{(n)}(x)$ 或 $\frac{d^ny}{dx^n}$。我们来求一个多项式的前几阶导数: $f(x) = 2x^4 - 5x^3 + x^2 - 7x + 3$一阶导数(斜率): $f'(x) = \frac{d}{dx}(2x^4 - 5x^3 + x^2 - 7x + 3)$ $f'(x) = 8x^3 - 15x^2 + 2x - 7$二阶导数(凹凸性): $f''(x) = \frac{d}{dx}(8x^3 - 15x^2 + 2x - 7)$ $f''(x) = 24x^2 - 30x + 2$三阶导数(凹凸性的变化率): $f'''(x) = \frac{d}{dx}(24x^2 - 30x + 2)$ $f'''(x) = 48x - 30$四阶导数: $f^{(4)}(x) = \frac{d}{dx}(48x - 30)$ $f^{(4)}(x) = 48$五阶导数(及更高阶): $f^{(5)}(x) = \frac{d}{dx}(48)$ $f^{(5)}(x) = 0$ 所有后续导数也将为零。高阶导数为何重要一阶导数说明了变化方向(函数是递增还是递减?),二阶导数提供了关于函数图形状的重要信息。这在优化中特别有用。在下一节,我们将了解如何结合一阶导数(以找出可能的平坦点,即 $f'(x)=0$ 的位置)和二阶导数(以检查这些点的弯曲度),从而可靠地确定局部最小值和最大值。这称为二阶导数判别法。如果 $f'(c) = 0$ 且 $f''(c) > 0$,则函数在 $x=c$ 处向上凹,表明存在局部最小值。如果 $f'(c) = 0$ 且 $f''(c) < 0$,则函数在 $x=c$ 处向下凹,表明存在局部最大值。通过二阶导数对弯曲度的理解是分析机器学习中优化问题的根本。虽然我们在梯度下降等算法中主要使用一阶导数(梯度),但弯曲度这一认识(由二阶导数及其多变量对应物——Hessian 矩阵体现)有助于说明这些算法的行为并促成更高级的优化技术。