BioMistral 7B——医疗领域的新方法,专为医疗领域设计的大规模语言模型

1. 概述

自然语言处理领域正在以惊人的速度发展,ChatGPT 和 Vicuna 等大型语言模型正在从根本上改变我们与计算机交互的方式。从简单的文本理解到复杂的问题解决,这些先进的模型展示了类似人类的推理能力。

特别是,BLOOM 和 LLaMA 等开源模式在医疗保健领域日益受到关注,为该领域的创新提供了新的可能性。然而,将这些技术引入医疗保健领域也带来了独特的挑战和机遇。有许多问题需要解决,包括数据隐私问题和采用开源模式的障碍。

为了应对这些挑战,本文介绍了 BioMistral 7B。BioMistral 7B 扩展了开源大规模语言模型在医学领域的潜力,并展示了其应对更广泛用例的能力。bioMistral 7B 扩展了开源大规模语言模型在医学领域的潜力,并展示了其应对更广泛使用情况的能力。

此外,该倡议还根据 Apache 2.0 许可在HuggingFace 和 GitHub 上提供了数据集、多语言基准、预处理脚本和模型。这项研究有望成为未来医疗技术的创新举措。
论文地址:https://arxiv.org/pdf/2402.10373.pdf

2. BioMistral 模块

首先,让我们来谈谈研究前的数据集。PMC开放存取子集是一个全面但可免费访问的医学研究文章集合,我们参考了之前成功的研究,如PMC-LaMA、PubMedBERT和SciFive,选择了一个专门适用于生物医学领域的子集。.这些研究表明,医学应用中的语言建模有了很大改进。本文的重点是获得商业使用许可的子集,包括各种知识共享许可(CC0、CC BY、CC BY-SA、CC BY-ND)下的文档。该子集保证了模型输出的可重用性,甚至可用于商业目的。

此外,还从经过预处理的 PubM Central 语料库中精心挑选了约 3 亿个词库和 147 万份文档。该数据集主要由英文文档组成,但也包括荷兰语、德语和法语等其他九种语言的文档。我们的方法侧重于多语种数据集,优先处理非英语文档,并建立一个多样化、有代表性的训练数据集,以实现 3 亿个词库的目标。然后,我们使用 Mistral 标记化器对原始文本文档进行标记化和规范化预处理。

接下来,让我们谈谈模型适应性:BioMistral 7B 的开发使用 Mistral 7B Instruct v0.1 作为基础模型,该模型专为纳入引导提示和微调数据集有限的各种任务而设计这一选择强调了该模型与特定指导一起工作的能力,以及灵活适应不同类型任务的能力。优化过程还采用了高效的 AdamW 优化器和余弦调度器,可随着时间的推移调整学习率。该模型的架构保留了从 Mistral 继承而来的转换器架构的标准功能,如分组查询关注、滑动窗口关注和滚动缓冲缓存。这些选择都是为了确保高吞吐量和高精确度。此外,为了提高预训练的效率,还引入了标记化后分组方法。这种方法能有效聚合标有标记符号的可变大小序列,标记符号表示序列的结束,从而无需填充即可填充模型的 2,048 个标记符号序列。这一独创性大大减少了序列的数量,从而缩短了训练时间。

接下来,我们将引入一种创新方法来整合不同的预训练模型,以进一步推动生物医学领域的先进水平。传统上,我们通常为每个特定应用使用不同的模型,但这会增加复杂性和成本。根据最新的研究趋势,我们采用SLERP、TIES 和 DARE 等先进的模型合并技术,合并模型之间的参数,以提高性能并增强在领域外的通用能力。

在生物医学领域,将通用领域模型与特定领域模型合并对于提高适应性和准确性特别有用。这种方法可以增强专用模型的能力,使其应用范围更广。此外,它还探索了新的推理可能性,并力求超越传统模型的性能。

最后是量化技术。它使大规模语言模型能够应用于更广泛的设备,从而促进其广泛应用。内存使用量的减少使较小的设备也能运行大型语言模型,从而提高了该技术的可及性。本文介绍了两种先进的量化方法:激活感知权重量化(AWQ)和 BitsandBytes(BnB)。AWQ 通过避免对基本权重进行量化,转而采用权重重要性,从而将模型的性能下降降到最低。AWQ 通过避免基本权重量化,而采用权重重要性量化,从而最大限度地降低了模型的性能,在保持准确性的同时有效地缩小了模型规模。另一方面,BnB 量化通过为整个模型分配 4 或 8 位的统一精度,实现了简洁性和统一性。这种方法降低了量化过程的复杂性,使在更多设备上运行大型语言模型成为现实。

2.评估协议 - 英语医学推理任务基准

为了评估 BioMistral 7B 模型的性能,该模型重点测试了 10 个英语问答(QA)任务,这些任务选自四个关键医学语料库,涵盖了遗传学、解剖学和临床病例等多个医学专业。它们涵盖了医学专业人员日常遇到的真实场景、医学院入学考试的形式以及基于 PubMed 内容的理解测试。这些数据集总结了医疗专业人员遇到的真实场景、医学院入学考试的形式以及基于 PubMed 内容的理解测试。下表总结了这些数据集。

MMLU(Hendrycks 等人,2021 年)是 57 个科目的试题集,我们选择了与医学和临床知识相关的六个科目。由于 MMLU缺乏训练数据,我们使用 MedQA 进行微调,并用 MMLU 评估泛化性能。

MedQA(Jin等人,2020年)包含以USMLE格式呈现的各种医学知识问题。训练集由 10,178 个样本组成,测试集由 1,273 个问题组成,分为四问和五问两种形式。MedMCQA(Pal 等人,2022 年)包含超过 193K 个问题,这些问题来自印度医学入学考试,涵盖 21 个医学科目、2,400 个医疗保健主题。MedMCQA(Pal 等人,2022 年)包含超过 193K 道来自印度医学入学考试的题目,涵盖 21 个医学科目、2400 个医疗保健主题、183K 个训练样本和 4183 道验证题。由于无法获得测试集答案密钥,因此使用验证集进行评估,并使用超参数调整将训练集拆分成新的 146K 和 37K 样本。

PubMedQA(Jin等人,2019)包含211K个人工生成的多选题样本和1,000个专家标签样本,模型以给定的PubMed摘要和相关问题为上下文,根据 “是”、"否 "和 "也许 "的设置进行评估,推断预测 “是”、"否 "和 “也许”。‘,并根据所需的设置对预测’是’、'否’和’可能’的推论进行评估。微调是在 211K 个人工标记样本上进行的,验证是在 500 个专家样本上进行的,用 BigBio(Fries 等,2022 年)、Chen 等(2023 年)、Singhal 等(2023a)进行了性能测量。根据协议在 500 个测试样本中进行了评估。

3.评估协议 - 多语言评估

对 BioMistral 7B 模型的全面评估旨在关注其在英语和多种语言中的表现。迄今为止,生物医学语言模型已在英语、中文、法语和西班牙语等语言中得到广泛验证。然而,它们在其他语言中的表现尚未得到充分评估。造成这种情况的原因是,除英语外,缺乏其他语言的生物医学相关任务。

为了解决这个问题,我们使用 GPT-3.5 Turbo 通过 OpenAI API 进行自动翻译,用西班牙语、德语、葡萄牙语、俄语、法语、阿拉伯语和中文七种不同语言进行了基准测试。自动翻译当然会带来挑战,但最近的技术进步已显著提高了这些工具的准确性,从而实现了高效的多语言评估。

多语种评估方法的设计类似于用英语进行的三枪情景模拟。问题、选项和上下文都经过翻译,同时保留了用于少数人射击训练的示例。这样就可以在考虑到每种语言的文化和语言特点的同时,测试模型的理解力和适应性。

4.评价规程–应用教学提示

BioMistral 7B 模型评估严格遵守基于 GPT-4 医学评估官方指南(Nori 等人,2023a)的教学提示。这确保了每个问答(QA)任务都以多选题(MCQA)的形式呈现,选项从 A 到 D 或从 A 到 E。有关教学提示的详细列表,请参阅本文附录。

在推理过程中,模型会根据给定的输入提示预测下一个标记,并为词库中的每个标记生成一个概率。为了提高预测的准确性,词典的范围被缩小到只包括与答案选项(在本例中为选项字母)相对应的标记。这种方法降低了模型产生不相关词库或不准确信息(错觉)的风险,使预测结果更加可靠。

5. 评估协议 - 监督微调 (SFT)

监督微调(SFT)是对注释数据进行微调的重要过程,目的是使模型适应特定任务。SFT 已应用于开源模型。所使用的训练集是根据预定义标准选择的。

然而,传统的 SFT 方法往往需要大量资源,这是一个挑战。为了解决这个问题,我们引入了 QLoRa 微调方法和 8 位量化技术。这些方法具有成本效益,使 SFT 流程更加可行。此外,改进后的批量处理方法缩短了微调所需的时间。这些策略在有效地最大限度提高 BioMistral 7B 的性能方面发挥了重要作用,并使其更能适应特定任务。

6.实验结果

为了测试 BioMistral 7B 模型的能力,我们首先考察了它在少量学习情况下的性能。在评估中,我们从每个数据集的训练集中随机抽取三个样本,进行了三次情境学习。结果如下表所示。

结果非常乐观,BioMistral 7B 在十项任务中的八项都优于现有的 Mistral 7B Instruct 模型,有力地证明了其适应特定领域的有效性。特别是,在这个三次学习场景中,它在所有任务中的表现都优于其他开源生物医学基线模型。

在 MedQA 中,BioMistral 7B 比 MediTron-7B 和 MedAlpaca 7B 有明显改善;在 MMLU 中,BioMistral 7B 明显优于现有的生物医学大规模语言模型;同样,在 MedMCQA 中,BioMistral 7B 比其他模型有明显改善。同样,在 MedMCQA 中,BioMistral 7B 也显示出与其他模型相比的显著进步。另一方面,在 PubMedQA 中,由于类不平衡可能导致的幻觉,性能有所下降。

虽然 GPT-3.5 Turbo 是整个三次学习场景中的最佳模型,但 BioMistral 7B 凭借其领域自适应能力和在少量学习场景中的出色表现,展示了人工智能在生物医学应用中的新可能性。这些结果为人工智能技术在生物医学应用中的未来发展方向提供了重要启示。

然后,对照几个基准模型对 BioMistral 7B 的微调性能进行评估;BioMistral 模型和相关基准模型的性能如下表所示。

总体而言,SFT 进一步提高了模型在几乎所有数据集上的性能。对模型的比较显示出与 "少镜头-上下文学习 "评估类似的趋势,BioMistral 7B 在十项任务中有七项优于 Mistral 7B Instruct,并在所有任务中优于其他开源生物医学基线。在 PubMedQA 中,BioMistral 7B 也有明显进步。

7.总结

近年来,大规模语言模型呈现出显著的多样性,并在医学和医疗保健等特定领域提供了潜在的应用。尽管有各种针对医疗保健的开源大规模语言模型,但将通用大规模语言模型应用于医疗保健领域仍面临巨大挑战。

本文提出了生物医学领域专用的开源大规模语言模型BioMistral 7B,利用在 PubMed Central 进一步预训练的底层模型 Mistral,展示了医学领域专用大规模语言模型的新可能性。.该模型基于 PubMed Central 的高质量资源,是 Mistral 7B Instruct 的进一步演化,采用了量化和模型集成等技术。因此,与现有的开源 7B 模型相比,BioMistral 7B 在多语种医学评估基准中取得了卓越的性能。

展望未来,该公司计划进行人工评估,以进一步深化 BioMistral 7B 的生成质量。公司还表示,正在计划利用监督微调和直接优化偏好等技术,扩展模型的多语言能力和聊天功能。

希望 BioMistral 7B 能够拓展人工智能技术在医疗领域的潜力,进一步提高其准确性和可靠性,从而为解决现实世界的医疗问题做出贡献。

此外,本文还公布了数据集、多语言评估基准、脚本和实验中获得的所有模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

asp.net core接入prometheus

安装prometheus和Grafana 参考之前的文章->安装prometheus和Grafana教程 源代码 dotnet源代码 新建.net core7 web项目 修改Program.cs using Prometheus;namespace PrometheusStu01;public class Program {public static void Main(string[] args){var builder We…

字符函数:分类函数与转换函数

字符函数 一.字符分类函数二.字符转换函数 在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语⾔标准库中提供了一系列库函数,接下来我们就学习⼀下这些函数。 一.字符分类函数 C语言中有⼀系列的函数是专门…

自然语言处理实战项目29-深度上下文相关的词嵌入语言模型ELMo的搭建与NLP任务的实战

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目29-深度上下文相关的词嵌入语言模型ELMo的搭建与NLP任务的实战,ELMo(Embeddings from Language Models)是一种深度上下文相关的词嵌入语言模型,它采用了多层双向LSTM编码器构建语言模型,并通过各层LSTM的隐藏状…

文件流下载优化:由表单提交方式修改为Ajax请求

如果想直接看怎么写的可以跳转到 解决方法 节! 需求描述 目前我们系统导出文件时,都是通过表单提交后,接收文件流自动下载。但由于在表单提交时没有相关调用前和调用后的回调函数,所以我们存在的问题,假如导出数据需…

MyBatisPlus使用流程

引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.4</version> </dependency> 版本号根据需要选取 在实体类上加注解声明&#xff0c;表信息 根据数…

get和post的区别,二者是幂等的吗?

一、什么是幂等 所谓幂等性通俗的将就是一次请求和多次请求同一个资源产生相同的副作用。 维基百科定义&#xff1a;幂等&#xff08;idempotent、idempotence&#xff09;是一个数学与计算机学概念&#xff0c;常见于抽象代数中。 在编程中一个幂等操作的特点是其任意多次执…

U-Mail邮件系统为用户提供更加安全的数据保护机制

据外媒报道&#xff0c;近日美国国家安全委员会泄露了其成员的近1万封电子邮件和密码&#xff0c;暴露了政府组织和大公司在内的2000家公司。其中包括美国国家航空航天局和特斯拉等。报道称该漏洞于3月7日被研究人员发现&#xff0c;通过该漏洞攻击者能够访问对web服务器操作至…

WordPress主题 7B2 PRO 5.4.2 免授权开心版源码

本资源提供给大家学习及参考研究借鉴美工之用&#xff0c;请勿用于商业和非法用途&#xff0c;无任何技术支持&#xff01; WordPress主题 7B2 PRO 5.4.2 免授权开心版源码 B2 PRO 5.4.2 最新免授权版不再需要改hosts&#xff0c;和正版一样上传安装就可以激活。 直接在Word…

重新夺回控制权!原创始人从Synk回购FossID,致力于解决开源许可合规风险

FossID 于 2022 年 9 月被其原始创始人从 Snyk, Inc. 重新收购。为什么 Snyk 在 2021 年收购了 FossID&#xff0c;又在 2022 年将其分拆&#xff0c;以及为什么 FossID 的创始人&#xff08;Oskar Swirtun 和 Jon Aldama&#xff09;后来又回购了该公司&#xff1f; 公司背景 …

YOLOv8_seg的训练、验证、预测及导出[实例分割实践篇]

实例分割数据集链接,还是和目标检测篇一样,从coco2017val数据集中挑出来person和surfboard两类:链接:百度网盘 请输入提取码 提取码:3xmm 1.实例分割数据划分及配置 1.1实例分割数据划分 从上面得到的数据还不能够直接训练,需要按照一定的比例划分训练集和验证集,并按…

Servlet的response对象

目录 HTTP响应报文协议 reponse继承体系 reponse的方法 响应行 public void setStatus(int sc) 响应头 public void setHeader(String name, String value) 响应体 public java.io.PrintWriter getWriter() public ServletOutputStream getOutputStream() 请求重定…

【GUI开发基础】

GUI开发基础 &#x1f31f;项目文件组成✨浅析Pro文件配置 &#x1f31f;Qt设计师&#x1f31f;剖析UI文件运行机制&#x1f31f;UI设计方式✨可视化UI设计✨代码化UI设计 &#x1f31f;项目文件组成 创建一个QtGUI项目&#xff1a; open QtCreator —> select Creator Pr…

You must call removeView() on the child‘s parent first.异常分析及解决

问题描述 对试图组件快速的左右滑动过程&#xff0c;发现某一张图片没加载出来&#xff0c;偶现crash 问题分析 view在上次已经是某个ParentView的child&#xff0c;然而现在又把它做为另外一个view的child&#xff0c;于是出现一个view有两个parent。所以就产生了这个错误。…

创新工具|AI革新内容营销:策略、工具与实施指南

探索如何利用人工智能&#xff08;AI&#xff09;提升内容营销策略&#xff0c;从SEO优化到个性化推荐。本指南详细介绍了11款顶尖AI工具&#xff0c;旨在帮助中国的中高级职场人士、创业家及创新精英高效地策划和生成引人入胜的内容&#xff0c;同时确保内容的专业性、权威性和…

2.OpenFeign 入门与使用

2.OpenFeign 入门与使用 1.什么是 OpenFeign?2.OpenFeign 基础使用2.1 添加依赖2.2 配置 Nacos 服务端信息2.3 项目中开启 OpenFeign2.4 编写 OpenFeign 调用代码2.5 调用 OpenFeign 接口代码 3.超时重试机制3.1 配置超时重试3.2 覆盖 Retryer 4.自定义超时重试机制4.1 自定义…

golang通过go-aci适配神通数据库

1. go-aci简介 go-aci是神通数据库基于ACI(兼容Oracle的OCI)开发的go语言开发接口&#xff0c;因此运行时需要依赖ACI驱动和ACI库的头文件。支持各种数据类型的读写、支持参数绑定、支持游标范围等操作。 2. Linux部署步骤 2.1. Go安装&#xff1a; 版本&#xff1a;1.9以上…

【从C++到Java一周速成】章节14:网络编程

章节14&#xff1a;网络编程 【1】网络编程的概念【2】IP地址与端口的概念【3】网络通信协议引入网络通信协议的分层 【3】Socket套接字【4】单向通信【5】双向通信 【1】网络编程的概念 把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大、功能强的网…

头歌openGauss-存储过程第2关:修改存储过程

任务描述 本关任务&#xff1a; 修改存储过程pro0101&#xff0c;并调用&#xff1b; --修改sel_course表中成绩<60的记录为成绩10&#xff0c;然后将计算机学院所有学生的选课成绩输出&#xff1b; --a、需要先删除存储过程pro0101&#xff1b; drop procedure if exists p…

LLM 入门与实践(三)Baichuan2 部署与分析

本文截取自20万字的《PyTorch实用教程》&#xff08;第二版&#xff09;&#xff0c;敬请关注&#xff1a;《Pytorch实用教程》&#xff08;第二版&#xff09;《Pytorch实用教程》&#xff08;第二版&#xff09;无论是零基础入门&#xff0c;还是CV、NLP、LLM项目应用&#x…

Python协程的作用

过分揣测别人的想法&#xff0c;就会失去自己的立场。大家好&#xff0c;当代软件开发领域中&#xff0c;异步编程已成为一种不可或缺的技术&#xff0c;用于处理大规模数据处理、高并发网络请求、实时通信等应用场景。而Python协程&#xff08;Coroutine&#xff09;作为一种高…