为什么要对倾斜轮廓进行特征缩放?
人工智能
神经网络
机器学习
梯度下降
2021-11-04 23:12:46
1个回答
特征缩放是使您的特征具有相等的表示或在函数的最终损失中说。直观地,正如您的图片所暗示的那样,轮廓将沿一个轴拉长(具有更高值的特征)。
另一个例子是假设你必须分离两个数据集群,一个 是变量,(x,2)另一个是变量。现在,如果您使用 sigmoid 激活,sigmoid 总是给出正值,但要分离两个类,您需要在倒数第二层具有负值,因此 NN 将在更长的时间内将权重调整为负值(假设正权重初始化)偏差和其他特征,直到在倒数第二层给出负值。但是通过特征归一化,初始值可能已经是负数,例如.(x,5)x(x,2)(x,2)(x,-1/3)
编辑:根据我对 DataScience.SE 的回答:
- 目的:进行归一化,以便神经网络权重更快地收敛。在 CNN 和深度神经网络中,这特别有帮助,尤其是在 CNN 中,这有助于防止梯度爆炸/消失。
我遇到的规范化最常见的解释是,如果你有 2 个特征,其中一个的规模比另一个大得多,例如房价和房屋面积,那么规模更大的特征将主导输出。在我看来这是非常不正确的,因为当你通过神经网络进行反向传播时,权重更新与激活成正比,因此更大的激活意味着更大的反馈,因此权重会更快地减小并变得更小,直到w1*house price = w2*house area这种关系大致成立。是的,它会导致更多的振荡(直觉上,因为学习率也会乘以更大的规模),但它最终可能会收敛。
因此,使用归一化的最佳 3 个原因是:
- 如果特征的规模很大,则与该特征相关的权重将具有更大的振荡,从而导致收敛速度较慢,如果使用深度 NN,则可能没有收敛,而归一化有助于使值变小
-1 to 1,因此梯度更新也很小,从而导致更快的收敛. - 标准化的最佳直觉可以从斯坦福的这段视频及其后续视频中找到。由于我们知道权重更新与输入成正比,因此它也将始终采用输入的符号(或完全相反的符号)。现在我们知道房价和面积总是正的(至少在我们的宇宙中!)。所以权重更新总是有明确的符号,要么是正的,要么是负的(取决于下游梯度的符号)。但是权重更新可能在第四象限有一个最佳值,因此权重更新必须遵循之字形模式才能有效地在第四象限进行权重更新。

- 最后,当你处理像 CNN 这样的深度神经网络时,如果你不对像素进行归一化,它将导致指数级大/消失的梯度。由于通常
softmax/sigmoid在最后一层使用,它会压缩输出。如果你有一个大的输出,通常是由于未标准化的数据,它会导致精确的 0 或精确的 1 输出,它被输入一个log函数和 BAM!溢出。错误变为inf或NaN在python中。所以inf误差意味着梯度爆炸,NaN意味着梯度无法计算。这可能可以通过使用更高的浮点精度来解决,但它会导致更高的内存和处理器消耗,最终导致效率低下。
TL;DR:归一化用于更快的权重收敛。非标准化数据面临的问题是更大的权重振荡、非最优方向的权重更新、深度神经网络中的精度溢出。
以下是一些很好的链接,可以更好地了解:
