Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >BN层和Dropout层「建议收藏」

BN层和Dropout层「建议收藏」

作者头像
全栈程序员站长
发布于 2022-11-09 06:30:11
发布于 2022-11-09 06:30:11
8550
举报

大家好,又见面了,我是你们的朋友全栈君。

文章目录

BN层

原理和公式

BN层解决内部协变量偏移ICS问题,通过减少内部协变量偏移加快神经网络训练。

z ^ l = γ ∗ z l − μ δ 2 + σ + β \hat{z}^{l} = \gamma * \frac{z^l-\mu}{\sqrt{\delta^2+\sigma}} + \beta z^l=γ∗δ2+σ ​zl−μ​+β

参数量

神经元个数 x 4 (或者 通道数 x 4)

做法

将网络层的输出分布强制转为均值为0,方差为1的分布之后,为了部分还原,又乘以伽马(γ,scale),加上贝塔(β,shift)。

  1. BN为什么要有伽马和贝塔:为了在强制转换之后做一定还原,保持模型原有的表达能力(capacity)
  2. 这样变过来又变回去是不是跟没变一样? 不会跟没变一样, 因为,再变换引入了两个新参数 γ \gamma γ 和 β \beta β。在旧参数中, x 的均值取决于下层神经网络的复杂关联;但在新参数中,均值仅仅由 β \beta β 来确定,去除了与下层计算的密切耦合。新参数可以通过梯度下降来学习,简化了神经网络的训练。
  3. BN如果去掉伽马和贝塔:可能会导致特征分布差异性降低,损坏特征表达,导致模型拟合能力降低,精度下降。但是模型应该也可以收敛。

用法和步骤:

  • BN层一般放在卷积层后,用于重新调整数据分布 (确保网络中的各层即使参数变化,输入/输出的分布也不会发生较大变化)
  • 求batch均值、batch方差
  • 对每个元素进行归一化
  • 尺度缩放和偏移 (变换回数据原始分布,减少),γ代表方差,β代表偏移

优点和缺点

优点

  • 在模型训练过程中,批量归一化利用小批量的均值和标准差,不断调整神经网络的中间输出,使整个神经网络各层的中间输出值更加稳定。
  • 减轻对初始值的依赖
  • 训练更快,可以用更大的学习率
  • 批量归一化有许多有益的副作用,主要是正则化。

缺点

  • batch太小时,计算的均值方差不稳定,例如在线的单例学习
  • 放在激活层之前或者之后

训练和测试时的区别

  1. 训练时,是对每一批的训练数据进行归一化,也即用每一批数据的均值和标准差。 默认track=True,会通过移动平均,记录训练数据的均值和标准差
  2. 测试时,模型训练完成,它的所有参数都确定了,包括均值和标准差, γ \gamma γ和 β \beta β 。如果训练时设置了track=True,保存了移动平均,则直接使用训练时得到的均值和标准差做测试。如果没有,则使用测试时计算的均值、标准差

Dropout

原理

在训练时以一定的概率使神经元失活,实际上就是让对应神经元的输出为0

训练和测试时的区别

  1. 训练和测试时为什么有差异?
  • 训练时神经元有开有关,测试时全开
  1. 如何处理训练和测试时候的不一致性?Dropout 如何平衡训练和测试时的差异?
  • 假设失活概率为 p ,就是这一层中的每个神经元都有p的概率失活,这样在训练和测试时,输出层每个神经元的输入和的期望会有量级上的差异。
  • 因此在训练时还要对bn的输出数据除以(1-p)之后再传给下一层神经元,作为神经元失活的补偿,以使得在训练时和测试时每一层输入有大致相同的期望。
  • 假设BN层输入的期望为a,在不使用dropout的时候,它的期望依旧是a。如果该层进行了dropout, 相当于有p的概率被丢弃,(1-p)的概率被保留,则此层的期望为(1-p)a1+pa0=(1-p)a, 为了保证输入与输出的期望一致,需要在训练的时候,对bn层的输出做:y = y / (1-p) 的处理。

多种类型的dropout: https://mp.weixin.qq.com/s/fTkMNaABWF3h0rpuam1XGw https://blog.csdn.net/songyunli1111/article/details/89071021 https://zhuanlan.zhihu.com/p/61725100

其他:

  • BN层的输出维度:上一层输出是NCHW,BN层的参数维度为

