梯度降級算法簡介
之前如果需要求出最佳的線性回歸模型,就需要求出代價函數的最小值。在上一篇文章中,求解的問題比較簡單,只有一個簡單的參數。梯度降級算法就可以用來求出代價函數最小值。
梯度降級算法的在維基的定義:
梯度下降法是一個一階最優化算法,通常也稱為最速下降法。 要使用梯度下降法找到一個函數的局部極小值,必須向函數上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行迭代搜索
首先,復習一下之前前面的講過求解最佳的代價函數的過程
那么如何通過梯度降級算法解決這個問題呢?首先對θ0和θ1進行初始化,初始化的值是什么並不重要,但通常的選擇是將它們都初始化為0。 我們在梯度下降算法中要做的,就是不停地一點點地改變θ0和θ1,試圖通過這種改變使得J(θ0, θ1)變小,直到我們找到J的最小值,這個最小值就是一個局部最優解。
求解的過程可能如下:
最上面的點是起始點,就加上如同一個人站在起始點的位置,最后需要回到最低點的位置,就需要一步步地向下走
梯度降級算法定義
梯度降級算法的定義如下:
:=
表示的就是賦值語句- a,學習速率,表示的是在每一步的步長。在上面的例子中,稼穡你是一個人需要從山頂下山,那么a表示的就是你每一步的長度
- 后面的數學公式就是一個數學公式,是一個偏導數。
需要注意一點的是,需要同時更新所有的theta參數,包括theta-0,theta-1。這個其實在偏導數里面也是一個最基本的常識了,這里不作過多的講解。如果你不了解,那只要記住就可以了。
下面的這個例子就是錯誤的,不是同時更新的。
為了能夠形象地說明梯度講解算法的用法,那么我們簡化梯度講解算法,假設僅僅只存在一個參數theta-1
。
通過在第三節中講述的,J(θ1)的圖形就是一個曲線。利用階梯降級函數的定義
那么最后的求解過程為:
這樣就找到了最優解,和第三節中得到的最優解也是一樣的。
需要注意的問題是,學習速率a
的設置既不能太大也不能太小,否則就會出現下面的問題。
如果a
太小,那么尋找最優解的時間過長;如果a
太大,那么有可能無法找到最優解。
梯度降級算法在線性回歸中的應用
下面還是簡單的給出梯度降級算法和線性回歸的算法定義
為了方便對算法的求解進行描述,我們還是假設僅僅只是存在θ1和θ2
將右邊定義的J(θ)導入到左邊的梯度降級算法中,得到如下的結果:
但是需要注意的是,在僅僅只是存在θ1和θ2的情況下,代價函數的圖形為:
是一個凹圖像,這個之前說的是不一致的。之前的那個圖像僅僅是為了表述方面而作的圖。
最后將3D圖轉換為輪廓圖,得到最后的最小的代價函數如下:
以上就是梯度降級算法在線性回歸中的應用
批梯度下降算法
批梯度下降算法的定義就是,在每一步的梯度下降過程中,使用所有的訓練樣本。 當然還有一些算法僅僅只是使用部分的訓練樣本。目前討論的都是使用所有的訓練樣本。
為了能到遠方,腳下的每一步都不能少