一阶导数 f′(x) 说明了函数 f(x) 在任意给定点 x 处的瞬时变化率或斜率。这个斜率表明函数是递增还是递减。但如果我们想知道斜率本身是如何变化的呢?为了解决这个问题,我们需要研究高阶导数。
二阶导数:衡量弯曲度
正如我们可以对函数 f(x) 求导得到其导数 f′(x),我们也可以再次对导数 f′(x) 求导。结果称为 f(x) 的二阶导数。
二阶导数的常见符号有:
- f′′(x) (读作“f 双撇 x”)
- dx2d2y (读作“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)=x3。
它的一阶导数是 f′(x)=3x2。
它的二阶导数是 f′′(x)=6x。
- 对于 x>0, f′′(x)>0,所以 f(x)=x3 的图是向上凹的。
- 对于 x<0, f′′(x)<0,所以 f(x)=x3 的图是向下凹的。
- 当 x=0 时,f′′(x)=0。点 (0,0) 是一个凹凸性改变的拐点。
函数 f(x)=x3 在 x=0 处从向下凹(f′′(x)<0)变为向上凹(f′′(x)>0)。留意斜率 f′(x) 如何在 x=0 处之前减小,然后增加。
二阶导数之后的导数
我们可以继续这个过程。对二阶导数 f′′(x) 求导会得到三阶导数,表示为 f′′′(x) 或 dx3d3y。再次求导会得到四阶导数,f(4)(x) 或 dx4d4y,依此类推。函数 f(x) 经过 n 次求导所得的结果是n 阶导数,表示为 f(n)(x) 或 dxndny。
我们来求一个多项式的前几阶导数:
f(x)=2x4−5x3+x2−7x+3
-
一阶导数(斜率):
f′(x)=dxd(2x4−5x3+x2−7x+3)
f′(x)=8x3−15x2+2x−7
-
二阶导数(凹凸性):
f′′(x)=dxd(8x3−15x2+2x−7)
f′′(x)=24x2−30x+2
-
三阶导数(凹凸性的变化率):
f′′′(x)=dxd(24x2−30x+2)
f′′′(x)=48x−30
-
四阶导数:
f(4)(x)=dxd(48x−30)
f(4)(x)=48
-
五阶导数(及更高阶):
f(5)(x)=dxd(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 矩阵体现)有助于说明这些算法的行为并促成更高级的优化技术。