以下内容来自沐神第二版新书: 小结¶

  • 批量归一化在全连接层和卷积层的使用略有不同。
  • 另一方面,”减少内部协变量偏移“的原始动机似乎不是一个有效的解释。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/189530.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月25日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
BN和Dropout在训练和测试时有哪些差别?
本文首先介绍了Batch Normalization和Dropout在训练和测试时的不同点,后通过相关论文的参考讲述了BN和Dropout共同使用时会出现的问题,并给出了两种解决方案,通过阅读本文能够对这两种技术的特性更加清晰。
公众号机器学习与AI生成创作
2021/01/08
3.1K0
BN和Dropout在训练和测试时有哪些差别?
【基础】Dropout和Batch Norm原理与使用
Dropout和Batch Norm都是在深度学习中经常用到的方法,可以有效防止过拟合,增加模型的鲁棒性,提升训练效率。今天和大家分享Dropout和Batch Norm的相关内容。
秋枫学习笔记
2022/09/19
1.3K0
斯坦福CS231n - CNN for Visual Recognition(6)-lecture5预处理、正则化、损失函数
关于数据预处理我们有3种常用的方式,假设数据矩阵XX,假设其尺寸是[N,D][N ,D](NN是数据样本的数量,DD是数据的维度)。
李智
2018/08/03
8970
斯坦福CS231n - CNN for Visual Recognition(6)-lecture5预处理、正则化、损失函数
深度学习(二十九)Batch Normalization 学习笔记
原文地址:http://blog.csdn.net/hjimce/article/details/50866313
GavinZhou
2019/05/26
2910
AlexNet论文阅读
摘要主要介绍了其神经网络的结构——5个卷积层(每个卷积层($convolutional\ layers$)后面都跟有池化层($max-pooling\ layers$))和三个全连接层,最后是一个1000维的softmax。然后作者还提到一个比较有意思的想法:"为了避免全连接层的过拟合,我们采用一种名为$dropout$的正则化方法"
mathor
2019/12/30
4360
AlexNet论文阅读
批量归一化和层归一化_数据归一化公式
本篇博文主要讲解2015年深度学习领域非常棒的一篇文献:《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,这个算法目前已经被大量的应用,最新的文献算法很多都会引用这个算法,进行网络训练,可见其强大之处非同一般啊,采用这个方法网络的训练速度快到惊人啊,感觉训练速度是以前的十倍以上,再也不用担心自己这破电脑每次运行一下,训练一下都要跑个两三天的时间。另外这篇文献跟空间变换网络《Spatial Transformer Networks》的思想神似啊,都是一个变换网络层。
全栈程序员站长
2022/11/07
1.3K0
批量归一化和层归一化_数据归一化公式
来聊聊批归一化BN(Batch Normalization)层
Batch Normalization (BN) 是最早出现的,也通常是效果最好的归一化方式。feature map:
AI算法修炼营
2020/05/08
3.3K0
【AI初识境】深度学习模型中的Normalization,你懂了多少?
Normalization是一个统计学中的概念,我们可以叫它归一化或者规范化,它并不是一个完全定义好的数学操作(如加减乘除)。它通过将数据进行偏移和尺度缩放调整,在数据预处理时是非常常见的操作,在网络的中间层如今也很频繁的被使用。
用户1508658
2019/07/26
1.5K0
【AI初识境】深度学习模型中的Normalization,你懂了多少?
Batch Normalization&Dropout浅析
一. Batch Normalization 对于深度神经网络,训练起来有时很难拟合,可以使用更先进的优化算法,例如:SGD+momentum、RMSProp、Adam等算法。另一种策略则是高改变网络的结构,使其更加容易训练。Batch Normalization就是这个思想。 为什么要做Normalization? 神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch梯度下降),那么网络就要在每
10JQKA
2018/05/09
7230
Batch Normalization&Dropout浅析
李理:卷积神经网络之Dropout
本系列文章面向深度学习研发者,希望通过 Image Caption Generation,一个有意思的具体任务,深入浅出地介绍深度学习的知识。本系列文章涉及到很多深度学习流行的模型,如CNN,RNN/LSTM,Attention等。本文为第10篇。 作者:李理 目前就职于环信,即时通讯云平台和全媒体智能客服平台,在环信从事智能客服和智能机器人相关工作,致力于用深度学习来提高智能机器人的性能。 上文介绍了Batch Normalization技术。Batch Normalization是加速训练收敛速度的非
用户1737318
2018/06/06
1.7K0
Dropout[通俗易懂]
受人类繁衍后代时男女各一半基因进行组合产生下一代的启发,论文(Dropout: A Simple Way to Prevent Neural Networks from Overfitting)提出了Dropout。
全栈程序员站长
2022/09/20
9640
Dropout[通俗易懂]
BN层的作用_bn层加在哪里
(1)加速收敛(2)控制过拟合,可以少用或不用Dropout和正则(3)降低网络对初始化权重不敏感(4)允许使用较大的学习率
全栈程序员站长
2022/11/07
1.7K0
BN层的作用_bn层加在哪里
BN与神经网络调优
我们经常会涉及到参数的调优,也称之为超参数调优。目前我们从第二部分中讲过的超参数有
Lansonli
2021/10/09
3620
学界 | 如何通过方差偏移理解批归一化与Dropout之间的冲突
选自arXiv 作者:Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang 机器之心编译 参与:朱乾树、蒋思源 自批量归一化提出以来,Dropout 似乎就失去了用武之处,流行的深度架构也心照不宣地在批归一化上不采用 Dropout。而近日南京理工大学和清华大学的研究表明 Dropout 在网络测试的时候神经元会产生方差偏移,因而进一步分析与理解如何能避免方差偏移风险,并克服二者组合的局限性。 在批归一化提出之前,Dropout 几乎是所有的最优网络的标配,尽管很简单,但它成
机器之心
2018/05/10
1.2K0
深度学习相关概念:6.批量归一化
  在训练过程中,每层输入的分布不断的变化,这使得下一层需要不断的去适应新的数据分布,这就会让训练变得非常复杂而且缓慢。为了解决这个问题,就需要设置更小的学习率、更严格的参数初始化。通过使用批量归一化(Batch Normalization, BN),在模型的训练过程中利用小批量的均值和方差调整神经网络中间的输出,从而使得各层之间的输出都符合均值、方差相同高斯分布,这样的话会使得数据更加稳定,无论隐藏层的参数如何变化,可以确定的是前一层网络输出数据的均值、方差是已知的、固定的,这样就解决了数据分布不断改变带来的训练缓慢、小学习率等问题。
