線性迴歸:超參數

「超參數」是控制訓練不同面向的變數,三個常見的超參數如下:

相反地,參數是變數,例如權重和偏差,是模型本身的一部分。換句話說,超參數是您控制的值,而參數則是模型在訓練期間計算的值。

學習率

學習率是您設定的浮點數,會影響模型收斂的速度。如果學習率太低,模型可能需要很長的時間才能收斂。不過,如果學習率過高,模型就不會收斂,而是會在最小化損失的權重和偏差之間來回擺動。目標是選擇學習率,使其不會過高或過低,以便模型快速收斂。

學習率會決定在梯度下降過程的每個步驟中,權重和偏差的變更幅度。模型會將梯度乘以學習率,以便判斷模型在下一個疊代中的參數 (權重和偏差值)。在梯度下降的第三個步驟中,沿著負斜率移動的「小量」是指學習率。

舊模型參數和新模型參數之間的差異,會與損失函式的斜率成比例。舉例來說,如果斜率很大,模型就會跨大步。如果是小步驟,則需要小步驟。舉例來說,如果梯度的大小為 2.5,學習率為 0.01,則模型會將參數變更 0.025。

理想的學習率可協助模型在合理的疊代次數內收斂。在圖 21 中,損失曲線顯示模型在前 20 次疊代期間大幅改善,然後才開始收斂:

圖 21. 損失曲線在平坦之前會顯示陡峭的斜坡。

圖 21. 損失圖,顯示以快速融合的學習率訓練的模型。

相反地,學習率過低可能需要太多迭代才能收斂。在圖 22 中,損失曲線顯示模型在每次疊代後只會略微改善:

圖 22. 損失曲線顯示出近乎 45 度的斜率。

圖 22. 損失圖表,顯示訓練時所用模型的學習率偏低。

如果學習率過高,就永遠不會收縮,因為每次疊代都會導致損失回升或不斷增加。在圖 23 中,損失曲線顯示模型在每次迭代後會先減少,然後再增加損失,而在圖 24 中,損失會在後續迭代中增加:

圖 23. 損失曲線,顯示上下線條。

圖 23. 損失圖表顯示以過高的學習率訓練的模型,損失曲線會大幅波動,隨著疊代次數增加而上下波動。

圖 24. 損失曲線,顯示後續疊代中損失值的增加

圖 24. 損失圖表顯示以過高的學習率訓練的模型,損失曲線在後續疊代中大幅增加。

練習:檢查您的理解程度

理想的學習率為何?
理想的學習率取決於問題。
每個模型和資料集都有各自的理想學習率。
0.01
1.0

批量

批次大小是超參數,指的是模型在更新權重和偏誤值前處理的樣本數量。您可能會認為,模型應先計算資料集中每個示例的損失,再更新權重和偏差。不過,當資料集包含數十萬或甚至數百萬個範例時,使用整批範例並不可行。

有兩種常見的技術可在平均情況下取得正確的梯度,無須在更新權重和偏差之前查看資料集中的每個範例,這兩種技術分別是隨機梯度下降法小批次隨機梯度下降法

  • 隨機梯度下降 (SGD):隨機梯度下降在每個疊代中只使用單一示例 (批次大小為 1)。在足夠的疊代次數下,SGD 雖然可行,但雜訊相當嚴重。「雜訊」是指在訓練期間,造成損失增加 (而非在疊代期間) 的變化。「stochastic」一詞代表由系統隨機選擇包含各批次的範例。

    請注意,在下圖中,當模型使用 SGD 更新權重和偏差時,損失值會略有波動,這可能會導致損失圖表中的雜訊:

    圖 25. 損失曲線陡峭,但有許多細微的波動。

    圖 25. 使用隨機梯度下降 (SGD) 訓練的模型,損失曲線中顯示雜訊。

    請注意,使用隨機梯度下降法會在整個損失曲線產生雜訊,而不只是接近收斂。

  • 小批隨機梯度下降法 (小批 SGD):小批隨機梯度下降法是全批和 SGD 之間的折衷方案。對於 $ N $ 個資料點,批次大小可以是任何大於 1 且小於 $ N $ 的數字。模型會隨機選擇每個批次中包含的範例,平均其梯度,然後在每次迭代中更新權重和偏差。

    每個批次的範例數量取決於資料集和可用的運算資源。一般來說,小批次會像 SGD 一樣運作,而大批次則會像全批次梯度下降一樣運作。

    圖 26. 損失曲線開始趨於平坦,且在收斂時波動幅度大幅降低。

    圖 26。使用小批隨機梯度下降法訓練的模型。

訓練模型時,您可能會認為雜訊屬於不理想的特性,應該消除。不過,適度的噪音有助於提升音質。在後續模組中,您將瞭解雜訊如何協助模型更有效地泛化,並在神經網路中找出最佳權重和偏差。

訓練週期

在訓練期間,訓練週期是指模型已處理訓練集內的每個範例一次。舉例來說,如果訓練集包含 1,000 個範例,而迷你批量大小為 100 個範例,則模型需要進行 10 次iterations才能完成一個訓練週期。

訓練通常需要許多訓練週期。也就是說,系統需要多次處理訓練集的每個範例。

訓練週期數是您在模型開始訓練前設定的超參數。在許多情況下,您需要實驗模型需要多少個週期才能收斂。一般來說,疊代次數越多,模型就越精確,但訓練時間也會增加。

圖 27. 完整批次是整個資料集,迷你批次是資料集的子集,而一個 epoch 則是完整通過十個迷你批次。

圖 27。全批與小批。

下表說明批次大小和迴圈與模型更新參數次數的關係。

批次類型 發生權重和偏誤的更新時
完整批次 模型檢查完資料集中的所有範例後,舉例來說,如果資料集包含 1,000 個示例,且模型訓練 20 個週期,則模型會更新權重和偏差 20 次,每個週期一次。
隨機梯度下降 模型查看資料集的單一示例後。舉例來說,如果資料集包含 1,000 個示例,且訓練 20 個迴圈,則模型會更新權重和偏差 20,000 次。
小批隨機梯度下降法 模型查看每個批次中的範例後。舉例來說,如果資料集包含 1,000 個示例,批次大小為 100,且模型訓練 20 個迴圈,則模型會更新權重和偏差 200 次。

練習:檢查您的理解程度

1. 使用迷你批次 SGD 時的最佳批量為何?
視情況而定
理想的批次大小取決於資料集和可用的運算資源
每個批次 10 個範例
每個批次 100 個範例
2. 以下敘述何者正確?
較大的批次不適合用於有許多異常值的資料。
這是錯誤的說法。透過平均更多梯度的做法,較大的批次大小有助於減少資料中出現離群值的負面影響。
將學習率提高一倍可能會降低訓練速度。
這個敘述正確。將學習率加倍可能會導致學習率過大,進而導致權重「反彈」,增加收斂所需的時間。一如往常,最佳超參數取決於您的資料集和可用的運算資源。