> Source
在完成了与神经网络有关的多个AI项目之后,我意识到模型的概括能力对于AI项目的成功至关重要。 我想写这篇文章来帮助读者了解如何使用正则化方法来优化模型的性能,并更好地理解基于神经网络提供可靠且可扩展的AI解决方案的复杂性。
泛化是用于描述模型对新数据做出反应的能力的术语。
泛化是模型经过训练后可以消化新数据并做出准确预测的能力。 这可能是您的AI项目中最重要的元素。 模型的概括能力对于AI项目的成功至关重要。 确实,我们担心模型在训练数据上训练得太好,但是无法推广。
因此,我们常常没有达到生产阶段……在提供新数据时,它会做出不准确的预测,即使模型能够对训练数据做出准确的预测,也会使模型无用。 这称为过拟合。
相反的情况也可能发生。 欠拟合是指未对数据进行足够的模型训练。 在欠拟合的情况下,即使使用训练数据,模型也一样无用,也无法做出准确的预测。
在所有AI项目中,我们都基于现有数据构建模型,并希望它们能完美地适应(概括)新数据。 在监督学习中,我们拥有过去的数据以及所有我们希望预测的预测值和真实值。 尽管定义了业务问题,但是收集相关数据,清理和准备数据以及建立模型都具有挑战性,并且非常耗时……另一个挑战仍然存在–如何知道模型能否很好地预测未来?
训练可以很好地泛化到新数据的深度神经网络是一个具有挑战性的问题。
当涉及到神经网络时,正则化是一种对学习算法稍加修改的技术,以使模型具有更好的泛化能力。 反过来,这也改善了模型在看不见的数据上的性能。
从业务角度来看,深度神经网络的主要优势在于,随着向越来越大的数据集馈入数据,神经网络的性能不断提高。 当公司尝试创建数据网络效果时,这非常有趣。
但是,具有几乎无限数量的示例的模型最终将在网络能够学习的容量方面达到某些限制。 正确的正则化是获得更好的泛化性能的关键原因,因为深度神经网络经常被过度参数化并可能遭受过度拟合的问题。
我们可以通过以下方法降低神经网络的复杂度,以减少过度拟合:
减少模型的容量可将模型过度拟合训练数据集的可能性降低到不再适合的程度。
通过保持较小的网络权重来减少过度拟合的技术称为正则化方法。
正则化:添加额外信息以将不适的问题转化为更稳定的良好问题的一类方法。
下面,我列出了我们经常使用的几种正则化方法(确实存在其他方法,例如权重约束或活动正则化)。 但是,减少过度拟合的最简单方法是从本质上限制模型的容量。
全连接(FC)层最容易过拟合,因为它们包含最多的参数。 辍学应该应用于这些层(影响它们与下一层的连接)。 除标准形式的辍学外,还存在几种辍学的变体,旨在进一步提高泛化性能。 例如,自适应辍学,其中辍学率由另一个神经网络动态确定…
但是,我注意到,如果您使用CNN,则现在不经常使用辍学。 相反,我看到越来越多的数据科学家使用批处理规范化。 当您拥有大量数据集时,批处理规范化比辍学更为有效。
噪声正规化的一种常见类型是在训练过程中注入噪声:将噪声添加或乘以神经网络的隐藏单元。 通过在训练深度神经网络时允许一些误差,不仅可以提高训练性能,而且可以提高模型的准确性。
根据Jason Brownlee的说法,训练期间使用的最常见的噪声类型是在输入变量中添加高斯噪声。 添加的噪声量(例如,扩展或标准偏差)是可配置的超参数。 噪声太小没有作用,而噪声太大使映射功能难以学习。 确保在评估模型或使用模型对新数据进行预测时,不添加任何噪声源。
早期停止早期停止是一种交叉验证策略,在该策略中,我们将一部分训练集保留为验证集。 实际上,当我们看到验证集的性能越来越差时,我们就停止了对模型的训练。
换句话说,这种方法尝试在估计噪声的模型之前,尽早停止估计器的训练阶段,即该阶段已学会从数据中提取所有有意义的关系。
这是通过监视验证损失(或另一个验证指标)并在此特定指标停止改进时结束训练阶段来完成的。 通过这样做,我们给估算器足够的时间来学习有用的信息,但没有足够的时间来学习噪声。
> Source
我使用这种方法的问题是,不能保证在任何给定的时间点,模型都不会再次开始改进。 一个比提早停止更实际的方法是存储在验证集上获得最佳性能的模型权重…
转移学习此方法是通过将网络的权重初始化为在大型通用数据集中预先训练的具有相同体系结构的另一个网络的权重来完成的。 我们经常将这种方法用于计算机视觉项目。 当我们的业务问题没有太多数据时,它对我们有很大帮助,但是我们可以找到另一个类似的问题。 在这种情况下,我们可以使用迁移学习来减少过度拟合。
批处理规范化(BN)是一种规范深度神经网络中间层中的激活的技术。
批处理标准化除了具有正则化效果外,还可以通过其他方式帮助您的模型(允许使用更高的学习率等)。 我建议您验证每层的权重和偏差分布看起来近似于标准正态。
由于BN具有正则化效果,因此这也意味着您可以经常删除辍学(这很有帮助,因为辍学通常会减慢训练速度)。
在训练过程中,我们会更新批次归一化参数以及神经网络的权重和偏差。 批处理归一化的另一个重要观察结果是,由于使用迷你批显示随机性,因此批处理归一化可作为正则化。
批处理大小=一次向前/向后传递中的训练示例数。 批次大小越大,您将需要更多的存储空间。
数据扩充。 处理过度拟合的另一种方法是提高数据质量。 您可能会想到离群值/噪声消除,但是实际上它们的效率非常有限。 另一个有趣的方式(尤其是在与图像有关的任务中)是数据增强。 目的是随机转换训练样本,以使它们在模型中看起来不同时,它们传达相同的语义信息。 就个人而言,当我发现模型在训练集上的损失接近0时,我便开始考虑使用数据增强。
我建议在考虑正则化方法之前先执行一些基本步骤。 确实,在大多数时候,我们无法确定对于每个学习问题,都存在一个可学习的神经网络模型,该模型可以产生所需的低泛化误差。
首先要找到一个很好的参考,它表示您在数据集或最相似的可找到参考的体系结构上,都可以达到所需的泛化错误。 在训练自己的数据集之前,尝试在这些参考数据集上重现这样的结果是很有趣的,以测试所有基础结构是否正确到位。
这也是检查您的训练程序是否正确的关键。 这些检查包括:
最后,关键是要了解,正则化本身并不一定意味着您的泛化误差会变小:模型必须具有足够大的容量才能实现良好的泛化属性。 这通常意味着您需要足够深的网络,然后才能看到正则化的好处。
如果没有其他帮助,您将必须测试多个不同的超参数设置(贝叶斯优化可能会在此处提供帮助)或多个不同的体系结构更改。
有关此主题的更多信息,我建议以下链接:
-https://arxiv.org/pdf/1710.05179.pdf- https://machinelearningmastery.com/train-neural-networks-with-noise-to-reduce-overfitting/- https://towardsdatascience.com/batch- normalization-in-neural-networks-1ac91516821c- https://papers.nips.cc/paper/5032-adaptive-dropout-for-training-deep-neural-networks.pdf- http://jmlr.org/papers/ volume15 / srivastava14a.old / srivastava14a.pdf- https://wp.wwu.edu/machinelearning/2017/01/22/generalization-and-overfitting/
(本文翻译自Alexandre Gonfalonieri的文章《Understand Neural Networks & Model Generalization》,参考:https://towardsdatascience.com/understand-neural-networks-model-generalization-7baddf1c48ca)