确定模型将(可能)错误分类的样本

数据挖掘 机器学习 深度学习 神经网络 分类 特征提取
2021-10-07 02:41:48

问题:

给定一个用于图像分类的神经网络,目标是开发一种算法来确定哪些图像是“有问题的”并且模型可能会对它们进行错误分类

讨论:

到目前为止,我已经想到了两种可能的方法:

  • 将给定的图像输入模型,然后使用各种指标(第一类和第二类置信度之间的差异、熵、基尼指数等)分析softmax输出。
  • 对给定的图像执行某种图像处理(特征提取),以获得一些指示图像是否不会被正确分类的特征。

问题:

你能给我提供更多关于第二种方法的建议吗?您认为哪种类型的特征提取有助于区分这些图像?

欢迎任何其他未在此处提及的想法。

3个回答

您可能希望将您的问题描述为不确定性估计问题

这个想法是您想要评估您的模型在进行预测时的舒适程度如果您的模型对预测不太满意(即使被归类为 predic_proba = 0.99),那么不确定性预测应该很高。

@BrianSpiering 提出的是一种用神经网络计算不确定性的方法。这种方法被称为蒙特卡洛 Drop Out 作为贝叶斯估计

这个想法是在进行预测并多次执行时应用丢弃正则化。通过这种方式,您的模型可以预测概率分布,您可以在其中计算多个统计数据作为标准差。这会让你知道你的模型在做这种预测时有多舒服。

这只是一种方法,但有几种方法可以估计不确定性。

有一些博客和论文可能会对您有所帮助:

一种方法是预测期间的蒙特卡洛 dropout。对于同一个样本,模型会在每次随机丢弃连接的同时进行多次预测。此过程估计模型在预测该样本方面的鲁棒性以及哪些连接对于成功预测最重要。这些连接是图像的学习特征。

您可以尝试以下方法:

  1. 提取工作图像的特征。- 取出最后一层的权重
  2. 检测这些特征的重要性。您可以将 Eli5 用于特征重要性。
  3. 提取要测试的图像特征
  4. 找出存储在 db 中的重要特征与新图像特征的特征距离(余弦相似度)。
  5. 如果距离太高,则图像可能会被分类为错误的。

要做出假设,需要 POC。