這樣理解【Transformer中的超參數】,中學生都能看懂!
當我們想構建高性能的機器學習和 AI 系統時,僅僅訓練單個模型和系統往往是不夠的。通常在開發中需要構建多個模型,使用多種不同的算法,然后將不同的模型相互比較,看看哪個模型最好。此外,在比較過程中還需要 “調整” 每種不同算法的設置,以使它們以最佳方式(或接近最佳)執行。
所以大多數機器學習算法都有 “設置”,我們可以稱之為超參數,使用超參數是機器學習的重要組成部分。
一、什么是超參數
在機器學習和人工智能中,超參數(Hyperparameters) 是指在訓練模型之前需要設置的參數,它們的值無法通過訓練數據直接學習獲得,而是由開發者手動設定或通過某種搜索方法調整的,所以超參數在模型的構建和對其性能的影響起著至關重要的作用,選擇合適的超參數可以顯著提升模型的效果。
簡單地理解,超參數就是機器學習算法的各種設置數值。這些超參數不僅改變算法的工作方式,并改變訓練過程的結果。超參數是機器學習開發者手動設置的參數。盡管有多種方法可以為超參數選擇最佳值,但需要了解的重要一點是,機器學習開發者或數據科學家需要嘗試使用這些設置值,以找到讓模型獲得較高性能的最佳值。從這個意義上說,模型超參數就像一臺設備上的設置。例如,吉他放大器通常具有多個旋鈕和開關,例如音量、增益、低音、高音等旋鈕。
而與之相對的是模型參數(Model Parameters),這些參數是通過訓練數據學習得到的,在訓練過程中由算法本身更新。例如線性回歸中的權重和偏置項,深度神經網絡中的權重矩陣等。
重要的是,我們在模型應用開發中需要區分超參數和學習參數。
二、Transformer框架中的超參數
在 Transformer 框架中,有許多可以調整的超參數,這些超參數直接影響模型的性能、訓練速度和資源消耗。以下是 Transformer 框架中常用的超參數分類和優化建議:
1. 模型結構相關的超參數
這些超參數決定了 Transformer 的架構復雜度和表達能力。
1.1 模型維度(Embedding Size 或 Hidden Size, (d_{model}))
作用: 決定每個輸入 token 被映射的向量維度,同時也是多頭注意力和前饋層的維度基礎。
常見值:128、256、512、768、1024。
調整建議:
- 小任務或資源有限時使用較小的值(如128或256)。
- 大規模任務(如 GPT、BERT)常用768或更高(如1024、2048)。
- 增大維度可以提高模型的容量,但也會顯著增加計算成本和顯存需求。
1.2 層數(Number of Layers, (L))
作用:Transformer 的深度,即編碼器和解碼器的層數(或僅編碼器的層數,取決于具體任務)。
常見值:
- BERT Base: 12 層。
- BERT Large: 24 層。
- GPT-3: 從 12 層到 96 層。
調整建議:
- 對小數據集任務,選擇6-12層。
- 對大規模數據集任務,選擇12層及以上。
- 增加層數會提高模型表達能力,但可能導致訓練時間增長且更容易過擬合。
1.3 注意力頭數(Number of Attention Heads, (h))
作用:每層多頭注意力機制中的頭數。
常見值: 4、8、12、16。
調整建議:(h) 應滿足 (d_{model}) 可被 (h) 整除(每個頭的維度為 (d_{head} = d_{model} / h))。
- 小模型任務:4或8頭。
- 大規模任務:12或16頭。
- 增加頭數可以提高模型捕獲不同子空間信息的能力,但也會增加計算開銷。
1.4 前饋層維度(Feedforward Dimension, (d_{ffn}))
作用:前饋全連接層的隱藏層維度,通常是 (d_{model}) 的 3-4 倍。
常見值:2048、3072、4096。
調整建議:典型值是 (d_{ffn} = 4 \times d_{model})(如 BERT Base 中,(d_{model}=768),(d_{ffn}=3072))。
可以根據任務復雜度和資源調整,較小的任務可以用 (2 \times d_{model})。
1.5 最大序列長度(Max Sequence Length, (L_{max}))
作用:輸入序列的最大長度,影響位置編碼和內存占用。
常見值:128、256、512、1024。
調整建議:
- 短文本任務:128或256。
- 長文本任務:512或更高。
- 增大序列長度會顯著增加計算和內存需求(復雜度為 (O(L^2)))。
1.6 Dropout 比例
作用:防止過擬合,通過隨機丟棄神經元來提升泛化能力。
常見值:0.1、0.2。
調整建議:
- 對于大規模數據集,Dropout 比例可以較低(如 0.1)。
- 小數據集可以增加 Dropout 比例(如 0.2-0.3)。
2. 優化相關的超參數
這些超參數影響模型的學習過程。
2.1 學習率(Learning Rate, (lr))
作用:控制參數更新的步長。
常見值:
- Adam 優化器:(1e-4) 或 (5e-5)。
- 學習率調度器(如 Warmup)后,峰值學習率通常在 (1e-4) 左右。
調整建議:
- 使用 Warmup 學習率調度器(如在前 10,000 步逐漸增加學習率,然后逐漸衰減)。
- 調整學習率范圍:(1e-5) 到 (1e-3),根據任務復雜度和模型大小選擇。
2.2 學習率調度器(Learning Rate Scheduler)
作用:動態調整學習率以提高收斂速度。
常見方法:
- 線性衰減(Linear Decay):學習率線性遞減。
- 余弦退火(Cosine Annealing):學習率以余弦曲線遞減。
- Warmup + 衰減:先逐步增加學習率到峰值,再逐步衰減。
調整建議:
對 Transformer,Warmup 通常設置為 10% 的總訓練步數(如 10,000 步)。
2.3 優化器
常見優化器:
- Adam(常用)。
- AdamW(帶權重衰減,效果更佳)。
調整建議:
- AdamW 是 Transformer 默認選擇,推薦設置 (\beta_1 = 0.9),(\beta_2 = 0.98),(\epsilon = 1e-6)。
- 權重衰減系數(Weight Decay):通常為 (1e-2) 或 (1e-3)。
2.4 批量大?。˙atch Size)
作用:每次更新模型參數時使用的樣本數量。
常見值:16、32、64、128。
調整建議:
- 根據顯存大小選擇合適的批量大小。
- 如果顯存不足,可以使用梯度累積(Gradient Accumulation)模擬大批量訓練。
3. 正則化相關的超參數
為了防止過擬合,Transformer 框架中可以使用以下正則化技術。
3.1 Dropout 比例
作用:隨機丟棄部分神經元。
常見值:0.1。
調整建議:
- 在注意力層、前饋層和嵌入層后都可以使用 Dropout。
- 小數據集任務可以增加 Dropout 比例。
3.2 Label Smoothing
作用:在分類任務中,將目標標簽的分布平滑化,防止模型過擬合。
常見值:0.1。
調整建議:在分類任務中廣泛使用,推薦設置為 0.1。
4. 數據相關的超參數
Transformer 的性能也受數據處理和增強策略的影響。
4.1 數據增強
作用:增加訓練數據的多樣性。
常見策略:
- 文本任務:隨機刪除、同義詞替換、句子順序打亂。
- 圖像任務(如 Vision Transformer, ViT):隨機裁剪、翻轉、旋轉。
- 時間序列任務:時間偏移、幅度縮放。
4.2 Tokenization 的詞匯大?。╒ocabulary Size, (V))
作用:影響嵌入層的大小和模型的詞匯覆蓋率。
常見值:
- BERT:30,000。
- GPT-2:50,000。
調整建議:
- 小任務可以減少詞匯大小以節省內存。
- 多語言任務需要更大的詞匯表。
5. 特定任務相關的超參數
- 解碼長度(Decoding Length):在生成任務(如翻譯、文本生成)中,調整最大生成序列的長度。
- Beam Search 大?。赫{整生成任務中的 Beam Search 寬度(常見值為3-10)。
- 損失函數:根據任務選擇合適的損失函數(如交叉熵、KL散度、回歸誤差等)。?
三、總結
在深度神經網絡中,可以通過調整網絡結構、優化算法、正則化方法和訓練策略等多方面的超參數來提升性能。建議遵循以下策略:
1. 優先調整關鍵超參數(如學習率、網絡深度、批量大?。?/p>
2. 使用驗證集評估超參數的效果。
3. 結合自動調參工具(如Grid Search、Random Search、Bayesian Optimization或Optuna)進行超參數優化。
本文轉載自?????碼農隨心筆記?????,作者:碼農隨心筆記
