天天看點

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

更多深度文章,請關注:https://yq.aliyun.com/cloud

hackerearth,一家來自印度的創業公司,旨在幫助開發者通過線上程式設計競賽獲得工作機會。和github類似,它提供一個多種程式設計語言的代碼交流平台。而hackerearth blog 上多刊登一些跟大資料、人工智能、機器學習、算法及程式設計競賽相關的博文。

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

      梯度下降法 (gradient descent algorithm,gd) 是為目标函數j(θ),如代價函數(cost function), 求解全局最小值(global minimum)的一種疊代算法。本文會詳細讨論按照準确性和耗費時間(accuracy and time consuming factor)将梯度下降法進行分類。這個算法在機器學習中被廣泛用來最小化目标函數,如下圖所示。

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結
純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

α表示學習速率(learning

rate)。

在本文中,考慮使用<b>線性回歸</b>(linear

regression)作為算法執行個體,當然梯度下降法也可以應用到其他算法,如邏輯斯蒂回歸(logistic

regression)和

神經網絡(neural

networks)。線上性回歸中,我們使用如下拟合函數(hypothesis

function):

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

其中,

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

是參數,

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

<b>代價函數</b>(普通的最小平方差,ordinary

least square error)如下所示:

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

代價函數的梯度(gradient of cost function):

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

參數與代價函數關系如下圖所示:

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

下面的僞代碼能夠解釋其詳細原理:

1. 初始化參數值

2. 疊代更新這些參數使目标函數j(θ)不斷變小。

基于如何使用資料計算代價函數的導數,梯度下降法可以被定義為不同的形式(various

variants)。确切地說,根據<b>使用資料量的大小</b>(the amount of data),<b>時間複雜度</b>(time complexity)和<b>算法的準确率</b>(accuracy of the algorithm),梯度下降法可分為:

1.      

gradient descent, bgd);

2.      

<b>随機梯度下降法</b>(stochastic gradient descent, sgd);

3.      

<b>小批量梯度下降法</b>(mini-batch gradient descent, mbgd)。

      這是梯度下降法的基本類型,這種方法<b>使用整個資料集(</b>the complete dataset<b>)去計算代價函數的梯度</b>。每次使用全部資料計算梯度去更新參數,<b>批量梯度下降法會很慢</b>,并且很難處理不能載入記憶體(don’t

fit in memory)的資料集。在随機初始化參數後,按如下方式計算代價函數的梯度:

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

其中,m是訓練樣本(training

examples)的數量。

note:

     1. 如果訓練集有3億條資料,你需要從硬碟讀取全部資料到記憶體中;

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

     3.  然後重複上面每一步;

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

     5. 特别是因為磁盤輸入/輸出(disk

i/o)是系統典型瓶頸,是以這種方法會不可避免地需要大量的讀取。

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

上圖是每次疊代後的等高線圖,每個不同顔色的線表示代價函數不同的值。運用梯度下降會快速收斂到圓心,即唯一的一個全局最小值。

<b>批量梯度下降法不适合大資料集</b>。下面的python代碼實作了批量梯度下降法:

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

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

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

如下為随機梯度下降法的僞碼:

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

       2. 第一步:挑選第一個訓練樣本并更新參數,然後使用第二個執行個體;

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

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

       5. 直到達到全局最小值

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

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

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

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

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

随機初始化參數後,按如下僞碼計算代價函數的梯度:

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

這裡b表示一批訓練樣本的個數,m是訓練樣本的總數。

<b>notes:</b>

1. 實作該算法時,<b>同時更新參數</b>。

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結
純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

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

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結
純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

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

純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結
純幹貨 | 機器學習中梯度下降法的分類及對比分析(附源碼)引言為什麼使用梯度下降法梯度下降法的工作原理梯度下降法的類型批量梯度下降法原理随機梯度下降法原理小批量梯度下降法原理總結

以上為譯文

文章原标題《3 types of gradient descent

algorithms for small &amp; large data sets》,由hackerearth blog釋出。

譯者:李烽 ;審校:段志成-海棠

繼續閱讀