天天看點

[文獻閱讀]dropout - a simple way to prevent neural networks from overfitting

from JMLR 2014

by多倫多大學

【main points】提出了node Bernoulli dropout,用在前饋神經網絡(MLP, CNN),限制boltzmann機模型上,在監督學習任務上測試。

訓練時候對每個min batch 以一定的機率暫時的移除節點(及其輸入輸出連接配接),相當于訓練 2n 個共享權重的網絡。測試的時候用weight scaling後的全網絡。

Gauss dropout(為權重乘以高斯噪聲而非Bernoulli噪聲)也有差不多更好的效果。

introduction

多個非線性隐層,可以學習輸入和輸出之間的複雜的關系。

但是當訓練資料有限的時候,可能部分關系是從采樣噪聲學到的,這些關系在訓練集中存在但在實際的測試資料中不存在。這就導緻了過拟合。

減少過拟合的方法包括,驗證集上的性能開始下降時盡快停止訓練,為權重引入L1/L2正則懲罰項,soft weight sharing【?】。

如果計算量上不受限制,按照bayesian的黃金準則,regularize 一個固定規模的模型的最好的方式是,在參數的所有可能的取值上做預測,再根據每種取值的後驗機率對這些預測權重取平均。

實際中希望用更少的計算量近似到達bayesian的性能。

本文提出dropout,學習指數個共享參數的模型,做預測,求幾何平均。近似地有效地組合了指數多個神經網絡體系結構。

dropout做法,暫時地随機地移除網絡中的單元(及其輸入和輸出連接配接)。比如,每個單元都以固定的機率p(比如=0.5)保留。(但是輸入單元的保留機率應該接近1)

相當于從原網絡中采樣一個thinned稀疏的網絡。

原網絡有n個單元,則有 2n 種可能(每個節點有移除/保留2種可能,各節點獨立)的稀疏網絡。

2n 個網絡,每個網絡被訓練的次數都很少。

在測試的時候,直接地先對每個網絡做預測再平均 計算量大不可行。采用近似平均方法,将 2n 個網絡組合成一個NN(所有單元都保留,但單元的輸出權重都乘以該單元在訓練時候的保留機率),基于這個NN做預測。

經過驗證,dropout方法在許多分類問題上都能達到比其他正則方法更低的generalization error。

model description

第 l 層的第j個節點保留/移除 r(l)j

第 l 層的所有節點的輸出y(l)

[文獻閱讀]dropout - a simple way to prevent neural networks from overfitting

model training

可以和 max-norm正則,大的衰減學習率,高momentum 等方法技巧一起用。

experiments

資料集

  • MNIST 手寫字母圖檔分類
  • TIMIT 語音識别
  • CIFAR-10/100 圖檔分類
  • SVHN 房子号碼圖檔分類?
  • ImageNet 圖檔分類
  • Reuters-RCV1 新聞文章
  • 基因拼接資料

模型及規模

  • 2層 3層的NN, 1024-8192個單元
  • 各種ConvNet
  • 。。。

more

comparison with Bayesian NN

dropout相當于對 2n 個共享參數的網絡的平均,但是這些網絡是等權重的。

Bayesian的權重要考慮後驗(先驗及資料拟合好壞)。

bayesian計算量大 訓練慢 很難對大網絡,測試時候計算量也大。

在小資料(基因拼接資料)上對比。

bayesianNN效果最好。dropouNN比沒dropout提高很多。

comparison with standard regularizers

标準的用于防止NN過拟合的正則方法:

  • L2 權重衰減
  • lasso
  • KL-sparsity
  • max-norm regularization

在MNIST資料上 5層NN網絡上,與dropout分别對比。

結果 Dropout+max-norm方法最好。

effect on features

标準的NN的梯度會修正其它單元的錯誤,這種co-adaptation會導緻過拟合。dropout讓其它單元unreliable, 是以一個單元不能依靠其它單元來糾正錯誤而必須适應各種其它單元的上下文。

autoencoder on MNIST實驗發現,dropout學到的特征[?] 去co-adaptation。

effect on sparsity

activations變得稀疏了。更少的單元有大activation。

dropout rate

單元保留的機率p ∈[0.4,0.8] 的時候測試error最小,(p>=0.3時候訓練誤差即可達到0。。。)

data size

極小的資料集 dropout的分類錯誤更差

monte-carlo 模型平均

按照bayesian的思想,測試時候應該在 2n 個thinned網絡上分别做預測再平均。

對每個測試樣例,采樣k個thinned網絡,做預測,平均。

dropout在測試的時候是通過weight scaling 來近似平均的。

MNIST資料上k=50時候 兩種平均的效果差不多,k更大的時候monte-carlo平均稍微好一點點(但是計算量大許多)

marginalizing noise

線性回歸問題

minw||y−Xw||2

輸入被dropout的線性回歸問題

minwER∼Bernoullli(p)[||y−(R⋅X)w||2]

reduce to

minw||y−pXw||2+p(1−p)||Γw||2

, Γ=diag(XTX)12

即dropout相當于 ridge regression(l2懲罰的回歸) ,且當資料X的某一維方差大,則對這一維的W乘法越大。

minw||y−Xw~||2+1−pp||Γw~||2

p越大 保留越多 正則項系數越小。

gaussian noise

dropout是為每個單元的activation乘以的bernoulli噪聲R。

實驗發現,為每個單元的activation乘以N(1,1)的高斯噪聲 甚至比乘以bernoulli(p)噪聲更好。

y乘以N(1,1)的高斯噪聲 相當于 加上N(0,y^2)的高斯噪聲。

r∼N(1,1),y~=ry∼N(y,y2)

r′∼N(0,y2),y~=y+r′∼N(y,y2),

更一般的,乘以 N(1,σ2) 噪聲,(相當于 加上 N(0,σ2y2) 噪聲)超參數 σ2 相當于bernoulli噪聲的超參數p。

乘以 N(1,σ2) 噪聲後 activation的期望沒變,是以測試的時候,用所有的權重就行了 不用weight scaling。

dropout測試階段乘以p,期望為py.

相當于訓練階段 乘以 r,p(r=1)=p, p(r=0)=1-p。(E[ry]=py)

dropout測試階段不乘以p,期望為y

則相當于 訓練階段 乘以r, p(r= 1p )=p, p(r=0)=1-p。 (E[ry]=y)

乘以E[r]=1,var[r]= 1−pp 的bernoulli噪聲 rb 和高斯噪聲 rg 相比,

給定一階和二階距,guass有最大熵,bernoulli有最小熵。【 so?】

實驗結果,測試時候不weight scaling, 乘以期望為1方差為 1−pp 的高斯噪聲 比乘以相同期望和方差的bernoulli噪聲的dropout在分類準确性上結果稍微更好。

限制boltzmann機

。。。

繼續閱讀