过拟合——Datawhale X 李宏毅苹果书 AI夏令营 深度学习(入门)Task3

本文主要介绍模型训练过程中的过拟合现象,并从概念、表现和应对方案三个角度进行阐述。

概念

机器学习的核心目标是从数据中学习模式和规律,并将这些规律应用于新的、未见过的数据。这个过程通常被称为泛化 (Generalization)。一个好的机器学习模型应该能够很好地泛化到新的数据,这意味着它能够对未见过的数据做出准确的预测。

而为了评估机器学习模型的泛化能力,我们通常将数据集分为两个部分,训练集和测试集。训练集用于训练模型,测试集则扮演未见过的数据,用于对模型进行性能评估。

过拟合现象指的是,模型对于训练集中的数据过于熟悉了,以至于记住了各个样本的独特样貌,而忽略了样本所具备的普遍规律,经常是因为拟合了类无关特征或者噪声,导致模型对于未见过的、测试集的数据表现很差

表现

那么为什么会出现过拟合现象呢?举一个极端的过拟合案例。某个模型在学习了训练集数据后,只学会了做这么一件事情:如果输入 x x x在训练集中,则把训练集中 x x x对应的 y y y作为输出;如果输入 x x x不在训练集中,则输出一个随机值。这样的模型实际上是没有应用价值的,因为它没有完成机器学习的基本目标。
在这里插入图片描述
在一般情况下,过拟合是如何表现的呢?如上图所示,假设输入 x x x和输出 y y y均为一维变量,它们之间的关系可以通过一个二次函数来描述。这种关系在图形上表现为一条二次曲线,我们通常用虚线来表示这种曲线,因为它并非直接可观测,而是通过数据推断得出的。在实际应用中,我们能够直接观察到的是训练数据集,它可以理解为从这条理论上的曲线上随机选取的若干数据点。这些数据点构成了我们训练模型的基础。

一个强大的模型通常具有很高的灵活性,即使只有少量的数据点(例如三个),它也能够通过这些点来最小化预测误差,即所谓的损失函数。然而,由于模型的高灵活性,它在没有数据支持的区域可能会表现出不稳定的行为。这意味着,尽管模型能够精确地通过训练集中的点,但在那些没有直接观测数据的区域,模型的预测可能会变得非常不稳定,甚至产生不符合实际的预测结果。这种特性强调了在模型设计和训练过程中,对过拟合现象的警惕和控制的重要性。

上图中,训练数据用蓝色点表示,测试数据用橙色点表示。这两个数据集虽然来源于相同的数据分布,但它们是独立采样的。当我们使用训练数据来确定模型参数时,我们的目标是找到一个能够最小化训练集上损失的函数。然而,这个函数在测试数据上的表现并不总是理想的。如果模型的自由度过高,即模型过于复杂,它可能会在训练数据上过拟合,即在训练集上表现良好,但在测试集上表现不佳,因为模型可能会捕捉到训练数据中的噪声和异常值,而不是数据的真实分布。

过拟合导致模型在训练集上的表现与测试集上的表现之间存在显著差异。模型可能会在训练数据上拟合出一个看似完美的曲线,但这往往是通过学习数据中的特定模式和噪声实现的,而不是学习到数据背后的普遍规律。因此,当模型应用于测试数据时,由于这些数据并未用于训练,模型可能会产生较大的预测误差。

应对方案

那么如何解决过拟合的问题呢,有两个可能的方向。
在这里插入图片描述

第一个方向是往往是最有效的方向,即增加训练集。通过收集更多的训练数据,可以提供更多的信息来训练模型,从而减少模型对训练数据中特定噪声和异常值的敏感性。当训练集(蓝色点)的数量增加时,模型即使具有较高的灵活性,也会因为大量数据的约束而趋向于学习到数据背后的真正规律,即二次曲线。

对于如何获取更多的训练数据,数据增强是一种有效的技术。数据增强是一种基于对问题深入理解的创造性过程,它通过应用一系列变换来生成新的数据样本,从而丰富训练集。在图像识别任务中,常见的增强技术包括对图像进行水平翻转、裁剪和放大等操作。例如,通过水平翻转图像,可以有效地增加数据集的规模,而不改变图像内容的本质特征。然而,数据增强并非无的放矢,它需要谨慎执行,以确保增强后的数据保持与原始数据相同的分布特性。在实际应用中,我们很少将图像上下颠倒作为增强手段,因为这可能会违背图像的自然属性,导致模型学习到不切实际的特征。正确的数据增强策略应当基于对数据特性和待解决问题的深刻理解,以选择最合适的增强方法。这样的方法不仅能够提升模型的泛化能力,还能避免引入误导性的学习偏差。

在这里插入图片描述

第二个方向是给模型一些限制,解决过拟合问题的一个有效方法是对模型施加适当的限制,以减少其过度拟合训练数据的倾向。这种策略基于对问题本质的深入理解,通过设计模型来反映数据生成过程的特性。例如,如果数据的真实关系可以被一个二次曲线很好地描述,那么选择一个参数化形式与此相符的模型,如二次曲线模型,可以显著提高模型的泛化能力。

如图上所示,选择一个具有适当限制的模型对于提高模型性能至关重要。这种选择依赖于对问题的理解,因为不同的模型设计会导致不同的结果。例如,二次曲线模型由于其固有的形式限制,只允许有限数量的函数形状,这在训练数据有限的情况下尤其有用。即使只有少量数据点,模型由于其结构的限制,也更有可能选择一个接近真实数据分布的函数。

为了给模型施加限制,可以采取以下方法:

  • 减少模型参数:通过减少模型的参数数量,可以降低模型的复杂度。在深度学习中,这可以通过减少每层的神经元数量来实现,例如,将每层的神经元数量从一千个减少到一百个。
  • 参数共享:通过让模型中的某些参数具有相同的值,可以减少模型的灵活性。这种方法在卷积神经网络(CNN)中尤为常见,其中卷积层的权重在整个输入图像上共享,从而减少了模型的参数数量。
  • 选择合适的网络架构:不同的网络架构对模型的灵活性有不同的影响。全连接网络(Fully-Connected Network)由于其高度的连接性,提供了较大的函数空间,而卷积神经网络(CNN)则通过其局部感受野和权重共享的特性,对模型的灵活性施加了更大的限制。CNN 特别适合处理图像数据,因为它的结构与图像的局部相关性和平移不变性相匹配。
  • 减少输入特征的数量:例如,如果原本使用三天的数据作为输入特征,减少到两天的数据可能会提高模型的泛化能力。这是因为减少特征可以降低模型过拟合训练数据中噪声和细节的风险,从而使得模型更加专注于捕捉数据中最重要的信息。
  • 早停(Early Stopping):早停是一种在训练过程中监控模型性能的技术。如果在验证集上的性能在连续多个迭代后没有显著提升,那么可以提前结束训练。这样可以避免模型在训练集上过度拟合。
  • 丢弃法(Dropout):丢弃法是一种在训练过程中随机“丢弃”(即暂时移除)网络中一部分神经元的技术。这可以防止模型过于依赖于特定的输入特征,因为它迫使网络在每次训练迭代中学习到更加鲁棒的特征表示。

这些技术可以单独使用,也可以组合使用,以提高模型的泛化能力。例如,可以在减少特征数量的同时,应用早停和正则化,以进一步限制模型的复杂度。通过这些方法,可以设计出既简单又有效的模型,这些模型在训练集上表现良好,同时在未见过的数据上也能保持稳定的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值