如何在输出中增加噪声以避免过拟合训练点?

时间:2019-12-29 08:38:31

标签: machine-learning deep-learning neural-network artificial-intelligence

是否在输出数据中添加噪声作为正则化技术,以避免训练数据过度拟合?

它如何减少泛化错误并帮助正规化,因为据我所知,正规化与我们模型的复杂性直接相关。

它与训练模型的复杂性有什么关系?

2 个答案:

答案 0 :(得分:2)

为什么它可以防止过拟合?

噪声破坏信息。您的数据变得更难拟合,因此也变得难以拟合。极端情况是纯噪声,您的分类器将学会忽略输入,并预测每个类别的固定概率。那与过度拟合相反:在您的验证集上,您将获得与训练期间完全相同的性能。

为什么这有助于泛化?

通过添加噪声,您可以使用其他信息来增强训练集。您告诉NN,您要添加的噪声种类不会对其预测产生太大影响。如果是这样,那么它将更好地推广,因为它已经了解了输入空间的很大一部分。如果为假,则实际上会使泛化恶化,例如,如果您正在从10位输入中学习XOR函数。

输出噪声

(更新:哦,您是在问有关在输出中添加噪声 的问题。我不知道这是否很常见,但我知道它可以提供帮助:)

如果以高置信度做出错误的预测,典型的损失函数(例如,交叉熵)将给它们带来很大的损失。在过度拟合过程中,网络会找到许多理想的预测器(一个复杂的模型将开始记住每个训练输入)。权重将被调整以增加置信度。通过向网络传授它永远无法做出高准确性的预测,可以在输出中增加噪声,从而防止这种情况发生。这将减轻对验证集上的错误的高惩罚。它还可以防止破坏性的权重更新仅用于增加错误的置信度。

答案 1 :(得分:1)

  

正在将噪声添加到用作正则化技术的输出数据中   避免过度拟合训练数据?

简单答案是肯定的,@maxy's正确指出了原因。而且我认为您的意思是将噪声添加到模型的输入数据中,而不是添加到模型的输出中,尽管也可以采用此类技术(用于不同讨论的主题)。

  

它如何减少泛化错误并帮助正规化   因为据我所知,正则化是直接   与我们模型的复杂性有关。

这可能有帮助,也可能没有帮助,极端的噪声情况已经由上述答案提出。

神经网络与通用数据转换的关系

通常,对于高维输入(例如300特征或图像),假定必要的信息位于低维manifold上。下图应有助于直观地理解该想法(来自sklearn的图):

manifold

正如人们所看到的那样,即使原始数据是三维的,也可以很好地以二维的形式呈现。这就是神经网络的作用,它将输入数据转换为另一种数据表示形式(有时具有更高的维数),以实现任务解决方案(例如,通过后续层转换图像,以便它们可以线性分离以用于最后一层的分类)。

但是它与噪声有什么关系?神经网络是功能强大的装配工(复杂模型,将转向该模型),因此,如果没有足够的数据点,它可以学习到一种转换(流形),其效果不如图像中所示的那么流畅和美观。如果在不进行扩充的情况下对网络进行训练,并在测试阶段获得非常相似的输入,则可能会将其错误地转换为完全不同的空间区域,并且可能将其分类错误。

添加噪声后,神经网络会看到更多表示该类的数据点,因此必须学习创建更平滑的数据表示,在这种情况下,输入的微小变化不会对其输出产生巨大的影响。

最后,假设testtrain来自相同(或至少非常相似)的分布。当我们通过噪声学习train的更好分布时,了解test的机会也会增加,因此通常有助于推广。

  

它与训练模型的复杂性有什么关系?

函数空间的复杂性

神经网络的逼真度很高,可以学习的功能空间也很大(功能空间较大可以认为是复杂性)。现在,输入数据的许多功能(转换)都可以很好地完成手头的任务(从现在开始,请坚持分类)。

没有增强或正则化,神经网络没有动力去学习不太复杂的函数,这些函数可能有更高的机会更好地表示真实的变换(根据Occam's razor)。添加噪声后,许多复杂功能不再是可行的选择,因为它们高度依赖于输入的微小变化。因此,在采用噪声后,神经网络在功能空间中的复杂性可能会降低dropout,权重衰减等问题也是如此)。

模型的复杂性

由于架构是预定义的,因此不会因噪声而改变。如上所述,只有权重才更“合理”(例如,在极端情况下,没有权重具有1000-1000值,因为对于单个特征而言,权重值的变化太大)。