[机器学习]正则化方法 -- Regularization
一、參數(shù)方法和非參數(shù)方法
在講正則化之前,需要介紹2個概念。機(jī)器學(xué)習(xí)的方法,可以大致分成兩類。
參數(shù)方法(Parametric Methods)?通過訓(xùn)練來確定一組參數(shù)。當(dāng)我們參數(shù)的值定下來,可以說預(yù)測的過程已經(jīng)跟之前的訓(xùn)練集無關(guān)了,模型已經(jīng)定下來了,我們只需要把測試集代入對應(yīng)參數(shù)就能出結(jié)果。參數(shù)化方法的好處就是。我們的模型復(fù)雜程度不會隨著訓(xùn)練數(shù)據(jù)的增加而增加(注意不是訓(xùn)練模型的復(fù)雜度,是模型的復(fù)雜程度)。舉例:邏輯回歸,SVM,神經(jīng)網(wǎng)絡(luò)。
非參數(shù)方法 (Non-Parametric Methods),利用訓(xùn)練集本身來預(yù)測。比如K近鄰算法,在訓(xùn)練過程中,我們并沒有確定任何參數(shù),甚至都不需要訓(xùn)練這個過程。但是缺點(diǎn)也很明顯,訓(xùn)練集數(shù)量越大,我們模型就越復(fù)雜。當(dāng)我們要預(yù)測一個新數(shù)據(jù)的時候,我們需要拿它與所有的訓(xùn)練數(shù)據(jù)比較。舉例:KNN。
正則化,針對的主要就是參數(shù)方法。
二、復(fù)雜模型 VS 簡單模型
假設(shè)它的x值是(1,2,3)??,y值是6?,它們兩個模型都能準(zhǔn)確預(yù)測樣本,那當(dāng)然是第一個模型簡單粗暴。而且,根據(jù)奧卡姆剃刀原理(Occam's Razor, Ockham's Razor),越是簡單粗暴的東西,有時候反而越有效。
模型的復(fù)雜程度?這里有個比較專業(yè)點(diǎn)的術(shù)語叫做,模型結(jié)構(gòu)化風(fēng)險。咱們這里就用模型的復(fù)雜程度比較接地氣。在訓(xùn)練參數(shù)方法的過程中,我們不僅要關(guān)注模型的準(zhǔn)確程度,同時也要讓模型更加精簡,模型復(fù)雜程度低。這不僅僅是為了計算量少,而且越精簡的模型,往往泛化能力越強(qiáng)大!
三、降低模型復(fù)雜度
既然知道了要盡可能訓(xùn)練出簡單的模型。在訓(xùn)練的過程中,將模型的復(fù)雜度作為一項指標(biāo),參與到訓(xùn)練的過程中,從而約束我們的模型。
機(jī)器學(xué)習(xí)模型的訓(xùn)練過程,簡單來說就是我們要讓我們模型的輸出與真實采集到的結(jié)果的誤差最小。同時還有一個衡量誤差的指標(biāo),叫做損失函數(shù)(loss function)
同時要考慮誤差跟模型復(fù)雜度,因此我們需要最小化:
?
四、正則化
?????? 首先了解一下正則性(regularity),正則性衡量了函數(shù)光滑的程度,正則性越高,函數(shù)越光滑。(光滑衡量了函數(shù)的可導(dǎo)性,如果一個函數(shù)是光滑函數(shù),則該函數(shù)無窮可導(dǎo),即任意n階可導(dǎo))。
??????? 機(jī)器學(xué)習(xí)中幾乎都可以看到損失函數(shù)后面會添加一個額外項,常用的額外項一般有兩種,一般英文稱作?1和?2中文稱作L1正則化和L2正則化,或者L1范數(shù)和L2范數(shù)。L1,L2其實就是數(shù)學(xué)里面范數(shù),用范數(shù)剛好可以達(dá)到我們想要的目的。1范數(shù)的定義就是絕對值的和,2范數(shù)就是平方和
??????? L1正則化和L2正則化可以看做是損失函數(shù)的懲罰項。所謂『懲罰』是指對損失函數(shù)中的某些參數(shù)做一些限制。對于線性回歸模型,使用L1正則化的模型建叫做Lasso回歸,使用L2正則化的模型叫做Ridge回歸(嶺回歸)
?????? 正則化是為了解決過擬合問題。在Andrew Ng的機(jī)器學(xué)習(xí)視頻中有提到。解決過擬合的兩種方法:
????? 方法一:盡量減少選取變量的數(shù)量。人工檢查每一個變量,并以此來確定哪些變量更為重要,然后,保留那些更為重要的特征變量。顯然這種做法需要對問題足夠了解,需要專業(yè)經(jīng)驗或先驗知識。因此,決定哪些變量應(yīng)該留下不是一件容易的事情。此外,當(dāng)你舍棄一部分特征變量時,你也舍棄了問題中的一些信息。例如,也許所有的特征變量對于預(yù)測房價都是有用的,我們實際上并不想舍棄一些信息或者說舍棄這些特征變量。最好的做法是采取某種約束可以自動選擇重要的特征變量,自動舍棄不需要的特征變量。
??? 方法二:正則化。采用正則化方法會自動削弱不重要的特征變量,自動從許多的特征變量中”提取“重要的特征變量,減小特征變量的數(shù)量級。這個方法非常有效,當(dāng)我們有很多特征變量時,其中每一個變量都能對預(yù)測產(chǎn)生一點(diǎn)影響。正如在房價預(yù)測的例子中看到的那樣,我們可以有很多特征變量,其中每一個變量都是有用的,因此我們不希望把它們刪掉,這就導(dǎo)致了正則化概念的發(fā)生。
五、L1和L2正則化的直觀理解
右上角那個彩色的一圈圈的就是誤差項的函數(shù)。最小化的時候就是這兩個相交的時候。左邊的L1函數(shù)圖像是帶一個尖角的。明顯更容易相交在數(shù)軸上,就是為整數(shù)的點(diǎn)上,這樣就會有更多的剛好為0的解。而L2相交在圓弧上,各種位置都有可能。
上圖代表的意思就是目標(biāo)函數(shù)-平方誤差項的等值線和L1、L2范數(shù)等值線(左邊是L1),我們正則化后的代價函數(shù)需要求解的目標(biāo)就是在經(jīng)驗風(fēng)險和模型復(fù)雜度之間的平衡取舍,在圖中形象地表示就是黑色線與彩色線的交叉點(diǎn)。
彩色線就是優(yōu)化過程中遇到的等高線,一圈代表一個目標(biāo)函數(shù)值,圓心就是樣本觀測值(假設(shè)一個樣本),半徑就是誤差值,受限條件就是黑色邊界(就是正則化那部分),二者相交處,才是最優(yōu)參數(shù)。
左圖中這個頂點(diǎn)的值是(w1,w2)=(0,w)。可以直觀想象,因為L1函數(shù)有很多『突出的角』(二維情況下四個,多維情況下更多),沒有加正則項的損失函數(shù)與這些角接觸的機(jī)率會遠(yuǎn)大于與L1其它部位接觸的機(jī)率,而在這些角上,會有很多權(quán)值等于0,這就是L1可以產(chǎn)生稀疏模型的原因,進(jìn)而可以用于特征選擇。
右圖中二維平面下L2正則化的函數(shù)圖形是個圓,與方形相比,被磨去了棱角。因此沒有加正則項的損失函數(shù)與L相交時使得w1或w2等于零的機(jī)率小了許多,這就是L2正則化不具有稀疏性的原因。
L2正則化相當(dāng)于為參數(shù)定義了一個圓形的解空間,而L1正則化相當(dāng)于為參數(shù)定義了一個菱形的解空間。L1“棱角分明”的解空間顯然更容易與目標(biāo)函數(shù)等高線在腳點(diǎn)碰撞。從而產(chǎn)生稀疏解
?
六、關(guān)于L1,L2正則解的稀疏性的詳細(xì)數(shù)學(xué)解釋
L1 regularization
在原始的代價函數(shù)后面加上一個L1正則化項,即所有權(quán)重w的絕對值的和,乘以λ/n(這里不像L2正則化項那樣,需要再乘以1/2)
?同樣先計算導(dǎo)數(shù):
上式中sgn(w)表示w的符號。那么權(quán)重w的更新規(guī)則為:
比原始的更新規(guī)則多出了η * λ * sgn(w)/n這一項。當(dāng)w為正時,更新后的w變小。當(dāng)w為負(fù)時,更新后的w變大——因此它的效果就是讓w往0靠,使網(wǎng)絡(luò)中的權(quán)重盡可能為0,也就相當(dāng)于減小了網(wǎng)絡(luò)復(fù)雜度,防止過擬合
另外,上面沒有提到一個問題,當(dāng)w為0時怎么辦?當(dāng)w等于0時,|W|是不可導(dǎo)的,所以我們只能按照原始的未經(jīng)正則化的方法去更新w,這就相當(dāng)于去掉η*λ*sgn(w)/n這一項,所以我們可以規(guī)定sgn(0)=0,這樣就把w=0的情況也統(tǒng)一進(jìn)來了。
(在編程的時候,令sgn(0)=0,sgn(w>0)=1,sgn(w<0)=-1)
L2 regularization(權(quán)重衰減)
L2正則化就是在代價函數(shù)后面再加上一個正則化項:
C0代表原始的代價函數(shù),后面那一項就是L2正則化項,它是這樣來的:所有參數(shù)w的平方的和,除以訓(xùn)練集的樣本大小n。λ就是正則項系數(shù),權(quán)衡正則項與C0項的比重。另外還有一個系數(shù)1/2,1/2經(jīng)常會看到,主要是為了后面求導(dǎo)的結(jié)果方便,后面那一項求導(dǎo)會產(chǎn)生一個2,與1/2相乘剛好湊整。
L2正則化項是怎么避免overfitting的呢?我們推導(dǎo)一下看看,先求導(dǎo):
可以發(fā)現(xiàn)L2正則化項對b的更新沒有影響,但是對于w的更新有影響:
在不使用L2正則化時,求導(dǎo)結(jié)果中w前系數(shù)為1,現(xiàn)在w前面系數(shù)為 1?ηλ/n ,因為η、λ、n都是正的,所以 1?ηλ/n小于1,它的效果是減小w,這也就是權(quán)重衰減(weight decay)的由來。當(dāng)然考慮到后面的導(dǎo)數(shù)項,w最終的值可能增大也可能減小。
另外,需要提一下,對于基于mini-batch的隨機(jī)梯度下降,w和b更新的公式跟上面給出的有點(diǎn)不同:
對比上面w的更新公式,可以發(fā)現(xiàn)后面那一項變了,變成所有導(dǎo)數(shù)加和,乘以η再除以m,m是一個mini-batch中樣本的個數(shù)。
到目前為止,我們只是解釋了L2正則化項有讓w“變小”的效果,但是還沒解釋為什么w“變小”可以防止overfitting?一個所謂“顯而易見”的解釋就是:更小的權(quán)值w,從某種意義上說,表示網(wǎng)絡(luò)的復(fù)雜度更低,對數(shù)據(jù)的擬合剛剛好(這個法則也叫做奧卡姆剃刀),而在實際應(yīng)用中,也驗證了這一點(diǎn),L2正則化的效果往往好于未經(jīng)正則化的效果。當(dāng)然,對于很多人(包括我)來說,這個解釋似乎不那么顯而易見,所以這里添加一個稍微數(shù)學(xué)一點(diǎn)的解釋(引自知乎):
過擬合的時候,擬合函數(shù)的系數(shù)往往非常大,為什么?如下圖所示,過擬合,就是擬合函數(shù)需要顧忌每一個點(diǎn),最終形成的擬合函數(shù)波動很大。在某些很小的區(qū)間里,函數(shù)值的變化很劇烈。這就意味著函數(shù)在某些小區(qū)間里的導(dǎo)數(shù)值(絕對值)非常大,由于自變量值可大可小,所以只有系數(shù)足夠大,才能保證導(dǎo)數(shù)值很大。
?
而正則化是通過約束參數(shù)的范數(shù)使其不要太大,所以可以在一定程度上減少過擬合情況。
七、?L1和L2正則化的區(qū)別
1. L2 regularizer :使得模型的解偏向于 norm 較小的 W,通過限制 W 的 norm 的大小實現(xiàn)了對模型空間的限制,從而在一定程度上避免了 overfitting 。不過 ridge regression 并不具有產(chǎn)生稀疏解的能力,得到的系數(shù) 仍然需要數(shù)據(jù)中的所有特征才能計算預(yù)測結(jié)果,從計算量上來說并沒有得到改觀。因為L1范數(shù)正則化項的“稀疏解”特性,L1更適合用于特征選擇,找出較為“關(guān)鍵”的特征,而把一些不那么重要的特征置為零。
2. L1 regularizer : 它的優(yōu)良性質(zhì)是能產(chǎn)生稀疏性,導(dǎo)致 W 中許多項變成零。 稀疏的解除了計算量上的好處之外,更重要的是更具有“可解釋性”。L2范數(shù)正則化項可以產(chǎn)生很多參數(shù)值很小的模型,也就是說這類的模型抗干擾的能力很強(qiáng),可以適應(yīng)不同的數(shù)據(jù)集,適應(yīng)不同的“極端條件”。
一般回歸分析中回歸w表示特征的系數(shù),從上式可以看到正則化項是對系數(shù)做了處理(限制)。
L1正則化和L2正則化的說明如下:
那添加L1和L2正則化有什么用?下面是L1正則化和L2正則化的作用,這些表述可以在很多文章中找到。
- L1正則化可以產(chǎn)生稀疏權(quán)值矩陣,即產(chǎn)生一個稀疏模型,可以用于特征選擇
- L2正則化可以防止模型過擬合(overfitting);一定程度上,L1也可以防止過擬合
稀疏模型與特征選擇
上面提到L1正則化有助于生成一個稀疏權(quán)值矩陣,進(jìn)而可以用于特征選擇。為什么要生成一個稀疏矩陣?
稀疏矩陣指的是很多元素為0,只有少數(shù)元素是非零值的矩陣,即得到的線性回歸模型的大部分系數(shù)都是0. 通常機(jī)器學(xué)習(xí)中特征數(shù)量很多,例如文本處理時,如果將一個詞組(term)作為一個特征,那么特征數(shù)量會達(dá)到上萬個(bigram)。在預(yù)測或分類時,那么多特征顯然難以選擇,但是如果代入這些特征得到的模型是一個稀疏模型,表示只有少數(shù)特征對這個模型有貢獻(xiàn),絕大部分特征是沒有貢獻(xiàn)的,或者貢獻(xiàn)微小(因為它們前面的系數(shù)是0或者是很小的值,即使去掉對模型也沒有什么影響),此時我們就可以只關(guān)注系數(shù)是非零值的特征。這就是稀疏模型與特征選擇的關(guān)系。
正則化參數(shù)的選擇
L1正則化參數(shù)
通常越大的λ可以讓代價函數(shù)在參數(shù)為0時取到最小值。。因為正則化系數(shù)越大,正則化的函數(shù)圖形(上文圖中的方形或圓形)會向坐標(biāo)軸原點(diǎn)收縮得越厲害,這個現(xiàn)象稱為shrinkage,過程可以稱為shrink to zero.?
下面是一個簡單的例子,這個例子來自Quora上的問答。為了方便敘述,一些符號跟這篇帖子的符號保持一致。
假設(shè)有如下帶L1正則化項的代價函數(shù):
F(x)=f(x)+λ||x||1
其中x是要估計的參數(shù),相當(dāng)于上文中提到的w以及θ. 注意到L1正則化在某些位置是不可導(dǎo)的,當(dāng)λ足夠大時可以使得F(x)在x=0時取到最小值。如下圖:
分別取λ=0.5和λ=2,可以看到越大的λ越容易使F(x)在x=0時取到最小值。
此外也可以自己計算一下,當(dāng)損失函數(shù)f(x)和正則化函數(shù)L=∣x∣在定義域內(nèi)第一次相交的地方,就是整個代價函數(shù)F(x)的最優(yōu)解。
L2正則化參數(shù)
從公式5可以看到,λ越大,θj衰減得越快。另一個理解可以參考圖2,λ越大,L2圓的半徑越小,最后求得代價函數(shù)最值時各參數(shù)也會變得很小。
參考: https://blog.csdn.net/jinping_shi/article/details/52433975
總結(jié)
以上是生活随笔為你收集整理的[机器学习]正则化方法 -- Regularization的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs 调用win32 api
- 下一篇: Win10安装Office报错怎么办 W