想象一位刚从医学院毕业的 AI 实习医生“小智”,入职第一天就被领进考场。医院没有直接让它坐诊,而是摆出三张风格迥异的考卷:第一张,选择题,四选一,考医学知识的广度——这是 MedQA;第二张,模拟美国执业医师资格考试的大卷子,拼的是临床推理和跨科目整合——这是 USMLE;第三张最特别,考官扔来一篇篇论文摘要,让它读完回答“这个干预到底有没有效”,答案要给出 yes、no 或 maybe,还得说出依据——这是 PubMedQA。三场考试没有一张卷子重叠,却共同回答同一个问题:这个 AI 医生,到底行不行?这篇文章会把三本“考题册”的出题逻辑、评分尺、考试陷阱和冲刺技巧,一一讲给你听。

岗位关联

医学问答评测是衡量医疗 AI 能力的“体检报告”,也是医疗大模型迭代的导航仪。掌握它,是 AI 从业者进入临床 NLP 与电子病历领域的必修课。

目录
  1. 可视化演示
  2. 一、评测体系概述:为什么医学 AI 要“赶考”
  3. 二、MedQA 选择题库:第一场标准化笔试
  4. 三、USMLE 执业考:综合临床推理大考
  5. 四、PubMedQA 问答:科研答辩现场
  6. 五、评测指标体系:多把评分尺
  7. 六、数据集挑战:坑题与难题
  8. 七、评测实践策略:考前冲刺与开卷技巧
  9. 八、未来发展方向:从三场考试走向临床
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示MedQA、PubMedQA、USMLE三大医学问答数据集的规模、模型性能对比和评测流程,交互切换查看各维度详情。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+modeData.dataset.caption+'

一、评测体系概述:为什么医学 AI 要“赶考”

“小智”是一位刚从医学院毕业的 AI 实习医生。入职第一天,医院没有让它直接坐诊,而是把它领进一间神秘考场:三张考卷依次铺开,分别从知识点、临床推理和科研素养三个维度考核。考官的理由很简单——医学答案关乎人命,AI 到底有没有真本事,不能光靠毕业成绩单,必须用第三方标准化试卷来量。没有这场赶考,再漂亮的模型也只是“简历很厚、问诊翻车”。

这套考试思想,正是临床 NLP(临床自然语言处理)领域测评 AI 模型的底层逻辑。电子病历里有海量文本,但模型是否真正具备医学问答能力,必须放到专门构建的医学问答基准上检验。于是,三大公开基准被确立:MedQA 考医学知识广度,USMLE 考临床推理深度,PubMedQA 考科研证据的阅读理解。三者共同构成医疗大模型的“毕业考”。

从工程视角看,评测不仅是“打分”,更是反馈信号。线上模型每迭代一次,都要在同一套测试集上反复测量,确保能力不倒退;同时,这些基准也为训练阶段提供“题库”,让模型知道标准答案长什么样。三套数据集在题型、来源、难度上互相补充,MedQA 用单选题,USMLE 用综合临床题,PubMedQA 则要求开放生成结论,这样设计是为了防止“偏科”。

为了保证成绩单可信,三份考卷必须严格隔离:

回到小智的考场,正是这种“训练不碰测试题”的铁律,让每份成绩单都有公信力。三张卷子的考法虽然不同,但背后都有一个共同原则:不让 AI 在正式考试前见过考题,才能看出它在真实医学问题上的底气。

∣Dtrain∣:∣Ddev∣:∣Dtest∣=8:1:1|D_{\text{train}}| : |D_{\text{dev}}| : |D_{\text{test}}| = 8 : 1 : 1
三份卷子分开使用:训练集是平时刷题册,验证集是考前模拟卷,测试集是正式考题,绝不允许“泄题”。
  1. 训练集 $\displaystyle |D_{\text{train}}|$AI 医生平时“刷题”用的题库,模型参数在这里不断更新。
    ∣Dtrain∣=8k|D_{\text{train}}| = 8k
  2. 验证集 $\displaystyle |D_{\text{dev}}|$用来调整超参数的“模拟卷”,可以多做几遍,但不计入最终成绩。
    ∣Ddev∣=k|D_{\text{dev}}| = k
  3. 测试集 $\displaystyle |D_{\text{test}}|$最终“考场卷”,只能考一次,用于对外公布成绩。
    ∣Dtest∣=k|D_{\text{test}}| = k

