目录
研究背景及意义
大语言模型(large language models,LLMs),包括ChatGPT、LLaMA等,在理解和响应人类指令方面表现突出,对自然语言问答影响深远。然而,尽管这些LLMs在许多任务中表现出色,但由于缺乏领域专业知识,它们在特定专业领域(例如,生物医学领域)的表现往往受到限制——垂直领域受限。在涉及此类专业领域时,它们的知识往往不足,在这些领域中,准确和特定的专业知识至关重要,这可能导致诊断精度、药物推荐和医疗建议欠佳,从而可能危及患者。为解决这个问题所做的努力很少,现有方法主要侧重于提供LLMs从对话中获取的医疗信息,在这些对话中,人为错误可能会更频繁地发生。此外,LLMs通常接受英语培训,限制了其对与英语有很大差异的语言(例如中文)的理解和反应能力,使它们在中文环境中的直接应用并不太理想,尽管面临挑战,但医疗LLMs仍具有巨大的潜力,在未来帮助诊断、咨询、药物推荐等方面提供巨大的价值。
国内外研究现状
基于大语言模型的医疗问答系统在国内外的研究现状表现出了积极的发展趋势,但真正能投入使用的医疗大语言模型很少,基本都在理论实验阶段,但这并不意味着其发展前景受限,由于医疗领域的高度专业性与必须安全性,国内外研究者们正追求更为可用的医疗大模型。
国际上,研究者们已经开发了多个具有影响力的医学语料数据集,如MedQA、MedMCQA、MultiMedQA和PubMedQA等,这些数据集覆盖了从医学考试真题到在线医学问答数据等多种类型,为医学领域大模型的训练和评估提供了丰富的资源。这些数据集不仅支持大模型利用广泛的医学领域知识回答问题,还有助于提升问答系统的稳健性和泛化能力。在医疗大语言模型方面,如OpenMEDLab、ChatDoctor、Med-PaLM以及Med-PaLM2等模型已提出并取得突破性进展。
在国内,中文医学语料数据集的建设也取得了显著成果,例如MLEC-QA、CMExam和CMB等数据集,它们涵盖了中国执业医师考试题目和临床检查数据,为中文医学领域的大模型提供了评测基准。这些数据集的建设有助于改进大模型在处理中文医学问答任务中的准确率和效率。其医疗大语言模型包括HuaTuo、Zhongjing、BianQue、Sunsimiao(其命名多为中国古代十大名医)等模型的实现使得中文医疗大语言模型的发展进一步提升。
在技术实现方面,研究者们采用了深度学习技术,特别是Seq2Seq算法,来构建答案生成模型,并通过检索式与生成式两种方法的综合应用,以及医疗知识库的构建,来提升医疗问答系统的性能。此外,还有研究提出了将大语言模型与知识图谱相结合的医学问答方法,这种方法不仅提升了医学智能问答质量,还为医学问答提供了证据溯源支持。
研究内容
基于大语言模型的医疗系统关键的研究内容和进展:
-
多语言医疗语料库的构建:为了克服非英语医疗信息处理的挑战,研究者们创建了包含255亿个tokens的多语言医疗语料库MMedC,覆盖多种语言和地区,为多语言医疗大模型的训练和评估提供了基础4。
-
多模态数据处理:医疗大模型不仅处理文本数据,还涉及图像、声音等多种模态的数据。例如,通过分析医学影像数据,模型能够辅助诊断疾病,如通过超声图像识别甲状腺结节的良恶性5。
-
临床决策支持:医疗大模型在辅助医生进行临床决策方面展现出潜力,包括治疗方案的选择、手术模拟、患者监护等。这些模型通过分析患者的医疗记录和实时数据,提供个性化的治疗建议。
-
伦理、公平性和透明度:随着医疗大模型的应用越来越广泛,研究者们也开始关注模型的伦理问题,包括数据隐私保护、算法的可解释性以及模型决策的透明度和公平性。
-
跨学科研究:医疗大模型的研究需要计算机科学、医学、统计学等多个学科的合作,以确保模型的准确性和可靠性。例如,通过整合基因组学、蛋白组学和影像组学等多组学数据,进行更全面的疾病分析和治疗。
-
个性化医疗:医疗大模型有助于实现个性化医疗,通过分析患者的遗传信息、生活习惯和环境因素,为患者提供定制化的预防、诊断和治疗方案。
-
智能问答系统:医疗大模型也被应用于开发智能问答系统,这些系统能够理解患者的问题并提供专业的医疗建议,同时也能够作为医院的向导,提供导航和预约服务。
-
自动医疗报告生成:研究者们探索了利用大模型自动生成医疗报告,如病理报告、手术报告等,以提高医疗文档处理的效率。
研究方案与技术路线
大语言模型的基本原理
大语言模型是自然语言处理(NLP)领域的一类先进模型,它通过深度学习和机器学习技术来理解和生成自然语言。大语言模型通常在大规模的文本数据集上进行训练,这些数据集可能包含书籍、文章、网页和其他多种形式的文本。通过这种方式,模型可以学习到语言的统计规律和语义信息。模型通常基于深度学习架构,如Transformers或其变体,这些架构能够处理序列数据,并捕捉到单词、短语和句子之间的复杂关系。Transformer架构中的自注意力(Self-Attention)机制使得模型能够在处理一个单词或短语时考虑到整个文本序列中的其他部分,从而更好地理解上下文。
大语言模型通常包含多个层次,每一层都由多个神经元组成,这些层次可以捕捉到不同级别的语言特征,从单词的拼写和语法到更抽象的概念和语义。模型通常采用两阶段训练过程。在预训练阶段,模型在大量无标签数据上进行训练,学习语言的通用特征。在微调阶段,模型在特定任务的有标签数据上进行进一步训练,以提高在该任务上的性能,如本文的医疗大语言模型,模型能够根据输入的上下文生成或理解文本。这意味着模型可以根据之前的对话或文本内容来调整其输出,以保持语义的连贯性和相关性,这不仅能够生成流畅、连贯的文本,还能够理解和解释输入的文本,这使得它们可以用于各种NLP任务,如文本摘要、机器翻译、情感分析和问答系统。随着时间的推移,大语言模型可以通过持续学习不断更新其知识库,以适应语言的变化和社会的发展。另外,一些大语言模型还被设计成能够处理多种类型的数据,如文本、图像和声音,这使得它们可以应用于更广泛的应用场景。
大语言模型的这些原理使得它们在理解和生成自然语言方面表现出色,但同时也带来了一些挑战,如模型的解释性、偏见的消除和隐私保护等问题。
大语言模型的部署
从零到一开发一个自研的大语言模型几乎不可能,但是随着大语言模型的快速发展,开源的大语言模型如雨后春笋般出现在市面上,我们可以通过部署这些开源的大语言模型完成自己的大语言模型的使用,开源模型如LLaMA提供了不同规模的版本,以适应不同的硬件和性能需求。商业模型可能提供更多的支持和服务,但可能涉及更高的成本。
常用于部署大语言模型的开源平台:
大语言模型微调
大语言模型(LLMs)的微调是一个将预训练模型在特定数据集上进一步训练的过程,目的是优化模型在特定任务上的性能。微调的核心步骤包括数据准备、选择基础模型、设置微调参数和微调流程。在数据准备阶段,需要选择与任务相关的数据集,并进行预处理,如清洗、分词、编码等。选择基础模型时,可以选择如BERT、GPT-3等预训练好的大语言模型。在设置微调参数阶段,需要设定学习率、训练轮次(epochs)、批处理大小(batch size)等超参数,并根据需要设定其他超参数,如权重衰减、梯度剪切等。微调流程包括加载预训练的模型和权重,根据任务需求对模型进行必要的修改,选择合适的损失函数和优化器,使用选定的数据集进行微调训练,包括前向传播、损失计算、反向传播和权重更新。
微调的方法可以分为全量微调和参数高效微调(PEFT)。全量微调会调整预训练模型的所有参数,而参数高效微调技术仅优化部分参数,以实现快速且低成本的迁移学习。参数高效微调技术包括Prefix Tuning、Prompt Tuning、Adapter Tuning、LoRA等方法。
在微调过程中,还可以采用强化学习从人类反馈(RLHF)的方法,通过人类反馈作为奖励信号来训练模型,提升模型生成文本等内容的质量,使其更符合人类偏好。如:Zhongjing: Enhancing the Chinese Medical Capabilities of Large Language Model through Expert Feedback and Real-world Multi-turn Dialogue
在实际应用中,微调可以使大语言模型更好地适应特定领域的需求和特征(医疗领域),通过引入特定领域的数据集进行微调,大模型可以学习该领域的知识和语言模式,从而在特定任务上取得更好的性能。
常用的微调技术有:
SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法等,具体技术细节不做过多解释。如:DoctorGLM: Fine-tuning your Chinese Doctor is not a Herculean Task
大语言模型提示工程(Prompt)
在不修改模型本身参数(微调)的情况下,模型涌现能力极度依赖对模型的提示过程,即对同样一个模型,不同的提示方法将获得质量完全不同的结果。而一个完整的用户和大语言模型的交互流程,也被称为大语言模型的提示工程(Prompt Engineering),因此提示工程这一专门用于激发大语言模型涌现能力的技术就变得尤其重要。从技术角度来说,提示工程其实是一个易学习门槛很低、但同时技术难度上限又很高的技术。提示工程简单的应用的话,只需要添加一些提示词后缀、或者把问题描述的更加详细即可,而复杂的提示工程,则会涉及多段嵌套提示和极具创造力的围绕中间结果的问答设计等。相关的模型如:Towards Expert-Level Medical Question Answering with Large Language Models
下图为吴恩达的提示工程笔记:
大语言模型RAG技术
尽管通过微调技术可实现大语言模型的垂直领域应用,但是在特定领域或知识密集型任务中,尤其是在处理超出其训练数据或需要当前信息的查询时,常会产生“幻觉”现象。为了克服这些挑战,检索增强生成(RAG)通过从外部知识库检索相关文档chunk并进行语义相似度计算,增强了LLM的功能。通过引用外部知识,RAG有效地减少了生成事实不正确内容的问题。RAG目前是基于LLM系统中最受欢迎的架构,有许多产品基于RAG构建,使RAG成为推动聊天机器人发展和增强LLM在现实世界应用适用性的关键技术。
虽然大型语言模型 (LLM) 在广泛的医学问答 (QA) 任务中取得了最先进的性能,但它们仍然面临着幻觉和过时医学知识的挑战。检索增强生成(RAG)是一种很有前途的解决方案,并已被广泛采用。然而,RAG 系统可能涉及多个灵活的组件,并且缺乏有关各种医疗目的的最佳 RAG 设置的最佳实践,例如:MIRAGE:一个基于医学搜索增强生成(RAG)的框架。
LangChain
LangChain是一个开源的Python库,它提供了构建基于大模型的AI应用所需的模块和工具。通过LangChain,开发者轻松地与大语言模型(LLM)集成,完成文本生成、问答、翻译、对话等任务。LangChain降低了AI应用开发的门槛,让任何人都可以基于LLM构建属于自己的创建应用。
包括但不限于上文所提到的提示工程以及RAG技术均可通过该框架实现,这极大提高了应用大语言模型的效率,实现了大语言模型使用的便捷性。
多模态大语言模型
多模态大语言模型(Multimodal Large Language Model, MLLM)主要是指那些能够处理和整合多种模态信息(比如文本、图像和音频)的大语言模型。
将以视觉-语言大语言模型为例,对相关技术进行介绍,类似的技术也可扩展到其他模态(如音频-语言)。通常来说,多模态大语言模型主要由一个用于图像编码的视觉编码器和一个用于文本生成的大语言模型所组成,进一步这两个模型通过连接模块进行组合,从而将视觉的表示对齐到文本语义空间中。在文本生成的过程中,图像首先被分割成图像块(Patch),然后通过图像编码器和连接模块转换成图像块嵌入,以得到大语言模型可以理解的视觉表示。随后,图像块嵌入和文本嵌入进行拼接并输入到大语言模型中,使大语言模型可以自回归地生成文本回复。
多模态大语言模型的训练过程主要包括两个阶段:视觉-语言对齐预训练和视觉指令微调。
视觉-语言对齐预训练
为了训练多模态大语言模型,一般重用已有的视觉编码器和大语言模型。由于视觉模型和语言模型之间存在较大的语义空间差异,因此视觉-语言对齐预训练旨在利用大规模“图像-文本对”(简称图文对)进行端到端训练,进而对齐两种不同的语义空间。为了提高对齐性能,选择合适的训练策略和数据非常重要。
视觉指令微调
在视觉-语言对齐预训练之后,下一阶段需要进行视觉指令微调,旨在提高多模态大语言模型遵循指令和解决任务的能力。一般来说,视觉指令微调的输入包括一张图像和一段任务描述文本,输出是对应的文本回复。为了构造高质量的视觉指令数据,可以将图像自带的描述文本输入给大语言模型(如GPT-4),通过特定的提示(如“根据图像描述生成一段图像相关的对话”)来引导大语言模型自动化地合成视觉指令;或者基于已有的视觉-语言任务数据集,利用特定的问题模板将原有任务数据转化为视觉指令。
代表性的多模态大语言模型:
而近期使用到视觉的医疗大模型如:XrayGLM
展望总结
医疗大模型在个性化医疗方面的应用已经取得了一些成功案例,这些案例展示了大模型在提升医疗服务效率、赋能临床决策、推动行业智能化转型方面的潜力。例如,百度灵医大模型利用其强大的数据处理能力,在200多家医疗机构中提升诊断的准确性和效率。医联推出的MedGPT大模型,基于Transformer架构,使用超过20亿的医学文本数据进行预训练,致力于实现疾病预防、诊断、治疗到康复的全流程智能化诊疗。圆心科技的源泉大模型通过为每个用户设置标签,提供定制化的患者管理和服务,包括药物依从性、联合用药预测以及疾病康复管理,为患者生成定制化的疾病科普和药品服务。晶泰科技的XpeedPlay平台利用大模型技术加速药物研发流程,而智源研究院研发的全原子生物分子模型OpenComplex 2能有效预测生物分子复合物,提升药物研发效率。北京天坛医院联合北京理工大学团队合作推出的"龙影"大模型(RadGPT),能够快速生成超过百种疾病的诊断意见,平均生成一个病例的诊断意见仅需0.8秒。
这些案例表明,医疗大模型在医疗方面的应用前景广阔,能够为患者提供更加精准和高效的医疗服务。
笔者认为,在未来的研究中,可以考虑将以上所提到的技术综合运用,形成一个功能齐全、精准高效、具有可解释性、符合法律法规的完整医疗大语言模型。