恒源云(GPUSHARE)_未闻Prompt名(论文学习笔记)

本文详细探讨了Prompt在深度学习,特别是自然语言处理(NLP)中的应用。Prompt被解释为一种语言模板,用于将下游任务转换为预训练模型可处理的形式,如将文本分类任务转化为填空题。文章介绍了Prompt的设计、构建方法,包括Cloze Prompt和Prefix Prompt,以及人工设计和自动学习模板的策略。此外,还讨论了Prompt选择的重要性,以及面临的挑战和未来展望。
摘要由CSDN通过智能技术生成

文章来源 | 恒源云社区(专注人工智能/深度学习GPU免费加速平台,官方体验网址:https://gpushare.com)

原文作者 | Mathor

原文地址 | https://gpushare.com/forum/topic/681/%E6%9C%AA%E9%97%BBprompt%E5%90%8D?_=1635736812393&lang=zh-CN

个人觉得2021年NLP最火的两个idea,一个是对比学习(Contrastive Learning),另一个就是Prompt

浅谈我对PROMPT的理解

Prompt说简单也简单,看了几篇论文以及博客后发现其实就是构建一个语言模版,从而实现无监督训练。但是细想起来又觉得复杂,因为总感觉里面还有很多细节,因此本文就来从头梳理一下Prompt(Prompt很多地方会翻译成「范式」,但是「范式」这个词本身也不好理解,因此读者把他看作是「模板」即可)

今天我还与室友讨论预训练模型(例如BERT)到底做了什么,我给出的回答是

预训练模型提供了一个非常好的初始化参数,这组参数在预训练任务上的表现非常好(预训练损失非常低),但是由于下游任务千奇百怪,我们需要在这组参数的基础上进行Fine-tune以适应我们的下游任务(使得下游任务的损失值非常低)

上面这段话其实隐含了目前做NLP任务的大致流程,即"Pre-train, Fine-tune",而对我们来说实际上大部分时候都是直接拿别人预训练好的模型做Fine-tune,并没有Pre-train这一步

融入了Prompt的模式大致可以归纳成"Pre-train, Prompt, and Predict",在该模式中,下游任务被重新调整成类似预训练任务的形式。例如,通常的预训练任务有MLM(Masked Language Model),在文本情感分类任务中,对于"I love this movie"这句输入,可以在后面加上Prompt:“the movie is ___”,组成如下这样一句话:

I love this movie, the movie is ___

然后让预训练模型用表示情感的答案(例如"great"、"terrible"等)做完形填空,最后再将该答案转换为情感分类的标签。这样一来,我们就可以通过构造合适的「模板」,控制模型的输出空间,从而训练一个完全无监督的预训练模型来解决各种各样的下游任务

注意,Prompt设计的这种完形填空和MLM任务是有区别的,二者虽然都是都是词分类,但是候选集不同,MLM的候选词是整个词库,不过如果是生成任务,那么Prompt和MLM的候选集就是一样的,都是整个词库

如何构建PROMPT

对于输入文本 x x x,存在一个函数 f Prompt ( x ) f_{\text{Prompt}}(x) fPrompt(x),将 x x x转化成 x ‘ x ‘ x的形式,即
x ’ = f Prompt ( x ) x^{’}=f_{\text{Prompt}}(x) x=fPrompt(x)
该函数通常会进行两步操作:

  1. 使用一个模板,模板通常为一段自然语言句子,并且该句子包含两个空位置:用于填输入 x x x的位置[X]、用于生成答案文本 z z z的位置[Z]
  2. 把输入 x x x填到[X]的位置

以前文提到的例子为例,在文本情感分类任务中,假设输入是

x = "I love this movie"

使用的模板是

[X]. Overall, it was a [Z] movie

那么得到的 x ′ x ′ x就应该是

I love this movie. Overall, it was a [Z] movie

在实际情况中,Prompt来填充答案的位置一般在句中或句末。如果在句中,一般称这种Prompt为Cloze Prompt;如果在句末,一般称这种Prompt为Prefix Prompt [ X ] [X] [X] [ Z ] [Z] [Z]的位置、数量以及使用模板句的不同,都有可能对结果造成影响,因此需要灵活调整

上面讲的都是简单的情感分类任务的Prompt设计,读者看到这里自然而然的会想到,其他NLP任务的Prompt如何设计呢?实际上刘鹏飞大神在他的论文中给我们提供了一些参考
在这里插入图片描述

Text Generation中摘要任务里有一个关键字TL;DR,这其实是Too Long; Don’t Read的缩写

PROMPT的选择非常重要且困难

有上述Prompt的基础后,我们可以得知Prompt的设计主要包含两部分:

  1. 模板T:例如[X]. Overall, It was [Z]
  2. 标签词映射:即 [ Z ] [Z] [Z]位置预测输出的词汇集合与真实标签yyy构成的映射关系。例如,标签positive对应单词great,标签negative对应单词terrible

在基于Prompt的微调方法中,不同的模板和标签词对最终结果影响很大,下图是陈丹琦团队论文中的实验结果
在这里插入图片描述
从上图我们可以看出两点:

  1. 使用相同的「模板」,不同的「标签词」会产生不一样的效果。例如great/terribelcat/dog这两组标签词的效果不一样,而且即便是相同标签词,互换顺序也会导致最终效果有所变化,例如cat/dogdot/cat
  2. 使用相同「标签词」,对「模板」进行小改动(例如增删标点)也会呈现不同的结果

PROMPT的设计

Prompt大概可以从下面三个角度进行设计:

  • Prompt的形状
  • 人工设计模板
  • 自动学习模板

Prompt的形状

Prompt的形状主要指的是 [ X ] [X] [X] [ Z ] [Z] [Z]的位置和数量。上文提到的Cloze Prompt与Maksed Language Model的训练方式非常类似,因此对于MLM任务来说,Cloze Prompt更合适;对于生成任务或者使用自回归LM解决的任务,Prefix Prompt更合适

人工设计模板

Prompt的模板最开始是人工设计的,人工设计一般基于人类的自然语言知识,力求得到语义流畅且高效的「模板」。例如,Petroni等人在著名的LAMA数据集中为知识探针任务人工设计了Cloze Templates;Brown等人为问答、翻译和探针等任务设计了Prefix Templates。人工设计模板的优点是直观,但缺点是需要很多实验、经验以及语言专业知识。下图是GPT Understands, Too论文中的一个实验结果
在这里插入图片描述
可以看到不同的Prompt只有细微的区别,有的甚至只是增加减少一个词,但是最后的结果会差几十个点

自动学习模板

为了解决人工设计模板的缺点,许多研究员开始探究如何自动学习到合适的模板。自动学习的模板又可以分为离散(Discrete Prompts)和连续(Continuous Prompts)两大类。离散方法主要包括:Prompt Mining,Prompt Paraphrasing,Gradient-based Search,Prompt Generation和Prompt Scoring;连续的则主要包括Prefix Tuning,Tuning Initialized with Discrete prompts,Hard-Soft Prompt Hybrid Tuning,P-Tuning v2

离散Prompts

简单说一下上述几种方法,首先是离散的Prompt Mining,这篇文章发表在TACL 2020,讲的是如何拿预训练语言模型当作「知识库」使用,并且引入了依存树和Paraphrase(转述)等方法来挖掘更好的「模板」,下图是实验结果
在这里插入图片描述
可以看到,被挖掘出来的若干「连接谓词」相比于人工设计的「模板」结果提升还是很明显的

有很多种方法可以实现Prompt Paraphrsing,例如「回译」,我们通过DeepL翻译看个例子:
在这里插入图片描述
这样我们就得到了x shares a border with y的一个Prompt Paraphrasing:x and y share a boundary

论文BARTScore干脆给我们提供了一张表,里面有各种词组的同义替换,这个我再熟悉不过了,因为以前英语考试我也背过类似的东西
在这里插入图片描述
Gradient-based Search(基于梯度的搜索)是由论文AUTOPROMPT提出的,这篇文章发表在EMNLP 2020,它的主要思想用下面这张图就可以表示
在这里插入图片描述
上图中,a real joy是原始的输入句子 x i n p xinp xinp ,红色的Trigger tokens是由 x i n p xinp

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值