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

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

大模型微调需要更新并存储模型的所有参数,这不仅增加了存储成本,也使得模型的部署变得复杂。为了解决这一问题,斯坦福大学的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)来实现。

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

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

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

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具(限时免费)。

1小时实战课程,您将学习到如何轻松上手并有效利用 Llama Factory 来微调您的模型,以发挥其最大潜力。

CSDN教学平台录播地址:https://edu.csdn.net/course/detail/39987

实验

研究者使用了三个标准的神经生成数据集进行评估: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上并行计算整个前缀的注意力。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值