L1和L2:損失函數和正則化


作為損失函數

L1范數損失函數

  L1范數損失函數,也被稱之為平均絕對值誤差(MAE)。總的來說,它把目標值$Y_i$與估計值$f(x_i)$的絕對差值的總和最小化。

$$S=\frac{1}{N}\sum_{i=1}^n|Y_i-f(x_i)|$$

# tensorflow
tf.reduce_mean(tf.abs(logits - labels))
# numpy
np.sum(np.abs(logits-labels))

L2范數損失函數

  L2范數損失函數,也被稱為均方誤差MSE, mean squared error),總的來說,它把目標值$Y_i$與估計值$f(x_i)$的差值的平方和最小化。

$$S=\frac{1}{N}\sum_{i=1}^n(Y_i-f(x_i))^2$$

L1損失函數 L2損失函數
魯棒 不是很魯棒
不穩定性 穩定解
可能多個解 總是一個解

  總結一下:L2范數loss將誤差平均化(如果誤差大於1,則誤差會放大很多),模型的誤差會比L1范數來得大,因此模型會對樣本更加敏感,這就需要調整模型來最小化誤差。如果有個樣本是一個異常值,模型就需要調整以適應單個的異常值,這會犧牲許多其他正常的樣本,因為這些正常的樣本的誤差比這單個的異常值的誤差小。

# ----- tensorflow ----- #
tf.reduce_mean((labels-logits) ** 2)
# 或者使用 mean_squared_error 函數
tf.losses.mean_squared_error(labels, logits)
# ----- numpy ----- #
np.sum(np.square(y_true-y_pre))

作為正則化

  我們經常會看見損失函數后面添加一個額外項,一般為L1-norm,L2-norm,中文稱作L1正則化L2正則化,或者L1范數L2函數

  L1正則化和L2正則化可以看做是損失函數的懲罰項。所謂『懲罰』是指對損失函數中的某些參數做一些限制。防止模型過擬合而加在損失函數后面的一項。

L1正規化

  L1范數符合拉普拉斯分布,是不完全可微的。表現在圖像上會有很多角出現。這些角和目標函數的接觸機會遠大於其他部分。就會造成最優值出現在坐標軸上,因此就會導致某一維的權重為0 ,產生稀疏權重矩陣,進而防止過擬合。

最小平方損失函數的L1正則化

L1正則化是指權值向量$w$中各個元素的絕對值之和

L2正規化

  L2范數符合高斯分布,是完全可微的。和L1相比,圖像上的棱角被圓滑了很多。一般最優值不會在坐標軸上出現。在最小化正則項時,可以是參數不斷趨向於0,最后活的很小的參數。

  在機器學習中,正規化是防止過擬合的一種重要技巧。從數學上講,它會增加一個正則項,防止系數擬合得過好以至於過擬合。L1與L2的區別只在於,L2是權重的平方和,而L1就是權重的和。如下:

最小平方損失函數的L2正則化

L2正則化是指權值向量$w$中各個元素的平方和然后再求平方根

作用

L1正則化

  • 優點:輸出具有稀疏性,即產生一個稀疏模型,進而可以用於特征選擇;一定程度上,L1也可以防止過擬合
  • 缺點:但在非稀疏情況下計算效率低

L2正則化

  • 優點:計算效率高(因為存在解析解);可以防止模型過擬合(overfitting)
  • 缺點:非稀疏輸出;無特征選擇

稀疏模型和特征選擇:稀疏性我在這篇文章有詳細講解,如果特征符合稀疏性,說明特征矩陣很多元素為0,只有少數元素是非零的矩陣,表示只有少數特征對這個模型有貢獻,絕大部分特征是沒有貢獻的,或者貢獻微小(因為它們前面的系數是0或者是很小的值,即使去掉對模型也沒有什么影響),此時我們就可以只關注系數是非零值的特征。這就是稀疏模型與特征選擇的關系。

文獻[1]解釋了為什么L1正則化可以產生稀疏模型(L1是怎么樣系數等於0的),以及為什么L2正則化可以防止過擬合,由於涉及到很多公式,想要詳細了解的同學,請移步

區別

1、L1正則化是模型各個參數的絕對值之和

  L2正則化是模型各個參數的平方和的開方值

2、L1會趨向於產生少量的特征,而其他的特征都是0,產生稀疏權重矩陣。

  L2會選擇更多的特征,這些特征都會接近於0

再討論幾個問題

1.為什么參數越小代表模型越簡單?

  越是復雜的模型,越是嘗試對所有樣本進行擬合,包括異常點。這就會造成在較小的區間中產生較大的波動,這個較大的波動也會反映在這個區間的導數比較大。

  只有越大的參數才可能產生較大的導數。因此參數越小,模型就越簡單。

2.實現參數的稀疏有什么好處?

  因為參數的稀疏,在一定程度上實現了特征的選擇。一般而言,大部分特征對模型是沒有貢獻的。這些沒有用的特征雖然可以減少訓練集上的誤差,但是對測試集的樣本,反而會產生干擾。稀疏參數的引入,可以將那些無用的特征的權重置為0.

3.L1范數和L2范數為什么可以避免過擬合?

  加入正則化項就是在原來目標函數的基礎上加入了約束。當目標函數的等高線和L1,L2范數函數第一次相交時,得到最優解。

損失函數

均方根誤差(RMSE)

$$RMSE=\sqrt{mse}=\sqrt{\frac{1}{N}\sum_{i=1}^n(Y_i-f(x_i))^2}$$

 

參考文獻

CSDN博客:機器學習中正則化項L1和L2的直觀理解

Differences between L1 and L2 as Loss Function and Regularization

 


免責聲明!

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



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