微分的链式法则

在机器学习中,尤其是在深度学习和神经网络中,链式法则用于计算复合函数的导数,这在反向传播算法中尤为关键。具体来说,当训练一个深度神经网络时,需要计算损失函数相对于每个权重的梯度。由于神经网络的每一层都是复合的,链式法则能够从输出层逐步回到输入层,计算这些梯度。

先来看一下微分链式法则的数学公式:

$$y=f(g(x))$$

$$\frac{dy}{dx}=\frac{df}{dx}=\frac{df}{dg} \cdot \frac{dg}{dx}=f'(g(x)) \cdot g'(x)$$

理解起来很简单,就像剥洋葱一样,一层一层拨开里面的心。链式法则一般用于复合函数的求导,先对外层函数求导,再乘上内层函数的导数。之前一直强调导数是函数的变动规律,那么链式法则就是变动的传导法则。例如:

$$\begin{aligned} y &= sin(x^2) \\ h &= x^2 \\ y &= sin(h) \\ \end{aligned}$$

对\(y\)的求导的步骤如下:

$$\begin{aligned} \frac{dy}{dh} &= cos(h) \quad dy = cos(h)dh \\ dh &= dx^2 = 2xdx \\ dy &= cos(x^2) \cdot 2xdx \Rightarrow \frac{dy}{dx} = cos(x^2) \cdot 2x\end{aligned}$$

解释一下,\(x\)的变动会引起\(h\)的变动,进而引起\(y\)的变动。链式法则就是变动的传导法则。

那么链式法则有什么用处呢?常见的作用有两个,一个是帮助推导一些常见初等函数的导数,具体见下表。

表1-1 常见初等函数的导数

函数类型导数推导
常函数若\(f(x) = c\),则\(f'(x) = 0\)
幂函数若\((f(x) = x^n\),则\(f'(x) = n \cdot x^{n-1}\)
三角函数若\((f(x) = sin(x)\),则\(f'(x) = cos(x)\)
若\((f(x) = cos(x)\),则\(f'(x) = -sin(x)\)
指数函数若\((f(x) = a^x\),则\(f'(x) = a^x \cdot \ln a\)
若\(f(x) = e^x\),则\(f'(x) = e^x\)
对数函数若\(f(x) = log_{a} x\),则\(f'(x) = \frac{1}{x\ln a}\)
若\(f(x) = \ln x\),则\(f'(x) = \frac{1}{x}\)
几种常见初等函数导数

第二个常见用处是可以对隐函数进行求导。先来解释什么叫做隐函数:形如\(F(x,y)\)的函数叫隐函数,将自变量和因变量放在同一个式子中,隐藏了二者之间的函数关系,因此称之为隐函数。

那么什么叫显函数呢?对应隐函数概念,显函数可以理解为自变量和因变量的函数关系明显的函数,形如y = f(x)。

对比来看是不是很清晰。最后,将隐函数变形成显函数的过程称为隐函数的显示化。圆的方程就是典型的隐函数,已知圆的方程为\(x^2+y^2 = 25\),点M的坐标为(4,3),如图一所示。

图片[1]-微分的链式法则-点头深度学习网站

图一 求圆在(4,3)处的导数

求M点的切线,则\(y = \pm \sqrt{25-x^2}\),因为\(y>0\),所以\(y = \sqrt{25-x^2}\)。将圆的方程转化到\(y = \sqrt{25-x^2}\)的形式即称为隐函数的显(示)化,然后针对这个函数求导,再代入\(x=4,y=3\)求出结果即可。

实际上,可以不进行隐函数的显示化,使用链式法则来直接求导。过程如下所示:

$$\begin{aligned}&y = f(x) \\ & x^2+y^2 = 25 \Rightarrow x^2 +(f(x))^2 = 25 \\ &2x+2f(x)\frac{dy}{dx}=0 \\& \frac{dy}{dx} = -\frac{x}{y}\end{aligned}$$

最后再代入\(x=4,y=3\)求出结果即可。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容