前缀调整——优化连续提示以生成文本

news2024/11/25 4:45:16

 人工智能咨询培训老师叶梓 转载标明出处

大模型微调需要更新并存储模型的所有参数,这不仅增加了存储成本,也使得模型的部署变得复杂。为了解决这一问题,斯坦福大学的Xiang Lisa Li和Percy Liang提出了一种名为“前缀调整”(Prefix-Tuning)的轻量级替代方案。

论文链接:https://arxiv.org/pdf/2101.00190

方法

前缀调整作为一种针对条件生成任务的微调替代方案。这种方法的核心思想是在不改变预训练语言模型(LM)参数的前提下,通过添加一个连续的任务特定向量序列——即前缀——来引导模型生成过程。

研究者从提示(Prompting)中获得启发,认为适当的上下文可以在不改变语言模型参数的情况下引导模型。例如,如果想要模型生成一个特定的词(如“Obama”),可以在输入中加入这个词的常见搭配(如“Barack”)作为上下文,这样模型就会更倾向于生成这个词。研究者希望找到一个能够引导语言模型解决自然语言生成(NLG)任务的上下文。这个上下文可以影响对输入x的编码,通过指导从x中提取什么信息;同时,它也可以通过引导下一个标记的分布来影响输出y的生成。

然而,是否存在这样一个有效的上下文并不明显。自然语言的任务指令(例如:“请用一句话总结下表”)可能能够指导专家解决问题,但对大多数预训练语言模型来说并不奏效。直接对离散指令进行数据驱动的优化可能有所帮助,但离散优化在计算上具有挑战性。研究者选择优化指令作为连续的词嵌入,其效果将被传播到所有Transformer激活层,并向右传播到后续标记。这比需要匹配真实词嵌入的离散提示具有更丰富的表达能力。同时,这比干预所有激活层的表达能力要小,后者避免了长距离依赖并包含更多可调参数。因此,前缀调整优化了前缀的所有层。

前缀调整通过在自回归语言模型的输入前添加一个前缀来实现,从而形成新的输入序列z=[PREFIX;x;y]。

在图 2中,展示了使用自回归语言模型(上部)和编码器-解码器模型(下部)的前缀调整的注释示例。对于所有 ​,激活 都是从可训练的矩阵 中提取的,其余激活由Transformer计算得到。

表示前缀索引序列,表示前缀的长度。

除了前缀是自由参数外,其余计算遵循等式中的递归关系。前缀调整初始化一个可训练的矩阵 (由 θ 参数化),其维度为,用来存储前缀参数。

训练目标与等式相同,但可训练参数集发生了变化:语言模型参数 ϕ 被固定,只有前缀参数θ 是可训练的。

直接更新 参数会导致优化不稳定和性能轻微下降。因此,研究者重新参数化了矩阵,通过一个较小的矩阵  和一个大型前馈神经网络(MLP)来实现。

注意,和 具有相同的行数维度(即前缀长度),但列数维度不同。

训练完成后,这些重新参数化的参数可以被丢弃,只需要保存前缀​。

通过这种方法,研究者能够在保持预训练语言模型参数不变的同时,通过优化一个小型的连续前缀来引导模型的生成过程,从而在不同的自然语言生成任务中取得了良好的效果。

想要掌握如何将大模型的力量发挥到极致吗?2024年10月26日叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。

留言“参加”即可来叶老师的直播间互动,1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

实验

研究者使用了三个标准的神经生成数据集进行评估:E2E、WebNLG和DART。这些数据集根据复杂性和大小的增加而排序。

E2E数据集包含大约50K个示例,涵盖8个不同的字段,主要用于餐厅评论。它为一个源表格提供多个测试参考,平均输出长度为22.9。研究者使用了官方评估脚本,报告了BLEU、NIST、METEOR、ROUGE-L和CIDEr等指标。

WebNLG数据集包含22K个示例,输入x是(subject, property, object)三元组序列。平均输出长度为22.5。在训练和验证数据集中,输入描述了来自9个不同DBpedia类别的实体(例如,纪念碑)。测试数据集由两部分组成:前半部分包含在训练数据中见过的DB类别,后半部分包含5个未见过的类别。这些未见过的类别用于评估模型的泛化能力。评估指标包括BLEU、METEOR和TER。

