上一篇文章我們複習了函數求導的定義和一些常見函數的導數,今天這篇文章我們回顧一下複雜函數的求導方法。先強調一下,今天的文章很重要,想要看懂機器學習各種公式推導,想要能夠自己推一推各種公式,函數求導是基礎中的基礎,在算法這個領域,它比積分要重要得多。
我們先來看第一種情況:多個函數進行四則運算的導數。
我們假設 u = u(x) 和 v = v(x) 都在x點有導數,那麼它們進行加減乘除四則運算之後的結果的導數有如下性質:
我們來看一下證明過程,熟悉證明過程并不是炫技,除了能加深對公式的理解之外,更重要的是防止遺忘。即使以後真的不記得公式的細節了,也可以臨時推導一下,這是學算法和數學很重要的技巧。
我們先來看第一個,第一個很容易證明,我們直接套一下導數的公式即可:
第二個式子同樣套用公式:
最後是第三個式子的推導,也并不複雜:
推導完了四則運算的求導法則,我們再來看一下反函數的求導法則。
我們陷在了看結論,如果函數 x = f(y) 在區間 Iy 内單調、可導并且 f'(x) != 0,那麼它的反函數
在區間 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都是樣本都是已知的參數,要求的是 θ ,所以我們對 θ 求導:
這個結果其實就是之前我們說的梯度,梯度本來就是由導數計算得到的,所以理解了鍊式求導的公式,可以再回過頭看看之前線性回歸和梯度推導的公式,相信會有更深刻的體會。
今天的文章篇幅有些長,但是除去證明之後,剩下的内容并不多,重要的是它的應用範圍很廣,所以希望大家都能學會。
如果覺得有所收獲,請順手點個關注或者轉發吧,你們的舉手之勞對我來說很重要。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!