6. HuatuoGPT (华佗GPT) - Towards Taming Language Models To Be a Doctor.
项目介绍
项目旨在利用大量中文语料库构建一种更为专业的医疗问诊大模型。
项目着眼满足日益增长的在线和医院快速医疗咨询需求(这些咨询通常并不一定需要深厚的医学知识),从而解放专业医生的时间和精力,来处理更复杂的病例。
项目也提供训练医学领域大模型的开放数据,因为医用 大模型 建立高质量的指令与训练数据非常必要,但也很有挑战性。项目采用多种方法构建了医学训练数据,并将其公开。该数据集可与其他数据集相结合,训练自己的医学 “ChatGPT”。
项目重视医疗 LLM 能力仔细评估的重要性,虽然 LLM 在医疗领域潜力巨大,但有必要进行全面的评估和测试,以确保患者的安全和诊断的准确性。
项目的主要成果包括:
- HuatuoGPT SFT数据:打造出了通过监督微调(Supervised FineTuning)能够赋予模型医患友好特点的混合数据集
- HuatuoGPT大模型:基于两种大模型基座,得到两种医用大模型权重,并可在线试用
- HuatuoGPT-7B以百川-7B为基础进行训练
- HuatuoGPT-13B以Ziya-LaMA-13B-Pretrain-v1为基础进行训练。
- 医学评估基准(benchmark): 给出了评估医疗场景中LLMs的一种方法。
项目方法思路如下图:
项目由深圳大数据研究院、香港中文大学(深圳)共同研发。 与2023年4月发布,并且持续更新中。
论文及开源地址
技术报告地址:
https://arxiv.org/pdf/2305.15075.pdf
开源地址:
https://github.com/FreedomIntelligence/HuatuoGPT
使用地址:
作者研发过程中的一些体会:
https://zhuanlan.zhihu.com/p/619602165
数据集构建
如简介所述,设计构建数据集并开放是项目的一个目标,数据包含了两部分, 通过ChatGPT问答提炼后的数据和从实际医患记录中得到的数据。
数据集类型 | 大小 | 简介 | Examples |
---|---|---|---|
基于ChatGPT问答的精炼指令(Distrilled Instruction) | 61,400 | 通过self-instruct生成的医疗指令集, 其中的Seed基础指令是人工产生的。 | :现在该做什么准备手术前的身体检查? ⚕️:在准备手术前的身体检查中,需要进行以下几个步骤:了解病人的病史:了解病人的病史,包括既往病史、手术史、药物过敏史、家族病史等,以便评估手术风险和制定手术方案。进行体格检查:进行全面的体格检查,包括测量身高、体重、血压、心率、呼吸… |
来源于现实的医患问答(Real-world Instructions from Doctors) | 69,768 | 现实场景中医患的一轮咨询问答,医生的回复更加具体,可以解决用户的医疗问题。 | :我有糖尿病血压160-90.该吃什么降压药?空腹血糖8左右。餐后11左右。我有糖尿病血压160-90.该吃什么降压药? ⚕️:阅读你的提问描述,综合分析症状,体征,糖尿病,血压160-90.血压略高,空腹血糖8左右。餐后11左右。血糖略高。口服依那普利,二甲双胍片治疗,新近研究,二甲双胍片,可以抑制食欲,促进肠道蠕动,预防癌症,预防心脑血管病,延长寿命作用。 |
基于ChatGPT的精炼医患对话(Distilled Conversations from ChatGPT) | 68,888 | 通过两个GPT(作为患者和医生)实现进行多轮对话得。对话是基于现实患者病历及相应的诊疗方案。 | :User: 我想问一下大夫,我发烧三天后,第四天全身起了疹子,是怎么回事呢? ⚕️:~您好!感谢您的提问。您的症状可能与幼儿急疹相关。幼儿急疹是一种常见的儿童病,病因为人类疱疹病毒6型或7型感染引起。它的症状包括:发热 n2. 全身起红色疹子3. 口腔内及咽喉部有小水泡4. 病程一般为3-5天左右… :谢谢大夫!除了幼儿急疹还有其他可能吗?我之前有感冒,这和疹子有关系吗? ⚕️:除了幼儿急疹,病毒性感冒和其他病毒感染也有可能引起疹子,但这种情况相对较少见。在您的情况下,感冒可能是一种诱发因素,但主要还是由病毒感染引起的疹子… |
现实中的医患对话(Real-world Conversations with Doctors) | 25,986 | 对应于现实中的多轮医患持续问答对话场景。 | :额头下巴下长满痘痘。就是不知道. ⚕️:你好,有什么困扰吗?我可以为你提供帮助。请问您平时的饮食习惯、睡眠和护肤习惯怎样?化妆品和防晒霜的使用频率如何?还有洁面的频次是怎样的呢? :平时我基本上只是用水乳霜,然后洗面奶只用一种。日常防晒只有在夏天时会使用,我一般用悦诗风吟的洗面奶以及AHC的护肤产品,这些都比较温和。 ⚕️:谢谢您的描述。首先,建议您停用化妆品和普通护肤品,使用特定的药妆品牌,如雅漾和理肤泉的洁面泡沫或洁面乳,并避免使用热水或肥皂清洗面部。建议您外用阿达帕林凝胶涂于面部痤疮,一般夜间使用,涂抹十五分钟之后外用医学护肤品比如雅漾、薇资、理肤泉清爽型的舒缓面霜,或者是维生素e乳膏… |
数据集已开放
https://huggingface.co/datasets/FreedomIntelligence/HuatuoGPT-sft-data-v1
模型训练及使用
HuatuoGPT医疗模型的构建采用了两步:
- 首先是采用上述构建的医用数据集以监督微调SFT方式对基础大模型底座进行预训练,因为每类中,都包含了指令数据和会话数据,可以使得基础模型具有医疗指令跟踪和交互式诊断的能力,训练采用了Accelerate框架;
- 通过AI反馈进行强化学习(RL with AI Feedback), 项目设计训练了一种Reward Model,以便使得AI反馈能够对齐医患场景及大模型的要求。 项目使用真实的指令和对话作为训练数据,从微调模型反馈中进行多个采样。对于多回合对话,提供对话历史,以调整模型的响应生成, 然后由LLM(如ChatGPT)对这些回答进行评分(考虑信息性、连贯性、对人类偏好的遵守以及基于给定的事实准确性真正的医生诊断)。LLM会评估每个响应, 并分配一个分数, 然后使用这个配对响应数据来训练Reward Model,然后通过强化学习策略设计,使得问答能够更好地对齐简要问答及多轮对话的场景。
项目给出了简要的训练脚本及效果评估脚本。
开放程度
项目开放了构建的医患数据集,也给出了SFT的示例调整脚本, 以及评估示例脚本。
项目技术报告是基于BLOOM大模型进行的训练,但项目git库中发布的模型权重或者权重Delta却是基于百川和Ziya-Lalama的,表明整体在持续优化中。
项目技术报告对数据集构建、训练及评估都做了相对清楚的描述。