LinDragon 筆記圖書館2026年10月
Journal of CNN

卷積神經網路 · 優化器 · 學習率調度

Research Note

分層學習率 (Layer-wise Learning Rate)

分層學習率 (Layer-wise Learning Rate)

為什麼需要分層學習率?

概念: 不同層使用不同的學習率

原因:

  1. 預訓練模型微調:前面的層已經學到很好的特徵,不應該大幅改動

  2. 不同層的重要性:越靠近輸出層,越需要針對任務調整

  3. 訓練穩定性:避免破壞底層的良好特徵

比喻:

想像一個熟練的廚師(預訓練模型):
- 基本刀工(前幾層):已經很熟練,只需微調 → 小學習率
- 調味技巧(中間層):需要適應新口味 → 中學習率
- 菜單設計(最後層):完全重新學習 → 大學習率

實作範例

範例 1:CNN 微調(如 GoogLeNet)

optimizer = optim.AdamW([
    # 前面的卷積層(低階特徵)
    {'params': model.conv1.parameters(), 
     'lr': 1e-5, 'weight_decay': 1e-4},
    {'params': model.conv2.parameters(), 
     'lr': 1e-5, 'weight_decay': 1e-4},
    
    # 中間的 Inception 層(中階特徵)
    {'params': model.inception3a.parameters(), 
     'lr': 5e-5, 'weight_decay': 5e-4},
    {'params': model.inception3b.parameters(), 
     'lr': 5e-5, 'weight_decay': 5e-4},
    
    # 後面的 Inception 層(高階特徵)
    {'params': model.inception5a.parameters(), 
     'lr': 1e-4, 'weight_decay': 1e-3},
    {'params': model.inception5b.parameters(), 
     'lr': 1e-4, 'weight_decay': 1e-3},
    
    # 分類層(任務相關)
    {'params': model.fc.parameters(), 
     'lr': 1e-3, 'weight_decay': 1e-2}
])

範例 2:簡化版(3 組)

optimizer = optim.AdamW([
    # 組 1:底層特徵(凍結或微調)
    {'params': [
        *model.layer1.parameters(),
        *model.layer2.parameters()
    ], 'lr': 1e-5, 'weight_decay': 1e-4},
    
    # 組 2:中層特徵
    {'params': [
        *model.layer3.parameters(),
        *model.layer4.parameters()
    ], 'lr': 1e-4, 'weight_decay': 5e-4},
    
    # 組 3:分類層
    {'params': model.fc.parameters(), 
     'lr': 1e-3, 'weight_decay': 1e-2}
])

設定原則

學習率梯度:

層級          學習率      倍數關係
─────────────────────────────────
Input Layer   1e-6       ×1
Layer 1-2     1e-5       ×10
Layer 3-4     5e-5       ×50
Layer 5-6     1e-4       ×100
Layer 7-8     5e-4       ×500
Output Layer  1e-3       ×1000

經驗法則:

  1. 底層 → 頂層:學習率逐漸增大(通常 10 倍關係)

  2. 預訓練模型:底層 1e-6 ~ 1e-5,頂層 1e-3 ~ 1e-2

  3. 從零訓練:各層學習率差異不要太大(3-5 倍即可)

權重衰減梯度:

層級          Weight Decay
─────────────────────────────
Input Layer   1e-5 (輕)
Middle Layer  1e-4 (中)
Output Layer  1e-3 ~ 1e-2 (重)

相關筆記