【深度學習】梳理範數與正則化(二)
今天要梳理的知識是範數與正則化。文章完全根據個人理解寫,如有不對,歡迎指出!!
正則化
正則化是一種對學習算法的約束,主要是爲了防止過擬合(下一次會梳理這個知識點),從而增強模型的泛化能力。泛化能力 是指模型對未知數據的預測能力,是一種用於評估機器學習算法的能力的指標。泛化誤差可以反映模型的泛化能力,誤差越小,模型越穩定。泛化誤差(generalization error) 又是指訓練後的模型在測試集上的誤差,也叫測試誤差(test error)。這一下子牽扯出來一堆專業名稱,還真不好理解…
繼續說回正則化,正則化的作用主要是約束,控制模型的擬合程度。對於線性模型來說,數學形式是這樣:
對於理論而言,我們當然希望能找到非常合適的參數w和b,使得目標值與真實值能完全相同,但是如果這種情況出現在實際中,則屬於過擬合現象,我們必須要約束這個模型,使其結果與真實值保持一定的誤差,這就是正則化需要做的事:
後一項是懲罰項,用於限制模型的學習能力,而爲懲罰係數,係數越大,懲罰越大。在神經網絡中,一般只對w做懲罰,而不對偏置b做懲罰(原因暫時未知)。我們熟知的正則化項有兩個L1正則和L2正則 ,L1正則和L2正則又是什麼來的???這就與範數有牽連了~
範數
先來簡單普及一下範數這個概念。根據百科,在泛函分析中,範數是定義在賦範線性空間中,並滿足三個條件:非負性、齊次性和三角不等式,的函數,常用於度量某個向量空間或矩陣中每個向量的長度或大小。(沒聽懂!)簡單來說,範數就是一個函數,用來度量向量大小和長度的。
根據維度,範數可分爲向量範數(二維座標系)和矩陣範數(多維空間,一般化表達),然鵝,向量範數和矩陣範數又可劃分幾種範數。
向量範數
對於向量範數可分爲p-範數、-範數、1-範數、2-範數和-範數。下面簡單放公式介紹一下,爲了方便解釋,我先借一個圖用一用:
p-範數
p-範數表示爲向量元素絕對值的p次方和次冪。這裏的p跟上圖中的q是一樣的,隨着p越大,曲線越接近正方形(爲正無窮範數),越小,曲線越接近原點(負無窮範數)。
-範數
負無窮範數表示爲所有向量元素中絕對值的最小值。
1-範數
1-範數表示爲向量元素絕對值之和。
2-範數
2-範數表示爲所有向量元素中絕對值的最大值,也稱棋盤距離(chessboard)。
矩陣範數
矩陣範數也可分爲1-範數、-範數、2-範數、F-範數和核範數。
1-範數
1-範數,也稱列和範數,表示爲所有矩陣列向量絕對值之和的最大值。
-範數
-範數,也稱行和範數,表示爲所有矩陣行向量絕對值之和的最大值。
2-範數
2-範數,也稱譜範數,表示爲矩陣A的譜範數是A最大的奇異值或者半正定矩陣的最大特徵值的平方根,其中爲A的共軛轉置。
F-範數
Frobenius範數(希爾伯特-施密特範數,這個稱呼只在希爾伯特空間),即矩陣元素絕對值的平方和再開平方。
核範數
若 A 矩陣是方陣,稱爲本徵值。若不是方陣,稱爲奇異值,即奇異值/本徵值之和。
L1正則和L2正則
上面提到正則項一般是兩種:L1正則和L2正則,那麼L1和L2正則其實就是1-範數和2-範數。
L1正則項表示:所有向量元素中的絕對值之和
L2正則項表示:所有向量元素平方和
接着拿上面的線性模型例子來說,給模型加上正則項,那麼模型完整的損失函數L(真實值和預測值的誤差+正則化項)就表示爲:
其中,q爲代表冪次,M爲模型的階次,即數據的維度。多維度很難表示,假設M=2,即,如果分別令q=0.5,1,2,4,就有下圖:
上圖我們在介紹範數的時候用過,在這裏是同樣的意思。上圖中的綠色線爲俯視圖,橫縱座標分別爲,那麼如果換成三維圖,z軸就代表正則化值,即
從上圖可看到,q=1的時候代表L1正則化,q=2代表L2正則化。結合上兩個圖,我們就可以解釋L1正則爲什麼會產生稀疏解,而L2正則爲什麼比較穩定。當M=2時,根據正則公式,,根據二次曲面公式,可得此時的z是一個拋物面,那麼它的俯視圖是一個圓。爲了求解相應的解,在數學上一般可以將變量的變化曲線畫出來,找到相交部分進行分析。
藍線圈代表損失函數在沒有L1正則限制時,尋找最小值的過程。而橙線圈則代表L1正則的曲線。總的損失函數是=藍線圈+橙線圈的和的最小值 ,解是在兩者相交線上,因此,我們可以看到在L1曲線上,兩者相交的部分總出現在頂點處,而頂點剛好都在座標軸上,那麼當在軸頂點處相交時,總爲0,相反成立。而我們現在所舉的例子是在二維空間上,但事實上遠遠不止二維,因此在多維空間中,使用L1正則往往會產生更多的0,故具有稀疏性。
同理,橙線圈則代表L2正則的曲線。在L2曲線上,兩者在邊緣上出處相交,相交時出現0的概率也很少,因此在多維空間中,使用L2正則往往會更穩定,並不具有稀疏性。
總結
本文主要梳理了什麼是正則化和範數,以及簡單地解釋了常用的L1正則和L2正則的性質。今天的寫作任務就完成啦,寫得不好,請勿噴,歡迎指出,本人虛心接受,大家一起學習~~
參考文章:
https://baike.baidu.com/item/%E8%8C%83%E6%95%B0/10856788?fr=aladdin
https://charlesliuyx.github.io/2017/10/03/%E3%80%90%E7%9B%B4%E8%A7%82%E8%AF%A6%E8%A7%A3%E3%80%91%E4%BB%80%E4%B9%88%E6%98%AF%E6%AD%A3%E5%88%99%E5%8C%96/
https://www.cnblogs.com/pinking/p/9310728.html