复现医学AI论文:0.78的F1分数从何而来?

一个典型的复现困境
在AI研究领域,论文结果的可复现性一直是备受关注的痛点。近日,一位研究者在Reddit上详细记录了自己尝试复现两篇医学影像分类论文的经历,引发了社区对医学AI基准可信度的深入讨论。
这位研究者的目标是复现MedViT和LungMaxViT两个模型在NIH ChestX-ray14数据集上的表现。NIH ChestX-ray14是由美国国立卫生研究院于2017年发布的大规模胸部X光数据集,包含来自30,805名患者的112,120张正面胸部X光影像,标注了14种常见胸部疾病(如肺不张、心脏肥大、积液、浸润、肿块、结节、肺炎等)。值得注意的是,该数据集的标签并非由放射科医师逐一标注,而是通过自然语言处理技术从放射学报告中自动提取的,标签准确率估计约为90%,这一特性使得基于该数据集的性能比较本身就具有内在的不确定性。
根据MedViT论文(发表于Nature子刊《Scientific Reports》)的报告,该模型在ChestX-ray14上取得了0.7791的Macro F1分数。Macro F1是多标签分类中常用的评估指标:首先为每个类别独立计算F1分数(精确率和召回率的调和平均),然后对所有类别取简单算术平均。在ChestX-ray14这样存在严重类别不平衡的数据集中(某些疾病如疝气仅占约0.2%的样本),Macro F1对稀有类别的表现极为敏感,阈值的微小变化可能导致稀有类别的精确率和召回率剧烈波动,进而显著影响整体得分。
然而,在严格按照论文描述进行复现后,研究者得到的结果却仅在0.30–0.35之间徘徊——差距之大,远超正常的实现差异或随机训练波动所能解释的范围。

