原文:Prompt 学习和微调综述 (Prompt Learning and Tuning)

一文总结Prompt Learning/Tuning。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

Self-Attention 和 Transformer 自从问世就成为了自然语言处理领域的新星. 得益于全局的注意力机制和并行化的训练, 基于 Transformer 的自然语言模型能够方便的编码长距离依赖关系, 同时在大规模自然语言数据集上并行训练成为可能. 但由于自然语言任务种类繁多, 且任务之间的差别不太大, 所以为每个任务单独微调一份大模型很不划算. 在 CV 中, 不同的图像识别任务往往也需要微调整个大模型, 也显得不够经济. Prompt Learning 的提出给这个问题提供了一个很好的方向.

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

1. 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), 即为预训练任务和微调任务设计更好的目标函数.

2. 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 的形状划分: 完形填空式, 前缀式.

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

人工设计的 Prompt

3. 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]

Visual Prompt Tuning

  • VPT-Shallow

  • VPT-Deep

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 通过梯度随分类目标一起优化.

L2P

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

3.3.3 多模态模型

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

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

CLIP

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

Prompt engineering vs Context Optimization (CoOp)

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

  • [CLASS] 放在后面:

  • [CLASS] 放在中间:

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

Learning to Prompt for Vision-Language Model

Learning to Prompt for Vision-Language Model

Conditional Prompt Learning for Vision-Language Models[11]

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

To learn generalizable prompts

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

To learn generalizable prompts

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

To learn generalizable prompts

3.3.4 域适应

Domain Adaptation via Prompt Learning[12]

用 prompt 来标识 domain 的信息.

Example prompt structure

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

Domain Adaptation with Prompt Learning

参考

  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

Prompt 学习和微调综述 (Prompt Learning and Tuning)相关推荐

  1. 综述!Prompt 学习和微调(Prompt Learning and Tuning)

    作者丨Jarvis73 整理丨极市平台 https://zhuanlan.zhihu.com/p/601905339 大家好,这里是 NewBeeNLP. Self-Attention 和 Trans ...

  2. 【推荐算法】深度学习推荐算法综述 Deep Learning based Recommender System: A Survey and New Perspectives

    一.MLP based Recommender System 1. Deep Crossing模型 Deep Crossing模型完整的解决了从特征工程.稀疏向量稠密化.多层神经网络进行优化目标拟合等 ...

  3. 《预训练周刊》第19期:歧义短语的类量子语境性研究、自然语言处理中prompt方法的系统综述...

    No.19 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第19期&l ...

  4. 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(4)

    深度学习还没入门?看看深度学习三巨头的Deep Learning综述(1) 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(2) 深度学习还没入门?看看深度学习三巨头的Deep ...

  5. 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(1)

    深度学习还没入门?看看深度学习三巨头的Deep Learning综述(1) 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(2) 深度学习还没入门?看看深度学习三巨头的Deep ...

  6. 强化学习泛化性 综述论文阅读 A SURVEY OF GENERALISATION IN DEEP REINFORCEMENT LEARNING

    强化学习泛化性 综述论文阅读 摘要 一.介绍 二.相关工作:强化学习子领域的survey 三.强化学习中的泛化的形式 3.1 监督学习中泛化性 3.2 强化学习泛化性背景 3.3 上下文马尔可夫决策过 ...

  7. NLP第四范式:Prompt概述【Pre-train,Prompt(提示),Predict】【刘鹏飞】

    一.概述 1.prompt的含义 prompt顾名思义就是"提示"的意思,应该有人玩过你画我猜这个游戏吧,对方根据一个词语画一幅画,我们来猜他画的是什么,因为有太多灵魂画手了,画风 ...

  8. 深度学习超分辨率综述阅读笔记(翻译)

    深度学习超分辨率综述阅读笔记(翻译) https://arxiv.org/abs/1902.06068 摘要:图像超分辨率(SR)是计算机视觉中增强图像和视频分辨率的一类重要图像处理技术.近几年来,图 ...

  9. 论文合集 | 李飞飞新论文:深度学习代码搜索综述;Adobe用GAN生成动画(附地址)...

    来源:机器之心 本文约3200字,建议阅读7分钟. 本文介绍了李飞飞新论文,深度学习代码搜索综述,Adobe用GAN生成动画. 本周有李飞飞.朱玉可等的图像因果推理和吴恩达等的 NGBoost 新论文 ...

最新文章

  1. layui根据条件显示列_layui按条件隐藏表格列的实例
  2. 【Verilog HDL】设计硬件电路时,如何避免生成锁存器?
  3. 大牛的距离(笑cry)精简算法
  4. 制作模板_年会邀请函制作免费模板
  5. 从C++20 shared_ptr移除unique()方法浅析多线程同步
  6. Java EE 8怎么了? (第2部分)
  7. 20190624 Oracle 表分析
  8. 流行的某导航网站系统源码 收录系统源码
  9. brew安装php-ffmpeg,mac 系统编译安装ffmpeg
  10. dev c++自动补全_Flutter 自动化测试-开篇
  11. 美联储FOMC会议前瞻:预计美联储将维持目前的政策不变
  12. java的oracle事务回滚_Oracle事务处理
  13. 面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?
  14. VS编译报错Error2019
  15. word文档里怎么撤回上一步的操作
  16. coreapi自动生成API接口文档
  17. ORA-00600_内部错误代码_参数19004
  18. 《长尾理论》读书笔记
  19. python 知识成长(持续更新)
  20. 快速学习-视频点播解决方案

热门文章

  1. 【Vi 编辑器进阶】
  2. C++ —— 友元函数
  3. 计算机无法识别华为m3,华为M3平板怎么开启学生模式过滤不良网站?
  4. 林依轮创业做餐饮,经历3轮融资,如今公司市值达3.6亿元
  5. 黑马学成在线项目之Day4实战
  6. WebBench学习
  7. 前端excel导出适应中国式复杂报表
  8. 千万别让富坚义博看到这个
  9. ipython console_Python 安装IPython以及qtconsole
  10. MRI图像处理——图片不均的校正