知識預(yù)備:范數(shù)
http://blog.csdn.net/shijing_0214/article/details/51757564
我們經(jīng)常會(huì)聽到正則項(xiàng)這個(gè)概念,通過查閱資料并且結(jié)合自己的理解對正則項(xiàng)做了一個(gè)簡單的總結(jié),首先,從問題出發(fā):
(1)正則項(xiàng)存在的意義是什么,為什么要使用正則項(xiàng)?正則項(xiàng)是如何防止過擬合的?
(2)有哪幾種正則項(xiàng),如何表示,它們的相同點(diǎn)和不同點(diǎn)是什么?
(3)不同正則項(xiàng)的使用場景是什么,如何選取正則項(xiàng)呢?
下面就來一一的進(jìn)行分析吧~~~~
先引入問題:
就拿斯坦福機(jī)器學(xué)習(xí)課程的例子來說,通過房子的面積來預(yù)測房價(jià),建立回歸方程來擬合樣本數(shù)據(jù)
從左到右,分別是欠擬合,恰當(dāng)擬合,過擬合。第一張圖是欠擬合,它是高偏差的,第三張圖是過擬合的,用四次方五個(gè)參數(shù)進(jìn)行擬合,中間彎彎曲曲,是高方差的。那么怎么解決過擬合呢?
(1)一方面是削減特征的數(shù)量,如果所有特征都是有用的,我們不該舍棄的,或者特征很少的時(shí)候,我們可能不會(huì)削減特征。
(2)另一方面是減小特征的參數(shù),這樣當(dāng)很多特征變量,并且多多少少都有用時(shí),也就是正則化出現(xiàn)的意義,下面會(huì)更詳細(xì)的介紹。
(一)為什么要使用正則項(xiàng)?
其實(shí)正則項(xiàng)是對參數(shù)的控制。那么為什么要控制參數(shù)呢,控制參數(shù)有什么好處呢?
(1)實(shí)現(xiàn)參數(shù)的稀疏,這樣可以簡化模型,避免過擬合。在一個(gè)模型中重要的特征并不是很多,如果考慮所有的特征都是有作用的,那么就會(huì)對訓(xùn)練集進(jìn)行充分的擬合,導(dǎo)致在測試集的表現(xiàn)并不是很好,所以我們需要稀疏參數(shù),簡化模型。
(2)盡可能保證參數(shù)小一些,這又是為啥呢?因?yàn)樵绞菑?fù)雜的模型,它會(huì)對所有的樣本點(diǎn)進(jìn)行擬合,如果在這里包含異常的樣本,就會(huì)在小區(qū)間內(nèi)產(chǎn)生很大的波動(dòng),不同于平均水平的高點(diǎn)或者低點(diǎn),這樣的話,會(huì)導(dǎo)致其導(dǎo)數(shù)很大,我們知道在多項(xiàng)式導(dǎo)數(shù)中,只有參數(shù)非常大的時(shí)候,才會(huì)產(chǎn)生較大的導(dǎo)數(shù),所以模型越復(fù)雜,參數(shù)值也就越大。為了避免這種過度的擬合,需要控制參數(shù)值的大小。
(二)正則項(xiàng)的分類
正則項(xiàng)有三種:L0、L1、L2
L0正則化的值是模型參數(shù)中非零參數(shù)的個(gè)數(shù)。
L1正則化表示各個(gè)參數(shù)絕對值之和。
L2正則化標(biāo)識各個(gè)參數(shù)的平方的和的開方值。
1、L0正則化
保證參數(shù)稀疏化來防止過擬合,可以用非零參數(shù),來進(jìn)行特征選擇。但是L0正則化不好求,因此采用L1正則化。L1正則化是L0正則化的最優(yōu)凸近似,比L0容易求解,并且可以實(shí)現(xiàn)稀疏的效果。
2、L1正則化
L1正則化也叫l(wèi)asso,它往往是替代L0正則化來防止過擬合的。為啥用L1范數(shù),因?yàn)長1范數(shù)就是各個(gè)參數(shù)的絕對值相加,我們已知,參數(shù)的值的大小和模型的復(fù)雜度是成正比的,因此復(fù)雜模型,L1范數(shù)就會(huì)大,導(dǎo)致?lián)p失函數(shù)大。下面定量的分析:
在原始的代價(jià)函數(shù)后面加上一個(gè)L1正則化項(xiàng),即所有權(quán)重w的絕對值的和,乘以λ/n。如下:
?同樣計(jì)算導(dǎo)數(shù)得:
上式中sgn(w)表示w的符號。那么權(quán)重w的更新規(guī)則為:?
現(xiàn)在來觀察正則求導(dǎo)項(xiàng),可知當(dāng)w為正時(shí),更新后的w變小;當(dāng)w為負(fù)時(shí),更新后的w變大。因此它的效果就是讓w往0靠,使網(wǎng)絡(luò)中的權(quán)重盡可能為0,也就相當(dāng)于減小了網(wǎng)絡(luò)復(fù)雜度,防止過擬合。另外,上面沒有提到一個(gè)問題,當(dāng)w為0時(shí)怎么辦?當(dāng)w等于0時(shí),|w|是不可導(dǎo)的,所以我們只能按照原始的未經(jīng)正則化的方法去更新w,這就相當(dāng)于去掉ηλsgn(w)/n這一項(xiàng),所以我們可以規(guī)定sgn(0)=0,這樣就把w=0的情況也統(tǒng)一進(jìn)來了。
3、L2正則化
L2正則化也是防止過擬合的,原因和L1一樣一樣的,就是形式不同。L2范數(shù)是各參數(shù)的平方和再求平方根。對于L2的每個(gè)元素都很小,但是不會(huì)為0,只是接近0,參數(shù)越小說明模型越簡單,也就越不容易產(chǎn)生過擬合。L2正則化也叫做“嶺回歸”。
來讓我們看看具體的例子,對于房屋價(jià)格預(yù)測我們可能有上百種特征,與剛剛所講的多項(xiàng)式例子不同,我們并不知道 哪些是高階多項(xiàng)式的項(xiàng)。所以,如果我們有一百個(gè)特征,我們并不知道如何選擇關(guān)聯(lián)度更好的參數(shù),如何縮小參數(shù)的數(shù)目等等。因此在正則化里,我們要做的事情,就是把減小我們的代價(jià)函數(shù)(例子中是線性回歸的代價(jià)函數(shù))所有的參數(shù)值,因?yàn)槲覀儾⒉恢朗悄囊粋€(gè)或哪幾個(gè)要去縮小。因此,我們需要修改代價(jià)函數(shù),在這后面添加一項(xiàng),就像我們在方括號里的這項(xiàng)。當(dāng)我們添加一個(gè)額外的正則化項(xiàng)的時(shí)候,我們收縮了每個(gè)參數(shù)。
為什么加了一項(xiàng)就讓參數(shù)盡量小呢,因?yàn)橹灰阆胱孞最小,那么θ肯定盡可能的去小。
注意:這里我們沒有去懲罰 θ0,實(shí)踐中只會(huì)有較小的差異
λ 要做的就是控制懲罰項(xiàng)與均方差之間的平衡關(guān)系。
λ越大說明,參數(shù)被打壓得越厲害,θ值也就越小
現(xiàn)在進(jìn)行定量的分析:
L2正則化就是在代價(jià)函數(shù)后面再加上一個(gè)正則化項(xiàng):

C0代表原始的代價(jià)函數(shù),后面那一項(xiàng)就是L2正則化項(xiàng),它是這樣來的:所有參數(shù)w的平方的和,除以訓(xùn)練集的樣本大小n。λ就是正則項(xiàng)系數(shù),權(quán)衡正則項(xiàng)與C0項(xiàng)的比重。另外還有一個(gè)系數(shù)1/2,1/2經(jīng)常會(huì)看到,主要是為了后面求導(dǎo)的結(jié)果方便,后面那一項(xiàng)求導(dǎo)會(huì)產(chǎn)生一個(gè)2,與1/2相乘剛好湊整。L2正則化項(xiàng)是怎么避免overfitting的呢?我們推導(dǎo)一下看看,先求導(dǎo):

可以發(fā)現(xiàn)L2正則化項(xiàng)對b的更新沒有影響,但是對于w的更新有影響:

在不使用L2正則化時(shí),求導(dǎo)結(jié)果中w前系數(shù)為1,現(xiàn)在w前面系數(shù)為 1-ηλ/n ,因?yàn)棣?、λ、n都是正的,在樣本量充足的時(shí)候,1-ηλ/n小于1,它的效果是減小w,這也就是權(quán)重衰減的由來。當(dāng)然考慮到后面的導(dǎo)數(shù)項(xiàng),w最終的值可能增大也可能減小。
(三)lasso回歸和ridge回歸
下面我們來看兩個(gè)對比圖
(1)lasso
注意到L1正則化是權(quán)值的絕對值之和,J是帶有絕對值符號的函數(shù),因此J是不完全可微的。機(jī)器學(xué)習(xí)的任務(wù)就是要通過一些方法(比如梯度下降)求出損失函數(shù)的最小值??紤]二維的情況,即只有兩個(gè)權(quán)值w1和w2,此時(shí)L=|w1|+|w2|,對于梯度下降法,求解J的過程可以畫出等值線,同時(shí)L1正則化的函數(shù)L也可以在w1w2的二維平面上畫出來。如下圖:

在圖中,當(dāng)J等值線與L首次相交的地方就是最優(yōu)解。上圖中J與L在L的一個(gè)頂點(diǎn)處相交,這個(gè)頂點(diǎn)就是最優(yōu)解。注意到這個(gè)頂點(diǎn)的值是(w1,w2)=(0,w)??梢灾庇^想象,因?yàn)長函數(shù)有很多突出的角(二維情況下四個(gè),多維情況下更多),J與這些角接觸的機(jī)率會(huì)遠(yuǎn)大于與L其它部位接觸的機(jī)率,而在這些角上,會(huì)有很多權(quán)值等于0,這就是為什么L1正則化可以產(chǎn)生稀疏模型,進(jìn)而可以用于特征選擇。
(2)ridge
同理,假設(shè)有如下帶L2正則化的損失函數(shù),同樣可以畫出他們在二維平面上的圖形,如下:

圖2 L2正則化二維平面下L2正則化的函數(shù)圖形是個(gè)圓,與方形相比,被磨去了棱角。因此J與L相交時(shí)使得w1或w2等于零的機(jī)率小了許多,這就是為什么L2正則化不具有稀疏性的原因。
總結(jié):L1會(huì)趨向于產(chǎn)生少量的特征,而其他的特征都是0,而L2會(huì)選擇更多的特征,這些特征都會(huì)接近于0。Lasso在特征選擇時(shí)候非常有用,而Ridge就只是一種規(guī)則化而已。在所有特征中只有少數(shù)特征起重要作用的情況下,選擇Lasso比較合適,因?yàn)樗茏詣?dòng)選擇特征。而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,那么使用Ridge也許更合適。
參考文章:
http://blog.csdn.net/vividonly/article/details/50723852
http://blog.sina.com.cn/s/blog_8267db980102wryn.html
http://www.mamicode.com/info-detail-517504.html
http://www.2cto.com/kf/201609/545625.html
http://blog.csdn.net/zouxy09/article/details/24971995/