Press "Enter" to skip to content

神经网络正则化技术防过拟合和R语言CNN卷积神经网络手写数字图像数据MNIST分类

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

全文链接: http://tecdat.cn/?p=23184

 

在 训练深度神经网络 时,在 训练集 和 验证集 上实现相同的性能通常很麻烦。 验证集 上相当 高的误差 是 过度拟合 的明显标志:神经网络在训练数据方面变得过于专业。

 

在本文中,我们提供了有关如何绕过此问题的综合指南。

 

 

 

神经网络中的过拟合

 

在处理任何机器学习应用程序时,重要的是要清楚地了解模型的 偏差和方差 。 在传统的机器学习算法中,我们讨论了 偏差与方差的权衡 * *,它包括试图最小化模型的方差和偏差时的斗争。为了减少模型的偏差,即减少错误假设造成的误差,我们需要一个更复杂的模型。相反,减少模型的方差,即模型在捕捉训练数据变化方面的敏感度,意味着一个更简单的模型。很简单,在传统机器学习中,偏差与方差的权衡源于同时需要更复杂和更简单模型的冲突。

 

 

在 深度学习 时代,有一些工具可以在 不损害模型偏差 的情况下仅 减少模型的方差 ,或者相反,在不增加方差的情况下减少偏差。在探索用于防止神经网络过度拟合的不同技术之前,重要的是要弄清楚高方差或高偏差的含义。

 

 

考虑一个常见的神经网络任务,例如 图像识别 ,并考虑一个识别图片中是否存在 熊猫的神经网络 。我们可以自信地评估人类可以以接近 0% 的错误率执行这项任务。因此,这是图像识别网络准确性的合理基准。在训练集上训练神经网络并评估其在训练集和验证集上的性能后,我们可能会得出以下不同的结果:

 

 

训练错误 = 20% 和验证错误 = 22%

 

训练错误 = 1% 和验证错误 = 15%

 

训练误差 = 0.5% 和验证误差 = 1%

 

训练错误 = 20% 和验证错误 = 30%

 

 

 

第一个例子是高偏差的典型例子:训练集和验证集的误差都很大。相反,第二个示例存在高方差,在处理模型未从中学习的数据时准确度要低得多。第三个结果代表低方差和偏差,该模型可以被认为是有效的。最后,第四个例子展示了高偏差和高方差的情况:与基准相比,不仅训练误差很大,而且验证误差也更高。

 

从现在开始,我将介绍几种正则化技术,用于减少模型对训练数据的过度拟合。它们对前面示例的情况 2. 和 4. 是有益的。

 

神经网络的 L1 和 L2 正则化

 

与经典回归算法(线性、逻辑、多项式等)类似,L1 和 L2 正则化也可用于防止高方差神经网络中的过度拟合。

 

L1 和 L2 正则化技术背后的想法是将模型的权重限制为更小或将其中一些权重缩小到 0。

 

考虑经典深度神经网络的成本函数 J:

 

 

当然,成本函数 J 是每个层 1、…、L 的权重和偏差的函数。m 是训练样本的数量,ℒ 是损失函数。

 

L1 正则化

 

在 L1 正则化中,我们将以下项添加到成本函数 J:

 

 

其中矩阵范数是网络的每一层 1, …, L 的权重绝对值之和:

 

 

λ 是正则化项。这是一个必须仔细调整的超参数。λ 直接控制正则化的影响:随着 λ 的增加,对权重收缩的影响更加严重。

 

L1 正则化下的完整成本函数变为:

 

 

对于 λ=0,L1 正则化的效果为空。相反,选择太大的 λ 值会过度简化模型,可能会导致网络拟合不足。

 

L1 正则化可以被认为是一种神经元选择过程,因为它会使一些隐藏神经元的权重为零。

 

L2 正则化

 

在 L2 正则化中,我们添加到成本函数中的项如下:

 

 

在这种情况下,正则化项是每个网络层权重的平方范数。该矩阵范数称为 Frobenius 范数,并且明确地计算如下:

 

 

请注意,相对于第 l 层的权重矩阵有 n^{[l]} 行和 n^{[l-1]} 列。

 

最后,L2 正则化下的完整代价函数变为:

 

 

同样,λ 是正则化项,对于 λ=0,L2 正则化的效果为空。

 

L2 正则化使权重值趋近于零,从而产生更简单的模型。

 

L1 和 L2 正则化如何减少过拟合?

 

L1 和 L2 正则化技术对过度拟合训练数据有积极影响,原因有两个:

 

一些隐藏单元的权重变得更接近(或等于)0。因此,它们的影响被削弱了,并且生成的网络更简单,因为它更接近更小的网络。如介绍中所述,更简单的网络不太容易过度拟合。

 

对于 较小的权重 ,隐藏神经元的激活函数的 输入 z 也会变小 。对于接近 0 的值,许多激活函数的行为是线性的。

 

第二个原因并非微不足道,值得扩展。考虑一个 双曲正切 (tanh) 激活函数 ,其图形如下:

 

 

双曲正切 (tanh)

 

从函数图中我们可以看到,如果输入值 x 很小, 函数 tanh(x) 的行为几乎是线性的 。当 tanh 用作神经网络隐藏层的激活函数时,输入值为:

 

 

对于小权重 w 也接近于零。

 

如果神经网络的每一层都是线性的,我们可以证明整个网络的行为是线性的。因此,约束一些隐藏单元来模拟线性函数,会导致网络更简单,因此有助于防止过度拟合。

 

更简单的模型通常可以避免训练数据中的噪声,因此过拟合的频率较低。

 

dropout

 

dropout 正则化的思想是 随机删除 网络中的一些 节点 。在训练过程之前,我们为网络的每个节点设置一个概率(假设 p = 50%)。在训练阶段,每个节点都有 p 概率被关闭。dropout 过程是 随机 的,它是针对每个训练示例单独执行的。因此,每个训练示例都可能在不同的网络上进行训练。

 

至于 L2 正则化,dropout 正则化的结果是一个 更简单 的网络,一个更简单的网络导致一个不太复杂的模型,也不太容易过拟合。

 

 

dropout 对简单网络的影响。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。