2016年11月22日 星期二

關於 Overfitting, Regularization 與 Dropout

Overfitting 過度擬合

overfitting 就像小考GJ,大考GG

根據台大電機系 李宏毅教授 的深度習課程 ML Lecture 1: Regression - Case Study

提到,如果今天算出來的回歸分析模型用在訓練資料的誤差總和(Error Sum)很小

(error = 實際減去預測的差值,即理論與現實的差距)

但是用在模型尚未看過的測試資料(想像成最終測試的大考),若誤差總和很大

表示預測的效果不佳,這個現象就叫做 overfitting

例如下圖中的橘色線,它的數值大小就是代表誤差大小

在第5組測資發生了誤差超大的現象


圖一(擷取自課程影片)


Regularization 

在這篇 Quora:What is regularization in machine learning? 的文章中
鄉民 Yassine Alouini 回答的最好。基本上Regularization的目的就是

避免 overfitting 發生的技巧


在原本的 loss function 中,額外加入紅色方框所框起來的 lamda 項

成為新的 loss function

lamda 項中的 wi 是把已經求出 model 的 wi 項加總起來,再乘以lamda 

但是為什麽希望 wi 比較小呢?

因為輸入項對於 loss function 比較不敏感,影響就會比較小!

但是不考慮 bias,因為bias 對於 loss function 本身的平滑程度沒有任何影響



圖二(擷取自課程影片)

當然,無限制的增加 lamda 大小並不會讓 loss function 無限制的變小

因為隨著 lamda越來越大,lamda 項對於 loss function 的影響會越來越大

圖三(擷取自課程影片)


Dropout

在資料樣本數較少的情況底下,為了避免過度擬合 overfitting 所使用的技巧


歷史背景

在 Hinton 於 2006 年提出打下深度學習基礎的重要論文中

所使用的神經網路是受限制玻茲曼機( Restricted Boltzmann Machine )

它使用到了 Dropout 的技巧,丟掉(drop)某些前一層的神經元的輸入

來避免 Overfitting,讓神經網路的層數能夠更上一層樓

概念上可以想像成,假設今天我們要設計一個深層的類神經網路

可以從文字特徵判斷這個生物是不是人

                     「human」的圖片搜尋結果

Dropout的概念可以想像成從目前有的資訊,擷取重要的核心骨幹部份

排除掉相異的部份

例如,同樣是人類,黃種人、黑人、白人的核心概念都是人這個種族

但是某些特徵只屬於特地膚色的,我們就將這些部份的資訊改忽略不考慮

不讓這些資訊在倒傳遞過程中改變神經網路中的權重

這樣,深層的類神經網路就能夠專注的判斷這些測試資料是不是人

而不會被枝微末節的資訊所影響


這篇博文有個簡單的解釋 Deep learning:四十一(Dropout简单理解) 

原始論文在此,方便自己以後查閱
Srivastava, Nitish, et al. "Dropout: a simple way to prevent neural networks from overfitting." Journal of Machine Learning Research 15.1 (2014): 1929-1958.

講述受限制玻茲曼機相當清楚的論文: 张春霞, 受限波尔兹曼机简介

沒有留言:

張貼留言

/* 載入prettify的autoloader */ /* 載入JQuery */