如何减少预训练网络中的过拟合

数据挖掘 深度学习 美国有线电视新闻网 火炬 过拟合 正则化
2022-02-21 08:57:30

我有一个包含 10 个类的自定义数据集,我正在使用来自 torch-vision 的预训练 resnet18 模型。我可以清楚地看到它是过度拟合的,因为:模型训练了 75 个 epoch,批量大小为 4,从 epoch 30 开始,验证准确度停止增加,训练准确度不断增加。

我为提高泛化性能和减少过拟合所做的事情:

  1. 我用我的训练数据的计算平均值和标准对我的数据进行了标准化。
  2. 我添加了随机旋转、随机水平翻转和随机垂直翻转作为数据增强。

以上是所有这些之后的结果,我想不出在不改变模型架构的情况下产生正则化效果的其他正则化技术,这将完全违背预训练网络的目的,我之所以使用它是因为我我的每个班级只有大约 300 张图片。

1个回答

在迁移学习中,有两个参数会影响基本设置:

  1. 新数据集的大小
  2. 新数据集与预训练模型数据集的相似性

当您的数据集较小时,问题是如果您重新训练太多层,大容量预训练模型很容易过拟合。而且由于您重新训练了多个层,这可能是一个问题。

相反,请尝试以下两个选项:

  • 仅重新训练最后一个全连接层如果您的数据与训练预训练模型的数据相似,这是通用方法。
  • 移除转化。层接近预训练模型的末尾,并仅重新训练新的全连接层例如,对于 ResNet18,您可以尝试折腾 conv4 和 5。如果您的数据与原始数据不太相似,并且您只想将层用于较低级别的特征,因为数据集没有类似的较高级别特征,这是小型数据集迁移学习的一般方法。

如果您对该主题的理论阅读感兴趣,请阅读论文“深度神经网络中的特征如何迁移?” 可能会感兴趣。