儿童胸片:AUROC 挺过了跨国迁移,决策阈值没有

孟加拉国美国国际大学(AIUB)的一位研究者冻结了一个三随机种子的 DenseNet121 集成模型,该模型在广州的 5 824 张儿童胸片上训练——内部 AUROC 0.976,敏感度 95.1%——随后未作任何调整,直接应用于孟加拉国的 3 257 张影像和越南从未被触碰过的 1 077 张影像。AUROC 降至 0.798 与 0.742,退化严重但排序能力仍然可用;而在源数据上冻结的决策阈值下,敏感度分别崩塌至 6.2% 和 0%,对应 2 377 例和 170 例肺炎。用 163 个本地标签做重新校准,可在不改变排序的前提下把敏感度恢复到 88.3%,但会让 78.5% 的胸片触发警报:这篇论文真正证明的是,「可以修好」和「可以部署」并不是同一句话。

背景

儿童肺炎胸片分类是医学人工智能中最饱和、也是评估最差的领域之一。自 2018 年以来发表的几乎所有工作,都在同一份资源上训练和测试:Kermany 等人发表于《Cell》的广州数据集,约 5 800 张来自中国单一中心的儿童影像。儿科放射学的系统综述四年来反复指出同一点——外部测试仍然罕见,临床可推广性依然不确定。

但这篇预印本要攻击的问题并不是缺少外部验证,而是外部验证被压缩成一个数字。当一篇论文宣布完成了「外部验证」时,它几乎总是只报告一个 AUROC。然而一个性能数字背后藏着三个不同的问题。AUROC(ROC 曲线下面积)衡量的是排序能力:随机抽取一个患病儿童和一个健康儿童,模型给患病者更高分数的概率是多少?它完全忽略分数的尺度。校准衡量的是:模型报出的 0.8 概率,是否真的对应 80% 的真实阳性。最后,工作点是软件触发警报的那个具体阈值:正是它,而且只有它,产生了论文中公布的敏感度和特异度。

这三者相互独立地变化。目标人群中分数发生单调位移——所有分数被整体拉低,但顺序不变——会让 AUROC 毫发无损,同时让源阈值彻底失效。反过来,重新校准可以修好概率,却对排序没有丝毫改善。这正是本研究要用事先锁定的方案,通过实验加以证明的事情。

方法

三个队列,三种角色。广州/Kermany(中国)用于开发:训练、调参、温度缩放、阈值选择、内部测试。BDCXR-3257(孟加拉国,3 257 张影像,880 张正常、2 377 张肺炎,患病率 73%)是主要外部测试集。VinDr-PCXR/PediCXR(越南)提供第二个外部队列,在任何推理之前已统一标准化为 1 077 次检查(907 例正常,170 例「肺炎家族」),除最终推理外从未用于任何其他用途。

分析层级被锁定。这是最重要的设计决定。BDCXR 首先以完整队列的形式用冻结的源系统评估,该结果原样保留。只有在此之后,BDCXR 才被切分为 651 张影像的适配池和不相交的 2 606 张影像保留集。VinDr 从不用于训练、校准、模型选择或阈值选择。换句话说,作者明确禁止自己把「看过目标数据之后」得到的结果重新粉刷成「外部验证」。

源端的泄漏控制。每张广州影像都被解码并计算哈希:剔除 32 张完全重复的图像,剩下 5 824 张唯一胸片。由于细菌性与病毒性文件名之间复用了数字标识符,基于文件名的分组是在各疾病命名空间内部完成的。最终划分:4 165 张训练、1 041 张调参、618 张内部测试,哈希重叠与派生组重叠均为零。作者诚实地指出,这些分组只是泄漏控制的代理,并非经过核实的患者标识符。

模型。一个在 ImageNet 上预训练的 DenseNet121 编码器,在同一张胸片的两个视图之间共享:完整图像,以及由 TorchXRayVision 解剖学 PSPNet 分割器生成的肺部条件图像。一个逐通道学习的门控将两种表征融合。MixStyle 正则化——在训练中跨样本混合风格统计量,以阻止模型抓住某台特定扫描设备的外观特征——仅在源域训练时启用。预处理:稳健强度缩放、保持长宽比的信箱填充、320 × 320、三通道复制、ImageNet 归一化;VinDr 的 DICOM 先做 rescale 处理并纠正 MONOCHROME1 反转。三个随机种子(42、52、62)在 logit 层面平均,随后仅用源域调参集的 logits 拟合温度缩放——一个用来压平或锐化概率的单参数(T = 0.8313)。

