论文:Improving Interactive Diagnostic Ability of a Large Language Model Agent Through Clinical Experience Learning
问1:这套方法的主要目的是什么?
答1: 目的是在“交互式诊断”场景下,让大模型在信息还不充分的时候,也能更有效地询问病人、收集关键病情信息,并做出初步的准确诊断。
要解决的是“LLM在主动问诊和初诊阶段表现很差”的问题。
传统的LLM在医学问答领域的优势主要体现在单轮问题解答上,但在需要多轮交互的诊断场景中,由于缺乏临床经验和高效的信息收集能力,其表现远逊色于专业医生。
研究发现,LLM在初步问诊时往往无法准确地提出关键问题,这会导致其诊断准确率大幅下降。
因此,研究者提出了一种通过临床经验学习的解决方案来弥补这一不足。
可以类比为一个新手医生在面对患者时,缺乏主动提问的经验和敏锐度,导致他无法通过问诊得到所有必要的症状信息,而老练的医生能够通过多轮交流迅速把症状信息收集完整并做出诊断。
问2:为什么“初诊阶段”会表现很差?
答2: 因为大模型通常靠学习文献知识或逻辑推理来答题,但在实际医院就诊中,医师需要大量“临床经验”才能精准提出针对性问题,从而获得患者最重要的病史。
如果LLM没有在真实或模拟问诊对话里积累经验,就会胡乱提问或问不到关键点,导致诊断准确率掉得很厉害。
问3:那它是怎么把临床经验加进LLM的?
答3: 它没有直接给LLM大规模微调,而是创建了“插件式”的模型结构。
利用海量的电子病历(EMR)来模拟病人,把这些EMR做成“问诊环境”,让一个“问诊策略模型(RL训练)”反复在里面试错、学习。
就好比让模型自己在一个虚拟医院里练手,问诊成功就得到奖赏,问得差就会有惩罚,逐渐学到更合理的提问策略。
大规模EMR数据利用【数据来源】
│ ├── SRRSH(中国)与MIMIC(美国)【多中心数据】
│ └── 结构化HPI及病史信息【数据预处理】
问4:具体是怎么做数据预处理的?我看到它提到了“HPI”向量化,什么意思?
答4: HPI指“现病史”,一般包含大量的症状描述。
为了让模型能用强化学习来“决定下一步问什么”,研究者先把这些HPI拆分成一系列的“是否出现某症状”这种二元形式(或多选形式),再辅以文本嵌入。
这就让模型能把患者的症状状态当作一个可离散表示的“状态空间”。
每次问诊就能更新这个“状态向量”:问出了新的症状或被排除了症状,模型会据此决定下一次问诊的动作。
问5:初诊疾病诊断模型和问诊策略模型有什么区别?
答5:
-
初诊疾病诊断模型:这是个经过监督学习(SL)训练的网络,输入是“病人的文本嵌入 + 症状向量”,输出是对所有疾病的预测概率(类似于一个多分类器)。
-
问诊策略模型:则是用强化学习(RL)方式训练的“决策”网络,每一轮它根据当前已知的症状情况,决定“下一问题该问什么症状”。它想最大化“问诊信息增量”并减少不必要的提问。
├── 插件化模型结构【系统架构】
│ ├── 初始疾病诊断模型(SL训练)【模块一】
│ └── 问诊策略模型(RL训练)【模块二】
问6:插件化是怎么和LLM衔接的?LLM自己不是也能问问题吗?
答6:
-
研究者在LLM外面包了一层“分析器(Analyzer)”,它会解析对话中收集到的症状信息,并把结果传给“问诊策略模型”和“初诊模型”。
-
问诊策略模型产出具体的“要问啥”或“问哪一类症状”。
-
然后LLM再把这个决策用自然语言形式问出来,继续对话。
-
这样就实现了一个“LLM + 问诊策略 + 初诊诊断模型”的搭配,而不是在LLM内部改动大模型参数。
-
好处是维护成本更低,又能充分利用已有的大模型做自然语言对话。
问7:整个方法的输出成果是什么?
答7:
-
初诊疾病列表:在交互式问诊结束后,模型给出一系列高风险疾病的排序(比如前10个最可疑的)。
-
后续的差分诊断:在获取了关键症状、检查等信息后,可以进一步做细化诊断。
-
在实验中验证:这种做法能让最终的诊断准确率,接近用完整病历一次性诊断的水平,从而解决“问诊场景中LLM表现下滑”的问题。
问8:解法全流程是怎么样的?
├── 核心方法【整体框架】
│ ├── 输入【EMR数据与LLM】
│ │ ├── 来自SRRSH与MIMIC的原始EMR【数据来源】
│ │ │ └── 包含医院主诉、HPI、既往史、社会史、家族史等【内容组成】
│ │ └── 预训练的大语言模型(LLM)【语言理解基础】
│
│ ├── 数据预处理【将EMR文本转化为可训练的结构化数据】
│ │ ├── 文本切分与规则过滤【对齐EMR格式】
│ │ │ └── 去除格式错误、极少见病种等【数据清理】
│ │ ├── LLM辅助信息抽取【文本解析】
│ │ │ └── 结构化HPI:将症状按“是否提及/是否阳性”标记成向量【症状编码】
│ │ └── 生成训练所需的(h, p, y)三部分【[解析关系]:h为文本嵌入,p为HPI向量,y为诊断标签】
│
│ ├── 模块一:初始疾病诊断模型【[使用关系]:监督学习FNN】
│ │ ├── 输入:[e, p]【[衔接关系]:e为文本嵌入,p为HPI向量】
│ │ ├── 网络结构:两层全连接神经网络(FNN)【模型结构】
│ │ └── 输出:对所有疾病的风险概率分布【疾病筛查结果】
│
│ ├── 模块二:问诊策略模型【[使用关系]:强化学习PPO】
│ │ ├── 状态空间:所有已知/未知/肯定/否定HPI组合【[表示关系]:Discrete State】
│ │ ├── 动作空间:针对当前HPI状态选择下一轮提问【[决策关系]:闭合/开放性问题】
│ │ ├── 奖励函数:根据新发现HPI数量与模型输出变化来衡量【[优化关系]:激励高收益问诊】
│ │ └── 算法:PPO强化学习【[衔接关系]:训练FNN问诊策略】
│
│ ├── 插件化集成【[组装关系]:在LLM中“即插即用”】
│ │ ├── 分析器(Analyzer)【基于Prompt和LLM】
│ │ │ ├── 解析对话内容并抽取新HPI【[提取关系]:调用LLM文本理解】
│ │ │ └── 调用问诊策略模型和初诊模型【[衔接关系]:为LLM提供询问及诊断建议】
│ │ ├── 问诊策略与初诊模型作为LLM插件【[组合关系]:无需对LLM本体微调】
│ │ └── 交互对话流程:LLM负责自然语言生成→分析器结构化→策略模型决定下步问题【[循环关系]】
│
│ └── 输出【互动式诊断结果】
│ ├── 阶段一:初诊高风险疾病列表【疾病筛查】
│ ├── 阶段二:差分诊断与最终结论【进一步问诊与确认】
│ └── 诊断准确率显著提升【[效果关系]:与完整病历诊断接近】
子解法1:大规模EMR数据的结构化与模拟
-
之所以用该子解法:因为真实临床对话数据稀缺且难以共享,但各医院都有大量住院/门诊EMR,能覆盖海量真实病例;这是“缺少临床经验”这一特征的主要解决思路。
-
做法:
-
对EMR做文本清洗、排除罕见病例、筛选主要ICD-10范围A00-N99等。
-
用LLM或规则抽取现病史(HPI),标记为“肯定/否定/未提及”,形成可离散化表示。
-
将这些海量“结构化”EMR视作“模拟患者”,为后续RL训练提供真实且广泛的环境。
-
子解法2:初诊疾病筛查模型(SL训练)
-
之所以用该子解法:因为需要一个“快速评分/排名”模块来判断当前症状组合最可能是哪几个疾病;对应特征是“多疾病筛查”,必须用监督学习来对多类别疾病做概率输出。
-
做法:
-
输入:文本嵌入Embed(h)\text{Embed}(h)Embed(h) + 结构化HPI向量ppp。
-
模型:两层全连接网络(FNN)输出对所有疾病的预测概率yyy。
-
训练:最小化交叉熵损失,利用现成标签(EMR里的主诊断)做监督。
-
子解法3:问诊策略模型(RL训练)
-
之所以用该子解法:因为LLM在交互式场景需要“主动提问”以获取更多症状信息;对应特征是“主动决策问什么症状”,用强化学习来优化决策策略。
-
做法:
-
状态空间:根据已知/未知/肯定/否定的症状向量(多级离散化)。
-
动作空间:选择下一个问题(封闭式/开放式)或不再问。
-
奖励函数:收集到的新阳性症状越多、初诊概率分布变化越显著,奖励越高;问诊回合数过多则产生惩罚。
-
训练算法:PPO(Proximal Policy Optimization),在模拟患者环境中反复试验学习。
-
子解法4:插件化LLM整合
-
之所以用该子解法:因为对大模型做深度微调的代价太大,而且容易“灾难性遗忘”。对应特征是“低成本无损整合LLM”,所以提出插件式结构。
-
做法:
-
Analyzer(基于Prompt):每回合解析对话文本,抽取或更新HPI向量;
-
调用策略模型:决定下一步问啥;
-
调用初诊模型:输出疾病风险;
-
LLM:自然语言输出医生提问或诊断结论,不改变其内在参数;
-
实现一个循环对话流程,每回合都能更新“已知症状”并调整提问。
-
1. 数据偏倚如何衡量?
你们使用了 SRRSH 和 MIMIC 数据来训练和测试模型,但 SRRSH 和 MIMIC 的疾病分布有明显差异。
请问你们是如何定量衡量、并且纠正这个数据偏倚的?如果没有纠正,是否会导致模型在罕见病或小样本病种上表现不佳?
答:
我们首先在数据筛选时,排除了极少出现的疾病(出现次数不足 20 次),并且对 SRRSH 与 MIMIC 的交叉实验进行了专门的外部验证来评估泛化能力。
对于疾病分布的偏倚,我们主要依赖海量样本本身的广覆盖,使得在多数常见疾病上的偏倚相对可控。
确实,对于罕见病而言,这种方法仍不够完善,需要后续在模型或训练策略上进行专门处理,目前我们仅在核心常见病上取得了较好效果。
2. 为什么不直接微调 LLM?
如今许多医疗 LLM 都采用大规模微调(fine-tuning)来增强医学知识,你们为什么选择“插件式”方法,而没有考虑在 GPU 条件允许时直接微调基座模型?这样不是能获得更统一、更深度的整合吗?
答:
微调 LLM 确实可以提高其在特定任务上的表现,但会带来以下问题:
-
计算成本高:对于 70B 以上参数量的大模型,微调需要大规模硬件支持。
-
灾难性遗忘:对医疗领域进行微调后,模型在其他任务上的性能常常下降。
-
迭代维护困难:基础 LLM 版本更新频繁,如果每次都重新进行微调,代价巨大。
鉴于此,我们采用插件式方法,无需改变大模型内部权重,就能以较低成本取得较好的诊断性能提升。
3. RL 训练收敛慢吗?
你们在模拟环境中用 PPO 来训练问诊策略,规模达到上百万级 EMR,是否会导致训练时间过长?你们做了哪些优化手段来加速收敛?
答:确实,我们的 RL 训练需要大量模拟问诊回合。
我们采用的加速手段包括以下几点:
-
多进程并行:同时运行多个环境实例,充分利用硬件资源。
-
分层动作空间:先问一级症状,再问二级症状,使得策略更聚焦,减少探索空间。
-
经验回放和 early stopping:当某些策略达到稳定或无改进时,提前结束相应回合。
这些措施能显著缩短训练时间,使之在可接受范围内。
4. 模拟病人能否代表真实临床?
问: 你们使用 EMR 数据将其转化为“模拟患者”,但真实就诊场景中,病人表达方式、症状呈现都有很大主观差异,如何确保模拟足以近似真实问诊情况?
答:
我们的模拟只保证在病史和症状维度上与真实病历具有一致性,从而让强化学习能够学习到“哪些症状是关键”。
不过,模拟病人无法还原病人的情感、随机言行差异等真实对话因素。
我们将该方法视为“先行阶段”的策略训练,真实应用需要在此基础上做更多场景化调优或人机协同。
5. 问诊策略有无可能问得过多?
问: 你们在 RL 中虽然设置了回合数惩罚,但在实际部署时会不会出现模型过度询问,导致病人厌烦或时间浪费?
答:
是的,过度询问的确是一个潜在风险。
我们在奖励函数中对问诊回合数做了严格惩罚,并通过验证发现当问 10~20 个问题时,模型的性能已经趋于饱和。
也就是说,模型已学会在有限问题内尽量收集最重要的信息,而不会一味发问。
6. 是否会导致歧视性问题?
问: 在社会史或家庭史的问诊中,如果模型基于过去的统计规律,对某类群体(种族、性别、年龄)产生偏见或刻板印象,该怎么办?
答:
任何基于历史数据的模型都可能存在社会偏见。
我们已经在数据预处理中尽量去除违法或明显歧视性信息,并在问诊策略中并没有设置基于种族或性别的差别问法。
但仍需要对模型作进一步审查,并在临床实际应用时引入人工审核机制,防止歧视性或不恰当的提问。
7. 为什么在已有的多轮诊断研究外,还要强调“临床经验”?
问: 许多问诊系统已实现多轮对话,你们为什么要在本文中突出“临床经验学习”的概念,这与之前的知识图谱或检索式方法有什么本质不同?
答:
我们把“临床经验”理解为在不完整信息下进行合理猜测并依次搜集症状证据的能力,这是传统知识图谱或检索方式难以直接学到的。
那些方法更多依赖显式规则或基于文献的推断,而临床经验常常是一种隐式的、通过大量病历交互而来。
本研究通过大规模 EMR 在模拟环境中进行 RL 训练,使模型能在“未知症状”状态下主动提出重要问题,这正是临床经验的核心。
8. 模型可解释性不足如何解决?
问: 你们的问诊策略是黑箱式的神经网络,临床医生如何知道模型为何要问这些问题,而不是问其他问题?这在真实医疗环境很关键。
答:
我们目前在问诊策略输出后,会给出一份简要的“症状增益贡献度”日志,显示该动作对诊断模型输出变化的影响。
虽然离理想的可解释性还有差距,但至少能让临床医生看到“选择问这个症状”是否确实带来显著诊断增益。
后续可引入更多可视化手段,如注意力图或决策路径可视化,增强可解释性。
9. SRRSH+MIMIC 超过 3.5 百万份 EMR?数据质量如何?
问: 你们宣称“超过 350 万份”中美医院数据,这些数据都带有清晰标注吗?是否包括 ICU 之外的门诊和其他专科?数据噪音如何清理?
答:
SRRSH 数据包含门诊与住院。
MIMIC 数据则更多是 ICU,但我们做过分层筛选和排除,保证 ICD-10 范围在 A00-N99 且出现次数≥20 的病种都有较多记录。
噪音方面,剔除了错误或缺失严重的 EMR。
在结构化阶段用 LLM 做了较高准确率的症状提取(人工抽检精度约 97%)。
10. 除了 HPI,你们为何不融入体格检查或辅助检验?
问: 在临床真实环境,体格检查、影像学和实验室数据同样是初诊的重要信息。为什么你们只侧重问诊症状,而不整合更多检查信息?
答:
初诊阶段通常依赖病史收集和主客观症状,体格检查或影像学往往要去医院才能得到。
我们想先解决“纯问诊阶段”的信息搜集,后续可将检查结果进一步整合到插件式模型中,甚至用 RL 来决定应该开哪些检查,从而提高诊断效率。
11. 对“多发病同现”现象的应对?
问: 很多患者存在多种共病 (comorbidity),例如糖尿病、心脏病、慢性肾病并存,你们的模型如何在问诊过程中区分、或并行考虑多种疾病风险?
答:
我们的初诊模型输出的是对所有疾病的概率分布,问诊策略学到的其实是尽量找到最能区分这些分布的症状。
在多发病同现时,模型会同时对多个疾病保持较高警惕,并在交互式对话中逐步排除或确认。
实验中也有相当一部分病人存在合并症,模型仍能取得较为良好的筛查效果。
12. 如何避免 LLM 在长对话中出现幻觉?
问: LLM 在长对话中常常出现幻觉(hallucination),可能自行编造病人症状或检查结果。你们采用了什么机制防止插入虚假信息?
答:
在模拟环境里,“病人”端回答是直接从 EMR 结构化数据中获取,不依赖 LLM 的自主生成。
在“医生”端,我们在 prompt 设定中时刻提醒它仅能根据当前回合采集到的信息进行提问和回答。
另外,Analyzer 会对 LLM 输出进行二次检验,若发现不存在的症状被记为“已知阳性”,会予以纠正或丢弃。
13. 如果真实场景中病人回答不一致或不配合,怎么办?
问: 现实里,病人可能不记得病史或故意隐瞒,比如喝酒吸烟情况,你们的模拟病人全都“准确回答”是不是过于理想化?
答:
确实,模拟环境无法完全模拟人类的复杂行为。
我们目前只解决“病人如实回答”这个理想设定下的问诊策略学习。
在真实应用中,需要一个针对不配合回答或模糊回答的策略,比如再次确认或交叉验证,以及临床医生或社会工作者做进一步辅导。
14. 在多语言融合时,你们怎么做翻译?
问: 你们同时用了中文 SRRSH 与英文 MIMIC,这在训练 RL 时是否要考虑语言转换?不一致的命名或 ICD-9/ICD-10 如何对齐?
答:
我们对 ICD-9 做了映射到 ICD-10,并在预处理阶段做了统一。
对于中文与英文,在内部是通过症状向量离散化后再送入 RL,语言成分只影响文本嵌入部分。
对于 SRRSH ICU 病人和 MIMIC 交叉实验,需要翻译,但翻译仅影响文本嵌入,并不影响症状离散表示。
15. 你们为什么把 O00 及以后 ICD 码排除?
问: O00 及以后覆盖了许多妇产、先天性疾病和损伤相关的 ICD,为什么直接排除?会不会错过重要的临床场景?
答:
我们研究聚焦于常见内科或外科疾病,对孕产妇或先天性病种等不做单独分析。
产科、外伤及先天畸形的诊断路径非常不同,也往往需要额外检查。
为保持一致性和覆盖主流需求,我们仅集中在 A00-N99。后续可在相应人群上做独立研究。
16. 使用“深度推理”的医疗 LLM 不也能问诊吗?
问: 某些“推理增强”的大型模型也能主动提示有哪些症状需要询问。为什么还要专门训练 RL 策略?
答:
虽然推理增强 LLM 具备一定的自主提问能力,但多基于“通用推理”或“文献逻辑”,缺乏在真实病案维度上的大量交互经验。
我们的方法则显式地在真实 EMR 模拟环境中学到问诊策略,能更精准地针对临床实际。
实验结果也显示,普通 LLM 即使加了 Chain-of-Thought,对多轮问诊的改善很有限。
17. 训练好的问诊策略是否可移植到新疾病领域?
问: 如果某医院要加一些新的或罕见疾病,是否需要重新做 RL 训练,还是可以“局部迁移”?
答:
在新疾病域上,如果症状集合发生巨大变化,则必须重新训练或做迁移学习。
但如果仅是少量新增疾病,对应症状在原结构化列表中已有覆盖,那么策略模型可能部分泛化,之后在真实应用中逐步再训练微调。
不过,目前没有完整验证在新领域完全迁移的效果,仍是未来研究方向。
18. 数据私有、隐私合规如何保证?
问: 你们提到 350 万+ 份 EMR,但是如何确保数据脱敏、合法使用,以及在真实部署中如何合规?
答:
我们遵循了 IRB 审查和数据使用协议,通过对姓名、住址等敏感信息进行彻底脱敏,且仅保留诊断、症状层面。
公开实验部分只使用 MIMIC(可公开),SRRSH 的数据仍然不对外开放。
若医院想采用本方法,需要在本地部署并按照其内部 IRB 规定处理数据,才能合规运作。
19. 引入大量 RL 参数后,诊断的稳定性会不会下降?
问: RL 模型更新迭代较大,尤其 PPO 有时存在不稳定收敛的现象,万一后续上线后策略开始不稳定,如何保证医疗安全?
答:
我们最终交付的 RL 策略是离线稳定收敛后的固化策略,不是上线后继续学习。
类似自动驾驶也会在模拟环境里先训练好再上路,实用阶段可将策略只读化。
如果临床上积累了新数据需要更新,也要重新在封闭环境中测试验证,确认模型新版本无安全隐患再上线。