l1和l2正則化

2021-09-24 10:46:25 字數 1015 閱讀 1123

import tensorflow as tf

import tensorflow.contrib as contrib

weight = tf.constant([[1.0, -2.0], [-3.0, 4.0]])

with tf.session() as sess:

print(sess.run(contrib.layers.l1_regularizer(0.2)(weight)))

print(sess.run(contrib.layers.l1_regularizer(0.5)(weight)))

print(sess.run(contrib.layers.l1_regularizer(1.0)(weight)))

輸出2.0

5.010.0

import tensorflow as tf

import tensorflow.contrib as contrib

weight = tf.constant([[1.0, -2.0], [-3.0, 4.0]])

with tf.session() as sess:

print(sess.run(contrib.layers.l2_regularizer(scale = 0.2)(weight)))

print(sess.run(contrib.layers.l2_regularizer(0.5)(weight)))

print(sess.run(contrib.layers.l2_regularizer(1.0)(weight)))

但是,tensorflow該函式不開方,而是除2。

輸出:3.0

7.515.0

正則化的結果是loss函式的一部分,而正則計算的一般是權重w與偏置值b

例:loss = cross_entropy + l(w)+l(b)

優化loss函式,不但要最小化交叉熵,還要最小化w,b張量中各元素的絕對值之和或者平方和。

L1和L2正則化

l1和l2正則化 l1與l2正則化都是防止模型過擬合,其方式略有不同。具體請見下文。1 l1 正則化l1正則化 1範數 是指,各權值 變數 特徵 絕對值之和。其作用是產生權值的稀疏模型,也就是讓大部分權值為0.為什麼能產生權值稀疏模型?因為如下圖所示,各權值絕對值之和後得到乙個矩陣,很容易在矩陣的頂...

L1和L2正則化

l0範數指的是向量中非零元素的個數,l0正則化就是限制非零元素的個數在一定的範圍,這很明顯會帶來稀疏。一般而言,用l0範數實現稀疏是乙個np hard問題,因此人們一般使用l1正則化來對模型進行稀疏約束。稀疏性 參考 另外一種解釋 假設費用函式l與某個引數w的關係如圖所示 則最優的 w在綠點處,w非...

正則化(L1和L2正則)

稀疏性表示資料中心0佔比比較大 引西瓜書中p252原文 對於損失函式後面加入懲罰函式可以降低過擬合的風險,懲罰函式使用l2範數,則稱為嶺回歸,l2範數相當與給w加入先驗,需要要求w滿足某一分布,l2範數表示資料服從高斯分布,而l1範數表示資料服從拉普拉斯分布。從拉普拉斯函式和高斯函式的影象上看,拉普...