RuleAlign 规则对齐框架:将医生的诊断规则形式化并注入模型,无需额外人工标注的自动对齐方法
RuleAlign 规则对齐框架:将医生的诊断规则形式化并注入模型,无需额外人工标注的自动对齐方法
- 提出背景
- 论文大纲
- 怎么用数据进行归纳推理?
- 综合调研
- 解法拆解
- 全流程分析
- 问题在于,我怎么构造这种规则数据?
- 多轮问诊改进
论文:RuleAlign: Making Large Language Models Better Physicians with Diagnostic Rule Alignment
提出背景
Rule(规则) 和 Align(对齐) 组合成 RuleAlign,即通过对医疗诊断规则的学习和遵循,使AI模型的行为与专业医生的诊断标准保持一致。
对比示例:
- 正例:采用RuleAlign后,模型能够按照专业诊断流程逐步收集信息,最终做出诊断。具体表现为:先询问症状持续时间、性质,再根据症状建议相关检查,最后结合病史和检查结果做出诊断
- 反例:未经过规则对齐的模型可能缺乏系统性,比如患者说"腰痛"就直接判断是"肾结石",没有进行必要的症状详询和辅助检查,这违背了专业的诊断流程
医疗诊断能力 = 规则理解 + 专业知识 + 逻辑推理
RuleAlign = 规则库构建 + 数据集生成 + 对齐学习
IF 患者描述症状
THEN 按规则顺序询问
IF 需要检查
THEN 获取检查结果
IF 需要病史
THEN 询问病史
IF 信息充分
THEN 给出诊断
- 收集专业规则
例如泌尿科疾病的诊断规则包含两部分:
- 诊断逻辑:症状→检查→病史→诊断
- 关键证据:重要症状、必要检查、检查顺序、相关病史
- 构建标准化数据集
分三步走:
步骤1:原始数据转换
输入:单轮问答数据(RJUA-QA)
方法:用 GPT-4 转成多轮对话
输出:基础医患对话数据
步骤2:规则融入
输入:基础对话 + 诊断规则
方法:让对话符合规则要求
输出:规则化对话数据集(UrologyRD)
步骤3:质量控制
方法:专业医生审核
指标:对话完整性、逻辑性
- 模型训练过程
采用两阶段训练:
第一阶段:监督微调(SFT)
目的:让模型初步学习诊断对话
方法:用规则化对话数据训练
第二阶段:偏好优化(DPO)
目的:让模型更好地遵循规则
方法:
- 构建偏好对比数据
好例子:完全符合规则的对话
坏例子:打乱顺序或重复的对话
- 训练模型偏好好的对话方式
- 评估检验
两种评估方式:
方式1:单轮测试
检验:模型是否按规则询问和推理
方式2:标准化病人测试
检验:
- 信息完整性
- 指导合理性
- 诊断逻辑性
- 临床适用性
- 治疗逻辑性
所以整体来看:
- 先定义好"什么是正确的诊断方式"(规则收集)
- 准备符合这种方式的训练数据(数据构建)
- 通过两阶段训练让模型学习这种方式(模型训练)
- 最后全面评估模型是否真的学会了(效果验证)
这就像教医学生:
5. 先有标准教材(规则)
6. 准备教学案例(数据)
7. 理论学习+实践训练(训练)
8. 考试检验效果(评估)
论文大纲
├── RuleAlign框架【论文主题】
│ ├── 1 研究背景【背景和动机】
│ │ ├── 医疗诊断本质【基础定义】
│ │ │ └── 结合主观症状和客观检查进行疾病推断【核心过程】
│ │ ├── LLMs现状【技术现状】
│ │ │ ├── GPT-4/MedPaLM-2等模型在医疗领域表现良好【成果】
│ │ │ └── 与人类专家水平相当【水平评估】
│ │ └── 存在的挑战【问题陈述】
│ │ ├── 逻辑一致性不足【挑战1】
│ │ ├── 规则遵循能力有限【挑战2】
│ │ └── 专业知识掌握不充分【挑战3】
│ │
│ ├── 2 数据集构建【方法基础】
│ │ ├── 诊断规则收集【数据源】
│ │ │ ├── 症状集合S【规则要素】
│ │ │ ├── 检查结果集合E【规则要素】
│ │ │ └── 病史记录H【规则要素】
│ │ ├── 数据集生成【构建过程】
│ │ │ ├── 原始数据收集【步骤1】
│ │ │ ├── 疾病名称映射【步骤2】
│ │ │ └── 诊断规则适配【步骤3】
│ │ └── 质量控制【保障措施】
│ │ ├── 专业医生审核【控制手段】
│ │ └── 70%通过率【质量标准】
│ │
│ ├── 3 对话优化方法【技术核心】
│ │ ├── 监督微调(SFT)【基础训练】
│ │ ├── 偏好学习【优化方法】
│ │ └── 偏好对优化【具体策略】
│ │ ├── 语义相似度过滤【策略1】
│ │ └── 对话顺序干扰【策略2】
│ │
│ └── 4 评估体系【效果验证】
│ ├── 单轮测试【评估方式1】
│ │ ├── 困惑度【指标】
│ │ ├── ROUGE【指标】
│ │ └── BLEU【指标】
│ └── 多轮标准化病人测试【评估方式2】
│ ├── 信息完整性【指标】
│ ├── 引导合理性【指标】
│ ├── 诊断逻辑性【指标】
│ ├── 临床适用性【指标】
│ └── 治疗逻辑性【指标】
怎么用数据进行归纳推理?
- 收集数据
- 从 RJUA-QA 获取初始医疗问答对(q,d)
- 利用 GPT-4 转换为多轮对话 M = GM(q,d)
- 收集泌尿科诊断规则 ri
- 寻找规律
- 发现医生诊断遵循固定轨迹: 症状->检查->病史->诊断
- 总结关键证据集合: 症状集、检查集、检查顺序、病史
- 医患对话的问答模式和语言特征
- 挖掘相关性
- 已知数据: 规则遵循的对话(正例)
- 未知数据: 规则违背的对话(负例)
- 相关性:
通过语义相似度和对话顺序来构造负例 高相似度 + 打乱顺序 = 违背规则的对话
- 建立模型
- 数学模型: Direct Preference Optimization (DPO)
rθ(x,y) = βlog(πθ(y|x)/πref(y|x)) LDPO = -E[log σ(rθ(x,yw) - rθ(x,yl))]
- 应用效果:
- 输入:病人描述
- 输出:符合医疗规则的诊断对话
- 验证:SP测试框架评估
这个分析框架帮助我们看到:
- 论文本质是将"医生如何问诊"这个问题转化为数据科学问题
- 通过数据挖掘发现医疗规则
- 利用规则违背程度构建训练数据
- 最终建立起能模仿医生问诊行为的数学模型
这种方法论使得LLM能够学习到人类医生的诊断规律和推理方式。
综合调研
医疗AI需要从"问答系统"升级为"智能医生",必须注入专业规则和诊断思维,评估标准要向真实医疗场景靠拢。
让我们对比论文的 RuleAlign 和当前主流医疗大模型方案:
对比维度:
- 数据层面:
主流方案:
- 大量医疗文本
- 问答对形式
- 强调数据量
RuleAlign:
- 诊断规则形式化
- 结构化对话数据
- 重视数据质量
- 训练层面:
主流方案:
- 单纯SFT微调
- 模仿回答模式
- 以准确率为目标
RuleAlign:
- SFT + 规则对齐
- 学习诊断规律
- 以诊断过程为导向
- 评估层面:
主流方案:
- 医学问题准确率
- 知识回答质量
- 单轮对话效果
RuleAlign:
- 诊断规则遵循度
- 问诊逻辑合理性
- 多轮对话完整性
- 应用效果:
主流方案:
✓ 快速落地
✓ 基础问答
✗ 缺乏规范
✗ 推理能力弱
RuleAlign:
✓ 规范问诊
✓ 循证诊断
✓ 推理清晰
✗ 训练复杂
核心差异:
- 主流方案像"医学问答助手"
- RuleAlign像"AI医生"
启示:
3. 医疗AI需要专业规范约束
4. 过程比结果更重要
5. 评估标准要更接近实际医疗场景
未来方向:
6. 融合更多专科诊断规则
7. 加强与真实医疗流程对齐
8. 建立更完善的评估体系
解法拆解
- 逻辑拆解:
目的:让LLM更好地模仿医生诊断行为
问题:
- LLM难以高效收集病人信息
- 缺乏医生式的诊断推理能力
解法:RuleAlign框架
问题:提升LLM医疗诊断能力
解法1:增加医疗数据(特征:知识缺乏)
解法2:规则对齐(特征:诊断流程不规范)
解法3:专家微调(特征:诊断准确性不足)
解法1:构建规则化数据集(因为需要高质量的训练数据)
- 子解法1.1:收集诊断规则(因为医生诊断遵循专业规范)
- 子解法1.2:转换QA为多轮对话(因为真实问诊是多轮交互)
- 子解法1.3:注入规则到对话(因为需要规范化的示例)
解法2:偏好对齐训练(因为需要学习规则遵循)
- 子解法2.1:SFT基础训练(因为需要基础医疗知识)
- 子解法2.2:构造偏好对(因为DPO需要正负样本)
- 正例:规则遵循对话
- 负例:语义相似+顺序打乱
- 子解法2.3:DPO训练(因为需要对齐到规则)
- 逻辑链形式:
是一个链条结构,每步都依赖前一步的结果。
- 隐性特征分析:
发现的隐性特征:
- 医生诊断过程的形式化表示:
τi = (症状->检查->病史->诊断)
Ki = {症状集,检查集,检查顺序,病史}
- 负例构造的启发式规则:
- 高语义相似度但违背诊断规则
- 通过打乱顺序制造"坏"示例
这些特征在论文中没有明确定义,但对方法至关重要。
-
潜在局限性:
-
数据层面:
- 仅覆盖泌尿科领域
- 规则可能不完整
- 人工总结规则费时费力
- 方法层面:
- 负例构造可能不够真实
- DPO训练不稳定
- 规则可能过于死板
- 应用层面:
- 难以泛化到新疾病
- 可能错过非常规案例
- 规则更新维护困难
例子:以诊断尿路感染为例
输入:发烧、尿频
规则链:
1. 询问具体症状(体温、尿痛等)
2. 要求检查(尿常规、细菌培养)
3. 了解病史(既往感染史)
4. 综合判断给出诊断
这个过程体现了RuleAlign的核心思想:将医生的诊断思维转化为可学习的规则。
全流程分析
这张图展示了医生诊断疾病时遵循的标准化规则和流程:
- 时序流程(从左到右):
- START(开始)
- Symptoms(症状收集)
- Examination(检查)
- History(病史)
- Final diagnosis(最终诊断)
- 症状集合 (S):
- Sa: 背痛(Backache)
- Sb: 发烧(Fever)
- 其他症状…
- S = {Sa, Sb, Sc, …}
- 检查项目 (E):
- Important(重要):
- Enhanced MRI(增强核磁)
- Urgency(急诊)
- Normal(常规):
- Urine Culture(尿培养)
- Urinalysis(尿常规)
- Exam Order(检查顺序):
- Urinalysis > Enhanced MRI = CT Urography
(尿常规 > 增强核磁 = CT泌尿系统造影)
- Urinalysis > Enhanced MRI = CT Urography
- 病史采集 (H):
- Medication histories(用药史)
- Surgical histories(手术史)
- Past medical histories(既往病史)
- Reproductive histories(生育史)
这张图的核心是展示了医生在诊断时:
- 遵循固定的诊断路径
- 按照重要性收集证据
- 遵守检查的优先顺序
- 系统性收集病史信息
这种规范化的诊断流程为后续将医生诊断知识注入到AI模型提供了基础框架。
问题在于,我怎么构造这种规则数据?
原问题:如何构建医疗规则数据
具体化为:
- 如何将医生的诊断规则形式化?
- 如何生成符合规则的对话数据?
- 如何验证数据质量?
具体步骤:
- 规则收集阶段
A. 诊断轨迹提取
- 分析标准诊疗指南
- 总结专家问诊模式
- 提取关键诊断步骤
B. 证据要素提取
- 症状特征清单
- 必要检查项目
- 检查优先顺序
- 相关病史要求
- 规则形式化阶段
A. 诊断轨迹形式化
τi = (si → ei → hi → di)
- si: 症状描述
- ei: 检查结果
- hi: 病史信息
- di: 最终诊断
B. 证据集合形式化
Ki = {Sdi, Edi, ERdi, Hdi}
- Sdi: 相关症状集
- Edi: 检查结果集
- ERdi: 检查优先级
- Hdi: 病史要求
- 数据构造阶段
您的工作是利用提供的单轮医疗咨询对话内容,改编成一个符合实际的多轮医生与患者
间的对话。多轮对话应当完全基于单轮对话中的信息,不添加任何新信息。多轮对话开
始于患者提出问题,继续通过医生的逐个问题来探究,并最终以医生对患者的具体诊断
病症结束,无需提供治疗建议或后续行动。
遵守以下要点生成对话:
1. 开始时患者描述初始症状,之后医生通过询问得到更多详细信息。
2. 每个医生的提问和患者的答复都紧密关联,仅基于患者已提供的信息。
3. 避免在对话中引入新的症状、检查或疾病,且应当严格遵循患者原有的症状描述。
4. 最终目标是确立一个具体的诊断,并以医生的决定性诊断作为对话结束。不需要给出
治疗建议。
以下是单轮医疗咨询对话示例:
患者:{{ QUESTION q }}
医生:{{ DISEASE d }}
请根据提供的信息创建一个逼真的多轮医患对话,并以医生明确的诊断结束。
将医生和患者对话按照下列规则调整,最终目标是确立具体的诊断。以患者描述自身情
况开始,以医生的决定性诊断作为对话结束,不需要给出任何治疗建议。已做的检查结
果需由患者提出,医生只能根据前面的对话获得相关信息并进行下一步询问。
医生在进行询问时,需遵循规则:
{{ RULE_PHYSICIAN Mi }}
患者在回答医生提问时,需遵循规则:
1.完整且诚实回答医生提问。若无相关症状或检查结果诚实说明没有,禁止捏造,不得补
充没有进行的检查结果。
2.患者目标是,确诊或排除疾病。不得进行额外的检查行为,获得诊断后结束对话,若
缺少确诊证据也结束对话,不能在获得证据后继续对话。
3.有明确的用药史、手术史、既往史、婚育史相关需保留对话。
原始医生患者对话:
{{ DIALOGUES ri }}
调整后的医生患者对话:
A. GPT4生成初始对话
prompt模板设计:
- 输入:疾病、规则
- 要求:遵循诊断轨迹
- 约束:符合证据要求
B. 专家验证
- 检查对话合理性
- 验证规则遵循度
- 修正不准确部分
C. 规则过滤
- 检查完整性
- 验证逻辑性
- 确保专业性
- 规则应用阶段
A. 正例构造
- 完全遵循规则的对话
- 通过专家验证的样本
B. 负例构造策略
1. 语义相似性筛选
- BLEU分数计算
- 设置相似度阈值
2. 顺序打乱方式
- 跳过必要步骤
- 颠倒诊断顺序
- 忽略关键证据
关键优化点:
Phase 1: 规则构建
- 收集专科诊断规则
- 设计形式化模板
- 建立验证机制
Phase 2: 数据生成
- 优化GPT4 prompt
- 实现自动生成
- 专家复核流程
Phase 3: 模型训练
- SFT基础训练
- 构造偏好对
- DPO规则对齐
实用建议:
- 先从单一疾病开始
- 建立小规模验证集
- 逐步扩展规则范围
- 保持规则灵活性
这样的规则构造系统可以持续优化和扩展,为医疗AI提供高质量的训练数据。
多轮问诊改进
- 诊断思路的差异
方案一(知识图谱):
- 核心逻辑:症状-疾病匹配度驱动
- 问诊路径:由已知症状联想相关疾病,再追问该疾病其他典型症状
- 终止条件:某个疾病的症状匹配度达到阈值
方案二(RuleAlign):
- 核心逻辑:专业诊断规则驱动
- 问诊路径:遵循固定诊断轨迹(症状→检查→病史→诊断)
- 终止条件:完成规则要求的全部步骤
- 各自的优势
知识图谱方案优势:
- 灵活性强,可以快速响应新出现的症状关联
- 实现相对简单,主要依赖图谱质量
- 容易扩展新疾病,只需添加症状关联
- 计算效率高,基于图的匹配运算
RuleAlign方案优势:
- 更符合医生实际诊断思维
- 诊断过程更规范和完整
- 考虑了检查结果和病史信息
- 可以处理复杂的条件组合
- 减少误诊风险
- 各自的局限性
知识图谱方案局限:
- 缺乏诊断思维的系统性
- 可能忽略重要的检查环节
- 难以处理复杂的临床场景
- 过度依赖症状-疾病关联强度
RuleAlign方案局限:
- 规则构建成本高
- 系统灵活性较差
- 规则更新维护复杂
- 需要大量专家参与
- 适用场景分析
知识图谱方案适合:
- 快速初筛
- 常见病诊断
- 症状明显的疾病
- 资源受限场景
RuleAlign方案适合:
- 复杂疾病诊断
- 需要严格规范的场景
- 高风险疾病筛查
- 教学培训场景
- 对比示例
以诊断尿路感染为例:
知识图谱方式:
患者:尿频尿痛
系统:(匹配到尿路感染相关症状)
-> 追问:是否发烧?
-> 追问:尿液颜色如何?
-> 追问:是否有腰痛?
(基于症状匹配度给出诊断)
RuleAlign方式:
患者:尿频尿痛
系统:(进入规范化诊断流程)
1. 症状阶段:
- 询问症状持续时间
- 询问发烧情况
- 询问排尿特征
2. 检查阶段:
- 询问尿常规结果
- 询问尿培养结果
3. 病史阶段:
- 询问既往感染史
- 询问用药史
4. 综合分析后诊断
- 发展建议
短期改进:
- 知识图谱:添加检查项目节点,增加规则约束
- RuleAlign:简化部分规则,提高灵活性
长期方向:
- 融合两种方案优势
- 构建动态规则库
- 引入个性化诊断策略
- 建立多层次验证机制
总结:理想的诊断系统应该是两种方案的优势互补:
- 用知识图谱提供初步方向和快速响应能力
- 用规则对齐确保诊断过程的专业性和完整性
- 在不同场景下灵活切换两种模式
这样既保证了诊断的效率,又确保了专业性和安全性。