線性迴歸:梯度下降

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

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

  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 圖表,底部為 (-5.44, 35.94, 5.54)。

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

線性模型會在找到最小損失時收斂。因此,額外的疊代作業只會導致梯度下降,以非常小的幅度移動權重和偏差值。如果我們在梯度下降期間繪製權重和偏差點,這些點看起來就像從山頂滾下來的球,最後停在沒有下坡的點。

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

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

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

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

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

圖 20. 以圖表呈現以 1000 為單位的磅與每加侖英里數,以及模型如何擬合資料。

圖 20. 使用產生損失最小的權重和偏差值繪製的模型圖表。

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