我必须执行回归,将100维向量输入映射到100维向量输出。两者,输入和输出都在0到1200的范围内。 我正在使用使用张量流完全连接的层构建的4层MLP(多层感知器)。正如通常所建议的那样,我将输入归一化,使它们位于0-1范围内。因此,我将输入数据除以其达到的最大值。 但是,这种方法未能产生任何有用的结果(尽管我没有规范化输出)。 此后,我没有对输入进行标准化,并重复了MLP实验。这一次,神经网络表现得相当不错。 我认为由于规范化,所有激活都接近于0,并且未能及时赶上输出"。我在这里错过了什么?我们是否应该始终将输入标准化?
答案 0 :(得分:1)
在您的特定应用程序中,您使用的规范化会使您丢失有价值的信息。在规范化之前考虑以下两个输入:
x1 = [2, ..., 10, ...] # 2 is min, 10 is max
x2 = 5*x1
你可以看到max(x2) = 5*max(x1)
,因此,在归一化后两个样本相等。
因此,在您的情况下,规模信息似乎很重要。失去它会导致糟糕的结果。在不同的应用程序(例如图像处理)中可能并非如此,这种规范化将有助于使学习过程更加顺畅。
为什么规模在您的应用中很重要?我不确定。但我可以举一个医学成像领域的例子。在CT扫描中,每个像素值对应于HU值,其基本上是该特定位置的密度度量。假设我们有两个图像与顶部样本相似的图像,x1
可以对应一个主要包含软组织和x2
骨骼的图像。我们是否要将两者标准化为同一样本?可能不是。
我认为下面的链接是进一步了解规范化/标准化的好资源:
http://sebastianraschka.com/Articles/2014_about_feature_scaling.html#about-standardization