稀疏編碼學習筆記(二)L2范數


 

L2范數

       除了L1范數,還有一種更受寵幸的規則化范數是L2范數: ||W||2。它也不遜於L1范數,它有兩個美稱,在回歸里面,有人把有它的回歸叫“嶺回歸”(Ridge Regression),有人也叫它“權值衰減weight decay”。這用的很多吧,因為它的強大功效是改善機器學習里面一個非常重要的問題:過擬合。至於過擬合是什么,上面也解釋了,就是模型訓練時候的誤差很小,但在測試的時候誤差很大,也就是我們的模型復雜到可以擬合到我們的所有訓練樣本了,但在實際預測新的樣本的時候,糟糕的一塌糊塗。通俗的講就是應試能力很強,實際應用能力很差。擅長背誦知識,卻不懂得靈活利用知識。例如下圖所示(來自Ng的course):

       上面的圖是線性回歸,下面的圖是Logistic回歸,也可以說是分類的情況。從左到右分別是欠擬合(underfitting,也稱High-bias)、合適的擬合和過擬合(overfitting,也稱High variance)三種情況。可以看到,如果模型復雜(可以擬合任意的復雜函數),它可以讓我們的模型擬合所有的數據點,也就是基本上沒有誤差。對於回歸來說,就是我們的函數曲線通過了所有的數據點,如上圖右。對分類來說,就是我們的函數曲線要把所有的數據點都分類正確,如下圖右。這兩種情況很明顯過擬合了。

 

 

       OK,那現在到我們非常關鍵的問題了,為什么L2范數可以防止過擬合?回答這個問題之前,我們得先看看L2范數是個什么東西。

        L2范數是指向量各元素的平方和然后求平方根。我們讓L2范數的規則項||W||2最小,可以使得W的每個元素都很小,都接近於0,但與L1范數不同,它不會讓它等於0,而是接近於0,這里是有很大的區別的哦。而越小的參數說明模型越簡單,越簡單的模型則越不容易產生過擬合現象。為什么越小的參數說明模型越簡單?我也不懂,我的理解是:限制了參數很小,實際上就限制了多項式某些分量的影響很小(看上面線性回歸的模型的那個擬合的圖),這樣就相當於減少參數個數。其實我也不太懂,希望大家可以指點下。

       這里也一句話總結下:通過L2范數,我們可以實現了對模型空間的限制,從而在一定程度上避免了過擬合。

       L2范數的好處是什么呢?這里也扯上兩點:

1)學習理論的角度:  從學習理論的角度來說,L2范數可以防止過擬合,提升模型的泛化能力。

2)優化計算的角度:

       從優化或者數值計算的角度來說,L2范數有助於處理 condition number不好的情況下矩陣求逆很困難的問題。哎,等等,這condition number是啥?我先google一下哈。

