高等數學——複雜函數的求導方法

本文始發於個人公衆號:TechFlow,原創不易,求個關注


上一篇文章我們複習了函數求導的定義和一些常見函數的導數,今天這篇文章我們回顧一下複雜函數的求導方法。先強調一下,今天的文章很重要,想要看懂機器學習各種公式推導,想要能夠自己推一推各種公式,函數求導是基礎中的基礎,在算法這個領域,它比積分要重要得多。

我們先來看第一種情況:多個函數進行四則運算的導數。


函數四則運算求導法則


我們假設u=u(x)u=u(x)v=v(x)v=v(x)都在x點有導數,那麼它們進行加減乘除四則運算之後的結果的導數有如下性質:

[u(x)±v(x)]=u(x)±v(x)[u(x)v(x)]=u(x)v(x)+u(x)v(x)[u(x)v(x)]=u(x)v(x)u(x)v(x)v2(x)(v(x)0) \begin{aligned} \left[u(x) \pm v(x)\right]'&= u'(x) \pm v'(x) \\ \left[u(x)v(x)\right]' &= u'(x)v(x) + u(x)v'(x) \\ \left[\frac{u(x)}{v(x)}\right] &= \frac{u'(x)v(x)-u(x)v'(x)}{v^2(x)} (v(x) \neq 0) \end{aligned}

我們來看一下證明過程,熟悉證明過程並不是炫技,除了能加深對公式的理解之外,更重要的是防止遺忘。即使以後真的不記得公式的細節了,也可以臨時推導一下,這是學算法和數學很重要的技巧。

我們先來看第一個,第一個很容易證明,我們直接套一下導數的公式即可:

[u(x)±v(x)]=limΔx0[u(x+Δx)±v(x+Δx)][u(x)±v(x)]Δx=limΔx0u(x+Δx)Δx±limΔx0v(x+Δx)Δx=u(x)±v(x) \begin{aligned} \left[u(x) \pm v(x) \right]' &= \lim_{\Delta x \to 0} \frac{\left[u(x+\Delta x) \pm v(x + \Delta x) \right] - \left[u(x) \pm v(x) \right] }{\Delta x} \\ &= \lim_{\Delta x \to 0}\frac{u(x+\Delta x)}{\Delta x} \pm \lim_{\Delta x \to 0} \frac{v(x+\Delta x)}{\Delta x} \\ &= u'(x) \pm v'(x) \end{aligned}

第二個式子同樣套用公式:

[u(x)v(x)]=limΔx0u(x+Δx)v(x+Δx)u(x)v(x)Δx=limΔx0u(x+Δx)v(x+Δx)u(x)v(x+Δx)+u(x)v(x+Δx)u(x)v(x)Δx=limΔx0(u(x+Δx)u(x))v(x+Δx)+u(x)(v(x+Δx)v(x))Δx=limΔx0v(x+Δx)u(x+Δx)u(x)Δx+limΔx0u(x)v(x+Δx)v(x)Δx=v(x+Δx)u(x)+u(x)v(x)=u(x)v(x)+u(x)v(x) \begin{aligned} \left[u(x)v(x)\right]' &= \lim_{\Delta x \to 0} \frac{u(x+\Delta x) v(x + \Delta x) - u(x) v(x)}{\Delta x} \\ &= \lim_{\Delta x \to 0} \frac{u(x+\Delta x) v(x + \Delta x) - u(x)v(x+ \Delta x) + u(x)v(x+\Delta x) - u(x) v(x)}{\Delta x} \\ &= \lim_{\Delta x \to 0} \frac{(u(x+\Delta x) - u(x))v(x+\Delta x) + u(x)(v(x+\Delta x) - v(x))}{\Delta x} \\ &= \lim_{\Delta x \to 0}v(x+\Delta x) \frac{u(x+\Delta x) - u(x)}{\Delta x} + \lim_{\Delta x \to 0}u(x)\frac{v(x+\Delta x) - v(x)}{\Delta x}\\ &=v(x+\Delta x)u'(x) + u(x)v'(x) \\ &=u(x)v'(x) + u'(x)v(x) \end{aligned}

最後是第三個式子的推導,也並不複雜:

[u(x)v(x)]=limΔx0u(x+Δx)v(x+Δx)u(x)v(x)Δx=limΔx0v(x)u(x+Δx)v(x+Δx)u(x)v(x+Δx)v(x)Δx=limΔx0=limΔx0v(x)u(x+Δx)v(x)u(x)+v(x)u(x)v(x+Δx)u(x)v(x+Δx)v(x)Δx=limΔx0u(x+Δx)u(x)Δxv(x)v(x+Δx)v(x)Δxu(x)v(x+Δx)v(x)=u(x)v(x)u(x)v(x)v2(x) \displaystyle \begin{aligned} \left[\frac{u(x)}{v(x)}\right] &= \lim_{\Delta x \to 0}\frac{\frac{u(x+\Delta x)}{v(x+\Delta x)} - \frac{u(x)}{v(x)}}{\Delta x} \\ &= \lim_{\Delta x \to 0}\frac{v(x)u(x+\Delta x)-v(x+\Delta x)u(x)}{v(x+\Delta x)v(x)\Delta x} \\ &=\lim_{\Delta x \to 0} \\ &= \lim_{\Delta x \to 0}\frac{v(x)u(x+\Delta x)-v(x)u(x)+v(x)u(x)-v(x+\Delta x)u(x)}{v(x+\Delta x)v(x)\Delta x} \\ &=\lim_{\Delta x \to 0} \frac{\frac{u(x+\Delta x)-u(x)}{\Delta x}v(x)-\frac{v(x+\Delta x)-v(x)}{\Delta x}u(x)}{v(x+\Delta x)v(x)}\\ &=\frac{u'(x)v(x)-u(x)v'(x)}{v^2(x)} \end{aligned}


反函數求導法則


推導完了四則運算的求導法則,我們再來看一下反函數的求導法則。

我們陷在了看結論,如果函數x=f(y)x=f(y)在區間IyI_y內單調、可導並且f(x)!=0f'(x)!=0,那麼它的反函數y=f1(x)y=f^{-1}(x)在區間Ix={xx=f(y),yIy}I_x=\{x|x=f(y), y\in I_y\}內也可導,那麼:

[f1(x)]=1f(y)\left[f^{-1}(x)\right]'=\frac{1}{f'(y)}

關於這個結論的證明很簡單,因爲x=f(y)x=f(y)在區間內單調、可導,所以它的反函數y=f1(x)y=f^{-1}(x)存在,並且也單調且連續。

所以:

Δy=f1(x+Δx)f1x0ΔyΔx=1ΔxΔy=1f(y) \begin{aligned} \Delta y=f^{-1}(x+\Delta x)-f^{-1}x \neq 0 \\ \frac{\Delta y}{\Delta x} = \frac{1}{\frac{\Delta x}{\Delta y}}=\frac{1}{f'(y)} \end{aligned}

由於y=f1(x)y=f^{-1}(x)連續,limΔx0Δy=0\displaystyle\lim_{\Delta x \to 0}\Delta y=0,所以上式成立。

我們來看一個例子:x=siny,y[π2,π2]x=\sin y, y\in \left[-\frac{\pi}{2}, \frac{\pi}{2} \right],則y=arcsinxy=\arcsin x是它的反函數,根據上面的公式,我們可以得到:

(arcsinx)=1(siny)=1cosy(\arcsin x)'=\frac{1}{(\sin y)'}=\frac{1}{\cos y}

由於cosy=1sin2y=1x2\cos y= \sqrt{1-\sin^2 y} = \sqrt{1-x^2},代入上式可以得到:

(arcsinx)=11x2(\arcsin x)'=\frac{1}{\sqrt{1-x^2}}

利用同樣的方法,我們還可以求出其他反三角函數的導數,由於這些並不太常用,所以我們就不多介紹了,感興趣的同學可以自己利用導數的定義推導一下,我想應該也不難。


複合函數求導


這是最後一個法則,也是本篇文章的重點,因爲經常用到。我們現在已經搞定了一些常見的函數,還搞定了常見函數加減乘除之後求導的結果,但是對於一些看起來比較複雜的函數,我們並不能一下寫出它們的導數。

比如說:sin(x2+3x)\sin (x^2+3x),比如ln(3x1)\ln (3x -1)等等,這些函數基本上都可以確定是連續並且可導的,但是我們一下子並不能寫出它們的導數,而且要通過導數的定義推導也非常麻煩,對於這些導數就需要用到今天的重頭戲,也就是複合函數的求導法則了。

對於複合函數而言,擁有如下法則:如果函數u=g(x)u=g(x)在點x處可導,並且y=f(u)y=f(u)在點u=g(x)u=g(x)處也可導,那麼複合函數y=f[g(x)]y=f[g(x)]在x處可導,它的導數爲:

