Critic-Adviser-Reviser Cyclic Refinement: Towards High-Quality EMR Corpus Generation with LLMs¶
会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=7y11BdJIOp
代码: 无
领域: 医学NLP / LLM多智能体 / 合成数据生成
关键词: 电子病历合成, 循环精炼, 多智能体, 临床质量, 隐私保护
一句话总结¶
针对 LLM 直接生成电子病历(EMR)"只会模仿、分布失真、缺少质量约束"的问题,本文提出 LLM-CARe——一个按"语料→章节→文档"三级粒度、每级由 Critic/Adviser/Reviser 三个智能体循环精炼的框架,在完全不接触任何真实 EMR 文本的前提下,把合成病历的质量和下游临床任务表现都显著推到 SOTA 之上。
研究背景与动机¶
领域现状:电子病历是医疗研究的宝贵资源,但患者隐私限制了真实病历的开放共享,于是"合成 EMR"成为热门替代方案。早期路线是 GAN(从噪声或诊断码生成)和自回归模型(RNN/Transformer 把病历当 token 序列建模),近来则流行直接 prompt 大模型来写病历。
现有痛点:几乎所有现有方法都在做一件事——模仿真实病历(imitation)。GAN/自回归把病历当分布或序列拟合,LLM 方法则把真实病历当 in-context 示例去"照着写"。但真实病历本身就可能含有错误和遗漏,模仿策略会把这些缺陷原样继承进合成数据;而 LLM 直接生成又会暴露另一类毛病:作者的预实验发现 LLM 输出存在分布偏置(如不真实的性别比例)、并且只爱写某个疾病"最典型"的表现,缺乏对罕见或多样临床场景的覆盖。
核心矛盾:EMR 不是普通自由文本,它是专业医疗文档,可靠性取决于是否满足完整性、一致性、分布对齐等硬性质量要求。但"模仿真实文本"这个范式本质上没有显式建模和强制这些质量标准——它只追求"像",不追求"对"。于是合成出来的病历可能看似逼真,对下游临床/研究应用却无用甚至误导。
本文目标:在不接触任何真实 EMR 文本(训练或 prompt 都不用)的前提下,生成同时满足语料级、章节级、文档级质量原则的高质量合成病历,并在真实下游临床任务上证明其效用。
切入角度:作者先把"什么叫高质量 EMR"拆成可显式检查的具体原则——跨三个层级的五条原则:人口学典型性、知识覆盖度(语料级)、内容完整性(章节级)、医学正确性、上下文一致性(文档级)。既然质量可以被逐条评判,那就可以被逐条精炼。
核心 idea:用"评判—建议—修改"的循环精炼(cyclic refinement)替代"一次性模仿生成",并把精炼按粒度分阶段进行,从最宽松的语料级分布对齐,逐步收紧到最严格的文档级逻辑一致。
方法详解¶
整体框架¶
LLM-CARe 的输入是一段指定目标主诊断和所需病历字段(主诉、现病史等)的 prompt,输出是一批满足多级质量原则的合成 EMR。整个流程分两步走:先由一个 generator 智能体对每个 prompt 采样多份初始草稿,组成草稿池 \(D^{(0)}=\{E^{(0)}_1,\dots,E^{(0)}_n\}\);这些草稿往往有遗漏、矛盾或临床不合理处,但作为后续精炼的起点。
随后草稿依次流过三个精炼阶段——语料(corpus)、章节(section)、文档(document)。每个阶段内部都是同一套"三智能体循环":Critic 按本阶段目标评判草稿,Adviser 指出问题并给出具体改进策略,Reviser 据此更新草稿,反复迭代直到该粒度的质量达标,再把草稿交给下一阶段。三个阶段的顺序是刻意设计的:从最"软"(语料级分布对齐,不要求精确匹配)到最"硬"(文档级逻辑一致,错了会引入严重矛盾),由松到紧,让每一级在前一级基础上推进、同时把相互干扰降到最低。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["prompt(目标诊断 + 字段)"] --> B["初始草稿生成<br/>generator 采样多份草稿池"]
B --> C["语料级精炼<br/>对齐人口学分布 + 知识覆盖"]
C --> D["章节级精炼<br/>补全各字段必备临床要素"]
D --> E["文档级精炼<br/>校正医学正确性 + 跨章节一致"]
E --> F["高质量合成 EMR 语料"]
C -.->|每阶段内循环| G["Critic 评判 → Adviser 建议 → Reviser 修改"]
D -.-> G
E -.-> G
关键设计¶
1. 五条质量原则:把"好病历"拆成可逐条检查的标准
本文不空谈"质量",而是先把临床文档规范落成五条可显式校验的原则,分布在三个粒度上。语料级有两条:人口学典型性(年龄、性别等变量要符合真实人群分布)和知识覆盖度(语料要同时包含常见与罕见的临床情形);章节级一条:内容完整性(每个字段都要含该类型应有的核心临床要素);文档级两条:医学正确性(临床陈述在给定诊断下成立)和上下文一致性(各章节之间不自相矛盾)。每条原则进一步细化成可逐项打勾的 criteria(取自临床指南)。这一步是整个框架的地基——正因为质量被拆成离散、可判定的标准,后面的 Critic 才有明确的评判依据,Adviser 才能给出针对性的修改方向,否则"精炼"就无从下手。
2. 三智能体循环:用"评判—建议—修改"取代一次性生成
每个阶段内部由 Critic、Adviser、Reviser 协同迭代。Critic 负责评判:在语料级它度量当前语料 \(D^{(t)}\) 相对参考分布 \(T_d\)(从训练集聚合统计得到,如年龄/性别分布、症状/用药等临床概念频次)在某属性 \(c_{corpus,k}\) 上的偏差 \(\delta^{(t)}_{corpus,k}=M^{corpus}_{critic}(D^{(t)},T_d,c_{corpus,k})\);在章节级和文档级则输出二值判断(criterion 是否满足,\(\delta\in\{0,1\}\))。Adviser 负责诊断与开方:它解读 Critic 的反馈,在语料级挑出"改动后最能缩小分布失配"的记录子集 \(S^{(t)}_k\) 并生成可操作反馈 \(F^{(t)}_{corpus,k}\),在章节/文档级则针对未满足的 criterion 给出"具体该补哪些临床要素、改哪个章节"的指令。Reviser 负责执行:把 Adviser 的指令落到选中的记录或章节上,如 \(S^{(t+1)}_k=M^{corpus}_{reviser}(S^{(t)}_k,F^{(t)}_{corpus,k})\),在保留既有内容与连贯性的前提下增补或修正。消融实验证明三者缺一不可——去掉 Critic(Adviser 对所有 criteria 无差别提反馈)或去掉 Reviser(退化成让 generator 拿着全部 criteria 重新生成)掉点最严重,恰恰说明"准确评判当前草稿"和"在已有草稿上迭代修改"这两件事是高质量的关键,单步生成满足不了所有质量约束。
3. 阶段化由松到紧的排序:让精炼互不破坏
三个阶段为什么是"语料→章节→文档"这个固定顺序而不是任意排列?因为不同粒度的修改会相互影响:语料级精炼很"软",只求分布大致对齐、不要求精确匹配,所以放最前面先做;文档级精炼最"硬",要强制跨章节的严格逻辑一致,一旦出错就是严重的临床矛盾,所以放最后压轴。按这个由松到紧的顺序推进,每一级都在前一级的成果上继续打磨,又不会因为后做宽松调整而把先前确立的严格一致性破坏掉。分阶段分析(Figure 7)也印证了这点:各质量维度在其对应阶段提升最明显(如完整性在章节阶段跃升),即便中途有暂时波动,最终所有维度都明显超过直接生成。
一个完整示例¶
以生成一份"肺炎"病历为例走一遍流程:generator 先按 prompt(主诊断=肺炎,字段=主诉/现病史/住院经过/出院医嘱等)采样出若干份初始草稿,但这批草稿的性别比例偏离真实人群、且都写成最典型的咳嗽发热表现。语料阶段:Critic 算出当前语料在性别分布、症状覆盖上的偏差,Adviser 挑出"改了最能拉回分布"的一批记录并建议增补罕见呈现,Reviser 据此改写这批记录,让整体分布向真实统计靠拢。章节阶段:Critic 逐字段检查,发现"住院经过"缺少治疗反应这一必备要素(\(\delta=0\)),Adviser 指明该补什么,Reviser 在保持原文连贯的同时补全。文档阶段:Critic 发现"现病史"写了无发热、但"住院经过"却提到退热治疗,存在跨章节矛盾,Adviser 建议改动影响较小的那一节来恢复一致,Reviser 据此调和。三阶段走完,得到一份分布合理、字段完整、逻辑自洽的合成病历。
实验关键数据¶
数据集为一份真实世界 EMR,含 192k 条记录、覆盖 302 种疾病,去标识化后按疾病类别做 8:2 分层切分。所有 LLM 方法骨干为 Qwen2.5-7B-Instruct,质量评判用 Qwen2.5-32B-Instruct,下游任务微调 Qwen2.5-0.5B-Instruct。
主实验¶
五条质量原则上的得分(%,越高越好)。关键看点:本文全程不依赖真实 EMR 文本("Rely on EMR Text"列为 ×),却在每一项上都领先:
| 方法 | 依赖真实文本 | 内容完整性 | 医学正确性 | 上下文一致性 | 人口学典型性 | 知识覆盖度 |
|---|---|---|---|---|---|---|
| LSTM | ✓ | 70.8 | 65.0 | 21.7 | 93.3 | 70.4 |
| mtGAN | ✓ | 55.8 | 51.8 | 21.4 | 93.6 | 76.3 |
| MedSyn | ✓ | 84.8 | 95.3 | 91.9 | 84.1 | 84.5 |
| LLM Direct | ✗ | 77.1 | 90.7 | 87.9 | 77.7 | 73.9 |
| Self-Refine | ✗ | 78.3 | 90.9 | 88.5 | 77.7 | 78.0 |
| LLM-CARe(本文) | ✗ | 91.2 | 98.6 | 93.8 | 96.8 | 94.1 |
下游临床任务准确率(%),三个任务分别是诊断预测、检查推荐、治疗推荐:
| 方法 | 依赖真实文本 | 诊断 Micro | 诊断 Macro | 检查 Micro | 检查 Macro | 治疗 Micro | 治疗 Macro |
|---|---|---|---|---|---|---|---|
| mtGAN | ✓ | 81.9 | 80.9 | 72.4 | 73.4 | 58.6 | 52.9 |
| MedSyn | ✓ | 81.7 | 81.7 | 82.9 | 82.2 | 74.5 | 71.3 |
| LLM Direct | ✗ | 81.8 | 81.8 | 64.4 | 65.4 | 60.9 | 59.0 |
| Self-Refine | ✗ | 81.9 | 81.8 | 64.9 | 65.7 | 63.1 | 61.3 |
| LLM-CARe(本文) | ✗ | 82.6 | 82.4 | 85.3 | 85.2 | 76.9 | 74.1 |
消融实验¶
逐一移除三个智能体(Figure 8),观察质量与下游任务掉点:
| 配置 | 影响 | 说明 |
|---|---|---|
| Full(LLM-CARe) | — | 完整三智能体循环 |
| w/o Critic | 掉点最严重 | Adviser 对所有 criteria 无差别提反馈,失去精准评判 |
| w/o Reviser | 掉点最严重 | 退化成 generator 拿全部 criteria 重新生成,无法在草稿上迭代 |
| w/o Adviser | 明显掉点 | Reviser 只拿到"哪条不满足"的高层信息、缺少可操作建议 |
关键发现¶
- Critic 和 Reviser 是命门:去掉这两者掉点最大,说明"准确评判当前草稿"+"在已有草稿上迭代修改"是质量来源;大模型在单步生成里无法同时满足所有质量约束,这正是循环精炼存在的理由。
- 具体反馈胜过抽象标准:去掉 Adviser 也明显掉点,证明"该补哪个临床要素"这种可操作建议比"哪条 criterion 不满足"的抽象输入更能指导有效修改。
- 模仿范式会继承缺陷:MedSyn 在"住院经过完整性"等criteria上甚至不如 LLM Direct——它把真实病历当 in-context 示例,真实病历的遗漏被传染进合成数据,反向印证了"显式建模质量"比"模仿"更可靠。
- 骨干无关、且无法被预训练替代:在 LLaMA3.1-8B、医学预训练的 Meditron3-8B、推理型 R1-Distill-Llama-8B 上,LLM-CARe 都能把质量从 ~50 提到 76–80;即便 Meditron 专门做过医学预训练、R1 擅长推理,直接生成仍达不到要求,说明原则驱动的精炼不能被预训练或推理能力替代。
- 不靠真实文本也不吃亏:给初始 generator 喂一份真实 EMR 作参考的变体,性能与原版几乎持平(Figure 9),说明效果来自结构化的多智能体循环精炼,而非真实文本泄漏。
亮点与洞察¶
- 把"质量"工程化:先把抽象的"高质量病历"拆成五条跨粒度、可逐项打勾的临床原则,是整个框架能闭环的前提——只有质量可判定,精炼才有抓手。这套"先定义可检查原则、再循环修复"的思路可迁移到任何对输出有硬性规范的生成任务(合同、代码、结构化报告)。
- 由松到紧的阶段排序很巧妙:先做不破坏全局的软对齐、最后做一旦出错就致命的硬一致,避免后续宽松调整推翻先前严格约束,是多目标精炼里很值得借鉴的"调度"经验。
- 零真实文本的隐私友好性:训练和 prompt 都不碰真实病历,却在下游任务上反超那些用真实文本的 baseline,这对隐私敏感的医疗场景是实打实的卖点。
- Adviser 这个"中间层"是亮点:不直接让 Critic 的判断喂给 Reviser,而是中间加一个把"哪里不对"翻译成"具体怎么改"的智能体,消融证明这层显著有效——评判与执行之间需要一个"开方"环节。
局限与展望¶
- 质量评判高度依赖 LLM-as-judge(Qwen2.5-32B)以及人工定义的 criteria,judge 本身的偏置和 criteria 覆盖度会影响结论可靠性;虽然作者用额外 LLM 复验,但根本上仍是"用模型评模型"。
- 实验集中在一个中文 EMR 数据集(192k/302 病种),跨语言、跨医院体系、跨更复杂病历结构的泛化性尚待验证(部分在附录用外部数据集补充)。
- 三阶段循环的多智能体精炼计算开销不小——每条记录要过多轮 Critic/Adviser/Reviser,论文未充分讨论生成成本与可扩展性。
- 五条原则与 criteria 取自临床指南并人工细化,迁移到新科室/新疾病时需要重新设计 criteria,自动化程度有待提升。
相关工作与启发¶
- vs GAN/自回归方法(mtGAN、LSTM):它们把病历当分布或 token 序列拟合,擅长建模统计/时序模式,但完全不管临床质量,一致性得分极低(21 左右);本文用原则驱动的精炼把一致性拉到 93.8。
- vs MedSyn(模仿式 LLM):MedSyn 靠真实病历做 in-context 示例,会把真实数据的遗漏传染进合成数据、且有隐私风险;本文不碰真实文本,质量与下游全面反超。
- vs Self-Refine(通用自我精炼):Self-Refine 在每轮里把所有质量要求一锅端地联合自评自改,相比 LLM Direct 只有微弱提升,证明"一刀切的全能修订"满足不了 EMR 的多级质量要求;本文的贡献正是把精炼按粒度拆开、各管一摊。
评分¶
- 新颖性: ⭐⭐⭐⭐ 把"质量原则化 + 分阶段三智能体循环精炼"用于 EMR 合成,框架清晰且有针对性,单个组件不算全新但组合与问题切入有新意。
- 实验充分度: ⭐⭐⭐⭐⭐ 质量五原则 + 三下游任务 + 多骨干 + 逐智能体消融 + 阶段分析 + 真实文本变体,覆盖很全。
- 写作质量: ⭐⭐⭐⭐ 动机与方法逻辑顺,公式与原则对应清楚,可读性好。
- 价值: ⭐⭐⭐⭐⭐ 零真实文本即可生成高质量、隐私安全的合成病历,对医疗 NLP 数据匮乏与隐私困境有实用价值。