1. 程式人生 > >正則化和正則化的思想

正則化和正則化的思想

首先了解一下正則性(regularity),正則性衡量了函式光滑的程度,正則性越高,函式越光滑。(光滑衡量了函式的可導性,如果一個函式是光滑函式,則該函式無窮可導,即任意n階可導)。

       正則化是為了解決過擬合問題。在Andrew Ng的機器學習視訊中有提到(詳見http://www.cnblogs.com/jianxinzhou/p/4083921.html)。解決過擬合的兩種方法:

     方法一:儘量減少選取變數的數量。人工檢查每一個變數,並以此來確定哪些變數更為重要,然後,保留那些更為重要的特徵變數。顯然這種做法需要對問題足夠了解,需要專業經驗或先驗知識。因此,決定哪些變數應該留下不是一件容易的事情。此外,當你捨棄一部分特徵變數時,你也捨棄了問題中的一些資訊。例如,也許所有的特徵變數對於預測房價都是有用的,我們實際上並不想捨棄一些資訊或者說捨棄這些特徵變數。

最好的做法是採取某種約束可以自動選擇重要的特徵變數,自動捨棄不需要的特徵變數。

    方法二:正則化。採用正則化方法會自動削弱不重要的特徵變數,自動從許多的特徵變數中”提取“重要的特徵變數,減小特徵變數的數量級。這個方法非常有效,當我們有很多特徵變數時,其中每一個變數都能對預測產生一點影響。正如在房價預測的例子中看到的那樣,我們可以有很多特徵變數,其中每一個變數都是有用的,因此我們不希望把它們刪掉,這就導致了正則化概念的發生。

正則化的作用:

(1)防止過擬合;

(2)正則化項的引入其實是利用了先驗知識,體現了人對問題的解的認知程度或者對解的估計;例如正則化最小二乘問題如下:


(3)有助於處理 條件數(condition number)

不好的情況下矩陣求逆很困難的問題。

首先看一下條件數的概念:

    如果方陣A是非奇異(A的行列式不等於0,正定矩陣一定是非奇異的)的,那麼A的condition number定義為:

                  

可以看出,如果A是奇異的,那麼A的條件數為無窮大。條件數越小,所獲得的解越可靠,模型魯棒性越好,抗干擾能力越強。例如對於模型AX=b,A的條件數 越小(A的行列式遠不接近於0),那麼A,b的稍微的變化對解X的影響越小,對X的求解對樣本集(A、b)中引入的干擾的抵抗能力越強,即所求解X越可靠。

 引入正則化項之後,會降低條件數,提高抗干擾能力,提高泛化能力。如下圖所示:

                     


在樣本數小於引數個數的情況下,樣本矩陣很可能是不可逆的(條件數很大),而引入正則化項將會解決這個問題。

事實上,即使使用迭代優化演算法,condition number 太大也將會拖慢迭代的收斂速度。

(4)正則化項的引入平衡了偏差(bias)與方差(variance)、擬合能力與泛化能力、經驗風險(平均損失函式)與結構風險(損失函式+正則化項),下圖為訓練誤差和測試誤差與模型複雜度之間的關係

                 

(關於偏差和方差參考誤差理論http://blog.csdn.net/linkin1005/article/details/42563229)

(5)正則化產生了稀疏性(Sparsity),減少了特徵向量個數,降低了模型的複雜度。正則化符合奧卡姆剃刀原理,奧卡姆剃刀原理應用於模型選擇時採用以下想法:在所有可能選擇的模型中,能夠很好的解釋已知資料並且十分簡單才是最好的模型,也就是應該選擇的模型。從貝葉斯估計的角度來看,正則化項對應於模型的先驗概率,可以假設複雜的模型有較大的先驗概率,簡單的模型有較小的先驗概率。參考http://www.cnblogs.com/Rosanna/p/3946596.html)

稀疏性(Sparsity)的作用:

a、特徵選擇(FeatureSelection):

       稀疏效能實現特徵的自動選擇。在我們事先假定的特徵(或自變數)中,有很多自變數或特徵對輸出的影響較小,可以看作是不重要的特徵或自變數。而正則化項會自動對自變數或特徵的係數引數進行懲罰,令某些特徵或自變數的引數(權重係數)為0或接近於0,自動選擇主要自變數或特徵(類此於PCA)。

 b、可解釋性(Interpretability):

      稀疏使模型更容易解釋。

例如一回歸問題,假設迴歸模型為:y=w1*x1+w2*x2+…+w1000*x1000+b

通過學習,如果最後學習到的w*就只有很少的非零元素,大部分W*為0或接近於0,例如只有5個非零的wi,那可以認為y之於這5個(因素)xi有關係,這更有利於人們對問題的認識和分析,抓住影響問題的主要方面(因素)更符合人們的認知習慣。

     實際上,這些引數(W*)的值越小,通常對應于越光滑的函式,也就是更加簡單的函式。因此 就不易發生過擬合的問題。(聯絡文章開頭第一段)

 c、卷積神經網路中的稀疏性(Sparsity):

      神經網路中的稀疏性可以被簡單地解釋如下:如果當神經元的輸出接近於1的時候我們認為它被啟用,而輸出接近於0的時候認為它被抑制,那麼使得神經元大部分的時間都是被抑制的限制則被稱作稀疏性限制。

其實,我們上面提到的迴歸模型:y=w1*x1+w2*x2+…+w1000*x1000+b可以看作是單神經元的神經網路,只不過沒有啟用函式。因此,我們可以將回歸中的正則化技術用到神經網路的訓練當中,而且正則化項作用與迴歸中的正則化項作用相同。

     自編碼( Autoencoders)神經網路是一種無監督學習演算法,如下圖所示,它使用了反向傳播演算法,並讓目標值等於輸入值,這看起來是不可能實現的的,因為根據資訊理論可知,資訊是逐層丟失的,對資訊的處理不會增加資訊,大部分處理會丟失資訊。因此,我們只能讓輸出儘可能的去接近輸入。這樣做的目的是什麼呢?事實上,這給了我們用神經網路提取輸入資料的特徵的一種思路,我們更關注的是隱含層(layerL2)的輸出,因為layerL2的輸出是對輸入資料的特徵表示,即layerL2產生了特徵。卷積神經網路是深度學習(deep learning)演算法,深度的含義不僅是指神經網路的層數多,而且是指卷積神經網路能自動從輸入資料中學習到更為抽象的特徵,並將學習到的特徵用於分類器的輸入進行分類。這部分涉及很多內容,在這裡就不延伸了,下面介紹與本文主題相關的內容。

    下面我們以自編碼神經網路為例,看一下正則化在神經網路中的應用。詳細請參考下面UFLDL網站:

(http://ufldl.stanford.edu/wiki/index.php/%E8%87%AA%E7%BC%96%E7%A0%81%E7%AE%97%E6%B3%95%E4%B8%8E%E7%A8%80%E7%96%8F%E6%80%A7)

                        

     上圖為自編碼神經網路,編碼所得的“碼”即為特徵,“編碼”的含義就是提取輸入資料的特徵,其實提取特徵的過程有點類似於對輸入資料進行編碼,估計這就是自編碼神經網路的由來。

自編碼( Autoencoders)神經網路的總體代價函式為:

                             

   等號右邊第二項為正則化項,它是基於相對熵的懲罰項,用於限制神經元的啟用程度,以此實現神經元的稀疏性。

      

對於懲罰項:



       通過將正則化項引入自動編碼器神經網路的代價函式中,通過訓練,便可得到輸入資料的稀疏性特徵表示。

       那麼問題來了,為什麼我們要得到稀疏性的特徵表示呢?當然是為了防止過擬合,提高泛化能力,更好地解釋模型....其實,從生物學的角度,人腦中的大量神經元,當受到外界刺激(影象或者聲音)時,只有少量的神經元被啟用,大部分神經元處於抑制狀態。

     正則化在監督學習和無監督學習演算法的模型訓練中被廣泛使用,下面總結一下常見的幾種正則化項及其作用。

許多模型的代價函式都可以用下式表示,等號右邊第一項是損失函式,也有很多種:如均方誤差損失函式、Hinge Loss、exp-Loss、log-Loss等;等號右邊第二項是正則化項,正則化項可以是模型引數向量的範數。不同的正則化項對引數w的約束不同,取得的效果也不同,常見的正則化項:零範數、一範數、二範數、跡範數、Frobenius範數和核範數等等。

            

     範數的定義如下:

                     

    當p=1時,為L1範數(taxicab norm);p=2時為尤拉範數

(1)L0範數

L0範數是指向量中非零元素的個數。L0正則化的值是模型中非零引數的個數,L0正則化可以實現模型引數的的稀疏化。L0正則化是個NP難問題,很難求解,因此一般不用L0範數

                             

(2)L1範數

      下式等號右邊第二項即為L1正則化項

         

    L1範數是指向量中各個元素絕對值之和,又叫“稀疏規則運算元”(Lasso regularization)。

(3)L2範數

     下式等號右邊第二項即為L2正則化項


在迴歸裡面,有人把有它的迴歸叫“嶺迴歸”(Ridge Regression)。

L2範數可以防止過擬合,提升模型的泛化能力;從優化或者數值計算的角度來說,L2範數有助於處理 condition number不好的情況下矩陣求逆很困難的問題。

L1和L2範數下降速度比較:


對於L1和L2規則化的代價函式來說,我們可以寫成以下形式:


L1和L2範數約束空間:


L1範數在二維平面是一個矩形,L2範數在二維空間是一個圓;

        可以看到,L1-ball 與L2-ball 的不同就在於L1在和每個座標軸相交的地方都有“角”出現,而目標函式的等高線大部分時候第一次都會與L1-ball在角的地方相交。注意到在角的位置就會產生稀疏性,例如圖中的相交點就有w1=0,而更高維的時候(想象一下三維的L1-ball 是什麼樣的?)除了角點以外,還有很多邊的輪廓也是既有很大的概率成為第一次相交的地方,又會產生稀疏性。

       相比之下,L2-ball 就沒有這樣的性質,因為第一次相交的地方不太可能出現在任意座標軸上,因此不太可能產生稀疏性。這就從直觀上來解釋了為什麼L1-regularization 能產生稀疏性,而L2-regularization 不行的原因了。

       因此,L1會趨向於產生少量的特徵,而其他的特徵都是0,而L2會選擇更多的特徵,這些特徵的權重係數都會接近於0。

        關於正則化項中引數lamuda的選取:一般採取交叉驗證法或啟發式方法等。

參考資料:

《Convex Optimization》