深度学习中Batch Normalization(BN)原理、作用浅析
最近做剪枝学习,其中一种是基于BN层的γ作为缩放因子进行剪枝的,那么我想搞懂BN的工作原理更好的理解网络、剪枝等,所以有了该文。
- 首先先说BN的作用在详细拆解,理解。以知乎一条高赞评论说明BN层到底在干什么。
Batch Norm 为什么有效
内部协变量偏移(Internal Covariate Shift)
-
其反映的问题就是源域与目标域存在偏差。在深度神经网络的训练过程中,随着网络层数的增加,前一层输出的分布会发生变化,这种变化通常会使得下一层的输入分布发生偏移,导致训练过程中的梯度下降变得不稳定,从而影响模型的收敛速度和性能。这种现象被称为“内部协变量偏移”。
-
内部协变量偏移,使得网络在训练时需要不断适应新的输入分布,这会消耗大量的计算资源并延长训练时间。而Batch Normalization(BN)层正是针对这一问题提出的解决方案。BN的核心思想是对每一层的输入进行归一化,使其均值为0,方差为1,从而减小输入数据的分布变化,使得网络在训练过程中能够更加稳定和高效地学习。
-
这就是协变量偏移的问题 — 模型输入的数据与之前训练的数据分布非常不同 — 即使新数据仍然符合相同的目标函数。
损失和梯度平滑
- 麻省理工学者质疑了解决协变量偏移是 Batch Norm 性能的原因的说法:论文
- BN有效的本质原因在于其能够使优化空间optimization landscape变得平滑,其他的Normalization方法,例如L1,L2,L无穷大,也可以起到和BN一样的效果
- 该论文提出,Batch Norm 所做的是通过改变网络权重的分布来大幅平滑损失情况。这意味着 gradient descent 可以自信地朝着某个方向迈出一步,因为它知道它不会在途中发现突然的中断。因此,它可以通过使用更大的学习率来采取更大的步骤。
Batch Normalization 的原理
BN 层的核心操作是在每一层的输入上进行归一化处理。具体来说,BN会对每一批次(mini-batch)的输入进行均值和方差的计算,然后使用这些统计量对输入进行归一化。归一化后的数据会被乘以一个可学习的缩放参数(gamma),并加上一个可学习的偏移参数(beta)。通过这种方式,BN不仅对输入进行了标准化处理,还通过学习到的参数对其进行了适当的尺度和位置调整,使得网络能够适应不同的数据分布。
数学上,BN操作可以表示为:

计算当前mini-batch所有样本的均值;计算当前mini-batch所有样本的方差;对当前mini-batch内每个样本用前面的均值和方差做归一化;对归一化后的样本,乘以一个缩放系数,再做一次平移;
- 可学习缩放参数γ、可学习偏移参数β
- 𝛾是一个缩放因子,它对标准化后的数据进行线性变换,控制了数据的尺度。通过学习网络能够自动调整每一层输出的方差大小,以适应不同的数据分布。𝛽这是一个偏移因子,它对标准化后的数据加上一个常数,控制了数据的均值。通过学习网络能够调整每一层输出的均值,使其更适合特定任务的需求 。
- 参数由网络学习得到, 每个 Batch Norm 层都能够以最佳方式找到适合自己的最佳因子,因此可以移动和缩放归一化值以获得最佳预测
- 对标准化后的数据进行缩放和偏移。这一步骤是在标准化之后进行的,目的是使得网络能够恢复标准化过程中可能丢失的特征,避免标准化导致模型表达能力的下降
- 对一些重要的通道会学习到较大的γ值,不重要的通道会学到接近于0的γ值,我认为这可能是另一篇网络剪枝论文的理论基础。
Batch Norm 的作用
Batch Norm 帮助模型更快地收敛并加快训练速度。它使训练对权重的初始化方式和超参数的精确调整不太敏感。
Batch Norm 可以使用更高的学习率。如果没有 Batch Norm,学习率必须保持较小,以防止较大的异常值梯度影响梯度下降。Batch Norm 有助于减少这些异常值的影响。
Batch Norm还减少了梯度对初始权重值的依赖性。由于权重是随机初始化的,因此训练早期阶段的异常值权重值可能会扭曲梯度。因此,网络收敛需要更长的时间。Batch Norm 有助于抑制这些异常值的影响。
提高模型的泛化能力(正则化作用)在一定程度上起到了正则化的作用,减少了过拟合的风险。由于每一批次的统计量是基于当前批次数据计算的,这种变化引入了微小的噪声,有助于提高模型的泛化能力。
标准化输入数据,减少内部协方差偏移
BN通过使每一层的激活值在训练过程中保持稳定,避免了大幅度的梯度波动,从而提高了网络训练的稳定性。每一层的输入分布在训练过程中几乎不变,有助于减少训练过程中梯度的剧烈波动。
Batch Norm 何时不适用?
Batch Norm 不适用于较小的批量。这会导致每个小批量的均值和方差中出现过多的噪声。有人提出的
Group Normalization等方法可以改善这些问题
Batch Norm 不用于循环网络。每个时间步之后的激活具有不同的分布,因此对其应用 Batch Norm 是不切实际的。但提出的Layer Normalization等方法也可以适用于循环网络
总结
本文主要参考了
- 部分内容翻译自Batch Norm Explained Visually — Why does it work?
- 部分图像来自BN原理分析
相关文章:
深度学习中Batch Normalization(BN)原理、作用浅析
最近做剪枝学习,其中一种是基于BN层的γ作为缩放因子进行剪枝的,那么我想搞懂BN的工作原理更好的理解网络、剪枝等,所以有了该文。 首先先说BN的作用在详细拆解,理解。以知乎一条高赞评论说明BN层到底在干什么。 Batch Norm 为什…...
C语言常用字符串处理函数
头文件:#include <string.h> strlen size_t strlen( char *str ); 功能:函数返回一个整数值,表示给定字符串的长度(不包括结束符\0) strcat char *strcat( char *str1, const char *str2 ); 功能&a…...
文件上传漏洞详解
第一关(JS绕过) 1.1使用bp进行绕过 先将要上传的php文件的后缀改为png,然后在上传时抓包,将png后缀再改为php,发包,此时上传成功 1.2使用js进行绕过 打开浏览器的检查,将其中的checkFile函数…...
关于linux的ld.so.conf.d
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
pytest执行报错:found no collectors
今天在尝试使用pytest运行用例的时候出现报错:found no collectors;从两个方向进行排查,一是看文件名和函数名是不是符合规范,命名要是"test_*"格式;二是是否存在修改文件名的情况,如果修改过文件…...
如何实现网页不用刷新也能更新
要实现用户在网页上不用刷新也能到下一题,可以使用 前端和后端交互的技术,比如 AJAX(Asynchronous JavaScript and XML)、Fetch API 或 WebSocket 来实现局部页面更新。以下是一个实现思路: 1. 使用前端 AJAX 或 Fetch…...
c#调用c++的dll,字符串指针参数问题
一.背景 在 C# 中没有 char* 类型,因为 C# 是一种托管语言,它的设计目标是提供更高级别的安全性和内存管理,避免使用像 C 或 C 中的指针操作,以防止常见的指针相关错误,如内存泄漏和悬空指针。 二.c#调用c的dll&#x…...
HTML5 新表单属性详解
HTML5 为 <form> 和 <input> 标签引入了一系列新属性,极大地增强了表单的功能和用户体验。这些新属性不仅简化了开发者的工作,还为用户提供了更友好、更高效的交互方式。本文将详细介绍这些新属性,并结合代码示例帮助大家更好地理…...
JAVA 使用反射比较对象属性的变化,记录修改日志。使用注解【策略模式】,来进行不同属性枚举值到中英文描述的切换,支持前端国际化。
1.首先定义一个接口,接口中有两个方法,分别是将属性转换成英文描述和中文描述。 其实就是将数据库中记录的 0 1 ,转换成后面的描述 这边定义了中文转换为默认方法,是因为有些属性不需要进行中文转换,或者该属性的枚举…...
Docker入门学习
一、容器 1. 将单个操作系统中的资源划分到孤立的组中,在孤立的组中平衡有冲突的资源使用需求 2. Docker提供了容器管理的工具可以无需关注底层操作,使用效果类似于轻量级的虚拟机, 并且容器的创建和停止相对于虚拟机来说比较快&am…...
吴恩达深度学习——神经网络介绍
文章内容来自BV11H4y1F7uH,仅为个人学习所用。 文章目录 什么是神经网络引入神经网络神经元激活函数ReLU隐藏单元 用神经网络进行监督学习监督学习与无监督学习举例 什么是神经网络 引入 已经有六个房子的数据集,横轴为房子大小,纵轴为房子…...
STM32之CubeMX新建工程操作(十八)
STM32F407 系列文章 - STM32CubeMX(十八) 目录 前言 一、STM32CubeMX 二、新建工程 编辑 1.创建工程 2.选择芯片型号 3.Pinout引脚分配 1.SYS配置 2.RCC配置 3.定时器配置 4.GPIO引脚配置 5.中断配置 6.通讯接口配置 7.插件Middleware配…...
Postgresql源码(140)理解PG的编译流程(make、Makefile、Makefile.global.in)
PG16 PG中使用的makefile看起来代码比较多,但是实际逻辑比较简单,这里做一些抽象总结。 总结 Makefile.global.in的$(recurse)宏自动生成了target,可以方便的进入内存目录进行编译。 all: all-common-recurse all-common-recurse: submak…...
logback日志自定义占位符
前言 在大型系统运维中,很大程度上是需要依赖日志的。在java大型web工程中,一般都会使用slf4jlogback这一个组合来实现日志的管理。 logback中很多现成的占位符可以可以直接使用,比如线程号【%t】、时间【%d】、日志等级【%p】,…...
Vue平台开发三——项目管理页面
前言 对于多个项目的使用,可能需要进行项目切换管理,所以这里创建一个项目管理页面,登录成功后跳转这个页面,进行选择项目,再进入Home页面展示对应项目的内容。 一、实现效果图预览 二、页面内容 功能1、项目列表展…...
用于牙科的多任务视频增强
Multi-task Video Enhancement for Dental Interventions 2022 miccai Abstract 微型照相机牢牢地固定在牙科手机上,这样牙医就可以持续地监测保守牙科手术的进展情况。但视频辅助牙科干预中的视频增强减轻了低光、噪音、模糊和相机握手等降低视觉舒适度的问题。…...
【Node.js]
一、概述 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 ,使用了一个事件驱动、非阻塞式I/O模型, 让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。 官网地…...
【Elasticsearch】腾讯云安装Elasticsearch
Elasticsearch 认识Elasticsearch安装Elasticsearch安装Kibana安装IK分词器分词器的作用是什么?IK分词器有几种模式?IK分词器如何拓展词条?如何停用词条? 认识Elasticsearch Elasticsearch的官方网站如下 Elasticsearch官网 Ela…...
【网络协议】ACL(访问控制列表)第一部分
概述 网络安全在网络中的重要性不言而喻。本文(即第一部分)将介绍ACL的基本概念以及标准ACL的配置。第二部分将重点讨论扩展ACL、其他相关概念以及ACL的故障排除。 文章目录 概述ACL定义数据包过滤ACLACL配置指导原则配置ACL的三条规则ACL功能ACL工作原…...
2025.1.20——一、[RCTF2015]EasySQL1 二次注入|报错注入|代码审计
题目来源:buuctf [RCTF2015]EasySQL1 目录 一、打开靶机,整理信息 二、解题思路 step 1:初步思路为二次注入,在页面进行操作 step 2:尝试二次注入 step 3:已知双引号类型的字符型注入,构造…...
别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务
别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务当你的机器人正在执行一个长达10分钟的导航任务时,突然发现目标点设置错误,这时候如果只能干等着任务完成或者…...
第3篇:系统透视——信息部门如何构建“税务友好型”IT架构
本篇导读:如果你是信息总监或IT负责人,请通读全文,尤其是“系统合规设计的三必须”和“现场检查SOP”;如果你是财税人员,请重点阅读“研产供销全链条的系统对接要求”和“与IT部门的协作要点”;如果你是老板…...
Claude端到端测试设计:从零搭建可审计、可回放、可量化的AI服务测试流水线(含开源Schema校验工具)
更多请点击: https://codechina.net 第一章:Claude端到端测试设计 端到端测试是验证Claude模型在真实用户交互链路中行为一致性的关键手段。它覆盖从原始提示输入、上下文管理、流式响应生成,到输出解析与业务校验的全路径,确保模…...
如何快速批量下载高质量歌词:ZonyLrcToolsX跨平台终极解决方案
如何快速批量下载高质量歌词:ZonyLrcToolsX跨平台终极解决方案 【免费下载链接】ZonyLrcToolsX ZonyLrcToolsX 是一个能够方便地下载歌词的小软件。 项目地址: https://gitcode.com/gh_mirrors/zo/ZonyLrcToolsX 还在为本地音乐库缺少歌词而烦恼吗࿱…...
探索Windows 10上的Android世界:揭秘WSA-Windows-10项目的3个技术突破
探索Windows 10上的Android世界:揭秘WSA-Windows-10项目的3个技术突破 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 想象一下&#…...
DeepSeek重复代码识别失效了?5个被90%团队忽略的AST解析盲区及修复清单
更多请点击: https://codechina.net 第一章:DeepSeek代码重复检测失效的真相与影响 DeepSeek-R1 模型在代码理解任务中表现出色,但其内置的代码重复检测机制在特定场景下存在系统性失效。根本原因在于模型对语义等价但语法结构差异显著的代…...
正视孩童情绪波动,耐心陪伴平稳疏导
孩子的情绪就像夏天的天气,前一秒还晴空万里,后一秒可能就乌云密布。面对突如其来的哭闹、发脾气或者闷闷不乐,很多家长会急着“灭火”——要么讲道理,要么直接制止。但其实,情绪波动本身不是问题,它是孩子…...
不止于绘图:用GMT 6.4的`grdtrack`和`project`命令玩转地形剖面分析与可视化
不止于绘图:用GMT 6.4的grdtrack和project命令玩转地形剖面分析与可视化 当我们谈论地理空间分析时,很多人首先想到的是绘制精美的地图。但GMT(Generic Mapping Tools)的真正魅力在于它强大的地理计算能力。本文将带你超越基础绘图…...
鸿蒙HarmonyOS 5与Unity跨运行时通信实战指南
1. 这不是“调个API”那么简单:为什么鸿蒙Unity通信总在临门一脚卡住我第一次把Unity打包的AR模块塞进HarmonyOS 5 App里时,信心满满——毕竟文档里写着“支持JS/ArkTS调用Native能力”,Unity也标榜“跨平台通用”。结果呢?App一启…...
2026上海GEO生成式引擎优化服务商综合实力测评:谁在真正帮品牌进入AI答案
当企业在讨论“上海生成式引擎优化公司哪家好”时,这个问题本身就反映了市场一个关键的转折。两三年前,企业营销的主战场还是搜索引擎排名和官网访问量。现在,决策者开始频繁向DeepSeek、豆包、通义千问等AI工具提问,而这些生成式…...

