批归一化(BN)在神经网络中的作用与原理

文章目录

    • 1. 批归一化(BN)在神经网络中的作用与原理
      • 1.1 作用与优势
      • 1.2 原理与推导
    • 2. 将BN应用于神经网络的方法
      • 2.1 训练时的BN
    • 2. 将BN应用于神经网络的方法
      • 2.1 训练时的BN
      • 2.2 测试时的BN
        • 代码示例(Python):
    • 3. BN的优缺点与适用场景
      • 3.1 优点
      • 3.2 缺点
      • 3.3 适用场景
    • 4. 结语


1. 批归一化(BN)在神经网络中的作用与原理

1.1 作用与优势

批归一化(Batch Normalization,BN)是一种用于神经网络的技术,通过对每个训练批次的输入进行归一化,加速了神经网络的训练过程。它的作用主要体现在以下几个方面:

  • 加速收敛:通过归一化输入特征值,减少了网络训练的迭代次数,加快了收敛速度。
  • 改善梯度传播:缓解了梯度消失和爆炸问题,使得深层网络的训练更加稳定。
  • 提高泛化能力:降低了网络对超参数的敏感度,提高了模型的泛化能力。

这其实就是一个问题——把学习问题的轮廓,从很长的东西,变成更圆的东西,变得更易于算法优化。

在这里插入图片描述

1.2 原理与推导

BN的核心思想是对每个特征进行归一化,以使其均值接近于0,方差接近于1。其具体过程如下:

  • 对于每个训练批次,计算该批次输入的均值和方差。
  • 使用得到的均值和方差对输入进行归一化。
  • 引入可学习的缩放参数和偏移参数,使网络能够学习适应不同数据分布的特征。

数学公式如下:
在这里插入图片描述
所以现在 值已经被标准化了(平均值0和标准单位方差),但我们不想让隐藏单元总是如此,也许隐藏单元有了不同的分布会有意义,所以一个很牛的计算是:

其中 和 是模型需要学习的参数,请注意 和 的作用,是无论如何随意设置 的平均值,事实上,如果 ,如果 等于这个分母项( 中的分母), 等于 ,这里的 中的 ,那么 的作用在于,它会精确转化这个方程,如果这些成立(),那么 。

归一化输入特征 是有助于神经网络中的学习的,批归一化(BN) 的作用是一个适用的归一化过程,不只是输入层,甚至同样适用于神经网络中的深度隐藏层。

有了 和 两个参数后,就可以确保所有的 值都是想赋予的值,或者是保证隐藏的单元已使均值和方差标准化,即 无论数据归一化计算时出现多大问题,通过参数都可以调整回来。

2. 将BN应用于神经网络的方法

2.1 训练时的BN

在训练时,BN的操作如下:

  • 对每个训练批次进行正向传播,并计算均值和方差。
  • 使用计算得到的均值和方差对批次输入进行归一化。
  • 引入可学习的缩放参数和偏移参数,调整归一化后的值。
  • 在反向传播时,根据梯度更新参数。

2. 将BN应用于神经网络的方法

2.1 训练时的BN

在训练时,BN的操作如下:

  • 对每个训练批次进行正向传播,并计算均值和方差。
  • 使用计算得到的均值和方差对批次输入进行归一化。
  • 引入可学习的缩放参数和偏移参数,调整归一化后的值。
  • 在反向传播时,根据梯度更新参数。

数学公式
设输入的批次为 ( X = {x_1, x_2, ..., x_m} ),其中 (m) 是批次大小。则批次的均值 ( \mu ) 和方差 ( \sigma^2 ) 分别计算如下:
上面这些公式都是用来执行 BN。在一个 mini-batch 中,

先对 值求和,计算均值,所以这里只把一个 mini-batch 中的样本都加起来,假设用m来表示这个 mini-batch 中的样本数量,而不是整个训练集。
然后计算方差,再算 ,即用均值和标准差来调整,加上 是为了数值稳定性。 是用 和 再次调整 得到的。
请注意,用于调节计算的 和 是在整个 mini-batch 上进行计算的,但是在测试时,可能不能将一个 mini-batch 中的很多个样本同时处理,因此,需要用其它方式来得到 和 ,而且如果只有一个样本的话,一个样本的均值和方差是没有意义的。

所以实际上,为了将神经网络运用于测试,就需要单独估算 和 ,在典型的 BN 运用中,需要用一个指数加权平均来估算。

