首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

深度学习机器学习理论知识:范数、稀疏与过拟合合集(5)Dropout原理,操作实现,为什么可以缓解过拟合,使用中的技巧

  • 25-03-03 18:01
  • 3026
  • 5171
blog.csdn.net

范数、稀疏与过拟合合集(1)范数的定义与常用范数介绍
范数、稀疏与过拟合合集(2)有监督模型下的过拟合与正则化加入后缓解过拟合的原理
范数、稀疏与过拟合合集(3)范数与稀疏化的原理、L0L1L2范数的比较以及数学分析
范数、稀疏与过拟合合集(4)L2范数对condition number较差情况的缓解
范数、稀疏与过拟合合集(5)Dropout原理,操作实现,为什么可以缓解过拟合,使用中的技巧

1、背景介绍:分布式特征表达

分布式表征(Distributed Representation),是人工神经网络研究的一个核心思想。简单来说,就是当我们表达一个概念时,神经元和概念之间不是一对一对应映射(map)存储的,它们之间的关系是多对多。具体而言,就是一个概念可以用多个神经元共同定义表达,同时一个神经元也可以参与多个不同概念的表达,只不过所占的权重不同罢了。

举例,对于“小红汽车”这个概念,如果用分布式特征地表达,那么就可能是一个神经元代表大小(形状:小),一个神经元代表颜色(颜色:红),还有一个神经元代表车的类别(类别:汽车)。只有当这三个神经元同时被激活时,就可以比较准确地描述我们要表达的物体。

分布式表征表示有很多优点,其中一点是当部分神经元发生故障时,信息的表达不会出现覆灭性的破坏。比如,我们常在影视作品中看到这样的场景,仇人相见分外眼红,一人(A)发狠地说,“你化成灰,我都认识你(B)!”这里是说,当事人B外表变了很多(对于识别人A来说,B在其大脑中的信息存储是残缺的),但没有关系,只要B的部分核心特征还在,那A还是能够把B认得清清楚楚、真真切切!

利用神经网络的分布式特征表达**(只要能保留核心特征)**,既可以实现成功完成任务(例如成功识别图片为猫),还可以用来阻止过拟合的发生,分布式特征表达可称为Dropout的来源。

2、Overfitting举例

Overfitting 也被称为过度学习,过度拟合。 它是机器学习中常见的问题。 举个Classification(分类)的例子。

image-20210127192151834

图中黑色曲线是正常模型,绿色曲线就是overfitting模型。尽管绿色曲线很精确的区分了所有的训练数据,但是并没有描述数据的整体特征,对新测试数据的适应性较差。

3、对过拟合的解决方法

方法一:

增加数据量, 大部分过拟合产生的原因是因为数据量太少了。如果我们有成千上万的数据, 更高维的、更加符合所有数据的规律会被发现,绿色的也会慢慢被拉直, 变得没那么扭曲 。

方法二:

运用正则化,L1, L2 regularization 等等。 前几篇blog中有叙述。

方法三:

专门用在神经网络的正规化的方法, 叫作dropout。在训练的时候,我们随机忽略掉一些神经元和神经联结 , 是这个神经网络变得”不完整”。每次都用一个不完整的神经网络训练。

4、Dropout

4.1 相关论文

Srivastava等大牛在2014年的论文《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》提出了Dropout正则化。

4.2 Dropout的效果:

网络对某个神经元的权重变化更不敏感,以至于达到防止参数过分依赖训练数据的目的,增加参数对数据集的泛化能力。减少过拟合,增加泛化能力。

4.3 Dropout实现操作说明

Dropout的意思是:每次训练时随机忽略一部分神经元,这些神经元dropped-out了。换句话讲,这些神经元在正向传播时对下游的启动影响被忽略,反向传播时也不会更新权重。

神经网络的所谓“学习”是指,让各个神经元的权重符合需要的特性。不同的神经元组合后可以分辨数据的某个特征。每个神经元的邻居会依赖邻居的行为组成的特征,如果过度依赖,就会造成过拟合。

如果一次训练中随机拿走一部分神经元,那么剩下的神经元就需要补上消失神经元的功能。

到第二次再随机忽略另一些, 变成另一个不完整的神经网络。

整个网络变成很多独立网络(对同一问题的不同解决方法)的合集。

有了这些随机 drop 掉的规则,我们可以想象其实每次训练的时候,我们都让每一次预测结果都不会依赖于其中某部分特定的神经元。像 L 1 L_1 L1​范数, L 2 L_2 L2​范数正则化一样,过度依赖的 W W W,也就是训练参数的数值会很大, L 1 L_1 L1​范数、 L 2 L_2 L2​范数会惩罚这些大的 参数。Dropout 的做法是从根本上让神经网络没机会过度依赖。

