了解为什么合奏只会略有改善

数据挖掘 机器学习 集成建模
2022-02-19 11:47:50

我有两个模型,A 和 B,在 Imagenet 上训练。他们在 Imagenet 验证集上的准确率分别为 35.6% 和 28.64%,而他们的整体准确率(平均他们的分数)为 35.68%。我有兴趣找出为什么合奏在这里无效。

具体来说,我打算检查每个模型的混淆矩阵,但 Imagenet 有 1000 多个类,这使得这变得难以处理。向我建议的另一件事是互信息,但我不知道如何在这种情况下应用它。

所以,我有一个两部分的问题:

  1. 为什么集成的准确度没有降低(达到两个准确度的平均值)或提高?
  2. 有没有办法对两个网络的输出进行可视化/评分以测量相关性?

编辑 1:两者都是 AlexNet 模型,但使用两种不同的预训练权重初始化进行了训练。预训练的权重本身来自两个不同的自我监督任务。此外,当这些模型在 Pascal 上进行训练(使用各自的预训练权重初始化)时,准确性会显着提高。因此,我想弄清楚如何衡量正在集成的模型之间的相关性。

2个回答

从你所说的可以弥补你预测每个班级的分数,最高分是你的班级预测。

您可能会问的一个问题是类预测是否完全受到集成的影响。为了这个例子,考虑一个例子,模型 A 预测一个类总是具有 1.0 的归一化分数(即完全置信度,推荐阅读)。假设模型 A 在 80% 的情况下是正确的。然而,模型 B 不太确定。它将他的赌注押在它认为可能的前 5 个类别上,归一化得分为 0.2。平均分数会产生与单独的模型 A 相同的最高预测类别。您可以通过计算模型预测与集成预测之间的相关性来轻松检查这一点。

当然,查看每个模型的准确性是一个很好的起点,但您还应该查看它们的预测之间的关系。

我会从一些简单的事情开始,比如只检查预测的正确性(类似于混淆矩阵)——即两者都正确/只有 A 正确/只有 B 正确/两者都不正确。
例如,这将允许您立即查看模型 B 是否仅在模型 A 正确时才正确(或更一般地,查看模型是否实际上非常依赖)。如果您有很多课程,那么按课程做同样的事情会有点困难。

要查看的另一件事是查看平均模型与模型 A 的不同之处;如果模型 A 和平均模型在准确度上非常相似,那么当它们的预测不同时,只有少数示例 - 您可以检查这些预测。

还有一个想法,这可能不适用于您的案例,但可能适用于其他读者 - 在查看准确性时,最好了解您的班级规模。我猜对于您的数据集,您在一个类中没有 35% 的示例,但可能是一个模型只为最大类输出了一个非常高的分数,并且用另一个模型对其进行平均不会改变结果。