总结来说就是,在训练时, 和 是在整个 mini-batch 上计算出来的包含了一定数量的样本,但在测试时,可能需要逐一处理样本,方法是根据训练集估算 和 。

估算的方式有很多种,

理论上可以在最终的网络中运行整个训练集来得到 和 ,但在实际操作中,通常运用指数加权平均来追踪在训练过程中的 和 的值。
还可以用指数加权平均,有时也叫做流动平均,来粗略估算 和 ,然后在测试中使用 和 的值来进行所需的隐藏单元 值的调整。
在实践中,不管用什么方式估算 和 ,这套过程都是比较稳健的,而且如果使用的是某种深度学习框架,通常会有默认的估算 和 的方式,应该会起到比较好的效果。

2.2 测试时的BN

在测试时,需要对每个样本逐一处理,无法使用整个训练集的均值和方差。因此,需要使用一种估算方式来得到均值和方差。
在这里插入图片描述

代码示例(Python):
# 在测试时估算均值和方差
def estimate_mean_and_variance(X):mean = np.mean(X, axis=0)variance = np.var(X, axis=0)return mean, variance# 使用估算的均值和方差对输入进行归一化
def normalize_input(X, mean, variance, epsilon=1e-5):normalized_X = (X - mean) / np.sqrt(variance + epsilon)return normalized_X# 使用缩放参数和偏移参数对归一化后的值进行调整
def scale_and_shift(normalized_X, gamma, beta):scaled_X = gamma * normalized_X + betareturn scaled_X

在实际应用中,可以根据训练集的均值和方差的估计值来进行归一化。

3. BN的优缺点与适用场景

3.1 优点

  • 加速了神经网络的训练过程,提高了收敛速度。
  • 提高了模型的泛化能力,降低了过拟合的风险。
  • 缓解了梯度消失和爆炸问题,使得深层网络的训练更加稳定。

3.2 缺点

  • 需要额外的计算成本,在推理阶段需要对均值和方差进行估算。
  • 引入了额外的参数,增加了模型的复杂度。

3.3 适用场景

  • 对于深层网络和大规模数据集,BN效果显著,可以加快训练速度。
  • 在需要提高模型泛化能力的场景下,BN也是一种有效的正则化方法。

4. 结语

批归一化作为一种有效的神经网络技术,在加速训练、提高泛化能力等方面发挥了重要作用。在实际应用中,需要根据具体情况权衡其优缺点,选择合适的方法和参数设置。同时,对其原理和实现方式的深入理解,有助于更好地应用于实际问题中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程规范(保姆级教程)

文章目录 为什么需要编程规范?💡代码检测工具 ESLint💡代码格式化 Prettier💡ESLint 与 Prettier 配合解决代码格式问题eslint支持ts约定式提交规范Commitizen助你规范化提交代码什么是 Git Hooks使用 husky commitlint 检查提交…

探索设计模式的魅力:MVVM模式在AI大模型领域的创新应用-打破传统,迎接智能未来

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 MVVM模式在AI大模型领域的创新应用-打破传统迎接智能未来 🚀 “在人工智能的领域里&a…

【Entity Framework】如何使用EF中的生成值

【Entity Framework】如何使用EF中的生成值 文章目录 【Entity Framework】如何使用EF中的生成值一、概述二、默认值三、计算列四、设置主键五、显示配置值生成六、设置日期/时间值生成6.1 创建时间戳6.2 更新时间戳 七、替代值生成八、无值生成九、总结 一、概述 数据库列的值…

DHCP抓包分析

DHCP动态路由配置协议,是C/S架构,由DHCP服务器为客户端动态分配IP信息。 DHCP客户端首次接入网络数据交互过程: 如何解决IP地址的冲突: ▫ DHCP服务器端:收到DHCP DISCOVER报文时,给客户端分配IP地址前会发…

【C++第三阶段】stackqueue容器

以下内容仅为当前认识,可能有不足之处,欢迎讨论! 文章目录 stack容器queue容器 stack容器 是什么?功能是什么?常用接口是什么?局限性有哪些?优势又有哪些? 栈容器,先进…

error-ckeditor-duplicated-modules 在vue中引入ckeditor插件报错

报错原因: 由于集成了webpack,统一引入了ckeditor ,但是页面里面我们又通过import引入了一遍,所以导致引入重复了 解决: ckeditor本身除了基本的一些功能,其他基本全靠插件引入,所以想加功能必…

