《理解Dropout》分享

引言:相信有接触过深度学习的同学应该知道dropout可以用来解决过拟合问题,但为什么dropout能解决过拟合,它的的原理具体是什么?它有什么经验值或者它可能有什么缺点?这次分享也希望能回答这些问题。

什么是Dropout?

为了应对神经网络很容易过拟合的问题,2014年 Hinton 提出了一个神器:

Dropout: A Simple Way to Prevent Neural Networks from Overfitting.(防止神经网络过拟合的一种简单方法。)
原始论文:http://jmlr.org/papers/v15/srivastava14a.html

定义就是这么简单,就是用来防止神经网络过拟合问题。

那么这里引出一个更重要的问题是,什么是过拟合

什么是过拟合?

定义:过拟合就是训练出来的模型在训练集上表现很好,但是在测试集上表现较差的一种现象。

这里先普及下训练模型关于数据集的划分,一般情况我们都会将数据集划分为以下:

  • 训练集(顾名思义,用来训练的)
  • 验证集(训练过程中去验证模型效果的)
  • 测试集(用来评测模型最终效果的数据集)

这样我们比较清楚过拟合在不同数据集会有什么样的表现。说白了,就是模型在训练集学习到的东西,不能很好的泛化到测试集,造成这样的原因有很多,稍后继续讲。

可能上面的定义对没有怎么接触过深度学习的同学可能还不够直观,我举个通俗一点的例子:

训练的情况:比如你去学车,在训练场上你熟练记得倒车入库还有侧方位停车的口诀,每次都能倒进去,因为你已经很熟悉这个环境了,这个是训练的时候的情况,自我感觉良好
测试的情况:但真正上考场的时候,妈蛋,发现情况跟自己想得完全不一样,换了车和场地之后就不知道怎么开了,起步直接挂掉,这个就是考试的情况,完全不符合预期,这就是过拟合

或者看图更好理解:

模型拟合情况

左边:欠拟合,完全没有学会东西。
中间:刚刚好拟合,更符合我们对模型的预期。
右边:过拟合,过度拟合训练集的数据了。

ok,关于模型过拟合的定义,我们应该比较清楚了。

那么产出过拟合的原因有哪些?

  1. 数据有噪声
  2. 训练数据不足,有限的训练数据
  3. 训练模型过度导致模型非常复杂

总的一句话:模型开始胡思乱想了

那问题来了:怎么避免过拟合?

如何避免过拟合?

直接上结论:

  1. early stopping
  2. 扩增数据集
  3. 控制模型参数大小(正则化:L1、L2)
  4. dropout正则化

early stopping

大致意思就是在模型对训练数据集迭代收敛之前停止迭代防止过拟合。

上图更好解释:

early stopping

可以看到模型的error是随着训练时间是呈曲线下降的,也就是说,这里包括train error和cross validation error,如果它在训练过程中在某个最低点之后cross validation error开始上升,说明模型可能存在过拟合了。

一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。

扩增数据集

有时候往往拥有更多的数据胜过一个好的模型。

  1. 从数据源头采集更多数据
  2. 复制原有的数据并加上随机噪声
  3. 重采样
  4. 根据当前数据集估计数据分布参数,使用该分布产生更多的数据等

正则化

即在对模型的目标函数或者代价函数加上正则项。

一般我们会采用L1、L2正则项,引用莫凡python的一张图:

这里写图片描述

其中L1范数是指向量中各个元素绝对值之和。L2范数是指向量各平方和然后求平方根。

关于更多L1、L2的详细介绍可以参考:L1、L2正则化

dropout

dropout方法是ImageNet中提出的一种方法,通俗一点讲就是dropout方法在训练的时候让神经元以一定的概率不工作。

ok,以上就是避免过拟合的一些方法,下面我们正式讲下dropout是如何防止过拟合问题的。

Dropout是如何防止过拟合的?

在理解为什么Dropout对过拟合为什么有效之前,我们先看下Hinton大神发明Dropout这个利器的灵感和动机是什么。

Dropout的灵感:遗传和突变

我们来看一张图

无dropout网络&dropout网络