二、MedQA 选择题库:第一场标准化笔试

1 号医院发下的是最传统的“标准答卷”:密密麻麻的单选题,四选一,选完涂卡。小智刚松一口气,却发现题目相当刁钻——“一位胸闷患者伴出汗,心电图提示 ST 段抬高,下一步最佳处理是什么?”这四选一没有一眼能看出的正确答案,需要对症候、辅检、指南三者联动才能解答。

这张答卷就是 MedQA,一个从美国执业医师资格考试(USMLE)题源中整理出的医学选择题问答数据集。它在 AI+医疗圈被广泛使用,因为它有清晰的标准答案、可量化的准确率和极高的医学专业性。每题由题干、四个候选选项和一个正确答案构成,形式上与人类医生参加的标准化考试完全相同。

MedQA 整体包含约 12 万道题,主流划分是把题目按 8:1:1 分成训练、验证、测试三部分。模型在测试集上以单选题准确率作为成绩;由于每道题四个选项,随机瞎猜的期望是 25%,所以能答到 60% 以上,就说明模型已经学进了相当扎实的医学知识。

第一场笔试,小智交出的答卷上画满 ABCD 的涂卡标记,机器一读,正确率 78%。这个数字说明它对基础医学知识的掌握已经相当扎实;但也提醒我们,选择题终究只是“纸上谈兵”,第二场考试的挑战才刚刚开始。

Accuracy=∑n=1NI[a^n=an]N\text{Accuracy} = \frac{\sum_{n=1}^{N} \mathbb{I}[\hat{a}_n = a_n]}{N}
准确率是 MedQA 最核心的成绩单指标:模型预测答案与标准答案一致的题数,除以总题数。
  1. 预测答案 $\displaystyle \hat{a}_n$模型对第 $n$ 道题输出的选项序号,可能是 A、B、C、D 之一。
    a^n\hat{a}_n
  2. 指示函数 $\displaystyle \mathbb{I}[\cdot]$当模型预测 $\hat{a}_n$ 与标准答案 $a_n$ 完全相等时,函数返回 1,否则返回 0。
    I[a^n=an]\mathbb{I}[\hat{a}_n = a_n]
  3. 累加与取平均把所有题的指示函数值加起来,再除以总题数 $N$,就得到 0 到 1 之间的正确比例。
    ∑n=1NI[a^n=an]N\frac{\sum_{n=1}^{N} \mathbb{I}[\hat{a}_n = a_n]}{N}

三、USMLE 执业考:综合临床推理大考

2 号医院的考卷明显升级了:不再是一问一答,而是给出一段完整病历——中年男性、胸痛三小时、心电图和化验结果列了一整页,四个选项里既有可能的诊断,也有紧急处理方案。小智必须像住院医师一样做临床推理:先分析症状,再结合检验,最后权衡用药风险,任何一步遗漏都会踩坑。

这套考卷正是在真实 USMLE(美国医师执业资格考试)基础上构建的医学问答基准。相比 MedQA 的单点记忆,USMLE 更强调“综合推理”:一道题往往横跨解剖、生理、病理、药理等基础学科,再与内科、外科、儿科、精神科等临床场景交叉,几乎没有纯直白的记忆题。

为了对考生的整体水平给出均衡评价,USMLE 这样的综合考试不能简单求和,而要考虑不同科目的题量和难度权重。基础科目占三成,临床科目占七成,每科得分先加权再平均。这一思想在测评大模型时同样重要:既不能只看内科而忽略儿科,也不能让题目数量少的冷门科目被边缘化。

当小智完成 USMLE 这场“综合实战考”时,考官特别在报告里标注了“儿科推理表现偏弱”。这正是加权平均的意义:它不会让内科的高分掩盖所有薄弱点。第二场考试让医院看到,小智能像人类医生一样“想”,但这还只是封闭式选择题;第三场,它需要开口说话了。

