如何阻止神经网络回归均值

数据挖掘 神经网络 回归
2022-02-15 14:46:32

我非常熟悉用于分类的神经网络,但我是第一次尝试回归任务。我发现网络倾向于猜测整个数据集的平均值,而不是做出特定于案例的预测。

这种行为的潜在原因是什么,我该如何阻止它?

暗示

在我的具体情况下,这种行为存在于训练和验证集中。训练集非常小,输入是否与目标有很强的相关性值得怀疑。

还可能值得注意的是我正在训练图像。所以我正在使用CNN。

更新

我对我的模型进行了一些检查,发现它将我的 CNN 主干的输出驱动为 0,并且只是使用我的全连接层上的单个偏差来产生输出。我还发现,如果我在训练期间冻结偏差,我可以无限期地提高学习率,而损失不会爆炸......

1个回答

回归任务与分类没有太大区别,您面临的行为可能是由于代码中的错误。如果您的训练集很小并且网络相对较大,则应该对其进行过度拟合(与输入的相关性无关紧要,有一篇论文https://arxiv.org/pdf/1611.03530.pdf这表明您可以随机打乱 imagenet 标签并在其上训练其中一个 resnet 版本,并在该训练集上获得完美的准确性)。样本不可知预测意味着欠拟合。您也可以尝试过拟合小批量并获得零损失。如果你不能做到这一点,那么肯定有一个错误。可能你的梯度对后面几层的影响比对第一层的影响要大得多,这意味着经过一些时期的训练后,你仍然有来自第一层的随机输出,难怪网络试图预测数据集的平均值。如果您的网络非常深并且您没有使用剩余连接,则可能会发生这种情况。但对于 10 层(例如)或更少层的网络,情况并非如此。也许您的学习率太高,您的第一层无法正确调整。要检查您的第一层是否提取了一些有意义的信息,请尝试查看一些第一层的输出。如果这些输出看起来像一个完整的噪音,请仔细检查代码以进行优化。您可以在 Andrej Karpathy 的博客中找到更多有趣的错误案例和错误代码的行为http://karpathy.github.io/2019/04/25/recipe/