提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:龚雪|2017-03-20 16:42:37.000|阅读 766 次
概述:用Dropout解决深度神经网络中过拟合问题!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
过拟合(Overfitting)是深度神经网络(DNN)中的一个重要的问题:该模型学习仅对训练集合进行分类,使其自身适应于训练示例,而不是学习能够对通用实例进行分类的决策边界。近些年,研究者们已经提出了许多过拟合问题的解决方案,其中,Dropout因为其简明且以经验为基础的良好结果而占据主流。
Dropout的视觉表示,如上图所示。图(a)是应用Dropout之前的神经网络,图(b)是应用Dropout之后同样的神经网络。参数经过学习后,左边的网络是在训练和测试时使用同样的网络结构。
Dropout的思想是训练DNNs的整体然后平均整体的结果,而不是训练单个DNN。DNNs以概率p丢弃神经元,因此保持其它神经元概率为q=1-p。当一个神经元被丢弃时,无论其输入及相关的学习参数是多少,其输出都会被置为0。丢弃的神经元在训练阶段的前向传播和后向传播阶段都不起作用:因为这个原因,每当一个单一的神经元被丢弃时,训练阶段就好像是在一个新的神经网络上完成。
引用自Dropout作者:
在标准神经网络中,每个参数接收的导数表明其应该如何变化才能使最终损失函数降低,并给定所有其它神经网络单元的状态。因此神经单元可能以一种可以修正其它神经网络单元的错误的方式进行改变。而这就可能导致复杂的共适应(co-adaptations)。由于这些共适应现象没有推广到未见的数据,将导致过拟合。我们假设对每个隐藏层的神经网络单元,Dropout通过使其它隐藏层神经网络单元不可靠从而阻止了共适应的发生。因此,一个隐藏层神经元不能依赖其它特定神经元去纠正其错误。
简而言之:Dropout在实践中表现良好,是因为它在训练阶段阻止了神经元的共适应。现在我们对Dropout有了直观的想法,让我们进行更深层次的分析。
如前所述,Dropout以概率p关闭神经元,相应的,以大小为q=1-p的概率开启其他神经元。每个单个神经元有同等概率被关闭。这意味着:
给定
对Dropout的应用建模是可行的,仅仅对于训练阶段来说,给定的投影作为一个修改的激活函数:
其中,
是伯努利向量Xi的一个dh维的向量。
一个伯努利随机变量有以下概率的质量分布:
其中,k是可能的输出结果。
显然,这个随机变量完美的模拟了在单个神经元上Dropout的过程。事实上,神经元被以概率 p = P(k=1) 被关闭,否则保持不变。
它可以看作Dropout在第i个神经元上的应用:
其中,P(Xi=0)=p.
因为在训练阶段,一个神经元以概率q保持;在测试阶段,我们必须模拟在训练阶段使用的神经网络的整体的行为。为此,作者建议在测试阶段将激活函数以q为比例系数进行缩放,以便将训练阶段产生的预期输出作为测试阶段使用的单个输出。因此:
训练阶段:
测试阶段:
一个略有不同的方法是使用反向Dropout(Inverted Dropout)。该方法包括在训练阶段缩放激活函数,从而使得其测试阶段保持不变。比例因子是保持概率的倒数:
因此,
训练阶段:
测试阶段:
反向Dropout有助于只定义一次模型并且只改变了一个参数(保持/丢弃概率)以使用同一模型进行训练和测试。相反,直接Dropout,迫使你在测试阶段修改网络。因为如果你不乘以比例因子q,神经网络的输出将产生更高的相对于连续神经元所期望的值(因此神经元可能饱和):这就是为什么反向Dropout是更加常见的实现方式。
我们可以很容易的注意到,具有n个神经元的层h,在单个训练步骤中,可以被看作n个伯努利试验的集合,每个实验成功的概率等于p。因此,层h具有被丢弃的神经元的输出等于:
由于每个神经元现在被建模为伯努利随机变量,并且所有这些随机变量是独立分布的,所以丢弃的神经元的总数也是随机变量,称为二项式(Binomial):
其中,在n个实验中获得k次成功的概率由概率质量分布给出:
这个公式很容易理解:
pk(1-p)n-k 是n个实验中获得k个成功的单个序列的概率,因此是n-k次失败。
是用于计算可能的成功序列的数量的二项式系数。
我们现在可以使用这个分布来分析丢弃指定数量神经元的概率。当使用Dropout时,我们为选定的层定义一个固定的Dropout概率p,我们期望从中降低一定比例数量的神经元。例如,如果我们应用Dropout的层具有n=1024个神经元,p=0.5,我们期望512个被丢弃,让我们来验证:
因此,准确丢弃np=512个神经元的概率只有0.025!Python3可以帮助我们可视化不同p值和固定值n的神经元,代码已注释。
二项分布在np附近时非常尖锐
从上图我们可以看出,无论p值是多少,平均下降的神经元数量都与np成正比,事实上:
此外,我们可以注意到,函数分布在p=0.5附近几乎是对称的,并且随着与p=0.5距离的增加,丢弃np神经元的概率增加。为补偿激活值,缩放因子已被作者添加,因为他们期望在训练阶段期间仅保持比例为1-p的神经元百分比。在训练阶段,相反,100%的神经元保持开启状态,因此该值应相应地按比例缩小。
Dropout通常与L2正则化和其它参数约束技术(如Max Norm1)一起使用。正则化有助于保持模型参数值在可控范围内增长。简而言之,L2正则化是损失的附加项,其中λ∈[0,1]是成为正则化强度的超参数,F(W;x)是模型函数,E是实际值y与预测值y^之间的误差函数。
我们很容易理解,当通过梯度下降进行反向传播时,其更新量减少。如果η是学习速率,则参数w∈W的更新量为
由于Dropout不会阻止参数增长,应用L2正则化(或限制参数值的任何其它正则化方法)会有作用。添加缩放因子,上述方程变为:
可以容易的看出,当使用反向Dropout时,学习速率被缩放至q的因子。由于q具有在[0,1]之间的值,η和q之间的比率可以在如下区间变化:
因此,我们将其称q为推动因子(boosting factor),因为它推动了学习速率。此外,我们将r(q)称为有效学习速率(effective learning rate)。总之,有效学习速率相对于所选择的学习速率更高:由于这个原因,限制参数值的正则化可以帮助简化学习速率选择过程。
1、Dropout有两种方式:直接Dropout(不常用)和反向Dropout。
2、可以使用伯努利随机变量来对单个神经元上的Dropout进行建模。
3、可以使用二项式随机变量来对一组神经元上的Dropout进行建模。
4、即使准确降低np神经元的概率很低,np神经元在具有n个神经元的神经网络层上也会平均下降。
5、反向Dropout可以提高学习速率。
6、反向Dropout应该与限制参数值的其他归一化技术一起使用,以便简化学习速率选择过程。
7、Dropout有助于在深度神经网络中防止过拟合。
重大喜讯,慧都学院将在3月底有一堂《基于图的大数据分析》免费公开课,点击立即报名。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