機器學習中幾乎均可以看到損失函數後面會添加一個額外項,經常使用的額外項通常有兩種,通常英文稱做ℓ1-norm和ℓ2-norm,中文稱做L1正則化和L2正則化,或者L1範數和L2範數。L2範數也被稱爲權重衰減(weight decay)。機器學習
通常回歸分析中迴歸ww表示特徵的係數,從上式能夠看到正則化項是對係數作了處理(限制)。L1正則化和L2正則化的說明以下:函數
關於兩者如何解決機器學習中過擬合問題,能夠參考以下連接:學習
https://blog.csdn.net/weiyongle1996/article/details/78161512atom
https://blog.csdn.net/jinping_shi/article/details/52433975spa
tensorflow中提供了兩個函數,用於求某個權重w矩陣的L1和L2正則化,下面是代碼示例:.net
''' 輸入: x = [[1.0,2.0]] w = [[1.0,2.0],[3,0,4.0]] 輸出: y = x*w = [[7.0,10.0]] l1 = (1.0+2.0+3.0+4.0)*0.5 = 5.0 l2 = (1.0**2 + 2.0**2 + 3.0**2 + 4.0**2) / 2)*0.5 = 7.5 ''' import tensorflow as tf from tensorflow.contrib.layers import * w = tf.constant([[1.0,2.0],[3.0,4.0]]) x = tf.placeholder(dtype=tf.float32,shape=[None,2]) y = tf.matmul(x,w) with tf.Session() as sess: init = tf.global_variables_initializer() sess.run(init) print(sess.run(y,feed_dict={x:[[1.0,2.0]]})) print("=========================") print(sess.run(l1_regularizer(scale=0.5)(w))) #(1.0+2.0+3.0+4.0)*0.5 = 5.0 print("=========================") print(sess.run(l2_regularizer(scale=0.5)(w))) #(1.0**2 + 2.0**2 + 3.0**2 + 4.0**2) / 2)*0.5 = 7.5