小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

詳解梯度下降法求解線性模型參數

 imelee 2017-02-13

有監(jiān)督學習和無監(jiān)督學習

機器學習,分為有監(jiān)督學習無監(jiān)督學習
有監(jiān)督學習,就是有訓練集,有label,我們是可以知道模型輸出是什么樣子的。而無監(jiān)督學習,沒有訓練集,沒有label,提前無法知道輸出的樣子。
有監(jiān)督學習分為兩種:回歸分類。模型輸出若為連續(xù)變量,就是回歸;模型輸出為離散值,就是分類。
無監(jiān)督學習常見的是聚類。給定一堆數據集,從中找出相似的類簇,這個過程沒有l(wèi)abel。

神經網絡,深度學習,SVM和決策樹,都是有監(jiān)督學習。下面介紹的方法也只適用于有監(jiān)督學習。

模型

機器學習最一般的模型就是下面這個圖。

機器學習一般模型

給定m個訓練集,每個訓練集有n個特征。訓練集作為X輸入給模型,經過訓練后模型就是h(x)。
線性模型的求解,就是求解h(x)表達式的過程。

線性模型的表示

線性模型的表達式為

hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
[1]

其中

  • x1~xn就是n個特征,作為模型的輸入
  • θ0~θn,就是線性模型的n+1個參數

根據m個訓練集,求解θ0~θn的具體數值的過程,就是所謂的學習。求解線性模型,就是求其參數θ0~θn的解。

線性模型求解思路

我們當然是希望求解出來的模型,預測值盡量逼近真實值。

為了更為直觀的說明線性模型,以最簡單的線性模型hθ(x)=θ0+θ1x為例,用下圖表示,紅色點為訓練集。

分類誤差示意

圖中有4(m)個訓練集,h(x)是最終求得的模型。

我們希望模型的預測值與真實值之間的差別,盡量的小。用歐氏距離來表示:

J=(h(x(1))y(1))2+(h(x(2))y(2))2+(h(x(3))y(3))2+(h(x(4))y(4))2
[2]

其中

  • x(1),和y(1)表示第一個訓練集的特征,和真實值

J更一般的表達式為

J=14(h(x(i))y(i))2=14(θ0+θ1x(i)y(i))2
[3]

這里的預測值與真實值之間的歐氏距離之和J,就是所謂的代價函數。找到能使代價函數最小值點的參數θ,就是線性模型的解。

代價函數

代價函數的定義如下

J(θ)=12m1m(h(x(i))y(i))2
[4]

它的物理含義就是預測值與真實值之間的差別。差別越小,就說明我們的模型和真實模型越接近。代價函數J是其參數θ的二次函數。代價函數的表達式,就是均方差MSE(Mean Square Error)的定義。

這里還是用簡化的線性模型來說明問題,另式[3]中的θ1=0y(i)=1,可得代價函數的曲線為

代價函數曲線

這里把代價函數看成曲線,是最簡單的情況。代價函數更多情況下是以多維曲面的形態(tài)出現的(曲面也有最低點)。

梯度下降法

圖3中,代價函數的最小值是其導數為零的點。

迭代找代價函數最小值的過程

在圖中任意取一個θ值作為其初始值,然后不斷迭代最終找到代價函數導數為0點(最小值)的過程,就是求解代價函數參數θ的過程(學習),也就是梯度下降法的物理含義。它的思想為,只要順著梯度方向下降迭代,就能找到代價函數的最小值。

對于代價函數是多維曲面的情況,可以把曲面類比成山,想象梯度下降法就是從山上往下走,每一步順著梯度方向,最終肯定就能走到山谷最低點。

無論是曲線還是曲面,會不會有多個局部最低點呢?答案是會的,梯度下降法很可能找不到真正的最低點,它可能只能找到局部最低點。
但好消息是,線性模型的代價函數,在數學上已經被證明為凸函數,即這種函數的局部最低點就是其最低點。所以我們在線性模型中用梯度下降思路求解最小值是沒有問題的。

最小均方算法

最小均方算法``LMS(Least Mean Square)是梯度下降思想的具體實現,它是由Bernard Widrow和Marcian E. Hoff提出的,所以也叫Widrow-Hoff學習規(guī)則。

為什么叫最小均方呢,這是因為代價函數的表達式,就是均方差``MSE(Mean Square Error)的定義。

LMS算法是這樣的

Repeat until convergence (for every j){

θj:=θjαθjJ(θ)
[5]
}(update θj simultaneously)

其中

  • θj表示線性模型的某一個參數
  • :=是賦值符號
  • α表示學習速率
  • convergence收斂

它說明,為了求得任意一個參數θj的值,首先我們需要對θj取一個初值,然后順著代價函數J的梯度方向( θj)不斷迭代,直到θj的值收斂(即本次迭代和上次迭代的值為同一個),就找到了θj的值。

對每一個參數都一起進行這個迭代過程,就能求得每一個參數的值。不過這里要注意的是,要結束一輪迭代后,才對各個參數的值做更新。

這里要注意的是學習速率α,它會把梯度值放大。所以學習速率越大,尋找代價函數最小值過程中迭代的步長也就越大。

  • 學習速率太大,有可能導致參數不收斂,或收斂到最后震蕩較大
  • 學習速率太小,則肯定會收斂,但收斂迭代次數會很大
  • 一般情況下,每一次迭代后,梯度都會變小。所以即便學習速率是固定值,學習步長也會隨著迭代次數增加而減小

代價函數的形狀也與各個特征x的大小相關,為了讓代價函數形狀均衡,一般要對特征做歸一化(比如-1

最小均方算法的一般化表達推導

將代價函數的表達式[4]帶入LMS算法式[5]中的αθjJ(θ),用偏微分對表達式化簡,可得

αθjJ(θ)

=αθj(12m1m(h(x(i))y(i))2)

=α12m21m(h(x(i))y(i))θj(h(x(i))y(i))
[6]

將線性模型的表達式[1]帶入[6]中的θj(h(x(i))y(i))

θj(h(x(i))y(i))

=θj(θ0+θ1x(i)1+θ2x(i)2+...+θnx(i)ny(i))

=0+0+...+x(i)j+0+...+0
[7]

所以,式[6]可簡化為

αθjJ(θ)

=α1m1m(h(x(i))y(i))x(i)j
[8]

將式[8]帶入LMS算法表達式[5]中,可得LMS算法的一般化表達式為

Repeat until convergence (for every j){

θj:=θjα1m1m(h(x(i))y(i))x(i)j
[9]

}(update θj simultaneously)

參考

  • Andrew NG. machine learning class at coursera

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多