AiCharm
2023/05/15
5090
深度学习相关概念:6.批量归一化
五万字总结,深度学习基础。「建议收藏」
人工神经网络(Artificial Neural Networks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。
全栈程序员站长
2022/08/31
1K0
五万字总结,深度学习基础。「建议收藏」
2. 神经网络之BN层背景BN使用BN在CNN上的使用。
BN,全称Batch Normalization,是2015年提出的一种方法,在进行深度网络训练时,大都会采取这种算法。 原文链接:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
和蔼的zhxing
2018/09/04
10.7K0
2. 神经网络之BN层背景BN使用BN在CNN上的使用。
深度学习教程 | 网络优化:超参数调优、正则化、批归一化和程序框架
本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整理所得,对应的课程视频可以在这里查看。
ShowMeAI
2022/04/14
6720
深度学习教程 | 网络优化:超参数调优、正则化、批归一化和程序框架
深层神经网络参数调优(二) ——dropout、题都消失与梯度检验
深层神经网络参数调优(二)——dropout、题都消失与梯度检验 (原创内容,转载请注明来源,谢谢) 一、dropout正则化 中文是随机失活正则化,这个是一种正则化的方式,之前学过L1、L2正则化,这个则是另一种思想的正则化。dropout,主要是通过随机减少一些神经元,来实现减少w和b,实现防止过拟合的。 1、主要做法 假设一个概率阈值p,对于神经网络中的所有神经元,在每一次FP、BP的时候,都有p的概率会被保留下来。没有被保留下来的神经元,则不参与本次的运算,即不接收输入,也不输出结果。 2、具体
用户1327360
2018/03/07
2.1K0
深层神经网络参数调优(二) ——dropout、题都消失与梯度检验
机器学习过拟合与欠拟合!
模型的预测误差可以分解为三个部分: 偏差(bias), 方差(variance) 和噪声(noise).
Datawhale
2021/10/13
1.9K0
机器学习过拟合与欠拟合!
推荐阅读
相关推荐
BN和Dropout在训练和测试时有哪些差别?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档