一文详解Prompt学习和微调(Prompt Learning & Prompt Tuning)

41f3b7c963014b3caad98e947e213059.gif

©作者 | 张建伟

单位 | 浙江大学

研究方向 | 小样本学习、图像分割

Self-Attention 和 Transformer 自从问世就成为了自然语言处理领域的新星。得益于全局的注意力机制和并行化的训练,基于 Transformer 的自然语言模型能够方便的编码长距离依赖关系,同时在大规模自然语言数据集上并行训练成为可能。但由于自然语言任务种类繁多,且任务之间的差别不太大,所以为每个任务单独微调一份大模型很不划算。

在 CV 中,不同的图像识别任务往往也需要微调整个大模型,也显得不够经济。Prompt Learning 的提出给这个问题提供了一个很好的方向。

本文关于 NLP 的部分主要参考综述 [1]。

443cb661a15f3cef40e47a31bfcd3b7c.png

NLP 模型的发展

过去许多机器学习方法是基于全监督学习(fully supervised learning)的。

由于监督学习需要大量的数据学习性能优异的模型,而在 NLP 中大规模训练数据(指为特定任务而标注好的数据)是不足的,因此在深度学习出现之前研究者通常聚焦于特征工程(feature engineering),即利用领域知识从数据中提取好的特征;

在深度学习出现之后, 由于特征可以从数据中习得,因此研究者转向了结构工程(architecture engineering),即通过通过设计一个合适的网络结构来把归纳偏置(inductive bias)引入模型中,从而有利于学习好的特征。

在 2017-2019 年,NLP 模型开始转向一个新的模式(BERT),即预训练 + 微调(pre-train and fine-tune)。在这个模式中, 先用一个固定的结构预训练一个语言模型(language model, LM)预训练的方式就是让模型补全上下文(比如完形填空)。

由于预训练不需要专家知识,因此可以在网络上搜集的大规模文本上直接进行训练。然后这个 LM 通过引入额外的参数或微调来适应到下游任务上。此时研究者转向了目标工程(objective engineering),即为预训练任务和微调任务设计更好的目标函数。

48731a5f07412aa698a7fee01830f84c.png

Prompt Learning

2.1 什么是 Prompt?

在做 objective engineering 的过程中,研究者发现让下游任务的目标与预训练的目标对齐是有好的。因此下游任务通过引入文本提示符(textual prompt),把原来的任务目标重构为与预训练模型一致的填空题。

比如一个输入 “I missed the bus today.” 的重构:

情感预测任务。输入:“I missed the bus today. I felt so___.” 其中 “I felt so” 就是提示词(prompt),然后使用 LM 用一个表示情感的词填空。

 翻译任务。输入:“English: I missed the bus today. French: ___.” 其中 “English:” 和 “French:” 就是提示词,然后使用 LM 应该再空位填入相应的法语句子。

我们发现用不同的 prompt 加到相同的输入上,就能实现不同的任务,从而使得下游任务可以很好的对齐到预训练任务上,实现更好的预测效果。

后来研究者发现,在同一个任务上使用不同的 prompt,预测效果也会有显著差异,因此现在有许多研究开始聚焦于 prompt engineering。

2.2 有哪些预训练模型?

● Left-to-Right LM: GPT, GPT-2, GPT-3

● Masked LM: BERT, RoBERTa

● Prefix LM: UniLM1, UniLM2

● Encoder-Decoder: T5, MASS, BART

2.3 有哪些Prompt Learning的方法?

● 按照 prompt 的形状划分:完形填空式,前缀式。

● 按照人的参与与否:人工设计的,自动的(离散的,连续的)

250614a899372919cdbe9f66bd15d8eb.png

▲ 人工设计的 Prompt

942222382a0d76a67747f9f3d1834a2b.png

Prompt Tuning

3.1 Fine-tune的策略

在下游任务上微调大规模预训练模型已经成为大量 NLP 和 CV 任务常用的训练模式。然而,随着模型尺寸和任务数量越来越多,微调整个模型的方法会储存每个微调任务的模型副本, 消耗大量的储存空间。尤其是在边缘设备上存储空间和网络速度有限的情况下,共享参数就变得尤为重要。

