在進行機器學習的模型訓練的時候,如果我們的訓練資料不夠,或者迭代的次數太多等等原因,可能會使我們的訓練誤差非常小,但是對測試集的誤差會很大,我們把這稱為過擬合,如圖:
為了防止overfitting,可以用的方法有很多比如:early stopping、資料集擴增(data augmentation)、正則化(regularization)包括l1、l2(l2 regularization也叫weight decay),dropout,這裡我們只對l1,l2正則化為什麼可以降低過擬合做出說明:
l2正則化就是在代價函式後面再加上乙個正則化項:
c0代表原始的代價函式,後面那一項就是l2正則化項,它是這樣來的:所有引數w的平方的和,除以訓練集的樣本大小n。λ就是正則項係數,權衡正則項與c0項的比重。另外還有乙個係數1/2,1/2經常會看到,主要是為了後面求導的結果方便,後面那一項求導會產生乙個2,與1/2相乘剛好湊整。
l2正則化項是怎麼避免過擬合(overfitting)的呢?我們推導一下看看,先求導:
可以發現l2正則化項對b的更新沒有影響,但是對於w的更新有影響.
w運用梯度下降演算法得到:
因為η、λ、n都是大於0的,所以相比於沒有使用l2範數,w的值變小了,所以l2範數的作用就是減小w,這也就是權重衰減(weight decay)的由來。當然考慮到後面的導數項,w最終的值可能增大也可能減小。
到目前為止,我們只是解釋了l2正則化項有讓w「變小」的效果,但是還沒解釋為什麼w「變小」可以防止過擬合(overfitting)?
抽象的解釋就是:更小的權值w,從某種意義上說,表示網路的複雜度更低,對資料的擬合剛剛好(這個法則也叫做奧卡姆剃刀)。好吧這個解釋也不能很好的說服我,下面我將用給大家解釋一下:
如圖:過擬合的時候,擬合函式的係數往往非常大,為什麼?如上圖所示,過擬合,就是擬合函式需要顧忌每乙個點,最終形成的擬合函式波動很大。在某些很小的區間裡,函式值的變化很劇烈。這就意味著函式在某些小區間裡的導數值(絕對值)非常大,由於自變數值可大可小,所以只有係數足夠大,才能保證導數值很大。
而l2正則化是通過約束引數的範數使其不要太大(也就是降低w,使係數減小),所以可以在一定程度上減少過擬合情況。
如圖:這裡的w表示乙個二維引數(w1,w2),中間的五角星表示最優的引數w1,w2使訓練誤差最小,而其他的圓形或菱形分別是l1或l2範數對w的約束。可以看到在這些約束下得到的w已經不是全域性最優w了,所以訓練誤差增大了,而測試誤差減小了。
為什麼正則化可以防止過擬合?
為什麼正則化有利於預防過擬合呢?為什麼它可以減少方差問題?我們通過兩個例子來直觀體會一下。左圖是高偏差,右圖是高方差,中間是just right,這幾張圖我們在前面課程中看到過。直觀上理解就是如果正則化引數設定得足夠大,權重矩陣被設定為接近於0的值,直觀理解就是把多隱藏單元的權重設為0,於是基本上消...
為什麼正則化可以防止過擬合?
加上正則化項之後的損失函式 j w l b l 1m i 1 ml y y 2m l 1 l w l f2j w b frac sum ml y y frac sum l w 2 f j w l b l m 1 i 1 m l y y 2m l 1 l w l f2 f表示frobenius範數 縮...
丟棄法為什麼可以防止過擬合
丟棄法為什麼和weight decay l2 norm 一樣也能達到防止過擬合的效果。什麼是丟棄法 當我們對該隱藏層使 丟棄法時,該層的隱藏單元將有 定概率被丟棄掉。設丟棄概率為p,那麼 有p 的概率hi 會被清零,有1 p 的概率hi 會除以1 p 做拉伸。丟棄概率是丟棄法的超引數。h1,h2,h...