ChatDoctor
[论文笔记•(智能体)]ChatDoctor: A Medical Chat Model Fine-Tuned ona Large Language Model Meta-AI (LLaMA) Using Medical Domain Knowledge
一、一句话总结
提出ChatDoctor,这是一款基于 Meta 的LLaMA-7B 模型,通过10 万条真实医患对话(HealthCareMagic100k 数据集) 微调,并整合在线(如 Wikipedia)与离线(如基于 MedlinePlus 构建的疾病数据库)自主信息检索机制的医疗对话模型,旨在解决 ChatGPT 等通用大语言模型在医疗知识上的局限性;实验表明,其在精确率、召回率、F1 分数上均优于 ChatGPT,能准确回答猴痘(Mpox)、Daybue 药物等新医疗主题,且在与 iCliniq 医生回答的语义相似度对比中表现更优,但目前仅处于学术研究阶段,暂未用于临床,需额外安全措施验证答案准确性。
二、论文基本信息
单位:美国达拉斯德州大学西南医学中心
会议:arxiv
阅读时间:2025.10.18
论文地址:[2303.14070] ChatDoctor: A Medical Chat Model Fine-Tuned on a Large Language Model Meta-AI (LLaMA) Using Medical Domain Knowledge
**代码:**https://github.com/Kent0n-Li/ChatDoctor.
三、研究的核心问题和背景
- 背景:通用大语言模型(LLMs)如 ChatGPT 虽在自然语言处理任务中表现出色,但在医疗领域应用稀缺;此类模型未针对医疗知识专项训练,常输出错误医疗回答,而医疗领域对准确性要求极高,错误答案可能危害患者健康。
- 目标:解决通用 LLMs 的医疗知识局限性,构建一款医疗建议准确性更高的专用医疗对话模型 ——ChatDoctor。
五、解决思路
六、框架及具体实现
1. 数据集收集与预处理
数据集名称 | 来源 | 规模 | 用途 | 预处理措施 |
---|---|---|---|---|
HealthCareMagic100k | www.healthcaremagic.com | 10 万条 | 模型微调 | 1. 自动过滤过短、无实用信息的对话;2. 人工过滤含错误回答的内容;3. 匿名化处理(删除医患身份信息);4. LanguageTool 修正语法错误 |
iCliniq10k | www.icliniq.com | 1 万条 | 模型测试 | 1. 分层随机选取,确保覆盖多医疗专科;2. 严格删除患者标识信息,符合隐私伦理标准 |
Alpaca 数据集 | 斯坦福大学项目 | 5.2 万条 | 基础对话能力训练 | 无额外预处理,直接用于模型初始微调,获取通用对话技能 |
2. 外部知识数据库构建
-
目的:解决 LLMs “幻觉” 问题(生成错误信息),提升回答可靠性,可处理训练数据中未包含的新医疗术语。
-
构成
:
-
离线数据库:基于 MedlinePlus 构建,包含疾病的
症状、进一步检测项目、治疗方案(含药物)
,示例如下(部分):
- 阑尾炎(Appendicitis):症状为右侧腹痛、腹胀等;检测含腹部 CT、超声等;治疗为阑尾切除术 + 头孢替坦等抗生素。
- 过敏性鼻炎(Allergic rhinitis):症状为鼻痒、流涕等;检测为过敏原测试、血常规;治疗为抗组胺药、鼻用激素等。
-
在线补充源:Wikipedia(可扩展至更可靠的学术期刊等来源)。
3. 自主检索机制设计
- 关键词提取:通过定制提示词(Prompt),从患者问题中提取核心关键词(如 “Mpox 检测” 中的 “Mpox”“检测”),用于后续知识检索。
- 信息检索:基于关键词,用术语匹配检索系统从外部知识数据库(在线 + 离线)中获取 Top-ranked 信息;因 LLM 存在 token 限制,将文本分段后按关键词命中数排序,选取前 5 段。
- 信息整合与回答生成:通过提示词引导模型筛选、总结检索到的信息,最终整合生成精准回答,同时可验证模型基于先验知识生成的回答。
4. 模型训练细节
-
基础模型:采用 Meta 公开的LLaMA-7B 模型(仅解码器结构,基于 1.0 万亿 token 预训练,性能接近 1750 亿参数的 GPT-3)。
-
训练流程
:
- 第一步:用 Alpaca 的 5.2 万条指令数据微调,使模型掌握基础对话能力。
- 第二步:用 HealthCareMagic100k 数据集进一步微调,注入医疗领域知识。
-
训练参数:使用 6 台 A100 GPU 训练 3 小时,总批次大小(total batch size)192,学习率 2×10⁻⁵,训练轮次(epochs)3,最大序列长度 512 token,预热比例(warmup ratio)0.03,无权重衰减。
-
七、实验
1. 评价方法
- 测试基准:以 iCliniq10k 数据集中真实医生的回答作为 “ground truth”(基准答案)。
- 评价指标:采用BERTScore(基于预训练 BERT 计算候选回答与基准答案的余弦相似度,可反映语义相似度,更贴合医疗领域需求),核心指标包括精确率(Precision)、召回率(Recall)、F1 分数。
2. 定量结果对比
评价指标 | ChatGPT | ChatDoctor |
---|---|---|
精确率 | 0.837±0.0188 | 0.8444±0.0185 |
召回率 | 0.8445±0.0164 | 0.8451±0.0157 |
F1 分数 | 0.8406±0.0143 | 0.8446±0.0138 |
注:所有指标中,ChatDoctor 均高于 ChatGPT,且经配对 t 检验验证差异(p 值未列出但实验已验证显著性)。 |
标中,ChatDoctor 均高于 ChatGPT,且经配对 t 检验验证差异(p 值未列出但实验已验证显著性)。* | | |