为什么必须谨慎进行批标准化的示例有什么解释?


11

我正在阅读批处理规范化论文 [1],其中有一个小节通过一个示例,试图说明为什么必须仔细进行规范化。老实说,我无法理解该示例的工作原理,并且我真的很好奇能够尽可能多地了解它们。首先让我在这里引用一下:

例如,考虑一个带有输入u的层,该层添加了学习的偏差b,并通过减去对训练数据计算的激活平均值来对结果进行归一化:其中 是训练集上的值的集合,。如果梯度下降步骤忽略了对的依赖性,则它将更新,其中。然后,。因此,更新到的组合X=Ü+bX={X1Ñ}Xë[X]=Σ Ñ = 1 Xë[X]bbb+Δ>bΔbα-x^=xE[x]x=u+b,X={x1...N}xE[x]=i=1NxiE[x]bbb+Δ>b ù+b+Δb-ë[Ü+b+Δb]=Ü+b-ë[Ù+b]bΔblx^u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]b 规范化的后续更改不会导致图层输出的更改,也不会导致损失。

我想我理解以下信息:如果没有正确地进行规范化,则可能会很糟糕。我只是不知道他们使用的示例如何描述这一点。

我知道,如果某人对困惑的人没有更加具体的了解,这将很难帮助他们,因此我将在下一部分中提供使我困惑的事情。


我认为我的大多数困惑可能都是符号上的,因此我将澄清一下。

首先,我认为让我感到困惑的一件事是作者在网络中拥有一个单位的含义以及激活是什么。通常,我认为激活是:

x(l)=a(l)=θ(z(l))=θ(w(l),x(l1)+b(l))

其中是来自第一个输入层的原始特征向量。x(0)=a(0)=x

另外,我认为(由于先前的原因)使我感到困惑的第一件事是他们试图解释的情况确实如此。它说:

通过减去对训练数据计算的激活平均值来标准化结果:其中X=Ü+bx^=xE[x]x=u+b

我认为他们想说的是,与其使用前向通过计算得到的激活而是通过减去均值激活来执行某种“规范化” :x(l)=a(l)

x¯l=a¯l=1Ni=1Na¯l=1Ni=1Nx¯l

然后将其传递给反向传播算法。或至少那对我有意义。

与此相关,我想他们所说的可能是?那就是我会猜到的,因为他们称其为“输入”,并且具有等式(我想他们正在为其神经网络使用同一性/线性激活单元吗?)。x l x = u + bux(l)x=u+b

为了进一步混淆我,他们将定义为与偏导数成正比的东西,但是偏导数是相对于,这在我看来真的很奇怪。通常,使用梯度下降时的偏导数是相对于网络参数而言的。在抵销的情况下,我会想到:XΔbx^

Δb(l)lb(l)

而不是对标准化激活取导数更有意义。我试图理解为什么他们要对取导数,并且我认为也许他们在编写时是指增量。通常,这是反向支持算法的唯一部分,它具有关于预激活的导数,因为delta的等式是:x^lx^

δj(l)=Lzj(l)

令我困惑的另一件事是:

然后。u+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]

他们并没有真正说出在上式中要计算的内容,但我想推断出,在更新为之后,他们正在尝试计算更新的归一化激活(对于第一层?)。不知道我是否愿意购买他们的积分,因为我认为正确的方程应该是:bb+Δb

x^=θ(u+(b+Δb))E[θ(u+(b+Δb))]

不会取消参数的更改。但是,我真的不知道他们在做什么,所以我只是在猜测。他们写的方程到底是什么?Δbb

我不确定这是否是正确的理解,但是我已经考虑了他们的例子。他们的示例似乎没有非线性激活单元(使用标识),并且他们仅在谈论第一个输入层?由于他们遗漏了很多细节,而且记号也不是很清楚,因此我无法确切推断出他们在说什么。有人知道如何用表示每一层发生情况的表示法来表达此示例吗?有人了解该示例的实际情况并想与我分享他们的智慧吗?


[1]:Ioffe S.和Szegedy C.(2015),
“批处理规范化:通过减少内部协变量偏移来加速深层网络训练”,
第32届国际机器学习会议论文集,法国里尔,2015年
。机器学习杂志研究:W&CP卷37


我认为该款的符号性质现在很清楚,但它试图传达的信息和目的尚不清楚。
查理·帕克

Answers:


3

我认为,本段的要点是,如果梯度下降步骤忽略了对的依赖性,则更新偏置项b不会导致输出不变E[x]b,如前面的句子中所述,

但是,如果将这些修改散布在优化步骤中,则梯度下降步骤可能会尝试以需要更新规范化的方式来更新参数,从而降低了梯度步骤的效果。

因此,他们使梯度下降步骤意识到了方法中的归一化。


关于你的问题

与此相关,我想他们所说的可能是?ux(l)

如他们的第一句话所述,是图层的输入。什么实际上似乎并不重要,因为他们只表示效果的例子。uub

我本以为更有意义,而不是对归一化的激活取导数。Δblb

我们知道,因为我们忽略了对的依赖性,所以有 所以。x^=xE[x]=u+bE[x]E[x]b

lb=lx^x^b=lx^,
Δblx^

b b + Δ bu+(b+Δb)E[u+(b+Δb)]=u+bE[u+b]他们并没有真正说出在上式中要计算的内容,但我推断他们将更新为后,他们正尝试计算更新的归一化激活(对于第一层?)。bb+Δb

在将更新为,它正在计算,以表明如果梯度下降步骤忽略了对的依赖性,则更新偏置项b不会导致b的变化。输出。 bb+Δbë[X]bx^bb+ΔbE[x]b


看看批处理规范化的一些开源实现,例如在LasagneKeras中,可能会有所帮助。

还有一个似乎相关的问题:为什么在神经网络中使用批量归一化时采用矩梯度(均值和方差)?


所以我想他们的意思是他们需要让GD更新了解规范化,以便在更新偏差时损失发生变化?还是该段的主要目标是什么?
查理·帕克

@CharlieParker是的,我想是这样,以表明有理由让GD更新意识到标准化(IMO)。
dontloo '16

E [Δb] =Δb?如果是这样,为什么?
MichaelSB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.