嚴華 发表于 2025-4-12 07:22:37

[论文阅读]PMC-LLaMA: Towards Building Open-source Language Models for Medicine

PMC-LLaMA:构建医学开源语言模型
择要

最近,大语言模型在自然语言理解方面展现了非凡的本领。尽管在日常交流和问答场景下表现很好,但是由于缺乏特定领域的知识,这些模型在必要准确度的领域经常表现不佳,例如医学应用。本文中,我们描述了构建一个专门为医学应用设计的强大的开源语言模型的流程,我们称其为PMC-LLaMA。我们的贡献有以下三方面:(i)我们体系性地调研了通用基础语言模型到医学领域的顺应过程,这包罗以数据为中央的知识注入,通过整合480万篇生物医学学术论文和3万本医学教科书,以及针对特定领域指令的全面微调;(ii)我们为指令微调贡献了一个大规模的全面的数据集。这个数据集结合了医学问答,推理原理和对话,统共包含202M个token;(iii)我们进行了彻底的消融研究,以证明每个发起的组件的有效性。在对各种公共医疗问答基准进行评估时,我们的仅由130亿个参数组成的轻量级PMC-LLaMA表现出了优异的性能,甚至超过了ChatGPT。全部的模型代码和数据集可以在下面的链接中找到:https://github.com/chaoyi-wu/PMC-LLaMA
先容

大型语言模型(llm)的快速发展,例如OpenAI的ChatGPT (OpenAI 2023b)和GPT-4 (OpenAI 2023a)已经切实改变了自然语言处理的研究,引发了AI在大量日常场景中的应用。不幸的是,目前GPT系列的训练细节和模型架构仍是未知的。一些开源大模型,例如,LLaMa系列在通用领域与chatgpt相比显示出一样平常的性能。然而,尽管大模型在日常对话中表现得很纯熟,但在必要高精度的医学领域,他们往往会产生看似准确但会导致错误的结论,这些可能会高度致命。我们料想这是因为他们缺乏全面的医学知识。
现有的工作已经探索了几种使LLM顺应医学领域的方法,例如Med-Alpaca,Chat-Doctor和MedPALM-2。此中MedPALM-2是唯一成功超越Chatgpt表现的工作,但是他们的训练细节,训练数据,模型架构仍然是未知的。因此,对于大模型在医学领域顺应的体系研究,特殊是在开源社区中,还必要进一步探讨。
我们的目的是从以下几个方面体系地将一个开源的通用LLM,即LLaMA,应用于医学领域。起首,采取以数据为中央的医学专用知识注入方法,建立了大规模自由文本医学语料库的语言模型。我们主张语言模型可以在这一步调中积聚足够的医学知识,并为特定领域的复杂术语建立更好的嵌入空间。其次,增强所提出模型的推理本领。这使得模型能够将其医学知识与所提供的病例信息联系起来,并提供合理的建议。末了,进步大模型的对齐本领。与各种指令的鲁棒对齐有助于有效的顺应各种使命。
总得来说,本文中我们体系性得构建了一个医学大模型,通过以数据为中央得知识注入和特定医疗指导微调,然后我们发布了一个开源的轻量级医学专用语言模型PMC-LLaMA。特殊地,我们起首收集并构建了一个医学专用预料库,名为MedC-K,由4.8M篇生物医学论文和30k本书构成用来进行知识注入。然后,我们在一个新的医学知识感知指令数据集(称为MedC-I)上采取特定于医学的指令调优,该数据集由医学QA、推理和会话组成,统共有202M个tokens。我们在各种医疗QA基准上评估了PMC-LLaMA,超过了ChatGPT和LLaMA-2,如图1所示。
https://i-blog.csdnimg.cn/direct/29406c9afcc147aeaf8e82d6d63e3f49.png
tips:13B模型也能取得不错得效果,但是如果用更大得模型是否可以取得更好得效果呢?要看领域知识和问题是否超过目前得模型解空间吧?
相关工作

