深度学习中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:已知双引号类型的字符型注入,构造…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

