tensorflow 解決過擬合問題

過擬合

第一個模型簡單,第二個模型比較合理,第三個模型則過擬合了,容易導致,模型在訓練數據上表現良好,而在測試數據上的表現較差的情況。

正則化特點

都是通過限制權限的大小。
L1:讓參數變得更稀疏,即使更多的參數變為0,類似特征提取。
L2:弱參數平方后變的更小,模型優化中幾乎可以忽略,比如0.0001的平方。
當然,根據需要可以結合L1和L2一起使用。

L1正則化公式如下:
R(w) = ||w||_1=\sum_i|w_i|
L2正則化公式如下:
R(w) = ||w||_2^2=\sum_i|w_i^2|
結合使用:
R(w) = ||w||_2^2=\sum_i\alpha|w_i|+\beta|w_i^2|
tensorflow代碼實戰:

#L1,L2demo
w = tf.constant([[1.0,2.],[-2.,4.]])
with tf.Session() as sess:
    print(sess.run(tf.contrib.layers.l1_regularizer(0.5)(w)))
    print(sess.run(tf.contrib.layers.l2_regularizer(0.5)(w)))
    print(sess.run(tf.contrib.layers.l1_l2_regularizer(scale_l1=0.5,scale_l2=0.5)(w)))
out:
4.5
6.25
10.75

由demo可以看出,tensorflow 會將L2正則的值除以2.

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容