過擬合、欠擬合、梯度消失及梯度爆炸的理解

目錄:

        1,過擬合和欠擬合的定義

        2, 過擬合和欠擬合的解決方法

        3, 梯度消失和爆炸的定義

        4,梯度消失和爆炸的解決方法

 

1,過擬合和欠擬合的定義

         無論在機器學習還是深度學習建模當中都可能會遇到兩種最常見結果,一種叫過擬合(over-fitting )另外一種叫欠擬合(under-fitting)。

                                    

    所謂過擬合(over-fitting)其實就是所建的機器學習模型或者是深度學習模型在訓練樣本中表現得過於優越,導致在驗證數據集以及測試數據集中表現不佳。如上圖所示,即在訓練過程中,在訓練數據集上,訓練誤差較低,但是在驗證集上,誤差損失較大。也可以觀察到,隨着模型複雜度升高,過擬合情況越來越嚴重。

    所謂欠擬合呢(under-fitting)?相對過擬合欠擬合還是比較容易理解。還是拿上圖來說,可能模型複雜度不夠,無法很好地擬合訓練數據,導致訓練和驗證誤差損失都比較大。

 

2,過擬合和欠擬合的解決方法

      過擬合:根據上圖可以得到,隨着模型複雜度--模型參數--增高,過擬合的情況越來越嚴重,因此減少參數可以有效緩解過擬合。首先可以在損失函數裏添加限制權重參數過大的正則項,在損失函數下降的過程中,使得權重參數逐漸趨向0(L2)甚至等於0(L1)。landa控制限制過擬合的程度。

      其次,可以在訓練過程中隨機失活部分神經元(參數)--某些參數不參與訓練--減少訓練參數,如下圖所示。

                            

      再者,我們可以擴充數據集。當數據集較少時,可以採用K折交叉訓練。  所謂K折交叉訓練,即是將總的數據集分成K部分,每次選(K-1)爲訓練集,剩餘的一部分爲測試集,充分利用數據集。 

      最後,由圖1可知,可以採用提前停止訓練來防止過擬合。 

欠擬合:其實個人覺得欠擬合基本上都會發生在訓練剛開始的時候,經過不斷訓練之後欠擬合應該不怎麼考慮了。但是如果真的還是存在的話,可以通過增加網絡複雜度或者在模型中增加多點特徵點,這些都是很好解決欠擬合的方法。而且在現實情況中,發生欠擬合的情況比較少。

3,梯度消失和爆炸的定義

       在介紹梯度消失以及爆炸之前,先簡單說一說梯度消失和梯度爆炸的根源—–深度神經網絡和反向傳播。目前優化神經網絡的方法都是基於反向傳播的思想,即根據損失函數計算的誤差通過梯度反向傳播的方式,指導深度網絡權值的更新優化。這樣做是有一定原因的,首先,深層網絡由許多非線性層堆疊而來,每一層非線性層都可以視爲是一個非線性函數 f(x)(非線性來自於非線性激活函數),因此整個深度網絡可以視爲是一個複合的非線性多元函數:

                                     

     我們最終的目的是希望這個多元函數可以很好的完成輸入到輸出之間的映射,假設不同的輸入,輸出的最優解是g(x) ,那麼,優化深度網絡就是爲了尋找到合適的權值,滿足Loss = L(g(x), F(x))取得極小值點,對於這種數學尋找最小值問題,採用梯度下降的方法再適合不過了。

                                     

    根據鏈式求導法則,可以知道梯度在從前往後傳遞的過程中,假如梯度小於1,則出現梯度消失,大於1,出現梯度爆炸。

4,梯度消失和爆炸的解決方法

    a:Batchnorm是深度學習發展以來提出的最重要的成果之一了,目前已經被廣泛的應用到了各大網絡中,具有加速網絡收斂速度,提升訓練穩定性的效果,Batchnorm本質上是解決反向傳播過程中的梯度問題。batchnorm全名是batch normalization,簡稱BN,即批規範化,通過規範化操作將輸出信號x規範化保證網絡的穩定性。batchnorm就是通過對每一層的輸出規範爲均值和方差一致的方法,消除了xxx帶來的放大縮小的影響,進而解決梯度消失和爆炸的問題,或者可以理解爲BN將輸出從飽和區拉倒了非飽和區。

   b:選擇合適的激活函數。

   c:殘差結構。殘差結構可以有效地防止梯度消失。因爲短路鏈接可以無損的回傳梯度,即使卷積線路梯度特別小,也可以保證梯度正常回傳。

 

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