天天看點

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

機器學習中的過拟合問題及解決方法

1過拟合問題

我們都知道,在進行資料挖掘或者機器學習模型建立的時候,假設資料滿足獨立同分布(i.i.d,independently and identically distributed),即目前已産生的資料可以對未來的資料進行推測與模拟,是以都是使用曆史資料建立模型,即使用已經産生的資料去訓練,然後使用該模型去拟合未來的資料。但是一般獨立同分布的假設往往不成立,即資料的分布可能會發生變化(distribution drift),并且可能目前的資料量過少,不足以對整個資料集進行分布估計,是以往往需要防止模型過拟合,提高模型泛化能力。  在對模型進行訓練時,有可能遇到訓練資料不夠,即訓練資料無法對整個資料的分布進行估計的時候,或者在對模型進行過度訓練(overtraining)時,常常會導緻模型的過拟合(overfitting)。如下圖所示:

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

為了防止overfitting,可以用的方法有很多,下文就将以此展開。有一個概念需要先說明,在機器學習算法中,我們常常将原始資料集分為三部分:training data、validation data,testing data。這個validation data是什麼?它其實就是用來避免過拟合的,在訓練過程中,我們通常用它來确定一些超參數(比如根據validation data上的accuracy來确定early stopping的epoch大小、根據validation data确定learning rate等等)。那為啥不直接在testing data上做這些呢?因為如果在testing data做這些,那麼随着訓練的進行,我們的網絡實際上就是在一點一點地overfitting我們的testing data,導緻最後得到的testing accuracy沒有任何參考意義。是以,training data的作用是計算梯度更新權重,validation data如上所述,testing data則給出一個accuracy以判斷網絡的好壞。避免過拟合的方法有很多:early stopping、資料集擴增(Data augmentation)、正則化(Regularization)包括L1、L2(L2 regularization也叫weight decay),dropout。

2early stopping

 對模型進行訓練的過程即是對模型的參數進行學習更新的過程,這個參數學習的過程往往會用到一些疊代方法,如梯度下降(Gradient descent)學習算法。Early stopping便是一種疊代次數截斷的方法來防止過拟合的方法,即在模型對訓練資料集疊代收斂之前停止疊代來防止過拟合。

  Early stopping方法的具體做法是,在每一個Epoch結束時(一個Epoch集為對所有的訓練資料的一輪周遊)計算validation data的accuracy,當accuracy不再提高時,就停止訓練。這種做法很符合直覺感受,因為accurary都不再提高了,在繼續訓練也是無益的,隻會提高訓練的時間。那麼該做法的一個重點便是怎樣才認為validation accurary不再提高了呢?并不是說validation accuracy一降下來便認為不再提高了,因為可能經過這個Epoch後,accuracy降低了,但是随後的Epoch又讓accuracy又上去了,是以不能根據一兩次的連續降低就判斷不再提高。一般的做法是,在訓練的過程中,記錄到目前為止最好的validation accuracy,當連續10次Epoch(或者更多次)沒達到最佳accuracy時,則可以認為accuracy不再提高了。此時便可以停止疊代了(Early Stopping)。這種政策也稱為“No-improvement-in-n”,n即Epoch的次數,可以根據實際情況取,如10、20、30……

3資料集擴增

  在資料挖掘領域流行着這樣的一句話,“有時候往往擁有更多的資料勝過一個好的模型”。因為我們在使用訓練資料訓練模型,通過這個模型對将來的資料進行拟合,而在這之間又一個假設便是,訓練資料與将來的資料是獨立同分布的。即使用目前的訓練資料來對将來的資料進行估計與模拟,而更多的資料往往估計與模拟地更準确。是以,更多的資料有時候更優秀。但是往往條件有限,如人力物力财力的不足,而不能收集到更多的資料,如在進行分類的任務中,需要對資料進行打标,并且很多情況下都是人工得進行打标,是以一旦需要打标的資料量過多,就會導緻效率低下以及可能出錯的情況。是以,往往在這時候,需要采取一些計算的方式與政策在已有的資料集上進行手腳,以得到更多的資料。

  資料機擴增即需要得到更多的符合要求的資料,即和已有的資料是獨立同分布的,或者近似獨立同分布的。一般有以下方法:

從資料源頭采集更多資料

複制原有資料并加上随機噪聲