大语言模型 最近,大型语言模型(LLM) (OpenAI 2023b,a;Anil, Dai等。2023;Du et al. 2021),在自然语言处理领域引起了极大的关注。例如,OpenAI在ChatGPT和GPT-4方面的进步展示了在各种使命中的卓越本领,包罗文本生成、语言翻译、问题回复等等。然而,关于他们的训练方法和权重参数的复杂细节仍未公开。LLaMA (Touvron et al. 2023a)是基础语言模型的开源替代方案,参数范围从70亿个到650亿个不等。鉴于这些进步,人们对为特定的生物医学领域定制语言模型产生了浓厚的兴趣。这些模型大多是在小型医学语料库上使用LLaMA进行快速调优,导致缺乏全面的医学知识整合。
指令调优为了让llm 遵照自然语言指令并完成实际世界的使命,指令调优已被广泛用于对齐。这涉及对模型进行微调,使其在一系列通过指令描述的使命集合上表现更佳,从而有效提升零样本和少样本的泛化本领。基于可公开访问的语言模型,Alpace (Taori et al. 2023)和Vicuna (Chiang, Li等人,2023),通过对机器生成的指令跟随样本进行微调,显示出良好的性能。在医疗领域,Chat-Doctor(云翔等,2023)和Med-Alpaca (Han, Adams et al. 2023)针对医疗问答和对话应用步调进行指令调解。值得注意的是,Med-PaLM (Singhal et al,2022)代表了医学领域法学硕士的顶峰,在强大的 PaLM模型(具有5400亿个参数,由谷歌推出的多模态模型,2023年5月发布了PaLM2)上进行了密集的指导调解。然而,它的代码和数据仍然无法向公众开放。
tips:Palm模型目前看来本领并不是很强,可以在这里看看排行榜https://lmarena.ai/
医学基础语言模型除了指令调解之外,在医学基础模型的训练方面也做了大量的积极,例如BioBert,BioMedGPT等(Lee et al. 2020;Zhang et al. 2023;Luo et al. 2022)。然而,这些模型表现出肯定的局限性,起首,大多数特定领域的模型都是专门在医学语料库上训练的。缺乏对医学以外的各种知识领域的接触可能会拦阻模型执行推理或上下文理解的本领;其次,这些模型在模型规模上是有限的,并且主要是基于BERT设计的,因此限定了它们在zero-shot学习下的大量下游使命的实用性。本研究旨在通过知识注入将通用大语言模型(LLM)适配于医学领域,并在此基础上进行医学专属的指令微调,以办理上述两个局限性。
问题定义

在本文中,我们的目的是体系地研究将预训练的基础语言模型转向知识密集型领域(即医学)的过程。训练过程可分为两个阶段:第一阶段,以数据为中央的知识注入阶段,目的是用医学基础知识丰富语言模型;第二,针对特定医疗的指令调解阶段,调解模型以与临床用例保持划一。在训练阶段,假设文本输入是一个token序列,例如,                                 U                         =                                              u                               1                                    ,                                       u                               2                                    ,                            .                            .                            .                            ,                                       u                               N                                                 \mathcal U={u_1,u_2,...,u_N}                  U=u1​,u2​,...,uN​,此中每个                                             u                            i                                       u_i                  ui​是一个文本token,N是总序列长度,训练目的是最小化自回归损失,主要区别在于是盘算整个序列上的损失还是只盘算子序列上的损失,如下所述。
以数据为中央的知识注入对于知识注入步调,我们只需最小化默认的自回归损失,全部关于医学知识的自由格式文本都可以使用,以便模型积聚足够的医学特定知识上下文,公式为
                                       L                            (                            ϕ                            )                            =                            −                            ∑                            l                            o                            g                            ϕ                            (                                       u                               i                                    ∣                                       u                                           <                                  i                                                 )                                  L(\phi)=-\sum log\phi(u_i|u_{<i})                     L(ϕ)=−∑logϕ(ui​∣u<i​)
此中                                             u                                       <                               i                                                 u_{<i}                  u<i​指示标志出现在索引i之前,Φ表示我们的模型。
医学特定指令调优 在此阶段,将token序列进一步拆分为指令                                 I                              \mathcal I                  I和相应                                 R                              \mathcal R                  R,前者是为了模仿用户的查询,因此在训练时忽略损失,记为:
                                       L                            (                            ϕ                            )                            =                            −                                       ∑                                                      u                                     i                                              ∈                                  R                                                 l                            o                            g                            ϕ                            (                                       u                               i                                    ∣                                       u                                           <                                  i                                                 ,                            I                            )                                  L(\phi)=-\sum_{u_i \in R} log\phi(u_i|u_{<i},\mathcal I)                     L(ϕ)=−ui​∈R∑​logϕ(ui​∣u<i​,I)
在推理时,常见的用例是对话,此中用户通常将问题作为指令提供                                 I                              \mathcal I                  I,模型的输出作为答案。
数据集构建

为了支持我们的两阶段训练,即以数据为中央的知识注入和针对医学的指令调解,我们在这里具体先容了构建高质量语言数据集的过程。
https://i-blog.csdnimg.cn/direct/37f92f5c703844a1beae3501a5223e5d.png
数据集1:基础医学知识

