文档章节

分析 Dropout

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:21
字数 2146
阅读 2
收藏 0
点赞 0
评论 0

这篇教程是翻译Paolo Galeone写的Dropout分析教程,作者已经授权翻译,这是原文

过拟合一直是深度神经网络(DNN)所要面临的一个问题:模型只是在训练数据上学习分类,使其适应训练样本,而不是去学习一个能够对通用数据进行分类的完全决策边界。这些年,提出了很多的方案去解决过拟合问题。其中一种方法就是Dropout,由于这种方法非常简单,但是在实际使用中又具有很好的效果,所以被广泛使用。

Dropout


Dropout 背后的思想其实就是把DNN当做一个集成模型来训练,之后取所有值的平均值,而不只是训练单个DNN。

DNN网络将Dropout率设置为 p,也就是说,一个神经元被保留的概率是 1-p。当一个神经元被丢弃时,无论输入或者相关的参数是什么,它的输出值就会被设置为0。

丢弃的神经元在训练阶段,对BP算法的前向和后向阶段都没有贡献。因为这个原因,所以每一次训练,它都像是在训练一个新的网络。

你可以查看这篇论文,进行更详细的了解。

简而言之:Dropout 可以在实际工作中发挥很好的效果,因为它能防止神经网络在训练过程中产生共适应。

现在,我们对Dropout有了一个直观的概念,接下来让我们深入的分析它。

Dropout是如何工作的?

正如前面所说的,Dropout 以概率 p 来丢弃神经元, 并且让别的神经元以概率 q = 1 - p,进行保留。

每一个神经元都有相同的概率被丢弃和保留。 也就是说:

给定

  • h(x) = xW + b 是一个线性转换方程,其中输入 x 是一个 di 维度的数据,输出数据是一个 dh 维度的。
  • a(h) 是一个激活函数。

我们只将 Dropout 作用在模型的训练阶段,即我们可以把模型的激活函数修改为:


其中,D = (X1, ..., Xdn) 是一个 dh 维度的向量,Xi 是一个伯努利变量。

注:Probability density function 是概率密度函数,针对连续型随机变量而言,一般写法是一个函数,如 f(x)=e^(-x),积分得到∫f(x)dx=1。
Probability mass function 是概率质量函数,是针对离散型随机变量而言。一般写法是写成对应每一个特定取值的概率,如P{x=xi}=1/15。

伯努利随机变量具有以下概率质量分布:


其中,k 是可能的输出结果。

很明显,这个随机变量完美的模拟了单个神经元上面的 Dropout 过程。实际上,神经元以概率 p = P(k=1) 丢弃,以 p = P(k=0) 保留。

比如,在第 i 个神经元上,Dropout 的应用如下所示:


其中,P(Xi = 0) = p

因为,在训练阶段,一个神经元被保留的概率是 q 。但是在测试阶段,我们必须去模拟训练阶段的集成网络模型。

为此,作者建议在测试阶段将神经元的激活值乘以因子 q 再输出。以便在训练阶段集成模型,在测试阶段只要输出单个模型的值即可。从而得到下式:


Inverted Dropout

我们稍微将 Dropout 方法改进一下,使得我们只需要在训练阶段缩放激活函数的输出值,而不用在测试阶段改变什么。这个改进的 Dropout 方法就被称之为 Inverted Dropout 。

比例因子将修改为是保留概率的倒数,即:


因此,我们最终可以把模型修改为:


在各种深度学习框架的实现中,我们都是用 Inverted Dropout 来代替 Dropout,因为这种方式有助于模型的完整性,我们只需要修改一个参数(保留/丢弃概率),而整个模型都不用修改。

对一层神经元进行 Dropout 处理

假设第 h 层有 n 个神经元,那么在一次循环中,神经网络可以被看做是 n 次的伯努利实验的集成,每个神经元被保留的概率是 p

因此,第 h 层一共被保留的神经元个数如下:


由于每个神经元都是用伯努利随机变量进行建模的,并且所有这些随机变量是独立同分布的,所以所有被丢弃的神经元的总数也是一个随机量,称为二项式:


其中,在 n 个试验中,获得保留 k 个的概率质量分布为:


这个式子也很好解释,如下:


我们现在可以利用这个分布来分析丢弃指定神经元的概率。

当我们使用 Dropout 时,我们需要先定义一个固定的 Dropout 概率 p,即我们期望从网络中丢弃多少比例的神经元。

举个例子,如果我们的神经元数量是 n = 1024p = 0.5,那么我们希望有 512 个神经元被丢弃。让我们来验证一下:


因此,丢弃的神经元个数是 np = 512 的概率是 0.025

Python 代码可以帮助我们可视化结果,比如我们把 n 值固定,然后改变 p 的值,那么可以得到下图:


