1. 程式人生 > >監督學習:隨機梯度下降算法(sgd)和批梯度下降算法(bgd)

監督學習:隨機梯度下降算法(sgd)和批梯度下降算法(bgd)

這就是 影響 個數 執行 類型 http 關系 col pla

線性回歸

首先要明白什麽是回歸。回歸的目的是通過幾個已知數據來預測另一個數值型數據的目標值。

假設特征和結果滿足線性關系,即滿足一個計算公式h(x),這個公式的自變量就是已知的數據x,函數值h(x)就是要預測的目標值。這一計算公式稱為回歸方程,得到這個方程的過程就稱為回歸。

假設房子的房屋面積和臥室數量為自變量x,用x1表示房屋面積,x2表示臥室數量;房屋的交易價格為因變量y,我們用h(x)來表示y。假設房屋面積、臥室數量與房屋的交易價格是線性關系。

技術分享圖片

他們滿足公式

技術分享圖片

上述公式中的θ為參數,也稱為權重,可以理解為x1和x2對h(x)的影響度。對這個公式稍作變化就是

技術分享圖片

公式中θ和x都可以看成是向量,n是特征數量。

假如我們依據這個公式來預測h(x),公式中的x是我們已知的(樣本中的特征值),然而θ的取值卻不知道,只要我們把θ的取值求解出來,我們就可以依據這個公式來做預測了。

最小均方法(Least Mean squares)

在介紹LMS之前先了解一下什麽損失函數的概念。

我們要做的是依據我們的訓練集,選取最優的θ,在我們的訓練集中讓h(x)盡可能接近真實的值。h(x)和真實的值之間的差距,我們定義了一個函數來描述這個差距,這個函數稱為損失函數,表達式如下:

技術分享圖片

這裏的這個損失函數就是著名的最小二乘損失函數,這裏還涉及一個概念叫最小二乘法,這裏不再展開了。我們要選擇最優的θ,使得h(x)最近進真實值。這個問題就轉化為求解最優的θ,使損失函數J(θ)取最小值。(損失函數還有其它很多種類型)

那麽如何解決這個轉化後的問題呢?這又牽扯到一個概念:LMS 和 梯度下降(Radient Descent)。

LMS是求取h(x)回歸函數的理論依據,通過最小化均方誤差求最佳參數的方法。

梯度下降

我們要求解使得J(θ)最小的θ值,梯度下降算法大概的思路是:我們首先隨便給θ一個初始化的值,然後改變θ值讓J(θ)的取值變小,不斷重復改變θ使J(θ)變小的過程直至J(θ)約等於最小值。

首先我們給θ一個初始值,然後向著讓J(θ)變化最大的方向更新θ的取值,如此叠代。公式如下:

技術分享圖片

公式中α稱為步長(learning rate),它控制θ每次向J(θ)變小的方向叠代時的變化幅度。J(θ)對θ的偏導表示J(θ)變化最大的方向。由於求的是極小值,因此梯度方向是偏導數的反方向。

  • α取值太小收斂速度太慢,太大則可能會Overshoot the minimum。
  • 越接近最小值時,下降速度越慢
  • 收斂: 當前後兩次叠代的差值小於某一值時,叠代結束

求解一下這個偏導,過程如下:

技術分享圖片

那麽θ的叠代公式就變為:

技術分享圖片

上述表達式只針對樣本數量只有一個的時候適用,那麽當有m個樣本值時該如何計算預測函數?批梯度下降算法和隨機梯度下降算法

批梯度下降算法

有上一節中單個樣本的參數計算公式轉化為處理多個樣本就是如下表達:

技術分享圖片

這種新的表達式每一步計算都需要全部訓練集數據,所以稱之為批梯度下降(batch gradient descent)。

註意,梯度下降可能得到局部最優,但在優化問題裏我們已經證明線性回歸只有一個最優點,因為損失函數J(θ)是一個二次的凸函數,不會產生局部最優的情況。(假設學習步長α不是特別大)

批梯度下降的算法執行過程如下圖:

技術分享圖片

大家仔細看批梯度下降的數學表達式,每次叠代的時候都要對所有數據集樣本計算求和,計算量就會很大,尤其是訓練數據集特別大的情況。那有沒有計算量較小,而且效果也不錯的方法呢?有!這就是:隨機梯度下降(Stochastic Gradient Descent, SGD)

隨機梯度下降算法

隨機梯度下降在計算下降最快的方向時時隨機選一個數據進行計算,而不是掃描全部訓練數據集,這樣就加快了叠代速度。

隨機梯度下降並不是沿著J(θ)下降最快的方向收斂,而是震蕩的方式趨向極小點。

隨機梯度下降表達式如下:

技術分享圖片

執行過程如下圖:

技術分享圖片

批梯度下降和隨機梯度下降在三維圖上對比如下:

技術分享圖片

總結:

開年第一篇,加油

參考:

http://mp.weixin.qq.com/s/7WlGN8JxfSmpJ8K_EyvgQA

http://m.elecfans.com/article/587673.html

監督學習:隨機梯度下降算法(sgd)和批梯度下降算法(bgd)