TotalScore=∑i=1Mwi⋅si∑i=1Mwi\text{TotalScore} = \frac{\sum_{i=1}^{M} w_i \cdot s_i}{\sum_{i=1}^{M} w_i}
加权平均分让不同科目在总分中的贡献按题量比例分配,避免“偏科”拉高总分。
  1. 科目得分 $\displaystyle s_i$第 $i$ 个临床或基础科目的正确率,例如儿科 80%、内科 90%。
    si∈[0,1]s_i \in [0, 1]
  2. 科目权重 $\displaystyle w_i$该科目考题数量占全部题量的比例,题目越多,权重越大。
    wi=∣Di∣∣D∣w_i = \frac{|D_i|}{|D|}
  3. 加权平均分子是各科得分乘以权重后的总和,分母是权重之和,最终得到一个 0 到 1 之间的总分。
    ∑i=1Mwi⋅si∑i=1Mwi\frac{\sum_{i=1}^{M} w_i \cdot s_i}{\sum_{i=1}^{M} w_i}

四、PubMedQA 问答:科研答辩现场

3 号医院的考场彻底换了画风:没有答题卡,考官直接把一篇论文摘要拍在桌上——“这项随机对照研究发现每天服用维生素 C 能显著降低感冒发生率,小智,你认为这个结论成立吗?请回答 yes、no 或 maybe,并说明依据。”小智心里很清楚,这已经不是背答案,而是要对证据做判断。

这就是 PubMedQA 的核心:一个基于 PubMed 医学文献构建的开放问答数据集。它把真实研究摘要作为背景材料,要求模型阅读后回答“该研究是否支持标题中的结论”,标准答案分为 yes、no、maybe 三种。与 MedQA 不同,PubMedQA 还鼓励模型给出推理片段,因此模型输出是短文本而不是选项序号。

因此,PubMedQA 的评测不能只算选择正确率,更需要看模型生成的结论与原答案是否一致。最常用的指标是精确匹配(Exact Match,EM):把模型最终输出的 yes/no/maybe 与医生标注的标准答案逐字比较,完全相同才算对,再统计所有问题中的达标比例。EM 的严格性让它能有效识别“答非所问”的模型。

小智在第三场考试中回答了一个“no”,后面还附上引用摘要里的置信区间作依据。考官点点头:虽然 PubMedQA 只是三分类的结论判断,但能读出论文证据、敢对研究下结论,正是医学 AI 向临床证据链迈出的关键一步。

EM=1N∑n=1NI[gn=g^n]\text{EM} = \frac{1}{N} \sum_{n=1}^{N} \mathbb{I}[g_n = \hat{g}_n]
EM 相当于“是非题判卷”:模型答案和标准答案完全一致得 1 分,稍有偏差就不得分。
  1. 标准结论 $\displaystyle g_n$论文作者或标注医生认可的标准答案,取值为 yes、no 或 maybe。
    gn∈{yes,no,maybe}g_n \in \{\text{yes}, \text{no}, \text{maybe}\}
  2. 模型答案 $\displaystyle \hat{g}_n$模型生成并归一化后的三选一结论,通常需要从自由文本中抽取。
    g^n\hat{g}_n
  3. 严格相等比较指示函数要求两者完全一致,多余标点、大小写不一致都可能算错,体现医学评测的严苛。
    I[gn=g^n]\mathbb{I}[g_n = \hat{g}_n]

五、评测指标体系:多把评分尺

三场考试之后,小智拿到成绩单,却发现上面不止一个分数:笔试有正确率,答辩有匹配分,还有“临床一致性”评价栏。原来每位考官手里都握着不同的评分尺——就像体检报告上血压、血糖、血脂各占一行,单看任何一项都无法判断整个人的健康状况。

医学问答评测正是这样一套多维评分体系。针对不同题型的输出形式,研究者采用不同的指标:选择题看准确率,开放生成看 F1 和 ROUGE,高风险医学场景还要加人工审核,检查答案是否存在医学安全隐患。

开放问答中最常用的是 F1 分数。它的逻辑非常贴近考试:Precision(精确率)说的是模型生成的答案“没说废话、命中了要点”的比例;Recall(召回率)说的是参考答案里的关键医学实体和术语,模型覆盖了多少;F1 则是两者的调和平均,防止模型变成“只挑好说的答”的投机分子。

拿着 F1 这把评分尺重看三场考试,前面单纯看答对比例的直觉就显得片面了:小智在 PubMedQA 上的结论虽然都对了,但理由片段缺少了“样本量”这个关键实体,F1 只有 64%。这份成绩单也告诉研究者,提高医学问答水平,不能只盯着一个分数,而要像体检一样全套看齐。

