Skip to content

0.5 数学上的成功不代表临床上的成功 ​

前三节走完了一条完整的链条:向量、相似度、softmax、损失、梯度、参数更新。0.3 的训练把损失从 0.096 降到 0.0002,对角线升上去,非对角线降下去,这看上去是一次成功的训练。

本节回到 0.1 留下的那个数,说明为什么这次成功里藏着问题。

0.5.1 那一格发生了什么 ​

0.1 的相似度矩阵里,第 3 行第 4 列与第 4 行第 3 列都是 0.724,明显高于其他非对角线位置的 −0.06。0.1 当时只说先记住这个数。

0.3 的训练之后,这一格变成 0.029,损失随之降到接近零。从优化的角度看,这是模型变好的证据:相似度矩阵里唯一一处异常的偏离被纠正了。

现在把这一格对应的两张胸片与两份报告摊开:

编号胸片报告
C右肺下叶实变Right lower lobe airspace consolidation.
D右肺基底斑片状渗出Patchy right basilar opacity consistent with pneumonia.

这是两位不同患者的胸片。两份报告描述的是相近的病理:右下肺的实变与渗出,临床上常常指向同一类问题。它们的相似度是 0.724,反映的是真实的语义重叠。

于是 0.3 里那一步更新有了另一种读法。模型把一个医学上合理的相似关系,当成错误推开了。损失降低的同时,模型学到的是“这两份报告不应该像”,而这句话在临床上不成立。

0.5.2 假负样本 ​

问题的来源在 0.2 的损失构造里。一个批次内的 N 对图文,模型被要求把第 i 张胸片与第 i 份报告拉近,同时把第 i 张胸片与其余 N−1 份报告推远。这个构造依赖两条假设:

  • 批次里不存在第二份与第 i 张胸片语义相符的报告。
  • 被推开的报告与这张胸片在语义上确实无关。

语义相同但被当成负样本的样本,称为假负样本(false negative)。

假负样本在自然图像的图文数据里同样存在,只要一个批次里出现了语义相近的不同样本就会发生。医学数据的特点是发生得更频繁、更严重:医学文本的用词高度重复,不同医生的报告常常写着相同的发现,而类间差异又很细微,例如 pneumonia 与 consolidation、effusion 与 atelectasis 之间的边界本身就不清晰。

0.5.3 MedCLIP 的修正 ​

MedCLIP(Wang et al., EMNLP 2022)做了两处改动。

第一处是解耦。把 n 对图文拆成 n 张图像与 n 段文本,各自独立采样,可组合出 (n+m)×(n+h) 种图文组合,其中 m 是有标签的图像数,h 是可用文本数。可用训练数据的规模不再受成对数据的限制。

第二处是用医学知识替换硬性的正负划分。流程是:

  1. 把报告拆成句子,用 MetaMap 抽取 UMLS 中的医学实体;图像的诊断标签也映射到 UMLS 概念,例如 Normal 映射为 No Findings。两者各自构成多热向量 limg 与 ltxt。
  2. 两者的余弦相似度给出医学语义相似度(这里又是那个求两向量夹角的公式):
sij=limg⋅ltxt∥limg∥⋅∥ltxt∥
  1. 把 sij 做 softmax 得到软目标 yij,取代原先非零即一的正负指示。
  2. 图像与文本嵌入归一化后做内积得到预测相似度 s^ij=v~i⊤t~j,再做 softmax 得到预测分布 y^ij。
  3. 损失是软目标与预测分布之间的交叉熵:
Lv→l=−1Nbatch∑i=1Nbatch∑j=1Nbatchyijlog⁡y^ij

两个方向取平均得到 L=(Lv→l+Ll→v)/2,温度初始化为 0.07。

与 ConVIRT 的差别落在正负样本的定义方式上。ConVIRT 用配对关系给出非零即一的标签,MedCLIP 用医学语义相似度给出介于 0 与 1 之间的软标签,语义相同的样本不再被完全推开。

0.5.4 轮到拷打 MedCLIP ​

到这里很容易得出一个结论:ConVIRT 的假设有问题,MedCLIP 修正了它。这个结论停得太早。MedCLIP 替换掉的是一条假设,换上的是一条新假设,新假设同样需要检查。