假设我们要训练这样一个神经网络

image-20210127194542637

输入是 x x x输出是 y y y,正常的流程是:我们首先把 x x x通过网络前向传播,然后与 y y y进行计算出误差,后把误差反向传播以决定 如何更新参数让网络进行学习。使用dropout之后过程变成:

  • 首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变(下图中虚线为部分临时被删除的神经元)

    image-20210127194745379

  • 然后把输入 x x x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后就按照随机梯度下降法更新,只更新没有被删除的神经元中对应的参数 ( w , b ) (w,b) (w,b)。

  • 然后继续重复这一过程:

  • 恢复被删掉的神经元(此时 被删除的神经元 保持原样(即为更新前的数值),而没有被删除的神经元已经有所更新)

    从隐藏神经元的参数集合中随机圈定的一个一定大小的子集(这个子集的大小是根据参数自己设置的)临时删除掉(备份被删除神经元的参数,他们只是不参加本次训练)。

    对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数 ( w , b ) (w,b) (w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果

5、Dropout为什么可以解决过拟合呢?

角度1:数据扩充层面

对于每一个dropout后的网络,进行训练时,相当于做了Data Augmentation。

对于某一层,dropout一些单元后,形成的结果是(1.5,0,2.5,0,1,2,0),其中0是被drop的单元,也就相当于说对于后面的层来说,多训练了这种情况下的数据。这样每一次dropout其实都相当于增加了样本。

角度2:模型层面

在较大程度上减小了网络的大小:在这个“残缺”的网络中,让神经网络学习数据中的局部特征(即部分分布式特征),但这些特征也足以进行输出正确的结果。相当于说减少了参数试图获得一样的性能。减少了过拟合的可能。

角度3:取平均的思路

先回到正常的模型(没有dropout),我们用相同的训练数据去训练5个不同的神经网络,一般会得到5个不同的结果,此时我们可以采用 “5个结果取均值”或者“多数取胜的投票策略”去决定最终结果。例如 3个网络判断结果为数字9,那么很有可能真正的结果就是数字9,其它两个网络给出了错误结果。

Dropout思想类似于集成学习中的Bagging思想:由学习阶段可知,每一次训练都会按一定的比例来随机保留部分神经元,这意味着每次迭代过程中,会随机删除一些神经元,也就相当于说训练多个"残缺"的神经网络中,并且每次都是进行随机的参数选择(这里随机参数选择也就意味着随机选择表达的特征)。整个dropout过程就相当于对很多个不同的神经网络取平均。

这种“综合起来取平均”的策略通常可以有效防止过拟合问题。因为不同的网络可能产生不同的过拟合,取平均则有可能让一些互为“反向”的拟合相互抵消,这样在整体上就会减少过拟合。

角度4:减少共适应关系

减少神经元之间复杂的共适应关系: 因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况。 迫使网络去学习更加鲁棒的特征 (这些特征在其它的神经元的随机子集中也存在)。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的模式(鲁棒性)。(这个角度看 dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高)

角度5:优胜劣汰,进化适应

Dropout类似于性别在生物进化中的角色:物种为了生存往往会倾向于适应这种环境,环境突变则会导致物种难以做出及时反应,性别的出现可以繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝。 当地球都是海洋时,人类是不是也进化出了再海里生活的能力呢?

6、使用Dropout正则化的技巧

原论文对很多标准机器学习问题做出了比较,并提出了下列建议:

  • Dropout概率不要太高,从20%开始,试到50%。太低的概率效果不好,太高有可能欠拟合。
  • 网络要大。更大的网络学习到不同方法的几率更大。
  • 每层都做Dropout,包括输入层。效果更好。
  • 学习率(带衰减的)和动量要大。直接对学习率乘10或100,动量设到0。9或0。99。
  • 限制每层的权重。学习率增大会造成权重增大,把每层的模限制到4或5的效果更好。

LAST、参考文献

drop解决过拟合的情况 - 。Tang - 博客园
Neural networks and deep learning
Deep learning:四十一(Dropout简单理解)
深度学习:Dropout解决过拟合问题_Vermont_的博客-CSDN博客
drop解决过拟合的情况_weixin_30839881的博客-CSDN博客
drop out为什么能够防止过拟合 - simple_wxl - 博客园
Dropout如何防止过拟合 - 知乎
过拟合(Overfitting) 与 Dropout

文章知识点与官方知识档案匹配,可进一步学习相关知识
OpenCV技能树OpenCV中的深度学习图像分类26361 人正在系统学习中
注:本文转载自blog.csdn.net的呆呆象呆呆的文章"https://blog.csdn.net/qq_41554005/article/details/113278565"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top