F1=2×Precision×RecallPrecision+Recall\text{F1} = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
F1 把“准”和“全”两条标准拧成一根绳,分数越高,说明答案既精准又完整。
  1. 精确率 Precision模型答案中正确命中的片段数,除以模型答案总片段数,回答越干净得分越高。
    Precision=命中片段数模型答案片段总数\text{Precision} = \frac{\text{命中片段数}}{\text{模型答案片段总数}}
  2. 召回率 Recall模型答案正确命中的片段数,除以参考标准答案的片段总数,漏掉关键信息就会被扣分。
    Recall=命中片段数标准答案片段总数\text{Recall} = \frac{\text{命中片段数}}{\text{标准答案片段总数}}
  3. 调和平均将两者相乘再除以两者之和,并乘以 2;当任一指标偏低时,F1 会显著下降,避免“偏科投机”。
    2×Precision×RecallPrecision+Recall\frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

六、数据集挑战:坑题与难题

不过,考场本身也有“坑”。小智遇到过一道标注模糊的题——两个选项看起来都对,出题人的答案却和最新指南冲突;也遇到过一类全是“yes”的文献题,闭眼猜也能猜对八成。这些不是小智的问题,而是考卷自身的质量问题。

医学问答数据集在构建中普遍面临四类挑战:第一是专家标注成本极高,一位主任医生标注一千道题的工时成本远超一般众包任务;第二是医学知识快速迭代,2020 年的“标准答案”到 2024 年可能已经过时;第三是语言资源极度不均,英文学术题库丰富而中文医学题库稀缺;第四是答案类别不平衡,PubMedQA 中 yes 占比过半,模型只需“躺平猜 yes”就能拿到 52% 以上的准确率。

为了衡量“考卷本身出得好不好”,研究者常用标注一致性指标 Cohen's kappa,考察多位医生标注同一道题时意见的一致程度。如果 kappa 很低,说明题目太模糊,连人类专家都吵不齐,这样的题就不该出现在正式考题里。

小智考完走出考场后感慨:“原来出卷老师也在考试。”没有一份医学数据集能做到完美无瑕,也没有一个 AI 模型能在不理想的数据下独自变强。理解了这些坑,我们才能正确解读成绩单——看到 80% 时,先别急着庆祝,先问一句:这份卷子本身,够不够公平?

κ=po−pe1−pe\kappa = \frac{p_o - p_e}{1 - p_e}
Cohen's kappa 衡量“标注意见稳定性”:越接近 1,说明不同医生对同一道题的标准答案看法越一致。
  1. 观测一致率 $\displaystyle p_o$多位标注者实际给出相同答案的比例,反映真实共识。
    po=意见相同的样本数总样本数p_o = \frac{\text{意见相同的样本数}}{\text{总样本数}}
  2. 随机一致率 $\displaystyle p_e$即使标注者完全瞎猜,碰巧给出相同答案的期望比例。
    pe=∑j(njN)2p_e = \sum_j \left(\frac{n_j}{N}\right)^2
  3. 归一化计算分子去掉随机成分后,除以最大可能差值,得到不受随机因素干扰的真实一致性。
    κ=po−pe1−pe\kappa = \frac{p_o - p_e}{1 - p_e}

七、评测实践策略:考前冲刺与开卷技巧

离补考还有一周,小智没有像考前抱佛脚那样死记硬背。它使用了三种复习法:第一,从医生笔记里抄录几道典型例题,这叫“少样本示范”;第二,把医学教科书带到考场,一遇到不确定就翻书,这叫“检索增强开卷”;第三,把内科、外科、儿科的知识捆在一起反复交叉练习,这叫“多学科联合训练”。

这些复习法对应到真实工程,就是提升医学问答系统成绩的三板斧:少样本学习(few-shot in-context learning)、检索增强生成(RAG)和领域微调(domain-specific fine-tuning)。三者不是互斥关系,在实践中常常组合使用——先用领域语料做底座微调,再在推理时加入检索和示例,效果常在 MedQA 和 USMLE 上获得显著提升。

