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

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

Research Note

Adam(Adaptive Moment Estimation)

Adam(Adaptive Moment Estimation)

在 SGD 基礎上,自動幫每個參數調 learning rate,還順便幫你加好 momentum。

可以把 Adam 想成:

特點:自適應學習率,每個參數有獨立的學習率

optimizer = optim.Adam(
    model.parameters(),
    lr=1e-3,                  # 學習率
    betas=(0.9, 0.999),       # 一階和二階動量的衰減率
    eps=1e-8,                 # 數值穩定性
    weight_decay=0,           # 注意:在 Adam 中不建議使用
    amsgrad=False             # 是否使用 AMSGrad 變體
)

參數說明:

參數說明推薦值
lr學習率1e-3 ~ 1e-4
betas(β1, β2) 動量參數(0.9, 0.999)
eps防止除零1e-8
weight_decay不建議使用0

數學原理(簡化):

m_t = β1 × m_(t-1) + (1-β1) × gradient     # 一階動量
v_t = β2 × v_(t-1) + (1-β2) × gradient²    # 二階動量
weight_new = weight - lr × m_t / (√v_t + ε)

優點:

缺點:

什麼情況我會建議你用 Adam?

等你比較熟了,想追更好泛化(test accuracy)時,可以再嘗試從 Adam 換成 SGD+Momentum。


相關筆記