如何调整分类任务中标签的评分偏差?

How to adjust for the grading bias of labels in a classification task?

我目前正在研究 convolutional neural network 用于 x-ray images 上的病理变化检测。这是一个简单的 binary classification 任务。在项目开始时,我们收集了大约 6000 x-rays 并询问了 3 位不同的医生(领域专家)label。他们每个人都有大约 2000 张随机选择的图像(这 3 组是可分离的——一张图像仅由一名医生标记)。

labelling 完成后,我想检查每个医生有多少病例被标记为 havingnon-having 变化,这就是我得到的:

# A tibble: 3 x 3
  doctor no_changes (%) changes (%)
   <int>      <dbl>       <dbl>
1      1       15.9        84.1
2      2       54.1        45.9
3      3       17.8        82.2

从我的角度来看,如果每个医生都得到一个 x-rays 的随机抽样数据集,假设他们是"thinking similarly",这里不是这种情况。

我们正在与一位医生交谈,他告诉我们,一位医生可能会说 x-ray 有变化,而另一位医生可能会说一些不同的话,因为通常他们不会看at 以二元方式变化 - 例如 amount/size 的变化可以决定标签,每个医生的想法可能不同 cutoff

知道后开始想removing/centeringlabels bias。这是我想出的:

  1. 因为我认识医生 1(假设他是最好的专家)我决定 "move" 医生 2 和 3 的标签进入医生 1 的方向。
  2. 我收集了 300 张新图像并要求他们全部 label 他们(所以这次每张图像都是 labelled 由 3 位不同的医生)。比我检查过医生 1 和 2/3 之间的标签分布。例如,对于医生 1 和 2,我得到了类似的东西:
doctor2             no_changes changes all
doctor1  no_changes 15         3       18
         changes    154        177     331
         all        169        180

由此我可以看出,医生 2 有 169 个案例,他 lebeled 没有改变,而医生 1 只有 15 个案例同意他的意见。知道我已经将非更改案例中医生 2 的标签(概率)从 [1, 0] 更改为 [15/169, 1- 15/169]。类似地,医生 2 在 x-rays 中有 180 个变化案例,而医生 1 在 177 个案例中同意他的观点,所以我在 [0, 1] 到 [1 - 177/180, 177/180].

  1. 对医生 3 做同样的事情

这样做我用 cross-entropy 损失重新训练了神经网络。

我的问题是,我的解决方案是否正确,或者我应该做些不同的事情吗?这个问题还有其他解决方案吗?

看起来正确。

使用交叉熵,您实际上可以将模型输出的概率分布与某个参考概率 P(changes = 1) 进行比较。在二元分类中,我们通常假设我们的训练数据遵循经验分布,根据标签产生 1.00.0。正如您已经注意到的那样,情况不一定如此,例如以防我们对我们的数据没有完全的信心。

您可以将您的参考概率表示为:

P(changes = 1) = P(changes = 1, doc_k = 0) + P(changes = 0, doc_k = 1)

我们只是边缘化了所有可能的第 k 个医生决定。 P(changes = 0) 也类似。每个联合分布可以进一步展开:

P(changes = 1, doc_k = L) = P(changes = 1 | doc_k = X) P(doc_k = L)

条件是您通过将每个医生与 oracle 医生 1 进行比较来计算的常数。根据您拥有的数据,我想不出更好的方法来近似这个概率。 (但是,您可以尝试使用一些额外的注释来改进它)。 P(doc_k = X)的概率只是01,因为我们可以确定每个医生给出的注释。

所有这些扩展都符合您的解决方案。例如,第二位医生没有检测到任何变化:

P(changes = 0) = P(changes = 0 | doc_2 = 0) * 1 + 0 = 15/169

举个变化的例子:

P(changes = 1) = 0 + P(changes = 1 | doc_2 = 1) * 1 = 177/180

在这两种情况下,常数 01 来自概率值 P(doc_2 = L)