少样本学习的本质是利用大模型在上下文中“按样学样”;检索增强是让模型先查知识库再作答,等于把“记忆题”变成“查证题”,特别适合知识更新快的医学场景;而微调则是把医学教科书和考试题语料进一步“内化”到模型参数里。三者的共同效果,是把评测分数从“含糊的及格”推到“稳定的高分”,并降低模型“一本正经胡说八道”的概率。

补考那天,小智带上了检索增强的“知识图谱小抄”。成绩从基线的 70% 升到 81%,提升虽然只有 11 个百分点,但在医学场景中,这 11 个百分点可能意味着每年多正确识别数以万计的罕见病案例。

ΔS=Safter−Sbaseline\Delta S = S_{\text{after}} - S_{\text{baseline}}
这个差值公式看起来简单,却是科研论文里最重要的一个数:它告诉你投入的优化是否真的带来了可复现的收益。
  1. 基线分数 $\displaystyle S_{\text{baseline}}$完全不做优化,在初始模型上测出的表现。
    SbaselineS_{\text{baseline}}
  2. 优化后分数 $\displaystyle S_{\text{after}}$加入少样本、检索或微调后,在同一个测试集上测出的成绩。
    SafterS_{\text{after}}
  3. 差值 $\displaystyle \Delta S$正数表示策略有效,负数表示策略反而损害了性能;论文里必须报告这个差值来证明改进可信。
    ΔS=Safter−Sbaseline\Delta S = S_{\text{after}} - S_{\text{baseline}}

八、未来发展方向:从三场考试走向临床

三场考试考完,院长却对小智说:“这只是笔试阶段。未来,你要去影像科看 CT 片子、去急诊室听患者口述、还要读懂中文病历。”小智意识到,医学问答的考试没有终点,只有不断升级的考场。

这正是医学问答评测的未来趋势。第一,从纯文本走向多模态,把影像、病理、心电图的图像理解和文本问答合并成一张“综合考卷”;第二,从英文为主走向本地化,建设中文 MedQA、中文 USMLE 类基准;第三,从离线题库走向真实临床数据,用电子病历和随访对话检验模型在部署环境中的真实表现;第四,评测口径标准化,让各实验室的结果可以公平横向比较。

实现标准化评测的关键,是保证同一套评测流程在多次运行中给出的结论高度一致。研究者用“跨评测一致性”指标来衡量:同一批模型先后用两套流程评测,如果两次排名几乎一样,说明评测标准本身稳定可信;一致性过低,则说明评测工具本身存在随机噪声,结果无法复现。

小智抬头看向医院的未来:MedQA、USMLE、PubMedQA 只是第一代“考卷”,下一代考题将带着 CT 影像、中文症状描述和电子病历来到它面前。测评继续进化,而医学 AI 的每一次成长,都是在一次次“赶考”中被逼出来的。

Agreement=NsameNtotal\text{Agreement} = \frac{N_{\text{same}}}{N_{\text{total}}}
一致性指标衡量的是“考卷的稳定性”:同一批考生用两套等价卷子考,成绩排名变化越小,说明考试可信度越高。
  1. 一致模型数 $\displaystyle N_{\text{same}}$在两轮独立评测中名次升降方向完全相同的模型数量。
    NsameN_{\text{same}}
  2. 模型总数 $\displaystyle N_{\text{total}}$参与评测的全部模型个数。
    NtotalN_{\text{total}}
  3. 一致性比例结果趋近 1 说明评测机制稳定,趋近 0.5 则说明和抛硬币差不多,评测需要重新设计。
    NsameNtotal\frac{N_{\text{same}}}{N_{\text{total}}}

AI 应用场景

临床诊疗辅助系统上线前的“能力验收”

阶段:评测与迭代

解决的问题:传统人工评测费时费钱,AI 辅助决策系统上线前需要大量反复验证。通过 MedQA 和 USMLE 基准进行自动评分,先筛掉低分模型,再由专家对高分模型做人工病历复核,有效降低漏诊风险,也为监管备案提供量化证据。

具体案例:某三甲医院引入“AI 预问诊”助手,在部署前先用 MedQA 的 5000 道临床选择题做回归测试,任一版本得分低于阈值就不允许上线;同时用 USMLE 病例题检测模型的临床推理能力是否退化。

药物安全性文献证据筛查

阶段:数据与知识构建、推理

解决的问题:新药研发需要快速阅读大量 PubMed 文献,人工逐篇摘要耗时极长。用 PubMedQA 风格的问答模型,对文献队列自动判断“该药是否与不良反应相关”,输出 yes/no/maybe 及依据,把药剂师的精力集中在高风险的“maybe”文献上。

具体案例:某药企药物警戒团队每月获取 10 万篇文献摘要,系统借助医学问答模型自动标记“可能相关”的候选文献 2000 篇,再由临床药师精读复核,效率提升约 40 倍。

医学生备考与在线教育评测

阶段:应用落地

解决的问题:医学生需要大量 USMLE 和 MedQA 风格的练习题,但传统题库数量有限。AI 可以基于公开评测数据集按知识点拆解题目,实时评估学生掌握情况,优先推送薄弱章节的题目。

具体案例:某在线医学教育平台将 MedQA 的题目按内科、外科、儿科等标签拆解,为住院医师提供个性化题库训练,并输出“知识点热力图”,辅助教改决策。

Python 演示

python96 行
# -*- coding: utf-8 -*-"""医学问答评测演示:MedQA 选择题 + PubMedQA 三分类,展示准确率与 EM 指标。"""import random  class MedQASample:    """MedQA 选择题样本"""     def __init__(self, qid, question, options, answer):        self.qid = qid        self.question = question        self.options = options        self.answer = answer  class PqaSample:    """PubMedQA 三分类样本"""     def __init__(self, qid, abstract, answer):        self.qid = qid        self.abstract = abstract        self.answer = answer  def build_medqa():    """构造一个小型 MedQA 数据集"""    return [        MedQASample(1, "房颤患者卒中预防首选", ["阿司匹林", "华法林", "氯吡格雷", "利伐沙班"], 3),        MedQASample(2, "糖尿病诊断标准随机血糖", ["5.6", "7.0", "11.1", "13.9"], 2),        MedQASample(3, "急性胸痛标志物", ["肌钙蛋白", "BNP", "CRP", "D-二聚体"], 0),        MedQASample(4, "肺结核伴咯血首选药", ["异烟肼", "乙胺丁醇", "链霉素", "利福平"], 3),        MedQASample(5, "高血压急症用药", ["硝苯地平缓释片", "硝普钠", "美托洛尔", "氢氯噻嗪"], 1),    ]  def build_pqa():    """构造一个小型 PubMedQA 数据集"""    return [        PqaSample(1, "RCT 显示每日补充维生素C可减少感冒频率", "yes"),        PqaSample(2, "观察性研究发现咖啡因与心律失常无关联", "no"),        PqaSample(3, "小样本研究显示 DHA 改善认知结局虽边际显著但缺陷明显", "maybe"),        PqaSample(4, "Meta 分析显示他汀显著降低心血管事件", "yes"),    ]  def model_keyword(sample):    """关键词匹配模型:命中关键词返回选项序号,否则返回 A"""    kw = {"卒中": 3, "血糖": 2, "胸痛": 0, "结核": 0, "急症": 1}    for key, idx in kw.items():        if key in sample.question:            return idx    return 0  def model_random(sample):    """随机模型:完全瞎猜"""    return random.randint(0, len(sample.options) - 1)  def model_pqa(sample):    """PubMedQA 启发式模型:关键词命中返回 yes/no,否则返回 maybe"""    if "无关联" in sample.abstract:        return "no"    if "显著" in sample.abstract or "减少" in sample.abstract:        return "yes"    return "maybe"  def evaluate_acc(samples, model):    """返回选择题准确率"""    right = 0    for s in samples:        if model(s) == s.answer:            right += 1    return right / len(samples)  def evaluate_em(samples, model):    """返回 PubMedQA 精确匹配率 EM"""    right = 0    for s in samples:        if model(s) == s.answer:            right += 1    return right / len(samples)  if __name__ == "__main__":    random.seed(42)    medqa = build_medqa()    pqa = build_pqa()     print("MedQA 迷你集:")    print("  关键词模型准确率:", evaluate_acc(medqa, model_keyword))    print("  随机基线准确率:", evaluate_acc(medqa, model_random))    print("PubMedQA 迷你集:")    print("  启发式模型 EM 指标:", evaluate_em(pqa, model_pqa))
目的:用迷你医学问答数据演示“评测管道”——无论模型多简单,评测方式与真实基准一致,都能算出准确率和 EM 指标。
  1. if model(s) == s.answer:这就是“判卷”的核心:模型输出和标准答案一致才得分。
  2. kw = {"卒中": 3, "血糖": 2, "胸痛": 0, "结核": 0, "急症": 1}模拟一个“关键词记忆型”模型的小抄,它不懂医学,只会抓关键词。
  3. if "显著" in sample.abstract or "减少" in sample.abstract:在真实大模型中,这种显式推理会变成隐式的注意力机制,但评测逻辑完全相同。
  4. return right / len(samples)准确率的一行式代码实现,对应正文中的公式。
  5. print("随机基线准确率:", evaluate_acc(medqa, model_random))四选一题目随机猜也有 25% 正确率,评测报告必须对比随机基线才有意义。

