过拟合

在训练神经网络模型时,我们经常会遇到模型在训练集上预测准确度很高,但是在测试集上预测准确率很低,这种现象我们叫做过拟合
过拟合通常是由于模型过于复杂造成的接下来我们将介绍五种防止模型过拟合的方法。

1、简化模型

处理过度拟合的第一个想到的是降低模型的复杂性。为了降低复杂度,我们可以简单地删除神经网络层数或减少神经元数量以使网络更小。在执行此操作时,重要的是计算神经网络中涉及的各个层的输入和输出尺寸。对于删除的数量或网络的大小,没有一般性规定应该根据实际情况来看。

2、提前终止训练

神经网络模型的训练方法一般使用迭代方法(例如梯度下降)训练模型。没一轮训练,参数就会进行更新,在每两次迭代之间我们就可以提前终止训练。你可以在每次模型训练之后就对模型进行测试 分别评估模型在训练集和测试集上的准确度,当出现过拟合趋势时你就可以提前终止训练。并且, 由于所有神经网络都是通过使用梯度下降来专门学习的,因此提前终止训练是一种适用于所有问题的技术

神经网络算法如何避免过拟合 神经网络防止过拟合_过拟合


上图显示了此技术。如我们所见,经过一些迭代,测试误差开始增加,而训练误差仍在减少。因此,该模型过度拟合。因此,为了解决这个问题,我们在开始发生这种情况时停止模型。

3、数据增强

数据增强包含两个方向:一是采集新的数据进行数据扩充,二是根据已有数据集生成新的数据集从而达到数据数量上的增加 例如图片数据集,通过对图像进行翻转,平移,旋转,缩放,更改亮度,添加噪声等操作从而生成新的数据集。其例子可以参考下面的图片

神经网络算法如何避免过拟合 神经网络防止过拟合_正则化_02


使用数据增强可以生成许多相似的图像。这有助于增加数据集的大小,从而减少过度拟合。其原因是,当我们添加更多数据时,该模型无法对所有样本进行过度拟合,因此不得不进行概括。

4.正则化

正则化是一种降低模型复杂性的技术。它通过在损失函数中增加惩罚项来实现。最常见的技术称为L1和L2正则化:

L1惩罚函数的目的在于最小化权重的绝对值。在下面的公式中以数学方式显示

神经网络算法如何避免过拟合 神经网络防止过拟合_dropout_03


L2惩罚旨在最小化权重的平方大小。在下面的公式中以数学方式显示。

神经网络算法如何避免过拟合 神经网络防止过拟合_神经网络算法如何避免过拟合_04


选择是使用L1系数还是L2系数取决于数据的复杂性, 如果数据太复杂而无法准确建模,则L2是一个更好的选择,因为它能够了解数据中存在的固有模式。如果数据足够简单以进行准确建模,则L1更好。对于大多数计算机视觉问题,L2正则化几乎总会带来更好的结果。但是,L1的另一个优势是对异常值具有鲁棒性。因此,正确选择正则化能够帮助我们我们要解决的问题。

5 使用Dropout

一种防止神经网络过度拟合的正则化技术。像L1和L2这样的正则化方法通过修改代价函数来减少过度拟合。另一方面,Dropout会修改网络本身。在每次迭代的训练过程中,它会从神经网络中随机丢弃神经元。当我们丢弃不同组的神经元时,这相当于训练不同的神经网络。不同的网络将以不同的方式进行过度拟合,因此,辍学的最终结果将是减少过度拟合。

神经网络算法如何避免过拟合 神经网络防止过拟合_dropout_05


上图显示了此技术。如我们所见,在训练神经网络时,Dropout用于随机删除神经元。事实证明,该技术可以减少对图像分类,图像分割,词嵌入,语义匹配等各种问题的过度拟合