Fine-tune之后的NLP新范式:Prompt越来越火,CMU华人博士后出了篇综述文章

文 | 刘鹏飞
源 | 机器之心

CMU 博士后研究员刘鹏飞:近代自然语言处理技术发展的第四范式可能是预训练语言模型加持下的 Prompt Learning。

近几年,NLP 技术发展迅猛,特别是 BERT 的出现,开启了 NLP 领域新一轮的发展。

从 BERT 开始,对预训练模型进行 finetune 已经成为了整个领域的常规范式。

但是从 GPT-3 开始,一种新的范式开始引起大家的关注并越来越流行:prompting。

近段时间以来,我们可以看到大量有关 prompting 的论文出现。从清华大学开源的论文列表 thunlp / PromptPapers 中,我们可以看到大量的相关研究。

项目地址:
https://github.com/thunlp/PromptPapers

作为一个值得关注、学习的新方向,近日来自 CMU 的博士生刘鹏飞新推出的一篇相关综述论文作为学习资源备受推崇。

▲清华大学刘知远老师微博推荐

在这篇文章中,机器之心也把该论文推荐给大家。

论文地址:
https://arxiv.org/pdf/2107.13586.pdf

背景介绍

全监督学习,即仅在目标任务的输入输出样本数据集上训练特定任务模型,长期以来在许多机器学习任务中发挥着核心作用,同样的,全监督学习在 NLP 领域也非常重要。但是全监督的数据集对于学习高质量的模型来说是不充足的,早期的 NLP 模型严重依赖特征工程。随着用于 NLP 任务的神经网络出现,使得特征学习与模型训练相结合,研究者将研究重点转向了架构工程,即通过设计一个网络架构能够学习数据特征。

▲NLP 中的四种范式

然而,从 2017-2019 年开始,NLP 模型发生了翻天覆地的变化,这种全监督范式发挥的作用越来越小。具体而言,研究重点开始转向预训练、微调范式。在这一范式下,一个具有固定架构的模型通过预训练作为语言模型(LM),用来预测观测到的文本数据的概率。由于训练 LM 所需的原始文本数据需要足够丰富,因此,这些 LM 都是在比较大的数据集上训练完成。之后,通过引入额外的参数,并使用特定任务的目标函数对模型进行微调,将预训练 LM 适应于不同的下游任务。在这种范式下,研究重点转向了目标工程,设计在预训练和微调阶段使用的训练目标(损失函数)。

当前我们正处于第二次巨变中,「预训练、微调」过程被称为「预训练、prompt 和预测」的过程所取代。在这种范式中,不是通过目标工程使预训练的语言模型(LM)适应下游任务,而是重新形式化(Reformulate)下游任务,使其看起来更像是在文本 prompt 的帮助下在原始 LM 训练期间解决的任务。通过这种方式,选择适当的 prompt,该方法可以操纵模型的行为,以便预训练的 LM 本身可以用于预测所需的输出,有时甚至无需任何额外的特定任务训练。这种方法的优点是给定一组合适的 prompt,以完全无监督的方式训练的单个 LM 就能够用于解决大量任务。然而该方法也存在一个问题——这种方法引入了 prompt 挖掘工程的必要性,即需要找出最合适的 prompt 来让 LM 解决面临的任务。

该综述研究试图通过提供 prompting 方法的概述和形式化定义,以及使用这些 prompt 的预训练语言模型的概述,来梳理这一迅速发展领域的当前知识状态。然后该论文对 prompt 方法进行了深入的讨论,包括 prompt 工程、answer 工程等基础和多 prompt 学习方法、prompt 相关的训练方法等更高级的概念。

然后,该研究列出了已有的基于 prompt 学习方法的多种应用,并探讨了不同应用场景中如何选择合适的训练方法。最后,该研究尝试在研究生态系统中定位 prompt 方法的当前状态,并与其他研究领域建立联系。此外,该研究提出一些可能适合进一步研究的挑战性问题,并针对当前研究趋势进行了分析。

prompting 的正确描述

在传统的用于 NLP 任务的监督学习系统中,输入 x 通常是文本数据,并基于模型 P(y|x; θ) 预测输出 y。但是,监督学习面临的一个主要问题是,即为了训练模型 P(y|x; θ),必须要有用于训练任务的监督数据,但找到这种适用数据是比较困难的。

在 NLP 中,基于 Prompt 的学习方法试图通过学习 LM 来规避这一问题,该 LM 对文本 x 本身的概率 P(x; θ) 进行建模并使用该概率来预测 y,从而减少或消除了训练模型对大型监督数据集的需求。

本节中研究者对最基本的 Prompt 形式进行了数学描述,其中包含许多有关 Prompt 的工作,并且可以扩展到其他内容。具体来说,基础 Prompt 分三步预测得分最高的 ^y,即 prompt 添加、answer 搜索和 answer 映射。

下表 2 为 prompting 方法的术语和符号。

▲prompting 方法的术语和符号。

下表 3 为不同任务的输入、模板和 answer 示例:

▲不同任务的输入、模板和 answer 示例

Prompting 的一些设计考虑

现在有了 Prompting 的基本数学公式,下面详细阐述了关于 Prompting 设计考虑:

  • 预训练模型选择:有许多预训练 LM 可以用来计算 P(x; θ)。在第 3 章中,研究者对预训练 LM 进行了初步的介绍;

  • Prompt 工程:如果 prompt 指定了任务,那么选择正确的 prompt 不仅对准确率影响很大,而且对模型首先执行的任务也有很大影响。在第 4 章中,研究者讨论了应该选择哪个 prompt 作为 f_prompt(x) 方法;

  • Answer 工程:根据任务的不同,会有不同的方式设计 Z (Answer),可能会和映射函数一起使用。在第 5 章中,详细介绍了不同的设计方式;

  • 扩展范式:如上所述, 上面的公式仅仅代表了各种底层框架中最简单的一种,这些框架已经被提议用于执行各种 prompting。在 第 6 章中,研究者讨论了扩展这种基本范式以进一步提高结果或适用性的方法;

  • 基于 Prompt 的训练策略:在第 7 章中,研究者总结了不同的训练策略并详细说明它们的相对优势。

下图 1 为本文结构概览:

Prompt 工程

Prompt 工程是创建 prompting 函数 f_prompt(x) 的过程,该函数可在下游任务上获得最有效的性能。在此前的许多工作中,这涉及到 prompt 模板工程,其中人类工程师或算法需要为模型预期执行的每个任务搜索最佳模板。如图 1 的「Prompt Engineering」部分所示,首先要考虑 prompt 的形式,然后决定是采用手动还是自动的方式来创建所需形式的 prompt,具体如下:

Prompt 的形式

Prompt 主要有两种主要类型:填充文本字符串空白的完形填空(Cloze)prompt,和用于延续字符串前缀的前缀 (Prefix) prompt。

选择哪一个取决于任务和用于解决任务的模型。一般来说,对于有关生成的任务或使用标准自回归 LM 解决的任务,前缀 prompt 往往更有帮助,因为它们与模型从左到右的性质刚好吻合。对于使用掩码 (Mask) LM 解决的任务(比如,BERT),完形填空 prompt 则非常合适,因为它们与预训练任务的形式非常匹配。全文本重建模型则可以与完形填空 prompt 或前缀 prompt 一起使用。最后,对于一些涉及多个输入的任务,例如文本对分类,prompt 模板必须包含至少两个输入的空间。

手工模板工程

创建 prompt 最自然的方式也许是基于手工创建比较直观的模板。例如, LAMA 数据集提供了手工创建的完形填空模板来探索 LM 中的知识。Brown 等在 2020 年创建了手工制作的前缀 prompt 来处理各种各样的任务,包括问答、翻译和常识推理的探索任务。

自动化模板学习

虽然手工制作模板的策略很直观,并且确实可以在一定程度上准确地解决各种任务,但这种方法也存在一些问题:

  • 创建和对这些 prompt 进行实验需要大量的时间和经验,特别是对于一些复杂的任务,例如语义解析(Shin 等,2021);

  • 即使是经验丰富的 prompt 设计者可能也无法手工发现最佳的 prompt(Jiang 等,2020c)。

为了解决这些问题,很多研究提出了一些自动化模板设计过程的新方法。特别地,自动化搜索的 prompt 可以进一步被分为离散 prompt(其中 prompt 是一个实际的文本字符串)和连续 prompt(其中 prompt 直接在底层 LM 的嵌入空间中进行描述。

answer 工程

与 prompt 工程相反,answer 工程的目的是搜索一个 answer 空间 Z 和一个到原始输出 Y 的映射,从而得到一个有效的预测模型。图 1 中的 answer 挖掘工程部分说明了在执行 answer 工程时必须考虑的两个维度:确定 answer 形式和选择 answer 设计方法。

answer 形式

answer 的形式决定了它的粒度,一些常见的选择包括:

  • Token:预训练 LM 词汇表中的一个 token,或者词汇子集;

  • Span:短的 multi-token span,这些通常与 cloze prompt 一起使用;

  • 句子或文档:这些通常与前缀 prompt 一起使用。

answer 空间设计方法

如何设计适当的 answer 空间 Z,以及如果 answer 不用作最终输出,如何设计到输出空间 Y 的映射。可以采取多种策略来执行此设计。

与手动创建 prompt 一样,手动创建 answer 可能不是 LM 实现理想预测性能的最佳选择。因此,有一些关于自动 answer 搜索的工作,尽管少于搜索理想 prompt 的工作,但这些方法适用于离散 answer 空间和连续 answer 空间。

multi-prompt 学习

以上探讨的 prompt 工程方法主要集中于为输入构建单个 prompt。但是,大量的研究表明,多重 prompt 可以进一步提升 prompting 方法的效果,他们将这些方法称为 multi-prompt 学习方法。在实践中,有数种方法可以将单个 prompt 学习扩展至 multi-prompt,如下图 4 所示,这些方法包括如下:

  • prompt 集成

  • prompt 增强

  • prompt 合成

  • prompt 分解

prompting 方法的训练策略

通过上文提到的方法,现在如何获得适当的 prompt 和对应的 answer 已经非常清楚了。因此下一步研究者探讨了显式训练与 prompting 方法一致的模型的方法。

训练设置

在很多情况下,无需对下游任务的语言模型进行任何显式训练即可使用 prompting 方法,只需采用训练用于预测文本 P(x)出现概率的语言模型并按原样用它填充为指定任务定义的完形填空或前缀 prompt 就行了。这在传统上被称为零样本设置,因为感兴趣任务的训练数据为零。

但学界依然有一些方法使用训练数据来训练与 prompting 方法一致的模型,它们包括全数据学习或少样本学习。prompting 方法在少样本学习中非常有用,因为通常没有足够的训练示例来完全指定期望的行为,因此使用 prompt 将模型推向正确的方向特别有效。

参数更新方法

在基于 prompt 的下游任务学习中,通常存在两种类型的参数,即来自预训练模型和 prompt 的参数。哪类参数应该更新是一项重要的设计决策,可以在不同场景中产生不同程度的适用性。

研究者基于底层语言模型的参数是否需要调整、是否有额外的 prompt 参数和这些额外的 prompt 参数是否需要调整这三个方面总结以下 5 种调整策略,如下表 6 所示,它们分别为:

  • Promptless Fine-tuning

  • Tuning-free Prompting

  • Fixed-LM Prompt Tuning

  • Fixed-prompt LM Tuning

  • Prompt+LM Fine-tuning

应用

根据研究者的调研,prompt 方法在以下诸多领域具有广泛的应用:

  • 知识探索(事实探索和语言学探索)

  • 分类任务(文本分类和自然语言推理)

  • 信息提取(关系提取、语义分析和命名实体识别)

  • NLP 中的推理(常识推理和数学推理)

  • 问答

  • 文本生成

  • 文本生成的自动评估

  • 多模态学习

  • 元应用(域自适应、除偏和数据集创建)

具体研究工作以及相应任务如下表 7 和 8 所示:

研究者为不同的 prompt 应用收集了一些有用的资源,并且设计用于少样本和零样本学习的一些数据集如下表 9 所示:

下表 10 展示了现有手动设计的常用 prompt,它们可以看作是适用于未来研究和应用的现成资源。

Prompt 相关研究主题

研究者总结了与 prompt 相关的主题,包括集成学习、少样本学习、更大规模上下文学习、查询重构、基于问答的多任务学习、可控生成、监督注意力和数据增强。

刘博士在知乎上也写了一篇文章介绍 promoting,感兴趣的同学可以浏览查看:https://zhuanlan.zhihu.com/p/395115779

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学习网站

1 w3school 2 掘金 3 b站 4 牛客网 5 leetcode 6 慕课网

会议交流 | 世界人工智能大会“大数据关联”论坛举行

转载公众号 | 创邻科技2021年7月8日,由世界人工智能大会组委会与浙江创邻科技有限公司共同筹办的“大数据关联时代下的图数据库技术与应用论坛”在上海世博中心圆满落幕。论坛邀请了清华大学、北京大学、复旦大学、浙江大学、天津大学等多位学术届的思想领袖和工商银…

LeetCode 994. 腐烂的橘子(图的BFS)

1. 题目 在给定的网格中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂…

美团酒店直连产品数据一致性演进

美团酒店直连项目自2013年末开始,通过业务上的不断完善和技术上的不断改进,至今已经接入200多家供应商,其中在线酒店3万以上,在线SPU30万以上。经过两年的成长,美团酒店直连平台终于在2015年末发展为国内最大的酒店直连…

直击行业痛点!端侧模型部署的成熟解决方案有了!

深度学习经过多年发展,AI已经深入人心,事实上,在图像、文本领域,AI在多个产业已经落地了诸多应用,我们熟知的自动驾驶、语音助手,背后就大量运用了AI技术。当下,飞桨PaddlePaddle、TensorFlow、…

OpenKG开源系列 | 大规模中文概念图谱OpenConcepts (浙江大学)

OpenKG地址:http://openkg.cn/dataset/openconcept官网:http://openconcepts.openkg.cn(提供Dump)开放许可协议:CC BY-SA 4.0(署名-相同共享)OpenConcepts 介绍OpenConcepts (http://openconcepts.openkg.c…

LeetCode 594. 最长和谐子序列(map)

文章目录1. 题目2. 解题2.1 map两次扫描2.2 map一次扫描1. 题目 和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。 现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。 示例 1: 输入: [1,3,2,2,5,2,3,7] …

MTDDL——美团点评分布式数据访问层中间件

2016年Q3季度初,在美团外卖上单2.0项目上线后,商家和商品数量急速增长,预估商品库的容量和写峰值QPS会很快遇到巨大压力。随之而来也会影响线上服务的查询性能、DB(数据库,以下统一称DB)主从延迟、表变更困…

python 23中设计模式 工厂模式与抽象工厂及应用场景

#https://zhuanlan.zhihu.com/p/57869247 #工厂模式 # -*- coding:utf-8 -*-class A:def __init__(self):self.word "运行A"def run(self):print(self.word)class B:def __init__(self):self.word "运行B"def run(self):print(self.word)def Interface(c…

详解预训练模型、信息抽取、文本生成、知识图谱、对话系统技术

我们正处在信息爆炸的时代、面对每天铺天盖地的网络资源和论文、很多时候我们面临的问题并不是缺资源,而是找准资源并高效学习。其次,即便网络上的资源非常多,学习是需要成本的,而且越有深度的内容越难找到好的学习资源。如果一门…

会议交流 | 欢迎注册 CCKS2021 全国知识图谱与语义计算大会!

欢迎注册 CCKS2021 全国知识图谱与语义计算大会知万物过去 谱AI未来2021年8月18日至8月21日 广州http://sigkg.cn/ccks2021主办:中国中文信息学会语言与知识计算专业委员会 承办:广东外语外贸大学注册介绍早期注册 1800元/人2021年7月28日前&…

LeetCode 1171. 从链表中删去总和值为零的连续节点(哈希表)

1. 题目 给你一个链表的头节点 head,请你编写代码,反复删去链表中由 总和 值为 0 的连续节点组成的序列,直到不存在这样的序列为止。 删除完毕后,请你返回最终结果链表的头节点。 你可以返回任何满足题目要求的答案。 &#x…

移动端性能监控方案Hertz

性能问题是造成App用户流失的罪魁祸首之一。App的性能问题包括崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等等。而导致App性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线程、锁、系统函数、…

pytorch学习教程

pytorch一小时入门教程 from __future__ import print_function import torch#初始化5*3的矩阵 x torch.empty(5, 3) print("x0",x) #创建一个随机初始化矩阵 x torch.rand(5, 3) print("x1",x) #以0填充的矩阵,并定义type x torch.zeros(5…

刷新SOTA!Salesforce提出跨模态对比学习新方法,仅需4M图像数据!

文 | 子龙多模态已经不是一个新鲜的话题,如何在一个模型中融合CV和NLP的信息同时吸引了两个领域的目光(CV、NLP的会都能投),但是很容易就能想到,来自图片的视觉特征和来自语料的文本特征来自不同的模型,所隐…

论文浅尝 - ACL2021 | 探讨跨句事件联合抽取问题

转载公众号 | 浙大KG论文题目:MLBiNet: A Cross-Sentence Collective Event Detection Network本文作者:娄东方、廖智霖、邓淑敏、张宁豫、陈华钧(浙江大学)接收会议:ACL 2021论文链接:https://arxiv.org/p…

LeetCode 343. 整数拆分(DP)

1. 题目 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 1 1, 1 1 1。示例 2: 输入: 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 说明: 你可以假设 …

python-dotenv解析env文件

python-dotenv解析env文件 最简单和最常见的用法是在应用程序启动时调用load_dotenv,从当前目录或其父目录中的.env文件或指定的路径加载环境变量,然后调用os.getenv提供的与环境相关的方法 .env 文件内容写法 ADMIN_HOST https://uat-rm-gwaaa.cn A…

HDFS NameNode内存详解

前言 《HDFS NameNode内存全景》中,我们从NameNode内部数据结构的视角,对它的内存全景及几个关键数据结构进行了简单解读,并结合实际场景介绍了NameNode可能遇到的问题,还有业界进行横向扩展方面的多种可借鉴解决方案。 事实上&am…

组队瓜分百万奖金池,资深算法工程师带你挑战飞桨论文复现赛!

你是否正在焦虑找不到好的论文?好不容易找到了paper,无法复现出code?缺少科研同行交流,只能独自一人闭门造车?是的,论文复现是要想最快的学习和了解AI领域的方式,复现困境也被叫做“徘徊在 AI 上…