close

image

本週一開始我們先來快速回顧一下 Linear Regression的內容,

在優化線性迴歸模型 Y = wx+b時,我們是透過改變 w 與 b的值來尋求一個能夠儘可能解釋每一筆資料的方程式,

這個 w 跟 b 在機器學習的世界中當然是透過自動化來找到的,

每找到一個 w和b的組合,我們就要把每一筆資料的input代入方程式中,算出估計值和實際值之間的差距,

用來計算差距的方程式我們稱為 Cost Function (代價函數),代號是J,為一個w和b的函式 J(w,b)

w與b的關係就如同上圖一樣,會成為一個3D的有坡度、有山谷的模樣,

徜若cost function 計算完的結果發現差距很大,也就是在斜坡的高處,就必需要找到一個 cost function的最低點,

在最低點的w、b 我們就會期待是最佳的組合。

這個尋找 cost function 最低點的過程,

若有學過微積分就很清楚需要透過微分來執行,此流程我們稱之為 Gradient Descent (梯度下降)。

image

image

上圖以形象化的方式,比喻gradient descient 就是每走一步就檢視一下附近有什麼方向可以再往低處走,

而且選擇不同的出發點,最終也會被導引到不同的地方。

上圖可以注意到深藍色的凹陷區不止一個,只要換一個出發點後找到的另一個新的最低點,我們會稱為 local minima

代表它是在那個區域的最低點,但不保證會是全域的最低點。

image

Gradient descent 在數學上如上面的投影片所示,要先特別注意這裡的等號是指「指定」,而非數學上的等號。

在對cost function J(w,b)分別對w 和 b 做偏微分,去指引我們分別該往哪一個方向前進,

再乘上alpha ,alpha可以解釋為步伐的大小,正式名稱叫 learning rate,兩者相乘可以想像成往某一方向跨了一步,

要知道踩了這一步之後會到哪裡,當然要讓原點被扣掉這個步伐,因此就能得到投影片中的公式。

要注意的是 w 和 b是同時被更新的,所以投影片下半部特別做了一個比較,

正確的做法是左邊,w 、b 是同時被更新,而不是右邊那樣,先更新w之後,再用新的w代入 b的微分方程。

image

再回到本課程最常用的假設,在 loss function 僅跟w有關係的情況下,

若原始所在的位置是一個遞增之處,則此時我們透過對w 做偏微分取得當下的斜率會得到正值,

因此代入公式能得到原始位子會扣掉一個正值,因此勢必會變小,自然而然往左邊走了,

同理,若原始位置是在遞減之處,對w 做偏微分會得到負值,代入公式則新的位子勢必會在出發點的右邊。

以上便簡單展現了gradient descent 的特性。

image

透過調整learning rate我們可以控制步伐的大小,在演算法中是由人為來調整設定的,稱為 hyperparameter 超參數,

選擇適當的 learning rate 會影響到建模的成效。

如果 learning rate太小,就好像踩著小碎步前進一步,模型收歛的速度會很慢,使用起來就不實際,

但如果learning rate 太大,有可能反而錯過最低點,甚至於把error 越弄越大而最終無法收歛,

image

為了要更有效接近 local minimum,learning rate 會是一個浮動的數字,

原因在於越接近最低點,曲線的變化會越來越平緩。因此要適當隨著位子的變化來讓learning rate隨之調整,

才不會再很接近最低點時一不小心跨太大步導致錯過。

image

我們已經提到gradient descent 是透過微分來達到,上面就是詳細的計算過程,

前文就已提到公式的分母會特別先除以2是有目的,正是因為微分時,次方項會被帶下來,所以先在分母乘以2的話就能互消,

讓最終的結果看起來比較美觀。

另外要再特別提醒,這裡做的是「偏」微分,所以是分別對w 和 對 b做微分。

image

image

雖然 cost funtion 可能會有很多局部的最低點,只要我們從不同點出發,就有機會走到不同的地方,

但是對使用平方差為cost function的 linear regression來說,

因為該loss function 為凸函數,所以必然只有一個最低點,即 global minimum,因此很容易就能收歛。

image

接下來就展示 gradient descent 的過程中發生了什麼事,

假設一開始的w/b設定會給我們藍色直線,可以看得出來它並沒有很符合資料 (紅色叉叉)的趨勢,loss算起來也很大,

此時就會透過gradient descent 發現往右下角走可以讓loss 降低,因此往右下走到新的位置 (橘色點)後,會有相對應的 w/b,

因此我們就能得到一條新的方程式 (橘線)。

一直重覆這個過程,我們就會不斷往最低點靠攏,並得到一條越來越符合資料趨勢的線 (黃綠點)。

 

以上就是 gradient descent 的全部內容,課程中另外提供了 jupyter notebook,

內有 gradient descient 的程式碼供大家實地觀察 gradient descent 帶給model 的變化。

在本課程的第一週,我們都是討論只有單一 input feature的情況,第二週會討論有多個input feature 時會發生哪些改變。

 

 

arrow
arrow

    William.Echoes 發表在 痞客邦 留言(0) 人氣()