知識預備:范數(shù)
http://blog.csdn.net/shijing_0214/article/details/51757564
我們經(jīng)常會聽到正則項這個概念撞秋,通過查閱資料并且結合自己的理解對正則項做了一個簡單的總結长捧,首先,從問題出發(fā):
(1)正則項存在的意義是什么吻贿,為什么要使用正則項串结?正則項是如何防止過擬合的?
(2)有哪幾種正則項,如何表示肌割,它們的相同點和不同點是什么卧蜓?
(3)不同正則項的使用場景是什么,如何選取正則項呢把敞?
下面就來一一的進行分析吧~~~~
先引入問題:
就拿斯坦福機器學習課程的例子來說弥奸,通過房子的面積來預測房價,建立回歸方程來擬合樣本數(shù)據(jù)
從左到右奋早,分別是欠擬合盛霎,恰當擬合,過擬合耽装。第一張圖是欠擬合愤炸,它是高偏差的,第三張圖是過擬合的剂邮,用四次方五個參數(shù)進行擬合摇幻,中間彎彎曲曲,是高方差的挥萌。那么怎么解決過擬合呢绰姻?
(1)一方面是削減特征的數(shù)量,如果所有特征都是有用的引瀑,我們不該舍棄的狂芋,或者特征很少的時候,我們可能不會削減特征憨栽。
(2)另一方面是減小特征的參數(shù)帜矾,這樣當很多特征變量,并且多多少少都有用時屑柔,也就是正則化出現(xiàn)的意義屡萤,下面會更詳細的介紹。
(一)為什么要使用正則項掸宛?
其實正則項是對參數(shù)的控制死陆。那么為什么要控制參數(shù)呢,控制參數(shù)有什么好處呢唧瘾?
(1)實現(xiàn)參數(shù)的稀疏措译,這樣可以簡化模型,避免過擬合饰序。在一個模型中重要的特征并不是很多领虹,如果考慮所有的特征都是有作用的,那么就會對訓練集進行充分的擬合求豫,導致在測試集的表現(xiàn)并不是很好塌衰,所以我們需要稀疏參數(shù)诉稍,簡化模型。
(2)盡可能保證參數(shù)小一些猾蒂,這又是為啥呢均唉?因為越是復雜的模型,它會對所有的樣本點進行擬合肚菠,如果在這里包含異常的樣本,就會在小區(qū)間內(nèi)產(chǎn)生很大的波動罩缴,不同于平均水平的高點或者低點蚊逢,這樣的話,會導致其導數(shù)很大箫章,我們知道在多項式導數(shù)中烙荷,只有參數(shù)非常大的時候,才會產(chǎn)生較大的導數(shù)檬寂,所以模型越復雜终抽,參數(shù)值也就越大。為了避免這種過度的擬合桶至,需要控制參數(shù)值的大小昼伴。
(二)正則項的分類
正則項有三種:L0、L1镣屹、L2
L0正則化的值是模型參數(shù)中非零參數(shù)的個數(shù)圃郊。
L1正則化表示各個參數(shù)絕對值之和。
L2正則化標識各個參數(shù)的平方的和的開方值女蜈。
1持舆、L0正則化
保證參數(shù)稀疏化來防止過擬合,可以用非零參數(shù)伪窖,來進行特征選擇逸寓。但是L0正則化不好求,因此采用L1正則化覆山。L1正則化是L0正則化的最優(yōu)凸近似竹伸,比L0容易求解,并且可以實現(xiàn)稀疏的效果汹买。
2佩伤、L1正則化
L1正則化也叫l(wèi)asso,它往往是替代L0正則化來防止過擬合的晦毙。為啥用L1范數(shù)生巡,因為L1范數(shù)就是各個參數(shù)的絕對值相加,我們已知见妒,參數(shù)的值的大小和模型的復雜度是成正比的孤荣,因此復雜模型,L1范數(shù)就會大,導致?lián)p失函數(shù)大盐股。下面定量的分析:
在原始的代價函數(shù)后面加上一個L1正則化項钱豁,即所有權重w的絕對值的和,乘以λ/n疯汁。如下:
?同樣計算導數(shù)得:
上式中sgn(w)表示w的符號牲尺。那么權重w的更新規(guī)則為:?
現(xiàn)在來觀察正則求導項,可知當w為正時幌蚊,更新后的w變邪肌;當w為負時溢豆,更新后的w變大蜒简。因此它的效果就是讓w往0靠,使網(wǎng)絡中的權重盡可能為0漩仙,也就相當于減小了網(wǎng)絡復雜度搓茬,防止過擬合。另外队他,上面沒有提到一個問題卷仑,當w為0時怎么辦?當w等于0時漱挎,|w|是不可導的系枪,所以我們只能按照原始的未經(jīng)正則化的方法去更新w,這就相當于去掉ηλsgn(w)/n這一項磕谅,所以我們可以規(guī)定sgn(0)=0私爷,這樣就把w=0的情況也統(tǒng)一進來了。
3膊夹、L2正則化
L2正則化也是防止過擬合的衬浑,原因和L1一樣一樣的,就是形式不同放刨。L2范數(shù)是各參數(shù)的平方和再求平方根工秩。對于L2的每個元素都很小,但是不會為0进统,只是接近0助币,參數(shù)越小說明模型越簡單,也就越不容易產(chǎn)生過擬合螟碎。L2正則化也叫做“嶺回歸”眉菱。
來讓我們看看具體的例子,對于房屋價格預測我們可能有上百種特征掉分,與剛剛所講的多項式例子不同俭缓,我們并不知道 哪些是高階多項式的項克伊。所以,如果我們有一百個特征华坦,我們并不知道如何選擇關聯(lián)度更好的參數(shù)愿吹,如何縮小參數(shù)的數(shù)目等等。因此在正則化里惜姐,我們要做的事情犁跪,就是把減小我們的代價函數(shù)(例子中是線性回歸的代價函數(shù))所有的參數(shù)值,因為我們并不知道是哪一個或哪幾個要去縮小歹袁。因此耘拇,我們需要修改代價函數(shù),在這后面添加一項宇攻,就像我們在方括號里的這項。當我們添加一個額外的正則化項的時候倡勇,我們收縮了每個參數(shù)逞刷。
為什么加了一項就讓參數(shù)盡量小呢,因為只要你想讓J最小妻熊,那么θ肯定盡可能的去小夸浅。
注意:這里我們沒有去懲罰 θ0,實踐中只會有較小的差異
λ 要做的就是控制懲罰項與均方差之間的平衡關系扔役。
λ越大說明帆喇,參數(shù)被打壓得越厲害,θ值也就越小
現(xiàn)在進行定量的分析:
L2正則化就是在代價函數(shù)后面再加上一個正則化項:
C0代表原始的代價函數(shù)亿胸,后面那一項就是L2正則化項坯钦,它是這樣來的:所有參數(shù)w的平方的和,除以訓練集的樣本大小n侈玄。λ就是正則項系數(shù)婉刀,權衡正則項與C0項的比重。另外還有一個系數(shù)1/2序仙,1/2經(jīng)常會看到突颊,主要是為了后面求導的結果方便,后面那一項求導會產(chǎn)生一個2潘悼,與1/2相乘剛好湊整律秃。L2正則化項是怎么避免overfitting的呢?我們推導一下看看治唤,先求導:
可以發(fā)現(xiàn)L2正則化項對b的更新沒有影響棒动,但是對于w的更新有影響:
在不使用L2正則化時,求導結果中w前系數(shù)為1肝劲,現(xiàn)在w前面系數(shù)為 1-ηλ/n 迁客,因為η郭宝、λ、n都是正的掷漱,在樣本量充足的時候粘室,1-ηλ/n小于1,它的效果是減小w卜范,這也就是權重衰減的由來衔统。當然考慮到后面的導數(shù)項,w最終的值可能增大也可能減小海雪。
(三)lasso回歸和ridge回歸
下面我們來看兩個對比圖
(1)lasso
注意到L1正則化是權值的絕對值之和锦爵,J是帶有絕對值符號的函數(shù),因此J是不完全可微的奥裸。機器學習的任務就是要通過一些方法(比如梯度下降)求出損失函數(shù)的最小值险掀。考慮二維的情況湾宙,即只有兩個權值w1和w2樟氢,此時L=|w1|+|w2|,對于梯度下降法侠鳄,求解J的過程可以畫出等值線埠啃,同時L1正則化的函數(shù)L也可以在w1w2的二維平面上畫出來。如下圖:
在圖中伟恶,當J等值線與L首次相交的地方就是最優(yōu)解碴开。上圖中J與L在L的一個頂點處相交,這個頂點就是最優(yōu)解博秫。注意到這個頂點的值是(w1,w2)=(0,w)潦牛。可以直觀想象台盯,因為L函數(shù)有很多突出的角(二維情況下四個罢绽,多維情況下更多),J與這些角接觸的機率會遠大于與L其它部位接觸的機率静盅,而在這些角上良价,會有很多權值等于0,這就是為什么L1正則化可以產(chǎn)生稀疏模型蒿叠,進而可以用于特征選擇明垢。
(2)ridge
同理,假設有如下帶L2正則化的損失函數(shù)市咽,同樣可以畫出他們在二維平面上的圖形痊银,如下:
圖2 L2正則化二維平面下L2正則化的函數(shù)圖形是個圓,與方形相比施绎,被磨去了棱角溯革。因此J與L相交時使得w1或w2等于零的機率小了許多贞绳,這就是為什么L2正則化不具有稀疏性的原因。
總結:L1會趨向于產(chǎn)生少量的特征致稀,而其他的特征都是0冈闭,而L2會選擇更多的特征,這些特征都會接近于0抖单。Lasso在特征選擇時候非常有用萎攒,而Ridge就只是一種規(guī)則化而已。在所有特征中只有少數(shù)特征起重要作用的情況下矛绘,選擇Lasso比較合適耍休,因為它能自動選擇特征。而如果所有特征中货矮,大部分特征都能起作用羊精,而且起的作用很平均,那么使用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/