左边这张是没有用dropout的神经网络,右边这张是使用了dropout的神经网络。大家一眼应该就能看出它们之间的区别,明显左边的网络是比较复杂的,右边它似乎删除了一些神经元,让整个网络变得更小。

无性繁殖vs有性繁殖

在Hinton大神论文中做了这样的类比,无dropout的网络和经过dropout的网络可以类比成无性繁殖有性繁殖,为什么它们可以做这样的类比,我们就要从这两者之间的特点来看。

无性繁殖有以下特点:

  • 遗传单亲基因
  • 继承优秀基因,轻微突变(不变坏)

有性繁殖则是:

  • 遗传双亲独特基因
  • 组合之后,加上随机的突变(可好,可坏)

从这两者的特点来看,似乎无性繁殖会更有优势才对,因为无性生殖的物种可以基本把父辈的基因内容都保留下来,而这些基因是父辈优化好的结果,如果一直这样下去的话,应该会越来越优才对。但实际上并非如此,从进化的角度来看,有性繁殖是比无性繁殖要更高级的。因为有性繁殖它通过基因的随机组合,打破了基因组之间的co-adaptation(联合适应性),意思减少了基因组之间的依赖,这样能让它们在突变的环境下产生更好的适应性。

无dropout的网络就像无性繁殖一样,它虽然能够学习到一些东西,但它更多适用于数据固定的情况,特征也比较固定的情况,它确实是能很有效的拟合数据。但一旦出现不可预见的数据的时候,它就会变得手无足措了。 而使用dropout的网络更能符合我们的实际的场景,网络需要去突变,去进化去适应环境,这样才能更好的去适应非特定场景的情况,具有更好的泛化能力。

Dropout带来的模型变化

这里写图片描述

左边:在训练时,每个神经单元都可能以概率p去除。
右边:在测试阶段,每个神经元都是存在的,权重参数w要乘以p,成为pw。

左边我们应该比较好理解,每个神经元都有概率p参与单次神经网络的训练。而测试的时候,神经元是不会去除的,每个神经元都是存在的,权重参数w要乘以p。那么这里就产生一个问题,为什么参数w要乘以概率p

问题:怎么理解测试时权重参数w要乘以概率p?

假设总共有100个神经元,训练的时候我们加上dropout,p=0.5,那么我们就有50个神经元参与训练,那么我们每次50个神经元训练出来的模型参数w是要比直接100个神经元要小的,因为它更新的次数会更少。我们测试的时候100个神经元是都会参与计算的,这就跟训练的时候我们使用50个神经元产生差异了,如果要保证测试的时候每个神经元的关联计算不能少,只能从通过改变w来达到跟训练时一样输出,所以才会有权重参数w乘以p。

标准网络和dropout网络有什么不一样

这里写图片描述

左边是简单的模型,右边是含有dropout的模型。

l: hidden layer index (隐藏层索引)
z: denote the vector of inputs into layer l(表示l层的向量输入)
y: output of each layer(每一层的输出)
y0: input layer(输入层)
f: activation function(激活函数)

这里写图片描述

这是简单模型的输入输出的计算。

这里写图片描述

含有dropout的模型,它在input layer 乘以伯努利随机概率,如果p =0.5,那么y就有50%的概率会变成0,这样它就不会参与运算。

Dropout的效果怎么样?

这里写图片描述

这个图表示的是不同的分类架构没有使用dropout和使用dropout有分类错误有显著的下降。

tensorflow中使用dropout

这里写图片描述

RNN中使用dropout

这里写图片描述

从时刻t-1传递到时刻t,循环神经网络不会进行状态的dropout;而在同一时刻t中,不同层循环体之间会使用dropout.

这里的实线表示不使用dropout,虚线表示使用dropout。

代码片段

这里写图片描述

Dropout率该怎么选择?

  • input 的dropout概率推荐是0.8(添加噪声)
  • hidden layer 推荐是0.5(随机生成的网络结构最多)

Dropout有什么缺点?

缺点就是会明显增加训练时间,因为引入dropout之后相当于每次只是训练的原先网络的一个子网络,为了达到同样的精度需要的训练次数会增多。
dropout的缺点就在于训练时间是没有dropout网络的2-3倍

参考文献

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容