当前位置: 首页 > news >正文

小知识点快速总结:Batch Normalization Layer(BN层)的作用

本系列文章只做简要总结,不详细说明原理和公式。

目录

  • 1. 参考文章
  • 2. 主要作用
  • 3. 具体分析
    • 3.1 正则化,降低过拟合
    • 3.2 提高模型收敛速度,加速训练
    • 3.3 减少梯度爆炸或者梯度消失的情况
  • 4. 补充
    • 4.1 BN层做的是标准化不是归一化
    • 4.2 BN层的公式
    • 4.3 BN层为什么要引入gamma和beta参数

1. 参考文章

[1] Sergey Ioffe, “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift”
[2] WellWang_S, “神经网络中BN层的原理与作用”
[3] 是Dream呀,“机器学习:BN层介绍及深入理解”
[4] 标准化和归一化,请勿混为一谈,透彻理解数据变换
[5] 针对:'‘标准化和归一化什么区别?’'问题,答主本空的回答

2. 主要作用

BN层主要是为了解决网络训练过程中出现的internal Covariate Shift(内部协方差偏移,简成ICS)问题。ICS问题会导致随着网络深度的加深,训练越来越困难,收敛越来越慢。

具体可以分为三个作用:
  1.正则化,降低过拟合。
  2.提高模型收敛速度,加速训练。
  3.减少梯度爆炸或者梯度消失的情况。

在机器学习领域有个很重要的假设:独立同分布。即训练集和测试集必须具有相同的分布,这样经过训练的模型才能在测试集合上去的很好的表现。

但是,在网络的训练过程中,随着反向传播的进行,网络每一层的权重都会进行更新,这就导致每一层输入数据的分布由于上一层权重的更新而时刻改变[1] 这种数据分布的变化也会随着网络的加深,而逐渐剧烈。使得网络深层很难进行学习。

并且原文[1]中也指出在网络的训练过程中,数据分布改变后会往激活函数的上限或者下限偏移,随着网络的层层加深,数据整体分布会逐渐偏移到激活函数的梯度饱和区域,出现梯度降低甚至消失现象,使得网络难以训练,无法收敛。

上面这种现象就被称为ICS问题

那么BN的作用就显而易见了,就是将每个Batch内的数据分布都拉到均值为0,方差为1的标准正态分布,使得每一层神经网络的输入保持相同分布(博客[4]中说到,标准化不会改变原有分布,但是大部分数据都是正态分布,所以我也写成标准正态分布)

3. 具体分析

3.1 正则化,降低过拟合

我个人理解:首先网络过拟合说明网络对于训练集的数据分布学习的太好了,几乎完全一样了。这样会导致网络缺乏泛化性。BN层作为一种标准化方法,可以将所有的数据分布统一成标准正态分布,减少方差大的特征(离散特征)对于整体数据分布的影响[5] 从而让网络更加关注共性特征,降低对离散特征的学习,提高泛化性。

3.2 提高模型收敛速度,加速训练

在第二章中,我们提到网络之所以难以收敛,主要是因为ICS问题导致的数据分布偏移,从而出现激活函数梯度消失现象。从下图中(来自博客[5])可以看到,经过标准化后,数据都会集中在均值为0,方差为1的正太分布中,这个数据分布正好是激活函数中梯度响应最大的区域,可以有效地提高模型的收敛速度,加速模型训练。

原始数据标准化后数据
在这里插入图片描述在这里插入图片描述

3.3 减少梯度爆炸或者梯度消失的情况

网络权重更新依据的是梯度的反向传递。梯度求解的主要受有4个因素影响,分别是:

  • 当前层的输入(上一层的输出)。
  • 激活函数的偏导。
  • 后一层的权重。
  • 损失函数L的偏导。

由于链式求导法则,梯度是不同层的4个因素的累乘。如果4个因素中设置不合理则会导致梯度爆炸或者梯度消失的现象。

BN层之所以会减少梯度爆炸或者梯度消失,因为BN层制约着激活函数的偏导这一因素。

当然BN层只能减轻,但无法完全解决。
例如:
第一种情况: 权重设置不合理,还是会导致梯度爆炸现象。
第二种情况: 如果采用sigmod激活函数,其最大梯度是0.25,如果网络设置过深,0.25的累乘会导致梯度越来越小,甚至梯度消失。

4. 补充

4.1 BN层做的是标准化不是归一化

BN层,也被称为Batch Normalization Layer。虽然被翻译为批次归一化层,但是从公式上看,BN层实际上实现的是标准化。不要被归一化这个翻译迷惑。结果并不是将数据缩放到0-1,然是将数据缩放到均值为0,方差为1的相同分布中。
在这里插入图片描述
在这里插入图片描述

4.2 BN层的公式

在这里插入图片描述

4.3 BN层为什么要引入gamma和beta参数

截图自:[2] WellWang_S, “神经网络中BN层的原理与作用”,如需详细理解,可以去该作者文章中细读。

在这里插入图片描述

相关文章:

小知识点快速总结:Batch Normalization Layer(BN层)的作用

本系列文章只做简要总结,不详细说明原理和公式。 目录 1. 参考文章2. 主要作用3. 具体分析3.1 正则化,降低过拟合3.2 提高模型收敛速度,加速训练3.3 减少梯度爆炸或者梯度消失的情况 4. 补充4.1 BN层做的是标准化不是归一化4.2 BN层的公式4.…...

【SpringCloud】负载均衡(Spring Cloud LoadBalancer)

负载均衡 当服务流量增大时,通常会采用增加机器的方式进行扩容。负载均衡就是用来在多个机器或者其他资源中,按照一定的规则合理分配负载。其中的实现可以分成客户端负载均衡和服务端负载均衡。 服务端负载均衡 在服务端进行负载均衡的算法分配。 比…...