排除了所有"常规嫌疑人"
有意思的是,这位研究者的复现工作相当扎实,几乎排除了所有常见的错误来源。
架构与权重都已核对
研究者最初发现自己的实现因为PDF解析问题而与论文有出入,但在修正后,他确认MedViT和LungMaxViT都精确匹配了各自论文中描述的架构,并且下载使用了作者指定的预训练权重。MedViT是一种专为医学影像任务设计的Vision Transformer变体,融合了CNN的局部特征提取能力和Transformer的全局注意力机制,采用多尺度特征融合策略。LungMaxViT则是MaxViT(Multi-Axis Vision Transformer)在肺部影像领域的适配版本,通过在局部窗口注意力和全局网格注意力之间交替来实现线性复杂度的全局感受野。这基本排除了网络结构本身是差异来源的可能性。
在迁移学习方面,研究者使用了论文指定的预训练权重。预训练权重的选择(ImageNet-1K vs ImageNet-21K、监督预训练 vs 自监督预训练如MAE/DINO)会显著影响下游任务的性能,不同版本的预训练权重可能导致数个百分点的性能差异。研究者确认使用了与论文完全一致的预训练版本,排除了这一变量。
训练过程正常
从训练行为看一切正常:MedViT在约10–15个epoch内收敛,LungMaxViT则在110+个epoch后收敛。损失曲线遵循典型的深度学习优化轨迹——早期快速下降,随后逐渐收敛。
有趣的是,研究者指出MedViT论文中的Fig. 6和Fig. 7与他的观察结果不一致:论文图中显示的是近似线性的上升趋势,而他从未观察到这种现象。这让他怀疑那些图表是否对应不同的指标、标注错误,或是在不同实验设置下生成的。
阈值、数据增强都尝试过
为了排除阈值设置的影响,研究者在验证集上进行了搜索精度为0.001的逐类阈值优化。在数据增强方面,他同时尝试了简单的增强流程和基准论文中描述的更全面的增强策略。这些技术各有不同的作用机制:AugMix通过混合多条增强链的输出来提高模型的鲁棒性;AutoAugment使用强化学习自动搜索最优增强策略组合;Mixup将两张训练图像及其标签按随机比例线性插值混合;CutMix将一张图像的矩形区域替换为另一张图像的对应区域,标签按面积比例混合;Random Erasing随机遮挡图像中的矩形区域以模拟遮挡情况。这些技术的具体参数配置(如Mixup的alpha值、CutMix的概率)往往对最终性能有显著影响,但论文中对这些细节的披露程度参差不齐。
两个模型的预处理和训练配置也都严格遵循论文:MedViT使用Adam优化器、1e-4学习率、CosineAnnealingLR调度(一种让学习率按余弦函数形状从初始值逐渐降低的策略,相比固定步长衰减提供更平滑的变化曲线);LungMaxViT则采用SGD、CLAHE增强(对比度受限自适应直方图均衡化,通过在局部区域内进行直方图均衡化并限制对比度增强幅度,特别适合增强X光图像中软组织的可见度)、高斯去噪等专门针对X光图像的处理流程。
文献中F1分数的巨大差异
这位研究者的困惑,实际上触及了ChestX-ray14这个基准数据集长期存在的一个核心问题:报告结果的巨大分散性。
他梳理了文献中的表现区间:
- 许多单模型CNN/ViT论文报告的Macro F1约在0.3–0.5之间
- 一些集成方法报告0.5–0.7
- 最新的论文《Pretraining Diversity and Clinical Metric Optimization》报告了0.821的F1,但这是通过三模型集成加上临床指标优化实现的
这个跨度从0.3到0.82,几乎覆盖了整个可能的取值范围。这本身就是一个强烈的信号:同一个数据集上的"性能",在很大程度上取决于未被充分披露的评估协议和实验细节,而非单纯的模型能力。考虑到Macro F1对类别不平衡的敏感性——在ChestX-ray14中,最常见的"浸润"类占比约17.7%,而最稀有的"疝气"类仅占0.2%——仅仅是阈值选择策略的不同就可能导致10个百分点以上的差异。
隐藏在细节中的魔鬼
研究者提出的几个关键问题,恰恰指向了医学多标签分类中最容易产生混淆的方面。
多标签分类 vs. 独立分类器
一个核心疑问是:MedViT究竟是作为标准的多标签分类器训练(一张图像输出14个sigmoid值,使用BCE损失),还是某些论文实际上为每种疾病训练了独立的分类器?这两种设置下计算出的Macro F1可能天差地别。在标准多标签设置中,单个模型需要同时学习14种疾病的特征表示,任务间可能存在干扰;而独立二分类器方法为每种疾病训练专门的模型,每个模型只需关注区分"有病"和"无病",往往能"刷"出更高的单类F1,进而拉高宏平均。后一种方法的计算成本是前者的14倍,但在论文中可能仅以一句话带过甚至完全不提及。
数据划分的陷阱
研究者特别提到了患者级别(patient-level)与图像级别(image-level)的数据划分差异。ChestX-ray14中同一患者可能有多张X光片(平均每位患者约3.6张),如果按图像随机划分,同一患者的影像可能同时出现在训练集和测试集中,造成数据泄露。这种泄露之所以严重,是因为同一患者的多张影像之间存在强相关性——相似的解剖结构、相同的病变特征、甚至相同的拍摄设备和体位,模型可能仅通过"记住"患者特定的解剖特征就能在测试集上获得虚高的性能。研究表明,图像级别划分与患者级别划分之间的AUC差异可达2-5个百分点,在F1等更敏感的指标上差异可能更大。NIH官方提供了推荐的患者级别划分方案,但并非所有研究者都严格遵循,这是医学影像领域一个臭名昭著的"陷阱"。
分数从何而来
研究者列出的可能贡献因素值得每一位从业者警惕:逐类阈值优化、类别加权、数据划分方式、预训练初始化、更高的图像分辨率、集成平均。这些因素叠加起来,完全可能将一个真实能力在0.35左右的单模型"包装"成0.7+的报告结果。特别值得注意的是,逐类阈值优化如果在测试集上进行(而非验证集),本身就构成了一种信息泄露;而图像分辨率的差异(如224×224 vs 448×448)在ViT架构中的影响尤为显著,因为更高分辨率意味着更多的patch token,直接影响模型的有效感受野和计算能力。
对研究社区的启示
这个案例的价值,远不止于两篇特定论文的复现问题。它揭示了当前AI研究,尤其是医学AI研究中一个系统性的隐忧。
当一位研究者独立复现了两个不同的已发表架构、对照论文核对了实现、使用了报告的预训练权重、观察到了正常的优化行为,却始终只能达到报告值一半不到的性能时,最可能的解释是:论文中存在未记录的实现细节、评估协议差异,或其他未被完整描述的实验设置。
这一现象并非孤例。2019年的一项大规模复现研究发现,机器学习领域约有相当比例的论文结果难以复现,原因包括代码未公开、超参数未完整记录、随机种子未固定、评估流程描述模糊等。在医学AI领域,这些问题更加突出,因为数据访问受限、伦理审批流程复杂、且临床应用的高风险性对结果可靠性有更严格的要求。
对于依赖这些论文来选择基线、构建产品甚至指导临床决策的从业者来说,这是一个严肃的提醒:
- 不要盲目相信论文报告的SOTA数字,尤其是当同一基准上的结果分散度极大时
- 复现实验时,务必确认评估协议(阈值策略、数据划分、指标定义)的一致性
- 医学AI应用中,患者级别的数据划分应该是基本要求,而非可选项
- 期刊和会议应要求作者提供完整的实验代码、配置文件和评估脚本,而非仅仅是模型架构的描述
目前,社区仍未对ChestX-ray14单模型的"可复现SOTA"给出明确答案。这位研究者的公开求助,或许正是推动这一领域走向更高透明度和可复现性的一小步。真正有价值的进步,往往从诚实地面对"复现不出来"开始。


