BN(Batch Normalization)层的详细介绍
1.BN层的前世:LRN层( Local Response Normalization)
没有提出BN层之前,Alexnet网络使用LRN层来处理归一化的。
LRN(局部响应归一化)
- b x , y i b^i_{x,y} bx,yi是归一化后的值,i是通道的位置,代表更新第几个通道的值,x与y代表待更新像素的位置。
- a x , y i a^i_{x,y} ax,yi 是输入值,是激活函数Relu的输出值
- k、alpha、beta、n/2 都是自定义系数,可以先不用理会有什么用。
- N是总的通道数,不同通道累加的平方和。 累加多少个通道的像素值呢?这个是取决于自定义系数 n/2
sqr_sum[a, b, c, d] = sum(input[a,b, c, d - depth_radius : d + depth_radius + 1] ** 2)
output = input / (bias +alpha * sqr_sum) ** beta
LRN现在用的很少了
2.BN层的引入原因
参考博客:https://www.cnblogs.com/guoyaohua/p/8724433.html
BN的提出是为了解决“Internal Covariate Shift”问题的。
机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。
但对于深度学习这种包含很多隐层的网络结构,在训练过程中,因为各层参数不停在变化,所以每个隐层都会面临covariate shift的问题,也就是在训练过程中,隐层的输入分布老是变来变去,这就是所谓的“Internal Covariate Shift”,Internal指的是深层网络的隐层,是发生在网络内部的事情,而不是covariate shift问题只发生在输入层。
3.BN层的本质
BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前的激活输入值(就是那个x=WU+B,U是输入)随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因,而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。
BN(Batch Normalization)层的详细介绍相关推荐
- 透彻理解BN(Batch Normalization)层
什么是BN Batch Normalization是2015年论文<Batch Normalization: Accelerating Deep Network Training by Redu ...
- 什么是BN(Batch Normalization)
什么是BN(Batch Normalization)? 在之前看的深度学习的期刊里,讲到了BN,故对BN做一个详细的了解.在网上查阅了许多资料,终于有一丝明白. 什么是BN? 2015年的论文< ...
- 残差结构Residual、BN(Batch Normalization)
残差结构Residual 初次接触残差结构是在ResNets的网络中,可以随着网络深度的增加,训练误差会越来越多(被称为网络退化)的问题,引入残差结构即使网络再深吗,训练的表现仍表现很好.它有助于 ...
- 理解BN(Batch Normalization)
https://www.cnblogs.com/king-lp 转自:参数优化方法 1. 深度学习流程简介 1)一次性设置(One time setup) - 激活函数(Activ ...
- BN(Batch Normalization)
批量归一化(BN: Batch Normalization) batch size=8样本,每个样本4维度,左边是数字是第l层输出,即每个神经元输出8个响应值,再经过计算均值,方差后: 值都在0附近, ...
- 『教程』Batch Normalization 层介绍
原文链接 思考 YJango的前馈神经网络--代码LV3的数据预处理中提到过:在数据预处理阶段,数据会被标准化(减掉平均值.除以标准差),以降低不同样本间的差异性,使建模变得相对简单. 我们又知道神经 ...
- 卷积神经网络CNN(2)—— BN(Batch Normalization) 原理与使用过程详解
前言 Batch Normalization是由google提出的一种训练优化方法.参考论文:Batch Normalization Accelerating Deep Network Trainin ...
- BN(Batch Normalization) 原理与使用过程详解
论文名字:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 论 ...
- 当卷积层后跟batch normalization层时为什么不要偏置b
起因 之前使用的是inception-v2模型,在v2中,标准的卷积模块为: * conv_w_b->bn->relu ->pooling* 即,在v2中,尽管在卷积之后.激活函数之 ...
- 批标准化(Batch Normalization )最详细易懂的解释
12. 批标准化(Batch Normalization ) 大纲:Tips for Training Deep Network Training Strategy: Batch Normalizat ...
最新文章
- 【干货】APP产品处理加载机制和刷新机制的交互方法解析
- 警笛声c语言程序,PIC警笛声音的程序
- 建立Vue脚手架的必要性
- 浅析C语言中assert的用法(转)
- 力扣Java解数独_LeetCode 力扣 37. 解数独
- IDC敲黑板啦:未来企业IT以混合云为主
- 0.07 秒启动一个 SpringBoot 项目!
- android 模拟crash_Android 收集Crash信息及用户操作步骤
- C语言-郝斌笔记-007是否为素数
- 从腾讯云迁移到腾讯云,开心消消乐的云端迁移战事
- 个人信用报告,有这五种方式可查!
- scala时间处理-获取今天日期,昨天日期,本周时间,本月时间,时间戳转换日期,时间比较
- endnote x9打开闪退_Endnote X9 详细教程
- php解析其他php文件_PHP Include 文件
- 2017多校第4场 HDU 6078 Wavel Sequence DP
- 竟还有如此搞笑的代码注释,我笑喷了
- 第23天:如何使用带有哈利·波特PortKey的ARKit和Unity构建应用程序
- buu-[ACTF新生赛2020]rome
- Linux上使用ZFS
- RK3399 Android7.1设置fusb302或ET7301的PD协商电压和电流
热门文章
- 快速开发app,这个快速开发框架,整合PC、移动端开发,让开发更畅快!
- SAP那些事-实战篇-22-关于公司间业务的总结
- bootcamp opencore_OpenCore Configurator for Mac(黑苹果系统引导工具)
- 【邢不行|量化小讲堂系列09-Python量化入门】通过逐笔数据计算主力资金流数据
- 向量的点乘 a·b 和叉乘 a×b
- 输出1900到2000年的所有闰年
- 创新技术简化施工,助高速公路穿越海峡
- 武穴中学2021高考成绩查询,重磅!湖北2019年高考分数线公布!武穴文理科第一名揭榜!附网上填报志愿时间...
- JavaScript 使用canvas绘制圆角矩形边框
- 嵌入式linux系统前景,嵌入式前景怎么样?是否已经饱和?