常见误区

误区我训练的模型在 MedQA 上准确率达到 80%,比很多医学生都强,是不是可以直接放到医院当辅助诊断系统用了?

正解MedQA 是标准化选择题,只考察知识的回忆和简单推理,真实临床还要面对病历噪声、患者多病共存、检查结果缺失等复杂情况。选择题高分只是“笔试通过”,离“持证上岗”还差 USMLE 式综合推理以及真实电子病历场景的验证。

为何常见:选择题的分数直观、有标准答案,容易让人误以为“分数高=能力强”,但它只衡量了医学能力的一个侧面。

误区PubMedQA 只要输出 yes、no、maybe 三选一,随便一个分类模型都能做,为什么说它难?

正解三分类标签只是最终输出,真正的难点在于从论文摘要中定位证据、判断研究设计是否支持结论、抵抗样本量不足带来的误导。全文生成理由后,还要用 EM、F1 和人工审核评估,远非“选个标签”这么简单。

为何常见:人类看到输出只有三种可能,就容易低估背后的阅读理解与证据推理过程。

误区模型在测试集上分数很高,说明它已经把医学知识内化成了自己的理解,可以放心使用。

正解测试集分数可能被“污染”:训练语料里混入了测试题、反复上报同一测试集的最好成绩,都会造成虚高。真正可信的评测需要数据隔离、多次独立验证和跨数据集泛化测试,类似于“换一套从没见过的卷子再考一次”。

为何常见:成绩单给大脑带来的满足感太强,人们往往忽略“考题可能被背过”的作弊风险。

误区MedQA、USMLE、PubMedQA 都是医学问答数据,混在一起用就行,反正都是考医学知识。

正解三个数据集的题型、认知层次和评测指标完全不同:MedQA 考记忆和知识面,USMLE 考跨科推理,PubMedQA 考文献证据判断。混合训练可以,但评测必须分开报告,否则一个“综合分数”会掩盖偏科,也没法和历史论文横向对比。

为何常见:非从业者容易把“医学问答”看作单一任务,忽略了任务内部认知维度的差异。

误区既然 USMLE 是给真人医生考的,模型能通过是不是就等于具备了行医资格?

正解USMLE 强调的是医学知识推理,但真实临床还需要医患沟通、伦理判断、手部操作、处理突发意外等大量非笔试能力。医学 AI 评测只是能力验证的第一步,绝不能替代真实临床考核与监管审批。

为何常见:把“考试”等同于“职业能力”,是人类习惯性的简化思维,但医学恰恰是最不能简化的领域之一。

面试题

Q1. MedQA 评测集主要采用什么题型格式?

单选题 · easy

  • A.单选题四选一← 正确答案
  • B.多选题多选一
  • C.是非判断题形式
  • D.填空问答任务

答案:A。MedQA 的题目来自 USMLE 题源,核心格式是固定的四选一单选题,评测时模型输出一个选项序号并与标准答案比对。多选、是非、填空都不是 MedQA 的标准形式,千万不要混淆。

Q2. USMLE 数据集的医学背景更接近哪类考试?

单选题 · easy

  • A.美国执业医师资格考← 正确答案
  • B.中国临床执业医师考
  • C.英国皇家内科学院考
  • D.法国住院医师资格考

答案:A。USMLE 全称是美国医师执业资格考试(United States Medical Licensing Examination),因此它的医学背景和考试形式最接近美国执业医师资格考试。其他国家的考试虽然形式相近,但并不是 USMLE 数据集本身。

