批标准化是优化深度神经网络中最激动人心的最新创新之一。实际上它并不是一个优化算法,而是一个自适应的重参数化的方法,试图解决训练非常深的模型的困难。非常深的模型会涉及多个函数或层组合。在其他层不变的假设下,梯度用于如何更新每一个参数。在实践中,我们同时更新所有层。当我们进行更新时,可能会发生一些意想不到的结果这是因为许多组合在一起的函数同时改变时,计算更新的假设是其他函数保持不变。举一个例子,假设我们有一个深度神经网络,每一层只有一个单元,并且在每个隐藏层不使用激活函数:深度模型中的优化(五)、优化策略与元算法_激活函数此处,深度模型中的优化(五)、优化策略与元算法_方差_02表示用于层深度模型中的优化(五)、优化策略与元算法_方差_03的权重。层深度模型中的优化(五)、优化策略与元算法_方差_03的输出是深度模型中的优化(五)、优化策略与元算法_参数化_05。输出深度模型中的优化(五)、优化策略与元算法_参数化_06是输入x的线性函数,但是权重wi的非线性函数。假设代价函数深度模型中的优化(五)、优化策略与元算法_参数化_06上的梯度为1,所以我们希望稍稍降低深度模型中的优化(五)、优化策略与元算法_参数化_06。然后反向传播算法可以计算梯度深度模型中的优化(五)、优化策略与元算法_权重_09。想想我们在更新深度模型中的优化(五)、优化策略与元算法_方差_10时会发生什么。近似深度模型中的优化(五)、优化策略与元算法_参数化_11的一阶泰勒级数会预测深度模型中的优化(五)、优化策略与元算法_参数化_11的值下降深度模型中的优化(五)、优化策略与元算法_标准差_13。如果我们希望深度模型中的优化(五)、优化策略与元算法_参数化_11下降深度模型中的优化(五)、优化策略与元算法_标准差_15,那么梯度中的一阶信息表明我们应设置学习率深度模型中的优化(五)、优化策略与元算法_参数化_16深度模型中的优化(五)、优化策略与元算法_权重_17。然而,实际的更新将包括二阶、三阶直到深度模型中的优化(五)、优化策略与元算法_标准差_18阶的影响。深度模型中的优化(五)、优化策略与元算法_方差_19的更新值为:

                                                      深度模型中的优化(五)、优化策略与元算法_权重_20

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

批标准化提出了一种机会可以重参数化所有深度网络的优雅方法。重参数化显著减少了多层之间协调更新的问题。批标准化可应用于网络的任何任何输入层或隐藏层。设H是需要标准化的某层的小批量激活函数,排列为设计矩阵,每个样本的激活出现在矩阵的每一行中。为了标准化H,我们将其替换为:

                                                                                 深度模型中的优化(五)、优化策略与元算法_参数化_24

其中深度模型中的优化(五)、优化策略与元算法_参数化_25是包含每个均值的向量,深度模型中的优化(五)、优化策略与元算法_激活函数_26是包含每个单元标准化的向量。此处的算术是基于广播向量深度模型中的优化(五)、优化策略与元算法_参数化_25和向量深度模型中的优化(五)、优化策略与元算法_标准差_28应用于矩阵深度模型中的优化(五)、优化策略与元算法_权重_29的每一行,运算是逐元素的,因此深度模型中的优化(五)、优化策略与元算法_权重_30标准化为减去深度模型中的优化(五)、优化策略与元算法_权重_31,再除以深度模型中的优化(五)、优化策略与元算法_方差_32。网络的其余部分操作深度模型中的优化(五)、优化策略与元算法_标准差_33的方式和原网络操作深度模型中的优化(五)、优化策略与元算法_权重_29的方式一样。

在训练阶段,

                                                                             深度模型中的优化(五)、优化策略与元算法_参数化_35

                                                                            深度模型中的优化(五)、优化策略与元算法_参数化_36

其中深度模型中的优化(五)、优化策略与元算法_参数化_37是个很小的正值,比如深度模型中的优化(五)、优化策略与元算法_权重_38,以强制避免遇到深度模型中的优化(五)、优化策略与元算法_标准差_39的梯度在深度模型中的优化(五)、优化策略与元算法_方差_40处未定义的问题。至关重要的是,我们反向传播这些操作。来计算均值和标准差,并应用于标准化深度模型中的优化(五)、优化策略与元算法_方差_41。这意味着,梯度不会再简单地增加深度模型中的优化(五)、优化策略与元算法_方差_42的标准差或均值:标准化操作会除掉这一操作的影响,归零其在梯度中的元素,这是批标准化方法的一个重大创新。以前的方法添加代价函数的惩罚,以鼓励单元标准化激活统计量,或者在每个梯度下降步骤之后重新标准化单元统计量。前者通常会导致不完全的标准化。而后者通常会显著地消耗时间,因为学习算法会反复改变均值和方差而标准化步骤会反复抵消这种变化。批标准化重参数化模型,以使一些单元总是被定义标准化,巧妙地回避了这两个问题。

