梯度下降演算法中的初始值和收斂條件怎樣理解?
01-15
在批梯度下降和隨機梯度下降演算法中,α和θ的初始值應該如何確定?批梯度下降演算法的收斂條件是什麼,如何確定?
1、如果只是要解優化問題,建議用fminunc();
2、初始值一般初始化成全零即可。如果你有比較靠譜的近似最優解,也可以拿來用。這個問題不大;3、學習速率的取值才是關鍵,這也是個技術活(吐槽:機器學習就是調參)。可以把每一步中Cost function的值都列印出來,最好能夠可視化。如果發現Cost Funtion降低太慢,就適當把放大一點;如果Cost Funtion不降反增或者出現其他異常情況,就把縮小一點。
最後祝題主調得一手好參。拋個磚
按照機器學習的一貫尿性來說,θ的初始值的設定沒有特別的規則,根據問題而定。我見過直接設為0的,還有按樣本規律算一個的,見過隨機的。
α設置的太小,那麼下降速度會很慢,設的太大可能出現直接越過最小值的現象。所以一般調到目標函數的值在減小而且速度適中的情況(還是沒有什麼系統的方法)。
收斂的條件在實際的操作中有很多種,常用的有設一個收斂值,當第n次和第(n-1)次目標函數之差的絕對值小於收斂值時收斂。或者設一個最大迭代次數,達到最大迭代次數時即認為收斂。
答主機器學習小白一枚,請大神指正。初始值:可以人為的設定,也可以隨機設定。需要考慮全局收斂性,最好是多設幾個初始值迭代收斂:迭代演算法求到解之後(數值解),在某個解上面迭代不動了,只會在可能的真實解兩邊盪鞦韆,顯示出來目標函數值也是一樣,這時就認為收斂了。
回答樓上e很小的問題。一般會事先設個tolerance,只要e小於tolerance就說明已經很接近最優解了可以停止了。一般在training data上追求非常高的解的精度是沒有太大必要的,因為最後一個point estimate of parameter的好壞還是要看prediction error, 在training上得到最精確的解未必會讓泛化表現更好
梯度下降法,最後e一定會收斂到很小的值嗎?越到後面收斂特別特別慢,出結果無望,怎麼解決?
推薦閱讀:
※如何評價google 開源的TensorFlow Serving?
※在集成電路設計領域(數字,模擬),人工智慧有無可能取代人類?
※怎麼樣理解SVM中的hinge-loss?
※如何評價猿輔導分散式機器學習庫ytk-learn、分散式通信庫ytk-mp4j?