close

第三週的第一段落介紹完 logistic regression 的基本之後,就要來介紹如何優化模型,

所以要先從 loss function 的定義開始介紹。

image

前面提到線性迴歸最常用的cost function 就是 squared error,也就是把真實值和預測值的誤差給取平方後再取平均,

這樣的cost function 會自然而然形成可以收歛的二次方程式,當抵達 loss 不在降低的地方時就停止訓練。

不過 squared error 不適用在 logistic regression,因為 logistic regression 是用 sigmoid function的形式來表現,

如果把 squared error 給代入,就會形成 non convex (非凸優化)的方程式,

會產生無數個local minimum 導致訓練失敗。

image

因此配合 logistic regression 的型式,要設計另一種 loss function,也就是如上面所示,

值得注意的是,配合 y 的數值不同,會有不同的表現型式,

image

這 y =1 時函式可以畫成下面的藍色線:

image

image

由於 logistic regression 的output 一定是分布在0到1之間,所以我們只要關心0~1之間的範圍,

在 y = 1而預測值也是1時,loss 當然就 = 0,而隨著預測值離1越遠,loss 不斷增加,

如果預測值是0,則 loss 會趨近於無窮大。

image

上面則是 y = 0 時的函式,相關的過程也都一樣,離0越遠則loss越大,若預測為1則loss趨近於無窮大。

image

總而言之, logistic regression 的 cost function 就是如上所示的型式,

可以從數學上推導出這會是有辦法達到global minimum的,但超過本課程的範圍。

而logistic regression 優化過程就是要找到一組w與bB可以讓 cost 最小。

為了要方便使用這樣的loss function,可以把它給簡化,巧妙地結合成一個數學式,如下所示: 

image

當 y = 1 時剩下 -log(f) ,而當 y= 0 時則剩下 -log (1-f),剛好會跟loss function的原始設計吻合,

cost function 就再另外除以樣本數量而取得平均值。

image

 

既然都提到 loss function 以及優化 w/b,接下來就探索找到最佳w/b的作法,當然一樣是gradient descent。

image

型式上和 linear regression 是一樣的,都是對cost function 的w與b做偏微分並同步更新,

image

兩者最大的差別其實就是方程式本身,linear regression 是線性的方程式,

而logistic regression 則是 sigmoid 的非線性型式,

至於linear regression 能使用的各種技巧與優化手法,在logistic regression 也能使用。

image

在介紹完 linear regression 與 logistic regression後,

最後就來聊聊 fitting 的結果該如何判續。

上面所示的是線性廻歸的例子,假設有一筆資料是稍微呈現 L 形,

如果用太簡單的一次方程式或是只用一個feature 去描述這筆資料,

可以注意到fitting 完的方程式其實和資料的pattern 不太吻合,稱之為 unerfit (欠擬合)或 high bias (高偏差),

如果用太複雜的高次方程式或用很多個feature 去描述,

可以注意到fitting 出來的曲線跟資料完全吻合、絲絲入扣,但是卻可能反而無法描述沒學過的資料,

這種情況稱之為 overfit (過擬合) 或 high variance (高變異)。 (高次方程式代表包含的範圍很大)

相較之下,用複雜度適當或剛剛好的feature 去描述資料,雖然可能在一些資料有些微的誤差,

但卻是最通用的模型 (generalization)。

image

在面對分類問題使 sigmoid function 時,也是有一模一樣的狀況,

最左邊就是underfitting,可以有7個藍圈與兩個紅叉被分錯,

最右邊則是 overfitting,雖然百分之百分對了,但是很明顯針對既有數據太客製化,

中間糋是剛剛好的模型,在達到相當高的正確率的同時,也兼顧了模型的通用性。

事實上,我會建議此時要回去審視兩筆還沒有被分正確的資料,是否有標記錯誤或outlier的可能性。

image

要解決overfitting,最簡單的辦法就是多收集一些數據,讓模型把學過頭的trend給學正確,

image

第二招是做特徵工程 feature engineering,原因是overfitting 通常來自於使用太多feature去描述數據,

而如果feature 太多,又沒有足夠的數據來支撐他們,就會造成overfitting,

不過如果feature太少又可能造成重要的訊息遺失,

因此可以利用domain knowledge來挑選適合的feature,或是用一些數學手法去幫忙找出真正有影響的feature,

剩下的就直接去掉。

image

第三招是 regularization (正則化),是透過把overfitting 的高次方程式中的高次項給消除掉,來達到簡化模型的目的,

image

regularization 的概念就是希望透過優化loss function的過程中迫使不被需要feature的係數能最小化,

因此具體的作法就是在loss function 中加入W3與W4並給它們很大的係數,

如此一來在試圖讓loss 最小化的過程中,演算法會自動把W3與W4給調得很小,如此便達到了目的。

image

不過在真實的應用場景中,我們不可能知道到底要針對哪一個feature的參數做處罰,

所以就把所有feature 的參數 w 都加到loss function中,取平方後加總再乘上一個lambda,

這個lambda 是模型中的一個人為決定的「超參數」 hyperparameter,如果越大的話就處罰得越大力,

b (bias) 當然也可以拿來處罰,但一般來說只會處罰 weighting 而不會處罰bias。

image

總結來說,regularization 就是在 loss function 中加入一個 regularization term,

loss function 的前半段 (mean squared error) 負責去擬合每一筆data,regularization term則控制不要過擬合,

lambda 則是我們用來平衡 mean squared error 和 regularization term的手段,

如果調得太大,則所有特徵的係數都會趨近於0,此時模型只會剩下 b (bias) 就變成一條y為定值的橫線,

就會變成underfitting,

但如果調得不夠大的話,regularization 的效果也會不彰。

image

最後再來拉扯一點數學,當我們在loss function 中引入 regularization term之後,gradient descent會如何變化?

image

這個便是loss function J(w,b) 對w 做偏微分之後的式子,後面再加上regularization term同樣做偏微分後的樣子,

b也同樣要被偏微分,但後面沒有regularization term,因為慣例上比較少這麼做。

image

整理成這樣之後再展開運算,

image

後面的黑色部分就是之前提過的 squared error 降低過程,藍色部分則可以再進一步整理,

image

於是我們就比較能理解 lambda、樣本數 m、和 learning rate 之間的關係,

如果lambda =1,  learning rate = 0.01,樣本數是50筆,每一次的更新數時w就會被乘上0.9998而稍微變小。

image

最後再附上偏微分的過程讓大家更能理解發生了什麼事,這部分有學過微積分應該都能輕易理解。

logistic regression 的regularization 和 linear regression 都一樣,只差在方程式本身不相同。

 

以上便結束了第三週,也就是最後一課的課程。

總結來說,

本課程從介紹了 linear regression 與 logistic regression 的基本,並提到許多優化的手法,

算是為機器學習入了門。

 

 

 

arrow
arrow

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