正如我们在上图中看到的,不管 p 值如何改变,平均丢弃的神经元个数都是 np 。也就是:


而且,我们可以注意到,值的分布是关于 p = 0.5 对称的。而且,p 随着离 0.5 越远,np 的值越来越大。

在训练阶段,我们需要把缩放因子 p 添加到网络中,因为我们期望在训练阶段只保留百分之 1-p 的神经元。相反,在测试阶段,我们需要开启所有的神经元。

Dropout 和其他正则化

Dropout 方法通常和 L2 范数或者其他参数约束技术(比如Max Norm)一起使用。规范化有助于使模型参数的值不是很大,而且这种方法参数值的变化过程不会很大。

简而言之,例如,L2 归一化是损失函数的一个附加项,其中 λ∈[0,1] 是被称为正则化的超参数,F(W;x) 是模型,E 是真实值y和预测值y^的误差函数。


对于这个附加项,我们很容易理解。当通过梯度下降进行反向传播时,这可以减少更新量。如果 η 是学习率,则参数 w∈W 的更新量为:


相反,单独使用 Dropout 方法不能防止参数值在训练阶段变得过大。而且,Inverted Dropout 方法还会导致更新步骤变得更大,正如下面所描述的。

Inverted Dropout 和其他正则化

由于 Dropout 方法不会阻止参数过大,而且参数之间也不会互相牵制。所以我们要使用 L2 正则化来改变这个情况,或者其他的正则化方法。

加入明确的缩放因子,前面的方程就变为:


观察上式,很容易发现,当使用 Inverted Dropout 方法时,学习率被缩放到 q 的因子,由于 q 的取值范围是 [0,1],那么 ηq 之间的比率可以在以下之间变化:


因此,从现在开始,我们称 q 是一个 boosting 因子,因为它提高了学习率。此外,我们称 r(q) 为有效学习率。

因此,有效学习率相对于所选择的学习率有更好的表示性。由于这个原因,限制参数值的规范化方法可以帮助简化学习率的选择过程。

总结

  1. Dropout 方法存在两种形式:直接的和 Inverted。
  2. 在单个神经元上面,Dropout 方法可以使用伯努利随机变量。
  3. 在一层神经元上面,Dropout 方法可以使用伯努利随机变量。
  4. 我们精确的丢弃 np 个神经元是不太可能的,但是在一个拥有 n 个神经元的网络层上面,平均丢弃的神经元就是 np 个。
  5. Inverted Dropout 方法可以产生有效学习率。
  6. Inverted Dropout 方法应该和别的规范化参数的技术一起使用,从而帮助简化学习率的选择过程。
  7. Dropout 方法有助于防止深度神经网路的过拟合。

本文转载自:http://www.jianshu.com/p/ba9ca3b07922

共有 人打赏支持
AllenOR灵感
粉丝 10
博文 2139
码字总数 82983
作品 0
程序员
分析 Dropout

这篇教程是翻译Paolo Galeone写的Dropout分析教程,作者已经授权翻译,这是原文。 过拟合一直是深度神经网络(DNN)所要面临的一个问题:模型只是在训练数据上学习分类,使其适应训练样本,而...

chen_h ⋅ 2017/01/29 ⋅ 0

学界 | 如何通过方差偏移理解批归一化与Dropout之间的冲突

自批量归一化提出以来,Dropout 似乎就失去了用武之处,流行的深度架构也心照不宣地在批归一化上不采用 Dropout。而近日南京理工大学和清华大学的研究表明 Dropout 在网络测试的时候神经元会...

机器之心 ⋅ 01/23 ⋅ 0

【深度学习】深入解析dropout

摘要: 本文详细介绍了深度学习中dropout技巧的思想,分析了Dropout以及Inverted Dropout两个版本,另外将单个神经元与伯努利随机变量相联系让人耳目一新。 过拟合是深度神经网(DNN)中的一...

qq280929090 ⋅ 03/22 ⋅ 0

深度学习(三):Keras初探:多层感知机

之前使用Keras构建了简单的前馈神经网络,并通过SGD方式进行训练,很好地已完成红酒分类任务。现在我们通过复杂一些的任务来看看BP神经网络的性能。我们选择mnist手写数字库来进行测试,Ker...

monte3card ⋅ 2017/06/12 ⋅ 0

深入解析Dropout——基本思想:以概率P舍弃部分神经元,其它神经元以概率q=1-p被保留,舍去的神经元的输出都被设置为零

深度学习网络大杀器之Dropout——深入解析Dropout 转自:https://yq.aliyun.com/articles/68901 摘要: 本文详细介绍了深度学习中dropout技巧的思想,分析了Dropout以及Inverted Dropout两个...

桃子红了呐 ⋅ 2017/11/17 ⋅ 0

