RMSprop
可以先把它當成「自動調整 learning rate 的加強版 SGD」
RMSprop 會根據「最近一段時間的梯度大小」,自動幫每個參數調整步伐大小
特點:Adam的前身,適合RNN
直觀感覺:
-
某個參數的梯度常常很大 → RMSprop 會讓它走「小步」,避免亂跳
-
某個參數的梯度一直很小 → 讓它走「大一點的步」,避免卡住不動
所以它特別適合:
-
梯度很「不穩定」的情況(例如 RNN、強化學習),CNN 也常用
-
想要比純 SGD 更穩定、更快收斂,但又不一定要用到 Adam
optimizer = optim.RMSprop(
model.parameters(),
lr=1e-3, # 學習率
alpha=0.99, # 平滑常數
eps=1e-8, # 數值穩定性
weight_decay=0, # 權重衰減
momentum=0 # 動量
)
和 Adam / SGD 比較
-
跟 SGD 比:
- RMSprop:每個參數都有「自己的動態 lr」,通常收斂更穩、更快
-
跟 Adam 比:
-
RMSprop:只看「梯度平方的平均」,
-
Adam:同時看「梯度平均」+「梯度平方平均」,通常更好調、也更常當預設
-
優點:
-
適合非平穩目標
-
適合 RNN/LSTM
缺點:
-
不如 Adam/AdamW 流行
-
調參較麻煩
適用場景:
-
RNN、LSTM 訓練
-
在線學習
相關筆記
- 優化器:優化器總覽
- AdaGrad:前身
- Adam(Adaptive Moment Estimation):RMSprop + 動量