機器學習 最速下降法和牛頓下降法

2021-07-11 14:37:34 字數 1552 閱讀 9469

入門教材常用二分法來求解實數求根的問題。我們現在來用普通迭代法、下降法來求解實數開立方根的問題。

設當前實數為n,求根次數為k,根為s,那麼有s^k=n。所得偏差函式為f(s)=s^k-n。顯然當代價函式f(s)->0時,我們便求出了n的k次根。現在我們開立方根,那麼k=3,代價函式為f(s)=s^3-n。

普通迭代法:

普通迭代法就是前面的部落格提到的最簡感知器學習方法,公式為 s(i+1)=s(i)-wf[s(i)]

最速下降法:

最速下降法使用逐漸迭代的方法,從初值s(0)開始更新到s(i),直到s(i)-s(i-1)這個迭代能最小化代價函式。證明如下:

在s=s(i)處泰勒展開代價函式,有f[s(i+1)]=f[s(i)] + f』[s(i)][s(i+1)-s(i)] + r(s).略去餘項,有f[s(i+1)]= f[s(i)] + f』[s(i)]= f[s(i)] - w ^2 < f[s(i)]

現在我們開立方根,有f(s)=s^3-n,但是該函式沒有極值。因此我們改寫代價函式g(s)=[s^3-n]^2,此時代價函式有最小值0,當代價函式最小時,f(s)=0亦成立。每次迭代的公式是:s(i+1)=s(i) – 2w[s(i)^3-n][3s(i)^2].當然我這裡只是使用了乙個並不很合適的、勉強能做出結果的代價函式形式,因為這個函式形式導致迭代公式中最高冪次項的次數有5,會導致數值膨脹,學習因子必須很小。

牛頓下降法:

此時我們的問題等價於求解函式f(s)=s^k-n=0,那麼在s=s(i)處一階泰勒展開代價函式,有f[s(i+1)]=f[s(i)] + f』[s(i)][s(i+1)-s(i)] + r(s).令f[s(i+1)]=0有s(i+1)-s(i) = - f[s(i)]/ f』[s(i)].此時f[s(i+1)]不一定為0,差值由r(s)補齊,但是f[s(i+1)]比原來更加接近0.

如果要求最小化代價函式f,那麼f不一定取0值,求解的是代價函式f取得極值的情況。當代價函式為極值,此時梯度是0,可能最大也可能最小,理想情況下一般都能達到我們想要的結果。在s=s(i)處二階泰勒展開代價函式,有f[s(i+1)]=f[s(i)] + f』[s(i)][s(i+1)-s(i)] +1/2*f』』[s(i)][s(i+1)-s(i)]^2 + r(s),略去餘項,對s(i+1)求導有f』[s(i+1)] =f』[s(i)]+f』』[s(i)][s(i+1)-s(i)]=0.於是s(i+1)=s(i) - f』[s(i)] / 。這裡我們認為s(i)是常數,s(i+1)-s(i)並不能看做微元,因為兩者的差值可能很大。

現在我們來求解f(s)=s^3-n。由於我們需要求解代價函式為0而不是最小化,因此使用第乙個公式,有s(i+1)=s(i)- f[s(i)]/ f』[s(i)] = s(i) – [s(i)^3-n]/[3s(i)^2]。可以看出牛頓下降法不需要設定學習因子,會自動以很快的速度收斂到結果。

設s(0)=1,n=9999,t=0.0000001,最速下降法和普通迭代法有w=t。普通迭代法用了83492次迭代,最速下降法用了200次迭代,牛頓下降法用了18次迭代獲得結果。如果最速下降法使用了合適的代價函式,迭代速度也會很快,但是過分倚重經驗;牛頓下降法則不僅具有普適性,而且速度最快。

iterativedescend.py

牛頓下降法和梯度下降法 最速下降法 的速度的比較

牛頓下降法和梯度下降法在機器學習和自適應濾波中的都很重要,本質上是為了尋找極值點的位置。但是收斂的速度不同。本文中就兩種方法來 一下,哪種收斂方法速度快 牛頓下降法的遞推公式 xn 1 x n f xn f xn 梯度下降演算法的遞推公式 xn 1 x n f x n 下圖是兩種方法的圖示表示,紅色...

牛頓下降法和梯度下降法 最速下降法 的速度的比較

牛頓下降法和梯度下降法在機器學習和自適應濾波中的都很重要,本質上是為了尋找極值點的位置。但是收斂的速度不同。本文中就兩種方法來 一下,哪種收斂方法速度快 牛頓下降法的遞推公式 x n 1 xn f xn f xn 梯度下降演算法的遞推公式 x n 1 xn f xn 下圖是兩種方法的圖示表示,紅色為...

擬牛頓法與最速下降法

擬牛頓法是求解非線性優化問題最有效的方法之一。dfp bfgs l bfgs演算法都是重要的擬牛頓法。對f x 在xn附近做一階泰勒展開 f x f xn f xn x xn 假設xn 1是該方程的根 那麼就得到 xn 1 xn f xn f xn 通過不斷迭代從而得到真正的函式的根x 即是對一階導...