dydx=f(u)g(x)=dydududx\frac{dy}{dx}=f'(u)\cdot g'(x)=\frac{dy}{du}\cdot \frac{du}{dx}

如果複合函數的數量更多也是一樣的,我們按照順序依次相乘即可。由於公式的形式像是一根鏈條一樣依次所以,複合函數求導法則也叫鏈式求導法則。在舉例之前,我們先來證明一下。

由於y=f(u)y=f(u)在點u處可導,因此

limΔu0ΔyΔu=f(u)\displaystyle\lim_{\Delta u \to 0}\frac{\Delta y}{\Delta u} = f'(u)

因爲f(u)f'(u)存在,所以我們將它變形爲:

ΔyΔu=f(u)+a\frac{\Delta y}{\Delta u} = f'(u) + a

其中a是Δu0\Delta u \to 0時的無窮小,我們對兩邊同時乘上Δu\Delta u,可以得到:

Δy=f(u)Δu+aΔu\Delta y = f'(u)\Delta u + a\cdot \Delta u

上式當中Δu\Delta u和a都是無窮小,所以當Δu0\Delta u \to 0時,Δy=0\Delta y=0,我們對上式兩邊同時除以Δx\Delta x,得:

ΔyΔx=f(u)ΔuΔx+aΔuΔx\displaystyle\frac{\Delta y}{\Delta x}=f'(u)\frac{\Delta u}{\Delta x} + a\cdot\frac{\Delta u}{\Delta x}

於是:

limΔx0ΔyΔx=limΔx0[f(u)ΔuΔx+aΔuΔx]\displaystyle \lim_{\Delta x \to 0}\frac{\Delta y}{\Delta x}=\lim_{\Delta x \to 0}[f'(u)\frac{\Delta u}{\Delta x}+a\frac{\Delta u}{\Delta x}]

又根據u=g(x)u=g(x)在點x處可導,所以有:

limΔx0ΔuΔx=g(x)\displaystyle \lim_{\Delta x \to 0}\frac{\Delta u}{\Delta x}=g'(x)

我們代入,就可以得到:

limΔx0ΔyΔx=f(u)ΔuΔx=f(u)g(x)\displaystyle \lim_{\Delta x \to 0}\frac{\Delta y}{\Delta x}=f'(u)\cdot \frac{\Delta u}{\Delta x}=f'(u)\cdot g'(x)

其實我們都知道相比於公式的證明,公式的運用更加重要,下面我們就來看兩個例子,來鞏固一下這個鏈式求導法則:

y=lnsin3xy=\ln \sin 3x,求dydx\frac{dy}{dx}

我們令u=3x,g=sinuu=3x, g=\sin u

所以:

dydx=dydgdgdududx=1gcosu3=3cos3xsin3x=3cot3x \begin{aligned} \frac{dy}{dx}&=\frac{dy}{dg}\cdot \frac{dg}{du}\cdot\frac{du}{dx}\\ &=\frac{1}{g}\cdot \cos u\cdot 3\\ &=3\frac{\cos 3x}{\sin 3x} \\ &=3 \cot 3x \end{aligned}

還記得我們之前推導線性迴歸時候用到的均方差的公式嗎:

f(θ)=1m(θXY)2f(\theta) = \frac{1}{m}(\theta X-Y)^2

我們來試着學以致用,求一下f(θ)f(\theta)的導數,在機器學習當中,X和Y都是樣本都是已知的參數,要求的是θ\theta,所以我們對θ\theta求導:

f(θ)=1m2(θXY)X=2mXT(θXY) \begin{aligned} f'(\theta) &= \frac{1}{m}\cdot 2 \cdot (\theta X - Y)\cdot X \\ &=\frac{2}{m}X^T(\theta X - Y) \end{aligned}

這個結果其實就是之前我們說的梯度,梯度本來就是由導數計算得到的,所以理解了鏈式求導的公式,可以再回過頭看看之前線性迴歸和梯度推導的公式,相信會有更深刻的體會。

今天的文章篇幅有些長,但是除去證明之後,剩下的內容並不多,重要的是它的應用範圍很廣,所以希望大家都能學會。

如果覺得有所收穫,請順手掃碼點個關注吧,你們的舉手之勞對我來說很重要。

發佈了51 篇原創文章 · 獲贊 0 · 訪問量 3461
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章