深度学习网络大杀器之Dropout——深入解析Dropout

 转自:https://yq.aliyun.com/articles/68901

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

过拟合是深度神经网(DNN)中的一个常见问题:模型只学会在训练集上分类,这些年提出的许多过拟合问题的解决方案;其中dropout具有简单性并取得良好的结果:

Dropout

上图为Dropout的可视化表示,左边是应用Dropout之前的网络,右边是应用了Dropout的同一个网络。

Dropout的思想是训练整体DNN,并平均整个集合的结果,而不是训练单个DNN。DNNs是以概率P舍弃部分神经元,其它神经元以概率q=1-p被保留,舍去的神经元的输出都被设置为零。

引述作者

在标准神经网络中,每个参数的导数告诉其应该如何改变,以致损失函数最后被减少。因此神经元元可以通过这种方式修正其他单元的错误。但这可能导致复杂的协调,反过来导致过拟合,因为这些协调没有推广到未知数据。Dropout通过使其他隐藏单元存在不可靠性来防止共拟合。

简而言之:Dropout在实践中能很好工作是因为其在训练阶段阻止神经元的共适应。

Dropout如何工作

Dropout以概率p舍弃神经元并让其它神经元以概率q=1-p保留。每个神经元被关闭的概率是相同的。这意味着:

假设:

h(x)=xW+bdi维的输入xdh维输出空间上的线性投影;

a(h)是激活函数

在训练阶段中,将假设的投影作为修改的激活函数:

其中D=(X1,...,Xdh)是dh维的伯努利变量Xi,伯努利随机变量具有以下概率质量分布:

其中k是可能的输出。

将Dropout应用在第i个神经元上:

其中P(Xi=0)=p

由于在训练阶段神经元保持q概率,在测试阶段必须仿真出在训练阶段使用的网络集的行为。

为此,作者建议通过系数q来缩放激活函数:

训练阶段

测试阶段

Inverted Dropout

与dropout稍微不同。该方法在训练阶段期间对激活值进行缩放,而测试阶段保持不变。

倒数Dropout的比例因子为,因此:

训练阶段:

测试阶段

Inverted Dropout是Dropout在各种深度学习框架实践中实现的,因为它有助于一次性定义模型,并只需更改参数(保持/舍弃概率)就可以在同一模型上运行训练和测试过程。

一组神经元的Dropout

n个神经元的第h层在每个训练步骤中可以被看作是n个伯努利实验的集合,每个成功的概率等于p

因此舍弃部分神经元后h层的输出等于:

因为每一个神经元建模为伯努利随机变量,且所有这些随机变量是独立同分布的,舍去神经元的总数也是随机变量,称为二项式:

n次尝试中有k次成功的概率由概率质量分布给出:

当使用dropout时,定义了一个固定的舍去概率p,对于选定的层,成比例数量的神经元被舍弃。

从上图可以看出,无论p值是多少,舍去的平均神经元数量均衡为np

此外可以注意到,围绕在p = 0.5值附近的分布是对称。

Dropout与其它正则化

Dropout通常使用L2归一化以及其他参数约束技术。正则化有助于保持较小的模型参数值。

L2归一化是损失的附加项,其中λ是一种超参数、F(W;x)是模型以及ε是真值y与和预测值y^之间的误差函数。

通过梯度下降进行反向传播,减少了更新数量。

Inverted Dropout和其他正则化

由于Dropout不会阻止参数增长和彼此压制,应用L2正则化可以起到作用。

明确缩放因子后,上述等式变为:

可以看出使用Inverted Dropout,学习率是由因子q进行缩放 。由于q在[0,1]之间,η和q之间的比例变化:

q称为推动因素,因为其能增强学习速率,将r(q)称为有效的学习速率。

有效学习速率相对于所选的学习速率而言更高:基于此约束参数值的规一化可以帮助简化学习速率选择过程。

总结

1 Dropout存在两个版本:直接(不常用)和反转

2 单个神经元上的dropout可以使用伯努利随机变量建模

3 可以使用二项式随机变量来对一组神经元上的舍弃进行建模

4 即使舍弃神经元恰巧为np的概率是低的,但平均上np个神经元被舍弃。

5 Inverted Dropout提高学习率

6 Inverted Dropout应该与限制参数值的其他归一化技术一起使用,以便简化学习速率选择过程

7 Dropout有助于防止深层神经网络中的过度拟合

作者介绍:Paolo Galeone,计算机工程师以及深度学习研究者,专注于计算机视觉问题的研究

Blog:https://pgaleone.eu/

Linkedin:https://it.linkedin.com/in/paolo-galeone-6782b311b

