機器學(xué)習(xí)模型需要擁有很好地泛化能力來適應(yīng)訓(xùn)練集中沒有出現(xiàn)過的新樣本。在機器學(xué)習(xí)應(yīng)用時,我們經(jīng)常會遇到過度擬合(over-fitting)的問題,可能會導(dǎo)致訓(xùn)練出來的模型效果很差。接下來,我們將談?wù)摰恼齽t化(regularization)技術(shù),它可以改善或者減少過度擬合問題,以使學(xué)習(xí)算法更好實現(xiàn)。
一、什么是擬合
機器學(xué)習(xí)中一個重要的話題便是模型的泛化能力,泛化能力強的模型才是好模型,對于訓(xùn)練好的模型,若在訓(xùn)練集表現(xiàn)差,不必說在測試集表現(xiàn)同樣會很差,這可能是欠擬合(under fitting)導(dǎo)致;若模型在訓(xùn)練集表現(xiàn)非常好,卻在測試集上差強人意,則這便是過擬合(over fitting)導(dǎo)致的,過擬合與欠擬合也可以用 Bias 與 Variance 的角度來解釋,欠擬合會導(dǎo)致高 Bias ,過擬合會導(dǎo)致高 Variance ,所以模型需要在 Bias 與 Variance 之間做出一個權(quán)衡。
使用簡單的模型去擬合復(fù)雜數(shù)據(jù)時,會導(dǎo)致模型很難擬合數(shù)據(jù)的真實分布,這時模型便欠擬合了,或者說有很大的 Bias,Bias 即為模型的期望輸出與其真實輸出之間的差異;有時為了得到比較精確的模型而過度擬合訓(xùn)練數(shù)據(jù),或者模型復(fù)雜度過高時,可能連訓(xùn)練數(shù)據(jù)的噪音也擬合了,導(dǎo)致模型在訓(xùn)練集上效果非常好,但泛化性能卻很差,這時模型便過擬合了,或者說有很大的 Variance,這時模型在不同訓(xùn)練集上得到的模型波動比較大,Variance 刻畫了不同訓(xùn)練集得到的模型的輸出與這些模型期望輸出的差異。
舉例:




補充:Bias 與 Variance
Bias反映的是模型的期望與真實值之間的誤差,即模型本身的精準(zhǔn)度,Variance反映的是模型每一次輸出結(jié)果與模型輸出期望之間的誤差,即模型的穩(wěn)定性。
我們通過公式來直觀了解一下,文字沒有數(shù)學(xué)符號解釋的清楚:





用圖形解釋方差與偏差:

紅色的靶心區(qū)域是學(xué)習(xí)算法完美的正確預(yù)測值, 藍色點為每個數(shù)據(jù)集所訓(xùn)練出的模型對樣本的預(yù)測值, 當(dāng)我們從靶心逐漸向外移動時, 預(yù)測效果逐漸變差。
方差:比較集中的屬于方差小的,比較分散的屬于方差大的情況。
偏差:從藍色點與紅色靶心區(qū)域的位置關(guān)系,靠近紅色靶心的屬于偏差較小的情況,遠離靶心的屬于偏差較大的情況。
舉一個例子,一次打靶實驗,目標(biāo)是為了打到10環(huán),但是實際上只打到了7環(huán),那么這里面的Error就是3。具體分析打到7環(huán)的原因,可能有兩方面:一是瞄準(zhǔn)出了問題,比如實際上射擊瞄準(zhǔn)的是9環(huán)而不是10環(huán);二是槍本身的穩(wěn)定性有問題,雖然瞄準(zhǔn)的是9環(huán),但是只打到了7環(huán)。那么在上面一次射擊實驗中,Bias就是1,反應(yīng)的是模型期望與真實目標(biāo)的差距,而在這次試驗中,由于Variance所帶來的誤差就是2,即雖然瞄準(zhǔn)的是9環(huán),但由于本身模型缺乏穩(wěn)定性,造成了實際結(jié)果與模型期望之間的差距。
簡單的模型會有一個較大的偏差和較小的方差,復(fù)雜的模型偏差較小方差較大。

解決欠擬合的方法:
1、增加新特征,可以考慮加入進特征組合、高次特征,來增大假設(shè)空間;
2、嘗試非線性模型,比如核SVM 、決策樹、DNN等模型;
3、如果有正則項可以較小正則項參數(shù);
4、Boosting ,Boosting 往往會有較小的 Bias,比如 Gradient Boosting 等.
解決過擬合的方法:
1、交叉檢驗,通過交叉檢驗得到較優(yōu)的模型參數(shù);
2、特征選擇,減少特征數(shù)或使用較少的特征組合,對于按區(qū)間離散化的特征,增大劃分的區(qū)間;
3、正則化,常用的有 L1、L2 正則。而且 L1正則還可以自動進行特征選擇;
4、如果有正則項則可以考慮增大正則項參數(shù);
5、增加訓(xùn)練數(shù)據(jù)可以有限的避免過擬合;
6、Bagging ,將多個弱學(xué)習(xí)器Bagging 一下效果會好很多,比如隨機森林等.
DNN中常見的方法:
1、早停策略。本質(zhì)上是交叉驗證策略,選擇合適的訓(xùn)練次數(shù),避免訓(xùn)練的網(wǎng)絡(luò)過度擬合訓(xùn)練數(shù)據(jù)。
2、集成學(xué)習(xí)策略。而DNN可以用Bagging的思路來正則化。首先我們要對原始的m個訓(xùn)練樣本進行有放回隨機采樣,構(gòu)建N組m個樣本的數(shù)據(jù)集,然后分別用這N組數(shù)據(jù)集去訓(xùn)練我們的DNN。即采用我們的前向傳播算法和反向傳播算法得到N個DNN模型的W,b參數(shù)組合,最后對N個DNN模型的輸出用加權(quán)平均法或者投票法決定最終輸出。不過用集成學(xué)習(xí)Bagging的方法有一個問題,就是我們的DNN模型本來就比較復(fù)雜,參數(shù)很多?,F(xiàn)在又變成了N個DNN模型,這樣參數(shù)又增加了N倍,從而導(dǎo)致訓(xùn)練這樣的網(wǎng)絡(luò)要花更加多的時間和空間。因此一般N的個數(shù)不能太多,比如5-10個就可以了。
3、DropOut策略。所謂的Dropout指的是在用前向傳播算法和反向傳播算法訓(xùn)練DNN模型時,一批數(shù)據(jù)迭代時,隨機的從全連接DNN網(wǎng)絡(luò)中去掉一部分隱藏層的神經(jīng)元?!≡趯τ?xùn)練集中的一批數(shù)據(jù)進行訓(xùn)練時,我們隨機去掉一部分隱藏層的神經(jīng)元,并用去掉隱藏層的神經(jīng)元的網(wǎng)絡(luò)來擬合我們的一批訓(xùn)練數(shù)據(jù)。使用基于dropout的正則化比基于bagging的正則化簡單,這顯而易見,當(dāng)然天下沒有免費的午餐,由于dropout會將原始數(shù)據(jù)分批迭代,因此原始數(shù)據(jù)集最好較大,否則模型可能會欠擬合。
二、L1和L2正則化方法解決過擬合
正則化的目的是限制參數(shù)過多或者過大,避免模型更加復(fù)雜。例如,使用多項式模型,如果使用 10 階多項式,模型可能過于復(fù)雜,容易發(fā)生過擬合。因此需要在目標(biāo)函數(shù)添加一些額外的懲罰項,即正則項。添加懲罰項可看成是對損失函數(shù)中的某些參數(shù)做一些限制,根據(jù)懲罰項的不同可分為:L0范數(shù)懲罰、L1范數(shù)懲罰(參數(shù)稀疏性懲罰)、L2范數(shù)懲罰(權(quán)重衰減懲罰)。
L0范數(shù)懲罰:為了防止過擬合,我們可以將其高階部分的權(quán)重 w 限制為 0,這樣,就相當(dāng)于從高階的形式轉(zhuǎn)換為低階。為了達到這一目的,最直觀的方法就是限制 w 的個數(shù),但是這類條件屬于 NP-hard 問題,求解非常困難。因此機器學(xué)習(xí)中經(jīng)常使用L1、L2正則化。L1正則化項也稱為Lasso,L2正則化參數(shù)也稱為Ridge。
L1范數(shù):權(quán)值向量w中各個元素的絕對值之和,L1正則化可以產(chǎn)生稀疏權(quán)值矩陣,即產(chǎn)生一個稀疏模型,可以用于特征選擇。
L2范數(shù):權(quán)值向量w中各個元素的平方和然后再求平方根,L2正則化可以防止模型過擬合;一定程度上,L1也可以防止過擬合。
L1,L2正則化項簡介:




基于拉格朗日松弛的有約束轉(zhuǎn)無約束:
上面我們得到了帶約束的優(yōu)化問題A2,在實際的求解中,帶約束的優(yōu)化問題往往較難求解,大多都是轉(zhuǎn)化為無約束優(yōu)化問題去求解。接下來自然而然的我們采用拉格朗日乘子法將約束轉(zhuǎn)化到目標(biāo)函數(shù)上去,也就將約束優(yōu)化問題A2轉(zhuǎn)化為一個無約束的優(yōu)化問題。那么這個無約束優(yōu)化問題的形式是什么樣的呢?這里直接先把最終的結(jié)論擺上來:



基于約束優(yōu)化問題形式的L1正則化項稀疏性分析:



稀疏性對很多機器學(xué)習(xí)建模問題來說是非常重要的,也是非常好的一個性質(zhì)。既然有很多系數(shù)等于0了,那么說明與之對應(yīng)的輸入是沒有用了,這些輸入就可以舍去,相當(dāng)于起到了 降維和feature selection的作用。特殊要說明的是用L1正則化來降維和PCA降維是不同的,可以理解為L1正則化是用了數(shù)據(jù)的標(biāo)簽來做的,而PCA無需數(shù)據(jù)的標(biāo)簽。所以L1正則化實際上是帶有監(jiān)督學(xué)習(xí)性質(zhì)的降維方法。
為什么L2正則化可以獲得值很小的參數(shù)?
擬合過程中通常都傾向于讓權(quán)值盡可能小,最后構(gòu)造一個所有參數(shù)都比較小的模型。因為一般認(rèn)為參數(shù)值小的模型比較簡單,能適應(yīng)不同的數(shù)據(jù)集,也在一定程度上避免了過擬合現(xiàn)象。可以設(shè)想一下對于一個線性回歸方程,若參數(shù)很大,那么只要數(shù)據(jù)偏移一點點,就會對結(jié)果造成很大的影響;但如果參數(shù)足夠小,數(shù)據(jù)偏移得多一點也不會對結(jié)果造成什么影響,專業(yè)一點的說法是抗擾動能力強。

正則化參數(shù)λ

λ可以控制L圖形的大小,λ越小,L的圖形越大(上圖中的黑色方框和圓);λ越大,L的圖形越小,最后求得代價函數(shù)最值時各參數(shù)也會變得很小。從另一方面看,由公式5可以看到,λ越大,θj衰減得越快。
Reference:
機器學(xué)習(xí)中的Bias(偏差),Error(誤差),和Variance(方差)有什么區(qū)別和聯(lián)系?
機器學(xué)習(xí)防止欠擬合、過擬合方法
【學(xué)界】有約束轉(zhuǎn)無約束,拉格朗日松弛觀點下的L1正則化稀疏性探討