神經網路的訓練可以採用二階優化方法嗎(如 Newton Quasi Newton)?

時間 2021-05-11 23:57:25

1樓:Chizhong Jin

這個我當年真想過和題主說的一模一樣的問題啊。結果後來發現真的是想多了啊。

核心問題是,現在的模型引數實在是太多了。

拿個幾萬引數的小模型舉例:

做個二階導數,直接冒出來幾億個數值的雅可比矩陣。。。這真的hold不住啊。

2樓:瀚海愛鳥

主要是複雜度,二階方法的複雜度多是平方級。對於工程用的神經網路來說,具體某個點的準確度不重要,接納並訓練盡可能多的樣本才重要。如果因為複雜度使得同樣時間下樣本數變少,實際上是緣木求魚

3樓:張大帥

當然可以用,實際上早期常提的trick之一就是用二階方法代替一階方法。然而你會發現沒什麼太大卵用,層數一多、訓練樣本量一大優化演算法的區別並不大,包括一階演算法本身的一些trick如momentum後來也都不太提了,簡單實用mini-batch最好用。

4樓:漆鵬

最近剛好做完乙個關於隨機L-BFGS演算法的優化,也說下自己的想法。

1. 二階優化方法可以用到深度學習網路中,比如DistBelief,《Large-scale L-BFGS using MapReduce》.採用了資料並行的方法解決了海量資料下L-BFGS演算法的可用性問題。

2. 二階優化方法目前還不適用於深度學習訓練中,主要存在問題是:

1. 最重要的問題是二階方法的計算量大,訓練較慢。

2. 求導不易,實現比SGD這類一階方法複雜。

3. 另外其優點在深度學習中無法展現出來,主要是二階方法能夠更快地求得更高精度的解,這在淺層模型是有益的,但是在神經網路這類深層模型中對引數的精度要求不高,相反相對而言不高的精度對模型還有益處,能夠提高模型的泛化能力。

當然,二階優化方法也有優點,在凸優化中,訓練較SGD這類方法更為穩定更為平滑,不用調參:)

目前學術界出現了一些隨機二階優化方法,以下是比較重要的三篇,有興趣的可以看一下。

《A stochastic quasi-Newton method for large-scale optimization 》 個人這篇最重要,給出了理論證明

《A Linearly-Convergent Stochastic L-BFGS Algorithm》

《A Multi-Batch L-BFGS Method for Machine Learning》

目前隨機二階優化方法主要問題是收斂速度慢,最好的隨機L-BFGS演算法為近線性收斂,與所期待的超線性收斂速度還有差距,這裡還有很多可以研究的地方,。其次是訓練不夠穩定,這裡隨機L-BFGS演算法引入了步長,其步長選擇範圍較小,易出現訓練崩潰的情況。

最後通俗地解釋下,隨機方法中不使用非精確線搜尋的原因:在採用batch方法中,使用非精確線搜尋能夠最大化地「走」一步,這是因為採用了全域性樣本資訊,做出了對全域性優化方向的估計。而在隨機方法中,每輪min-batch只採用了少量樣本資訊,如果採用對這少量的樣本資訊,用區域性估計來替代全域性,反而會影響到訓練的收斂。

這裡有點類似於動態規劃與貪心演算法。這個問題在《A Stochastic Quasi-Newton Method for Online Convex Optimization》有解釋過。

相同的神經網路模型,採用相同資料集訓練,得到的權重引數是否相同?

WillAlex 不同的初始化權重,不同的優化器,最後學習得到的權重是不一樣的。但會有一些相似性,比如矩陣的秩,范叔,行列的相關係數等可能相似。 錢錢 取決於你的結構或者representation是否穩定。如果穩定,近似,參看Deep Ensemble這篇文章,大概核心含義是用不同的隨機數種子分別...

有什麼神經網路可以訓練出方程引數嗎?

astrid zhang 做不到,和x是幾維的沒關係,你能估計的只有a1到a5的和,具體每乙個的值是無法確定的。藉此說兩句,現在的人太浮躁 看到乙個新概念就要強上,動不動就要玩高階的玩深度學習。這種簡單的線性問題根部不需要什麼dl,非要上神經網路完完全全是南轅北轍。想玩dl,別的不說,麻煩先把線性代...

怎麼選取訓練神經網路時的Batch size

嚮往自由 乙個epoch,使用大batch,訓練時間更短 但收斂不一定比小batch好 解析為什麼同乙個epoch,小batch,收斂更快?原因 相同epoch,小batch的梯度迭代更加頻繁,更有可能找到最優解。因此,不是batch越大越好 做自己 我覺得和隨機性大小有關,批梯度下降本身屬於隨機優...