这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战
本文是【Prompt系列】的第三篇。在上期中,我分享了一篇 Prompt Engineering 的经典工作 AutoPrompt,介绍了一种自动设计 prompt 的方法,不需要研究者费尽心思地设计也能取得很好的效果。本期介绍的这篇论文 Null Prompts,直接“自暴自弃”,连 prompt 模板都不设计了,发现效果居然也还凑合,还顺便探究了一种局部参数学习的新思路,是一篇比较有意思的作品,分享给大家。
注:本专栏介绍这些工作的先后顺序并不意味着技术的更新和迭代,AutoPrompt、Null Prompts 等工作也都只是 Prompt 方法的一种实现思路,没有优劣之分。与此同时,还有大量 Prompt 相关工作,我也只是随便选了几篇自己更感兴趣的介绍,所以并不代表着这些工作就是最具备代表性的,请知悉。
本文于 2021 年 6 月末上传至 arXiv,第一作者 Robert L. Logan IV 来自 UC Irvine。
原文链接:Cutting Down on Prompts and Parameters: Simple Few-Shot Learning with Language Models
Motivation
手动好的 prompt 的设计依赖人类直觉,即费时费力又难以复制;之前也出现了很多自动设计 prompt 的工作(【Prompt系列】(二) [论文分享] AutoPrompt:别瞎设计了,费力不讨好 - 掘金),但是这又引入了 prompt 自身的复杂性,比如需要大型生成模型。
作者尝试直接将输入和 [MASK] 标记简单连接,即 null prompts。
Method
已有的工作表明,不同的人工设计的 prompt 微调后具有相似的准确性,作者受此启发,更进一步表明这种人工设计也是完全可以避免的。作者采用了一种极其简单粗暴的方法,直接将 [MASK] 添加在输入的末端,作为 prompt 模板。
- In-context Learning:其实就是著名的 Frozen LM。LM 通过调节 prompt 而不是更新自身参数来学习。在大型 LM 中尤为成功。
- Prompt-Based Finetuning:基于 prompt 微调 LM 的所有参数,相比于 In-context 主要优点是它可以获得更高的精度,尤其是当LM相对较小时。主要的缺点是同一模型不能在不同任务中重用。
- Null Prompts (本文):相比于 Prompt-Base Finetuning 更简单、可重用。
推荐阅读 (Frozen):学完文本知识,我就直接看懂图片了! - 夕小瑶的卖萌屋
Experiments
Prompt + Finetuning
作者对比了 6 种 prompting 方法在 9 个数据集上进行微调后的效果。
相比于传统的 [CLS] 微调,Null prompts 和 Null verbalizer 表现得更好,这也证明了 prompt 是有效的。
而尽管人工精心设计的 prompt 依然是效果最好的,作者推荐使用 Null prompts,因为更简单,效果也不错。
Prompt-Only Tuning
作者对比了 4 种 prompting 方法,包括之前提到的 AutoPrompt(【Prompt系列】(二) [论文分享] AutoPrompt:别瞎设计了,费力不讨好 - 掘金),用 Null Prompts + Fine-tuning 作为对照。
Prompt-only 的性能远低于 prompt + funetuning ,微调还是必要的。
Memory-Efficiency
frozen 的优点是内存效率高,不需要 LM 学习一组新的参数,但受 prompt 改动影响大;prompt + funetuning 效果更好,但内存效率低。作者希望实现这两者的平衡,限制模型中允许参数变化的区域,只让部分参数在学习中发生改变。作者选取了 4 种方法,只调这些方法中的部分区域,具体设置如下:
- Adapters:Transformer FNN 中的神经网络层;
- BitFit:Transformer 的 bias;
- LM Head Tuning:与 Verbalizer Tokens 相关的输出层 embedding;
- Calibration:与 Verbalizer Tokens 相关的 logits 之上仿射变换。
BitFit 方法达到了最佳的精度-效率平衡。
Summary
作者证明了 prompt + fune-tuning 的优势,展示了 Null prompts 的简单而有效。此外,作者还表明基于 prompt 的微调可以通过限制只调部分参数来提高内存效率,其中使用 BitFit 仅调 Transformer bias 是一个很好的方法。总结来说,作者给出了一种简单、精度高、内存效率高的方法:在 BitFit 中使用 Null prompts 进行微调。
往期推荐:
【Prompt系列】(一) 简介:NLP又出新范式?预训练新宠Prompt有点火 - 掘金 (juejin.cn)
【Prompt系列】(二) [论文分享] AutoPrompt:别瞎设计了,费力不讨好 - 掘金 (juejin.cn)