第六节:适应性
- 仅通过提示语言模型(例如,上下文学习),我们就已经可以完成一些任务。
- 然而,提示并不适用于全部的下游任务(例如,自然语言推理、问答、将网页表格转换为文本、解析电子健康记录等)。
- 下游任务在格式和主题上可能与语言模型训练数据(例如,The Pile)不同,或者需要随着时间更新新知识。
- 语言模型需要通过特定任务的数据或领域知识来适应性下游任务。
大纲:
为什么需要适应性语言模型
段落标题 为什么需要适应性语言模型-
语言模型是以任务不可知的方式训练的。
-
下游任务可能与在 The Pile 上的语言建模非常不同。
-
例如,考虑自然语言推理(NLI)任务(假设是否由前提推导?):
- 前提:我从未见过不是红色的苹果。
- 假设:我从未见过苹果。
- 正确输出:不包含推论(相反方向将是推论)
该任务的格式对模型来说可能不是很自然。
下游任务的不同之处
段落标题 下游任务的不同之处- 格式化:例如,NLI 输入两个句子并比较它们以产生单一的二元输出。这与生成下一个词汇或填充 MASK 标记不同。另一个例子是在 BERT 训练中出现的 MASK 标记与下游任务中没有 MASK 标记的情况。
- 主题转变:下游任务专注于一个新主题或非常特定的主题(例如,医疗记录)。
- 时间转变:下游任务需要在预训练期间不可用的新知识,因为 1)知识是新的(例如,GPT3 在拜登成为总统之前就训练好了),2)下游任务所需的知识不是公开可用的。
通用适应性设置
段落标题 通用适应性设置- 在适应性阶段,我们训练一个新模型,该模型依赖于预训练的语言模型参数
,这些参数参数化了语言模型 。 - 我们有一个下游数据集
,从下游任务分布 中抽取样本。 - 我们最小化一些参数
,这些参数来自参数族 ,在任务损失 (例如,交叉熵损失)上。 - 参数族
可能表示现有参数的一个子集或引入新参数。 - 优化问题输出的是适应性参数
,这些参数参数化了适应性模型 :
探测
段落标题 探测- 探测引入了一组新的参数
,定义了探测的家族,它们通常是线性或浅层前馈网络。 - 探测通常用于检查/理解模型的表示。例如,如果在表示上的简单探测能够预测词性(POS)标签,那么表示“存储”了 POS 信息。
- 对于适应性,我们训练一个探测(或预测头)从语言模型的最后一层表示到输出(例如,类别标签)。
- 主要适用于仅编码模型(例如,BERT),但解码器模型也可以使用 Liu 等人 2021。
固定长度表示的策略
段落标题 固定长度表示的策略Transformer 编码器将
- CLS 词汇 Devlin 等人 2018:在预训练和微调期间,我们在提示前加上一个特殊的词汇单元 CLS。我们使用 CLS 词汇对应的嵌入向量作为“序列级”嵌入。
- 词汇平均:另一种常见方法是对
个词汇单元取平均。注意:这不会使得模型排列不变,因为每个嵌入向量都是上下文和位置依赖的。
总结
段落标题 总结- 冻结(灰色):语言模型表示编码器
- 优化(蓝色,每个任务变化):探测(预测头)
- 模型:线性或浅层前馈预测头
微调
段落标题 微调- 微调使用语言模型参数
作为优化的初始化。 - 优化的参数族
包含所有语言模型参数和任务特定的预测头参数。 - 丢弃了预训练的优化器状态。
- 微调通常使用比预训练时小至少一个数量级的学习率,并且比预训练短得多。
- 优化的参数族
- 微调需要存储针对每个下游任务专门化的大型语言模型,这可能很昂贵。
- 然而,微调在更大的模型族上进行优化(即非常有表现力),并且通常比探测有更好的性能。
微调用于零样本性能
段落标题 微调用于零样本性能- FLAN 和 T0 微调模型以获得更好的零样本性能。
- 它们统一了许多下游任务的提示格式,并微调模型以使用此格式执行多样化的任务。
- 在看不见的任务上的零样本性能优于原始语言模型。
- 模型正在学习使用提示格式完成零样本任务。
微调用于人类对齐的语言模型
段落标题 微调用于人类对齐的语言模型-
给定提示中的指令,语言模型应该产生对用户有帮助(对用户有用)、诚实(不误导用户)和无害(不造成身体、心理或社会伤害)的输出。
-
语言建模本质上并不与这些目标对齐。
-
InstructGPT 通过 3 个步骤使语言模型 (GPT-3) 与目标对齐:
-
- 收集人类编写的期望行为的示例。在示例上进行监督微调。
-
- 在一组指令上,从步骤 1 的语言模型中为每个指令采样
个输出。收集人类对哪个采样输出最偏好的数据 - 这个数据比步骤 1 更便宜。
- 在一组指令上,从步骤 1 的语言模型中为每个指令采样
-
- 使用强化学习目标微调步骤 1 中的语言模型,以最大化人类偏好奖励。
-
-
1.3B InstructGPT 模型产生的输出比 175B GPT-3 更受偏好 85% 的时间,并且在使用少样本提示与 GPT-3 相比时为 71%。
-
在封闭领域问答/摘要中,InstructGPT 产生幻觉信息的比例为 21%,而 GPT-3 为 41%。
-
当提示要尊重时,InstructGPT 生成的有毒输出比 GPT-3 少 25%。
-
InstructGPT 没有改善偏见:在 Winogender 和 CrowSPairs 上没有太多好处。
总结
段落标题 总结- 冻结(灰色):无
- 优化(蓝色,每个任务变化):语言模型的所有参数,加上一个新的预测头
轻量级微调
段落标题 轻量级微调- 轻量级微调旨在在不需要为每个任务存储完整的语言模型的情况下,保持完整的微调表现力。
- 有许多轻量级微调的变体——我们将讨论提示调整、前缀调整和适配器调整。
- 为 T5 模型(一个编码器-解码器)上的文本分类任务开发。
- 提示调整受基于推理的适应性中提示设计/工程的启发,在输入前添加
个可学习的、连续的词汇嵌入(这定义了 ),因此输入现在长度为 ,并在标记的任务数据上进行训练。整个预训练的语言模型被冻结。 - 扩展提高了提示调整的性能:使用更大的冻结语言模型时,提示调整的性能与完整微调(“模型调整”)更具竞争力。
- 学习提示嵌入初始化策略:
- 随机词汇表词的嵌入。
- 类别标签词的嵌入。
- 随机初始化:效果不佳。
- 为 BART 和 GPT-2 模型上的语言生成任务开发。
- 对于输入前附加的
个位置,在每个注意力层中连接额外的可学习权重,用于键和值。这与提示调整不同(只有可学习的输入向量)。 - 为定义前缀调整,我们使用一个通用的注意力操作定义,它接受 3 个参数:键
,值 ,和查询 :
对于自注意力,我们设置
- 对于注意力头
,前缀调整通过连接可学习的权重 到键和值来计算更大的 的注意力 He 等人 2022:
其中
所有层的可训练参数有所帮助
- 提示调整 v2 是提示调整的全层版本。
- 所有层参数似乎对文本分类和生成都有帮助。
- 在每个(冻结的)Transformer 层之间添加一个新的学习“瓶颈”层(适配器)。
- 适配器通常是 2 层残差网络,它们独立地对序列中的每个元素
进行操作:
其中
- 注意:轻量级微调的表现力如何?复杂,因为表现力与特定的预训练语言模型相关 - 如果预训练语言模型有权重为 0,则提示/前缀调整将不起作用。
前缀/提示的并行化
段落标题 前缀/提示的并行化- 假设我们想为
个用户部署个性化模型。 - 通过前缀调整,我们可以存储
个前缀,每个用户一个。 - 通过在小批量中每个输入前添加相应的用户特定前缀,可以并行运行每个用户的个性化模型。
轻量级微调的鲁棒性
段落标题 轻量级微调的鲁棒性- 与完整微调相比,轻量级微调方法倾向于提高在不同主题或领域的文本上的分布外(OOD)性能。
- 提示调整提高 OOD 准确性:在 SQuAD 上训练并在领域外 MRQA 2019 任务上测试的提示调整与完整微调(模型调整)的 F1 结果表
- 前缀调整提高 OOD 准确性:在 XSUM 摘要任务上,模型在新闻文章上进行微调并在体育(新闻到体育)上测试,或者在“世界、英国、商业”文章上训练并在“健康、技术”文章上测试(新闻内)。
- 对于 XSUM,使用的指标是 ROUGE-L,这是一种基于与参考摘要匹配的长度
子序列的自动摘要评估指标。注意,当测试数据集不是分布外时,前缀调整的准确性通常略低于完整微调。
总体总结
段落标题 总体总结- 我们需要将大型语言模型适应性于多样化的下游任务,这些任务可能与语言建模非常不同。
- 探测在冻结的语言模型之上训练特定任务的预测头,将语言模型视为良好的表示提取器。冻结语言模型倾向于限制方法的表现力。
- 微调将大型语言模型参数视为进一步在下游任务上训练所有参数的初始化,这比探测具有更高的表现力,但成本更高,因为我们必须为每个下游任务保存整个模型。
- 轻量级微调通过仅优化少数参数(不到模型的 1%),在微调和探测之间取得平衡,但它优化了模型的高杠杆部分,因此仍然非常具有表现力。
拓展阅读
段落标题 拓展阅读-
多任务提示训练实现零样本任务泛化。Victor Sanh, Albert Webson, Colin Raffel, Stephen H. Bach, Lintang A. Sutawika, Zaid Alyafeai, Antoine Chaffin, Arnaud Stiegler, Teven Le Scao, Arun Raja, Manan Dey, M SAIFUL BARI, Canwen Xu, Urmish Thakker, Shanya Sharma Sharma, Eliza Szczechla, Taewoon Kim, Gunjan Chhablani, Nihal V. Nayak, Debajyoti Datta, Jonathan Chang, Mike Tian-Jian Jiang, Han Wang, Matteo Manica, Sheng Shen, Zheng Xin Yong, Harshit Pandey, Rachel Bawden, Thomas Wang, Trishala Neeraj, Jos Rozen, Abheesht Sharma, Andrea Santilli, Thibault Févry, Jason Alan Fries, Ryan Teehan, Stella Rose Biderman, Leo Gao, T. Bers, Thomas Wolf, Alexander M. Rush。2021。 引入了 BigScience 的 T0。
-
微调语言模型是零样本学习者。Jason Wei, Maarten Bosma, Vincent Zhao, Kelvin Guu, Adams Wei Yu, Brian Lester, Nan Du, Andrew M. Dai, Quoc V. Le。2021。 引入了 Google 的 FLAN。
-
前缀调整:为生成优化连续提示。Xiang Lisa Li, Percy Liang。ACL/IJCNLP 2021。
-
用人类反馈训练语言模型遵循指令.Long Ouyang, Jeff Wu Xu Jiang, Diogo Almeida, Carroll L. Wainwright, Pamela Mishkin, Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, John Schulman, Jacob Hilton, Fraser Kelton, Luke Miller, Maddie Simens, Amanda Askell†, Peter Welinder, Paul Christiano, Jan Leike, Ryan Lowe. InstructGPT 论文。
-
规模对于参数高效提示调整的力量,Brian Lester, Rami Al-Rfou, Noah Constant. EMNLP 2021. 引入了提示调整。
-
朝着参数高效迁移学习的统一视角,Junxian He, Chunting Zhou, Xuezhe Ma, Taylor Berg-Kirkpatrick, Graham Neubig. ICLR 2022。
-
P-调整 v2:提示调整可以在规模和任务上与微调相媲美,Xiao Liu, Kaixuan Ji, Yicheng Fu, Zhengxiao Du, Zhilin Yang, Jie Tang. arXiv 2021。