当所有特征都在同一尺度上时,为什么要规范化?

数据挖掘 机器学习 张量流 正常化
2022-02-17 03:32:01

所以我正在做这里找到的 tensorflow 教程:

https://www.tensorflow.org/tutorials/keras/basic_classification

基本上,我的输入是一个 [28x28] 矩阵(图像),我将其展平为 [1x784] 向量。

然后教程说:

在馈送到神经网络模型之前,我们将这些值缩放到 0 到 1 的范围。为此,将图像组件的数据类型从整数转换为浮点数,然后除以 255。

我的问题是为什么我们需要在这种情况下进行标准化?我的理解是,当我们有不同尺度的特征时,如果模型的输出没有失真,我们就需要归一化。但在这种情况下,所有像素范围都从 0 到 255(所有特征都是相同的比例)

我继续使用归一化运行它,并获得超过 85% 的准确度,而没有归一化,我的准确度下降到 10%。

有任何想法吗?

2个回答

对于神经网络,还有另一个原因。Sigmoid 函数提供 0 到 1 之间的值;如果任务是二进制分类,您将在输出处使用 sigmoid 函数。对于另一项任务,您可能在某个层使用了 tanh 函数,该神经元的中心输入在计算上工作得很好。

原因如下;在某些输入值的范围之外,激活函数的导数将接近于零。在这些点上,由于权重更新较小,梯度下降步骤将非常缓慢。直接考虑相关激活函数的二维函数图,并考虑导数接近于零的输入值范围。这就是为什么整流线性单元 (ReLU) 或泄漏整流线性单元 (Leaky ReLU) 在输入大于 1 时在大多数任务中优于其他任务,导数为 1。

另请参阅:https ://stats.stackexchange.com/questions/51012/must-i-normalize-inputs-into-a-perceptron-that-uses-a-sigmoid-activation-functio

您的所有功能都在相同的范围内,真的;但是,不能保证它们沿该比例均匀分布。根据图像的不同,您可能有一个低值特征的大背景和高值特征的小图像,这将被淹没。

归一化使您的特征平均值为 0,标准差为 1,这意味着平均值为 223 的特征不会支配平均值为 10 的特征,反之亦然。