重磅 | 机器学习大神Bengio最新论文发布,专注RNN优化难题,将在NIPS提出新概念fraternal dropout

编译 | Troy·Chang、爱心心、reason_W 校对 | reason_W 下个月机器学习领域的顶会Nips就要在大洋彼岸开幕啦,那么这次的Nips又有什么值得关注的亮点呢?Bengio在新作中提出了RNN优化的新概念...

AI科技大本营 ⋅ 2017/11/08 ⋅ 0

重磅 | 机器学习大神Bengio最新论文发布,专注RNN优化难题,将在NIPS提出新概念fraternal dropout

编译 | Troy·Chang、爱心心、reason_W 校对 | reason_W 下个月机器学习领域的顶会Nips就要在大洋彼岸开幕啦,那么这次的Nips又有什么值得关注的亮点呢?Bengio在新作中提出了RNN优化的新概念...

AI科技大本营 ⋅ 2017/11/08 ⋅ 0

漫谈Deep Compression(二)剪枝

Index Architecture Train Connectivity L2 Regularization Dropout Prune Connections Sensitivity CSR Application Architecture Pruning Pruning部分主要分为以上三个步骤: 通过正常的训练......

Efackw13 ⋅ 2017/04/01 ⋅ 0

译:《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》

今天看了CS231n关于dropout部分的讲述,不是很清晰,拿来一篇关于Dropout的代表性文章来读一读,体会一下。 论文原文下载链接:Dropout: A Simple Way to Prevent Neural Networks from Ove...

归零zero ⋅ 01/30 ⋅ 0

tensorflow笔记:多层LSTM代码分析

标签(空格分隔): tensorflow笔记 tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析 (三) tensorflow笔记:多层LSTM代码...

云栖希望。 ⋅ 2017/12/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Kubeflow实战系列:利用TFJob导出分布式TensorFlow模型

介绍 本系列将介绍如何在阿里云容器服务上运行Kubeflow, 本文介绍如何使用TfJob导出分布式模型训练模型。 第一篇:阿里云上使用JupyterHub 第二篇:阿里云上小试TFJob 第三篇:利用TFJob运行...

全部原谅 ⋅ 4分钟前 ⋅ 0

007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

影狼 ⋅ 5分钟前 ⋅ 0

常见的一些C#开源框架或者开源项目

原:https://blog.csdn.net/qq_27825451/article/details/70666044 Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更......

whoisliang ⋅ 6分钟前 ⋅ 0

设计模式基本原理

刚开始接触编程这行的时候看过设计模式,当时感觉学这些模式没有太大的用处,当时也看不太懂。但是随着慢慢接触这一行,经过一段时间的编程以后,再回过头来看设计模式,发现设计模式的确是太...

王子城 ⋅ 9分钟前 ⋅ 0

阿里云全面支持IPv6!一文揽尽4位大咖精彩演讲

摘要: 自从去年11月以来,阿里巴巴高度重视数据中心的网络改造、云产品改造、应用及网络改造等多个维度,经过半年以来的建设,阿里云已经完成了域名解析等关键产品的分析,现在阿里云已经完...

传授知识的天使 ⋅ 20分钟前 ⋅ 0

windows Android sdk 配置

1、下载Android SDK,点击安装,直接默认路径即可! 下载地址:http://developer.android.com/sdk/index.html 2、默认路径安装后,安装完成,开始配置环境变量。 3、打开计算机属性——高级系...

阿豪boy ⋅ 23分钟前 ⋅ 0

bash shell script 简明教程

User <--> bash <--> kernel shell is not kernel or part of kernel various shells: tcsh, csh, bash, ksh find the using shell: echo $SHELL find all the shells: cat /etc/shells what......

mskk ⋅ 25分钟前 ⋅ 0

Service Mesh简史

William Morgan Service Mesh是一个相当新的概念,讲它的“历史”似乎有些勉强。就目前而言,Service Mesh已经在部分企业生产环境中运行了超过18个月,它的源头可以追溯到2010年前后互联网公...

好雨云帮 ⋅ 25分钟前 ⋅ 0

10个免费的服务器监控工具

监控你的WEB服务器或者WEB主机运行是否正常与健康是非常重要的。你要确保用户始终可以打开你的网站并且网速不慢。服务器监控工具允许你收集和分析有关你的Web服务器的数据。 有许多非常好的服...

李朝强 ⋅ 38分钟前 ⋅ 0

压缩工具之zip-tar

zip 支持目录压缩。使用yum安装zip包,使用yum安装unzip包 zip 1.txt.zip 1.txt #将1.txt文件压缩,新生成的压缩文件为1.txt.zip,原文件保留 zip -r 123.zip 123/ #-r对目录操作。将123/目录...

ZHENG-JY ⋅ 38分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部