基於梯度的學習算法與神經網絡的全局優化學習算法
神經網絡通常使用基於梯度的學習算法進行訓練,例如反向傳播算法或其一些變體,但您可以使用全局優化算法,例如遺傳算法、Nelder-Mead 多面體算法和粒子群優化算法來訓練網絡?
由於訓練神經網絡歸結為最小化多變量成本函數,我認為使用全局優化方法應該很容易做到這一點,但我自己嘗試過,但結果很糟糕.
GA 算法將我的成本函數從大約 250(當它輸入隨機突觸權重時)降低到僅大約 170。Nelder-Mead 算法顯然需要數年時間,我還沒有嘗試過 PSO,因為沒有內置的 MATLAB 函數為了它。
那麼,基於梯度的算法最適合訓練神經網絡是不是就被接受了?如果是這樣,有人可以向我指出此信息的來源嗎?這將非常有幫助,因為我可以參考項目中的源代碼來解釋為什麼我放棄嘗試使用全局優化方法來訓練網絡。
謝謝!
閱讀您的問題,我了解您認為“全局優化方法”總是提供全局最優值,無論您正在處理什麼功能。這種想法是非常錯誤的。首先,其中一些算法確實給出了全局最優值,但實際上對於大多數函數,它們並沒有……而且不要忘記沒有免費的午餐定理。
某些類型的函數很容易優化(例如凸函數),但大多數時候,特別是對於神經網絡訓練標準,你有:非線性 - 非凸性(即使對於簡單的網絡,情況並非如此)。 ..這些是非常討厭的優化功能(主要是因為它們具有病態曲率)。那麼為什麼要漸變呢?因為一階方法具有良好的屬性,尤其是它們是可擴展的。為什麼不是高階?無法應用牛頓法,因為您有太多參數,因此您不能希望有效地反轉 Hessian 矩陣。
因此有很多基於二階方法的變體,但僅依賴於一階計算:hessian free optimization、Nesterov gradient、moment method 等…
所以,是的,一階方法和近似二階方法是我們目前能做的最好的,因為其他一切都不能很好地工作。
我建議了解更多細節:Y. Bengio 的“Learning deep architectures for AI”。這本書:“神經網絡:行業技巧”和 Ilya Sutskever 博士論文。