一个比较直接的共享参数的方法是只微调部分参数,或者向预训练模型中加入少量额外的参数。比如,对于分类任务:

● Linear:只微调分类器 (一个线性层), 冻结整个骨干网络。

● Partial-k:只微调骨干网络最后的 k 层, 冻结其他层 [2][3]。

● MLP-k:增加一个 k 层的 MLP 作为分类器。

● Side-tuning [4]:训练一个 “side” 网络,然后融合预训练特征和 “side” 网络的特征后输入分类器。

● Bias:只微调预训练网络的 bias 参数 [5][6]。

● Adapter [7]:通过残差结构,把额外的 MLP 模块插入 Transformer。

近年来,Transformer 模型在 NLP 和 CV 上大放异彩。基于 Transformer 的模型在大量 CV 任务上已经比肩甚至超过基于卷积的模型。

Transformer 与 ConvNet 比较:Transformer 相比于 ConvNet 的一个显著的特点是:它们在对于空间(时间)维度的操作是不同的。

● ConvNet:卷积核在空间维度上执行卷积操作,因此空间内不同位置的特征通过卷积(可学习的)操作融合信息, 且只在局部区域融合。

● Transformer:空间(时间)维度内不同位置的特征通过 Attention(非学习的)操作融合信息,且在全局上融合。

Transformer 在特征融合时非学习的策略使得其很容易的通过增加额外的 feature 来扩展模型。

3.2 NLP中基于Prompt的fine-tune

● Prefix-Tuning

● Prompt-Tuning

● P-Tuning

● P-Tuning-v2


3.3 CV中基于Prompt的fine-tuning


3.3.1 分类

Visual Prompt Tuning [8]

69a9bfa9e6d6574895c800fd0cf71379.png

▲ Visual Prompt Tuning

● VPT-Shallow

5a5aa3735059d727b9d112ea9d3847a2.png

● VPT-Deep

71c47c96931631d574ef4d50ac983d7f.png

f20d2555c233b1010a4649cb704d8853.png

▲ VPT Results

3.3.2 持续学习

Learning to Prompt for Continue Learning [9]

引入一个 prompt pool,对每个 input,从 pool 中取出与其最近的 N 个 prompts 加入 image tokens。input 和 prompts 距离的度量通过计算 input feature 和每个 prompt 的 key 的距离来得到,这些 key 通过梯度随分类目标一起优化。

9a3ede88e9902d157dc264e9dce2e111.png

▲ L2P

464225c55bf9dfcc65521aab2ae8aa59.png

注意,最后使用 prompt 来分类。

3.3.3 多模态模型

Vision-Language Model: Context Optimization (CoOp) [10]

多模态学习的预训练模型。比如 CLIP,通过对比学习对齐文本和图像的特征空间。

cbcf2e34e1a4a54b9ec593ab00e3aa5b.png

▲ CLIP

选择不同的文本 prompt 对于精度影响较大。

6b3e5d34d45e09d7c3ab2baa2e8cc883.png

▲ Prompt engineering vs Context Optimization (CoOp)

把人工设定的 prompt 替换为 learnable 的 prompt:

● [CLASS] 放在后面:

28d57b2d58bd9f840e666484f0251036.png

● [CLASS] 放在中间:

7c0508dafa710369c142d588e20d2718.png

Prompt 可以在不同类之间公用,也可以为每个类使用不同的 prompts(对于细粒度分类任务更有效)。

c5fce9e250abfaf249ce2b6ee0f266b9.png

▲ Learning to Prompt for Vision-Language Model

ed73706febec9c42de4b6aa19e656311.png

▲ Learning to Prompt for Vision-Language Model

Conditional Prompt Learning for Vision-Language Models [11]

CoOp 在泛化到新的类别上时性能不好。

81351f466ea0a193724820597794ecb3.png

▲ To learn generalizable prompts

所以把 prompt 设计为 instance-conditional 的。

0b20b2f56bf6f4f33b7ff3dc66b73f6f.png

▲ To learn generalizable prompts

为 prompt 加上一个跟当前图像相关的特征以提高泛化性能。具体来说,先用 Image Encoder 计算当前图像的 feature,然后通过一个 Meta-Net 把 feature 映射到 prompt 的特征空间,加到 prompt 上面。

