馮蓉珍 翟高粵
摘 要:在深度學習和機器學習的各種模型訓練過程中,在訓練數據不夠多時,自己常常會遇到的問題就是過擬合(overfitting),過擬合就是模型過度接近訓練的數據,使得模型的泛化能力降低,泛化能力降低表現為模型在訓練集上測試的誤差很低,但是真正在驗證集上測試時卻發現誤差很大。過擬合的模型不是我們想要的模型,本文先簡單介紹過擬合的概念和產生的原因,并提出幾種對模型進行優化的方法,從而提高其泛化性能,使其在測試時模型表現更好。
關鍵詞:機器學習;過擬合;正則化;Dropout;數據增強
機器學習的主要目的是從訓練集上學習到數據的真實模型,從而能夠在未見過的測試集上也能夠表現良好,機器學習的這種能力叫做泛化能力。通常來說,訓練集和測試集都采樣自某個相同的數據分布p(x)。采樣到的樣本是相互獨立的,但是又來自于相同的分布,這種假設叫做獨立同分布假設(Independent Identical Distribution assumption,簡稱i.i.d.)。
模型的表達能力,也稱之為模型的容量(Capacity)。當模型的表達能力偏弱時,比如單一線性層,它只能學習到線性模型,無法良好地逼近非線性模型(欠擬合);但模型的表達能力過強時,它就有可能把訓練集的噪聲模態也學到(過擬合),導致在測試集上面表現不佳的現象(泛化能力偏弱)。因此針對不同的網絡模型和任務,設計合適容量的模型算法才能取得較好的泛化性能。
一、過擬合和欠擬合
(一)模型的容量
模型的容量或表達能力,是指模型擬合復雜函數的能力。一種體現模型容量的指標為模型的假設空間(Hypothesis Space)大小,即模型可以表示的函數集的大小。假設空間越大越完備,從假設空間中搜索出逼近真實模型的函數也就越有可能;反之,如果假設空間非常受限,就很難從中找到逼近真實模型的函數。
但是過大的假設空間無疑會增加搜索難度和計算代價。實際上,在有限的計算資源的約束下,較大的假設空間并不一定能搜索出更好的函數模型。同時由于觀測誤差的存在,較大的假設空間中可能包含了大量表達能力過強的函數,能夠將訓練樣本的觀測誤差也學習進來,從而傷害了模型的泛化能力。因此挑選合適容量的學習模型是一個很大的難題。
(二)過擬合和欠擬合
由于真實數據的分布往往是未知而且復雜的,無法推斷出其分布函數的類型和相關參數,因此人們在選擇學習模型的容量時,往往會根據經驗值選擇稍大的模型容量。但模型的容量過大時,有可能出現在訓練集上表現較好,但是測試集上表現較差的現象,如圖1紅色豎線右邊區域所示;當模型容量過小時,有可能出現在訓練集和測試集表現皆不佳的現象,如圖1紅色豎線左邊區域所示。
當模型的容量過大時,網絡模型除了學習到訓練集數據的模態之外,還把額外的觀測誤差也學習進來,導致學習的模型在訓練集上面表現較好,但是在未見的樣本上表現不佳,也就是模型泛化能力偏弱,我們把這種現象叫作過擬合(Overfitting)。當模型的容量過小時,模型不能夠很好地學習到訓練集數據的模態,導致訓練集上表現不佳,同時在未見的樣本上表現也不佳,我們把這種現象叫作欠擬合(Underfitting)。
二、過擬合優化模型的設計
為了驗證不同模型對過擬合的影響程度,首先把數據集劃分為訓練集和測試集,但為了挑選模型超參數和檢測過擬合現象,一般需要將原來的訓練集再次切分為新的訓練集和驗證集。訓練集用于訓練模型參數,測試集用于測試模型的泛化能力,測試集中的樣本不能參與模型的訓練,防止模型“記憶”住數據的特征,損害模型的泛化能力。訓練集和測試集都是采樣自相同的數據分布,比如MNIST手寫數字圖片集共有7萬張樣本圖片,其中6萬張圖片用做訓練集,余下的1萬張圖片用于測試集。訓練集與測試集的分配比例可以由用戶自行定義,比如80%的數據用于訓練,剩下的20%用于測試。當數據集規模偏小時,為了測試集能夠比較準確地測試出模型的泛化能力,可以適當增加測試集的比例。
(一)模型的設計
通過驗證集可以判斷網絡模型是否過擬合或者欠擬合,從而為調整網絡模型的容量提供判斷依據。對于神經網絡來說,網絡的層數和參數量是網絡容量很重要的參考指標,通過減少網絡的層數,并減少每層中網絡參數量的規模,可以有效降低網絡的容量。反之,如果發現模型欠擬合,需要增大網絡的容量,可以通過增加層數,增大每層的參數量等方式實現。
(二)正則化
通過設計不同層數、大小的網絡模型可以為優化算法提供初始的函數假設空間,但是模型的實際容量可以隨著網絡參數的優化更新而產生變化。以多項式函數模型為例:
上述模型的容量可以通過n簡單衡量。在訓練的過程中,如果網絡參數βk+1,…,βn均為 0,那么網絡的實際容量退化到k次多項式的函數容量。因此,通過限制網絡參數的稀疏性,可以來約束網絡的實際容量。這種約束一般通過在損失函數上添加額外的參數稀疏性懲罰項實現,在未加約束之前的優化目標是
對模型的參數添加額外的約束后,優化的目標變為
其中Ω(θ)表示對網絡參數θ的稀疏性約束函數。一般地,參數θ的稀疏性約束通過約束參數θ的L范數實現,即
其中‖θi‖l表示參數θi的l范數。
新的優化目標除了要最小化原來的損失函數(x,y)之外,還需要約束網絡參數的稀疏性Ω(θ)),優化算法會在降低(x,y)的同時,盡可能地迫使網絡參數θi變得稀疏,它們之間的權重關系通過超參數λ來平衡。較大的λ意味著網絡的稀疏性更重要;較小的λ則意味著網絡的訓練誤差更重要。通過選擇合適的λ超參數,可以獲得較好的訓練性能,同時保證網絡的稀疏性,從而獲得不錯的泛化能力。常用的正則化方式有L0、L1、L2 則化。本文這里不做詳細介紹。
(三)Dropout
2012年,Hinton等人在其論文《Improving neural networks by preventing co-adaptation of feature detectors》中使用了Dropout方法來提高模型性能。Dropout通過隨機斷開神經網絡的連接,減少每次訓練時實際參與計算的模型的參數量;但是在測試時,Dropou會恢復所有的連接,保證模型測試時獲得最好的性能。
圖2是全連接層網絡在某次前向計算時連接狀況的示意圖。圖(a)是標準的全連接神經網絡,當前節點與前一層的所有輸入節點相連。在添加了Dropout功能的網絡層中,如圖(b)所示,每條連接是否斷開符合某種預設的概率分布,如斷開概率為ρ的伯努利分布。圖(b)中的顯示了某次具體的采樣結果,虛線代表了采樣結果為斷開的連接線,實線代表了采樣結果不斷開的連接線。
實驗結果顯示,在不添加Dropout層時,網絡模型與之前觀測的結果一樣,出現了明顯的過擬合現象;隨著Dropout層的增加,網絡模型訓練時的實際容量減少,泛化能力變強。
(四)數據增強
除了上述介紹的方式可以有效檢測和抑制過擬合現象之外,增加數據集規模是解決過擬合最重要的途徑。但是收集樣本數據和標簽往往是代價昂貴的,在有限的數據集上,通過數據增強技術可以增加訓練的樣本數量,獲得一定程度上的性能提升。數據增強(Data Augmentation)是指在維持樣本標簽不變的條件下,根據先驗知識改變樣本的特征,使得新產生的樣本也符合或者近似符合數據的真實分布。
以圖片數據為例,我們知道旋轉、縮放、平移、裁剪、改變視角、遮擋某局部區域都不會改變圖片的主體類別標簽,因此針對圖片數據,可以有旋轉、縮放、平移、裁剪、改變視角、遮擋某局部區域多種數據增強方式。通過這些增強方式的處理可以增加訓練樣本的數量,從而使過擬合問題得到一定的優化和改善。
三、結論
現代深度神經網絡中過擬合現象非常容易出現,主要是因為神經網絡的表達能力非常強,訓練集樣本數不夠很容易就出現了神經網絡的容量偏大的現象,通過對模型采取上述防止過擬合的方法,實驗結果顯示,網絡的層數和參數量是過擬合產生的很重要的參考指標,通過減少網絡的層數,并減少每層中網絡參數量的規模,可以有效降低網絡的容量。反之,如果發現模型欠擬合,需要增大網絡的容量,可以通過增加層數,增大每層的參數量等方式實現。防止過擬合具體的方法有正則化、Dropout和數據增強等。
參考文獻:
[1] 張鶴凝等.基于seq2seq模型的心理咨詢對話系統的研究[J],信息記錄材料,2021(3).
[2] 董波等. 機器學習在解決過擬合現象中的作用[J],心理科學,2021(3).
[3] 閆濤. 深度學習算法實踐 [M]. 電子工業出版社出版社,2020.
[4] 李恒基. 基于深度學習過擬合現象的分析[J],中國科技信息,2020(7).