深度学习网络大杀器之Dropout——深入解析Dropout
首发地址:https://yq.aliyun.com/articles/68901
更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud
过拟合是深度神经网(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+b,di维的输入x在dh维输出空间上的线性投影;
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个神经元被舍弃。
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
以上为译文
本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。
文章原标题《Analysis of Dropout》,作者:Paolo Galeone,译者:海棠,审校:我是主题曲哥哥。
文章为简译,更为详细的内容,请查看原文
翻译者: 海棠
Wechat:269970760 weibo:Uncle_LLDEmail:duanzhch@tju.edu.cn
微信公众号:AI科技时讯
# 【深度学习】:《PyTorch入门到项目实战》第九天:Dropout实现 上一章我们介绍了L2正则化和权重衰退,在深度学习中,还有一个很实用的方法——Dropout,能够减少过拟合问题。之前我们介绍了我们的目的是要训练一种泛化的模型,那么就要求模型的鲁棒性较强。一个还不错的尝试是在训练神经网络时,让模型的结果不那么依赖某个神经元,因此在训练神经网络过程中,我们每次迭代将隐藏层的一些神经元随机丢弃掉,这样就不会使得我们的模型太依赖某一个神经元,从而使得我们的模型在未知的数据集上或许会有更好的泛化能力。下面我们具体来看dropout的原理。
深度学习入门基础CNN系列——批归一化(Batch Normalization)和丢弃法(dropout) 批归一化方法(Batch Normalization,BatchNorm)是由Ioffe和Szegedy于2015年提出的,已被广泛应用在深度学习中,其目的是对神经网络中间层的输出进行标准化处理,使得中间层的输出更加稳定。丢弃法(Dropout)是深度学习中一种常用的抑制过拟合的方法,其做法是在神经网络学习过程中,随机删除一部分神经元。训练时,随机选出一部分神经元,将其输出设置为0,这些神经元将不对外传递信号。
相关文章
- 【华为云技术分享】《跟唐老师学习云网络》 - Veth网线
- 《跟唐老师学习云网络》 -第4篇 router路咋走啊
- 《跟唐老师学习云网络》 - 第2篇 我的网络概念
- 【刷题】面筋-网络-HTTP的请求类型和状态码
- 十个不错的 Linux 网络监视工具
- 2022年川渝网络与信息安全职业技能竞赛-个人初赛writeup
- 【学习总结】网络-TCP拥塞控制
- Ubuntu 10.1 server 网络配置
- 机器学习笔记 - 目标检测网络CenterNet
- Android开发学习笔记(八)网络布局GridLayout
- LVS的跨网络DR实现
- Swift学习笔记(2)网络数据交换格式(XML,JSON)解析 [iOS实战 入门与提高卷]
- 【华为云技术分享】《跟唐老师学习云网络》 - Veth网线
- 《跟唐老师学习云网络》 - 什么是VLAN和VXLAN
- 【华为云技术分享】《跟唐老师学习云网络》—我的网络概念
- 基于Bi-LSTM深度学习网络的遥感数据分类matlab仿真
- ios学习网络------4 UIWebView以三种方式中的本地数据
- hping3网络延迟检测工具——筑梦之路
- 深度学习 dns tunnel检测 使用统计特征 全连接网络——精度99.8%
- Docker----Docker容器跨网络互联
- HTTP 学习,程序员不懂网络怎么行,一篇HTTP入门 不收藏都可惜
- 网络分层的真实含义是什么?
- 1.定义ddos僵尸网络