【发布时间】:2020-04-18 10:30:46
【问题描述】:
向输出数据添加噪声是否用作正则化技术以避免对训练数据的过度拟合?
它如何减少泛化错误并帮助正则化,因为据我所知,正则化与我们模型的复杂性直接相关。
它与训练模型的复杂性有何关系?
【问题讨论】:
标签: machine-learning deep-learning neural-network artificial-intelligence
向输出数据添加噪声是否用作正则化技术以避免对训练数据的过度拟合?
它如何减少泛化错误并帮助正则化,因为据我所知,正则化与我们模型的复杂性直接相关。
它与训练模型的复杂性有何关系?
【问题讨论】:
标签: machine-learning deep-learning neural-network artificial-intelligence
为什么它可以防止过拟合?
噪音会破坏信息。您的数据变得更难拟合,因此更难过度拟合。极端情况是纯噪声,您的分类器将学会忽略输入并预测每个类的固定概率。这与过度拟合相反:在您的验证集上,您将达到与训练期间完全相同的性能。
为什么这有助于泛化?
通过添加噪声,您可以使用附加信息来扩充训练集。你告诉你的神经网络,你添加的那种噪音不应该改变它的预测。如果这是真的,那么它会更好地泛化,因为它已经了解了输入空间的更大部分。如果它是假的,它实际上会使泛化变得更糟,例如,如果你正在从 10 位输入学习 XOR 函数。
输出噪声
(更新:哦,您是在专门询问如何在输出中添加噪声。我不知道这是否常见,但我知道它有什么帮助:)
如果以高置信度做出错误预测,典型的损失函数(例如交叉熵)将对错误预测产生非常大的惩罚。在过拟合期间,网络会发现很多完美的预测变量(复杂的模型会开始记住每个训练输入)。将调整权重以无限增加置信度。在输出中添加噪声可以防止这种情况发生,因为它告诉网络它永远无法做出高质量的预测。这将减轻对验证集错误造成的高额惩罚。它还将防止只会增加虚假信心的破坏性权重更新。
【讨论】:
将噪声添加到用作正则化技术的输出数据中 避免过度拟合训练数据?
简短的回答是肯定的,@maxy's 正确指出了原因。我假设您的意思是向模型的输入数据添加噪声,而不是向模型的输出添加噪声,尽管也可以使用此类技术(不同讨论的主题)。
它如何减少泛化错误并帮助正则化 因为据我所知,正则化是直接 与我们模型的复杂性有关。
这可能有助于概括,也可能没有帮助,上述答案已经提出了极端噪音情况。
通常,对于高维输入(比如300 特征或图像),假设必要信息位于低维manifold 上。下图应该有助于直观理解这个想法(图片来自sklearn):
正如我们所看到的,即使原始数据是三个维度的,它也可以很好地呈现在两个维度中。这就是神经网络的作用,它将输入数据转换为另一种数据表示(有时是更高维度的)以允许解决任务(例如,通过后续层转换图像,以便它们在最后一层中线性可分)。
但它与噪音有什么关系?神经网络是强大的拟合器(复杂模型,将移至该模型),因此如果没有足够的数据点,它可以学习一个不像图像中呈现的那样平滑和漂亮的转换(流形)。当网络在没有增强的情况下进行训练并在测试阶段获得非常相似的输入时,它可能会错误地将其转换为完全不同的空间区域,并可能对其进行错误的分类。
添加噪声后,神经网络会看到更多代表该类的数据点,因此它必须学习创建更平滑的数据表示,其中输入的微小变化不会极大地改变其输出。
最后,假设test 和train 来自相同(或至少非常相似)分布。当我们通过噪声更好地了解train 的分布时,理解test 的机会也会增加,因此它通常有助于泛化。
它与训练模型的复杂性有何关系?
神经网络非常擅长逼近,并且可以学习的函数空间很大(函数空间大可以被认为是复杂度)。现在,输入数据的许多功能(转换)可能会很好地完成手头的任务(从现在开始让我们坚持分类)。
没有增强或正则化,神经网络没有动力去学习不太复杂的函数,这些函数可能有更高的机会更好地表示真实的转换(根据Occam's razor)。当添加噪声时,许多复杂的功能不再是可行的选择,因为它们高度依赖于输入的微小变化。因此,在使用噪声之后,神经网络在函数空间中可能不那么复杂(dropout、权重衰减和其他类似的东西也是如此)。
这不会被噪音改变,因为架构是预定义的。只有权重更“合理”(例如,在极端情况下,没有权重具有 1000 或 -1000 值,因为对于单个特征而言,这些值的方差太大),实际上如上所述。
【讨论】: