news 2026/2/4 5:02:08

与学习相关的技巧(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/2/2 23:16:34

复杂拖拽交互场景的自动化实现与测试验证策略

随着现代应用交互复杂度的提升,拖拽操作已从基础元素位移发展为涵盖多维交互的复合行为(如图表构建、流程设计、动态表单等)。对软件测试从业者而言,确保此类交互的稳定性面临三大挑战:事件流准确性、状态一致性及跨平…

作者头像 李华
网站建设 2026/2/3 8:05:55

视频播放器控件全功能测试方案

一、核心功能测试模块 基础交互验证 播放控制:测试播放/暂停/停止功能在单次操作、连续操作及与其他功能(如音量调节)并发时的响应逻辑。 进度控制:验证进度条拖拽、快进/快退(含倍速切换)的精确性&#x…

作者头像 李华
网站建设 2026/2/3 20:08:57

智慧校园专项资金申报政策解读:重点支持领域的全面解析

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…

作者头像 李华
网站建设 2026/2/3 10:26:58

所有文件在磁盘上都是字节序列的庖丁解牛

“所有文件在磁盘上都是字节序列” 是计算机存储系统的根本事实。无论文件类型(文本、图片、视频、可执行程序),在磁盘上都以 连续或离散的字节(0–255)序列 存储,无任何语义。文件的“类型”和“意义”完全…

作者头像 李华
网站建设 2026/2/3 22:31:15

开关电源变压器设计1

​​1. 设计思想与核心原则​​ ​​效率优先​​: 效率是电源设计的永恒追求,95%是设定的效率标杆。效率不仅关乎性能,也影响电源的“舒适度”和成本。 ​​变压器优先​​: 变压器是电源系统的核心,其性能对整体效率…

作者头像 李华