正/负示例的损失函数和数据分布

数据挖掘 神经网络 数据集 损失函数
2022-01-26 00:12:30

我有一个 AlexNet 架构,它以监督方式预测给定图像是否属于 1-10 类。但它也应该识别它是否不适合任何这些类。

我的想法是,我只需添加第 11 类并用该类标记所有负数据,并像往常一样使用梯度下降优化器 (Adam) 训练 softmax-cross-entropy 损失。

现在我的问题是这是否是解决我的问题的有效方法?

我每个班级大约有 7.000 张图像,并且可以获得多达 70.000 个负面示例。我有强烈的感觉,用 70.000 个负例训练我的网络总是会预测结果属于第 11 类(不匹配任何其他)。我的假设是否正确?如果是:有多少负面例子可以完成这项工作?

1个回答

您向数据集添加负面示例的方法,用 11 输出 softmax 替换 10 输出 softmax 最终层,并且重新训练当然是有效的。

您需要这些额外的示例,因为网络只能学习对它以前见过的类别进行分类。

只重新训练最后一层是一个很好的第一次尝试,因为它是最便宜的,但如果你没有得到好的结果,你可以尝试在网络末端微调一个或多个附加层。

所有这些技术都属于迁移学习的主题。

关于您的问题的第二部分,即要包含多少负面示例——这被称为机器学习中的类不平衡问题

如果您包含许多负面示例,您的模型是否总是会预测负面类别取决于数据和模型,但这肯定是一种可能性。

最安全的方法是对您的负样本进行欠采样,并仅包含 7000 个以匹配训练集中其他类的频率。这应该是一个很好的第一次尝试,但如果它不起作用,你应该考虑几个问题:

  1. 我的目标人群的预期分布是什么?
  2. 对每种类型的示例进行错误分类的成本是多少?

然后就如何继续做出明智的决定,这可能涉及对负面示例进行不同的采样,或者将您的性能指标调整为AUC之类的东西(例如,它可以指导提前停止)。

附加材料: 卷积神经网络中类不平衡问题的系统研究