阈值。这是全研究最值得商榷的选择,必须记住:主工作点是源域调参数据上,在敏感度不低于 90% 的前提下特异度最高的那个 ROC 点。它等于 0.9999728。小数点后七个 9。另有一个所谓「宽松」阈值,是事后推导的,但同样只用源数据:0.314311。

稳健性测试。在同一源划分上,三个种子 42 的配对变体检验崩塌是否依赖于所提出的架构:常规全图 DenseNet121、无门控无 MixStyle 的双视图,以及完整模型。每个分支都获得各自的温度和各自的源阈值。压力测试通过在四种视图上重新评估 BDCXR 来寻找捷径(shortcut)信号:完整图像、肺部、仅背景、仅边框。独立的域分类器衡量源/目标可分性。统计方法:比例用 Wilson 区间,VinDr 用 2 000 次图像级分层自助重采样,微调比较用 2 000 次配对自助法。报告遵循 CLAIM 2024 与 TRIPOD+AI 原则。

结果

在内部一切正常。AUROC 0.976,AUPRC 0.982,敏感度 95.1%(368/387;95% CI 92.5–96.8),特异度 90.9%(210/231;86.5–94.0),平衡准确率 93.0%。这正是能上新闻标题的那类结果。

在孟加拉国,排序还在,决策没了。AUROC 0.798,AUPRC 0.912。但 2 377 例肺炎中只有 147 例越过源阈值:敏感度 6.2%(CI 5.3–7.2),特异度 99.9%(879/880),平衡准确率 53.0%。临床换算:每 100 张经系统处理的胸片中,4.5 张触发警报,而68.5 例肺炎被漏掉。校准同样崩溃(ECE 0.258,Brier 0.268)。

在越南,阈值从未被触发。AUROC 0.742(自助 CI 0.701–0.782),AUPRC 0.396。170 次肺炎家族检查中没有一次越过阈值:敏感度 0%(Wilson CI 0–2.2),特异度 100%,平衡准确率 50.0%。校准斜率为 0.196。两种更严格的终点定义给出 AUROC 0.729 与 0.734,敏感度同样为零。

这不是所提架构的错。常规全图 DenseNet121 在 BDCXR 上从 0.961 降到 0.749,敏感度从 94.8% 降到 16.2%。无门控双视图:0.977 → 0.766,敏感度 96.1% → 4.7%。完整模型:0.966 → 0.789,95.9% → 4.4%。现象处处一致;「改进版」模型换来了一点外部 AUROC,却丢掉了更多阈值敏感度。

重新校准修好了概率,没有修好决策。在 2 606 张影像的保留集上,锁定的源模型给出 AUROC 0.799、敏感度 6.4%、ECE 0.256。用 163 个本地标签(队列的 5%)拟合的 Platt 重校准——对分数做一次简单的逻辑变换,因而是单调的,因而不改变 AUROC——给出:敏感度 88.3%,ECE 0.044,但特异度 47.9%,阳性预测值 0.821,警报率 78.5%,每 100 次检查 14.1 次假警报。用 326 个标签:敏感度 91.9%,特异度 38.6%,警报率 83.7%,每 100 次 16.6 次假警报。用 651 个标签则不再改善(90.7% / 42.5%)。标签预算立刻饱和,而它买到的是一套会给五分之四胸片打上标记的策略。

而且这种修复并不稳定。在 163 个标签的 200 次重复抽样中,平均敏感度为 91.5%(2.5–97.5 百分位:86.8–95.5%),但平均特异度为 37.1%,范围从 21.0% 到 49.3%。恢复的方向是可复现的;得到的工作点则严重依赖于究竟标注了哪 163 张影像。

微调没有带来额外收益。预先设定的 326 标签比较——最后一个块微调 对 配对的 Platt 重校准——给出 0.7907 对 0.7893,即 +0.00136(95% CI −0.00117 至 +0.00382;p = 0.293)。三种子集成在 326 标签下达到 0.805,651 标签下达到 0.815:排序确有提升,但很有限。

