RuleAlign 规则对齐框架:将医生的诊断规则形式化并注入模型,无需额外人工标注的自动对齐方法

RuleAlign 规则对齐框架:将医生的诊断规则形式化并注入模型,无需额外人工标注的自动对齐方法


论文:RuleAlign: Making Large Language Models Better Physicians with Diagnostic Rule Alignment

提出背景

Rule(规则) 和 Align(对齐) 组合成 RuleAlign,即通过对医疗诊断规则的学习和遵循,使AI模型的行为与专业医生的诊断标准保持一致。

对比示例:

  • 正例:采用RuleAlign后,模型能够按照专业诊断流程逐步收集信息,最终做出诊断。具体表现为:先询问症状持续时间、性质,再根据症状建议相关检查,最后结合病史和检查结果做出诊断
  • 反例:未经过规则对齐的模型可能缺乏系统性,比如患者说"腰痛"就直接判断是"肾结石",没有进行必要的症状详询和辅助检查,这违背了专业的诊断流程
cpp 复制代码
医疗诊断能力 = 规则理解 + 专业知识 + 逻辑推理
RuleAlign = 规则库构建 + 数据集生成 + 对齐学习


IF 患者描述症状
THEN 按规则顺序询问
  IF 需要检查
  THEN 获取检查结果
    IF 需要病史
    THEN 询问病史
      IF 信息充分
      THEN 给出诊断
  1. 收集专业规则
    例如泌尿科疾病的诊断规则包含两部分:
  • 诊断逻辑:症状→检查→病史→诊断
  • 关键证据:重要症状、必要检查、检查顺序、相关病史
  1. 构建标准化数据集
    分三步走:
c 复制代码
步骤1:原始数据转换
输入:单轮问答数据(RJUA-QA)
方法:用 GPT-4 转成多轮对话
输出:基础医患对话数据

步骤2:规则融入
输入:基础对话 + 诊断规则
方法:让对话符合规则要求
输出:规则化对话数据集(UrologyRD)

步骤3:质量控制
方法:专业医生审核
指标:对话完整性、逻辑性
  1. 模型训练过程
    采用两阶段训练:
c 复制代码
第一阶段:监督微调(SFT)
目的:让模型初步学习诊断对话
方法:用规则化对话数据训练

第二阶段:偏好优化(DPO)
目的:让模型更好地遵循规则
方法:
- 构建偏好对比数据
  好例子:完全符合规则的对话
  坏例子:打乱顺序或重复的对话
- 训练模型偏好好的对话方式
  1. 评估检验
    两种评估方式:
c 复制代码
方式1:单轮测试
检验:模型是否按规则询问和推理

方式2:标准化病人测试
检验:
- 信息完整性
- 指导合理性
- 诊断逻辑性
- 临床适用性
- 治疗逻辑性

所以整体来看:

  1. 先定义好"什么是正确的诊断方式"(规则收集)
  2. 准备符合这种方式的训练数据(数据构建)
  3. 通过两阶段训练让模型学习这种方式(模型训练)
  4. 最后全面评估模型是否真的学会了(效果验证)

这就像教医学生:

  1. 先有标准教材(规则)

  2. 准备教学案例(数据)

  3. 理论学习+实践训练(训练)

  4. 考试检验效果(评估)

论文大纲

cpp 复制代码
├── 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】
│           ├── 信息完整性【指标】
│           ├── 引导合理性【指标】
│           ├── 诊断逻辑性【指标】
│           ├── 临床适用性【指标】
│           └── 治疗逻辑性【指标】

怎么用数据进行归纳推理?

  1. 收集数据
  • 从 RJUA-QA 获取初始医疗问答对(q,d)
  • 利用 GPT-4 转换为多轮对话 M = GM(q,d)
  • 收集泌尿科诊断规则 ri
  1. 寻找规律
  • 发现医生诊断遵循固定轨迹: 症状->检查->病史->诊断
  • 总结关键证据集合: 症状集、检查集、检查顺序、病史
  • 医患对话的问答模式和语言特征
  1. 挖掘相关性
  • 已知数据: 规则遵循的对话(正例)

  • 未知数据: 规则违背的对话(负例)

  • 相关性:

    c 复制代码
    通过语义相似度和对话顺序来构造负例
    高相似度 + 打乱顺序 = 违背规则的对话
  1. 建立模型
  • 数学模型: Direct Preference Optimization (DPO)

    c 复制代码
    rθ(x,y) = βlog(πθ(y|x)/πref(y|x))
    LDPO = -E[log σ(rθ(x,yw) - rθ(x,yl))]
  • 应用效果:

    • 输入:病人描述
    • 输出:符合医疗规则的诊断对话
    • 验证:SP测试框架评估

这个分析框架帮助我们看到:

  1. 论文本质是将"医生如何问诊"这个问题转化为数据科学问题
  2. 通过数据挖掘发现医疗规则
  3. 利用规则违背程度构建训练数据
  4. 最终建立起能模仿医生问诊行为的数学模型

这种方法论使得LLM能够学习到人类医生的诊断规律和推理方式。

综合调研

医疗AI需要从"问答系统"升级为"智能医生",必须注入专业规则和诊断思维,评估标准要向真实医疗场景靠拢。

让我们对比论文的 RuleAlign 和当前主流医疗大模型方案:

对比维度:

  1. 数据层面:
c 复制代码
主流方案:
- 大量医疗文本 
- 问答对形式
- 强调数据量

RuleAlign:
- 诊断规则形式化
- 结构化对话数据
- 重视数据质量
  1. 训练层面:
c 复制代码
主流方案:
- 单纯SFT微调
- 模仿回答模式
- 以准确率为目标

RuleAlign:
- SFT + 规则对齐
- 学习诊断规律
- 以诊断过程为导向
  1. 评估层面:
c 复制代码
主流方案:
- 医学问题准确率
- 知识回答质量
- 单轮对话效果

RuleAlign:
- 诊断规则遵循度
- 问诊逻辑合理性
- 多轮对话完整性
  1. 应用效果:
c 复制代码
主流方案:
✓ 快速落地
✓ 基础问答
✗ 缺乏规范
✗ 推理能力弱

RuleAlign:
✓ 规范问诊
✓ 循证诊断  
✓ 推理清晰
✗ 训练复杂

核心差异:

  1. 主流方案像"医学问答助手"
  2. RuleAlign像"AI医生"

启示:

  1. 医疗AI需要专业规范约束

  2. 过程比结果更重要

  3. 评估标准要更接近实际医疗场景

未来方向:

  1. 融合更多专科诊断规则

  2. 加强与真实医疗流程对齐

  3. 建立更完善的评估体系

解法拆解

  1. 逻辑拆解:

目的:让LLM更好地模仿医生诊断行为

问题:

  • LLM难以高效收集病人信息
  • 缺乏医生式的诊断推理能力

解法:RuleAlign框架

cpp 复制代码
问题:提升LLM医疗诊断能力
解法1:增加医疗数据(特征:知识缺乏)
解法2:规则对齐(特征:诊断流程不规范)
解法3:专家微调(特征:诊断准确性不足)
c 复制代码
解法1:构建规则化数据集(因为需要高质量的训练数据)
- 子解法1.1:收集诊断规则(因为医生诊断遵循专业规范)
- 子解法1.2:转换QA为多轮对话(因为真实问诊是多轮交互)
- 子解法1.3:注入规则到对话(因为需要规范化的示例)

解法2:偏好对齐训练(因为需要学习规则遵循)
- 子解法2.1:SFT基础训练(因为需要基础医疗知识)
- 子解法2.2:构造偏好对(因为DPO需要正负样本)
  - 正例:规则遵循对话
  - 负例:语义相似+顺序打乱
- 子解法2.3:DPO训练(因为需要对齐到规则)
  1. 逻辑链形式:

是一个链条结构,每步都依赖前一步的结果。

  1. 隐性特征分析:

发现的隐性特征:

  1. 医生诊断过程的形式化表示:
c 复制代码
τi = (症状->检查->病史->诊断)
Ki = {症状集,检查集,检查顺序,病史}
  1. 负例构造的启发式规则:
  • 高语义相似度但违背诊断规则
  • 通过打乱顺序制造"坏"示例

这些特征在论文中没有明确定义,但对方法至关重要。

  1. 潜在局限性:

  2. 数据层面:

  • 仅覆盖泌尿科领域
  • 规则可能不完整
  • 人工总结规则费时费力
  1. 方法层面:
  • 负例构造可能不够真实
  • DPO训练不稳定
  • 规则可能过于死板
  1. 应用层面:
  • 难以泛化到新疾病
  • 可能错过非常规案例
  • 规则更新维护困难

例子:以诊断尿路感染为例

c 复制代码
输入:发烧、尿频
规则链:
1. 询问具体症状(体温、尿痛等)
2. 要求检查(尿常规、细菌培养)
3. 了解病史(既往感染史)
4. 综合判断给出诊断

这个过程体现了RuleAlign的核心思想:将医生的诊断思维转化为可学习的规则。

全流程分析

