为什么我们必须对人工神经网络的输入进行归一化?


151

关于神经网络理论,这是一个主要问题:

为什么我们必须对神经网络的输入进行归一化?

我了解有时,例如当输入值是非数字的时,必须执行某些转换,但是当我们有数字输入时?为什么数字必须在一定间隔内?

如果数据不规范会怎样?


1
我投票结束这个问题是因为题外,因为它属于Stats SE或AI SE。
nbro

Answers:


101

在这里很好地解释

如果像MLP [多层感知器]中那样线性组合输入变量,那么至少从理论上讲,几乎没有必要对输入进行标准化。原因是通过更改相应的权重和偏差可以有效地撤消输入矢量的任何重新缩放,从而使您获得与以前完全相同的输出。但是,出于各种实际原因,标准化输入可以使训练更快并减少陷入局部最优的机会。同样,使用标准输入可以更方便地完成权重衰减和贝叶斯估计。


2
嗨,在MLP中,在使用恒定学习率的同时不能对功能进行标准化会导致针对不同尺寸的反向传播校正中的补偿过度/补偿不足吗?我从以下后想如果这是独家细胞神经网络,或者如果业主有限合伙制可以共享这个问题:stats.stackexchange.com/questions/185853/...
奥斯汀

问题:梯度下降选择。过程可能需要更长的时间。为什么?当特征的比例不同时(x1 = 0-1和x2 = 0..1000),误差函数面可能会变长。含义:针对不同的暗度(w1,w2)使用不同的比例。但是学习速度是所有昏暗状态的相同 ->延长昏暗状态(w2)的步长非常小,直到达到本地最小值为止。问题:无法包含LR,因为它将跳过另一个昏暗(w1)中的本地分钟。请参阅youtube.com/watch?reload=9&v=UIp2CMI0748上的
Dekel,

这是一个线性示例,其中如果不进行扩展,情况将会很糟糕:stackoverflow.com/q/59319643。知道为什么吗?
AlwaysLearning

61

在神经网络中,不仅要对数据进行规范化而且还要对它们进行缩放是一个好主意。这是为了更快地在错误表面接近全局最小值。请看以下图片: 归一化前后的误差面

缩放前后的误差表面

图片取自有关神经网络的课程。该课程的作者是杰弗里·欣顿。


14
您最好将您发布的图形的作者归功于该图形的作者。该图形显然取材于杰弗里·欣顿的课程
里卡多·克鲁兹

5
我发现这段视频对解释上面的图表确实很有帮助,但对我而言,这显然并不明显。
chris838 '19

21

NN的某些输入可能没有“自然定义”的值范围。例如,平均值可能很慢,但会随着时间的推移而不断增加(例如,数据库中的许多记录)。

在这种情况下,将此原始值馈送到您的网络中将无法很好地工作。您将根据范围的较低部分教您的网络,而实际输入将来自该范围的较高部分(并且很可能超出了该网络已学会使用的范围)。

您应该将该值标准化。例如,您可以告诉网络自上次输入以来值已更改了多少。通常可以在特定范围内高概率地定义此增量,这使其成为网络的良好输入。


关于在先前的一组输入上进行标准化的很好提示。这使用户不必定义任意归一化因子。但是我怀疑如果归一化因子是应用于每个输入向量的全局常数,则网络将训练得更加准确。
davide

11

从外部看神经网络,它只是一个带有一些参数并产生结果的函数。与所有功能一样,它具有一个域(即一组法律论点)。您必须标准化要传递给神经网络的值,以确保它在域中。与所有函数一样,如果参数不在域中,则不能保证结果是适当的。

神经网络对域外部参数的确切行为取决于神经网络的实现。但是总的来说,如果参数不在域中,则结果将无用。


16
如果您使用通常的激活函数(ReLu或Sigmoid),则域始终是整个空间R ^ n。因此,这不是将数据标准化的原因。
Joker123 '18

1
这也不能解释为什么图像被规范化,因为它们已经具有域0-255
DollarAkshay

4

在将输入特征馈送到神经网络之前,我们必须对其进行规范化的原因有两个:

原因1:如果a Feature中的a 的Dataset大小比其他a 大,则此大比例的功能将占主导地位,其结果是,神经网络的预测将不准确。

示例:对于雇员数据,如果我们考虑年龄和薪水,年龄将是两位数,而薪水可以是7或8位(100万,等等)。在这种情况下,薪水将主导神经网络的预测。但是,如果我们对这些特征进行归一化,则两个特征的值都将位于(0到1)的范围内。

原因2:神经网络的正向传播涉及具有输入特征的权重的点积。因此,如果值很高(对于图像和非图像数据),则输出的计算会占用大量的计算时间以及内存。反向传播期间也是如此。因此,如果输入未标准化,则模型收敛缓慢。

示例:如果我们执行图像分类,则图像的大小将非常庞大,因为每个像素的值范围从0到255。在这种情况下,规范化非常重要。

下面提到的是规范化非常重要的情况:

  1. K均值
  2. K最近邻居
  3. 主成分分析(PCA)
  4. 梯度下降

2

我相信答案取决于情况。

考虑将NN(神经网络)作为运算符F,使得F(input)= output。如果此关系是线性的,因此F(A * input)= A * output,那么您可以选择不对输入/输出进行原始形式的标准化处理,或者对两者进行标准化处理以消除A。显然,这种线性假设是在分类任务或几乎所有输出概率的任务中违反的任务,其中F(A *输入)= 1 *输出

在实践中,归一化允许不可拟合的网络可拟合,这对实验人员/程序员至关重要。然而,归一化的精确影响将不仅取决于网络体系结构/算法,而且取决于输入和输出的统计先验。

而且,NN通常被用来以黑盒的方式解决非常棘手的问题,这意味着潜在的问题可能具有非常差的统计表述,从而难以评估标准化的影响,从而导致技术优势(变得可适应)主导其对统计的影响。

从统计意义上讲,归一化删除了被认为在预测输出时无因果的变化,以防止NN将其作为预测变量学习(NN无法看到此变化,因此无法使用它)。


2

当您使用非标准化的输入功能时,损失函数可能会具有非常长的谷值。当使用梯度下降进行优化时,这会成为一个问题,因为相对于某些参数而言,梯度会很陡。当您在陡峭的斜坡之间跳动时,这会导致搜索空间出现较大的振荡。作为补偿,您必须以较小的学习率稳定优化。

考虑特征x1和x2,其范围分别从0到1和0到1百万。事实证明,相应参数(例如w1和w2)的比率也会很大。

归一化倾向于使损失函数更加对称/球形。这些更容易优化,因为渐变趋向于指向全局最小值,您可以采取更大的步骤。


1

之所以需要进行规范化是因为,如果您查看自适应步骤如何在函数域中的某个位置进行,并且只是将问题简单地传递到等效步骤,该步骤就可以在某个方向上通过某个较大的值进行平移。域,那么您将获得不同的结果。归结为使线性片段适应数据点的问题。工件不转动应移动多少,并且应针对该训练点转动多少?在域的不同部分更改适应程序毫无意义!因此需要归一化以减少训练结果的差异。我还没有写这本书,但是您可以看一下简单线性函数的数学,以及如何在两个不同地方的一个训练点对它进行训练。在某些地方,该问题可能已得到纠正,但是我对它们并不熟悉。在ALN中,问题已得到纠正,如果您写信给wwarmstrong AT shaw.ca,可以给您发送论文


-9

根据我们数据的复杂性使用隐藏层。如果我们具有线性可分离的输入数据,那么我们就不需要使用隐蔽层,例如“或”门,但是如果我们具有不可线性分离的数据,那么我们就需要使用隐蔽层,例如ExOR逻辑门。在任何层上获取的节点数取决于我们输出的交叉验证程度。

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.