Stanford機器學習課程筆記——單變數線性迴歸和梯度下降法

bigface1234fdfg發表於2015-01-23

Stanford機器學習課程筆記——單變數線性迴歸和梯度下降法

    

1. 問題引入


    單變數線性迴歸就是我們通常說的線性模型,而且其中只有一個自變數x,一個因變數y的那種最簡單直接的模型。模型的數學表示式為y=ax+b那種,形式上比較簡單。Stanford的機器學習課程引入這個問題也想讓我們親近一下machine learning這個領域吧~吳恩達大神通過一個房屋交易的問題背景,帶領我們理解Linear regression with one variable。如下:




不要看這個問題簡答,大神就是大神,吳大神通過房屋問題引出了代價函式梯度下降法


2. 代價函式 cost function


    首先,我們明確一下,單變數線性迴歸模型的表示式是:

    那麼代價函式就是:我們模型預測的值(預測的房屋價格)和樣本真實的值(真實價格)之間誤差的平方和。數學表達就是:


後面誤差的平方項比較好理解,sigma求和就是所有訓練樣本的誤差平方項之和,前面1/m是求均值,為啥分母上還有2呢?這是為了後面梯度下降法求導代價函式方便

    好了,我們定義了代價函式,那麼後面的任務就是如何最小化這個代價函式值,換句話說,求解一個最優化問題,得到代價函式最小時的theta_0和theta_1的組合引數。


3. 簡單的梯度下降法


    有了上面的最優化問題,我們使用梯度下降法求解。需要解釋的是,這種方法只能是迭代解出區域性優化,無法得到解析解的全域性最優。

    首先我們看上面代價函式,其中有兩個變數,我們要判斷這個目標函式是否是凸的,我們可以畫出關於theta_0, theta_1, J(theta_0, theta_1)的三維曲面。(如果不是三維的,我們可以理論上判斷是否為凸規劃)



我們發現,圖中是存在最低點的,說明該優化問題是有最優解的。


    梯度下降法的基本思想:開始時我們隨機一個引數組合,計算代價函式;然後我們尋找下一個能讓代價函式值下降很多的引數組合,這個時候我們需要通過求導來尋找下降最快的方向。我們持續這麼做直到到達一個區域性最小值,因為我們沒有嘗試完所有的引數組合,所以我們不能確定我們得到的區域性最小值是否是全域性最小值。而且,選擇不同的初始引數組合,可能會得到不同的區域性最小值。圖示如下:


    梯度下降法的基本演算法為:


其中alpha是學習步長,或者稱為學習率,這是在我們找到下降最快的方向之後,確定著我們到底要下降多少的問題。看來,初始引數的選擇和學習步長是梯度下降法中比較重要的兩個引數,我們這個先不提如何選擇


    在這道題目中,我們梯度下降法求出代價函式的導數作為下降最快的方向,求導如下:




那麼我們的模型中只有兩個theta, 於是我們需要分別對它們求導。


(都是二次函式的求導,比較簡單。要注意j=1時的求導,後面還有一個x_i)

得到梯度下降方向之後,我們的演算法就是:



詳細來說,我們先把theta_0和theta_1的初始值帶入,把所有的訓練樣本帶入,就得到了上面等式右邊的所有元素的值,其中的h_theta_x_i是初始引數構建的模型求得的值。注意,所有的theta都是需要同時學習,同時更新的!絕對不可以先更新theta_0,然後後面在更新其餘的theta的時候就使用新的theta_0在模型中,一定要使用老的theta。這裡我們就說的比較粗俗一點啦~~吳大神的Slide中尤其提到了simultaneously的重要性!如下:

 

這樣子不斷更新,如果達到了一定更新的次數,或者是模型預測的值和樣本真實值差異小於tolerated value,那麼我們就可以停止更新了。

    

    這樣我們就介紹完了單變數線性迴歸模型和簡單的梯度下降法。







參考:

https://class.coursera.org/ml/class/index


http://blog.csdn.net/abcjennifer/article/details/7691571


Coursera機器學習筆記



相關文章