这张图展示了医生诊断疾病时遵循的标准化规则和流程:

  1. 时序流程(从左到右):
  • START(开始)
  • Symptoms(症状收集)
  • Examination(检查)
  • History(病史)
  • Final diagnosis(最终诊断)
  1. 症状集合 (S):
  • Sa: 背痛(Backache)
  • Sb: 发烧(Fever)
  • 其他症状...
  • S = {Sa, Sb, Sc, ...}
  1. 检查项目 (E):
  • Important(重要):
    • Enhanced MRI(增强核磁)
    • Urgency(急诊)
  • Normal(常规):
    • Urine Culture(尿培养)
    • Urinalysis(尿常规)
  • Exam Order(检查顺序):
    • Urinalysis > Enhanced MRI = CT Urography
      (尿常规 > 增强核磁 = CT泌尿系统造影)
  1. 病史采集 (H):
  • Medication histories(用药史)
  • Surgical histories(手术史)
  • Past medical histories(既往病史)
  • Reproductive histories(生育史)

这张图的核心是展示了医生在诊断时:

  1. 遵循固定的诊断路径
  2. 按照重要性收集证据
  3. 遵守检查的优先顺序
  4. 系统性收集病史信息

这种规范化的诊断流程为后续将医生诊断知识注入到AI模型提供了基础框架。

问题在于,我怎么构造这种规则数据?

原问题:如何构建医疗规则数据

具体化为:

  • 如何将医生的诊断规则形式化?
  • 如何生成符合规则的对话数据?
  • 如何验证数据质量?

    具体步骤:
  1. 规则收集阶段
c 复制代码
A. 诊断轨迹提取
- 分析标准诊疗指南
- 总结专家问诊模式
- 提取关键诊断步骤

B. 证据要素提取
- 症状特征清单
- 必要检查项目
- 检查优先顺序
- 相关病史要求
  1. 规则形式化阶段
c 复制代码
A. 诊断轨迹形式化
τi = (si → ei → hi → di)
- si: 症状描述
- ei: 检查结果
- hi: 病史信息
- di: 最终诊断

B. 证据集合形式化
Ki = {Sdi, Edi, ERdi, Hdi}
- Sdi: 相关症状集
- Edi: 检查结果集
- ERdi: 检查优先级
- Hdi: 病史要求
  1. 数据构造阶段
cpp 复制代码
您的工作是利用提供的单轮医疗咨询对话内容,改编成一个符合实际的多轮医生与患者
间的对话。多轮对话应当完全基于单轮对话中的信息,不添加任何新信息。多轮对话开
始于患者提出问题,继续通过医生的逐个问题来探究,并最终以医生对患者的具体诊断
病症结束,无需提供治疗建议或后续行动。
遵守以下要点生成对话:
1. 开始时患者描述初始症状,之后医生通过询问得到更多详细信息。
2. 每个医生的提问和患者的答复都紧密关联,仅基于患者已提供的信息。
3. 避免在对话中引入新的症状、检查或疾病,且应当严格遵循患者原有的症状描述。
4. 最终目标是确立一个具体的诊断,并以医生的决定性诊断作为对话结束。不需要给出
治疗建议。
以下是单轮医疗咨询对话示例:
患者:{{ QUESTION q }}
医生:{{ DISEASE d }}
请根据提供的信息创建一个逼真的多轮医患对话,并以医生明确的诊断结束。
cpp 复制代码
将医生和患者对话按照下列规则调整,最终目标是确立具体的诊断。以患者描述自身情
况开始,以医生的决定性诊断作为对话结束,不需要给出任何治疗建议。已做的检查结
果需由患者提出,医生只能根据前面的对话获得相关信息并进行下一步询问。
医生在进行询问时,需遵循规则:
{{ RULE_PHYSICIAN Mi }}
患者在回答医生提问时,需遵循规则:
1.完整且诚实回答医生提问。若无相关症状或检查结果诚实说明没有,禁止捏造,不得补
充没有进行的检查结果。
2.患者目标是,确诊或排除疾病。不得进行额外的检查行为,获得诊断后结束对话,若
缺少确诊证据也结束对话,不能在获得证据后继续对话。
3.有明确的用药史、手术史、既往史、婚育史相关需保留对话。
原始医生患者对话:
{{ DIALOGUES ri }}
调整后的医生患者对话:
c 复制代码
A. GPT4生成初始对话
prompt模板设计:
- 输入:疾病、规则
- 要求:遵循诊断轨迹
- 约束:符合证据要求

B. 专家验证
- 检查对话合理性
- 验证规则遵循度
- 修正不准确部分

C. 规则过滤
- 检查完整性
- 验证逻辑性
- 确保专业性
  1. 规则应用阶段
c 复制代码
A. 正例构造
- 完全遵循规则的对话
- 通过专家验证的样本

B. 负例构造策略
1. 语义相似性筛选
   - BLEU分数计算
   - 设置相似度阈值
   
2. 顺序打乱方式
   - 跳过必要步骤
   - 颠倒诊断顺序
   - 忽略关键证据

关键优化点:

cpp 复制代码
Phase 1: 规则构建
- 收集专科诊断规则
- 设计形式化模板
- 建立验证机制

Phase 2: 数据生成
- 优化GPT4 prompt
- 实现自动生成
- 专家复核流程

Phase 3: 模型训练
- SFT基础训练
- 构造偏好对
- DPO规则对齐

实用建议:

  1. 先从单一疾病开始
  2. 建立小规模验证集
  3. 逐步扩展规则范围
  4. 保持规则灵活性

这样的规则构造系统可以持续优化和扩展,为医疗AI提供高质量的训练数据。

多轮问诊改进

  1. 诊断思路的差异
c 复制代码
方案一(知识图谱):
- 核心逻辑:症状-疾病匹配度驱动
- 问诊路径:由已知症状联想相关疾病,再追问该疾病其他典型症状
- 终止条件:某个疾病的症状匹配度达到阈值

方案二(RuleAlign):
- 核心逻辑:专业诊断规则驱动
- 问诊路径:遵循固定诊断轨迹(症状→检查→病史→诊断)
- 终止条件:完成规则要求的全部步骤
  1. 各自的优势

知识图谱方案优势:

  • 灵活性强,可以快速响应新出现的症状关联
  • 实现相对简单,主要依赖图谱质量
  • 容易扩展新疾病,只需添加症状关联
  • 计算效率高,基于图的匹配运算

RuleAlign方案优势:

  • 更符合医生实际诊断思维
  • 诊断过程更规范和完整
  • 考虑了检查结果和病史信息
  • 可以处理复杂的条件组合
  • 减少误诊风险
  1. 各自的局限性
c 复制代码
知识图谱方案局限:
- 缺乏诊断思维的系统性
- 可能忽略重要的检查环节
- 难以处理复杂的临床场景
- 过度依赖症状-疾病关联强度

RuleAlign方案局限:
- 规则构建成本高
- 系统灵活性较差
- 规则更新维护复杂
- 需要大量专家参与
  1. 适用场景分析
c 复制代码
知识图谱方案适合:
- 快速初筛
- 常见病诊断
- 症状明显的疾病
- 资源受限场景

RuleAlign方案适合:
- 复杂疾病诊断
- 需要严格规范的场景
- 高风险疾病筛查
- 教学培训场景
  1. 对比示例

以诊断尿路感染为例:

知识图谱方式:

c 复制代码
患者:尿频尿痛
系统:(匹配到尿路感染相关症状)
-> 追问:是否发烧?
-> 追问:尿液颜色如何?
-> 追问:是否有腰痛?
(基于症状匹配度给出诊断)

RuleAlign方式:

c 复制代码
患者:尿频尿痛
系统:(进入规范化诊断流程)
1. 症状阶段:
   - 询问症状持续时间
   - 询问发烧情况
   - 询问排尿特征
2. 检查阶段:
   - 询问尿常规结果
   - 询问尿培养结果
3. 病史阶段:
   - 询问既往感染史
   - 询问用药史
4. 综合分析后诊断
  1. 发展建议
c 复制代码
短期改进:
- 知识图谱:添加检查项目节点,增加规则约束
- RuleAlign:简化部分规则,提高灵活性

长期方向:
- 融合两种方案优势
- 构建动态规则库
- 引入个性化诊断策略
- 建立多层次验证机制

总结:理想的诊断系统应该是两种方案的优势互补:

  1. 用知识图谱提供初步方向和快速响应能力
  2. 用规则对齐确保诊断过程的专业性和完整性
  3. 在不同场景下灵活切换两种模式

这样既保证了诊断的效率,又确保了专业性和安全性。

相关推荐
小任同学Alex3 分钟前
浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)
人工智能·自然语言处理·大模型
新加坡内哥谈技术9 分钟前
微软 Ignite 2024 大会
人工智能
江瀚视野36 分钟前
Q3净利增长超预期,文心大模型调用量大增,百度未来如何分析?
人工智能
陪学43 分钟前
百度遭初创企业指控抄袭,维权还是碰瓷?
人工智能·百度·面试·职场和发展·产品运营
QCN_1 小时前
湘潭大学人工智能考试复习1(软件工程)
人工智能
Landy_Jay1 小时前
深度学习:GPT-1的MindSpore实践
人工智能·gpt·深度学习
白光白光1 小时前
量子神经网络
人工智能·深度学习·神经网络
全域观察1 小时前
如何复制只读模式下的腾讯文档
人工智能·新媒体运营·媒体·内容运营·程序员创富
panpantt3211 小时前
【参会邀请】第二届大数据与数据挖掘国际会议(BDDM 2024)邀您相聚江城!
大数据·人工智能·数据挖掘
lindsayshuo1 小时前
jetson orin系列开发版安装cuda的gpu版本的opencv
人工智能·opencv