卷积神经网络CNN(2)—— BN(Batch Normalization) 原理与使用过程详解[通俗易懂]

卷积神经网络CNN(2)—— BN(Batch Normalization) 原理与使用过程详解[通俗易懂]BatchNormalization是由google提出的一种训练优化方法。网上对BN解释详细的不多,大多从原理上解释,没有说出实际使用的过程,这里从what,why,how三个角度去解释BN。

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

前言

Batch Normalization是由google提出的一种训练优化方法。参考论文:Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift
网上对BN解释详细的不多,大多从原理上解释,没有说出实际使用的过程,这里从what, why, how三个角度去解释BN。

What is BN

Normalization是数据标准化(归一化,规范化),Batch 可以理解为批量,加起来就是批量标准化。
先说Batch是怎么确定的。在CNN中,Batch就是训练网络所设定的图片数量batch_size。

Normalization过程,引用论文中的解释:
这里写图片描述
输入:输入数据x1…xm(这些数据是准备进入激活函数的数据)
计算过程中可以看到,
1.求数据均值
2.求数据方差
3.数据进行标准化(个人认为称作正态化也可以)
4.训练参数γ,β
5.输出y通过γ与β的线性变换得到新的值
在正向传播的时候,通过可学习的γ与β参数求出新的分布值

在反向传播的时候,通过链式求导方式,求出γ与β以及相关权值
这里写图片描述

Why is BN

解决的问题是梯度消失与梯度爆炸。
关于梯度消失,以sigmoid函数为例子,sigmoid函数使得输出在[0,1]之间。
这里写图片描述
事实上x到了一定大小,经过sigmoid函数的输出范围就很小了,参考下图
这里写图片描述
如果输入很大,其对应的斜率就很小,我们知道,其斜率(梯度)在反向传播中是权值学习速率。所以就会出现如下的问题,
这里写图片描述
在深度网络中,如果网络的激活输出很大,其梯度就很小,学习速率就很慢。假设每层学习梯度都小于最大值0.25,网络有n层,因为链式求导的原因,第一层的梯度小于0.25的n次方,所以学习速率就慢,对于最后一层只需对自身求导1次,梯度就大,学习速率就快。
这会造成的影响是在一个很大的深度网络中,浅层基本不学习,权值变化小,后面几层一直在学习,结果就是,后面几层基本可以表示整个网络,失去了深度的意义。

关于梯度爆炸,根据链式求导法,
第一层偏移量的梯度=激活层斜率1x权值1x激活层斜率2x…激活层斜率(n-1)x权值(n-1)x激活层斜率n
假如激活层斜率均为最大值0.25,所有层的权值为100,这样梯度就会指数增加。

How to use BN

先解释一下对于图片卷积是如何使用BN层。
这里写图片描述
这是文章卷积神经网络CNN(1)中5×5的图片通过valid卷积得到的3×3特征图(粉红色)。这里假设通道数为1,batch为4,即大小为[4,1,3,3] (n,c,h,w)。特征图里的值,作为BN的输入,这里简化输出只有一个channel,也就是这一个4x3x3个数值通过BN计算并保存均值与方差,并通过当前均值与方差计算归一化的值,最后根据γ,β以及归一化得值计算BN层输出。假如输入是3个通道,就是在通道的维度上进行bn,所以会有3个γ,β参数。

这里需要着重说明的细节:
网络训练中以batch_size为最小单位不断迭代,很显然,新的batch_size进入网络,由于每一次的batch有差异,实际是通过变量,以及滑动平均来记录均值与方差。训练完成后,推断阶段时通过γ, β,以及记录的均值与方差计算bn层输出。

