過擬合、欠擬合、正則化

過擬合和欠擬合

  1. 產生原因
    • 欠擬合:模型學習能力不足(太簡單),無法學習到數據的真實分佈,即模型的期望輸出和真實輸出之間有很大的差異,高偏差。
    • 過擬合:模型學習能力過分(太複雜),因噪聲干擾等因素導致數據的分佈有輕微的波動,但是模型也學習到了,導致模型的訓練結果得到的數據分佈過分依賴於所輸入的數據,高方差。
    • 從模型泛化程度上理解,欠擬合的模型在訓練集和測試集上表現不足,而過擬合的模型儘管在訓練集上有良好的表現,模型泛化程度較差導致在測試集上差強人意。
    • 過擬合的原因是算法的學習能力過強,對數據分佈而言,一些假設條件(如樣本獨立同分布)可能是不成立的;訓練樣本過少不能對整個空間進行分佈估計。
  2. 緩解方法
    合適的數據分佈+合理的模型複雜性
    合理的組合應該是:複雜的數據分佈+簡單的模型 或者 簡單的數據分佈+複雜的模型
    這裏寫圖片描述

  3. 神經網絡中的過擬合

    • 早停策略。本質上是交叉驗證策略,選擇合適的訓練次數,避免訓練的網絡過度擬合訓練數據。
    • 集成學習策略。而DNN可以用Bagging的思路來正則化。首先我們要對原始的m個訓練樣本進行有放回隨機採樣,構建N組m個樣本的數據集,然後分別用這N組數據集去訓練我們的DNN。即採用我們的前向傳播算法和反向傳播算法得到N個DNN模型的W,b參數組合,最後對N個DNN模型的輸出用加權平均法或者投票法決定最終輸出。不過用集成學習Bagging的方法有一個問題,就是我們的DNN模型本來就比較複雜,參數很多。現在又變成了N個DNN模型,這樣參數又增加了N倍,從而導致訓練這樣的網絡要花更加多的時間和空間。因此一般N的個數不能太多,比如5-10個就可以了。
    • DropOut策略。所謂的Dropout指的是在用前向傳播算法和反向傳播算法訓練DNN模型時,一批數據迭代時,隨機的從全連接DNN網絡中去掉一部分隱藏層的神經元。 在對訓練集中的一批數據進行訓練時,我們隨機去掉一部分隱藏層的神經元,並用去掉隱藏層的神經元的網絡來擬合我們的一批訓練數據。使用基於dropout的正則化比基於bagging的正則化簡單,這顯而易見,當然天下沒有免費的午餐,由於dropout會將原始數據分批迭代,因此原始數據集最好較大,否則模型可能會欠擬合。
    • Batch Normalization。在神經網絡中存在covariate internal shift現象(就是輸入x服從一定的分佈,通過神經網絡層映射之後,對應的輸出的分佈發生了改變,產生了偏移)。後面的網絡總要調整參數去補償這種改變,致使整個網絡複雜化,也容易過擬合。爲了解決這個問題,Batch Normalization方法,總的來說就是對層間的數據做均值和方差的修正,把輸出重新映射爲一個高斯分佈,最終它讓一些飽和非線性的激活函數可以被使用。

正則化

  1. 原理(或者說思考):
    從貝葉斯的角度來說,代價函數可以表示爲P(y|w,x)的形式,而正則項則是對參數w做了一個先驗分佈的假設,使得代價函數變成P(y|w,x)P(w)
    考慮兩個分佈:0均值的高斯分佈和0均值的拉普拉斯分佈

Laplace:12bexp|w|b

Gaussian:12παexpw22α

代價函數的對數形式可以寫成

logP(y|w,x)P(w)=logP(y|w,x)+logP(w)

右邊第一項是原來的對數似然,第二項則可以化成

Laplace:1b|w|+=λ||w||1+

Gaussian:12αw2+=λ||w||2+

因爲最大化logP(y|w,x)P(w) 最後都會轉成最小化形式,所以代價函數最後會變成J=+λ||w||p 的形式。
2. 對於L1而言,假設參數服從拉普拉斯分佈;而對於L2而言,假設參數服從高斯分佈,兩個都是0均值
3. 正則效果和原因
效果:L1範數可以使權值稀疏,方便特徵提取。
L2範數可以防止過擬合,提升模型的泛化能力,使w趨於0(或者說約束在一個很小的範圍內)
爲什麼正則會達到這個效果呢?過擬合可以說明用了複雜的模型。複雜模型在參數上的表現可以分爲:參數w全不爲0,說明所有特徵都用到了即數據處於一個複雜的特徵空間中;參數的波動範圍大,考慮極端一點的例子,某個模型把異常點也擬合進來,使得數據樣本在較小的區間值發生了很大的波動,即該區間內的導數非常大(w非常大),所以一個好的模型的參數波動範圍不會很大。
從參數的角度來說,解決過擬合有兩種思路:參數存在部分0值(稀疏權值,L1),參數約束在很小的範圍內(接近於0,L2)
然後在實際中,w不一定服從高斯分佈或者拉普拉斯分佈(也有種說法是不加正則項的化w服從的是均勻分佈),而正則項的引入就是要我們強行讓我們預想的w去服從高斯分佈或者拉普拉斯分佈。
對於高斯分佈來說,其均值爲0,那麼隨着懲罰項λ 而言,λ 是和方差α 成反比
隨着λ 變大,w都接近於0,這就是L2範數可以防止過擬合,提升模型的泛化能力,使w趨於0的原因
而對於L1而言,有個結論:任何的規則化算子,如果他在w_i=0的地方不可微,並且可以分解爲一個“求和”的形式,那麼這個規則化算子就可以實現稀疏。
然後Lasso的稀疏性解釋在於,我們求解w的過程實際上是計算min(L+...lambda||w||p) 的形式
也就是每步迭代中計算對w求偏導,
兩種 regularization 能不能把最優的 w 變成 0,取決於原先的L在 0 點處的導數。如果本來導數不爲 0,那麼施加 L2 regularization 後導數依然不爲 0,最優的 x 也不會變成 0。而施加 L1 regularization 時,只要 regularization 項的係數 lambda 大於原先費用函數在 0 點處的導數的絕對值,w = 0 就會變成一個極小值點。
w<0 時 L+λ|w| 的導數要小於0(函數減),同理w>0時導數>0 (函數增)
w從左邊趨近於0 時,λ|w| 的導數是λ ,假設此時 L 的導數爲 La ,必須有 Laλ<0λ>La ,同理w從右邊趨近於0時,必須有 Lb+λ>0 ,即λ>Lb ,即當λ 大於L在0點附近的絕對值,那麼對應的w就必須爲0,起到一個稀疏的作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章