导数的极限定义,即 limh→0hf(x+h)−f(x),提供了一种计算导数的基本方法。然而,直接应用此定义对于复杂函数而言可能很繁琐。设想在机器学习优化循环中重复使用此定义,这将导致计算效率低下。幸好,微积分提供了一套规则,使得通过将复杂函数分解为更简单的部分,我们可以更轻松地求得导数。这些规则是求导我们在机器学习中定义模型成本或激活函数时遇到的函数类型的基础。
让我们查看最常用且实用的求导法则。假设 f(x) 和 g(x) 是可导函数,c 为常数。
常数法则
最简单的法则是涉及那些总是输出相同值的函数,例如 f(x)=5。由于函数的值不变,其变化率(即导数)始终为零。
- 法则: 如果 f(x)=c(其中 c 为常数),那么 f′(x)=0。
- 莱布尼茨表示法: dxd(c)=0
- 例子: 如果 f(x)=10,那么 f′(x)=0。
幂法则
这是最常用的法则之一,尤其适用于建模中常见的多项式函数。它适用于 x 的幂次形式的函数。
- 法则: 如果 f(x)=xn(其中 n 为任意实数),那么 f′(x)=nxn−1。
- 莱布尼茨表示法: dxd(xn)=nxn−1
- 说明: 对 xn 求导时,将指数 n 放到前面作乘数,然后将原指数减 1。
- 例子:
- 如果 f(x)=x3,那么 f′(x)=3x3−1=3x2。
- 如果 g(x)=x(即 x1),那么 g′(x)=1x1−1=1x0=1。这符合预期,y=x 这条直线的斜率为 1。
- 如果 h(x)=x=x1/2,那么 h′(x)=21x1/2−1=21x−1/2=2x1。
- 如果 k(x)=x21=x−2,那么 k′(x)=−2x−2−1=−2x−3=−x32。
常数倍法则
如果函数乘以一个常数,例如 f(x)=5x3,会怎样?该法则表明,你可以将常数提出来,对函数的其余部分求导,然后再将常数乘回去。
- 法则: 如果 h(x)=c⋅f(x),那么 h′(x)=c⋅f′(x)。
- 莱布尼茨表示法: dxd(c⋅f(x))=c⋅dxd(f(x))
- 例子: 如果 f(x)=5x3。我们知道 dxd(x3)=3x2。使用该法则:
f′(x)=5⋅dxd(x3)=5⋅(3x2)=15x2
和/差法则
机器学习中的成本函数通常是各项的和(例如平方误差和)。该法则允许我们逐项对这类函数求导。
- 法则: 如果 h(x)=f(x)+g(x),那么 h′(x)=f′(x)+g′(x)。同理,如果 h(x)=f(x)−g(x),那么 h′(x)=f′(x)−g′(x)。
- 莱布尼茨表示法: dxd(f(x)±g(x))=dxd(f(x))±dxd(g(x))
- 说明: 和(或差)的导数是导数的和(或差)。
- 例子: 设 h(x)=x4+6x2−7。我们可以使用幂法则、常数倍法则和常数法则逐项求导:
h′(x)=dxd(x4)+dxd(6x2)−dxd(7)
h′(x)=(4x3)+(6⋅2x)−(0)
h′(x)=4x3+12x
乘积法则
当对两个函数乘积形式的函数求导时,例如 h(x)=f(x)g(x),就需要此法则。重要之处在于不能简单地将各个导数相乘。
- 法则: 如果 h(x)=f(x)g(x),那么 h′(x)=f′(x)g(x)+f(x)g′(x)。
- 莱布尼茨表示法: dxd(f(x)g(x))=dxdfg(x)+f(x)dxdg
- 说明: 乘积的导数是第一个函数的导数乘以第二个函数,加上 第一个函数乘以第二个函数的导数。
- 例子: 设 h(x)=(x2+1)(x3−x)。
- 设 f(x)=x2+1,因此 f′(x)=2x。
- 设 g(x)=x3−x,因此 g′(x)=3x2−1。
- 应用乘积法则:
h′(x)=f′(x)g(x)+f(x)g′(x)
h′(x)=(2x)(x3−x)+(x2+1)(3x2−1)
h′(x)=(2x4−2x2)+(3x4−x2+3x2−1)
h′(x)=2x4−2x2+3x4+2x2−1
h′(x)=5x4−1
- (自检:先展开 h(x):h(x)=x5−x3+x3−x=x5−x。那么 h′(x)=5x4−1。法则有效!)
商法则
该法则用于处理一个函数除以另一个函数形成的函数,例如 h(x)=g(x)f(x)。类似于乘积法则,它也有一个特定的结构。
- 法则: 如果 h(x)=g(x)f(x)(其中 g(x)=0),那么 h′(x)=[g(x)]2f′(x)g(x)−f(x)g′(x)。
- 莱布尼茨表示法: dxd(g(x)f(x))=[g(x)]2dxdfg(x)−f(x)dxdg
- 说明: 一个常见的助记口诀是“下乘上导,减去上乘下导,分母再平方,得结果”,其中“下”表示 g(x),“上”表示 f(x),“导”表示“的导数”。
- 例子: 设 h(x)=x−1x2。
- 设 f(x)=x2(上),因此 f′(x)=2x。
- 设 g(x)=x−1(下),因此 g′(x)=1。
- 应用商法则:
h′(x)=[g(x)]2f′(x)g(x)−f(x)g′(x)
h′(x)=(x−1)2(2x)(x−1)−(x2)(1)
h′(x)=(x−1)22x2−2x−x2
h′(x)=(x−1)2x2−2x
这些法则,特别是幂法则、常数倍法则以及和/差法则,是求导成本函数(如均方误差)中常见的多项式项的基础。乘积法则和商法则在处理更复杂的模型结构或激活函数时变得必要。掌握这些法则使我们能够解析地计算优化所需的导数,而无需每次都求助于极限定义。稍后,我们将看到链法则如何与这些法则结合,以处理更复杂的嵌套函数,这些函数是神经网络的特点。