Q3. PubMedQA 的问题主要来源于什么资料?

单选题 · easy

  • A.临床病例的档案
  • B.学术论文的摘要← 正确答案
  • C.患者网络的留言
  • D.药品说明的文本

答案:B。PubMedQA 构建于 PubMed 文献库之上,以论文摘要为背景材料提出问题,要求模型在阅读摘要后判断研究结论是肯定、否定还是不确定,而不是基于临床病历、患者留言或药品说明书。

Q4. 医学问答中,用 F1 指标主要衡量什么?

单选题 · mid

  • A.生成答案的完整程度← 正确答案
  • B.训练数据的基本数量
  • C.模型参数的内存占用
  • D.推理速度的毫秒级开销

答案:A。F1 是精确率与召回率的调和平均,用来衡量模型生成答案与参考答案之间在实体和语义覆盖上的准确度与完整性。它和训练数据量、模型参数内存、推理速度没有任何关系。

Q5. MedQA 单选题全部为四个选项时,随机猜的期望正确率是多少?

单选题 · easy

  • A.0.10
  • B.0.20
  • C.0.25← 正确答案
  • D.0.45

答案:C。四个等概率选项随机选一个,期望正确率就是 1/4 等于 0.25。这也解释了为什么在 MedQA 上得到 60% 以上的准确率,意味着模型已经显著超过随机瞎猜的水平,开始真正学到医学知识。

Q6. 与 MedQA 相比,USMLE 评测更侧重什么?

单选题 · mid

  • A.多科目临床综合推理← 正确答案
  • B.单纯记忆类知识点
  • C.文献归纳和理解
  • D.日常对话的流畅度

答案:A。USMLE 的核心特点是跨科目、多步骤的临床推理,一道题往往融合内科、外科、药理和生理知识;而 MedQA 更偏知识性选择题。文献归纳属于 PubMedQA 的重点,对话流畅度则不属于医学问答评测的核心范围。

Q7. 下列哪些行为可能导致医学问答基准成绩虚高?

多选题 · mid

  • A.测试集题目混入训练语料← 正确答案
  • B.反复多次上报测试集最好成绩← 正确答案
  • C.直接用测试集做超参数搜索← 正确答案
  • D.使用新版本模型独立测评

答案:ABC。A 造成数据污染,B 相当于多次看卷子挑最好成绩,C 间接把测试集信息泄露给模型,三者都会让成绩虚高;D 是正常评测行为。就像把考卷答案提前背下来再去考试,自然成绩失真。

Q8. Cohen's kappa 主要用来衡量什么?

单选题 · hard

  • A.标注者之间一致性← 正确答案
  • B.模型参数的满意度
  • C.数据集的题量规模
  • D.训练时长的有效性

答案:A。Cohen's kappa 在排除随机因素后衡量两位标注者对同一批数据标注意见的一致程度。kappa 太低说明题目存在争议、标准答案不可靠,因此常被用来清洗医学问答数据,而不是用来评价模型参数或训练时长。

Q9. 下列哪些做法能降低医学问答评测“刷榜”风险?

多选题 · extreme

  • A.固定测试集反复调参上报
  • B.验证集调参后仅测一次测试集← 正确答案
  • C.引入多学科专家人工审核← 正确答案
  • D.公开评测环境与构建细节← 正确答案

答案:BCD。反复用固定测试集调参正是“刷榜”行为本身;B 实现训练/测试数据隔离,C 通过人工审核防止自动指标失效,D 通过透明可复现让他人能够验证。这三项分别从数据隔离、人工校验、透明公开三个维度降低评测作弊风险。

Q10. 下列哪些说法符合医学问答数据集的特点?

多选题 · mid

  • A.PubMedQA 答案类别不平衡← 正确答案
  • B.MedQA 中随机的期望正确率是 25%← 正确答案
  • C.USMLE 与 MedQA 没有本质区别
  • D.Cohen's kappa 只能用于选择题

答案:AB。PubMedQA 中 yes 类占比超过一半,确实存在类别不平衡;MedQA 四选一,随机期望正确率是 25%。C 错误,因为 USMLE 更侧重临床推理,与 MedQA 有明显区别;D 错误,Cohen's kappa 可用于任意有标准标注的场景,不仅限于选择题。