AdaGrad
常被更新的參數:步伐越來越小
很少被更新的參數:步伐相對比較大
特點:自動調整學習率,適合稀疏資料
optimizer = optim.Adagrad(
model.parameters(),
lr=1e-2, # 初始學習率(可以設大一點)
lr_decay=0, # 學習率衰減
weight_decay=0, # 權重衰減
eps=1e-10 # 數值穩定性
)
也就是說,它會根據「過去累積的梯度大小」來調整每個參數的 learning rate:
-
梯度累積很大 → 覺得這個參數已經調很多了 → 之後更新變小
-
梯度累積很小 → 覺得還沒怎麼調過 → 之後可以走大一點
AdaGrad 有個很大的問題:
-
它對「過去所有梯度」做累積,時間一久,有效 learning rate 會越來越小,小到幾乎不動
-
所以訓練後期可能變得超級慢,甚至像停住一樣
-
後來才有 RMSprop、Adam 這些改良版出來解決這個問題
優點:
-
不需手動調整學習率
-
適合稀疏梯度
缺點:
-
學習率衰減過快
-
後期幾乎不更新
適用場景:
-
NLP 任務
-
稀疏資料