当前位置: 首页 > news >正文

微软 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:将通用大语言模型改用于专业领域

文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 论文地址:https://arxiv.org/abs/2402.05140 Github 地址:https://github.com/sjunhongshen/Tag-LLM 大语言模型&#xff08…...

Kafka集群安装与部署

集群规划 准备工作 安装 安装包下载:链接:https://pan.baidu.com/s/1BtSiaf1ptLKdJiA36CyxJg?pwd6666 Kafka安装与配置 1、上传并解压安装包 tar -zxvf kafka_2.12-3.3.1.tgz -C /opt/moudle/2、修改解压后的文件名称 mv kafka_2.12-3.3.1/ kafka…...

C++初阶(十一) list

一、list的介绍及使用 1.1 list的介绍 list的文档介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点…...

图像卷积、步长、填充、特征图、多通道卷积、权重共享、感受野、池化

图像卷积、步长、填充、特征图、多通道卷积、权重共享、感受野、池化 卷积神经网络的一些基本概念:图像卷积、步长、填充、特征图、多通道卷积、权重共享、感受野、池化 1.图像卷积、步长、填充 图像卷积:卷积核矩阵在一个原始图像矩阵上 “从上往下、…...

CMake进行C/C++与汇编混合编程

1. 前提 这篇文章记录一下怎么用CMake进行项目管理, 并用C/C和汇编进行混合编程, 为了使用这项技术, 必须在VS的环境中安装好cmake组件 由于大部分人不会使用C/C与汇编进行混合编程的情况。所以这篇文章并不适用于绝大部分人不会对其中具体细节进行过多叙述。只是做一些简单的…...

缓存预热!真香

预热一般指缓存预热,一般用在高并发系统中,为了提升系统在高并发情况下的稳定性的一种手段。 缓存预热是指在系统启动之前或系统达到高峰期之前,通过预先将常用数据加载到缓存中,以提高缓存命中率和系统性能的过程。缓存预热的目…...

VS中设置#define _CRT_SECURE_NO_WARNINGS的原因和设置方式

原因: 在编译老的用C语言的开源项目的时候,可能因为一些老的.c文件使用了strcpy,scanf等不安全的函数,而报警告和错误,而导致无法编译通过。 解决方案: 我们有两种解决方案: 1、在指定的源文件的开头定…...

【网站项目】155在线考试与学习交流网页平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…...

解决IDEA的Project无法正常显示的问题

一、问题描述 打开IDEA,结果发现项目结构显示有问题: 二、解决办法 File -> Project Structure… -> Project Settings (选Modules),然后导入Module 结果: 补充: IDEA提示“The imported module settings a…...

CDF和PDF的比较

以下内容来自ChatGPT,科技改变生活 Cumulative Distribution Function (CDF)(累积分布函数)和 Probability Density Function (PDF)(概率密度函数)是统计学和概率论中两个重要的概念,用于描述随机变量的性…...

编译基本过程 预处理器

编译基本过程 源代码(main.c)->预处理器(cpp)->编译器(gcc/clang/msvc)->汇编器(as)->链接器(ld)->可执行文件(main.exe) 预处理器 C语言中预处理器:执行预处理命令(文件包含、宏替换、条件编译)处理注释(将所有注释替换为空格)处理续行符(将所有…...

模拟算法.

1.什么是模拟 在信息奥赛中,有一类问题是模拟一个游戏的对弈过程或者模拟一项任务的操作过程.比如乒乓球在比赛中模拟统计记分最终判断输赢的过程等等,这些问题通常很难通过建立数学模型用特定的算法来解决因为它没有一种固定的解法,需要深刻理解出题者对过程的解释一般只能采…...

ClickHouse--10--临时表、视图、向表中导入导出数据

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.临时表1.1 特征1.2 创建一个临时表 2.视图2.1 普通视图2.2 物化视图 3.向表中导入导出数据3.1 案例 1.临时表 1.1 特征 ClickHouse 支持临时表,临时表…...

Python一些可能用的到的函数系列124 GlobalFunc

说明 GlobalFunc是算网的下一代核心数据处理基础。 算网是一个分布式网络,为了能够实现真的分布式计算(加快大规模任务执行效率),以及能够在很长的时间内维护不同版本的计算方法,需要这样一个对象/服务来支撑。Globa…...

python中线程/线程池,进程/进程池的创建

创建子线程 # 创建子线程t1 threading.Thread(targetjob,args(1,))# 执行子线程t1.start()# 等待子线程执行print("waiting threading")t1.join()print("threading done")创建子进程 # 创建子进程p1 multiprocessing.Process(targetjob,args(1,),name&qu…...

【c++】vector的增删查改

1.先定义一个类对象vector 为了防止和库里面发生冲突&#xff0c;定义一个命名空间&#xff0c;将类对象放在命名空间 里面 #include<iostream> using namespace std; namespace zjw {class vector {public:private:}; }2.定义变量&#xff0c;需要一个迭代器&#xff…...

【研究生复试】计算机软件工程人工智能研究生复试——资料整理(速记版)——JAVA

1、JAVA 2、计算机网络 3、计算机体系结构 4、数据库 5、计算机租场原理 6、软件工程 7、大数据 8、英文 自我介绍 1. Java 1. 和 equals的区别 比较基本数据类型是比较的值&#xff0c;引用数据类型是比较两个是不是同一个对象&#xff0c;也就是引用是否指向同 一个对象&…...

JVM-JVM中对象的生命周期

申明&#xff1a;文章内容是本人学习极客时间课程所写&#xff0c;文字和图片基本来源于课程资料&#xff0c;在某些地方会插入一点自己的理解&#xff0c;未用于商业用途&#xff0c;侵删。 原资料地址&#xff1a;课程资料 对象的创建 常量池检查:检查new指令是否能在常量池…...

RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?<= , (?= , (?<! , (?!

RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?< , (? , (?<! , (?! 有好多种称呼 (?< , (? , (?<! , (?! 有好多种称呼 , 我称为: 左限定, 右限定, 左否定, 右否定 (?<左限定)    (?右限定)(?<!左否定)    (?!右限定) 再…...

相机图像质量研究(30)常见问题总结:图像处理对成像的影响--重影

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...

jdbc查询mysql数据库时,出现id顺序错误的情况

我在repository中的查询语句如下所示&#xff0c;即传入一个List<intager>的数据&#xff0c;返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致&#xff0c;会导致返回的id是从小到大排列的&#xff0c;但我不希望这样。 Query("SELECT NEW com…...

ArcPy扩展模块的使用(3)

管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如&#xff0c;可以更新、修复或替换图层数据源&#xff0c;修改图层的符号系统&#xff0c;甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...