三生随记——输入法之谜

在深夜的电脑前,李浩专心致志地敲打着键盘,为他的小说写下最后一章。然而,随着他不断输入文字,他渐渐察觉到一丝不对劲。每次他尝试输入特定的词汇,输入法都会自动跳转到一些与主题毫不相关的句子,甚至有些…...

【名词解释】Unity中的3D物理系统:刚体

Unity中的3D物理系统是用于模拟现实世界中物体的运动和相互作用的一套工具和组件。刚体(Rigidbody)是Unity 3D物理系统中的一个核心组件,它允许游戏对象(GameObject)受到重力和外力的影响,并参与碰撞检测。…...

icon转svg处理

一般情况下,图标我们可以找UI或者去iconfont.cn获得一个svg格式的文件。然后再IDE中以文本的方式打开,然后格式化,就可以看到代码。代码中一般是最外层一个svg标签,里面是一个或者多个path。这个时候,我们使用h方法来实…...

已成功见刊检索的国际学术会议论文海报展示(2)

【先投稿先送审】第四届计算机、物联网与控制工程国际学术会议(CITCE 2024) 大会官网:www.citce.org 时间地点:2024年11月1-3日,中国-武汉 收录检索:EI Compendex,Scopus 主办单位:四川师范…...

EasyCVR/EasyDSS无人机直播技术助力野生动物监测

近日有新闻报道,一名挖掘机师傅在清理河道时,意外挖出一只稀有的扬子鳄,挖机师傅小心翼翼地将其放在一边,扬子鳄也顺势游回一旁的河道中。 随着人类对自然环境的不断探索和开发,野生动物及其栖息地的保护显得愈发重要。…...

AI视频教程下载-ChatGPT 生产力 + 时间管理

ChatGPT Productivity Time Management. ChatGPT Productivity ChatGPT 显著提升生产力 不寻常的时间管理技巧。ChatGPT 工作,Chat GPT 自动化,ChatGPT 2023! 对关于ChatGPT的讨论感到好奇,想知道如何利用它为自己带来好处吗&a…...

Java 集合框架:LinkedList 的介绍、使用、原理与源码解析

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 014 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…...

【Ruby爬虫01】某吃瓜网站图片数据采集

介绍 由于最近在学习Ruby,写一个爬虫锻炼一下。涉及xml解析、多线程、xpath语法等基础知识。 实现代码 使用说明 使用前请先安装如下gem gem install nokogiri http openssl# nokogiri:一个解析xml和html的库,支持css、xpath语法 # htt…...

可以免费领取tokens的大模型服务

本文更新时间:2024年6月20日 豆包大模型 “亲爱的客户,模型提供方将在5月15日至8月30日期间,为您提供一次独特的机会,即高达5亿tokens的免费权益。这是我们对您长期支持的感谢,也是对未来合作的期待。” 在8月30日之…...

NSSCTF-Web题目11

目录 [鹤城杯 2021]EasyP 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]numgame 1、题目 2、知识点 3、思路 [鹤城杯 2021]EasyP 1、题目 2、知识点 php代码审计 3、思路 打开题目,出现一段代码,我们对代码进行审计 这里出现了很多不懂的…...

【数据结构】第十八弹---C语言实现堆排序

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、堆排序 1.1、基本思想 1.2、初步代码实现 1.3、代码优化 1.4、代码测试 总结 1、堆排序 在博主数据结构第十二弹---堆的应用有详细讲解堆…...

[面试题]Kafka

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…...

centos7 离线安装zip和unzip

解压的时候发现不能解压,报-bash: unzip: command not found 1、访问https://www.rpmfind.net/linux/rpm2html/search.php?queryzip&submitSearch…&systemcentos&arch#/ 2、输入zip和centos搜索,选择el7下载 3、输入unzip和centos搜索&am…...

Linux下lsof命令使用

目录 lsof 命令使用指南基本语法常用选项使用示例 lsof vs netstatlsofnetstat区别示例对比 lsof 命令使用指南 lsof (List Open Files) 是一个用于列出当前系统中打开文件的命令,适用于 Unix 和类 Unix 操作系统。它不仅可以列出常规文件,还可以列出打…...

基于ChatGPT的大型语言模型试用心得

近年来,ChatGPT这样的大型语言模型,它如同一颗冉冉升起的新星,迅速在商业、教育、娱乐等多个领域照亮了创新的天空,极大地革新了我们的工作与日常生活。 最近我发现一些国内用户也能自由访问的中文ChatGPT APP。这个平台不仅提供…...

Python 列表添加多个值(四种方法)

Python 列表添加多个值有多种方法,以下是其中几种实现方法: 一、使用extend()方法 Python 中列表对象有一个 extend() 方法,它可以一次性添加另一个列表中的所有元素到当前列表中。 例1: a = [1, 2, 3] b = [4, 5, 6] a.extend(b)...

VMware RedHat虚拟机磁盘扩容(添加磁盘和扩展磁盘)

前言 自己的电脑上配一个虚拟机还是很有必要的,用起来比双系统方便一点,之前搞了100g的ubuntu没用到,后面重装redhat觉得随便搞个20g就够用了,后面用到之后就遇到磁盘不够用的情况,只能说情况允许的话,磁盘…...

最近,GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价,包括版本间的对比分析、GPT-4o的技术能力以及个人整体感受等

GPT-4o是一款引人瞩目的人工智能技术,它在之前版本的基础上取得了长足的进步。本文将对GPT-4o进行评价,包括版本间的对比分析、GPT-4o的技术能力以及个人整体感受等。 首先,我们来进行GPT-4o与之前版本的对比分析。GPT-4o相较于GPT-3和GPT-2…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Bean 作用域有哪些?如何答出技术深度?

导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答&#xff0c…...