DART是一个开放域的表格到文本的数据集,输入格式与WebNLG相似,包含来自WikiSQL、WikiTableQuestions、E2E和WebNLG的82K个示例,并进行了一些手动或自动转换。评估指标包括BLEU、METEOR、TER、MoverScore、BERTScore和BLEURT。

对于摘要任务,研究者使用了XSUM数据集,这是一个关于新闻文章的摘要数据集,包含225K个示例。文章的平均长度为431个词,摘要的平均长度为23.3。他们报告了ROUGE-1、ROUGE-2和ROUGE-L指标。

在方法比较方面,研究者将前缀调整与三种其他方法进行了比较:微调(FINE-TUNE)、仅微调顶层2层(FT-TOP2)和适配器调整(ADAPTER)。他们还报告了这些数据集上的最新最佳结果。

在架构和超参数方面,研究者使用了GPT-2MEDIUM和GPT-2LARGE模型进行表格到文本的生成任务,源表格被线性化处理。对于摘要任务,他们使用了BARTLARGE模型,并将源文章截断为512个BPE标记。他们的实现基于Hugging Face Transformer模型。在训练时,他们使用了AdamW优化器和线性学习速率调度器。他们调整的超参数包括训练周期数、批量大小、学习速率和前缀长度。

在解码时,对于三个表格到文本数据集,他们使用了束搜索(beam search)策略,束大小为5。对于摘要任务,他们使用了大小为6的束搜索和长度归一化0.8。解码时间对于表格到文本任务是每个句子1.2秒(无批处理),对于摘要任务是每批2.6秒(使用大小为10的批处理)。

研究者发现,即使只添加了0.1%的任务特定参数,前缀调整在表格到文本生成任务中也非常有效。这种方法不仅超越了其他轻量级基线方法(如ADAPTER和FT-TOP2),而且与全参数微调(fine-tuning)的性能相当。这一趋势在三个数据集:E2E、WebNLG和DART中都得到了验证。

为了公平比较,研究者确保前缀调整和适配器调整(adapter-tuning)使用相同数量的参数,即0.1%。

表1显示,前缀调整在每个数据集上平均比ADAPTER(0.1%)提高了4.1 BLEU分数。即使与更新了更多参数的全参数微调和适配器调整(3.0%)相比,前缀调整仍然取得了相当或更好的结果。这表明前缀调整在减少参数数量的同时提高了生成质量,具有更好的帕累托效率。在DART数据集上取得的良好性能表明,前缀调整可以泛化到具有多样化领域和关系的表格上。

如表2所示,使用2%的参数,前缀调整的性能略低于全参数微调(在ROUGE-L指标上分别为36.05和37.25)。当参数降至0.1%时,前缀调整的性能低于全参数微调(35.05 vs. 37.25)。

XSUM数据集与三个表格到文本数据集之间存在几个差异,这些差异可能解释了为什么前缀调整在表格到文本任务中具有比较优势:

  • XSUM包含的平均示例数量是三个表格到文本数据集的4倍。
  • 输入文章的长度是表格到文本数据集线性化表格输入的平均长度的17倍。
  • 摘要任务可能比表格到文本任务更复杂,因为它需要阅读理解和从文章中识别关键内容。

研究者观察到前缀调整在训练样本数量较少时具有比较优势。为了构建低数据设置,研究者从完整数据集(E2E用于表格到文本,XSUM用于摘要)中抽取子样本,以获得大小为{50, 100, 200, 500}的小数据集。对于每个大小,他们抽取了5个不同的数据集,并在2个训练随机种子上平均,从而对每个低数据设置平均了10个模型。