這里我們也故作高雅的來聊聊優化問題。優化有兩大難題,一是:局部最小值,二是:ill-condition病態問題。前者俺就不說了,大家都懂吧,我們要找的是全局最小值,如果局部最小值太多,那我們的優化算法就很容易陷入局部最小而不能自拔,這很明顯不是觀眾願意看到的劇情。那下面我們來聊聊ill-condition。ill-condition對應的是well-condition。那他們分別代表什么?假設我們有個方程組AX=b,我們需要求解X。如果A或者b稍微的改變,會使得X的解發生很大的改變,那么這個方程組系統就是ill-condition的,反之就是well-condition的。我們具體舉個例子吧:

 

 

       咱們先看左邊的那個。第一行假設是我們的AX=b,第二行我們稍微改變下b,得到的x和沒改變前的差別很大,看到吧。第三行我們稍微改變下系數矩陣A,可以看到結果的變化也很大。換句話來說,這個系統的解對系數矩陣A或者b太敏感了。又因為一般我們的系數矩陣A和b是從實驗數據里面估計得到的,所以它是存在誤差的,如果我們的系統對這個誤差是可以容忍的就還好,但系統對這個誤差太敏感了,以至於我們的解的誤差更大,那這個解就太不靠譜了。所以這個方程組系統就是ill-conditioned病態的,不正常的,不穩定的,有問題的,哈哈。這清楚了吧。右邊那個就叫well-condition的系統了。

      還是再啰嗦一下吧,對於一個ill-condition的系統,我的輸入稍微改變下,輸出就發生很大的改變,這不好啊,這表明我們的系統不能實用啊。你想想看,例如對於一個回歸問題y=f(x),我們是用訓練樣本x去訓練模型f,使得y盡量輸出我們期待的值,例如0。那假如我們遇到一個樣本x’,這個樣本和訓練樣本x差別很小,面對他,系統本應該輸出和上面的y差不多的值的,例如0.00001,最后卻給我輸出了一個0.9999,這很明顯不對呀。就好像,你很熟悉的一個人臉上長了個青春痘,你就不認識他了,那你大腦就太差勁了,哈哈。所以如果一個系統是ill-conditioned病態的,我們就會對它的結果產生懷疑。那到底要相信它多少呢?我們得找個標准來衡量吧,因為有些系統的病沒那么重,它的結果還是可以相信的,不能一刀切吧。終於回來了,上面的condition number就是拿來衡量ill-condition系統的可信度的。condition number衡量的是輸入發生微小變化的時候,輸出會發生多大的變化。也就是系統對微小變化的敏感度。condition number值小的就是well-conditioned的,大的就是ill-conditioned的。

    也就是矩陣A的norm乘以它的逆的norm。所以具體的值是多少,就要看你選擇的norm是什么了。如果方陣A是奇異的,那么A的condition number就是正無窮大了。實際上,每一個可逆方陣都存在一個condition number。但如果要計算它,我們需要先知道這個方陣的norm(范數)和Machine Epsilon(機器的精度)。為什么要范數?范數就相當於衡量一個矩陣的大小,我們知道矩陣是沒有大小的,當上面不是要衡量一個矩陣A或者向量b變化的時候,我們的解x變化的大小嗎?所以肯定得要有一個東西來度量矩陣和向量的大小吧?對了,他就是范數,表示矩陣大小或者向量長度。OK,經過比較簡單的證明,對於AX=b,我們可以得到以下的結論:

       也就是我們的解x的相對變化和A或者b的相對變化是有像上面那樣的關系的,其中k(A)的值就相當於倍率,看到了嗎?相當於x變化的界。

      對condition number來個一句話總結:condition number是一個矩陣(或者它所描述的線性系統)的穩定性或者敏感度的度量,如果一個矩陣的condition number在1附近,那么它就是well-conditioned的,如果遠大於1,那么它就是ill-conditioned的,如果一個系統是ill-conditioned的,它的輸出結果就不要太相信了。

       好了,對這么一個東西,已經說了好多了。對了,我們為什么聊到這個的了?回到第一句話:從優化或者數值計算的角度來說,L2范數有助於處理 condition number不好的情況下矩陣求逆很困難的問題。因為目標函數如果是二次的,對於線性回歸來說,那實際上是有解析解的,求導並令導數等於零即可得到最優解為:

       然而,如果當我們的樣本X的數目比每個樣本的維度還要小的時候,矩陣XTX將會不是滿秩的,也就是XTX會變得不可逆,所以w*就沒辦法直接計算出來了。或者更確切地說,將會有無窮多個解(因為我們方程組的個數小於未知數的個數,也就是說壓縮感知機中的Y=DX,起初構造的測量矩陣就是這樣的M*N(M<N))。也就是說,我們的數據不足以確定一個解,如果我們從所有可行解里隨機選一個的話,很可能並不是真正好的解,總而言之,我們過擬合了。

       但如果加上L2規則項,就變成了下面這種情況,就可以直接求逆了:

       這里面,專業點的描述是:要得到這個解,我們通常並不直接求矩陣的逆,而是通過解線性方程組的方式(例如高斯消元法)來計算。考慮沒有規則項的時候,也就是λ=0的情況,如果矩陣XTX的 condition number 很大的話,解線性方程組就會在數值上相當不穩定,而這個規則項的引入則可以改善condition number。

       另外,如果使用迭代優化的算法,condition number 太大仍然會導致問題:它會拖慢迭代的收斂速度,而規則項從優化的角度來看,實際上是將目標函數變成λ-strongly convex(λ強凸)的了。哎喲喲,這里又出現個λ強凸,啥叫λ強凸呢?

       當f滿足時,我們稱f為λ-stronglyconvex函數,其中參數λ>0。當λ=0時退回到普通convex 函數的定義。

       在直觀的說明強凸之前,我們先看看普通的凸是怎樣的。假設我們讓f在x的地方做一階泰勒近似(一階泰勒展開忘了嗎?f(x)=f(a)+f'(a)(x-a)+o(||x-a||).):

       直觀來講,convex 性質是指函數曲線位於該點處的切線,也就是線性近似之上,而 strongly convex 則進一步要求位於該處的一個二次函數上方,也就是說要求函數不要太“平坦”而是可以保證有一定的“向上彎曲”的趨勢。專業點說,就是convex 可以保證函數在任意一點都處於它的一階泰勒函數之上,而strongly convex可以保證函數在任意一點都存在一個非常漂亮的二次下界quadratic lower bound。當然這是一個很強的假設,但是同時也是非常重要的假設。可能還不好理解,那我們畫個圖來形象的理解下。

 

 

       大家一看到上面這個圖就全明白了吧。不用我啰嗦了吧。還是啰嗦一下吧。我們取我們的最優解w*的地方。如果我們的函數f(w),見左圖,也就是紅色那個函數,都會位於藍色虛線的那根二次函數之上,這樣就算wt和w*離的比較近的時候,f(wt)和f(w*)的值差別還是挺大的,也就是會保證在我們的最優解w*附近的時候,還存在較大的梯度值,這樣我們才可以在比較少的迭代次數內達到w*。但對於右圖,紅色的函數f(w)只約束在一個線性的藍色虛線之上,假設是如右圖的很不幸的情況(非常平坦),那在wt還離我們的最優點w*很遠的時候,我們的近似梯度(f(wt)-f(w*))/(wt-w*)就已經非常小了,在wt處的近似梯度∂f/∂w就更小了,這樣通過梯度下降wt+1=wt-α*(∂f/∂w),我們得到的結果就是w的變化非常緩慢,像蝸牛一樣,非常緩慢的向我們的最優點w*爬動,那在有限的迭代時間內,它離我們的最優點還是很遠。

       所以僅僅靠convex 性質並不能保證在梯度下降和有限的迭代次數的情況下得到的點w會是一個比較好的全局最小點w*的近似點(插個話,有地方說,實際上讓迭代在接近最優的地方停止,也是一種規則化或者提高泛化性能的方法)。正如上面分析的那樣,如果f(w)在全局最小點w*周圍是非常平坦的情況的話,我們有可能會找到一個很遠的點。但如果我們有“強凸”的話,就能對情況做一些控制,我們就可以得到一個更好的近似解。至於有多好嘛,這里面有一個bound,這個 bound 的好壞也要取決於strongly convex性質中的常數α的大小。看到這里,不知道大家學聰明了沒有。如果要獲得strongly convex怎么做?最簡單的就是往里面加入一項(α/2)*||w||2

       呃,講個strongly convex花了那么多的篇幅。實際上,在梯度下降中,目標函數收斂速率的上界實際上是和矩陣XTX的 condition number有關,XTX的 condition number 越小,上界就越小,也就是收斂速度會越快。

總結:L2范數不但可以防止過擬合,還可以讓我們的優化求解變得穩定和快速。

      L1和L2的差別為什么一個讓絕對值最小,一個讓平方最小,會有那么大的差別呢?我看到的有兩種幾何上直觀的解析:

1)下降速度:

       我們知道,L1和L2都是規則化的方式,我們將權值參數以L1或者L2的方式放到代價函數里面去。然后模型就會嘗試去最小化這些權值參數。而這個最小化就像一個下坡的過程,L1和L2的差別就在於這個“坡”不同,如下圖:L1就是按絕對值函數的“坡”下降的,而L2是按二次函數的“坡”下降。所以實際上在0附近,L1的下降速度比L2的下降速度要快。所以會非常快得降到0。不過我覺得這里解釋的不太中肯,當然了也不知道是不是自己理解的問題。

       L1在江湖上人稱Lasso,L2人稱Ridge。不過這兩個名字還挺讓人迷糊的,看上面的圖片,Lasso的圖看起來就像ridge,而ridge的圖看起來就像lasso。

2)模型空間的限制:

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

       也就是說,我們將模型空間限制在w的一個L1-ball 中。為了便於可視化,我們考慮兩維的情況,在(w1, w2)平面上可以畫出目標函數的等高線,而約束條件則成為平面上半徑為C的一個 norm ball 。等高線與 norm ball 首次相交的地方就是最優解:

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

       相比之下,L2-ball 就沒有這樣的性質,因為沒有角,所以第一次相交的地方出現在具有稀疏性的位置的概率就變得非常小了。這就從直觀上來解釋了為什么L1-regularization 能產生稀疏性,而L2-regularization 不行的原因了。

       因此,一句話總結就是:L1會趨向於產生少量的特征,而其他的特征都是0,而L2會選擇更多的特征,這些特征都會接近於0。Lasso在特征選擇時候非常有用,而Ridge就只是一種規則化而已

文章參考至:http://blog.csdn.net/zouxy09/article/details/24971995

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM