這樣理解【Transformer中的超參數(shù)】,中學生都能看懂!
當我們想構建高性能的機器學習和 AI 系統(tǒng)時,僅僅訓練單個模型和系統(tǒng)往往是不夠的。通常在開發(fā)中需要構建多個模型,使用多種不同的算法,然后將不同的模型相互比較,看看哪個模型最好。此外,在比較過程中還需要 “調(diào)整” 每種不同算法的設置,以使它們以最佳方式(或接近最佳)執(zhí)行。
所以大多數(shù)機器學習算法都有 “設置”,我們可以稱之為超參數(shù),使用超參數(shù)是機器學習的重要組成部分。
一、什么是超參數(shù)
在機器學習和人工智能中,超參數(shù)(Hyperparameters) 是指在訓練模型之前需要設置的參數(shù),它們的值無法通過訓練數(shù)據(jù)直接學習獲得,而是由開發(fā)者手動設定或通過某種搜索方法調(diào)整的,所以超參數(shù)在模型的構建和對其性能的影響起著至關重要的作用,選擇合適的超參數(shù)可以顯著提升模型的效果。
簡單地理解,超參數(shù)就是機器學習算法的各種設置數(shù)值。這些超參數(shù)不僅改變算法的工作方式,并改變訓練過程的結果。超參數(shù)是機器學習開發(fā)者手動設置的參數(shù)。盡管有多種方法可以為超參數(shù)選擇最佳值,但需要了解的重要一點是,機器學習開發(fā)者或數(shù)據(jù)科學家需要嘗試使用這些設置值,以找到讓模型獲得較高性能的最佳值。從這個意義上說,模型超參數(shù)就像一臺設備上的設置。例如,吉他放大器通常具有多個旋鈕和開關,例如音量、增益、低音、高音等旋鈕。
而與之相對的是模型參數(shù)(Model Parameters),這些參數(shù)是通過訓練數(shù)據(jù)學習得到的,在訓練過程中由算法本身更新。例如線性回歸中的權重和偏置項,深度神經(jīng)網(wǎng)絡中的權重矩陣等。
重要的是,我們在模型應用開發(fā)中需要區(qū)分超參數(shù)和學習參數(shù)。
二、Transformer框架中的超參數(shù)

