兩種正則化的區別

2021-09-29 09:35:19 字數 1115 閱讀 4397

部分**:

使用機器學習方法解決實際問題時,我們通常要用l1或l2範數做正則化(regularization),從而限制權值大小,減少過擬合風險。特別是在使用梯度下降來做目標函式優化時,很常見的說法是, l1正則化產生稀疏的權值, l2正則化產生平滑的權值。為什麼會這樣?這裡面的本質原因是什麼呢?下面我們從兩個角度來解釋這個問題。

l1正則化表示式

l2正則化表示式

一、數學角度

這個角度從權值的更新公式來看權值的收斂結果。

首先來看看l1和l2的梯度(導數的反方向):

所以(不失一般性,我們假定:wi等於不為0的某個正的浮點數,學習速率η 為0.5):

l1的權值更新公式為wi = wi - η * 1 = wi - 0.5 * 1,也就是說權值每次更新都固定減少乙個特定的值(比如0.5),那麼經過若干次迭代之後,權值就有可能減少到0。

l2的權值更新公式為wi = wi - η * wi = wi - 0.5 * wi,也就是說權值每次都等於上一次的1/2,那麼,雖然權值不斷變小,但是因為每次都等於上一次的一半,所以很快會收斂到較小的值但不為0。

下面的圖很直觀的說明了這個變化趨勢:

二、空間角度

這個角度從幾何位置關係來看權值的取值情況

總結:l1正則化趨向於產生少量的特徵,而其他的特徵都是0,而l2正則化會選擇更多的特徵,這些特徵都會接近於0。

include的兩種區別

c 中經常會用到 include 和 include 它們到底有什麼區別呢?1.引入標準庫檔案 include filename.h 格式引用標準庫的標頭檔案。編譯器將從標準庫目錄開始搜尋。標準庫目錄是在開發環境中設定的庫檔案的路徑。如圖 2.也就是說編譯器會到這兩個路徑中找引用的檔案,如果找不到,...

redis的兩種持久化

一種是rdb持久化 原理是將reids在記憶體中的資料庫記錄定時dump到磁碟上的rdb持久化 另外一種是aof持久化 原理是將reids的操作日誌以追加的方式寫入檔案 那麼這兩種持久化方式有什麼區別呢,改如何選擇呢?網上看了大多數都是介紹這兩種方式怎麼配置,怎麼使用,就是沒有介紹二者的區別 rdb...

離散化的兩種操作

離散化是程式設計中乙個常用的技巧,它可以有效的降低時間複雜度。其基本思想就是在眾多可能的情況中,只考慮需要用的值。離散化可以改進乙個低效的演算法,甚至實現根本不可能實現的演算法。要掌握這個思想,必須從大量的題目中理解此方法的特點。有些資料本身很大,自身無法作為陣列的下標儲存對應的屬性。如果這時只是需...