news 2026/6/10 12:49:46

与学习相关的技巧(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/6/10 17:18:02

Java springboot基于微信小程序的宠物医院系统挂号就诊服务预约(源码+文档+运行视频+讲解视频)

文章目录 系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈 后端框架springboot前端框架vue持久层框架MyBaitsPlus微信小程序介绍系统测试 四、代码参考 源码获取 目的 基于微信小程序的宠物医院系统,采用Spring Boot框架与微信小程序技术&am…

作者头像 李华
网站建设 2026/6/10 14:15:55

稳定性质量系列-高可用领域自动化保障体系建设方案二

高可用自动化保障体系建设,核心是“放弃大而全、聚焦核心痛点”,以“低成本、快落地、可复用”为原则,精简平台建设环节,优先落地“故障早发现、常见故障快处置、上线少出问题”三大核心能力,弱化复杂智能模块&#xf…

作者头像 李华
网站建设 2026/6/10 14:21:22

AI时代的分工重构:开发者与测试员的协同进化

被误读的“取代论” 近年来,“AI将取代测试工程师”的论调甚嚣尘上,尤其伴随全栈工程师能力的泛化,开发者似乎具备了“自测自验”的技术基础。然而,行业数据与实战经验表明:AI并未消灭测试岗位,而是重构其…

作者头像 李华
网站建设 2026/6/10 14:22:42

互联网大厂Java面试:从消息队列到微服务架构场景解析

互联网大厂Java面试:从消息队列到微服务架构场景解析 故事背景 在一家知名互联网大厂的技术面试现场,面试官李云龙严肃地坐在桌前,面试的是一个略显搞笑的程序员谢宝庆。这次面试围绕消息队列与微服务架构展开,场景设定为广告与营…

作者头像 李华
网站建设 2026/6/10 14:24:05

5种方法一键还原Kali无线WiFi密码

大家好,我是Kali与编程讲师老K,致力于帮助小白轻松学会Kali与编程。 你是否碰到忘记已连WiFi密码的棘手难题😣,别担心!接下来你将学会5种一键还原Kali无线WiFi密码的方法,每个方法一条命令讲清楚~ 方法1:…

作者头像 李华