本文主要包含以下內容:
一、什么是正則化
二、參數范數模型
2.1 L1正則和L2正則
2.2 為什么通過L1正則、L2正則能夠防止過擬合
2.3 L2正則的表現
2.4 L1正則化為什么會產生稀疏解
2.5 L2正則為什么求解比較穩定
三、Dropout和集成方法
3.1 Dropout
3.2 集成方法bagging及boosting
一、什么是正則化
正則化即為對學習算法的修改,旨在減少泛化誤差而不是訓練誤差。正則化的策略包括:
(1)約束和懲罰被設計為編碼特定類型的先驗知識
(2)偏好簡單模型
(3)其他形式的正則化,如:集成的方法,即結合多個假說解釋訓練數據
在實踐中,過於復雜的模型不一定包含數據的真實的生成過程,甚至也不包括近似過程,這意味着控制模型的復雜程度不是一個很好的方法,或者說不能很好的找到合適的模型的方法。實踐中發現的最好的擬合模型通常是一個適當正則化的大型模型。
二、參數范數模型
對於線性模型,譬如線性回歸、邏輯回歸,可以使用簡單有效的參數范數模型進行正則化。許多正則化方法通過對目標函數J添加懲罰項,其中α也被稱為懲罰系數,限制模型的學習能力:
對於神經網絡中,參數通常是包括權值w和偏置b,而我們通常對w做懲罰而不對偏置b做處理,這是因為不對b進行處理也不會有太大的影響。
2.1 L1正則和L2正則
L1正則項表示:
L2正則項表示:
2.2 為什么通過L1正則、L2正則能夠防止過擬合
解釋:
過擬合產生的原因通常是因為參數比較大導致的,通過添加正則項,假設某個參數比較大,目標函數加上正則項后,也就會變大,因此該參數就不是最優解了。
問:為什么過擬合產生的原因是參數比較大導致的?
答:過擬合,就是擬合函數需要顧忌每一個點,當存在噪聲的時候,原本平滑的擬合曲線會變得波動很大。在某些很小的區間里,函數值的變化很劇烈,這就意味着函數在某些小區間里的導數值(絕對值)非常大,由於自變量值可大可小,所以只有系數足夠大,才能保證導數值很大。
2.3 L2正則的表現
對於L2正則,其目標函數為:
進一步做簡化分析,令w*作為未正則化的目標函數取得最小值時的權重向量(當然這個值是有可能會過擬合的),在w*的鄰域對目標函數做二次近似(泰勒展開,因為極值點的導數為0,因此一階項為0),其中用H表示該函數的Hessian矩陣(關於w),其表達式為:
當它取得最小值時,其梯度為0,梯度表達式:
為了研究權重衰減帶來的影響,添加權重衰減的梯度,使用表示此時的最優點:
可以看到,當α趨向於0時,正則化的解和未正則化的解相近;當α增加時,會怎樣呢?因為H是實對稱的,可以分解為一個對角矩陣Λ和一組特征向量的標注正交基Q。
可以看到,權重衰減的效果是沿着由H的特征向量所定義的軸縮放w*。對於特征值較小的情況,加上α后的影響會比較大;而這種正則化的影響對於特征值大的數影響較小。
補充:
對於每個實對稱矩陣都可以分解成實特征向量和實特征值:
其中,Q是A的特征向量組成的正交矩陣,Λ是對角矩陣。特征向量和特征值可以看作為方向和速度,如圖,可以看到特征向量和特征值的作用,參考:
具體的縮放因子表示為:
即,若λi>>α時,正則化的影響較小,而λi<<α時,該參數分量wi縮減到0。
如圖所示,對於正則化后的解為結合了縮放因子與原始解的結果,這個結果即表現為:當w1為梯度變化較小的方向,其拉伸作用會比較大;而w2上的拉伸作用比較小,也就是說,目標函數與約束條件的交點的坐標值與目標函數的梯度變化有關系,當噪聲影響下,目標函數沿着w1軸移動,交點的影響不會太大的(縮放因子的影響)。
事實上,DeepLearning書中,對於該部分所表達的意思就是一個“在不重要的方向上對應的分類會在訓練過程中因正則化衰減掉”,這個衰減的過程就是如圖,對每次迭代時進行w的縮放,導致最終優化結果發生改變,梯度下降的路線給改了,原本要下降到最小值點的路徑發生扭曲:
如上就可以解釋了為什么L2正則等值線相交時為什么w1、w2可能會很小但等於0 的概率很低了,ps:對於w*,其如果存在稀疏解,則wi*一定在坐標軸上。
這個通過圖是很容易陷入誤區,因為很有可能畫出如下的圖,這樣就解釋不了了:
實際上真正的結果:
2.4 L1正則化為什么會產生稀疏解
對於為什么L1正則會產生稀疏解,如圖:
但是我認為,這個圖只能解釋為什么會產生稀疏解,並不能解釋為什么L1具有特征選擇或者說時為什么能產生大量稀疏解的原因。
原因如上圖所示,可以通過控制α,產生大量稀疏解。這也就是deeplearning一書中公式推導后的結論的直觀理解:
對於上面的懲罰系數α的理解:
如圖,設置了一個懲罰系數,結果把原有解包含了,這說明:懲罰系數設小了,對原有解沒有影響。同理,越增大α越收縮圈,結合上面的圖就可以解釋為什么增大α能夠獲得稀疏解了吧。
2.5 L2正則為什么求解比較穩定
如圖,可以看到,對於L2正則,如果原始的目標函數由於噪聲的影響,發生偏移,可以看到,由於L2的約束函數的梯度存在一個變化的范圍,比L1正則更容易在原最優解附近找到最優解,而L1正則則求解的變化比較大,因此L2求解更加穩定。
三、Dropout和集成方法
3.1 Dropout
Dropout提供了正則化一大類模型的方法,計算方便且功能強大。它不同於L1、L2正則項那樣改變損失函數。而是改變模型本身。Dropout可以被認為是集成大量深層神經網絡的使用Bagging的方法。Dropout提供一種廉價的Bagging集成近似,能夠訓練和評估指數級數量的神經網絡。
假設訓練的網絡:
對於使用dropout技術的話,我們隨機刪除隱層的神經元,形成新的網絡:
然后,我們通過前向求損失,反向傳到損失,批量梯度下降完成一批,更新完w和b,然后繼續隨機刪除隱藏層的神經元,繼續批量梯度下降更新權值和偏置。
“when we dropout different sets of neurons, it's rather like we're training different neural networks. And so the dropout procedure is like averaging the effects of a very large number of different networks.”這也就解釋了為什么Dropout能防止過擬合,實際上,就是Bagging策略,在Bagging中,每個模型在其相應的訓練集上都收斂,而Dropout通常大部分模型都沒有顯示的被訓練,因為子網絡太多,我們單個步驟會采用一小批樣本,訓練一個子網,參數共享會使得剩余的子網繼續訓練這些參數。這些是僅有的區別,除了這些,Dropout和Bagging都一樣,譬如:每個子網中遇到的訓練集確實是有放回的采樣原始訓練集的一個子集。
3.2 集成方法bagging及boosting
Bagging是一種在原始數據集上通過有放回抽樣重新選出S個新數據集來訓練分類器的集成技術。其主要思想是通過模型平均來實現集成模型比單一模型更加正則化的目的。而不是所有集成算法都是如此,Boosting是增強算法的意思,也就是由弱分類器轉變為強分類器的過程。在神經網絡中,其可以理解為逐漸增強神經網絡的隱層神經元的個數。因此,其正則化的主要方法是通過構建比單個模型容量更高的集成模型。
Bagging和Boosting的區別:
1)樣本選擇上:
Bagging:訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間是獨立的。
Boosting:每一輪的訓練集不變,只是訓練集中每個樣例在分類器中的權重發生變化。而權值是根據上一輪的分類結果進行調整。
2)樣例權重:
Bagging:使用均勻取樣,每個樣例的權重相等
Boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大。
3)預測函數:
Bagging:所有預測函數的權重相等。
Boosting:每個弱分類器都有相應的權重,對於分類誤差小的分類器會有更大的權重。
4)並行計算:
Bagging:各個預測函數可以並行生成
Boosting:各個預測函數只能順序生成,因為后一個模型參數需要前一輪模型的結果。