Neural-Networks
使用 Adam Optimizer 解釋訓練損失與迭代中的峰值
我正在使用 i) SGD 和 ii) Adam Optimizer 訓練神經網絡。使用普通 SGD 時,我得到了平滑的訓練損失與迭代曲線,如下所示(紅色曲線)。然而,當我使用 Adam Optimizer 時,訓練損失曲線有一些尖峰。這些尖峰的解釋是什麼?
型號詳情:
14 個輸入節點 -> 2 個隱藏層(100 -> 40 個單元) -> 4 個輸出單元
我正在使用 Adam
beta_1 = 0.9
、beta_2 = 0.999
和epsilon = 1e-8
a 的默認參數batch_size = 32
。
尖峰是 Adam (
batch_size=32
) 中 Mini-Batch Gradient Descent 不可避免的結果。一些小批量“偶然”有用於優化的不幸數據,導致您使用 Adam 在成本函數中看到的那些峰值。如果您嘗試隨機梯度下降(與使用 相同batch_size=1
),您會發現成本函數中有更多的尖峰。在(完整)批量 GD 中不會發生同樣的情況,因為它在每個優化時期都使用所有訓練數據(即批量大小等於訓練集的基數)。正如在您的第一張圖中,成本是單調平穩下降的,似乎標題 ( i) With SGD是錯誤的,並且您使用的是 (Full) Batch Gradient Descent 而不是 SGD。在Coursera 的深度學習課程中,Andrew Ng 使用下圖詳細解釋了這一點: