神经网络标准化输出数据

Posted

技术标签:

【中文标题】神经网络标准化输出数据【英文标题】:Neural Networks normalizing output data 【发布时间】:2017-07-25 01:28:59 【问题描述】:

我有 NN 的训练数据以及预期输出。每个输入都是 10 维向量,并且有 1 个预期输出。我已经使用高斯对训练数据进行了归一化,但我不知道如何对输出进行归一化,因为它只有一维。有什么想法吗?

例子:

原始输入向量:-128.91、71.076、-100.75、4.2475、-98.811、77.219、4.4096、-15.382、-6.1477、-361.18

标准化输入向量: -0.6049、1.0412、-0.3731、0.4912、-0.3571、1.0918、0.4925、0.3296、0.4056、-2.5168

上述输入的原始预期输出为 1183.6,但我不知道如何对其进行规范化。我应该将预期输出归一化为输入向量的一部分吗?

【问题讨论】:

如果你用归一化输入向量给 nn 输入什么输出? 你想用网络做什么?这是回归问题吗?您通常不会标准化输出的回归问题。您为回归问题提供的训练数据,预期输出应在您预期的范围内。 你已经反转了输出的规范化 @rayryeng 我明白了。所以只有输入被标准化,输出保持不变。然后训练归一化的输入以产生原始输出,对吗? 没错。训练后,当您使用网络对测试输入进行预测时,您必须以与训练中相同的方式对这些输入进行归一化......使用完全相同的参数。 【参考方案1】:

从您的问题的外观来看,您正在尝试实现某种回归算法。对于回归问题,您通常不会标准化输出。对于您为回归系统提供的训练数据,预期输出应该在您预期的范围内,或者只是您拥有的预期输出的任何数据。

因此,您可以将训练标准化 输入以使训练进行得更快,但您通常不会标准化目标输出。在测试时间或提供新输入时,请确保以与训练期间相同的方式对数据进行标准化。具体来说,在对网络中的任何测试输入进行训练期间,使用完全相同的参数进行归一化。

【讨论】:

如果输出是多元回归值怎么办?假设必须预测 2 个值。例如位置预测的纬度和经度,是否也不需要归一化? @basilisk 如果您有多个输出要回归,那么规范化会有所帮助。这取决于每个维度的范围。请参阅:datascience.stackexchange.com/questions/24214/…。对于单维输出,您通常不会这样做,但对于多维数据,它可以依赖。我对你的建议是两者都试一下,看看哪个效果更好。 感谢您的回答,在这种情况下,“回归然后归一化”是什么意思?我拥有的两个输出是经度和纬度(范围分别是 -180, 180] 和 [-90, 90]。我认为它应该标准化,因为范围不一样,并且它们之间的值可能有很大差异让我们说经度是-180,纬度是90!相比之下,如果我试图跟踪一辆总是在德国的公共汽车,那么经度和纬度的值会更接近,因此可以不规范化目标值。我说的对吗? @basilisk 是的,这两个值的动态范围非常接近。不将两者标准化应该没问题。 “回归”意味着预测。【参考方案2】:

一个重要的说明是您对单个输入向量的元素进行了归一化。拥有一维输出空间,您无法标准化输出。 实际上,正确的方法是获取一批完整的训练数据,比如 N 个输入(和输出)向量,并分别对每个维度(变量)进行归一化(使用 N 个样本)。因此,对于一维输出,您将有 N 个样本进行归一化。这样,你输入的向量空间就不会被扭曲。 当输出变量的尺度空间显着不同时,通常需要对输出维度进行归一化。训练后,您应该使用与从训练数据中获得的相同的归一化参数(例如,对于 zscore,它是“mean”和“std”)。在这种情况下,您会将新的(未见过的)数据放入与训练相同的尺度空间中。

【讨论】:

以上是关于神经网络标准化输出数据的主要内容,如果未能解决你的问题,请参考以下文章

神经网络拥有正态分布的数据重要吗?

MATLAB深度学习多层神经网络

神经网络中的批标准化

神经网络中的批标准化

动手学pytorch-Batch Norm

批标准化—BN