超參數是用於控制訓練過程各個層面的變數。三個常見的超參數如下:
相反地,參數是模型本身的一部分,例如權重和偏差等變數。換句話說,超參數是您控制的值;參數是模型在訓練期間計算的值。
學習率
學習率是您設定的浮點數,會影響模型收斂的速度。如果學習率太低,模型可能需要很長的時間才能收斂。不過,如果學習率過高,模型就不會收斂,而是會在最小化損失的權重和偏差之間來回擺動。目標是選擇學習率,使其不會過高或過低,以便模型快速收斂。
學習率會決定在梯度下降過程的每個步驟中,權重和偏差的變更幅度。模型會將梯度乘以學習率,以便判斷模型在下一個疊代中的參數 (權重和偏差值)。在梯度下降的第三個步驟中,沿著負斜率移動的「小量」是指學習率。
舊模型參數和新模型參數之間的差異,會與損失函式的斜率成比例。舉例來說,如果斜率很大,模型就會跨大步。如果是小步驟,則需要小步驟。舉例來說,如果梯度的大小為 2.5,學習率為 0.01,則模型會將參數變更為 0.025。
理想的學習率可協助模型在合理的疊代次數內收斂。在圖 21 中,損失曲線顯示模型在前 20 次疊代期間大幅改善,然後開始收斂:
圖 21。損失圖表:顯示以快速收斂的學習率訓練的模型。
相反地,學習率過低可能需要過多迭代才能收斂。在圖 22 中,損失曲線顯示模型在每次疊代後僅有微幅改善:
圖 22. 損失圖表,顯示以低學習率訓練的模型。
學習率過高會導致無法收斂,因為每次疊代都會導致損失值反彈或持續增加。在圖 23 中,損失曲線顯示模型在每次迭代後會先減少,然後再增加損失,而在圖 24 中,損失會在後續迭代中增加:
圖 23. 損失圖表顯示以過高的學習率訓練的模型,損失曲線會大幅波動,隨著疊代次數增加而上下波動。
圖 24. 損失圖表顯示以過高的學習率訓練的模型,其中損失曲線在後續疊代中大幅增加。
練習:檢查您的理解程度
批量
批次大小 是超參數,指的是模型在更新權重和偏差之前處理的樣本數量。您可能會認為,模型應先計算資料集中每個示例的損失,再更新權重和偏差。不過,如果資料集包含數十萬或數百萬個樣本,使用完整批次就沒有實用性。
有兩種常見的技術可在平均情況下取得正確的梯度,無須在更新權重和偏差之前查看資料集中的每個範例,這兩種技術分別是隨機梯度下降法和小批次隨機梯度下降法:
隨機梯度下降 (SGD):隨機梯度下降在每個疊代中只使用單一例項 (批次大小為 1)。在足夠的疊代次數下,SGD 雖然可行,但雜訊相當多。「雜訊」是指訓練期間的變化,會導致損失在迭代期間增加,而非減少。「隨機」一詞表示系統會隨機選擇一個範例,用於組成每個批次。
請注意,在下圖中,當模型使用 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 次。 |