news 2026/4/23 16:37:24

与学习相关的技巧(Batch Normalization)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
与学习相关的技巧(Batch Normalization)

Batch Normalization

在上一节,我们观察了各层的激活值分布,并从中了解到如果设定了合
适的权重初始值,则各层的激活值分布会有适当的广度,从而可以顺利地进
行学习。那么,为了使各层拥有适当的广度,“强制性”地调整激活值的分布
会怎样呢?实际上,Batch Normalization[11]方法就是基于这个想法而产生的。

Batch Normalization 的算法

Batch Normalization(下文简称Batch Norm)是2015 年提出的方法。
Batch Norm虽然是一个问世不久的新方法,但已经被很多研究人员和技术
人员广泛使用。实际上,看一下机器学习竞赛的结果,就会发现很多通过使
用这个方法而获得优异结果的例子。

为什么Batch Norm这么惹人注目呢?因为Batch Norm有以下优点。

  • 可以使学习快速进行(可以增大学习率)。
  • 不那么依赖初始值(对于初始值不用那么神经质)。
  • 抑制过拟合(降低Dropout等的必要性)。

考虑到深度学习要花费很多时间,第一个优点令人非常开心。另外,后
两点也可以帮我们消除深度学习的学习中的很多烦恼。

如前所述,Batch Norm的思路是调整各层的激活值分布使其拥有适当
的广度。为此,要向神经网络中插入对数据分布进行正规化的层,即Batch
Normalization 层(下文简称Batch Norm层),如图6-16 所示。

Batch Norm,顾名思义,以进行学习时的mini-batch 为单位,按minibatch
进行正规化。具体而言,就是进行使数据分布的均值为0、方差为1 的
正规化。用数学式表示的话,如下所示。

μ B ← 1 m ∑ i = 1 m x i \mu_B \leftarrow \frac{1}{m} \sum_{i=1}^m x_iμBm1i=1mxi

σ B 2 ← 1 m ∑ i = 1 m ( x i − μ B ) 2 \sigma_B^2 \leftarrow \frac{1}{m} \sum_{i=1}^m (x_i - \mu_B)^2σB2m1i=1m(xiμB)2

x ^ i ← x i − μ B σ B 2 + ϵ \hat{x}_i \leftarrow \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}x^iσB2+ϵxiμB
这里对mini-batch 的m个输入数据的集合B = x 1 , x 2 , . . . , x m B = {x_1, x_2, . . . , x_m}B=x1,x2,...,xm求均值
μB 和方差$\sigma_B^2 \leftarrow \frac{1}{m} $。然后,对输入数据进行均值为0、方差为1(合适的分布)的
正规化。式(6.7)中的ε 是一个微小值(比如,10e-7等),它是为了防止出现
除以0 的情况。

式(6.7)所做的是将mini-batch 的输入数据x 1 , x 2 , . . . , x m {x_1, x_2, . . . , x_m}x1,x2,...,xm变换为均值为0、方差为1 的数据,非常简单。通过将这个处理插入到
激活函数的前面(或者后面)A,可以减小数据分布的偏向。

接着,Batch Norm层会对正规化后的数据进行缩放和平移的变换,用
数学式可以如下表示。

y i ← γ x ^ i + β y_i \leftarrow \gamma \hat{x}_i + \betayiγx^i+β

这里,γ 和β 是参数。一开始γ = 1,β = 0,然后再通过学习调整到合
适的值。

上面就是Batch Norm的算法。这个算法是神经网络上的正向传播。如
果使用第5 章介绍的计算图,Batch Norm可以表示为图6-17。

Batch Norm的反向传播的推导有些复杂,这里我们不进行介绍。不过
如果使用图6-17的计算图来思考的话,Batch Norm的反向传播或许也能比较
轻松地推导出来。Frederik Kratzert 的博客“Understanding the backward
pass through Batch Normalization Layer”[13] 里有详细说明,感兴趣的读者
可以参考一下。

Batch Normalization的评估

现在我们使用Batch Norm 层进行实验。首先,使用MNIST数据集,观察使用Batch Norm层和不使用Batch Norm层时学习的过程会如何变化(源
代码在ch06/batch_norm_test.py中),结果如图6-18 所示。

从图6-18 的结果可知,使用Batch Norm后,学习进行得更快了。接着,
给予不同的初始值尺度,观察学习的过程如何变化。图6-19 是权重初始值的
标准差为各种不同的值时的学习过程图。

我们发现,几乎所有的情况下都是使用Batch Norm时学习进行得更快。
同时也可以发现,实际上,在不使用Batch Norm的情况下,如果不赋予一
个尺度好的初始值,学习将完全无法进行。

综上,通过使用Batch Norm,可以推动学习的进行。并且,对权重初
始值变得健壮(“对初始值健壮”表示不那么依赖初始值)。Batch Norm具备
了如此优良的性质,一定能应用在更多场合中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 15:40:22

车机系统触控界面自动化测试实践

车机系统(车载信息娱乐系统)作为现代汽车的核心组件,集成导航、媒体播放、车辆控制等功能,其触控界面的稳定性和响应速度直接影响驾驶安全与用户体验。自动化测试能显著提升效率,减少手动重复劳动,并确保界…

作者头像 李华
网站建设 2026/4/18 12:08:06

毕设项目分享 深度学习yolo11电动车骑行规范识别系统(源码+论文)

文章目录0 前言1 项目运行效果2 课题背景2.1. 城市交通发展现状2.2. 电动车交通安全问题2.2.1 事故频发现状2.2.2 监管难点分析2.3. 技术发展背景2.3.1 计算机视觉技术进步2.3.2 智能交通系统发展2.4. 项目研究意义4.1 理论价值2.4.2 实践价值2.5. 国内外研究现状2.5.1 国际研究…

作者头像 李华
网站建设 2026/4/23 9:59:00

openplc runtime REST API 参考( 英-->中)

openplc runtime REST API 参考( 英—>中) 概述 OpenPLC Runtime v4 提供了一个内部 REST API,通过 HTTPS 协议提供服务,供 OpenPLC Editor 桌面应用程序使用。该 API 并非设计为供最终用户直接交互,但可用于高级集成或诊断。 所有端点均可通过 https://<主机>:…

作者头像 李华
网站建设 2026/4/23 11:18:43

防爬虫机制下的自动化测试绕过方案

随着网站安全防护升级&#xff0c;防爬虫机制&#xff08;如Cloudflare、行为分析系统&#xff09;日益严密&#xff0c;常误判自动化测试脚本为恶意爬虫&#xff0c;导致测试中断或数据获取失败。本文针对软件测试从业者&#xff0c;系统解析主流反爬机制原理&#xff0c;并提…

作者头像 李华
网站建设 2026/4/23 9:54:18

Elastic 和 Alteryx:为企业 agents 提供可信、可搜索的数据基础

作者&#xff1a;来自 Elastic Sunnie Weber Elastic 很高兴与 Alteryx 合作&#xff0c;帮助组织用可信、业务就绪的数据将 AI agents 开发落地。通过结合 Alteryx 的受治理数据准备平台与 Elasticsearch 的向量数据库和上下文工程平台&#xff0c;我们让像你这样的企业能够构…

作者头像 李华