可以问的问题至少有四个:

  • MedCLIP 用 UMLS 实体向量的余弦当作医学语义的真值。这个假设凭什么成立?实体之间的余弦距离是否真的对应临床意义上的相似?
  • 实体向量的权重都相同。pneumonia 与 small pleural effusion 在临床上的分量不同,等权处理会带来什么偏差?
  • 报告里出现 no evidence of pneumonia 这类否定表述时,MetaMap 若漏掉否定词,抽取出的实体就只剩下 pneumonia,语义被反转。
  • 语义相似度矩阵本身带噪声。噪声与软目标结合后,损失究竟在监督什么?

MedCLIP 论文在自己的局限性一节里承认了其中的第三条与第四条。原文的表述是:该方法仍会遇到失败情形,包括检测到错误的语义标签,以及漏检否定或不确定性的表述;一种补救办法是引入从含噪数据中学习的技术,以缓解抽取出的语义相似度矩阵中的噪声。

这段自评说明作者清楚这条新假设的薄弱之处,也知道问题出在知识抽取环节。

0.5.5 本章的落点 ​

整章走下来,需要质疑的是假设,公式本身没有问题。

ConVIRT 的损失在数学上自洽,它的假设在医学数据上会失效。MedCLIP 替换了那条假设,同时引入了对知识抽取器的新依赖,论文自己也承认这部分会出错。链条可以继续往下走。

科研的进展来自不断把隐藏的假设显式化,并想办法检验它们。这套动作不需要新的数学工具,需要的是把公式当作一个可以被质疑的陈述来读:写清它对数据做了什么假设,问这些假设是否成立,找反例,再设计实验验证。拷打 AI 是这套动作的一个具体用法。

练习题 ​

  1. 一个批次为 32 的 ConVIRT 训练里,与第 i 张胸片配对的报告只有 1 份,被当作负样本的有多少份?其中可能包含多少假负样本?
  2. MedCLIP 把成对数据解耦后,n 张图与 n 段文本最多能组成多少种图文组合?
  3. MedCLIP 的软目标与 one-hot 标签有什么区别?

拷打 AI ​

把 MedCLIP 的语义相似度构造交给 AI,问下面这些可验证的问题。

  1. ConVIRT 的损失对负样本做了什么假设?这条假设在医学数据上成立吗? 及格标准:假定批次内非配对样本互为负样本;医学数据中语义重复比例高,该假设更容易失效。
  2. 如果两位不同患者的报告语义相同,ConVIRT 的损失会怎么处理它们? 及格标准:把它们当作负样本推开,产生与语义相反的监督信号。
  3. MedCLIP 的语义相似度矩阵可能从哪里引入错误? 及格标准:实体抽取错误、否定与不确定性表述漏检、实体等权、矩阵本身带噪。论文的局限性一节承认了前两项。
  4. 论文报告 MedCLIP 用更少数据取得更好结果,这能直接归因于方法吗? 及格标准:不能直接归因,需要看消融实验,分离方法与数据规模各自的贡献。

参考答案 ​

  1. 被当作负样本的有 31 份。假负样本的数量无法事先确定,取决于数据里语义重复的比例,这个比例需要估计。
  2. n×n 种。引入 m 张有标签图像与 h 段文本后,组合数增至 (n+m)×(n+h)。
  3. one-hot 标签要求模型完全排除其他类;软目标取值在 0 与 1 之间,允许对语义相近的样本给出部分置信度。代价是软目标本身的误差会直接进入监督信号。

暂时不需要掌握 ​

常见错误 ​

错误 1 · 把论文报告的性能提升全部归给方法

原因:数据集规模、评测设置、预训练数据都可能同时改变。 解决:查看消融实验,确认方法改动单独贡献了多少,再下结论。

错误 2 · 认为假负样本只是医学领域的问题

原因:把 MedCLIP 的动机当成问题边界。 解决:假负样本在任何对比学习批次里都可能出现。医学数据因用词重复与类间细粒度相似而更严重,严重程度不同,问题的性质相同。

错误 3 · 把新论文当作对旧论文的最终修正

原因:默认后发表的方法已经解决了前一个问题。 解决:读懂新方法依赖的新假设,查看作者在局限性一节里的自述,判断这条假设在目标数据上是否成立。