最好的batch normalization 讲解

batch normalization(Ioffe and Szegedy, 2015) 是优化深度神经网络中最激动人 心的最新创新之一。实际上它并不是一个优化算法,而是一个自适应的重新参数化 的方法,试图解决训练非常深层模型的困难。

非常深层的模型会涉及多个函数或层组合。在其他层不改变的假设下,梯度用于如何更新每一个参数。在实践中,我们同时更新所有层。当我们进行更新时,可能会发生一些意想不到的结果,这是因为许多组合在一起的函数同时改变时,计算更新的假设是其他函数保持不变。举一个简单的例子,假设我们有一个深度神经网络,每一层只有一个单元,并且在每个隐藏层不使用激励函数:

yˆ = xw1w2w3 . . . wl。这里,wi 表示用于层 i 的权重。层 i 的输出是 hi = hi−1wi。输出 yˆ 是输入 x 的线性函数,但是权重 wi 的非线性函数。假设我们的代价函数 yˆ 上的梯度为 1,所以我们希望稍稍降低 yˆ。然后反向传播算法可以计算梯度 g = ∇wyˆ。想想我们在更新w ← w − εg 时会发生什么。近似 yˆ 的一阶泰勒级数会预测 yˆ 的值下降 εg⊤g。如果我们希望 yˆ 下降 0.1,那么梯度中的一阶信息表明我们应设置学习率 ε 为

。然而,实际的更新将包括二阶,三阶,直到 l 阶的影响。yˆ 的更新值为

这个更新中所产生的一个二阶项示例是

很小,那么该项可以忽略不计。而如果层 3 到层 l 的权重都比 1 大时,该项可能会指数级大。这 使得很难选择一个合适的学习速率,因为某一层中参数更新的效果很大程度上取决 于其他所有层。二阶优化算法通过考虑二阶相互影响来解决这个问题,但我们可以 看到,在非常深的网络中,更高阶的相互影响会很显著。即使是二阶优化算法,计算 代价也很高,并且通常需要大量近似,以免真正计算所有的重要二阶相互作用。因此对于 n > 2 的情况建立 n 阶优化算法似乎是无望的。那么我们可以做些什么呢?

batch normalization提出了一种几乎可以重新参数化所有深度网络的优雅方法。 重新参数化显著减少了多层之间协调更新的问题。batch normalization可应用于网络 的任何输入层或隐藏层。设 H 是需要标准化的某层的minibatch激励函数,布置为 设计矩阵,每个样本的激励出现在矩阵的每一行中。标准化 H,我们替代它为

其中 μ 是包含每个单元均值的向量,σ 是包含每个单元标准差的向量。此处的算术 是基于广播向量 μ 和向量 σ 应用于矩阵 H 的每一行。在每一行内,运算是逐元素 的,因此 Hi,j 标准化为减去 μj 再除以 σj。网络的其余部分操作 H′ 的方式和原网 络操作 H 的方式一样。

在训练阶段,

其中 δ 是个很小的正值,比如 10−8,以强制避免遇到

的梯度在 z = 0 处未定义 的问题。至关重要的是,我们反向传播这些操作,计算均值和标准差,并应用它们 于标准化 H。这意味着,梯度不会再简单地增加 hi 的标准差或均值;标准化操作会 除掉这一操作的影响,归零其在梯度中的元素。这是batch normalization方法的一个 重大创新。以前的方法添加代价函数的惩罚,以鼓励单位标准化激励统计量,或是 在每个梯度下降步骤之后重新标准化单位统计量。前者通常会导致不完全的标准化, 而后者通常会显著地消耗时间,因为学习算法会反复改变均值和方差而标准化步骤 会反复抵消这种变化。batch normalization重新参数化模型,以使一些单元总是被定 义标准化,巧妙地回避了这两个问题。

在测试阶段,μ 和 σ 可以被替换为训练阶段收集的运行均值。这使得模型可以 对单一样本评估,而无需使用定义于整个minibatch的 μ 和 σ。

回顾例子 yˆ = xw1w2 . . . wl,我们看到,我们可以通过标准化 hl−1 很大程度地 解决学习这个模型的问题。假设 x 采样自一个单位高斯。那么 hl−1 也是来自高斯, 因为从 x 到 hl 的变换是线性的。然而,hl−1 不再有零均值和单位方差。使用batch normalization后,我们得到的归一化 hˆl−1 恢复了零均值和单位方差的特性。对于底层的几乎任意更新而言,hˆl−1 仍然保持着单位高斯。然后输出 yˆ 可以学习为一个简 单的线性函数 yˆ = wlhˆl−1。现在学习这个模型非常简单,因为低层的参数在大多数 情况下没有什么影响;它们的输出总是重新标准化为单位高斯。只在少数个例中,低 层会有影响。改变某个低层权重为 0,可能退化输出;改变低层权重的符号可能反 转 hˆl−1 和 y 之间的关系。这些情况都是非常罕见的。没有标准化,几乎每一个更新 都会对 hl−1 的统计量有着极端的影响。因此,batch normalization显著地使得模型 更易学习。在这个示例中,容易学习的代价是使得底层网络没有用。在我们的线性 示例中,较低层不再有任何有害的影响,但它们也不再有任何有益的影响。这是因 为我们已经标准化了一阶和二阶统计量,这是线性网络可以影响的所有因素。在具 有非线性激励函数的深度神经网络中,较低层可以进行数据的非线性变换,所以它 们仍然是有用的。batch normalization仅标准化每个单元的均值和方差,以稳定化学 习,但允许单元和单个单元的非线性统计量之间的关系发生变化。

由于网络的最后一层能够学习线性变换,实际上我们可能希望移除一层内单 元之间的所有线性关系。事实上,这是Guillaume Desjardins (2015) 中采用的方法, 为batch normalization提供了灵感。令人遗憾的是,消除所有的线性关联比标准化各 个独立单元的均值和标准差代价更高,因此迄今batch normalization仍是最实用的方 法。

标准化一个单元的均值和标准差会降低包含该单元的神经网络的表达能力。为 了保持网络的表现力,通常会取代batch隐藏单元激励 H 为 γH′ + β,而不是简单地 使用标准化的 H′。变量 γ 和 β 是允许新变量有任意均值和标准差的学习参数。乍 一看,这似乎是无用的——为什么我们将均值设为 0,然后又引入参数允许它被重设 为任意值 β?答案是,新的参数可以表示旧参数作为输入的同一族函数,但是新参 数有不同的学习动态。在旧参数中,H 的均值取决于 H 下层中参数的复杂关联。在 新参数中,γH′ + β 的均值仅由 β 确定。新参数很容易通过梯度下降来学习。

大多数神经网络层会采取形式 φ(XW + b),其中 φ 是某个固定的非线性激励函 数,如整流线性变换。自然想到是否我们应该应用batch normalization于输入 X,或 是变换值 XW + b。Ioffe and Szegedy (2015) 推荐后者。更具体地,XW + b 应替换 为 XW 的标准化形式。偏置项应被忽略,因为参数 β 会加入batch normalization重 新参数化,它是冗余的。一层的输入通常是前一层的非线性激励函数,如整流线性函 数,的输出。因此,输入的统计量更符合非高斯,而更不服从线性操作的标准化。

第九章所述的卷积网络,在特征映射中每个空间位置同样地标准化 μ 和 σ 是很 重要的,能使特征映射的统计量不因空间位置而保持相同。

内容摘自:https://github.com/exacity/deeplearningbook-chinese/releases/ 8.7.1

原文发布于微信公众号 - CreateAMind(createamind)

原文发表时间:2017-01-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WD学习记录

机器学习 学习笔记(7)多分类学习与类别不平衡

现实中常遇到多分类学习任务,有些二分类学习方法可以直接推广到多分类,但在更多情况下,是基于一些基本策略,利用二分类学习器来解决多分类问题。

51210
来自专栏算法channel

机器学习集成算法:XGBoost模型构造

《实例》阐述算法,通俗易懂,助您对算法的理解达到一个新高度。包含但不限于:经典算法,机器学习,深度学习,LeetCode 题解,Kaggle 实战。期待您的到来...

39370
来自专栏机器之心

学界 | CMU&FAIR ICCV论文:通过传递不变性实现自监督视觉表征学习

选自arXiv 机器之心编译 参与:路雪、黄小天 通过自监督学习学习视觉表征在计算机视觉领域逐渐开始流行。本文提出可通过不变性的传递实现视觉表征自监督学习,该网...

357150
来自专栏CVer

[计算机视觉论文速递] 2018-04-23

Abstract:我们介绍和解决了Zero-Shot 目标检测(ZSD)的问题,它旨在检测训练期间未观察到的物体类别。我们与一组具有挑战性的对象类一起工作,而不...

11020
来自专栏SIGAI学习与实践平台

三维深度学习中的目标分类与语义分割

在过去的几年中,基于RGB的深度学习已经在目标分类与语义分割方面取得了非常好的效果,也促进了很多技术的发展,深度学习在现实生活中的应用也越来越多。但是在很多实际...

1.9K50
来自专栏目标检测和深度学习

目标检测入门(二):模型的评测与训练技巧

文章结构 ? 检测模型的评测指标 目标检测模型本源上可以用统计推断的框架描述,我们关注其犯第一类错误和第二类错误的概率,通常用准确率和召回率来描述。准确率描述了...

71760
来自专栏专知

主流机器学习算法简介与其优缺点分析

机器学习算法的分类是棘手的,有几种合理的分类,他们可以分为生成/识别,参数/非参数,监督/无监督等。 例如,Scikit-Learn的文档页面通过学习机制对算法...

35030
来自专栏AI科技评论

深度 | 用于大规模行人重识别的行人对齐网络

1.Motivation 近年来,对行人重识别(person re-ID)问题的研究也越来越多了。类比于自然语言处理(nlp)的话,大家或者集中于语义层面的设计...

41180
来自专栏CVer

[计算机视觉论文速递] 2018-03-30

通知:这篇文章有9篇论文速递信息,涉及目标检测、图像分割、目标跟踪、三维重建和立体匹配等方向 PS:由于时间问题,本文没有附上相应图示,还请见谅 前文回顾 Te...

400140
来自专栏新智元

台大李宏毅最新深度学习课程:机器学习及其深层与结构化(347PPT)

【新智元导读】 台大李宏毅老师的深度学习课程以其深入浅出和全面性而受到大家的欢迎。是不可多得的、较为全面的系统的深度学习中文教材。目前,他们在网上贴出了2017...

43570

扫码关注云+社区

领取腾讯云代金券