Twitter:https://twitter.com/paolo_galeone

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

  1. 深入解析Dropout

    过拟合是深度神经网(DNN)中的一个常见问题:模型只学会在训练集上分类,这些年提出的许多过拟合问题的解决方案:其中dropout具有简单性并取得良好的结果: Dropout 上图为Dropout的可视 ...

  2. vue组件、数据解析的实现思想猜想与实践

    Vue的全局组件,在注册后,可在全局范围内无限次使用,猜想是利用了闭包"可以保持形参"的特性,使初始化时的作用域得意保存,下面用原生js和部分jquery代码模拟了数据解析和组件渲 ...

  3. SpringBoot源码解析:AOP思想以及相应的应用

    spring中拦截器和过滤器都是基于AOP思想实现的,过滤器只作用于servlet,表现在请求的前后过程中:拦截器属于spring的一个组件,由spring管理, 可以作用于spring任何资源,对象 ...

  4. U3D 飞机大战(MVC模式)解析--面向对象编程思想

    在自己研究U3D游戏的时候,看过一些人的简单的游戏开发视频,写的不错,只是个人是java web 开发的人,所以结合着MVC思想,对游戏开发进行了一番考虑. 如果能把游戏更加的思想化,分工化,开发便明 ...

  5. CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏

    CASE函数   作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...

  6. hadoop MapReduce辅助排序解析

    1.数据样本,w1.csv到w5.csv,每个文件数据样本2000条,第一列是年份从1990到2000随机,第二列数据从1-100随机,本例辅助排序目标是找出每年最大值,实际上结果每年最大就是100, ...

  7. [深入理解Android卷一全文-第七章]深入理解Audio系统

    由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版,而知识的传播不应该由于纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容. ...

  8. 前向纠错码(FEC)的RTP荷载格式

    http://www.rosoo.net/a/201110/15146.html 本文档规定了一般性的前向纠错的媒体数据流的RTP打包格式.这种格式针对基于异或操作的FEC算法进行了特殊设计,它允许终 ...

  9. 【转载】为什么我的网站加www是打不开的呢

    在访问网站的过程中,我们发现有些网站访问不带www的主域名可以正常访问,反而访问加www的域名打不开,那为什么有的网站加www是打不开的呢?此情况很大可能是因为没有解析带www的域名记录或者主机Web ...

随机推荐

  1. PHP操作多进程

    在以往的开发项目中,要操作进程就会使用PHP自带的pcntl拓展.但是pcntl存在着许多的不足: pcntl没有提供进程间通信的功能 pcntl不支持重定向标准输入和输出 pcntl只提供了fork ...

  2. 如何使用Visual Studio调试C#程序

    当代码不能正常运行时,可以通过调试定位错误.常用的程序调试操作包括设置断点.开始.中断和停止程序的执行.单步执行程序以及使程序运行到指定的位置.下面将对这几种常用的程序调试操作进行详细地介绍. 1.断 ...

  3. 省市区县的sql语句——区县

    DROP TABLE IF EXISTS `area`; CREATE TABLE `area` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `code` va ...

  4. js 如何给标签增加属性

    <html> <head> <meta charset="UTF-8"> <title></title> </he ...

  5. 【sqli-labs】 less27a GET- Blind based -All you Union&Select Belong to us -Double Quotes(GET型基于盲注的去除了Union和Select的双引号注入)

    和less 27一样,单引号换双引号 http://192.168.136.128/sqli-labs-master/Less-27a/?id=0"%a0uNion%a0sElect%a01 ...

  6. HDU_5833_高斯消元

    参考自:http://www.cnblogs.com/flipped/p/5771492.html 自己做的时候不知道如何求种数.看了题解,感觉思路灰常巧妙.同时也感觉这是一道好题. 精髓在于转化为线 ...

  7. String类的特点和使用步骤

    概述 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 类 String 中包括用于检查各个字符串的 ...

  8. ESP32 开发笔记(十二)LittlevGL 添加自定义字体和物理按键

    LittlevGL 添加自定义字体获取字库 ttf 文件可以从一些网站上获取字库文件,比如请注意字体许可证 生成源文件使用 LittlevGL 提供的字库文件转换工具,将 ttf 字库文件转换为源文件 ...

  9. 一键安装本地yum仓库脚本

    #!/bin/bash#By:zhaocheng#Date:2019-01-18#Version v1 [ -d /media/cdrom ] || mkdir /media/cdrom[ -d /m ...

  10. git 还原到某次commit

    不可逆提交 一,reset 1.git log查看提交记录 git log 2.选择某次提交的commit ID,ctrl+c复制提交ID 3.使用git reset –hard 还原到某一次提交 g ...