終於來的線性回歸,高中學的線性回歸是 y=ax+b, 但在數據集中,哪一條線性回歸預測是最適合的呢?計算過程中會使用到梯度下降和損失函數的概念。
線性回歸是一種用來預測的數學模型,目的是找到一條直線,讓這條直線可以盡可能貼近數據點。我們可以利用這條直線來預測未來的值,比如根據重量預測高度。
下圖 0.64 是我們給的斜率(slope), intercept 是截距的意思,若截距的值是當x=0,y的值,也就是距離原點多遠
第二步,計算資料點到回歸線的距離。因為有些點是在線下面,避免正負抵銷,所以使用「均方誤差 」(MSE, Mean Squared Error)
第一個點的實際y是1.4,預測 y 套用模型算出來的值是 1.1
將所有的點畫出來,形成損失函數(實際點到預測點距離誤差)。最低點是損失函數Loss/Cost function (MSE loss)的點,但如何確定這個最低點是真的最低點?我們每次都要一個一個點慢慢找嗎?其實有個方法是梯度下降 (Gradient Descent) 可以迅速找到最低點。
再講解梯度下降的微積分數學之前,我們先來簡單看這兩個概念的目的
圖解:可以用一個 Loss 曲面圖,畫出梯度下降一步步逼近最低點的過程。
數學時間到~
先看其中一個曲線所形成的點微分做示範,計算過程會用到 Chain Rule (降次,先微外再微內) 跟 Power Rule
可以參考這篇文章:AI模型訓練的數學基礎:微分入門教學
因此會得到 -2(1.4-(intercept +0.64*0.5)是他的微分結果。
intercept 是截距的變數,若截距設定為 0 那麼可以得到 -5.7,這有什麼目的呢?最低點微分會接近0
問題來了,該如何決定調整的幅度?
在 Gradient Descent (梯度下降) 中,我們希望找到損失函數 (Loss Function) 的最低點,這代表模型的誤差最小。為了達到這個目標,我們使用微分來計算斜率,並根據這個斜率來調整參數,一步步朝向最低點移動。
Learning Rate (學習率,記作 α) 是一個超參數(在訓練前要自訂),決定我們每次更新參數的步伐大小。它影響:
這就是為什麼選擇合適的學習率很重要。
我們的目標是 透過梯度下降來更新參數 θ,讓它逐步接近最佳解。
做到什麼時候停止呢? slope 接近0,但實際上很困難,所以只要 Step size 接近0.001 就好了。
另外,實際上不會只有一個參數,模型會有多個參數呈現立體,或是物理無法想像的多維度,所以才要用微分與梯度下降快速找到損失函數最低的點。
至於這些理論如何在程式碼實現,下一篇我會介紹
1. 手刻梯度下降法 (Batch Gradient Descent)