Machine-Learning
Limited-memory BFGS 優於 ADAM 求解器的原因
我正在使用多層感知器MLPClassifier為我的問題訓練分類模型。我注意到當數據集相對較小(小於 100K)時,使用求解器
lbfgs
(我猜這意味著scikit learn 中的有限內存 BFGS )優於ADAM 。有人可以為此提供具體的理由嗎?事實上,我找不到一個很好的資源來解釋其背後的原因。感謝任何參與。謝謝
有很多原因可能會出現這種情況。在我的腦海中,我可以想到一個合理的原因,但是如果不了解更多關於這個問題的信息,很難暗示它就是那個原因。
L-BFGS 求解器是一種真正的準牛頓方法,因為它通過近似 Hessian 估計參數空間的曲率。因此,如果您的參數空間有很多長而近乎平坦的山谷,那麼 L-BFGS 可能會表現良好。它的缺點是在每一步對(逆)Hessian 近似進行秩二更新時會產生額外成本。雖然這相當快,但它確實開始增加,尤其是隨著輸入空間的增長。這可能是因為當您獲得更多數據時,ADAM 的性能優於 L-BFGS。
ADAM 是一種一階方法,它試圖通過調整每個維度的步長來補償它不估計曲率的事實。在某種意義上,這類似於在每一步都構造一個對角 Hessian,但他們通過簡單地使用過去的梯度巧妙地做到了這一點。通過這種方式,它仍然是一階方法,儘管它具有表現得好像它是二階的好處。該估計比 L-BFGS 的估計更粗略,因為它僅沿每個維度進行,並且沒有考慮 Hessian 中的非對角線。如果您的 Hessian 幾乎是奇異的,那麼這些非對角線可能在曲率中起重要作用,並且 ADAM 相對於 BFGS 可能表現不佳。