Eeeplearning-正則化方法--L1和L2 regularization、數據集擴增、dropout


轉載請註明出處:http://blog.csdn.net/u012162613/article/details/44261657







保持輸入輸出層不變,按照BP算法更新上圖神經網絡中的權值(虛線連接的單元不更新,因爲它們被“臨時刪除”了)。

以上就是一次迭代的過程,在第二次迭代中,也用同樣的方法,只不過這次刪除的那一半隱層單元,跟上一次刪除掉的肯定是不一樣的,因爲我們每一次迭代都是“隨機”地去刪掉一半。第三次、第四次……都是這樣,直至訓練結束。

以上就是Dropout,它爲什麼有助於防止過擬合呢?可以簡單地這樣解釋,運用了dropout的訓練過程,相當於訓練了很多個只有半數隱層單元的神經網絡(後面簡稱爲“半數網絡”),每一個這樣的半數網絡,都可以給出一個分類結果,這些結果有的是正確的,有的是錯誤的。隨着訓練的進行,大部分半數網絡都可以給出正確的分類結果,那麼少數的錯誤分類結果就不會對最終結果造成大的影響。

更加深入地理解,可以看看Hinton和Alex兩牛2012的論文《ImageNet Classification with Deep Convolutional Neural Networks》


數據集擴增(data augmentation)

“有時候不是因爲算法好贏了,而是因爲擁有更多的數據才贏了。”

不記得原話是哪位大牛說的了,hinton?從中可見訓練數據有多麼重要,特別是在深度學習方法中,更多的訓練數據,意味着可以用更深的網絡,訓練出更好的模型。

既然這樣,收集更多的數據不就行啦?如果能夠收集更多可以用的數據,當然好。但是很多時候,收集更多的數據意味着需要耗費更多的人力物力,有弄過人工標註的同學就知道,效率特別低,簡直是粗活。

所以,可以在原始數據上做些改動,得到更多的數據,以圖片數據集舉例,可以做各種變換,如:

  • 將原始圖片旋轉一個小角度

  • 添加隨機噪聲

  • 一些有彈性的畸變(elastic distortions),論文《Best practices for convolutional neural networks applied to visual document analysis》對MNIST做了各種變種擴增。

  • 截取(crop)原始圖片的一部分。比如DeepID中,從一副人臉圖中,截取出了100個小patch作爲訓練數據,極大地增加了數據集。感興趣的可以看《Deep learning face representation from predicting 10,000 classes》.

    更多數據意味着什麼?

用50000個MNIST的樣本訓練SVM得出的accuracy94.48%,用5000個MNIST的樣本訓練NN得出accuracy爲93.24%,所以更多的數據可以使算法表現得更好。在機器學習中,算法本身並不能決出勝負,不能武斷地說這些算法誰優誰劣,因爲數據對算法性能的影響很大。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章