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

embedded/2024/11/12 4:36:04/

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. 收集专业规则
    例如泌尿科疾病的诊断规则包含两部分:
  • 诊断逻辑:症状→检查→病史→诊断
  • 关键证据:重要症状、必要检查、检查顺序、相关病史
  1. 构建标准化数据集
    分三步走:
步骤1:原始数据转换
输入:单轮问答数据(RJUA-QA)
方法:用 GPT-4 转成多轮对话
输出:基础医患对话数据步骤2:规则融入
输入:基础对话 + 诊断规则
方法:让对话符合规则要求
输出:规则化对话数据集(UrologyRD)步骤3:质量控制
方法:专业医生审核
指标:对话完整性、逻辑性
  1. 模型训练过程
    采用两阶段训练:
第一阶段:监督微调(SFT)
目的:让模型初步学习诊断对话
方法:用规则化对话数据训练第二阶段:偏好优化(DPO)
目的:让模型更好地遵循规则
方法:
- 构建偏好对比数据好例子:完全符合规则的对话坏例子:打乱顺序或重复的对话
- 训练模型偏好好的对话方式
  1. 评估检验
    两种评估方式:
方式1:单轮测试
检验:模型是否按规则询问和推理方式2:标准化病人测试
检验:
- 信息完整性
- 指导合理性
- 诊断逻辑性
- 临床适用性
- 治疗逻辑性

所以整体来看:

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

这就像教医学生:
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】
│           ├── 信息完整性【指标】
│           ├── 引导合理性【指标】
│           ├── 诊断逻辑性【指标】
│           ├── 临床适用性【指标】
│           └── 治疗逻辑性【指标】

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

  1. 收集数据
  • 从 RJUA-QA 获取初始医疗问答对(q,d)
  • 利用 GPT-4 转换为多轮对话 M = GM(q,d)
  • 收集泌尿科诊断规则 ri
  1. 寻找规律
  • 发现医生诊断遵循固定轨迹: 症状->检查->病史->诊断
  • 总结关键证据集合: 症状集、检查集、检查顺序、病史
  • 医患对话的问答模式和语言特征
  1. 挖掘相关性
  • 已知数据: 规则遵循的对话(正例)
  • 未知数据: 规则违背的对话(负例)
  • 相关性:
    通过语义相似度和对话顺序来构造负例
    高相似度 + 打乱顺序 = 违背规则的对话
    
  1. 建立模型
  • 数学模型: Direct Preference Optimization (DPO)
    (x,y) = βlog(πθ(y|x)/πref(y|x))
    LDPO = -E[log σ((x,yw) -(x,yl))]
    
  • 应用效果:
    • 输入:病人描述
    • 输出:符合医疗规则的诊断对话
    • 验证:SP测试框架评估

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

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

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

 

综合调研

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

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

对比维度:

  1. 数据层面:
主流方案:
- 大量医疗文本 
- 问答对形式
- 强调数据量RuleAlign:
- 诊断规则形式化
- 结构化对话数据
- 重视数据质量
  1. 训练层面:
主流方案:
- 单纯SFT微调
- 模仿回答模式
- 以准确率为目标RuleAlign:
- SFT + 规则对齐
- 学习诊断规律
- 以诊断过程为导向
  1. 评估层面:
主流方案:
- 医学问题准确率
- 知识回答质量
- 单轮对话效果RuleAlign:
- 诊断规则遵循度
- 问诊逻辑合理性
- 多轮对话完整性
  1. 应用效果:
主流方案:
✓ 快速落地
✓ 基础问答
✗ 缺乏规范
✗ 推理能力弱RuleAlign:
✓ 规范问诊
✓ 循证诊断  
✓ 推理清晰
✗ 训练复杂

核心差异:

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

启示:
3. 医疗AI需要专业规范约束
4. 过程比结果更重要
5. 评估标准要更接近实际医疗场景

未来方向:
6. 融合更多专科诊断规则
7. 加强与真实医疗流程对齐
8. 建立更完善的评估体系

 

解法拆解

  1. 逻辑拆解:

目的:让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训练(因为需要对齐到规则)
  1. 逻辑链形式:

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

  1. 隐性特征分析:

发现的隐性特征:

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

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

  1. 潜在局限性:

  2. 数据层面:

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

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

输入:发烧、尿频
规则链:
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. 规则收集阶段
A. 诊断轨迹提取
- 分析标准诊疗指南
- 总结专家问诊模式
- 提取关键诊断步骤B. 证据要素提取
- 症状特征清单
- 必要检查项目
- 检查优先顺序
- 相关病史要求
  1. 规则形式化阶段
A. 诊断轨迹形式化
τi = (si → ei → hi → di)
- si: 症状描述
- ei: 检查结果
- hi: 病史信息
- di: 最终诊断B. 证据集合形式化
Ki = {Sdi, Edi, ERdi, Hdi}
- Sdi: 相关症状集
- Edi: 检查结果集
- ERdi: 检查优先级
- Hdi: 病史要求
  1. 数据构造阶段
您的工作是利用提供的单轮医疗咨询对话内容,改编成一个符合实际的多轮医生与患者
间的对话。多轮对话应当完全基于单轮对话中的信息,不添加任何新信息。多轮对话开
始于患者提出问题,继续通过医生的逐个问题来探究,并最终以医生对患者的具体诊断
病症结束,无需提供治疗建议或后续行动。
遵守以下要点生成对话:
1. 开始时患者描述初始症状,之后医生通过询问得到更多详细信息。
2. 每个医生的提问和患者的答复都紧密关联,仅基于患者已提供的信息。
3. 避免在对话中引入新的症状、检查或疾病,且应当严格遵循患者原有的症状描述。
4. 最终目标是确立一个具体的诊断,并以医生的决定性诊断作为对话结束。不需要给出
治疗建议。
以下是单轮医疗咨询对话示例:
患者:{{ QUESTION q }}
医生:{{ DISEASE d }}
请根据提供的信息创建一个逼真的多轮医患对话,并以医生明确的诊断结束。

 

 

 
在这里插入图片描述

将医生和患者对话按照下列规则调整,最终目标是确立具体的诊断。以患者描述自身情
况开始,以医生的决定性诊断作为对话结束,不需要给出任何治疗建议。已做的检查结
果需由患者提出,医生只能根据前面的对话获得相关信息并进行下一步询问。
医生在进行询问时,需遵循规则:
{{ RULE_PHYSICIAN Mi }}
患者在回答医生提问时,需遵循规则:
1.完整且诚实回答医生提问。若无相关症状或检查结果诚实说明没有,禁止捏造,不得补
充没有进行的检查结果。
2.患者目标是,确诊或排除疾病。不得进行额外的检查行为,获得诊断后结束对话,若
缺少确诊证据也结束对话,不能在获得证据后继续对话。
3.有明确的用药史、手术史、既往史、婚育史相关需保留对话。
原始医生患者对话:
{{ DIALOGUES ri }}
调整后的医生患者对话:

 

A. GPT4生成初始对话
prompt模板设计:
- 输入:疾病、规则
- 要求:遵循诊断轨迹
- 约束:符合证据要求B. 专家验证
- 检查对话合理性
- 验证规则遵循度
- 修正不准确部分C. 规则过滤
- 检查完整性
- 验证逻辑性
- 确保专业性
  1. 规则应用阶段
A. 正例构造
- 完全遵循规则的对话
- 通过专家验证的样本B. 负例构造策略
1. 语义相似性筛选- BLEU分数计算- 设置相似度阈值2. 顺序打乱方式- 跳过必要步骤- 颠倒诊断顺序- 忽略关键证据

关键优化点:

Phase 1: 规则构建
- 收集专科诊断规则
- 设计形式化模板
- 建立验证机制Phase 2: 数据生成
- 优化GPT4 prompt
- 实现自动生成
- 专家复核流程Phase 3: 模型训练
- SFT基础训练
- 构造偏好对
- DPO规则对齐

实用建议:

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

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

 

多轮问诊改进

  1. 诊断思路的差异