为了引导通用基础语言模型顺应医疗场景,我们提出起首进行以数据为中央的知识注入,旨在让模型接触医学相关的术语和定义。我们主要关注两类关键的数据泉源,即生物医学论文和教科书。
论文 学术论文作为一种名贵的知识资源,自然包含着高质量、前沿的医学知识。我们从S2ORC开始(Lo et al. 2020),一个包含8110万篇英文学术论文的数据集,然后根据是否具有相应的PubMed Central (PMC) id挑选出与生物医学相关的论文。末了,大约有480万份生物医学论文剩余,总计超过750亿个tokens。
书籍 我们从开放图书馆、大学图书馆、知名出书社等各种渠道收集了30K本教科书,涵盖了广泛的医学专业,如图3所示。对于预处理,我们起首从图书PDF中提取文本内容,然后通过重复数据删除和内容过滤进行数据洗濯。具体来说,我们消除了url、作者列表、多余信息、文档内容、参考文献和引用等无关元素。此外,我们还删除了段落中对图像和表格的任何引用,例如,“图5”。1”。在这个彻底的清理过程之后,大约还剩下4B个tokens。
https://i-blog.csdnimg.cn/direct/01a47323f8794d69a7a49ea050633cc8.png
组合 这两个语料库包含差别类型的医学知识,而论文主要捕获前沿的见解,书籍捕获更根本的医学知识,这对于预训练的通用语言模型更为重要。因此,在混合这两个数据集进行知识注入训练时,我们在每个训练批次中使用15:4:1的比例,即我们的意思是更多地强调书籍中的tokens。具体来说,我们从书籍中采样更多的tokens,确保它们每批占用15个部门,从“论文”中采样更少的tokens,以便它们占用每批4份。对于剩下的1份,我们从通用语言语料库RedPajama-Data(Computer 2023)中进行采样,以形成完整的批处理。这主要是为了避免在广泛的知识注入后对先前获得的一样平常文本知识的劫难性遗忘。
知识注入训练到目前为止,我们已经构建了一个大规模的基础医学知识语言数据集,称为MedC-K。利用这些语料库,我们通过自回归训练进行以数据为中央的知识注入,得到了一个医学语言模型,命名为                                 P                         M                         C                         −                         L                         L                         a                         M                                 A                            K                                       PMC-LLaMA_K                  PMC−LLaMAK​,因为最大数目的令牌来自PubMed Central学术论文。
数据集2:医学指令

在这部门,我们继承进行指令调优,目的是通过利用                                 P                         M                         C                         −                         L                         L                         a                         M                                 A                            k                                       PMC-LLaMA_k                  PMC−LLaMAk​模型中嵌入的医学知识来指导模型相应各种指令。一样平常来说,我们的指令调优数据集由三个主要部门组成,即医学咨询会话、医学根本原理QA和医学知识图提示。
医学对话 日常生存中存在着多种多样的医患对话,患者提出的问题自然可以作为指导,大夫的回复可以作为真值。我们从Med-Alpaca (Han, Adams et al. 2023)和ChatDoctor (Yunxiang et al. 2023)收集的数据开始,进一步将提供的指令扩展到各种同义句中,以进步模型对差别指令的鲁棒性。具体来说,我们使用如下提示词进行GPT-4查询:
https://i-blog.csdnimg.cn/direct/538fb22341ac4862aa895e7db709c29a.png
此中{指令种子}表示ChatDoctor或MedAlpaca提供的指令,查询可以重复,直到设定的提示数。在训练时,我们从指令库中随机选择一条指令,模仿真实用户的输入,避免对特定指令模板的过分拟合。
医学根本原理QA 除了日常对话,我们还思量用专业的医学知识为我们的模型配备推理本领。我们从开源医学多选择问答数据集的训练集开始,例如USMLE (Jin, Pan等),PubMedQA (Jin et al. 2019)和MedMCQA (Pal;Umapathi et al. 2022)。尽管此中的问题要求医学专业知识,但大多数这些数据集只包罗简单的选择,缺乏具体的推理指导。为了补充这些信息,我们通过提示ChatGPT (OpenAI 2023b)用于因果关系分析。具体来说,给定一个QA对,我们查询ChatGPT以获得根本原理输出(查抄补充细节),并将输出作为图2底部所示的结构化格式的解释。
医学知识图谱提示 除了上述数据,我们也思量利用医学知识图UMLS (Lindberg, Humphreys, and McCray 1993),以共同临床大夫的履历。具体而言,为了将医学术语与其各自的知识描述或对应关系联系起来,我们构建了QA对来翻译公共知识图。医学知识图谱主要包含实体描述和实体关系两种类型。我们为它们添加了两个差别的提示,如图2底部所示,这要求模型输出某个实体的描述或猜测两个实体之间的关系。
针对医学的指令调优通过将上述三个部门组合在一起,我们形成了一个大规模的、高质量的、特定于医疗的指令调优数据集MedCI,它包含202M个tokens。我们进一步在这个数据集上调解                                 P                         M                         C                         −                         L                         L                         a                         M                                 A                            k                                       PMC-LLaMA_k                  PMC−LLaMAk​,得到我们的最终模型——PMC-LLaMA。
实行