图3(右侧)显示,前缀调整在低数据范围内平均比全参数微调高出2.9 BLEU分数,而且需要的参数更少,但随着数据集大小的增加,这一差距缩小了。从图3(左侧)中的8个示例可以看出,两种方法在低数据范围内都倾向于欠生成(遗漏表格内容),但前缀调整比全参数微调更忠实于原文。例如,全参数微调(100, 200)错误地声称客户评分低,而实际评分为平均,而前缀调整(100, 200)生成的描述忠于表格内容。

研究者现在研究了表格到文本和摘要任务对未见主题的泛化性能。为了构建泛化设置,他们分割了现有数据集,使得训练和测试覆盖不同的主题。对于表格到文本,他们通过在SEEN类别上训练并在UNSEEN类别上测试来评估泛化。对于摘要,他们构建了两个泛化数据分割:在news-to-sports中,他们在新闻文章上训练,并在体育文章上测试。在within-news中,他们在{world, UK, business}新闻上训练,并在其余新闻类别上测试。

在表3和表1(中间的'U'列)中显示,无论是表格到文本还是摘要,前缀调整在所有指标下的泛化性能都优于全参数微调。

研究者还发现,适配器调整(adapter-tuning)实现了与前缀调整相当的泛化性能,这一共同趋势表明保留LM参数确实对泛化有积极影响。

研究者比较了前缀调整的不同变体。图4显示,随着前缀长度的增加,性能会提高,直到一个阈值(摘要为200,表格到文本为10),然后性能会略有下降。实际上,较长的前缀对推理速度的影响可以忽略不计,因为在GPU上并行计算整个前缀的注意力。

通过这些详细的实验设置和结果,研究者展示了前缀调整作为一种有效的轻量级微调方法,在保持参数数量极低的同时提高生成任务的性能。

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

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

相关文章

YOLO11改进|注意力机制篇|引入HAT超分辨率重建模块

目录 一、HAttention注意力机制1.1HAttention注意力介绍1.2HAT核心代码 二、添加HAT注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、HAttention注意力机制 1.1HAttention注意力介绍 HAT模型 通过结合卷积特征提取与多尺度注意…

第 22 章 工作面试老大难——锁

22.1 解决并发事务带来问题的两种基本方式 当一个事务想对一条记录做改动时,首先会看看内存中有没有与这条记录关联的锁结构,当没有的时候就会在内存中生成一个锁结构与之关联。 trx 信息:代表这个锁结构是哪个事务生成的。is_waiting&…

【SpringBoot详细教程】-10-SpringBoot整合swagger【持续更新】

🌿 Swagger2构建Restful API 文档 🍁 Swagger简介 由于SpringBoot能够快速开发、便捷部署等特性,相信有很⼤⼀部分SpringBoot的⽤户会⽤来构建 RESTful API。⽽我们构建RESTfulAPI的⽬的通常都是由于多终端的原因,这些终端会共⽤…

[Python学习日记-37] Python 中的内置函数(下)

简介 在 Python 中有很多内置函数,例如len(),这些函数是Python解释器自带的,可以直接使用。本篇将介绍 O-Z 的内置函数,下图是官方给出的所有 Python 解释器自带的函数 内置函数官方详解:Built-in Functions — Python…

新160个crackme - 073-abexcrackme3

运行分析 需要破解keyfile PE分析 疑似C程序,32位,EP Section是CODE,猜测无壳 静态分析&动态调试 ida搜索字符串,进入函数 call analysis failed,无法查看伪代码 找到上面提示的地址401088,发现是个Exi…

鼓组编写:SsdSample鼓映射 GM Map 自动保存 互换midi位置 风格模板 逻辑编辑器

SsdSample音源的键位映射 方便编写鼓的技巧 可以这样去设置键位关系的面板和钢琴卷帘窗的面板,方便去写鼓。 可以先按GM的midi标准去写鼓,然后比对下鼓的键位映射的关系,去调整鼓。 可以边看自己发b站等处的图文笔记,然后边用电…

订阅ROS2中相机的相关话题并保存RGB、深度和点云图

系统:Ubuntu22.04 ROS2版本:ROS2 humble 1.订阅ROS2中相机的相关话题并保存RGB图、深度图和点云图 ros2 topic list/stellar_1/rgb/image_raw /camera/depth/image_raw /stellar_1/points2CMakeLists.txt cmake_minimum_required(VERSION 3.15) projec…

