TensorFlow 過擬合與正則化(regularizer)


所謂過擬合,就是當一個模型過於復雜后,它可以很好的處理訓練數據的每一個數據,甚至包括其中的隨機噪點。而沒有總結訓練數據中趨勢。使得在應對未知數據時錯誤里一下變得很大。這明顯不是我們要的結果。

我們想要的是在訓練中,忽略噪點的干擾,總結整體趨勢。在應對未知數據時也能保持訓練時的正確率。

上圖中第一種情況,模型過於簡單,未能很好的反應數據的總體趨勢。

第三種情況就屬於過擬合的情況。雖然完美的反應了練習數據的狀況,但是明顯被噪點影響了。

第二種情況是我們想要的理想狀況。

為了避免過擬合,通常使用的方法就是正則化(regularizer)。

正則化的思想就是在損失函數中加入刻畫模型復雜度的指標。假設用於刻畫模型在訓練數據上的表現的損失函數為J(θ),那么在優化時不是直接優化J(θ),而是優化J(θ) + λR(w)。

其中R(w)表示的是模型復雜度。λ表示模型復雜度損失在總損失中的比例。

對於θ表示的是一個神經網絡中所有參數,包括weight和 biases。

而復雜度只由權重(weight)來決定。

常用的刻畫復雜度R(w)有兩種:

L1

L2:

兩種思想都是希望限制權重的大小,使得模型不能擬合訓練數據中的隨機噪點。

兩種方式在TensorFlow中的提供的函數為:

tf.contrib.layers.l1_regularizer(scale, scope=None)
tf.contrib.layers.l2_regularizer(scale, scope=None)

 

 

 

參考資料:

《Tensorflow+實戰Google深度學習框架》4.4.2節

http://blog.csdn.net/u012436149/article/details/70264257

http://blog.csdn.net/sinat_29957455/article/details/78397601


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM