微软 CMU - Tag-LLM:将通用大语言模型改用于专业领域

2024-02-11 10:28

本文主要是介绍微软 CMU - Tag-LLM:将通用大语言模型改用于专业领域,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、前言
  • 二、主要内容
  • 三、总结

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一、前言

论文地址:https://arxiv.org/abs/2402.05140

Github 地址:https://github.com/sjunhongshen/Tag-LLM

大语言模型(Large Language Models,LLMs)在理解和生成自然语言方面展现出卓越的能力。然而,在预训练语料库中代表性不足的高度专业领域,例如物理和生物医学领域,LLMs 的能力可能会减弱。这项工作探讨了如何将通用 LLMs 改用于专门领域的有效任务求解器。研究者提出了一个新颖且与模型无关的框架,用于学习自定义输入标签(input tags)。这些标签被参数化为连续向量,附加到 LLM 的嵌入层,以调节 LLM。研究者设计了两种类型的输入标记:领域标签用于分隔专门的表示(例如,化学式)并提供领域相关的上下文;函数标签用于表示特定函数(例如,预测分子特性)并压缩函数求解指令。

在这里插入图片描述

研究者进而开发了一种三阶段协议,利用辅助数据和领域知识来学习这些标签。通过明确地将任务域与任务函数分开, Tag-LLM 能够通过不同输入标签的组合,对未见过的问题实现零样本泛化。此外,它在各种专业领域中的性能也有所提高,例如预测蛋白质或化学性质,以及建立药物与靶点相互作用模型。在这些任务上,它的性能优于为此类任务量身定制的专家模型。


二、主要内容

在 LLMs 领域中,一个长期存在的挑战是将最初设计用于一般用途的模型适应到专业领域并表现出色。感兴趣的领域通常涵盖高度专业化的学科,例如物理和生物医学。在这些领域中,数据与通常在自然语言处理中遇到的文本数据存在很大差异。为了弥补这一差距,Tag-LLM 框架旨在利用特定领域的输入标签,将通用 LLM 重新应用于专门的任务。这些标签被参数化为连续向量,并附加到 LLM 的嵌入层中,成为调节 LLM 功能以符合特定专业领域或任务要求的强大工具。

在这里插入图片描述

如上图所示:以蛋白质-药物结合亲和力预测任务为例,Tag-LLM 将领域标签 ⟨Protein⟩、⟨SMILES⟩ 和函数标签 ⟨Binding Affinity⟩ 注入输入,并映射到经过专门训练的嵌入。模型将最后一个隐藏状态传递到特定任务的头部,以生成所需的预测类型(例如,在本例中为标量结合亲和值)。

Tag-LLM 的设计和实现

Tag-LLM 将输入标签分为两类:领域标签和函数标签。领域标签用于给输入数据上下文化,向模型指明其处理的专业数据类型(例如化学式或蛋白质序列),而函数标签则指示模型进行具体任务,如预测分子特性或模拟药物与靶标的相互作用。这种分叉允许采用模块化方法来解决问题,通过部署各种输入标签组合,以 zero-shot 方式处理新的或未见过的任务。

为了学习这些标签,研究者开发了一个独特的三阶段协议,利用辅助数据集和领域知识逐步提高模型的理解能力和性能。在第一阶段中,通过使用域内数据进行 next-token prediction 任务来完善域标签。后续阶段涉及使用越来越专业化的面向任务的数据训练单个领域和跨领域的函数标签,以丰富模型解决不同领域复杂问题的能力。

经验结果与发现

实验结果表明,使用可学习的标签可以更细粒度地控制语言模型(LLM)。具体来说,使用实际文本(如 “Protein”)来条件化模型的效果在很大程度上取决于它在预训练语料库中的出现频率,但最终用户无法控制这一点。作者通过从目标领域的数据中显式学习标签嵌入来解决这个限制。实验还研究了标签长度对测试误差的影响。随着 p p p 值的增加,测试误差先减小后增大。这表明,虽然增加的自由度最初是有益的,但超过某个阈值可能会导致过拟合训练数据,从而阻碍测试时的性能。

经过定量评估,证明了 Tag-LLM 在多项任务中的有效性,包括八种语言的翻译、蛋白质特性预测和药物发现等科学工作。实验还证明了 Tag-LLM 方法可以有效地将 LLM 重新用于专业领域。例如,在多语言翻译任务中,使用领域标签表示不同的语言,并训练一个共享的函数标签 ⟨Translate⟩ 来编码翻译能力。实验结果验证了领域标签可以从数据中有效地提取领域信息,以及函数标签可以推广到未见过的领域和翻译对。值得注意的是,在制药领域的任务中,如药物组合预测和结合亲和力预测,Tag-LLM 取得了领先的结果,明显优于专用模型和其他重新利用 LLM 的方法。

Tag-LLM 采用模块化设计和系统化的训练协议,不仅提高了专项任务的性能,还提供了一个可扩展的框架,可以逐步添加新的标签。这种功能确保了 Tag-LLM 能够根据领域发展或面临新挑战时进行相应调整和扩展,具有实际落地应用价值。

总之,实验结果表明,Tag-LLM 方法在各种任务上的表现优于其他基线方法,证明了其有效性和实用性。


三、总结

Tag-LLM 可能是一个针对特定领域专业化 / {/} /微调大语言模型的好方法。

在这里插入图片描述

在这项工作中,研究者利用现有的 LLMs 来解决特定任务。开发了一个 LLM 标签系统,用于调节 LLM,并提出了一个学习标签的三阶段训练协议。实验结果表明,Tag-LLM 提高了 LLM 的预测质量,并允许对其行为进行更细粒度的控制。作者设想开源不同模型的学习标签可以帮助促进专业领域的研究。

基于 Tag-LLM 确定了几个未来发展方向。例如,在其他专业领域进一步验证 Tag-LLM,如基因功能预测(计算生物学)或求解偏微分方程(物理学)。用特定任务的输出头来增强函数标签的想法可以应用于各种预测问题。不过,在这项研究中,Tag-LLM 主要关注回归问题,而对分类和其他结构化预测问题的探索则留待今后研究。在计算效率方面,一个潜在的改进方法是大批量地训练标签,例如,将不同领域的数据串联在一起,而不是像论文里这样按顺序训练。最后,将 Tag-LLM 与其他领域适应范式(如上下文学习)相结合,也是一种值得探索的可能性。


📚️ 参考链接:

  • Tag-LLM: Repurposing General-Purpose LLMs for Specialized Domains
  • 沈向洋:致 AI 时代的我们 —— 请不要忽视写作的魅力

这篇关于微软 CMU - Tag-LLM:将通用大语言模型改用于专业领域的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st