CNN 的损失减少并稳定,但训练精度没有提高

数据挖掘 图像分类 美国有线电视新闻网 损失函数 过拟合 正则化
2022-03-09 06:47:16

我正在训练一个具有 2 个卷积层、2 个 Relu 和最大池化以及 2 个 FC 层的 CNN,其中最后一个只有 2 个单元,因为它是一个二进制分类问题。这些图像是时空连续的,基本上是大气流函数的图像,在 MATLAB 中作为等值线图从 PDE 求解器生成的数据中获得。因此,仅通过查看各自的图像很难理解两个标签之间的区别。标签是通过一些统计算法生成的,这些算法对像素的强度或简单地制作等高线图的矩阵的值进行操作。在训练 CNN 时,我看到在 0.001 的学习率下,损失在前 200 个 epoch 下降到 0.6 时一直逐渐且单调地下降(不是突然,而是逐渐地,斜率随着值的下降而减小)并在接下来的 500 个时期内稳定下来。但是,训练准确率在 50% 左右波动,我的测试准确率也是 50%。此外,当我查看错误的 +ve 和 -ves 时,我看到 CNN 一直有一个标签是正确的,而另一个标签一直是错误的。我使用了 0.5 的 dropout 和 L2 正则化。我正在使用 TensorFlow 进行所有编程。TRUE 和 FALSE 标签之间的训练集不存在不平衡。我有 4500 个正确的例子和 4500 个错误的例子。因为我使用的是 RGB 图像,所以我随机打乱了训练集并用 255 对其进行了归一化。对 200 个 TRUE 示例和 200 个 False 示例进行测试。两层的内核大小都是 5x5,第一个有 32 个,第二个有 64 个过滤器,FC 层有 1024 个神经元。我玩过这些参数,没有真正的改进。任何建议将不胜感激。

1个回答

我想当我仔细查看特征空间并打印出不同卷积层的输出时,我能够找出答案。当您的特征空间中有很多冗余特征时,似乎会出现此问题。因为这是一个带有 FALSE 和 TRUE 的二元分类问题,所以默认情况下,每个图像都有很多对应于 FALSE 的特征,而 TRUE 只有一小部分的特征空间不同。训练者很容易学习到大部分 FALSE 特征空间,因此损失很容易下降,而错过了小的 TRUE 特征空间。这就是为什么损失下降但准确性没有提高的原因。避免这个问题的诀窍是在进入卷积层之前对初始图像进行下采样。