方案一(知识图谱):
- 核心逻辑:症状-疾病匹配度驱动
- 问诊路径:由已知症状联想相关疾病,再追问该疾病其他典型症状
- 终止条件:某个疾病的症状匹配度达到阈值方案二(RuleAlign):
- 核心逻辑:专业诊断规则驱动
- 问诊路径:遵循固定诊断轨迹(症状→检查→病史→诊断)
- 终止条件:完成规则要求的全部步骤
  1. 各自的优势

知识图谱方案优势:

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

RuleAlign方案优势:

  • 更符合医生实际诊断思维
  • 诊断过程更规范和完整
  • 考虑了检查结果和病史信息
  • 可以处理复杂的条件组合
  • 减少误诊风险
  1. 各自的局限性
知识图谱方案局限:
- 缺乏诊断思维的系统性
- 可能忽略重要的检查环节
- 难以处理复杂的临床场景
- 过度依赖症状-疾病关联强度RuleAlign方案局限:
- 规则构建成本高
- 系统灵活性较差
- 规则更新维护复杂
- 需要大量专家参与
  1. 适用场景分析
知识图谱方案适合:
- 快速初筛
- 常见病诊断
- 症状明显的疾病
- 资源受限场景RuleAlign方案适合:
- 复杂疾病诊断
- 需要严格规范的场景
- 高风险疾病筛查
- 教学培训场景
  1. 对比示例

以诊断尿路感染为例:

知识图谱方式:

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

RuleAlign方式:

患者:尿频尿痛
系统:(进入规范化诊断流程)
1. 症状阶段:- 询问症状持续时间- 询问发烧情况- 询问排尿特征
2. 检查阶段:- 询问尿常规结果- 询问尿培养结果
3. 病史阶段:- 询问既往感染史- 询问用药史
4. 综合分析后诊断
  1. 发展建议
短期改进:
- 知识图谱:添加检查项目节点,增加规则约束
- RuleAlign:简化部分规则,提高灵活性长期方向:
- 融合两种方案优势
- 构建动态规则库
- 引入个性化诊断策略
- 建立多层次验证机制

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

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

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


http://www.ppmy.cn/embedded/135944.html

相关文章

Android CALL关于电话音频和紧急电话设置和获取

获取音频服务,设置音源类型:电话类型和获取最大电话音量,响铃模式 private AudioManager mAudioManager; mAudioManager (AudioManager) getSystemService(AUDIO_SERVICE); mAudioManager.setStreamVolume(AudioManager.STREAM_VOIC…

RHCE

第六章 DNS域名解析服务器 DNS简介 DNS(Domain Name System)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式 数据库,能够使人更方便的访问互联网。 DNS系统使用的是网络的查询,那么自然需要有监听…

NLP segment-20-分词开源项目介绍 HanLP 未来十年的自然语言处理

拓展阅读 分词系列专题 jieba-fenci 01 结巴分词原理讲解 segment jieba-fenci 02 结巴分词原理讲解之数据归一化 segment jieba-fenci 03 结巴分词与繁简体转换 segment jieba-fenci 04 结巴分词之词性标注实现思路 speechTagging segment jieba-fenci 05 结巴分词之简单…

43.第二阶段x86游戏实战2-提取游戏里面的lua

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

微信小程序的汽车维修预约管理系统

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 系统功能简述 前台用于实现用户在页面上的各种操作,同时在个人中心显示各种操作所产生的记录:后…

scala中的包对象

package com//格式:package object 包名 package object sala02 {val pi 3.14// 公共的数据方法def sayHello():Unit {println("包对象...")} }package com.sala02class A() {println("A对象创建了",pi)def test():Unit {//直接可以使用包对象…

如何在算家云搭建Aatrox-Bert-VITS2(音频生成)

一、模型介绍 ‌ Aatrox - Bert -VITS2 模型是一种基于深度学习的语音合成系统,结合了 BERT 的预训练能力和 VITS2 的微调技术,旨在实现高质量的个性化语音合成。 二、模型搭建流程 1. 创建容器实例 进入算家云的“应用社区”,点击搜索找到…

卷积神经网络——paddle部分

卷积神经网络——paddle部分 本文部分为paddle框架以及部分理论分析,torch框架对应代码可见卷积神经网络——pytorch与paddle实现卷积神经网络 import paddle print("paddle version:",paddle.__version__)paddle version: 2.6.1图像卷积的基本原理 图…