在测试阶段,深度模型中的优化(五)、优化策略与元算法_参数化_25深度模型中的优化(五)、优化策略与元算法_激活函数_26可以被替换为训练阶段收集的运行均值。这使得模型可以对单一样本评估,而无须使用定义于整个小批量的深度模型中的优化(五)、优化策略与元算法_标准差_45深度模型中的优化(五)、优化策略与元算法_标准差_46。回顾例子深度模型中的优化(五)、优化策略与元算法_权重_47,我们看到,可以通过标准化深度模型中的优化(五)、优化策略与元算法_激活函数_48很大程度上地解决学习这个模型的问题。假设深度模型中的优化(五)、优化策略与元算法_参数化_49采样子一个单位高斯,那么深度模型中的优化(五)、优化策略与元算法_激活函数_48也是来自高斯,因为从深度模型中的优化(五)、优化策略与元算法_参数化_49深度模型中的优化(五)、优化策略与元算法_激活函数_52的变换是线性的。然而,深度模型中的优化(五)、优化策略与元算法_激活函数_48不再有零均值和单位方差。使用批标准化后,我们得到的归一化深度模型中的优化(五)、优化策略与元算法_权重_54恢复了零均值和单位方差的特性。对于底层的几乎任意更新而言,深度模型中的优化(五)、优化策略与元算法_权重_54仍然保持着单位高斯。然后输出深度模型中的优化(五)、优化策略与元算法_参数化_56可以学习为一个简单的线性函数深度模型中的优化(五)、优化策略与元算法_激活函数_57.现在学习这个模型非常简单,因为底层的参数在大多数情况下没有什么影响。改变某个底层权重为零,可能使输出退化;改变底层权重的符号可能翻转深度模型中的优化(五)、优化策略与元算法_权重_54深度模型中的优化(五)、优化策略与元算法_权重_59之间的关系。这些情况都是非常罕见的。没有标准化,几乎每一个更新都会对深度模型中的优化(五)、优化策略与元算法_激活函数_48的统计量有着极端的影响。因此,批标准化显著地使得模型更易学习。在这个示例中,容易学习的代价是使得底层网络没有用。在我们的线性示例中,较低层不再有任何有害的影响,但它们也不再有任何有益的影响。这是因为我们已经标准化了一阶和二阶统计量,这是线性网络可以影响的所有因素。在具有非线性激活函数的深度网络中,较低层可以进行数据的非线性变换,所以它们仍然是有用的。批标准化仅标准化每个单元的均值和方差,以稳定化学习,但允许单元和单个的非线性统计量之间的关系发生变化。

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

标准化一个单元的均值和标准差会降低包含该单元的神经网络的表达能力。为了保持网络的表现力,通常会将批量隐藏单元激活H替换为深度模型中的优化(五)、优化策略与元算法_参数化_61,而不是简单地使用标准化的H'。变量深度模型中的优化(五)、优化策略与元算法_标准差_62深度模型中的优化(五)、优化策略与元算法_激活函数_63是允许新变量有任意均值和标准差的学习参数。乍一看,这似乎是无用的------为什么我们将均值设为深度模型中的优化(五)、优化策略与元算法_标准差_64,然后又引入了参数允许它被重设为任意值深度模型中的优化(五)、优化策略与元算法_激活函数_63?答案是新的参数可以表示旧参数作为输入的同一族函数,但是新参数有不同的学习动态。在旧参数中,H的均值取决于H下层中参数的复杂关联。在新参数中,深度模型中的优化(五)、优化策略与元算法_参数化_66的均值仅由深度模型中的优化(五)、优化策略与元算法_激活函数_63确定。新参数很容易通过梯度下降来学习。大多数神经网络层会取深度模型中的优化(五)、优化策略与元算法_方差_68的形式,其中深度模型中的优化(五)、优化策略与元算法_标准差_69是某个固定的非线性激活函数,如整流线线性变换。自然想到我们应该将批标准化应用于输入深度模型中的优化(五)、优化策略与元算法_标准差_70还是变换后的值深度模型中的优化(五)、优化策略与元算法_激活函数_71。更具体地讲,深度模型中的优化(五)、优化策略与元算法_激活函数_71应替换为深度模型中的优化(五)、优化策略与元算法_权重_73的标准化形式。偏置项应被忽略,因为参数深度模型中的优化(五)、优化策略与元算法_激活函数_63会加入批标准化重参数化,它是冗余的。一层的输入通常是前一层的非线性激活函数(如整流线性函数)的输出。因此,输入的统计量更符合非高斯,而更不服从线性操作的标准化。