在 Transformer 框架中,有許多可以調(diào)整的超參數(shù),這些超參數(shù)直接影響模型的性能、訓練速度和資源消耗。以下是 Transformer 框架中常用的超參數(shù)分類和優(yōu)化建議:
1. 模型結構相關的超參數(shù)
這些超參數(shù)決定了 Transformer 的架構復雜度和表達能力。
1.1 模型維度(Embedding Size 或 Hidden Size, (d_{model}))
作用: 決定每個輸入 token 被映射的向量維度,同時也是多頭注意力和前饋層的維度基礎。
常見值:128、256、512、768、1024。
調(diào)整建議:
- 小任務或資源有限時使用較小的值(如128或256)。
- 大規(guī)模任務(如 GPT、BERT)常用768或更高(如1024、2048)。
- 增大維度可以提高模型的容量,但也會顯著增加計算成本和顯存需求。
1.2 層數(shù)(Number of Layers, (L))
作用:Transformer 的深度,即編碼器和解碼器的層數(shù)(或僅編碼器的層數(shù),取決于具體任務)。
常見值:
- BERT Base: 12 層。
- BERT Large: 24 層。
- GPT-3: 從 12 層到 96 層。
調(diào)整建議:
- 對小數(shù)據(jù)集任務,選擇6-12層。
- 對大規(guī)模數(shù)據(jù)集任務,選擇12層及以上。
- 增加層數(shù)會提高模型表達能力,但可能導致訓練時間增長且更容易過擬合。
1.3 注意力頭數(shù)(Number of Attention Heads, (h))
作用:每層多頭注意力機制中的頭數(shù)。
常見值: 4、8、12、16。
調(diào)整建議:(h) 應滿足 (d_{model}) 可被 (h) 整除(每個頭的維度為 (d_{head} = d_{model} / h))。
- 小模型任務:4或8頭。
- 大規(guī)模任務:12或16頭。
- 增加頭數(shù)可以提高模型捕獲不同子空間信息的能力,但也會增加計算開銷。
1.4 前饋層維度(Feedforward Dimension, (d_{ffn}))
作用:前饋全連接層的隱藏層維度,通常是 (d_{model}) 的 3-4 倍。
常見值:2048、3072、4096。
調(diào)整建議:典型值是 (d_{ffn} = 4 \times d_{model})(如 BERT Base 中,(d_{model}=768),(d_{ffn}=3072))。
可以根據(jù)任務復雜度和資源調(diào)整,較小的任務可以用 (2 \times d_{model})。
1.5 最大序列長度(Max Sequence Length, (L_{max}))
作用:輸入序列的最大長度,影響位置編碼和內(nèi)存占用。
常見值:128、256、512、1024。
調(diào)整建議:
- 短文本任務:128或256。
- 長文本任務:512或更高。
- 增大序列長度會顯著增加計算和內(nèi)存需求(復雜度為 (O(L^2)))。
1.6 Dropout 比例
作用:防止過擬合,通過隨機丟棄神經(jīng)元來提升泛化能力。
常見值:0.1、0.2。
調(diào)整建議:
- 對于大規(guī)模數(shù)據(jù)集,Dropout 比例可以較低(如 0.1)。
- 小數(shù)據(jù)集可以增加 Dropout 比例(如 0.2-0.3)。
2. 優(yōu)化相關的超參數(shù)
這些超參數(shù)影響模型的學習過程。
2.1 學習率(Learning Rate, (lr))
作用:控制參數(shù)更新的步長。
常見值:
- Adam 優(yōu)化器:(1e-4) 或 (5e-5)。
- 學習率調(diào)度器(如 Warmup)后,峰值學習率通常在 (1e-4) 左右。
調(diào)整建議:
- 使用 Warmup 學習率調(diào)度器(如在前 10,000 步逐漸增加學習率,然后逐漸衰減)。
- 調(diào)整學習率范圍:(1e-5) 到 (1e-3),根據(jù)任務復雜度和模型大小選擇。
2.2 學習率調(diào)度器(Learning Rate Scheduler)
作用:動態(tài)調(diào)整學習率以提高收斂速度。
常見方法:
- 線性衰減(Linear Decay):學習率線性遞減。
- 余弦退火(Cosine Annealing):學習率以余弦曲線遞減。
- Warmup + 衰減:先逐步增加學習率到峰值,再逐步衰減。
調(diào)整建議:
對 Transformer,Warmup 通常設置為 10% 的總訓練步數(shù)(如 10,000 步)。
2.3 優(yōu)化器
常見優(yōu)化器:
- Adam(常用)。
- AdamW(帶權重衰減,效果更佳)。
調(diào)整建議:
- AdamW 是 Transformer 默認選擇,推薦設置 (\beta_1 = 0.9),(\beta_2 = 0.98),(\epsilon = 1e-6)。
- 權重衰減系數(shù)(Weight Decay):通常為 (1e-2) 或 (1e-3)。
2.4 批量大小(Batch Size)
作用:每次更新模型參數(shù)時使用的樣本數(shù)量。
常見值:16、32、64、128。
調(diào)整建議:
- 根據(jù)顯存大小選擇合適的批量大小。
- 如果顯存不足,可以使用梯度累積(Gradient Accumulation)模擬大批量訓練。
3. 正則化相關的超參數(shù)
為了防止過擬合,Transformer 框架中可以使用以下正則化技術。
3.1 Dropout 比例
作用:隨機丟棄部分神經(jīng)元。
常見值:0.1。
調(diào)整建議:
- 在注意力層、前饋層和嵌入層后都可以使用 Dropout。
- 小數(shù)據(jù)集任務可以增加 Dropout 比例。
3.2 Label Smoothing
作用:在分類任務中,將目標標簽的分布平滑化,防止模型過擬合。
常見值:0.1。
調(diào)整建議:在分類任務中廣泛使用,推薦設置為 0.1。
4. 數(shù)據(jù)相關的超參數(shù)
Transformer 的性能也受數(shù)據(jù)處理和增強策略的影響。
4.1 數(shù)據(jù)增強
作用:增加訓練數(shù)據(jù)的多樣性。
常見策略:
- 文本任務:隨機刪除、同義詞替換、句子順序打亂。
- 圖像任務(如 Vision Transformer, ViT):隨機裁剪、翻轉(zhuǎn)、旋轉(zhuǎn)。
- 時間序列任務:時間偏移、幅度縮放。
4.2 Tokenization 的詞匯大小(Vocabulary Size, (V))
作用:影響嵌入層的大小和模型的詞匯覆蓋率。
常見值:
- BERT:30,000。
- GPT-2:50,000。
調(diào)整建議:
- 小任務可以減少詞匯大小以節(jié)省內(nèi)存。
- 多語言任務需要更大的詞匯表。
5. 特定任務相關的超參數(shù)
- 解碼長度(Decoding Length):在生成任務(如翻譯、文本生成)中,調(diào)整最大生成序列的長度。
- Beam Search 大小:調(diào)整生成任務中的 Beam Search 寬度(常見值為3-10)。
- 損失函數(shù):根據(jù)任務選擇合適的損失函數(shù)(如交叉熵、KL散度、回歸誤差等)。?
三、總結
在深度神經(jīng)網(wǎng)絡中,可以通過調(diào)整網(wǎng)絡結構、優(yōu)化算法、正則化方法和訓練策略等多方面的超參數(shù)來提升性能。建議遵循以下策略:
1. 優(yōu)先調(diào)整關鍵超參數(shù)(如學習率、網(wǎng)絡深度、批量大小)。
2. 使用驗證集評估超參數(shù)的效果。
3. 結合自動調(diào)參工具(如Grid Search、Random Search、Bayesian Optimization或Optuna)進行超參數(shù)優(yōu)化。
本文轉(zhuǎn)載自?????碼農(nóng)隨心筆記?????,作者:碼農(nóng)隨心筆記

















