阅读笔记2——BN层(Batch Normalization)

5、BN层的作用及原理? Normalization是数据标准化(归一化,规范化),Batch 可以理解为批量,加起来就是批量标准化。在CNN中,Batch就是训练网络所设定的图片数量batch_size。 作用(归一化至:均值0、方差为1): (1)加速网络收敛速度,可以使用较大的学习率来训练网络 (2)改善梯度弥散 (3)提高网络的泛化能力 (4)BN层一般用在线性层和卷积层后面,而不是放在非线性单元后 因为非线性单元的输出分布形状会在训练过程中变化,归一化无法消除他的方差偏移,相反的,全连接和卷积层的输出一般是一个 阅读详情

一、BN层

1. 背景

  为了追求更高的性能,卷积网络被设计得越来越深,然而网络却变得难以训练收敛与调参。

2. 原因

  浅层网络的微弱变化经过多层线性变换与激活函数后会被放大,改变了每一层的输入分布,造成深层的网络需要不断调整以适应这些分布变化,最终导致模型难以训练收敛。

3. ICS现象

  由于网络中参数变化导致的内部节点数据分布发生变化的现象被称为ICS(Internal Covariate Shift)。ICS现象容易使训练过程陷入饱和区,减慢网络的收敛。

4. 解决方法

  2015年提出的BN层,从改变数据分布的角度避免了参数陷入饱和区。

  BN层首先对每一个batch的输入特征进行白化操作,即去均值方差过程。假设一个batch的输入数据为xxx:B=B=B= {x1x_{1}x1​,x2x_{2}x2​,.........,xmx_{m}xm​},首先求该batch数据的均值与方差,如式(1-1)和式(1-2)所示。

μB=1m∑i=1mxi(1-1)\mu _{B}= \frac{1}{m}\sum_{i=1}^{m}x_{i}\tag{1-1} μB​=m1​i=1∑m​xi​(1-1)

σB2=1m∑i=1m(xi−μB)2(1-2)\sigma _{B}^{2}=\frac{1}{m}\sum_{i=1}^{m}\left ( x_{i}-\mu _{B} \right )^{2}\tag{1-2}σB2​=m1​i=1∑m​(xi​−μB​)2(1-2)

  以上公式中,mmm代表batch的大小,μB\mu _{B}μB​为批处理数据的均值,σB2\sigma _{B}^{2}σB2​为批处理数据的方差。在求得均值方差后,利用公式(1-3)进行去均值方差操作。

xi^=xi−μBσB2+ϵ(1-3)\hat{x_{i}}=\frac{x_{i}-\mu _{B}}{\sqrt{\sigma _{B}^{2}+\epsilon }}\tag{1-3} xi​^​=σB2​+ϵ​xi​−μB​​(1-3)

  白化操作可以使输入的特征分布具有相同的均值和方差,固定了每一层的输入分布,从而加速网络的收敛。然而,白化操作虽然从一定程度上避免了梯度饱和,但也限制了网络中数据的表达能力,浅层学到的参数信息会被白化操作屏蔽掉,因此,BN层在白化操作后又增加了一个线性变换操作,让数据尽可能恢复本身的表达能力,如公式(1-4)所示。

yi=γxi^+β(1-4)y_{i}=\gamma \hat{x_{i}}+\beta \tag{1-4}yi​=γxi​^​+β(1-4)

  公式(1-4)中,γ\gammaγ与β\betaβ为新引进的可学习参数,最终的输出为yiy_{i}yi​。

5.BN层的优点

  BN层可以看做是增加了线性变换的白化操作,在实际工程中被证明了能够缓解神经网络难以训练的问题。BN层的优点主要有以下3点:

  • 缓解梯度消失,加速网络收敛

  BN层可以让激活函数的输入数据落在非饱和区,缓解了梯度消失问题。此外,由于每一层数据的均值与方差都在一定范围内,深层网络不必去不断适应浅层网络输入的变化,实现不层间解耦,允许每一层独立学习,也加快了网络的收敛。

  • 简化调参,网络更稳定

  在调参时,学习率调得过大 容易出现震荡与不收敛,BN层则抑制了参数微小变化随网络加深而被放大的问题,因此对于参数变化的适应能力更强,更容易调参。

  • 防止过拟合

  BN层将每一个batch的均值与方差引入到网络,由于每个batch的这两个值都不相同,可看作为训练过程增加了随即噪音,可以起到一定的正则效果,防止过拟合。

6.BN层的缺点
  • 功效难发挥

  由于BN层是在batch的维度进行归一化,BN层要求较大的batch才能有效地工作,而物体检测等任务由于占用内存较高,限制了batch的大小,这会限制BN层有效地发挥归一化功能。

  • 测试集依赖于训练集

  数据的batch大小在训练与测试时往往不一样。在训练时一般采用滑动来计算平均值与方差,在测试时直接拿训练集的平均值与方差来使用。这种方式会导致测试集依赖于训练集,然而有时训练集与测试集的数据分布并不一致。

7.Pytorch示例
from torch import nn
bn = nn.BatchNorm2d(64) # 使用BN层需要传入一个参数num_features,即特征的通道数
print('BN:',bn)

input = torch.randn(4, 32, 224, 224)
output = bn(input)# BN层不改变输入层的特征大小,只改变通道数
print('Output Shape:',output.shape)
Batch Normalization在联邦学习中的应用 回想一下联邦学习(FL)中的FedAvg,这个算法是将每个参与方的模型的所有参数进行加权平均聚合,包括Batch Normalization(BN)的参数。 再回顾一下BN。式中µ和σ2σ^2σ2为BN统计量,是通过每个channel的空间和批次维度计算而得的running mean和running variances。γ和β为实现"变换重构"的超参数。ε用于预防分母为零。 我们知道FL的一个重要意义就在于保护参与方的数据隐私,而BN层的统计参数µ和σ2σ^2σ2实际上在一定程度上隐含着本地数据的统计信息 阅读详情

相关推荐

Batch Normalization导读

  /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/                                                        author: 张俊林                                          (想更系统地学习深度学习知识?请参考:深度学习枕边书) Batch Normalizatio...

张俊林的博客 7万+

【剑指offer】BN层详解

BN层可以加速神经网络的收敛速度。减小模型对初始参数的依赖性,提高模型的鲁棒性。可以防止梯度消失和梯度爆炸的问题,有助于提高模型的稳定性。可以减少模型过拟合的风险,提高模型的泛化能力。总之,BN层是一种常用的正则化方法,可以有效地提高神经网络的训练速度和泛化能力。

不兼容旧版本 3426

Batch Normalization 论文阅读

论文:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 参考:https://www.cnblogs.com/guoyaohua/p/8724433.html BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。 BN 本质...

不忘初心不动摇 4198

对BN(batch normlization)层的理解

前言:BN层作为当前应用十分广泛的一中抗过拟合、加速模型收敛的手段,效果可以说是十分好用,但是究其原因或者说理解,很多人也是从不同方面有所解释,这篇就尽量包罗的多一些,加上一些自己的理解。有时间就补一点的样子,慢慢写 BN层简述: BN层是神经网络里的一层,如同卷积、池化层等等一样,同样有数据的输入、输出,同时参与正向传播和反向传播。但是不太同于其他层的特点是,BN更像是其他类型层的一种数据的预处...

赵凯月的博客 2760

论文-阅读翻译理解笔记-Batch Normalization Accelerating Deep Network Training by Reducing Inter

Abstract:当前神经网络层之前的神经网络层的参数变化,引起神经网络每一层输入数据的分布产生了变化,这使得训练一个深度神经网络(DeepNeural Networks)变得复杂。这样就要求使用更小的学习率,参数初始化也需要更为谨慎的设置。并且由于非线性饱和(注:如sigmoid激活函数的非线性饱和问题),训练一个深度神经网络会非常困难。我们称这个现象为:internal covariate s...

塞北战斗民族的博客 1007

神经网络模型loss不收敛、不下降问题汇总

一、模型不收敛 主要有以下几个原因: 1.learning rate设大了会带来跑飞(loss突然一直很大)的问题 这个是新手最常见的情况——为啥网络跑着跑着看着要收敛了结果突然飞了呢?可能性最大的原因是你用了relu作为激活函数的同时使用了softmax或者带有exp的函数做分类层的loss函数。当某一次训练传到最后一层的时候,某一节点激活过度(比如100),那么exp(100)=Inf,发...

科研学习笔记! 2万+

【深度学习】batch normalization和layer normalization区别