4d13f7aa93b1861062955888bc64b508.png

▲ To learn generalizable prompts

3.3.4 域适应

Domain Adaptation via Prompt Learning [12]

用 prompt 来标识 domain 的信息。

5d699dfc4cc1451a432faa7762be67cd.png

▲ Example prompt structure

通过对比学习解耦 representation 中的 class 和 domain 的表示。

581e16abc0c5e7450c28278773d4b45b.png

531617cb834d19e4eabe81bbbef40352.png

▲ Domain Adaptation with Prompt Learning

outside_default.png

参考文献

outside_default.png

[1] Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing. Pengfei Liu, Weizhe Yuan, Jinlan Fu, Zhengbao Jiang, Hiroaki Hayashi, Graham Neubig. In arXiv 2021 https://arxiv.org/abs/2107.13586

[2] How transferable are features in deep neural networks? Jason Yosinski, Jeff Clune, Yoshua Bengio, Hod Lipson. In NeruIPS 2014 https://proceedings.neurips.cc/paper/2014/hash/375c71349b295fbe2dcdca9206f20a06-Abstract.html

[3] Masked autoencoders are scalable vision learners. Kaiming He, Xinlei Chen, Saining Xie, Yanghao Li, Piotr Dollár, Ross Girshick. In arXiv 2021 https://arxiv.org/abs/2111.06377

[4] Side-tuning: a baseline for network adaptation via additive side networks. Jeffrey O. Zhang, Alexander Sax, Amir Zamir, Leonidas Guibas, Jitendra Malik. In ECCV 2020 https://link.springer.com/chapter/10.1007/978-3-030-58580-8_41

[5] Bitfit: Simple parameter-efficient fine-tuning for transformer-based masked language-models.Elad Ben Zaken, Shauli Ravfogel, Yoav Goldberg. In ACL 2022 https://arxiv.org/abs/2106.10199

[6] TinyTL: Reduce memory, not parameters for efficient on-device learning. Han Cai, Chuang Gan, Ligeng Zhu, Song Han. In NeurIPS 2020 https://proceedings.neurips.cc/paper/2020/hash/81f7acabd411274fcf65ce2070ed568a-Abstract.html

[7] Parameter-efficient transfer learning for nlp. Neil Houlsby, Andrei Giurgiu, Stanislaw Jastrzebski, Bruna Morrone, Quentin De Laroussilhe, Andrea Gesmundo, Mona Attariyan, Sylvain Gelly. In ICML 2019 http://proceedings.mlr.press/v97/houlsby19a.html

[8] Visual Prompt Tuning. Menglin Jia, Luming Tang, Bor-Chun Chen, Claire Cardie, Serge Belongie, Bharath Hariharan, Ser-Nam Lim. In arXiv 2022 https://arxiv.org/abs/2203.12119

[9] Learning to Prompt for Continual Learning. Zifeng Wang, Zizhao Zhang, Chen-Yu Lee, Han Zhang, Ruoxi Sun, Xiaoqi Ren, Guolong Su, Vincent Perot, Jennifer Dy, Tomas Pfister. In CVPR 2022 https://arxiv.org/abs/2112.08654

[10] Learning to Prompt for Vision-Language Models. Kaiyang Zhou, Jingkang Yang, Chen Change Loy, Ziwei Liu. In arXiv 2021 https://arxiv.org/abs/2109.01134

[11] Conditional Prompt Learning for Vision-Language Models. Kaiyang Zhou, Jingkang Yang, Chen Change Loy, Ziwei Liu. In CVPR 2022 https://arxiv.org/abs/2203.05557

[12] Domain Adaptation via Prompt Learning. Chunjiang Ge, Rui Huang, Mixue Xie, Zihang Lai, Shiji Song, Shuang Li, Gao Huang. In arXiv 2022 https://arxiv.org/abs/2202.06687

更多阅读

f34453ed37f105ca4f4675cc42e3dfff.png

509e602ed4e0b83a1adf15d7d02dae1e.png

39640bacce346c713eac79bf3133f476.png

d245f48a21d18eff6eff8765ef1f1d92.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

6ae6a737dd3bc33496d0f4dc98954ca6.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

cb39021c322a6761111cea87e201af68.jpeg

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值