信号存在于肺部之外。在 BDCXR 上,肺炎 AUROC 在完整图像上(0.794)、肺部上(0.760)、仅背景上(0.719)和仅边框上(0.667)都高于随机水平。源与目标的域分类在所有视图上都近乎完美。

病态阈值只能解释部分灾难。宽松阈值(0.314311)把内部敏感度提到 100%,但在孟加拉国只有 69.0%,在越南只有 15.9%。七个 9 的阈值放大了失败,但没有制造失败。

做得好的地方

分析层级被锁定,而且作者遵守到了自我举证的程度。BDCXR 以完整队列评估,该结果在看到任何一个本地标签之前就被保留;VinDr 全程未被触碰。这正是 TRIPOD+AI 所要求、却几乎无人执行的纪律,因为它禁止把适配之后得到的结果说成外部结果。作者更进一步:他披露自己流程的早期版本曾按原始机构名称字符串比较,结果发生了泄漏,公开的折划分是重新切分过的。他还说明,广州的泄漏控制分组来自文件名,并非经核实的患者标识符。这种自我披露的程度很罕见。

架构稳健性分支化解了最明显的质疑。匆忙的读者会得出结论:带门控的双视图是个坏主意。作者恰恰检验了这一点:一个未加修饰的 DenseNet121,在同一划分上训练、拥有自己的校准和自己的阈值,同样崩塌(0.961 → 0.749,敏感度 94.8% → 16.2%)。因此迁移结果并非某一具体实现的产物。这是关于他自己架构的一个负面贡献,并作为负面结果发表:作者明确写道,本文并不提出新的视觉骨干网络,其贡献是对失败的可复现分解。

「恢复」不仅用指标计价,还用工作量计价。这正是本文区别于领域适配文献之处。几乎所有证明轻量重校准可恢复敏感度的工作,都止步于敏感度。而这里在同一行表格里可以读到:敏感度 88.3%、特异度 47.9%、警报率 78.5%、每 100 次检查 14.1 次假警报。200 次重采样分析还显示,得到的特异度会随抽样在 21% 到 49% 之间波动。也就是说,作者不仅度量了修复的运营成本,还度量了它的不可预测性。

做得不够好的地方

0.9999728 这个主阈值,制造了摘要所主打结果的一部分。小数点后七个 9 的工作点不是一个临床选择,而是源数据过于容易导致 sigmoid 饱和的症状——模型对几乎所有广州肺炎给出的概率都紧贴 1,于是「敏感度 ≥ 90% 下特异度最高」这条规则必然落在一个荒谬的点上。构成标题的数字——6.2% 与 0%——部分是这套机制的产物。作者承认了这一点,测试了宽松阈值,并正确地得出结论:它「放大了但没有制造」这次失败。但摘要仍以 6.2% 和 0% 领衔,而诚实可迁移的数字更接近孟加拉国 69.0%、越南 15.9%。这是一个教科书式的误导性指标案例——这次是对模型不利而非有利,但仍然是一种扭曲。

完全没有人类对照,而参考标准在三个层面上都很薄弱。没有任何一项与放射科医生、儿科医生、甚至一条简单临床规则作比较:因此我们无从判断孟加拉国 69% 的敏感度究竟是好、是坏、还是无关紧要。广州的标签来自一份自 2018 年起局限性就有文献记载的资源。越南的终点必须由作者本人在推理前统一标准化(Pneumonia、Broncho-pneumonia 与 Pleuro-pneumonia 计为阳性,干净的「No finding」计为阴性)——这是一个可辩护的选择,在分析前已冻结,并用两个更严格的定义做了核验,但它终究是实验者对自己所测变量作出的决定。最后,BDCXR 没有任何经核实的患者标识符:图像级自助法无法考虑同一名儿童可能有多张胸片的情况,这很可能低估了不确定性——作者对此白纸黑字地写明了。

