| StepLR | 像樓梯:一段時間不變,到了某個 epoch 突然降一階 | step_size:隔幾個 epoch 降一次;gamma:每次乘多少(如 0.1) | 實作簡單;常見設定(如 30, 60, 90)在分類 CNN 上很好用 | lr 是「突然跳變」;需要事先猜大概什麼 epoch 降 | 做 CIFAR‑10/Imagenet 類 CNN,照論文設定 epoch 30/60/90 衰減,很常見的 baseline |
| MultiStepLR | 還是樓梯,但「哪幾階要降」自己指定 | milestones=[30,60,90] 等;gamma 同上 | 比 StepLR 更靈活,適合你已經有想好的關鍵 epoch | 里程碑要自己設,錯設可能浪費訓練 | 跟隨某篇 paper 的 schedule 時,用 MultiStepLR 很方便直接對齊 |
| ExponentialLR | 平滑指數曲線:每個 epoch 都按固定比例慢慢變小 | gamma:每步乘的比例(0.9、0.95、0.99 等) | 不用設里程碑;lr 連續變化、不會突然跳 | 早期降得太快或太慢要靠經驗調 gamma | 想要「一直慢慢變小」的簡單策略,訓練時間預估不準時也好用 |
| CosineAnnealingLR | 半個餘弦形狀:一開始降比較快,後期很平滑地貼近 0 | T_max:一個「餘弦周期」的 epoch 數;eta_min:最低 lr | 幾乎不用選很多點;長訓練常有不錯效果,收斂穩定 | 需要大概知道訓練總 epoch(好設 T_max) | 訓練 ResNet/大 CNN 跑很多 epoch,又懶得設一堆 milestones 時,很推薦 |
| ReduceLROnPlateau | 沒固定形狀:看驗證集有沒有進步,卡住一段時間才降 | mode(看 min 或 max)、factor(衰減倍數)、patience(多久沒進步才降) | 真正「自適應」:loss/acc 不進步才降 lr,比較聰明 | 必須用驗證指標來 step();調 patience 等參數要點經驗 | 你不確定什麼時候該降 lr,或想用 early‑stopping+動態 lr 搭配時很適合 |