「超參數」是控制訓練不同面向的變數,三個常見的超參數如下:
相反地,參數是變數,例如權重和偏差,是模型本身的一部分。換句話說,超參數是您控制的值,而參數則是模型在訓練期間計算的值。
學習率
學習率是您設定的浮點數,會影響模型收斂的速度。如果學習率太低,模型可能需要很長的時間才能收斂。不過,如果學習率過高,模型就不會收斂,而是會在最小化損失的權重和偏差之間來回擺動。目標是選擇學習率,使其不會過高或過低,以便模型快速收斂。
學習率會決定在梯度下降過程的每個步驟中,權重和偏差的變更幅度。模型會將梯度乘以學習率,以便判斷模型在下一個疊代中的參數 (權重和偏差值)。在梯度下降的第三個步驟中,沿著負斜率移動的「小量」是指學習率。
舊模型參數和新模型參數之間的差異,會與損失函式的斜率成比例。舉例來說,如果斜率很大,模型就會跨大步。如果是小步驟,則需要小步驟。舉例來說,如果梯度的大小為 2.5,學習率為 0.01,則模型會將參數變更 0.025。
理想的學習率可協助模型在合理的疊代次數內收斂。在圖 21 中,損失曲線顯示模型在前 20 次疊代期間大幅改善,然後才開始收斂:
圖 21. 損失圖,顯示以快速融合的學習率訓練的模型。
相反地,學習率過低可能需要太多迭代才能收斂。在圖 22 中,損失曲線顯示模型在每次疊代後只會略微改善:
圖 22. 損失圖表,顯示訓練時所用模型的學習率偏低。
如果學習率過高,就永遠不會收縮,因為每次疊代都會導致損失回升或不斷增加。在圖 23 中,損失曲線顯示模型在每次迭代後會先減少,然後再增加損失,而在圖 24 中,損失會在後續迭代中增加:
圖 23. 損失圖表顯示以過高的學習率訓練的模型,損失曲線會大幅波動,隨著疊代次數增加而上下波動。
圖 24. 損失圖表顯示以過高的學習率訓練的模型,損失曲線在後續疊代中大幅增加。
練習:檢查您的理解程度
批量
批次大小是超參數,指的是模型在更新權重和偏誤值前處理的樣本數量。您可能會認為,模型應先計算資料集中每個示例的損失,再更新權重和偏差。不過,當資料集包含數十萬或甚至數百萬個範例時,使用整批範例並不可行。
有兩種常見的技術可在平均情況下取得正確的梯度,無須在更新權重和偏差之前查看資料集中的每個範例,這兩種技術分別是隨機梯度下降法和小批次隨機梯度下降法:
隨機梯度下降 (SGD):隨機梯度下降在每個疊代中只使用單一示例 (批次大小為 1)。在足夠的疊代次數下,SGD 雖然可行,但雜訊相當嚴重。「雜訊」是指在訓練期間,造成損失增加 (而非在疊代期間) 的變化。「stochastic」一詞代表由系統隨機選擇包含各批次的範例。
請注意,在下圖中,當模型使用 SGD 更新權重和偏差時,損失值會略有波動,這可能會導致損失圖表中的雜訊:
圖 25. 使用隨機梯度下降 (SGD) 訓練的模型,損失曲線中顯示雜訊。
請注意,使用隨機梯度下降法會在整個損失曲線產生雜訊,而不只是接近收斂。
小批隨機梯度下降法 (小批 SGD):小批隨機梯度下降法是全批和 SGD 之間的折衷方案。對於 $ N $ 個資料點,批次大小可以是任何大於 1 且小於 $ N $ 的數字。模型會隨機選擇每個批次中包含的範例,平均其梯度,然後在每次迭代中更新權重和偏差。
每個批次的範例數量取決於資料集和可用的運算資源。一般來說,小批次會像 SGD 一樣運作,而大批次則會像全批次梯度下降一樣運作。
圖 26。使用小批隨機梯度下降法訓練的模型。
訓練模型時,您可能會認為雜訊屬於不理想的特性,應該消除。不過,適度的噪音有助於提升音質。在後續模組中,您將瞭解雜訊如何協助模型更有效地泛化,並在神經網路中找出最佳權重和偏差。
訓練週期
在訓練期間,訓練週期是指模型已處理訓練集內的每個範例一次。舉例來說,如果訓練集包含 1,000 個範例,而迷你批量大小為 100 個範例,則模型需要進行 10 次iterations才能完成一個訓練週期。
訓練通常需要許多訓練週期。也就是說,系統需要多次處理訓練集的每個範例。
訓練週期數是您在模型開始訓練前設定的超參數。在許多情況下,您需要實驗模型需要多少個週期才能收斂。一般來說,疊代次數越多,模型就越精確,但訓練時間也會增加。
圖 27。全批與小批。
下表說明批次大小和迴圈與模型更新參數次數的關係。
批次類型 | 發生權重和偏誤的更新時 |
---|---|
完整批次 | 模型檢查完資料集中的所有範例後,舉例來說,如果資料集包含 1,000 個示例,且模型訓練 20 個週期,則模型會更新權重和偏差 20 次,每個週期一次。 |
隨機梯度下降 | 模型查看資料集的單一示例後。舉例來說,如果資料集包含 1,000 個示例,且訓練 20 個迴圈,則模型會更新權重和偏差 20,000 次。 |
小批隨機梯度下降法 | 模型查看每個批次中的範例後。舉例來說,如果資料集包含 1,000 個示例,批次大小為 100,且模型訓練 20 個迴圈,則模型會更新權重和偏差 200 次。 |