cnn中的learning rate會導致overfitting嗎?

rt


cnn也是一種nn,參數的意義和其他nn大同小異。

學習率主要影響 收斂速度 Vs. 局部最優 的問題,和過擬合問題不在一個維度。如果你對訓練集都擬合不好,還何談過擬合。


我認為調小lr是對的。

lr會影響收斂。尤其是在nn里,不同的lr有時候會收斂到不同的local minima。題主你所說的收斂,有可能只是收斂到一個不太好的local minima。通過調整lr,我們有可能得到不同的local minima。這個問題我在訓練autoencoder的時候遇到過。我的經驗是,當使用過大的lr,或者過小的lr,都很有可能導致nn過早陷入一個較差的local minima 難以自拔(梯度為零),畢竟nn的local minima可能有很多,所以nn尤其是深度網路,對初始化以及訓練方法是很敏感的,一個好的初始值可以輕鬆提高模型一兩個百分點。

另外談談關於模型收斂的問題。有些人認為train acc不變了,模型就收斂了,這是不準確的。一個極端例子是,你的庫比較簡單,在模型未收斂的情況下,train acc就已經達到100%,這個時候再訓練下去,模型的loss會降,但acc不變。所以train loss也是應該重點看的。一般來講,train loss越小,並且在很小的範圍震蕩(達到預期的收斂條件),就表示模型收斂了。但這不表示loss不能再下降,有可能只是收斂到某一個local minima。通過改變訓練方法,還是可以找到更好的local minima的。

說起這個,使用不同的優化方法來訓練同一個模型,得到的結果往往不盡相同,其實也是一個道理。

綜上,我的建議是,看看train acc和train loss,看是否完全收斂,loss還能不能降。然後修改一下lr,調大或者調小几個量級試一試。

深度學習中降lr是非常有效的做法。在訓練cnn的過程中,經常可以看到,如果維持同一個lr,train loss以及train acc會在某一個區域震蕩,這個時候並不是收斂了,當你把lr降一個數量級,train loss一般又會在一兩個epoch內陡降,這時候val loss以及val acc也會發生劇烈變化。我在訓練cifar的時候,降lr一般會提高1個百分點。

希望我的答案能給題主一點幫助,有問題請及時指出和討論。


總的來說,learning rate 只是為了保證模型收斂性的一個參數。

一般來說,對於優化問題,我們總是希望能夠設置一個足夠小的 learning rate,以使參數能大致收斂在極值附近。而過大的 learning rate 會導致目標函數在最低點附近跳躍。同時對於非凸的目標函數(大多數情況),可能也會導向不同的最值點。

而一般所說的 overfitting,只是針對於模型的複雜度而言。我們通常稱,在 training data 上效果不錯,在 testing data 上效果差的現象為 overfitting。所以,當模型越複雜,所學得的 model 越可能僅僅是針對 training data 學出來的 model,而此時對於(沒見過的)testing data,反而會有較差的表現效果。

所以總的來說,learning rate 只是在梯度下降過程中訓練 model 的參數,與 overfitting 沒有必然的聯繫。而一般來說 learning rate 足夠小的話,所得到的結果都是類似的。如果題主關注 overfitting 的話,建議注意下 model 的複雜度(即 CNN 的結構)。

以上僅做拋磚引玉。


對於learning-rate應該考慮的是,哪個初值不會太大也不會太小,以及等到無法提升的時候縮小以及應該縮小的比例。


base_lr應該與loss有關,如果loss過大可適當減少base_lr。而過擬合可以通過增大樣本數量,減少迭代次數,增加懲罰力度(weight decay)來防止過擬合。

以上是個人理解,若有錯誤請指出,謝謝。


並不會


推薦閱讀:

用c++怎麼去調用你訓練好的caffe模型啊?我一點頭緒都沒有,求大神指教
Mac需要装cuda吗?
cuDNN怎麼無法下載呢?
打算用caffe做人臉識別,用的是vgg,如何使用model?
有沒有雲端的深度學習計算服務?

TAG:機器學習 | 深度學習DeepLearning | Caffe深度學習框架 |