3種類型的梯度下降算法總結


參考資料:梯度下降優化算法總結(必看!!!!!!!)

                 梯度下降法(Gradient Descent)推導和示例(必看!!!)

梯度下降法 (Gradient Descent Algorithm,GD) 是為目標函數J(θ),如代價函數(cost function), 求解全局最小值(Global Minimum)的一種迭代算法。(其可由泰勒一階展開式推出!)

為什么使用梯度下降法

      我們使用梯度下降法最小化目標函數 J( θ )。在使用梯度下降法時,首先初始化參數值,然后一直改變這些值,直到得到全局最小值。其中,我們計算在每次迭代時計算代價函數的導數,然后使用如下公式同時更新參數值:
a5b40dac8c48a93c6e0b9c0725bf8c81fe10ba8d

α表示學習速率(learning rate)。

梯度下降法的工作原理

下面的偽代碼能夠解釋其詳細原理:
1.  初始化參數值
2.  迭代更新這些參數使目標函數J(θ)不斷變小。 

梯度下降法的類型

基於如何使用數據計算代價函數的導數,梯度下降法可以被定義為不同的形式(various variants)。確切地說,根據使用數據量的大小(the amount of data),時間復雜度(time complexity)和算法的准確率(accuracy of the algorithm),梯度下降法可分為:

1.       批量梯度下降法Batch Gradient Descent, BGD);

2.       隨機梯度下降法(Stochastic Gradient Descent, SGD);

3.       小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)。

批量梯度下降法原理

      這是梯度下降法的基本類型,這種方法使用整個數據集( the complete dataset)去計算代價函數的梯度。每次使用全部數據計算梯度去更新參數,批量梯度下降法會很慢,並且很難處理不能載入內存( don’t fit in memory)的數據集。在隨機初始化參數后,按如下方式計算代價函數的梯度:
e73e9a24fa64e4fb81246d312e0a1e6af5742cb9

其中,m是訓練樣本(training examples)的數量。

Note:

     1. 如果訓練集有3億條數據,你需要從硬盤讀取全部數據到內存中;

     2. 每次一次計算完求和后,就進行參數更新;

     3.  然后重復上面每一步;

     4. 這意味着需要較長的時間才能收斂;

     5. 特別是因為磁盤輸入/輸出(disk I/O)是系統典型瓶頸,所以這種方法會不可避免地需要大量的讀取。

2cce4e74db8b0834f57cbaab8abe4ab7249305f3

上圖是每次迭代后的等高線圖,每個不同顏色的線表示代價函數不同的值。運用梯度下降會快速收斂到圓心,即唯一的一個全局最小值。批量梯度下降法不適合大數據集。

隨機梯度下降法原理

   批量梯度下降法被證明是一個較慢的算法,所以,我們可以選擇隨機梯度下降法達到更快的計算。隨機梯度下降法的第一步是隨機化整個數據集。在每次迭代僅選擇一個訓練樣本去計算代價函數的梯度,然后更新參數。即使是大規模數據集,隨機梯度下降法也會很快收斂。隨機梯度下降法得到結果的准確性可能不會是最好的,但是計算結果的速度很快。在隨機化初始參數之后,使用如下方法計算代價函數的梯度:
bac171a0ee9ae8ea7e1241d0f5c49cae19f35704

這里m表示訓練樣本的數量。

如下為隨機梯度下降法的偽碼:

       1. 進入內循環(inner loop);

       2. 第一步:挑選第一個訓練樣本並更新參數,然后使用第二個實例;

       3. 第二步:選第二個訓練樣本,繼續更新參數;

       4. 然后進行第三步…直到第n步;

       5. 直到達到全局最小值

如下圖所示,隨機梯度下降法不像批量梯度下降法那樣收斂,而是游走到接近全局最小值的區域終止。

 

179a3f7ba6d43967171a3c042712f193a9375df5

小批量梯度下降法原理

 小批量梯度下降法是最廣泛使用的一種算法,該算法每次使用m個訓練樣本(稱之為一批)進行訓練,能夠更快得出准確的答案。小批量梯度下降法不是使用完整數據集,在每次迭代中僅使用m個訓練樣本去計算代價函數的梯度。一般小批量梯度下降法所選取的樣本數量在50到256個之間,視具體應用而定。

1.這種方法減少了參數更新時的變化,能夠更加穩定地收斂。

2.同時,也能利用高度優化的矩陣,進行高效的梯度計算。

隨機初始化參數后,按如下偽碼計算代價函數的梯度:
6ab4dc834ad914cd762f4c6b71ad84a6a2072681
這里 b表示一批訓練樣本的個數, m是訓練樣本的總數。
 

Notes:

1. 實現該算法時,同時更新參數。

c944184d2a723235b3d10c20e2d47eb04cc18079

2. 學習速率α(也稱之為步長)如果α過大,算法可能不會收斂;如果α比較小,就會很容易收斂。

993031773399242fc846b90fbe097ef0b68dd40e

3. 檢查梯度下降法的工作過程。畫出迭代次數與每次迭代后代價函數值的關系圖,這能夠幫助你了解梯度下降法是否取得了好的效果。每次迭代后J(θ)應該降低,多次迭代后應該趨於收斂。

8ea2d3d604748b11018d054efcfdbf455116b416

93a9bbaa880631a57a7b439941afc12fe70fa0b5

4. 不同的學習速率在梯度下降法中的效果

d8ec456ab02fb7c20059e1dff1346abc04030272

總結

本文詳細介紹了不同類型的梯度下降法。這些算法已經被廣泛應用於神經網絡。下面的圖詳細展示了3種梯度下降法的比較。

b9270bdb89b892bae231e61ee2cb29634cfedc0a

  • 簡單來說 批梯度下降會獲得全局最優解,缺點是在更新每個參數的時候需要遍歷所有的數據,計算量會很大,並且會有很多的冗余計算,導致的結果是當數據量大的時候,每個參數的更新都會很慢。
  • 隨機梯度下降是以高方差頻繁更新,優點是使得sgd會跳到新的和潛在更好的局部最優解,缺點是使得收斂到局部最優解的過程更加的復雜。
  • 小批量梯度下降結合了sgd和batch gd的優點,每次更新的時候使用n個樣本。減少了參數更新的次數,可以達到更加穩定收斂結果,一般在深度學習當中我們采用這種方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM