線性迴歸:梯度下降法

梯度下降是一種數學技巧,可重複尋找權重和偏誤,產生損失最小的模型。梯度下降法會重複執行以下程序,直到達到使用者定義的疊代次數,藉此找出最佳權重和偏差。

模型會以隨機權重和接近零的偏差開始訓練,然後重複執行下列步驟:

  1. 根據目前的權重和偏誤計算損失。

  2. 判斷如何調整權重和偏差,以降低損失。

  3. 將權重和偏誤值移到較小方向上,以減少損失。

  4. 返回步驟 1,重複執行這個程序,直到模型無法再降低損失為止。

下圖概略說明梯度下降演算法執行的疊代步驟,以便找出可產生損失最低模型的權重和偏誤。

圖 12.梯度下降程序的插圖。

圖 12. 梯度下降法是一種反覆進行的程序,可找出產生損失最低模型的權重和偏誤。

按一下加號圖示,進一步瞭解梯度下降法背後的數學原理。

我們可以以具體的層級,使用一個小型資料集,其中包含車輛重度 (磅) 和每加侖里程數的七個範例,來逐步降低梯度下降法:

以 1000 為單位的英鎊 (功能) 每加侖英里 (標籤)
3.5 18
3.69 15
3.44 18
3.43 16
4.34 15
4.42 14
2.37 24
  1. 模型會先將權重和偏誤設為零,開始訓練:
  2. $$ \small{Weight:\ 0} $$ $$ \small{Bias:\ 0} $$ $$ \small{y = 0 + 0(x_1)} $$
  3. 使用目前的模型參數計算 MSE 損失:
  4. $$ \small{Loss = \frac{(18-0)^2 + (15-0)^2 + (18-0)^2 + (16-0)^2 + (15-0)^2 + (14-0)^2 + (24-0)^2}{7}} $$ $$ \small{Loss= 303.71} $$
  5. 計算每個權重和偏誤點與損失函式的正切斜率:
  6. $$ \small{Weight\ slope: -119.7} $$ $$ \small{Bias\ slope: -34.3} $$

    按一下加號圖示,瞭解如何計算斜率。

    為了取得與權重和偏誤相關的線條切線斜率,我們會根據權重和偏誤計算損失函式的導數,然後解出方程式。

    我們會將預測方程式寫成以下形式:
    $ f_{w,b}(x) = (w*x)+b $。

    我們會將實際值寫為:$ y $。

    我們會使用以下公式計算 MSE:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
    其中 $i$ 代表第 $i$ 個訓練範例,$M$ 代表範例數量。

    權重導數

    損失函式相對於權重 (weight) 的導數可寫為:
    $ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    ,然後評估為:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $

    首先,我們會將每個預測值減去實際值,然後乘以兩倍的特徵值。然後將總和除以範例數量。結果是與權重值相切的線條斜率。

    如果我們以權重和偏差等於零來解這個方程式,就會得到線條的斜率 -119.7。

    偏差導數

    與偏誤相關的損失函式導數寫如下:
    $ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    ,然後評估為:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $

    首先,我們會將每個預測值減去實際值,然後乘以 2。然後將總和除以範例數量。結果是與偏差值相切的線條斜率。

    如果我們以權重和偏差等於零來解這個方程式,就會得到線條的斜率 -34.3。

  7. 移動負斜率方向的小幅度,取得下一個權重和偏誤。目前,我們任意將「小額」定義為 0.01:
  8. $$ \small{New\ weight = old\ weight - (small\ amount * weight\ slope)} $$ $$ \small{New\ bias = old\ bias - (small\ amount * bias\ slope)} $$ $$ \small{New\ weight = 0 - (0.01)*(-119.7)} $$ $$ \small{New\ bias = 0 - (0.01)*(-34.3)} $$ $$ \small{New\ weight = 1.2} $$ $$ \small{New\ bias = 0.34} $$

使用新的權重和偏差計算損失,然後重複執行。完成六次迭代程序後,我們會取得下列權重、偏差和損失:

疊代作業 重量 偏差 損失 (MSE)
1 0 0 303.71
2 1.2 0.34 170.67
3 2.75 0.59 67.3
4 3.17 0.72 50.63
5 3.47 0.82 42.1
6 3.68 0.9 37.74

您可以看到更新後的權重和偏誤值減少了損失。在本例中,我們在六次疊代後停止。實際上,模型會持續訓練,直到「收斂」為止。當模型收斂時,額外的疊代作業不會進一步降低損失,因為梯度下降法已找到可將損失降至最低的權重和偏差。

如果模型持續訓練,直到達到收斂點,損失值就會開始小幅波動,因為模型會持續更新參數,使其維持在最低值附近。這可能會導致難以驗證模型是否已實際收斂。如要確認模型已收斂,請繼續訓練,直到損失值穩定為止。

模型收斂和損失曲線

訓練模型時,您通常會查看損失曲線,判斷模型是否已收斂。損失曲線會顯示模型在訓練過程中損失的變化情形。以下是典型損失曲線的樣貌。Y 軸代表損失,X 軸代表疊代:

圖 13.損失曲線圖表,顯示先急降後緩降的趨勢。

圖 13. 顯示模型收斂至 1,000 次的損失曲線。

您可以看到,損失在前幾次疊代期間大幅減少,然後逐漸減少,最後在第 1,000 次疊代處趨於平坦。經過 1,000 次疊代後,我們幾乎可以確定模型已收斂。

在下列圖表中,我們會在訓練過程的三個點繪製模型:開始、中間和結尾。在訓練過程中以圖表呈現模型的快照狀態,可確立更新權重和偏差、減少損失和模型收斂之間的關聯。

在圖表中,我們使用特定疊代中衍生的權重和偏差來表示模型。在包含資料點和模型快照的圖表中,從模型到資料點的藍色損失線會顯示損失的數量。線條越長,損失就越多。

在下圖中,我們可以看到在第二次迭代時,由於損失量過高,模型無法準確做出預測。

圖 14. 損失曲線和模型的對應圖表,其傾斜方向與資料點相反。

圖 14.訓練程序開始時的損失曲線和模型快照。

在第 400 次迭代時,我們可以看到梯度下降法找到了可產生更佳模型的權重和偏差。

圖 15. 損失曲線和相應的模型圖表,這會切割資料點,但角度並非最佳。

圖 15.損失曲線和模型的快照,大約在訓練中途。

在第 1,000 次迭代時,我們可以看到模型已收斂,產生損失最小的模型。

圖 16. 模型的損失曲線和對應的圖表,能與資料完美融合。

圖 16. 模型即將結束的損失曲線和快照。

練習:檢查您的理解程度

在線性迴歸中,梯度下降的角色為何?
梯度下降法是反覆式程序,可找出最佳的權重和偏誤,盡可能地減少損失。
梯度下降可協助您判斷訓練模型時要使用的損失類型,例如 L1 或 L2
梯度下降法不會涉及模型訓練作業的損失函式選擇。
梯度下降會從資料集中移除異常值,以便模型做出更準確的預測。
梯度下降不會變更資料集。

收斂和凸函式

線性模型的損失函式一律會產生面。因此,當線性迴歸模型收斂時,我們就知道模型已找到可產生損失最低的權重和偏差。

如果我們為具有一個特徵的模型繪製損失曲面圖,可以看到其凸形。以下是前述範例中使用的每加侖英哩資料集的損失曲面。權重位於 x 軸,偏差位於 y 軸,損失位於 z 軸:

圖 17. 損失曲面的 3D 圖表。

圖 17. 顯示其凸面形狀的損失表面。

在此範例中,權重 -5.44 和偏誤為 35.94,的損失最低為 5.54:

圖 18. 3D 損失表面的 3D 圖形,底部為 (-5.44、35.94、5.54)。

圖 18. 損失曲面,顯示可產生最低損失的權重和偏差值。

線性模型會在找到最小損失時收斂。因此,額外的疊代作業只會導致梯度下降,以非常小的幅度移動權重和偏差值。如果我們繪製梯度下降法時的權重和偏誤點,看起來就像是沿著山丘向下滾動的球,最終在沒有下斜坡的位置停止。

圖 19. 凸面 3D 損失曲面,其中梯度下降點會移動至最低點。

圖 19:損失圖表顯示梯度下降點停在圖表上最低點。

請注意,黑色損失點會產生損失曲線的確切形狀:先急遽下降,然後逐漸下滑,直到達到損失曲面上的最低點為止。

請注意,模型幾乎永遠不會找出每個權重和偏誤的確切最小值,而是找出接近該權重的值。請務必注意,權重和偏差的最小值並非零損失,而是產生該參數最低損失的值。

使用產生損失最低的權重和偏差值 (在本例中為 -5.44 和 35.94),我們可以繪製模式圖表,瞭解模式與資料的吻合程度:

圖 20. 以 1000s 與每加侖英里數的磅數的圖表,模型符合資料的模型。

圖 20. 模型以產生最低損失的權重和偏誤值繪製而成。

這將是這個資料集的最佳模型,因為沒有其他權重和偏誤值會產生損失較低的模型。