天天看點

Regularization(L1 L2 正則化解決過拟合)

Regularization(L1 L2 正則化解決overfitting)

關于overfitting的問題,很大程度上是由于曲線為了更好地拟合training data的資料,而引入了更多的高次項,使得曲線更加“蜿蜒曲折”,反而導緻了對testing data的誤差更大

回過頭來思考,我們之前衡量model中某個function的好壞所使用的loss function,僅引入了真實值和預測值內插補點的平方和這一個衡量标準;我們想要避免overfitting過拟合的問題,就要使得高次項對曲線形狀的影響盡可能小,是以我們要在loss function裡引入高次項(非線性部分)的衡量标準,也就是将高次項的系數也權重放進loss function中,這樣可以使得訓練出來的model既滿足預測值和真實值的誤差小,又滿足高次項的系數盡可能小而使曲線的形狀比較穩定集中

以下圖為例,如果loss function僅考慮了 ( y ^ − y ) 2 {\left( {\hat y - y} \right)^2} (y^​−y)2這一誤差衡量标準,那麼拟合出來的曲線就是紅色虛線部分(過拟合),而過拟合就是所謂的model對training data過度自信, 非常完美的拟合上了這些資料, 如果具備過拟合的能力, 那麼這個方程就可能是一個比較複雜的非線性方程 , 正是因為這裡的 x 3 {x^3} x3和 x 2 {x^2} x2使得這條虛線能夠被彎來彎去, 是以整個模型就會特别努力地去學習作用在 x 3 {x^3} x3和 x 2 {x^2} x2上的c、d參數. 但是在這個例子裡,我們期望模型要學到的卻是這條藍色的曲線. 因為它能更有效地概括資料 .而且隻需要一個 y = a + b x {y = a + bx} y=a+bx就能表達出資料的規律.

或者是說, 藍色的線最開始時, 和紅色線同樣也有c、d兩個參數, 可是最終學出來時, c 和 d 都學成了0, 雖然藍色方程的誤差要比紅色大, 但是概括起資料來還是藍色好

Regularization(L1 L2 正則化解決過拟合)

這也是我們通常采用的方法,我們不可能一開始就否定高次項而直接隻采用低次線性表達式的model,因為有時候真實資料的确是符合高次項非線性曲線的分布的;而如果一開始直接采用高次非線性表達式的model,就很有可能造成overfitting,在曲線偏折的地方與真實資料的誤差非常大。我們的目标應該是這樣的:

在無法确定真實資料分布的情況下,我們盡可能去改變loss function的評價标準

  • 我們的model的表達式要盡可能的複雜,包含盡可能多的參數和盡可能多的高次非線性項;
  • 但是我們的loss function又有能力去控制這條曲線的參數和形狀,使之不會出現overfitting過拟合的現象;
  • 在真實資料滿足高次非線性曲線分布的時候,loss function控制訓練出來的高次項的系數比較大,使得到的曲線比較彎折起伏;
  • 在真實資料滿足低次線性分布的時候,loss function控制訓練出來的高次項的系數比較小甚至等于0,使得到的曲線接近linear分布

那我們如何保證能學出來這樣的參數呢? 這就是 L1 L2 正規化出現的原因.

之前的loss function僅考慮了 ( y ^ − y ) 2 {\left( {\hat y - y} \right)^2} (y^​−y)2這一誤差衡量标準,而L1 L2正規化就是在這個loss function的後面多加了一個東西,即model中跟高次項系數有關的表達式;

  • L1正規化即加上 λ ∑ ∣ w j ∣ \lambda \sum {\left| {{w_j}} \right|} λ∑∣wj​∣這一項,loss function變成 L = ∑ i = 1 n ( y ^ i − y i ) 2 + λ ∑ ∣ w j ∣ L = \sum\limits_{i = 1}^n {{{\left( {{{\hat y}^i} - {y^i}} \right)}^2} + } \lambda \sum {\left| {{w_j}} \right|} L=i=1∑n​(y^​i−yi)2+λ∑∣wj​∣,即n個training data裡的資料的真實值與預測值內插補點的平方和加上λ權重下的model表達式中所有項系數的絕對值之和
  • L2正規化即加上 λ ∑ w j 2 \lambda \sum {{w_j}^2} λ∑wj​2這一項,loss function變成 L = ∑ i = 1 n ( y ^ i − y i ) 2 + λ ∑ w j 2 L = \sum\limits_{i = 1}^n {{{\left( {{{\hat y}^i} - {y^i}} \right)}^2} + } \lambda \sum {{w_j}^2} L=i=1∑n​(y^​i−yi)2+λ∑wj​2,即n個training data裡的資料的真實值與預測值內插補點的平方和加上λ權重下的model表達式中所有項系數的平方和

相對來說,L2要更穩定一些,L1的結果則不那麼穩定,如果用p表示正規化程度,上面兩式可總結如下:

L = ∑ i = 1 n ( y ^ i − y i ) 2 + λ ∑ w j p L = \sum\limits_{i = 1}^n {{{\left( {{{\hat y}^i} - {y^i}} \right)}^2} + } \lambda \sum {{w_j}^p} L=i=1∑n​(y^​i−yi)2+λ∑wj​p

Regularization(L1 L2 正則化解決過拟合)

參考:https://sakura-gh.github.io/ML-notes/ML-notes-html/2_Regression-Case-Study.html僅作個人學習用,如需删除請聯系本人

繼續閱讀