重采樣

根據目前資料集估計資料分布參數,使用該分布産生更多資料等

L1範數

L1範數是指向量中各個元素絕對值之和,也叫“稀疏規則算子”(Lasso regularization)。為什麼L1範數會使權值稀疏?有人可能會這樣給你回答“它是L0範數的最優凸近似”。它在Wi=0的地方不可微,并且可以分解為一個“求和”的形式,那麼這個規則化算子就可以實作稀疏,并且比L0範數更容易計算。如圖所示。

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

在原始的代價函數後面加上一個L1正則化項也叫罰函數,即所有權重w的絕對值的和,乘以λ/n,其中λ為懲罰系數,一般根據經驗設定。

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

對權重參數計算導數:

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

上式中sgn(w)表示w的符号。那麼權重w的更新規則為:

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

比原始的更新規則多出了η * λ * sgn(w)/n這一項。當w為正時,更新後的w變小。當w為負時,更新後的w變大——是以它的效果就是讓w往0靠,使網絡中的權重盡可能為0,也就相當于減小了網絡複雜度,防止過拟合。

當權重系數w為0時,這樣也就是權重系數的矩陣進行了稀疏化,而在機器學習模型中,可以使模型簡單化,泛化能力更好。

L2範數

L2正則是基于L2範數,即在目标函數後面加上參數的L2範數和項,即參數的平方和形式:

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

求導可得:

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

根據梯度下降法可得:

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

由此圖可看出,L2範數是一種權重衰減的正則化方法,到目前為止,我們隻是解釋了L2正則化項有讓w“變小”的效果,但是還沒解釋為什麼w“變小”可以防止overfitting?一個所謂“顯而易見”的解釋就是:更小的權值w,從某種意義上說,表示網絡的複雜度更低,對資料的拟合剛剛好(這個法則也叫做奧卡姆剃刀原理:簡單有效原理),而在實際應用中,也驗證了這一點,L2正則化的效果往往好于未經正則化的效果。

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

L1和L2正則化範數

下面 是線性回歸的一個例子,也可以說是分類的情況。從左到右分别是欠拟合(underfitting,也稱High-bias)、合适的拟合和過拟合(overfitting,也稱High variance)三種情況。可以看到,如果模型複雜(可以拟合任意的複雜函數),它可以讓我們的模型拟合所有的資料點,也就是基本上沒有誤差,但是這樣的過拟合,會使測試資料不真實。過拟合的時候,拟合函數的系數往往非常大,為什麼呢?過拟合,就是拟合函數需要顧忌每一個點,最終形成的拟合函數波動很大。在某些很小的區間裡,函數值的變化很劇烈。這就意味着函數在某些小區間裡的導數值(絕對值)非常大,由于自變量值可大可小,是以隻有系數足夠大,才能保證導數值很大。是以,L1可使部分參數趨于0,達到目的,L2可使參數衰減達到目的。

機器學習中過拟合問題機器學習中的過拟合問題及解決方法

從另一方面講:如上圖所示,有兩個參數要優化,要優化的參數分别是w1和w2,左圖的正則化是L2,右圖是L1。

機器學習中過拟合問題機器學習中的過拟合問題及解決方法
機器學習中過拟合問題機器學習中的過拟合問題及解決方法
機器學習中過拟合問題機器學習中的過拟合問題及解決方法

在上面三個圖中,第三個圖即為前面兩個圖内的公式的直覺表示,藍色圓心為未正則化的最優位置,藍色圓代表等高線,紅色圓為添加的正則化,藍色和紅色的交線處即為正則化後參數的最優位置。可以看出,L2正則化是衰減權重參數,而L1正則化是稀疏化權重參數。

dropOut

Dropout,它為什麼有助于防止過拟合呢?可以簡單地這樣解釋,運用了dropout的訓練過程,可以隐藏神經網絡中的某部分神經元,相當于訓練了很多個隻有半數隐層單元的神經網絡(後面簡稱為“半數網絡”),每一個這樣的半數網絡,都可以給出一個分類結果,這些結果有的是正确的,有的是錯誤的。随着訓練的進行,大部分半數網絡都可以給出正确的分類結果,那麼少數的錯誤分類結果就不會對最終結果造成大的影響。常見于深度學習網絡。

繼續閱讀