谷歌推出Vids:AI驱动的PowerPoint,重新定义演示文稿的未来|TodayAI

不管你喜不喜欢,找到集成了AI技术以简化常见任务的工具和服务变得越来越容易。谷歌的应用套件迅速成为了一个集成了Gemini AI的产品中心,这些产品可以在工作场所到你的家中的任何地方使用。例如,如果在工作中做演示一直是你的痛点&#xff0c…

git操作码云(gitee)创建仓库到上传到远程仓库

想必有的小伙伴在为上传到码云远程仓库而感到烦恼吧!本篇为大家详细讲解实现过程,跟着我的步伐一步一步来。 我就当大家已经注册好了码云 一、在码云上需要的操作 接下来我们需要使用到 git 了 二、git 上的操作 到了咋们的git了,开整 首…

外包干了3天,技术退步明显.......

先说一下自己的情况,大专生,19年通过校招进入杭州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

Terraform 状态不同步处理

背景 在使用 Terraform 创建 TencentCloud TKE 的时候,手贱把 node pool 删掉了。导致执行 destroy, plan 都会报错。 │ Error: [TencentCloudSDKError] CodeInternalError.UnexpectedInternal, Messagerelated node pool query err(get node pool failed: [E501…

Python如何安装第三方模块

cmd窗口中使用pip install命令安装 1、键盘按下win R,然后在输入框中输入cmd,回车,就打开了cmd窗口。 下图的运行框会出现到屏幕左下角。 2、输入下面的命令,回车即可。 pip install xxx # xxx为要安装的模块名 如图所示&…

【13137】基于TQM的人力资源管理

目录 1.单选题 2.多选题 3.名词解释题 4.简答题 1.单选题

中通科技数仓数据治理实践

目录 一、背景 1.1 中通数仓架构介绍 1.2 中通数仓层级划分 1.3 中通数据现状 1.4 中通数仓现面临的压力 二、数据仓库具体实践 2.1 时效治理 2.1.1 数据入仓治理 2.1.2 核心模型治理 2.2 存储治理 2.3 内存治理 2.3.1 内存浪费治理 2.3.2 数据倾斜治理 2.3.3 内…

算法设计与分析实验报告c++java实现(ACM面试题、字符串匹配算法、循环赛日程安排问题、分治法求解最大连续子序列和、动态规划法求解最大连续子序列和)

一、 实验目的 1.加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、【ACM、…

linux重定向符号

将ls命令执行结果重定向到a文件中 将错误ls命令执行结果重定向到a文件中(这里用到前面的标准错误输出重定向)

科研学习|可视化——相关性结果的可视化

一、相关性分析介绍 相关性分析是指研究两种或者两种以上的变量之间相关关系的统计分析方法,一般分析步骤为: 1)判断变量间是否存在关联;2)分析关联关系(线性/非线性)、关联方向(正相…

上海人工智能实验室的书生·浦语大模型学习笔记(第二期第三课——上篇)

书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,这次有机会参与试用,特记录每次学习情况。 一、课程笔记 本次学习的是RAG(Retrieval Augmented Generation)技术,它是通过检索与用户输入相关的信息片段…

基于SSM的大学生兼职平台的设计与实现需求(源码+配套文档)

基于SSM的大学生兼职平台的设计与实现需求(源码配套文档) 摘 要 信息社会、信息时代造就了现在我们所拥有的科技生活。各种关于生活、社团的互联网软件逐步的走向了百姓的生活当中,移动互联网在当下的时代中有着非常成熟的应用&#xff…

【nodejs基础学习三-浏览器偏好设置】

系列文章目录 第一章 nodejs基础学习–注释、变量、运算符、字符串、函数(一) 第二章 nodejs基础学习–循环、对象字符、模块导入出(二) 第三章 nodejs基础学习三-浏览器设置 系列文章目录一、开发者模式二、web偏好设置 一、开发…

1.网络编程-网络协议

目录 网络编程是什么 网络编程三要素 OSI七层网络模型 TCP/IP五层模型 SSL/TLS 是哪层协议 网络编程是什么 网络编程是计算机科学中的一个重要领域,它涉及到编写能够在网络环境中进行通信的程序。网络编程的核心目标是使不同的设备能够通过网络交换信息&#…