文章目录零、基础铺垫一、batch normalization二、layer normalization三、应用场景Reference 零、基础铺垫 “独立同分布”的数据能让人很快地发觉数据之间的关系,因为不会出现像过拟合等问题。 一般在模型训练之前,需要对数据做归一化。为了解决ICS问题,即internal covarivate shift(内部协变量漂移)问题,即数据分布会发生变化,对下一层网络的学习带来困难。 在深度神经网络中,层与层相互之间是存在直接或间接影响的,某一层的微小变动就可能导致其他层的

发现问题,并解决问题,批判性思维 1万+

EC20模块实战:5步搞定MQTT连接阿里云IoT(附常见错误排查)

本文详细介绍了使用EC20 4G模块通过AT指令连接阿里云IoT平台的完整实战流程。文章以智能农业项目为背景,从硬件接线、网络注册、PDP激活,到MQTT连接配置、一型一密动态注册及数据收发,提供了清晰的5步操作指南,并重点附上了常见错误排查方法,帮助开发者快速实现稳定可靠的物联网设备上云。

weixin_29209801的博客 196

BN(Batch Normalization)解释

参考论文 :Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift Batch Normalization Batch :理解为批量,Batch就是训练网络所设定的图片数量batch_size Normalization:就是数据标准化 BN层就像激活函数层、卷积层、全连接层、池化层一样,BN大的来说就是归一化层代替掉了LRN ( Local Response Normalizat

chenchen186的博客 1437

深入解析i2cdetect:从基础命令到高级读写操作

本文深入解析Linux下i2cdetect工具,从基础安装、总线扫描到高级读写操作。作为i2c-tools的核心组件,i2cdetect是硬件调试的得力侦探,能快速识别I2C总线上的设备地址。文章还涵盖了i2cdump、i2cset、i2cget等进阶工具,并介绍了如何在C程序中调用读写接口进行嵌入式开发,是掌握I2C通信调试的实用指南。

weixin_29189987的博客 372

publisher与subscriber话题的消息类型md5sum不一致问题

[ERROR] [1604235557.591296096]: Client [/range_vision_fusion_01] wants topic /detection/vision_objects to have datatype/md5sum [autoware_msgs/DetectedObjectArray/13415342e539aa36ea9a6f04ffaf39b4], but our version has [autoware_msgs/DetectedObjectArray/c16a

cxhmike的博客 6620

Batch Normalization论文解读与Inception V2代码简析

目录 论文阅读 代码简析 小结 论文阅读 Inception V2是Inception家族的一个中间件产物,在论文Rethinking the Inception Architecture for Computer Vision中提到了Inception V2的概念,但是google的代码实现却是命名为Inception V3。从google实现的Inception...

stesha_chen的博客 5604

TS808效果器制作教程

TS808效果器制作教程 可以在立创商城购买到大部分的电阻电容和IC,音频接口,踩钉,电位器和电源接口可以去某宝看看都买得到的。链接https//pan.baidu.com/s/1QId1eIE3fJ2u5NLBSISvGA。安装过程过于繁琐,把所有元器件按照图纸焊接完成就可以调试了,祝你们成功!这是TS808经典效果器制作过程的记录。IC是JRC4558。...

qq_18948149的博客 3427

神奇的Batch Normalization 如果一个模型仅训练BN层会是什么样的

您可能会感到惊讶,但这是有效的。 ​ 最近,我阅读了arXiv平台上的Jonathan Frankle,David J. Schwab和Ari S. Morcos撰写的论文“Training BatchNorm and Only BatchNorm: On the Expressive Power of Random Features in CNNs”。 这个主意立刻引起了我的注意。...

deephub 9万+

Android开发工程师面试问题与参考答案

这是一份Android开发工程师职位面试指南,主要针对自研OS开发岗位。岗位要求3年以上独立开发经验,熟悉Android平台UI设计、四大组件和Java基础。面试问题覆盖五大核心领域:基础知识、开发经验、技术深度、问题解决和性能优化。文章提供了典型面试问题及专业参考答案,帮助应聘者准备关键技术点,如多线程处理、HashMap与ConcurrentHashMap区别、Handler机制等。同时建议应聘者结合项目经验展示优化能力,并注意公司提供完善的薪酬福利和团队文化。

郑伟强dev的专栏 893

tsfknn 预测R语言中的时间序列

rolling参数应该设置为FALSE,这使得最后的18个观测值成为测试集,其余的作为训练集;如果我们将rolling参数设置为默认值TRUE,那么测试集就不会是一个恒定的向量。lag 滞后参数表示时间序列数据的滞后值。在这个例子中,由于我们的时间序列数据是月度的,我们将参数设置为1:12。作为药品福利计划的一部分,澳大利亚健康保险委员会记录的属于ATC代码A10的产品的每月政府支出(百万美元)。我们将使用tsfknn包,它可以用来预测R语言中的时间序列。格式:ts类别的月度时间序列。

Mrrunsen的博客 323

darknet 源码阅读(网络层代码)——batch Normalize 层(BN)

简介 论文链接:https://arxiv.org/abs/1502.03167 yolov2中,根据论文所讲,通过在所有convolutional layer后添加batch normalization层,map提升2%.并且相对于yolov1,移除了droupout,BN提升了模型的泛化性,有效避免过拟合。 BN原理 简约公式: xi=xi−xˉ1N∑jN(xj−xˉ)2(1) x_i = ...

jmu201521121021的博客 1525

061、LQR(线性二次型调节器)控制基础

本文介绍了LQR(线性二次型调节器)控制在飞控系统中的应用。作者通过一次四旋翼炸机事故引出PID控制的局限性,详细讲解了LQR的数学原理、权重矩阵的物理意义以及实际工程实现方法。文章对比了LQR与PID的控制效果,指出LQR在鲁棒性方面的优势,同时也分析了其存在稳态误差等缺点。最后总结了LQR在飞控中的适用场景,建议将LQR与PID结合使用,并预告了下一章将讨论带积分项的LQI控制。全文包含具体案例、代码实现和调参经验,为飞控算法开发者提供了实用指导。

2401_88858637的博客 720

【论文阅读】batch normalization与layer normalization 在nlp的比较

文章目录BN BN 神经网络学习的过程,本质是为了学习数据的分布。 一旦训练数据和测试数据的分布不同,网络的泛化能力就会大大降低。 一个batch的训练数据分布不同,网络就需要每次迭代去适应不同的分布,这会大大降低网络的训练速度。 有人提出可以用 ...

li_jiaoyang的博客 717

基于STM32、HAL库的RN8209D电能计量芯片驱动程序设计

/ 假设电压互感器变比为220V:0.5V,电流互感器变比为20A:5mA。// 电压ADC原始值。// 电流ADC原始值。// 有功功率(W)// 电能(kWh)

corlin6688的博客 470

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Batch Normalization论文阅读笔记

BN论文 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift BN优势 加速训练收敛 缓解梯度弥散 BN由来 什么是Internal Covariate Shift : 在训练过程中,隐层的输入分布老是变来变去,这就是所谓的“Intern...

Mmm_Zzz的博客 531

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【BN层的作用】论文阅读 | How Does Batch Normalization Help Optimization?

15年Google提出Batch Normalization,成为深度学习最成功的设计之一,18年MIT团队将原论文中提出的BN层的作用进行了一一反驳,重新揭示BN层的意义

bettii的博客 811

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Batch Normalization的作用

在深度神经网络训练中,Batch Normalization有诸多非常强大的作用和效果:无论使用哪种激活功能或优化器,BN都可加快训练过程并提高性能;解决梯度消失的问题;规范权重;优化网络梯度流...等等。 批量归一化(BN)是神经网络的标准化方法/层通常BN神经网络输入被归一化[0,1]或[-1,1]范围,或者意味着均值为0和方差等于1。BN对网络的中间层执行白化本文只关注BN为什么...

漆灿 1万+

Batch Normalization (BN) 论文阅读笔记

以前偷懒没有看BN的论文,现在找工作,每个面试官必问BN,必须花时间弄清BN的原理。奉劝找算法工程师的人一定要熟练掌握BN,不能只知道它在做标准化这么简单。 Batch Normalization(BN)解决的是Internal Covariate Shift (ICS)的问题。 Internal Covariate Shift在文中定义为 The change in the distrib...

icylling的专栏 2704

【论文阅读】Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift

Batch Normalization,BN-Inception

qq_34222839的博客 1315
上一篇: Python保存图片像素值至txt文档
下一篇: 阅读笔记3——空洞卷积
晓shuo
晓shuo 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域
博客等级 码龄6年 4万+粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓shuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值