1.深度學習中的正則化
提高泛化能力,防止過擬合
大多數正則化策略都會對估計進行正則化,估計的正則化以偏差的增加換取方差的減少
正則化方法是在訓練數據不夠多時,或者over training時,常常會導致過擬合(overfitting)。這時向原始模型引入額外信息,以便防止過擬合和提高模型泛化性能的一類方法的統稱
2.參數范數懲罰
許多正則化方法通過對目標函數 J 添加一個參數范數懲罰 Ω(θ),限制模型(如神經網絡、線性回歸或邏輯回歸)的學習能力。我們將正則化后的目標函數記為
其中 α ∈ [0,∞) 是權衡范數懲罰項 Ω 和標准目標函數 J(X;θ) 相對貢獻的超參數。將 α 設為 0 表示沒有正則化。α 越大,對應正則化懲罰越大
神經網絡中我們通常只對每一層仿射變換的權重做懲罰而不對偏置做正則懲罰
L 2 參數正則化
權重衰減(weight decay)的 L 2 參數范數懲罰
向目標函數添加一個正則項 Ω(θ) =1/2(||w||2)2使權重更加接近原點
L 1 參數正則化
對模型參數 w 的 L 1 正則化被定義為
對應的梯度 (實際上是次梯度)
weights = tf.constant([[1., -2.], [-3., 4.]])
with tf.Session() as sess:
print(sess.run(tf.contrib.layers.l1_regularizer(0.5)(weights)))
# (1+2+3+4)*.5 ⇒ 5
print(sess.run(tf.contrib.layers.l2_regularizer(0.5)(weights)))
# (1+4+9+16)*.5*.5 ⇒ 7.5
3.作為約束的范數懲罰
4.Dropout
tf.nn.dropout是TensorFlow里面為了防止或減輕過擬合而使用的函數,它一般用在全連接層
tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None,name=None)
改變神經網絡本身的結構
對於同一組訓練數據,利用不同的神經網絡訓練之后,求其輸出的平均值可以減少overfitting
5.數據集增強
6.提前終止