在上一篇文章中,我们回顾了函数求导的定义以及一些常用函数的导数。 在今天的文章中,我们回顾一下复杂函数的推导方法。 首先强调一下,今天的文章非常重要。 想要了解机器学习中各种公式的推导,想要能够自己推导各种公式,函数推导是基础中的基础。 在算法领域,它比积分更重要。 重要得多。
我们先来看第一种情况:多个函数进行四次算术运算的导数。
我们假设u = u(x)和v = v(x)在x点都有导数,那么它们的加减乘除后结果的导数有如下性质:
我们来看看证明过程。 熟悉证明过程并不是技巧的展示。 除了加深对公式的理解,更重要的是防止遗忘。 就算以后真的不记得公式的细节,也可以暂时推导一下。 这是学习算法和数学的重要技能。
我们先看第一个。 第一个很容易证明。 我们直接套用导数的公式:
第二个公式也套用公式:
最后是第三个公式的推导,并不复杂:
反函数推导规则
推导为 说完了四种算术运算的推导规则,我们来看一下反函数的推导规则。
我们卡在结论里了,如果函数x = f(y)单调可导且f'(x) != 0在区间Iy内,则其反函数
它在区间 Ix = {x | 中也是可导的 x = f(x), y ∈ Iy},则:
这个结论的证明很简单,因为x = f(y)在区间是单调可导的,所以它的反函数存在 , 也是单调连续的。
所以:
因为反函数是连续的
所以上式成立。
我们来看一个例子:
则
是它的反函数,根据上面的公式,我们可以得到:
由于
代入上式可得:
用同样的方法,我们也可以求出其他反三角函数的导数。 由于这些不是很常用,我们就不多介绍了,有兴趣的同学可以用导数的定义自己推导一下,我觉得应该不难。
复合函数推导
这是最后一条规则,也是本文的重点,因为经常用到。 我们现在已经解决了一些常用函数以及常用函数加减乘除后的求导结果,但是对于一些看起来比较复杂的函数,我们不能一下子写出它们的导数。
比如:sin(x^2 3x),比如ln(3x 1)等,这些函数基本上可以确定是连续可导的,但是我们不能一下子全部写出来,并且 通过导数的定义来推导非常麻烦。 对于这些导数,我们需要用到今天的重头戏,就是复合函数的求导法则。
对于复合函数,存在以下规则:如果函数 u = g(x) 在点 x 可导,并且 y = f(u) 在点 u = g(x) 也可导, 那么复合函数y = f[g(x)]可以在x处求导,它的导数是:
如果复合函数的个数多了也是一样的,我们按顺序相乘即可 . 由于公式的形式是链式的,所以复合函数推导法则也称为链式推导法则。 在举例之前,我们先来证明一下。
由于y = f(u)在u点可导,
因为f'(u)存在,我们将其转化为:
其中a是 Δu趋于0时的无穷小,两边同时乘以Δu,可得:
上式中,Δu和a都是无穷小,所以当Δu趋于0时,Δy = 0,我们 将上式两边同时除以
Δx,得:
所以:
根据点u = g(x) x导,所以有:
我们可以代入,我们可以得到:
其实我们都知道公式的应用比公式的证明更重要 公式,我们来看两个例子,巩固这个链式推导规则: y = lnsin3x, 求y’
我们令u = 3x, g = sinu
所以:
再举个例子,你还记得我们推导线性回归时用到的均方误差公式吗:
我们试着学以致用,求f(θ)的导数 ,在机器学习中,X和Y都是样本和已知p 参数,而θ是需要的,所以我们对θ求导:
这个结果其实就是我们之前说的梯度,而梯度本来就是通过导数计算得到的,所以在了解了链式求导的公式后, 大家可以回头看看之前的线性回归和梯度求导的公式,相信会有更深刻的理解。
今天的文章有点长,去掉证明后,所剩无几。 重要的是它的应用范围很广,希望大家都能学会。
如果你觉得自己有所收获,请关注我或转发,你的一点点努力对我来说很重要。