训练 MLP 类型网络期间的问题

数据挖掘 机器学习 神经网络 深度学习 训练 过拟合
2022-03-04 07:03:26

我训练了一个神经网络模型,一种 MLP 类型的网络,其中前几层是一维卷积,用于处理序列类型的输入。

但是,训练过程如下所示,其中橙色线代表验证损失,蓝色线代表训练损失。与训练损失相比,验证损失很大,并且在前几次迭代后训练损失也停止减少。是否有任何通用的指导来提高性能?我有大约 100 万条训练痕迹,网络的参数数量大约是 140K。

在此处输入图像描述

2个回答

当训练损失低于验证损失时,该模型被称为过度拟合训练数据,即它从训练数据中学到了太多东西,以至于它只能很好地适应它而不能泛化到新数据。这种现象被认为是模型的方差模型的偏差是训练损失与您之前选择作为可达到的最小损失或期望损失的损失之间的差异。

然而,这种分析通常是在其他众所周知的指标上完成的,例如精确度召回率您首先在训练数据上计算这些指标,然后在评估数据上计算。然后您执行分析并考虑相同的考虑。

为了减少方差/过拟合,有常用的技术:

  1. 通过添加更多实例(如果可用)来增加训练数据
  2. 如果没有更多实例可用,则执行数据扩充以增加训练数据集
  3. 使用正则化,例如 dropout。
  4. 缩短网络。如果有很多层,网络可能会从训练数据中学习太具体的特征

如前所述,我将使用其他指标而不是损失来执行分析。

这显然是过度拟合的情况,因为您的验证损失远高于训练损失。我将通过执行dropout或权重衰减来继续:它们都是正则化器。正则化技术的目的是让橙色线更接近蓝色线。如果这行得通,那么您必须问自己:我的目标是蓝线吗?还是我想要更小的损失?如果你想要更小的损失,你可以尝试使用另一个优化器,另一个学习率或通过更多的 epoch 进行训练(你的训练误差仍在减少)。但是,您的第一步应该是使用正则化技术。