0.5 数学上的成功不代表临床上的成功
前三节走完了一条完整的链条:向量、相似度、softmax、损失、梯度、参数更新。0.3 的训练把损失从
本节回到 0.1 留下的那个数,说明为什么这次成功里藏着问题。
0.5.1 那一格发生了什么
0.1 的相似度矩阵里,第 3 行第 4 列与第 4 行第 3 列都是
0.3 的训练之后,这一格变成
现在把这一格对应的两张胸片与两份报告摊开:
| 编号 | 胸片 | 报告 |
|---|---|---|
| C | 右肺下叶实变 | Right lower lobe airspace consolidation. |
| D | 右肺基底斑片状渗出 | Patchy right basilar opacity consistent with pneumonia. |
这是两位不同患者的胸片。两份报告描述的是相近的病理:右下肺的实变与渗出,临床上常常指向同一类问题。它们的相似度是
于是 0.3 里那一步更新有了另一种读法。模型把一个医学上合理的相似关系,当成错误推开了。损失降低的同时,模型学到的是“这两份报告不应该像”,而这句话在临床上不成立。
0.5.2 假负样本
问题的来源在 0.2 的损失构造里。一个批次内的
- 批次里不存在第二份与第
张胸片语义相符的报告。 - 被推开的报告与这张胸片在语义上确实无关。
语义相同但被当成负样本的样本,称为假负样本(false negative)。
假负样本在自然图像的图文数据里同样存在,只要一个批次里出现了语义相近的不同样本就会发生。医学数据的特点是发生得更频繁、更严重:医学文本的用词高度重复,不同医生的报告常常写着相同的发现,而类间差异又很细微,例如 pneumonia 与 consolidation、effusion 与 atelectasis 之间的边界本身就不清晰。
0.5.3 MedCLIP 的修正
MedCLIP(Wang et al., EMNLP 2022)做了两处改动。
第一处是解耦。把
第二处是用医学知识替换硬性的正负划分。流程是:
- 把报告拆成句子,用 MetaMap 抽取 UMLS 中的医学实体;图像的诊断标签也映射到 UMLS 概念,例如 Normal 映射为 No Findings。两者各自构成多热向量
与 。 - 两者的余弦相似度给出医学语义相似度(这里又是那个求两向量夹角的公式):
- 把
做 softmax 得到软目标 ,取代原先非零即一的正负指示。 - 图像与文本嵌入归一化后做内积得到预测相似度
,再做 softmax 得到预测分布 。 - 损失是软目标与预测分布之间的交叉熵:
两个方向取平均得到
与 ConVIRT 的差别落在正负样本的定义方式上。ConVIRT 用配对关系给出非零即一的标签,MedCLIP 用医学语义相似度给出介于
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 是这套动作的一个具体用法。
练习题
- 一个批次为
的 ConVIRT 训练里,与第 张胸片配对的报告只有 份,被当作负样本的有多少份?其中可能包含多少假负样本? - MedCLIP 把成对数据解耦后,
张图与 段文本最多能组成多少种图文组合? - MedCLIP 的软目标与 one-hot 标签有什么区别?
拷打 AI
把 MedCLIP 的语义相似度构造交给 AI,问下面这些可验证的问题。
- ConVIRT 的损失对负样本做了什么假设?这条假设在医学数据上成立吗? 及格标准:假定批次内非配对样本互为负样本;医学数据中语义重复比例高,该假设更容易失效。
- 如果两位不同患者的报告语义相同,ConVIRT 的损失会怎么处理它们? 及格标准:把它们当作负样本推开,产生与语义相反的监督信号。
- MedCLIP 的语义相似度矩阵可能从哪里引入错误? 及格标准:实体抽取错误、否定与不确定性表述漏检、实体等权、矩阵本身带噪。论文的局限性一节承认了前两项。
- 论文报告 MedCLIP 用更少数据取得更好结果,这能直接归因于方法吗? 及格标准:不能直接归因,需要看消融实验,分离方法与数据规模各自的贡献。
参考答案
- 被当作负样本的有
份。假负样本的数量无法事先确定,取决于数据里语义重复的比例,这个比例需要估计。 种。引入 张有标签图像与 段文本后,组合数增至 。 - one-hot 标签要求模型完全排除其他类;软目标取值在
与 之间,允许对语义相近的样本给出部分置信度。代价是软目标本身的误差会直接进入监督信号。
暂时不需要掌握
- 因果推断中的干预与反事实框架,见 2.14 高维统计与因果推断
- 信息不等式与数据处理不等式,见 4.2 散度、距离与信息不等式
- 互信息的估计方法,包括 KSG 估计器,见 4.7 信息论与机器学习
常见错误
错误 1 · 把论文报告的性能提升全部归给方法
原因:数据集规模、评测设置、预训练数据都可能同时改变。 解决:查看消融实验,确认方法改动单独贡献了多少,再下结论。
错误 2 · 认为假负样本只是医学领域的问题
原因:把 MedCLIP 的动机当成问题边界。 解决:假负样本在任何对比学习批次里都可能出现。医学数据因用词重复与类间细粒度相似而更严重,严重程度不同,问题的性质相同。
错误 3 · 把新论文当作对旧论文的最终修正
原因:默认后发表的方法已经解决了前一个问题。 解决:读懂新方法依赖的新假设,查看作者在局限性一节里的自述,判断这条假设在目标数据上是否成立。