機器學習_學習筆記系列(07):線性回歸(Linear Regression)和梯度下降(Gradient Descent)
在前幾個章節,我們一直介紹機器怎麼學習,還有機器為什麼可以學習,那有了這些基礎後,我們終於可以進入機器學習的演算法階段了。
上一篇我們介紹了感知器perceptron,其是屬於一種線性分類的機器學習演算法,那今天我們要來介紹線性迴歸演算法linear regression。
線性迴歸(linear regression)
相信大家多多少少,甚至在高中數學課或是大學統計學的時候一定都聽過線性迴歸這個詞。那我們來回顧什麼是線性迴歸。
在學線性迴歸的時後,我們都知道,我們需要從這些點裡面找到一條最適合的線
f(x)=mx+b
(m:斜率/b:截距)
那要怎麼找,相信大家還記得,我們會使用最小平方法(least squares method)
首先我們拿到x對於y的數據後,我會先算這些東西
之後我們就可以求得我們斜率和截距
另外我們也會算一個東西叫做R²,來看我們最後迴歸的結果好不好,我們也知道越接近1代表越好,越接近0代表越差。其公式為
在這邊要特別注意,到目前為止,我們所看到的都還只在統計學,還沒有到機器學習的部分。更具體來說,我們做的只有擬合(fitting)而已。
那我們這裡大家一定會有疑問了,那怎樣才有機器學習呢?
大家還記得上一次介紹感知器perceptron時,他的演算法是透過一次又一次的更新權重w,最後得到一個最佳的解,然後將圈圈叉叉做分類嗎。而這裡一次又一次的更新就是我們機器學習的精神,透過反覆的學習最後達到最好的表現。
那要怎麼把機器學習和線性迴歸兜起來呢?這就要用到一個非常重要的概念:梯度下降(Gradient Descent)
梯度下降(Gradient Descent)
所謂的梯度下降我們可以把他粗淺的理解成,利用標準答案和預測答案的差別來更新我們的方程式。比較精確的說法就是我們要最小化我們的損失函數(cost function)。
那什麼是cost function,為什麼最小化cost function機器就可以學習?
回到我們之前所介紹的機器學習,我們這裡假設我們的線性迴歸方程式為
其實就和我們上面講的統計學的線性迴歸y=mx+b很像。那在線性回歸中,他的cost function為:
而大家有沒有發現到這和我們算R²裡面分子那項非常相似,是計算真實答案和預測答案的差別。而這個是不是也和之前介紹的感知器,透過計算錯誤的點來更新方程式的精神很像呢?
而看到這裡相信大家可以透過cost function稍微猜到我們更新的方法。
(i=0,1)。從上述的cost function,我們知道我們希望讓真實和預測結果差越小越好,所以這就是為什麼要最小化cost function的原因。那為什麼要用減的,還有整個式子的意義是什麼。沒關係遇到不知道為什麼,我們把他暴力展開就對了!
我們知道
分別對w0和w1微分
大家看到這裡應該就應該知道為什麼要用減的!!!
在這兩個式子中,我們可以看到如果w0,w1太大,那代表最後結果大於零的可能性很高,所以為了修正我們的w0,w1,我們會將他減小,反之如果w0,w1太小那代表最後結果小於零的可能性很高,所以我們用加號修正w0,w1,所以更新方程式才用減的。
另外一點可以注意到,如果w0,w1非常大或是非常小,代表結果可能相差的越多,所以我們需要更新的數值也越大,反之w0如果非常接近我們要的值,則可以看到我們更新的數值也會跟著越小。
這裡可以想像成我們今天在投三分球的時後,第一次可能連籃框都沒碰到,於是我們加大力道,這次就剛好打到籃框,之後我們會再微微修正力道,最後才投進籃網內。
另外一個值得一題的就是更新下一個w0數值的方程式,是透過w0和w1現在的值,更新下一個w1數值的方程式,也是透過w0和w1現在的值,而這樣的目的就是避免如果更新w0只靠w0,更新w1只靠w1,發生兩個人自己各顧各的情況。
看到這裡我真的是不由的欽佩這些科學家,倒底是怎麼想出來這樣的方法。
另外,有時候我們會發現,用這樣的方式,會因為每次更新的數值很小,以至於還沒到最佳解時,我們更新的值就非常接近0,產生梯度消失的問題(gradient vanishing problem)
所以更新方程式中,我們通常還會多加一個人為參數a讓權重更快收斂。
但這裡有一個問題就是當我們的a設太大時,又會造成我們更新數值太大,偏離最佳解更遠,而電腦在下一輪中又因此產生一個更大的數值,又讓我們偏的更遠,而這就是所謂的梯度爆炸問題(gradient exploding problem)。
所以我們在進行機器學習,處理梯度下降的問題,需要花些時間調整a,讓我們的model能在最短時間內達到最佳解。
Python Sample Code
在這裡我們就用Python來實現我們線性回歸理論
Github:
Reference:
[1] Andrew Ng, Machine Learning, Coursera
***本系列完全沒有開任何營利***
作者:劉智皓
linkedin: CHIH-HAO LIU