训练细节

我们起首在开源LLaMA模型上进行知识注入,优化自回归损失。具体来说,在训练时,设置最大上下文长度为2048,批巨细为3200,模型使用AdamW优化器(Loshchilov and Hutter 2017)进行训练,学习率为2e -5。我们采取了全分片数据并行(FSDP)加快计谋,bf16(brain floating point)数据格式和梯度查抄点(Chen et al. 2016)。由于我们在每批中从图书中采样更多tokens,因此模型将更早地查看完全部图书tokens。因此,我们在这里定义了一个epoch来查看全部的书籍token,而不是查看全部的混合token。使用32个A100 gpu对模型进行5次知识注入训练。然后我们在MedC-I上进行医疗特定指令调优,使用8个A100 gpu进行3个epoch, 256批处理巨细。注意,在指令调优阶段,epoch指的是遍历全部序列。
基准

在文献中,权衡医学语言模型本领的主要方法是基于多项选择题的回复,以准确性为主要权衡标准。
按照惯例,我们采取三个著名的医学问答(QA)基准进行评估。


[*]PubMedQA (Jin et al. 2019)是一个从PubMed择要中收集的生物医学质量保证数据集。PubMedQA的使命是用yes/no/- maybe来回复研究问题,这可以看作是一个选择题。它分为三个子集:1k对人工标志对(PQA-L), 61.2万对未标志对(PQA-U)和211.3万对人工生成对(PQA-A)。根据之前的工作(Diao, Pan et al. 2023),我们将PQA-A视为训练集,PQA-L作为测试集,并丢弃PQA-U部门。
[*]MedMCQA (Pal, Umapathi et al. 2022)是一个选择题数据集,泉源于两个印度医学院入学考试AIIMS和NEET-PG的模仿考试和过去的考试(Pal, Umapathi et al. 2022)。训练分割包含182,822个问题,测试分割包含4183个问题。每个问题有4个选项。
[*]USMLE (Jin, Pan et al. 2021)是一个选择题数据集(每个问题4个选择),基于美国医师执照考试。该数据集收集自专业医学委员会考试,涵盖三种语言:英语、简体中文和繁体中文,分别包含12,724、34251和14,123个问题。在这里,我们使用英语部门,并按照官方分别将其分为10,178个问题用于训练,1273个问题用于验证,1273个问题用于测试。
基线模型

LLaMA (Touvron et al. 2023a)。LLaMA是使用最广泛的开源语言模型,它已经在一个大型文本语料库上进行了训练,只有自回归学习,即不涉及指令调优。
LLaMA-2 (Touvron et al. 2023b)。LLama -2是LLaMA的改进版本,已经进一步调解了指令。据报道,它最大的版本(70B)对自然场景的表现是开源LLM中最好的。
ChatGPT (OpenAI 2023b)。ChatGPT是OpenAI于2022年11月发布的贸易模型,在包罗医学在内的各个领域的广泛NLP使命上表现出色。请注意,由于ChatGPT的确切细节是保密的,我们遵照一样平常的假设,即ChatGPT在模型巨细上与GPT-3大抵类似(175B) (Kung et al. 2022)。
Med-Alpaca (Han, Adams et al. 2023)。Med-Alpaca是使用医疗指导数据在Alpaca (Taori et al. 2023)上进一步微调的模型。他们专注于协助医学对话和问答的使命。
Chat-Doctor (Yunxiang et al. 2023)。Chat-Doctor是一种针对康健助理的语言模型,旨在为用户提供医疗信息、建议和指导。对于训练,它利用了基于对话的指令调优数据。
评价设置

在本节中,我们将描述在QA基准测试中比较上述语言模型的评估细节。请注意,我们并没有声称所呈现的比较是完全公平的,因为许多训练细节,例如,数据,架构仍然未公开用于贸易模型。因此,我们仅将这些基线模型作为参考,而更侧重于展示我们构建强大的医学语言模型的过程。我们的评估设置可以分为两种类型:特定使命微调评估和零击指令评估
特定于使命的微调评估。在此评估设置中,我们使用三个QA训练集的组合来进一步微调语言模型,然后对其进行评估。对于没有指令调优的模型,例如LLaMA和PMC-LLaMAK,我们默认采取这个评估设置。
零击指令评估。在这个评估设置中,我们通过给出一个医学QA指令来直接测试模型,例如,“根据问题和选项做出选择。”,而无需进行任何特定使命的微调。大多数模型都在此设置下进行评估,即LLaMA-2, MedAlpaca, Chat-Doctor, ChatGPT和我们自己的PMC-LLaMA
效果

在本节中,我们将先容实行效果。起首,我们对医疗质量保证基准进行了彻底的消融研究,以证明我们训练步调中差别组成部门的有效性。然后对差别的SOTA方法进行了比较。末了,我们提出定性案例研究。
消融研究

如表1所示,我们体系地研究了差别的设计选择对各种医疗QA基准的影响,例如模型规模的影响、以数据为中央的知识注入、针对医疗的指令调优。
模型的规模。在医学语料库中也可以观察到标准定律(Kaplan et al. 2020),例如,如表所示,当模型巨细从7B切换到13B时,全部基准的性能都有所进步。这一现象在经过进一步的医学基础知识训练的基线LLaMA模型和PMC-LLaMAK都有表现。
以数据为中央的知识注入。与基线7B LLaMA模型相比,整合生物医学论文后MedQA的性能从44.54%进步到44.70%,MedMCQA的性能从48.51%进步到50.54%。而加入书籍进行训练后,性能有了明显的进步,分别在MedQA, MedMCQA和PubMedQA上获得1.02%、2.94%和1.2%的准确率
进步。这两项观察都显示了注入基础医学知识的重要性。
医学特定指令调优我们只从根本的QA数据开始指令调优。在这种情况下,既然只思量QA使命,与特定使命调优的区别仅在于是否给出理由句作为监督信号。我们观察到,仅仅引入推理过程的示例,相较于在平凡选项数据上进行使命特定微调,可以提升问答使命的表现,在 MedQA 数据集上提升了 1.17%。
此外,将对话与根本原理QA集成以进行指令调优可以产生显著的增强,将MedQA的性能从49.32%进步到54.43%。这阐明了题型的多样性在指导调解阶段所起的关键作用,因为全部涉及的问题都将限定在医学选择测试中,没有对话。此外,知识图谱的引入使MedQA数据集进一步进步了1.93%,证明了使用明确的阐明来强调关键医学概念的重要性。
https://i-blog.csdnimg.cn/direct/5471cfde14a749c8b7d17613c0cb574c.png
与基线比较

在表2中,我们将我们的模型与SOTA基线模型在三个QA基准数据集上进行了对比分析,以进行评估。我们还展示了一个定性的案例研究来展示会话和逻辑推理本领。
医疗问答本领。而在医疗QA基准测试上,PMCLLaMA与其他大型语言模型相比,在大多数方面都取得了优异的结果,均匀准确率从54.97%进步到64.43%,甚至超过了功能强大的ChatGPT,尽管包含的参数明显淘汰。
零样本案例分析(Zero-shot Case Study)。在图4中,我们展示了来自 PMC-LLaMA 和 ChatGPT 的零样本猜测的定性示例,用于验证猜测质量,涵盖了医患对话和推理式问答使命。图6a中的问题是在我们数据收集之后才在线提出的,因此两个模型在训练过程中都未见过该问题。基于患者的描述,PMC-LLaMA 和 ChatGPT 都辨认出了反复性尿路感染(UTI)的症状,但 PMC-LLaMA 提出了进行敏感性测试的具体建议,而 ChatGPT 给出的则是更笼统的建议(观察潜在原因)。图6b展示了一个微生物学的问答案例。可以看出,PMC-LLaMA 不但给出了正确答案,还简要分析了错误选项,形成了更为全面的推理过程。图6c 展示的是一个聚焦于药理学知识的案例。PMC-LLaMA 和 ChatGPT 都很好地理解了利福平(Rifampin)的疗效及其副作用机制。
https://i-blog.csdnimg.cn/direct/6e8a84040dac47cc9b3071876c17ca21.png
总结

本文体系地研究了基于开源大型语言模型的医学专用大型语言模型的构建过程,包罗以数据为中央的知识注入和医学专用指令调优。因此,我们提出的PMC-LLaMA是第一个开源的医疗特定语言模型,在各种医疗基准测试中表现出卓越的性能,超过ChatGPT和LLaMA-2的同时参数少得多。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: [论文阅读]PMC-LLaMA: Towards Building Open-source Language Models for Medicine