核心要点:
- 诸如GPT-3等大预训练语言模型(PLM)以服务的形式发布。允许用户设计特定于任务的提示(Task specified Prompt),并通过黑盒API查询PLM。将这种不能访问梯度参数,只能通过推理API查询模型推理结果的场景称为LMaaS(Language Model as a Service)
- 本文在此场景下提出了一种黑盒优化框架,通过无导数优化来优化输入文本前的连续提示。
- 大型PLM的低固有维数,我们在随机生成的子空间中执行优化,而不是在传统的无导数优化难以解决的原始高维提示空间中进行优化
简要信息:
序号 | 属性 | 值 |
---|---|---|
1 | 模型名称 | BBT |
2 | 发表位置 | ICML2022 |
3 | 所属领域 | 自然语言处理、小样本学习 |
4 | 研究内容 | PLM调优 |
5 | 核心内容 | Prompt-based Learning |
6 | GitHub源码 | https://github.com/txsun1997/Black-Box-Tuning |
7 | 论文PDF | https://arxiv.org/abs/2201.03514 |
一、动机
- 除了设计离散文本提示符之外,最近还致力于连续提示符调优——优化注入文本的连续提示,同时保持PLM参数冻结。当PLM变大时,调整连续提示与微调整个模型一样有效。但都需要反向传播学习连续提示,在LMaaS场景不可用。因此可采用无导数优化(DFO)——涉及一种不依赖于梯度的优化算法优化连续提示符
- 当搜索空间的维数高时,已知DFO算法的收敛速度慢。最近的研究发现,尽管常见的PLM参数很多,但其固有维数非常低,存在一种低维重新参数化,与全参数空间进行微调一样有效,这个低维即是固有维度或内在维度
二、方法
问题陈述
常见的NLU任务为分类任务,预测输入文本X的标签Y。对于MLM,需修改输入文本X成带有[MASK]特殊标记的模板,将标签Y映射到PLM词汇表中的一些词(如预测出的”great“映射至positive类别),修改后的input和label为
X
~
和
Y
~
\widetilde{X}和\widetilde{Y}
X
和Y
,计算损失并以此准则寻找最优连续提示:
P是一些感兴趣的搜索空间,L是一些损失函数,如负精度、LingeLoss、CrossEntropyLoss。黑匣子函数f对梯度优化器不可用,但可以在查询点(p; X ~ \widetilde{X} X )进行求值。
黑盒调优
连续提示的维数为
p
∈
R
D
\bf{p}\in \mathbb{R}^D
p∈RD,其中
R
D
R^D
RD为感兴趣优化的维度,若在此维度优化,将使得无导数优化很难收敛。
设法优化
z
∈
R
d
\bf{z}\in \mathbb{R}^d
z∈Rd
使用随机投影矩阵
A
∈
R
D
×
d
\bf{A}\in \mathbb{R}^{D\times d}
A∈RD×d
将z投影到原始提示空间
p
∈
R
D
p\in \mathbb{R}^D
p∈RD
直接将z投影到与PLM兼容的提示空间是非常重要的,为了简化优化,我们改为优化一些初始提示p0(从PLM词汇表中随机抽取n个标记),因此目标为:
Z为搜索空间
另外采用均匀分布中采样设置随机矩阵A的值。
对于损失函数,在训练数据有限的情况下考虑了两个对预测更敏感的损失函数,即交叉熵和铰链损失。
给定一组候选标签词的输出逻辑
y
^
\hat{y}
y^和样本类别标签
y
~
\widetilde{y}
y
,则交叉熵损失为
hinge损失为
,margin
γ
\gamma
γ为超参数,设置为2
CMA进化策略
采用一种广泛用于连续域非凸黑箱优化的进化算法CMA-ES(协方差矩阵自适应进化策略)
CMA-ES从多元正态分布模型中抽取一组 solutions
:
其中i=1,λ和λ是种群大小。
预训练提示嵌入
在一些NLI任务上预训练提示嵌入p0,以更好地初始化
将p0设置为从RoBERTaLARGE的词汇表中随机抽取的单词嵌入
三、实验
实验所用的数据集有情感分析类的SST-2、Yelp,主题分类的AGNews、DBPedia,自然语言推理的SNLI、RTE,释义类的MRPC
Baeslines有基于梯度的Prompt Tuning、P-Tuning v2、Model Tuning,无梯度的Manual Prompt、In-context Learning、Feature-MLP、Feature-BiLSTM
实验一
通过预训练RoBERTa LARGE模型在16-shot(每个类别)设置中获得的
- 提出的
Black-Box Tuning
显著优于其他四种无梯度方法 Black-Box Tuning
也优于基于梯度的同类,即Prompt Tuning、P-Tuningv2和Model Tuning,怀疑基于梯度的优化倾向于过度拟合小的训练数据,而DFO由于其探索机制倾向于找到更好的解决方案。- 当类的数量很大时(例如,DBPedia),Model Tuning的性能比Prompt Tuning和Black-Box Tuning要好得多。
- NLI任务上,使用预训练提示嵌入时,PromptTuning和Black-Box Tuning显著优于Model Tuning,这也证实了在黑盒调整背景下提示预训练的有效性
实验二
比较部署效率、服务的可行性( viability of as-a-service)、测试准确性、培训时间、内存占用( memory footprint)以及要上传/下载的数据量
在所有考虑的方法中,只有黑盒调优可以在保持合理的训练时间、内存占用和网络负载的同时获得令人满意的性能
消融实验
对各种超参数进行烧蚀实验,默认超参数为
消融实验图如下
- 优化器
比较了我们使用的无导数优化器CMA-ES和一阶优化器Adam
在SST-2和AG的News上实现了更快的收敛。在开发集上,Adam在SST-2上的交叉熵表现稍逊于CMA-ES,但在AG的News上表现更好
- 损失函数
考虑三个损失函数:交叉熵、铰链损失和负精度。交叉熵和铰链损失显著优于负精度,在SST2和AG的新闻中,我们发现交叉熵的表现略好于铰链损失。
- 子空间维度
优化实际执行的空间,设置种群大小λ=4+3 log(d),不同任务的最佳子空间维度可能不同(d=200在SST-2开发集上表现最好,d=500在AG的News开发集中表现最好)。一般来说,小的子空间(例如,d=100)很难覆盖好的解,而大的子空间,例如,d=1000)可能会导致较差的泛化。
也有论文指出,最佳子空间维度与数据集的类别数成正相关。
- 提示长度
在{10、20、50、100}中改变提示长度,较短的提示可以更快地收敛训练集,但不能更好地概括开发集。L=50在SST-2和AG的新闻开发集上实现了最佳精度