天天看点

[文献阅读]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机

。。。

继续阅读