Deathnote解题过程

主机扫描,发现192.168.1.194 arp-scan -l 端口扫描,发现80和22端口 nmap -sS 192.168.1.194 访问80端口发现自动跳转到http://deathnote.vuln/wordpress添加绑定地址就可以访问了 vim /etc/hosts 192.168.1.194 deathnote.vuln 访问发现并没有什么东西…

IPsec自动方式

文章目录 实验要求实验配置 实验要求 配置 IPsec VPN 采用自动方式同时要满足上网和VPN两种需求使用NAT进行地址映射认证方法和加密算法自行配置采用安全的方法 实验配置 R1: #基本配置 sy sy R1 dhcp enable acl 3001 rule 1 deny ip des 192.168.3.0 0.0.0.255 …

【Python】解密用户代理:使用 Python User Agents 库探索浏览器和设备信息

Python User Agents 是一个专为解析 User Agent 字符串而设计的 Python 库。它能够轻松识别访问设备的类型(如移动设备、桌面设备或平板),并获取设备、浏览器、操作系统等详细信息。借助它,开发者可以更好地了解访问用户的设备属性…

SSM人才信息招聘系统-计算机毕业设计源码28084

摘要 本研究旨在基于Java和SSM框架设计并实现一个人才信息招聘系统,旨在提升招聘流程的效率和精准度。通过深入研究Java和SSM框架在Web应用开发中的应用,结合人才招聘领域的需求,构建了一个功能完善、稳定高效的招聘系统。利用SSM框架的优势&…

如何使用ssm实现政务大厅管理系统+vue

TOC ssm761政务大厅管理系统vue 第一章 课题背景及研究内容 1.1 课题背景 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是…

Qt QWidget控件

目录 一、概述 二、Qwidget常用属性及函数介绍 2.1 enable 2.2 geometry 2.3 windowTitle 2.4 windowIcon 2.5 cursor 2.6 font 设置字体样式 2.7 toolTip 2.8 focusPolicy焦点策略 2.9 styleSheet 一、概述 widget翻译而来就是小控件,小部件。…

Linux shell编程学习笔记85:fold命令——让文件瘦身塑形显示

0 引言 我们使用的电脑屏幕有宽有窄,我们有时候希望文件能按照我们的屏幕宽度来调整和匹配,这时我们可以使用fold命令。 1 fold命令 的帮助信息、功能、命令格式、选项和参数说明 1.1 fold 命令 的帮助信息 我们可以输入命令 fold--help 来查看fold …

Spring Boot实现新闻个性化推荐

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…

大模型训练环境搭建

硬件资源说明 本教程基于GPU 3090的服务器 资源类型 型号 核心指标 CPU Intel(R) Xeon(R) Bronze 3204 CPU 1.90GHz 12核 内存 / 125Gi GPU NVIDIA GeForce RTX 3090 24G显存 注意:接下来的部分命令需要使用科学上网,需要事先配置好。 安…

基于SpringBoot+Vue的摄影社团管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

RK3576部署llama2.c

llama2.c 是一个用纯 C 语言实现的轻量级推理引擎,无需依赖任何第三方库即可高效地进行推理任务。与 llama.cpp 相比,其代码更加直观易懂,并且可以在 PC、嵌入式 Linux 乃至 MCU 上部署。以下是 llama2.c 在 RK3576 开发板上的部署步骤。 工…

Linux系统安装教程

Linux安装流程 一、前置准备工作二、开始安装Linux 一、前置准备工作 安装好VMWare虚拟机,并下载Linux系统的安装包; Linux安装包路径为:安装包链接 , 提取码为:4tiM 二、开始安装Linux

C/C++复习(一)

1.sizeof 关于sizeof我们是经常使用的,所以使用方法就不需要提及了,这里我们需要注意的是,sizeof 后面如果是表达式可以不用括号,并且sizeof实际上不参与运算,返回的是内容的类型大小(size_t类型&#xff0…