结合论文中给出的使用过程进行解释
这里写图片描述
输入:待进入激活函数的变量
输出:
1.对于K个激活函数前的输入,所以需要K个循环。每个循环中按照上面所介绍的方法计算均值与方差。通过γ,β与输入x的变换求出BN层输出。
2.在反向传播时利用γ与β求得梯度从而改变训练权值(变量)。
3.通过不断迭代直到训练结束,得到γ与β,以及记录的均值方差。
4.在预测的正向传播时,使用训练时最后得到的γ与β,以及均值与方差的无偏估计,通过图中11:所表示的公式计算BN层输出。
至此,BN层的原理与使用过程就解释完毕,给出的解释都是本人觉得值得注意或这不容易了解的部分,如有錯漏,请指正。
BN层正向传播之前存在勘误,博文已经过修改

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 《廖雪峰python3教程》| 书评 + 学习笔记干货

    《廖雪峰python3教程》| 书评 + 学习笔记干货如果你正在考虑自己适不适合读《廖雪峰python3教程》,不妨看看我的评价~我把知识盲点整理成了一份清单,你可以自测,然后参考我的学习笔记哦~

    2025年6月13日
    4
  • linux 删除 软连接(shell创建软连接)

    语法ln(选项)源文件目标文件1、区分符号连接“源文件”可以是文件或者目录硬连接,“源文件”参数只能是文件2、创建软链接ln–s/source/target参数:-s或——symbolic:对源文件建立符号连接,而非硬连接;3、删除软连接rm–rf/target注意:不要在后文件名后面加斜杆“/”否则会删除文件夹的内容参考:ht…

    2022年4月14日
    1.5K
  • 【已解决】Redis连接——Could not connect to Redis at 127.0.0.1:6379: Connection refused[通俗易懂]

    【已解决】Redis连接——Could not connect to Redis at 127.0.0.1:6379: Connection refused[通俗易懂]相信很多人很可能刚上手使用Redis时,很容易遇到的问题就是CouldnotconnecttoRedisat127.0.0.1:6379:Connectionrefused。由于只是记录bug解决,所以开门见山,宜春不多哔哔…其实原因很简单,这个问题一般是关闭了服务端导致客户端打不开,最简单快捷解决办法就是先开启服务端,再去连接客户端!如下:开启服务端需要先配置(redis.con…

    2022年6月6日
    1.1K
  • 智能视频识别技术的发展现状「建议收藏」

    智能视频识别技术的发展现状「建议收藏」一、智能视频分析技术应用现状  作为强化视频监控系统应用的一门主要技术——视频智能分析技术,近几年一直得到业界的广泛的关注,其通过对视频内容的分析,将客户所关注的目标从监控背景中分离出来,按照目标的移动方向、速度、时间等参数和某些行为特征进行关联,从而达到主动监控防御的目的。按说这一技术的大规模推广应用对于提高当前治安监控系统的利用效率将起到很大的作用,但实际上却没有得到有效的推广,所谓“叫好不叫座”。笔者认为,造成这一现象的主要原因有以下几个方面:【您可以是大型系统集成商、可以是相关贸易的经销商.

    2022年4月30日
    78
  • winhex哈希值校验_文件的哈希值不在指定的目录中

    winhex哈希值校验_文件的哈希值不在指定的目录中Certutil是一个windows预装的CLI程序,主要作用是转储和显示证书颁发机构(CA),配置信息,证书服务,CA组件的备份和还原以及验证证书、密钥对和证书链,它作为证书服务的一部分安装。可用于校验文件MD5、SHA1、SHA256,下载恶意文件和免杀。这里记录如何使用这个程序校验文件,网上很多资源的下载很多都会提供文件的md5,SHA256等等之类的哈希值,便于下载者校验文件是否…

    2025年11月2日
    3
  • IDEA和MySQL数据库建立连接

    IDEA和MySQL数据库建立连接IDEA和MySQL数据库建立连接操作步骤如下:1.打开IDEA软件,点击顶部导航栏的View–>ToolWindows–>Database(或者直接点击右侧边上的Database),在右侧打开的Database框里,点击左上角的+–>DataSource–>MySQL。2.填入自己的MySQL数据库信息(账户默认root,密码是自己设置的),Database里面填写要连接的数据库名称,填好后点击下方的TestConnection。3.这

    2022年7月19日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号