How to reduce bias and variance ?

bias和variance在深度學習中是兩個不同的概念,一個是偏差,一個是方差,這兩個中文名字反而更讓人混淆一點。

  • 偏差可以理解爲訓練出來的模型和真實數據分佈的差距。
    例如偏差小,說明模型和真實分佈相差不大;偏差很大,說明訓練出來的模型和真實分佈相差較大。例如只用了一個直線,進行了一個複雜分佈的二分類。很明顯這個模型的偏差是很大的。

  • 方差很好理解,在數學上就是統計模型離散程度的計量,在深度學習中,我個人把它看做可以代表模型的複雜度,或者說是對數據分佈的擬合程度。方差越大,模型就越複雜,也就是說對訓練集的擬合程度越好,直至過擬合。

綜上所述,我們需要一個偏差小一些,方差也不是太大的「適中」的模型。

如果訓練好一個模型之後偏差大,我們可能是選擇的算法不好或者是模型不對,需要修改模型。而方差大呢?(過擬合了)

以下是一些降低方差的方法並附上簡單解釋:

  1. 增加數據集
    最顯而易見的辦法,模型過擬合了,增加數據集,然而很多時候並不會有我們希望的那麼多數據集,所以重點是以下的方法。
    再說一些吳恩達介紹的trick:如果是圖像處理,可以把圖像反轉,或者是在留下重要內容的前提下的變換角度重新剪裁。這樣可以成倍增加數據集。

  2. 正則化 regularization
    就是在loss function後邊加一個罰項λ||w||22,用來代表模型的複雜度。這個罰項的具體含義是w的L2範式,也就是所有w的平方和。如果λ很大,也就是這個罰項佔的比重很大,模型傾向於變得簡單,λ小的話,模型傾向於變得相對複雜一點。
    這種方式的複雜之處在於要多次的訓練才能找到一個較爲合適的λ。

  3. dropout
    一種丟棄部分神經元來使模型得到簡化的方法。與L2正則化功能類似。每次在訓練過程中,數據到達的每一層都會根據設置好的比例隨機放棄一些神經元,因此模型不會再過度的「倚重」某些神經元,給它們過大的權重,因爲每次有效的神經元都是不同的,從而所有神經元都會獲得一定的權重。達到防止過擬合的效果。

  4. early stopping

    圖中黃線是訓練集算是函數,紅線是驗證集損失函數,可以看出,雖然訓練集一直在降低,但是到了驗證集的效果就不是那麼理想,所以提前結束訓練是一種方式。
    這種方式只需要一次訓練即可,不需要重複多次來尋找合適的參數。