标题写着「三个国家」,而研究其实无法把任何差异归因于国家。这三份资源在地理、年龄分布、患病率(73% 对 15.8%!)、设备、压缩、疾病谱、标注规程和参考标准上同时存在差异。作者在局限性部分明确说了这一点,并拒绝任何关于地理的因果结论——但标题和摘要仍在售卖「across three countries」。此外还有三处可复现性上的弱点。捷径分析是提示性的、而非因果性的:背景在 0.719 上具有预测性,说明解剖结构之外存在与标签相关的信号,但不能说明模型确实用了它,作者也承认这一点。代码被宣布为「随本次投稿提供的可复现性存档」——没有公开仓库、没有代码 DOI、没有公开权重,而预印本采用 CC BY-NC-ND 4.0 许可,既不可商用也不可改作。而且这是一项独立作者、无资助、无前瞻性验证、无本地放射科医生复判、无决策曲线的工作:论文严谨记录下来的是一次迁移失败,而不是通往部署的路径。

这意味着什么

对研究界。可迁移的成果不是任何一个数字,而是那套五分量方案:区分度、校准、冻结工作点的行为、捷径信号,以及在有限标签预算下的可恢复性。这五个维度只需要在已经拥有的数据上多花几小时算力,却能把单靠 AUROC 完全混为一谈的情形区分开来。本文最锐利的演示只有一行:AUROC 0.742 与敏感度 0%,在同一队列、同一模型、同一时刻。任何以 AUROC 为依据统计「成功外部验证」次数的系统综述,都在数错。我们在重症监护谵妄模型在 eICU 与 MIMIC 之间的可迁移性一文中已经见过这种分裂,机制完全相同。

对临床医生与设备采购方。要记住的数字是 78.5%。这是一次被描述为成功的重校准之后的警报率——敏感度恢复到 88.3%,校准优秀,ECE 仅 0.044。在一个每天产出两百张胸片的科室里,一款会标记五分之四胸片的软件不是分诊工具,而是噪声源。实践上的结论是:合同条款里写「在我们的数据上 AUROC ≥ 0.80」是不够的;必须写明阈值、该阈值下在本地人群中的敏感度与特异度与警报率,以及这些指标漂移时的重校准流程。推论是:带着出厂阈值买回来的模型,很可能开箱即不可用——而本地重校准需要本地标签,也就是放射科医生的时间,也就是一笔没人预留的预算。

对患者与公众。在越南的 1 077 次检查中,模型在 170 例肺炎里检出了零例。不是因为它「什么都看不见」——它的排序能力明显高于随机——而是因为在中国调好的那个旋钮,到越南什么都不对应。这是医学人工智能最阴险的失效模式:系统不会大声出错,它会沉默。而孟加拉国胸片的背景与边框仍然能预测肺炎这一事实提醒我们,这些模型有一部分学到的是医院,而不是疾病——正是我们在筛查性乳腺 X 线数据集融合一文中描述过的同一种捷径学习。给非专业读者的一般教训是:当一份新闻稿宣布某模型达到 95% 敏感度时,该问的不是「在多少名患者上?」,而是「在哪个阈值上,以及那个阈值是不是在同一批数据上定的?」。

延伸阅读

预印本:Cross-dataset transportability of pediatric chest X-ray deep learning across three countries: discrimination, calibration, operating-point failure, and limited-label recovery,arXiv:2609.05140 [eess.IV],DOI 10.48550/arXiv.2609.05140,2026 年 9 月 4 日提交,采用 CC BY-NC-ND 4.0 许可。独立作者:Nazim-E-Alam,孟加拉国美国国际大学(AIUB)计算机科学系,达卡。无任何来自公共、商业或非营利部门的专项资助;未申报利益冲突。作者声明在文献综述、代码调试、稿件结构组织与语言润色中使用了 ChatGPT(OpenAI),并表示所有数值主张均已对照留存的分析输出核验;没有任何科学图像由 AI 生成或改动。源数据仍由各自的保管方持有:广州/Kermany(Cell,2018)、PediCXR(Scientific Data,2023)和 PhysioNet 上的 VinDr-PCXR,其 DICOM 为受限访问且不予再分发。一份可复现性代码存档随投稿提供,但未公开存放。关于方法学背景,有两篇奠基性读物:Zech 等,PLOS Medicine 2018,关于肺炎模型如何编码机构身份;以及 Van Calster 等,BMC Medicine 2019,《Calibration: the Achilles heel of predictive analytics》。文中引用的报告规范为 CLAIM 2024 与 TRIPOD+AI。