1. 程式人生 > >正則化為什麼可以降低過擬合

正則化為什麼可以降低過擬合

正則化為什麼可以降低過擬合

在進行機器學習的模型訓練的時候,如果我們的訓練資料不夠,或者迭代的次數太多等等原因,可能會使我們的訓練誤差非常小,但是對測試集的誤差會很大,我們把這稱為過擬合,如圖:
在這裡插入圖片描述
為了防止overfitting,可以用的方法有很多比如:early stopping、資料集擴增(Data augmentation)、正則化(Regularization)包括L1、L2(L2 regularization也叫weight decay),dropout,這裡我們只對L1,L2正則化為什麼可以降低過擬合做出說明:

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,使係數減小),所以可以在一定程度上減少過擬合情況。

我在用幾幅圖片讓大家更詳細的理解L2範數

在這裡插入圖片描述
如圖:
這裡的w表示一個二維引數(w1,w2),中間的五角星表示最優的引數w1,w2使訓練誤差最小,而其他的圓形或菱形分別是L1或L2範數對w的約束。可以看到在這些約束下得到的w已經不是全域性最優w了,所以訓練誤差增大了,而測試誤差減小了。