機(jī)器學(xué)習(xí)模型需要擁有很好地泛化能力來(lái)適應(yīng)訓(xùn)練集中沒(méi)有出現(xiàn)過(guò)的新樣本。在機(jī)器學(xué)習(xí)應(yīng)用時(shí)棋嘲,我們經(jīng)常會(huì)遇到過(guò)度擬合(over-fitting)的問(wèn)題,可能會(huì)導(dǎo)致訓(xùn)練出來(lái)的模型效果很差。接下來(lái)蜜暑,我們將談?wù)摰恼齽t化(regularization)技術(shù),它可以改善或者減少過(guò)度擬合問(wèn)題策肝,以使學(xué)習(xí)算法更好實(shí)現(xiàn)肛捍。
一、什么是擬合
機(jī)器學(xué)習(xí)中一個(gè)重要的話題便是模型的泛化能力之众,泛化能力強(qiáng)的模型才是好模型拙毫,對(duì)于訓(xùn)練好的模型,若在訓(xùn)練集表現(xiàn)差棺禾,不必說(shuō)在測(cè)試集表現(xiàn)同樣會(huì)很差缀蹄,這可能是欠擬合(under fitting)導(dǎo)致;若模型在訓(xùn)練集表現(xiàn)非常好膘婶,卻在測(cè)試集上差強(qiáng)人意缺前,則這便是過(guò)擬合(over fitting)導(dǎo)致的,過(guò)擬合與欠擬合也可以用 Bias 與 Variance 的角度來(lái)解釋悬襟,欠擬合會(huì)導(dǎo)致高 Bias 衅码,過(guò)擬合會(huì)導(dǎo)致高 Variance ,所以模型需要在 Bias 與 Variance 之間做出一個(gè)權(quán)衡脊岳。
使用簡(jiǎn)單的模型去擬合復(fù)雜數(shù)據(jù)時(shí)逝段,會(huì)導(dǎo)致模型很難擬合數(shù)據(jù)的真實(shí)分布,這時(shí)模型便欠擬合了割捅,或者說(shuō)有很大的 Bias惹恃,Bias 即為模型的期望輸出與其真實(shí)輸出之間的差異;有時(shí)為了得到比較精確的模型而過(guò)度擬合訓(xùn)練數(shù)據(jù)棺牧,或者模型復(fù)雜度過(guò)高時(shí)巫糙,可能連訓(xùn)練數(shù)據(jù)的噪音也擬合了,導(dǎo)致模型在訓(xùn)練集上效果非常好颊乘,但泛化性能卻很差参淹,這時(shí)模型便過(guò)擬合了,或者說(shuō)有很大的 Variance乏悄,這時(shí)模型在不同訓(xùn)練集上得到的模型波動(dòng)比較大浙值,Variance 刻畫(huà)了不同訓(xùn)練集得到的模型的輸出與這些模型期望輸出的差異。
舉例:
補(bǔ)充:Bias 與 Variance
Bias反映的是模型的期望與真實(shí)值之間的誤差檩小,即模型本身的精準(zhǔn)度开呐,Variance反映的是模型每一次輸出結(jié)果與模型輸出期望之間的誤差,即模型的穩(wěn)定性。
我們通過(guò)公式來(lái)直觀了解一下筐付,文字沒(méi)有數(shù)學(xué)符號(hào)解釋的清楚:
用圖形解釋方差與偏差:
紅色的靶心區(qū)域是學(xué)習(xí)算法完美的正確預(yù)測(cè)值, 藍(lán)色點(diǎn)為每個(gè)數(shù)據(jù)集所訓(xùn)練出的模型對(duì)樣本的預(yù)測(cè)值, 當(dāng)我們從靶心逐漸向外移動(dòng)時(shí), 預(yù)測(cè)效果逐漸變差卵惦。
方差:比較集中的屬于方差小的,比較分散的屬于方差大的情況瓦戚。
偏差:從藍(lán)色點(diǎn)與紅色靶心區(qū)域的位置關(guān)系沮尿,靠近紅色靶心的屬于偏差較小的情況,遠(yuǎn)離靶心的屬于偏差較大的情況较解。
舉一個(gè)例子畜疾,一次打靶實(shí)驗(yàn),目標(biāo)是為了打到10環(huán)印衔,但是實(shí)際上只打到了7環(huán)啡捶,那么這里面的Error就是3。具體分析打到7環(huán)的原因奸焙,可能有兩方面:一是瞄準(zhǔn)出了問(wèn)題瞎暑,比如實(shí)際上射擊瞄準(zhǔn)的是9環(huán)而不是10環(huán);二是槍本身的穩(wěn)定性有問(wèn)題忿偷,雖然瞄準(zhǔn)的是9環(huán)金顿,但是只打到了7環(huán)臊泌。那么在上面一次射擊實(shí)驗(yàn)中鲤桥,Bias就是1,反應(yīng)的是模型期望與真實(shí)目標(biāo)的差距,而在這次試驗(yàn)中渠概,由于Variance所帶來(lái)的誤差就是2茶凳,即雖然瞄準(zhǔn)的是9環(huán),但由于本身模型缺乏穩(wěn)定性播揪,造成了實(shí)際結(jié)果與模型期望之間的差距贮喧。
簡(jiǎn)單的模型會(huì)有一個(gè)較大的偏差和較小的方差,復(fù)雜的模型偏差較小方差較大猪狈。
解決欠擬合的方法:
1箱沦、增加新特征,可以考慮加入進(jìn)特征組合雇庙、高次特征谓形,來(lái)增大假設(shè)空間;
2、嘗試非線性模型疆前,比如核SVM 寒跳、決策樹(shù)、DNN等模型;
3竹椒、如果有正則項(xiàng)可以較小正則項(xiàng)參數(shù);
4童太、Boosting ,Boosting 往往會(huì)有較小的 Bias,比如 Gradient Boosting 等.
解決過(guò)擬合的方法:
1、交叉檢驗(yàn)书释,通過(guò)交叉檢驗(yàn)得到較優(yōu)的模型參數(shù);
2翘贮、特征選擇,減少特征數(shù)或使用較少的特征組合征冷,對(duì)于按區(qū)間離散化的特征择膝,增大劃分的區(qū)間;
3、正則化检激,常用的有 L1肴捉、L2 正則。而且 L1正則還可以自動(dòng)進(jìn)行特征選擇;
4叔收、如果有正則項(xiàng)則可以考慮增大正則項(xiàng)參數(shù);
5齿穗、增加訓(xùn)練數(shù)據(jù)可以有限的避免過(guò)擬合;
6、Bagging ,將多個(gè)弱學(xué)習(xí)器Bagging 一下效果會(huì)好很多饺律,比如隨機(jī)森林等.
DNN中常見(jiàn)的方法:
1窃页、早停策略。本質(zhì)上是交叉驗(yàn)證策略复濒,選擇合適的訓(xùn)練次數(shù)脖卖,避免訓(xùn)練的網(wǎng)絡(luò)過(guò)度擬合訓(xùn)練數(shù)據(jù)。
2巧颈、集成學(xué)習(xí)策略久妆。而DNN可以用Bagging的思路來(lái)正則化卿城。首先我們要對(duì)原始的m個(gè)訓(xùn)練樣本進(jìn)行有放回隨機(jī)采樣,構(gòu)建N組m個(gè)樣本的數(shù)據(jù)集,然后分別用這N組數(shù)據(jù)集去訓(xùn)練我們的DNN梗夸。即采用我們的前向傳播算法和反向傳播算法得到N個(gè)DNN模型的W,b參數(shù)組合拴竹,最后對(duì)N個(gè)DNN模型的輸出用加權(quán)平均法或者投票法決定最終輸出扫俺。不過(guò)用集成學(xué)習(xí)Bagging的方法有一個(gè)問(wèn)題路鹰,就是我們的DNN模型本來(lái)就比較復(fù)雜,參數(shù)很多≌悼穑現(xiàn)在又變成了N個(gè)DNN模型围俘,這樣參數(shù)又增加了N倍,從而導(dǎo)致訓(xùn)練這樣的網(wǎng)絡(luò)要花更加多的時(shí)間和空間琢融。因此一般N的個(gè)數(shù)不能太多界牡,比如5-10個(gè)就可以了。
3吏奸、DropOut策略欢揖。所謂的Dropout指的是在用前向傳播算法和反向傳播算法訓(xùn)練DNN模型時(shí),一批數(shù)據(jù)迭代時(shí)奋蔚,隨機(jī)的從全連接DNN網(wǎng)絡(luò)中去掉一部分隱藏層的神經(jīng)元她混×页 在對(duì)訓(xùn)練集中的一批數(shù)據(jù)進(jìn)行訓(xùn)練時(shí),我們隨機(jī)去掉一部分隱藏層的神經(jīng)元坤按,并用去掉隱藏層的神經(jīng)元的網(wǎng)絡(luò)來(lái)擬合我們的一批訓(xùn)練數(shù)據(jù)毯欣。使用基于dropout的正則化比基于bagging的正則化簡(jiǎn)單,這顯而易見(jiàn)臭脓,當(dāng)然天下沒(méi)有免費(fèi)的午餐酗钞,由于dropout會(huì)將原始數(shù)據(jù)分批迭代,因此原始數(shù)據(jù)集最好較大来累,否則模型可能會(huì)欠擬合砚作。
二、L1和L2正則化方法解決過(guò)擬合
正則化的目的是限制參數(shù)過(guò)多或者過(guò)大嘹锁,避免模型更加復(fù)雜葫录。例如,使用多項(xiàng)式模型领猾,如果使用 10 階多項(xiàng)式米同,模型可能過(guò)于復(fù)雜,容易發(fā)生過(guò)擬合摔竿。因此需要在目標(biāo)函數(shù)添加一些額外的懲罰項(xiàng)面粮,即正則項(xiàng)。添加懲罰項(xiàng)可看成是對(duì)損失函數(shù)中的某些參數(shù)做一些限制继低,根據(jù)懲罰項(xiàng)的不同可分為:L0范數(shù)懲罰熬苍、L1范數(shù)懲罰(參數(shù)稀疏性懲罰)、L2范數(shù)懲罰(權(quán)重衰減懲罰)郁季。
L0范數(shù)懲罰:為了防止過(guò)擬合冷溃,我們可以將其高階部分的權(quán)重 w 限制為 0钱磅,這樣梦裂,就相當(dāng)于從高階的形式轉(zhuǎn)換為低階。為了達(dá)到這一目的盖淡,最直觀的方法就是限制 w 的個(gè)數(shù)年柠,但是這類條件屬于 NP-hard 問(wèn)題,求解非常困難褪迟。因此機(jī)器學(xué)習(xí)中經(jīng)常使用L1冗恨、L2正則化。L1正則化項(xiàng)也稱為L(zhǎng)asso味赃,L2正則化參數(shù)也稱為Ridge掀抹。
L1范數(shù):權(quán)值向量w中各個(gè)元素的絕對(duì)值之和,L1正則化可以產(chǎn)生稀疏權(quán)值矩陣心俗,即產(chǎn)生一個(gè)稀疏模型傲武,可以用于特征選擇蓉驹。
L2范數(shù):權(quán)值向量w中各個(gè)元素的平方和然后再求平方根,L2正則化可以防止模型過(guò)擬合揪利;一定程度上态兴,L1也可以防止過(guò)擬合。
L1疟位,L2正則化項(xiàng)簡(jiǎn)介:
基于拉格朗日松弛的有約束轉(zhuǎn)無(wú)約束:
上面我們得到了帶約束的優(yōu)化問(wèn)題A2瞻润,在實(shí)際的求解中,帶約束的優(yōu)化問(wèn)題往往較難求解甜刻,大多都是轉(zhuǎn)化為無(wú)約束優(yōu)化問(wèn)題去求解绍撞。接下來(lái)自然而然的我們采用拉格朗日乘子法將約束轉(zhuǎn)化到目標(biāo)函數(shù)上去,也就將約束優(yōu)化問(wèn)題A2轉(zhuǎn)化為一個(gè)無(wú)約束的優(yōu)化問(wèn)題得院。那么這個(gè)無(wú)約束優(yōu)化問(wèn)題的形式是什么樣的呢楚午?這里直接先把最終的結(jié)論擺上來(lái):
基于約束優(yōu)化問(wèn)題形式的L1正則化項(xiàng)稀疏性分析:
稀疏性對(duì)很多機(jī)器學(xué)習(xí)建模問(wèn)題來(lái)說(shuō)是非常重要的,也是非常好的一個(gè)性質(zhì)尿招。既然有很多系數(shù)等于0了矾柜,那么說(shuō)明與之對(duì)應(yīng)的輸入是沒(méi)有用了,這些輸入就可以舍去就谜,相當(dāng)于起到了 降維和feature selection的作用怪蔑。特殊要說(shuō)明的是用L1正則化來(lái)降維和PCA降維是不同的,可以理解為L(zhǎng)1正則化是用了數(shù)據(jù)的標(biāo)簽來(lái)做的丧荐,而PCA無(wú)需數(shù)據(jù)的標(biāo)簽缆瓣。所以L1正則化實(shí)際上是帶有監(jiān)督學(xué)習(xí)性質(zhì)的降維方法。
為什么L2正則化可以獲得值很小的參數(shù)虹统?
擬合過(guò)程中通常都傾向于讓權(quán)值盡可能小弓坞,最后構(gòu)造一個(gè)所有參數(shù)都比較小的模型。因?yàn)橐话阏J(rèn)為參數(shù)值小的模型比較簡(jiǎn)單车荔,能適應(yīng)不同的數(shù)據(jù)集渡冻,也在一定程度上避免了過(guò)擬合現(xiàn)象∮潜悖可以設(shè)想一下對(duì)于一個(gè)線性回歸方程族吻,若參數(shù)很大,那么只要數(shù)據(jù)偏移一點(diǎn)點(diǎn)珠增,就會(huì)對(duì)結(jié)果造成很大的影響超歌;但如果參數(shù)足夠小,數(shù)據(jù)偏移得多一點(diǎn)也不會(huì)對(duì)結(jié)果造成什么影響蒂教,專業(yè)一點(diǎn)的說(shuō)法是抗擾動(dòng)能力強(qiáng)巍举。
正則化參數(shù)λ
λ可以控制L圖形的大小,λ越小凝垛,L的圖形越大(上圖中的黑色方框和圓)懊悯;λ越大简烘,L的圖形越小,最后求得代價(jià)函數(shù)最值時(shí)各參數(shù)也會(huì)變得很小定枷。從另一方面看孤澎,由公式5可以看到,λ越大欠窒,θj衰減得越快覆旭。
Reference:
機(jī)器學(xué)習(xí)中的Bias(偏差),Error(誤差)岖妄,和Variance(方差)有什么區(qū)別和聯(lián)系型将?
機(jī)器學(xué)習(xí)防止欠擬合、過(guò)擬合方法
【學(xué)界】有約束轉(zhuǎn)無(wú)約束荐虐,拉格朗日松弛觀點(diǎn)下的L1正則化稀疏性探討