【深度學習】梳理範數與正則化(二)

【深度學習】梳理範數與正則化(二)

今天要梳理的知識是範數與正則化。文章完全根據個人理解寫,如有不對,歡迎指出!!

正則化

正則化是一種對學習算法的約束,主要是爲了防止過擬合(下一次會梳理這個知識點),從而增強模型的泛化能力。泛化能力 是指模型對未知數據的預測能力,是一種用於評估機器學習算法的能力的指標。泛化誤差可以反映模型的泛化能力,誤差越小,模型越穩定。泛化誤差(generalization error) 又是指訓練後的模型在測試集上的誤差,也叫測試誤差(test error)。這一下子牽扯出來一堆專業名稱,還真不好理解…

繼續說回正則化,正則化的作用主要是約束,控制模型的擬合程度。對於線性模型來說,數學形式是這樣:
y=wx+by'=wx+b
對於理論而言,我們當然希望能找到非常合適的參數w和b,使得目標值yy'與真實值yy能完全相同,但是如果這種情況出現在實際中,則屬於過擬合現象,我們必須要約束這個模型,使其結果與真實值保持一定的誤差,這就是正則化需要做的事:
y=(wx+b)+αΩ(θ)y'=(wx+b)+\alpha \Omega(\theta)

後一項是懲罰項,用於限制模型的學習能力,而α\alpha爲懲罰係數,係數越大,懲罰越大。在神經網絡中,一般只對w做懲罰,而不對偏置b做懲罰(原因暫時未知)。我們熟知的正則化項有兩個L1正則和L2正則 ,L1正則和L2正則又是什麼來的???這就與範數有牽連了~

範數

先來簡單普及一下範數這個概念。根據百科,在泛函分析中,範數是定義在賦範線性空間中,並滿足三個條件:非負性、齊次性和三角不等式,的函數,常用於度量某個向量空間或矩陣中每個向量的長度或大小。(沒聽懂!)簡單來說,範數就是一個函數,用來度量向量大小和長度的。

根據維度,範數可分爲向量範數(二維座標系)和矩陣範數(多維空間,一般化表達),然鵝,向量範數和矩陣範數又可劃分幾種範數。

向量範數

對於向量範數可分爲p-範數、-\infty-範數、1-範數、2-範數和\infty-範數。下面簡單放公式介紹一下,爲了方便解釋,我先借一個圖用一用:
圖譜

p-範數

xp=(i=1Nxip)1p||x||_p=(\sum_{i=1}^N |x_i|^p)^\frac{1}{p}
p-範數表示爲向量元素絕對值的p次方和1p\frac{1}{p}次冪。這裏的p跟上圖中的q是一樣的,隨着p越大,曲線越接近正方形(爲正無窮範數),越小,曲線越接近原點(負無窮範數)。

-\infty-範數

x=argminixi||x||_{-\infty}=arg \min_i |x_i|
負無窮範數表示爲所有向量元素中絕對值的最小值。

1-範數

x1=i=1Nxi||x||_{1}=\sum_{i=1}^N |x_i|
1-範數表示爲向量元素絕對值之和。

2-範數

x2=i=1Nx2||x||_{2}=\sqrt{\sum_{i=1}^N x^2}
2-範數表示爲所有向量元素中絕對值的最大值,也稱棋盤距離(chessboard)。

矩陣範數

矩陣範數也可分爲1-範數、\infty-範數、2-範數、F-範數和核範數。

1-範數

A1=argmax1jnj=1mai,j||A||_{1}=arg \max_{1\le j\le n}\sum_{j=1}^m |a_{i,j}|
1-範數,也稱列和範數,表示爲所有矩陣列向量絕對值之和的最大值。

\infty-範數

A=argmax1jnj=1mai,j||A||_{\infty}=arg \max_{1\le j\le n}\sum_{j=1}^m |a_{i,j}|
\infty-範數,也稱行和範數,表示爲所有矩陣行向量絕對值之和的最大值。

2-範數

A2=λmax(AA)||A||_{2}=\sqrt{\lambda_{max}(A^*A)}
2-範數,也稱譜範數,表示爲矩陣A的譜範數是A最大的奇異值或者半正定矩陣ATAA^TA的最大特徵值的平方根,其中AA^*爲A的共軛轉置。

F-範數

AF=i=1mj=1nai,j2||A||_{F}=\sqrt{\sum_{i=1}^m\sum_{j=1}^n|a_{i,j}|^2}
Frobenius範數(希爾伯特-施密特範數,這個稱呼只在希爾伯特空間),即矩陣元素絕對值的平方和再開平方。

核範數

A=i=1nλi||A||_{*}=\sum_{i=1}^n\lambda_i
λi\lambda_i若 A 矩陣是方陣,稱爲本徵值。若不是方陣,稱爲奇異值,即奇異值/本徵值之和。

L1正則和L2正則

上面提到正則項一般是兩種:L1正則和L2正則,那麼L1和L2正則其實就是1-範數和2-範數。
L1正則項表示:所有向量元素中的絕對值之和
Ω(θ)=w1=iwi\Omega(\theta)=||w||_1=\sum_i|w_i|
L2正則項表示:所有向量元素平方和
Ω(θ)=w2=12wi22\Omega(\theta)=||w||_2=\frac{1}{2}||w_i||_2^2

接着拿上面的線性模型例子來說,給模型加上正則項,那麼模型完整的損失函數L(真實值和預測值的誤差+正則化項)就表示爲:
L(w)=12n=1N[ynwTf(xn)]2+α2j=1MwjqL(w)=\frac{1}{2}\sum_{n=1}^N[y_n-w^Tf(x_n)]^2+\frac{\alpha}{2}\sum_{j=1}^M|w_j|^q
其中,q爲代表冪次,M爲模型的階次,即數據的維度。多維度很難表示,假設M=2,即x=(x1,x2),w=(w1,w2)x=(x_1, x_2), w=(w_1, w_2),如果分別令q=0.5,1,2,4,就有下圖:
圖上圖我們在介紹範數的時候用過,在這裏是同樣的意思。上圖中的綠色線爲俯視圖,橫縱座標分別爲w1,w2w_1,w_2,那麼如果換成三維圖,z軸就代表正則化值,即z=α2j=12wjqz=\frac{\alpha}{2}\sum^2_{j=1}|w_j|^q
三維圖
從上圖可看到,q=1的時候代表L1正則化,q=2代表L2正則化。結合上兩個圖,我們就可以解釋L1正則爲什麼會產生稀疏解,而L2正則爲什麼比較穩定。當M=2時,根據正則公式,z=α2j=12wjq=α2(w12+w22)z=\frac{\alpha}{2}\sum^2_{j=1}|w_j|^q=\frac{\alpha}{2}(w_1^2+w_2^2),根據二次曲面公式,可得此時的z是一個拋物面,那麼它的俯視圖是一個圓。爲了求解相應的解,在數學上一般可以將變量的變化曲線畫出來,找到相交部分進行分析。
z
藍線圈代表損失函數在沒有L1正則限制時,尋找最小值的過程。而橙線圈則代表L1正則的曲線。總的損失函數是=藍線圈+橙線圈的和的最小值 ,解是在兩者相交線上,因此,我們可以看到在L1曲線上,兩者相交的部分總出現在頂點處,而頂點剛好都在座標軸上,那麼當在w1w_1軸頂點處相交時,w1w_1總爲0,相反成立。而我們現在所舉的例子是在二維空間上,但事實上遠遠不止二維,因此在多維空間中,使用L1正則往往會產生更多的0,故具有稀疏性。

z2

同理,橙線圈則代表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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章