Neural-Networks

使用 Adam Optimizer 解釋訓練損失與迭代中的峰值

  • September 19, 2017

我正在使用 i) SGD 和 ii) Adam Optimizer 訓練神經網絡。使用普通 SGD 時,我得到了平滑的訓練損失與迭代曲線,如下所示(紅色曲線)。然而,當我使用 Adam Optimizer 時,訓練損失曲線有一些尖峰。這些尖峰的解釋是什麼?

型號詳情:

14 個輸入節點 -> 2 個隱藏層(100 -> 40 個單元) -> 4 個輸出單元

我正在使用 Adam beta_1 = 0.9beta_2 = 0.999epsilon = 1e-8a 的默認參數batch_size = 32

i) 與新元 ii) 與亞當新元

與亞當

尖峰是 Adam ( batch_size=32) 中 Mini-Batch Gradient Descent 不可避免的結果。一些小批量“偶然”有用於優化的不幸數據,導致您使用 Adam 在成本函數中看到的那些峰值。如果您嘗試隨機梯度下降(與使用 相同batch_size=1),您會發現成本函數中有更多的尖峰。在(完整)批量 GD 中不會發生同樣的情況,因為它在每個優化時期都使用所有訓練數據(即批量大小等於訓練集的基數)。正如在您的第一張圖中,成本是單調平穩下降的,似乎標題 ( i) With SGD是錯誤的,並且您使用的是 (Full) Batch Gradient Descent 而不是 SGD。

Coursera 的深度學習課程中,Andrew Ng 使用下圖詳細解釋了這一點:

成本函數

引用自:https://stats.stackexchange.com/questions/303857

comments powered by Disqus