【一起入门NLP】中科院自然语言处理第16课-简明扼要:红到发紫的prompt是什么?【上】

  前几天自然语言处理课学到了“预训练语言模型”这一章,在最后老师介绍了今年刚刚提出来的Prompt,并强调:这东西现在很火🔥,想发论文的赶紧行动。由于和我的研究方向相关,因此打算对Prompt做一个系统的调研。我们现在开始吧!
在这里插入图片描述

从四大范式到Prompt

  在NLP的发展过程中,经历了4大范式,这里的范式不禁让人想起数据库中学到范式,可不要想多了哦,所谓的范式就是指建模方式

第一范式:特征工程

  非神经网络时代的完全监督学习:在概率统计时代,靠人工来进行大量的特征提取,依赖于大量的监督数据。
在这里插入图片描述

第二范式:架构工程

  基于神经网络的完全监督学习:来到了深度学习时代,实现了自动获取特征来进行端到端的分类,但是仍然需要人工来设计合理的网络结构,模型的性能也依赖于大量数据集
在这里插入图片描述

第三范式:目标工程

  预训练-精调范式(Pre-train,Fine-tune):第三范式也是目前正流行的一种建模方式。它分为两个阶段:

  • 第一阶段(Pre-train):利用大型语料库完成预训练模型的无监督学习。第一阶段的训练结束之后这个语言模型(LM)获得了大量的知识。
  • 第二阶段(Fine-tune):预训练语言模型之后接上一个下游任务,只需要少量任务数据进行监督学习,微调预训练语言模型,就可以完成这个下游任务。

  由于预训练完成之后,这个“博学多才”的语言模型并不是什么都会,所以在fine-tune阶段,最重要的工作是✨:引入一些额外的参数,对这个模型进行微调,让他适应于下游的分类任务。
在这里插入图片描述

  因为频繁提到了“预训练语言模型”这个词,因此有必要在这里做一个简单的补充。已经理解了的读者可以跳过这一小段~

以Bert为例:
  Bert是一个堆叠的双向Transformer Encoder,有自己的输入输出和隐藏层,是一个完整的结构。下面以下图为例说明Bert的训练和预测过程:

  • 训练:输入句子:“武则天是中国第一个女皇帝”,首先将这个输入挖空,处理成“武【mask】天是中国第一个【mask】皇帝”,经过Bert之后输出的是概率分布,对于第一个mask,【则】的概率应该是最大的,对于第二个mask【女】的概率应该是最大的。不断地给Bert喂大量的语料来训练,最后将得到一个非常擅长做完形填空的Bert。需要强调的是,Bert的训练是无监督的,因为输入和标准答案都是句子本身(第一个mask的标准答案“则”,就存在于输入句子中),更严谨的说法是【自监督】,总之,预训练过程不需要对数据进行标注。
  • 预测:模型被训练好了之后,给Bert任意一个句子,比如:“【mask】是中国的首都”,Bert能很快地预测出答案为“北京”。
  • 可以粗糙地把Bert理解为:一位博学多识的完形填空满分选手
    在这里插入图片描述

  在prompt出来之前,预训练思想也被用来解决很多小样本场景的问题。这是因为,获取大量无标签的文本数据相对简单,获取有标签的训练数据相对困难,而预训练方式只需要在第二阶段fine-tune时使用少量的有标签数据就可以达到直接用大规模数据训练的效果。

此处再插播一个冷知识:在很多关于预训练语言模型的论文或者博文中,你是不是经常看到这些动画人物呢?
在这里插入图片描述
这些动画人物是《芝麻街》中的角色,这是美国的一档少儿教育节目,还有一系列的动画电影等,是美国人家喻户晓的动画人物了。从左到右依次是:ERNIE,ELMo,BART,BERT。有没有发现华点呢?这正是目前流行的四个语言模型的缩写。
在这里插入图片描述
只能说这些科学家们用心良苦😆。

第四范式:Prompt挖掘工程

  预训练,提示,预测范式(pre-train,prompt,predict):第四范式一经提出就在NLP领域受到了极大的关注,Prompt思想也被认为是一个趋势。
  简单来说,prompt 将下游的输入输出形式改造成预训练任务中的形式(重构下游任务)。这里的“改造形式”是什么意思呢🤔?在上文中笔者简介了善于完形填空的Bert,下面我们以Bert为例,举几个Prompt对下游任务进行重构的例子:

举例1.二分类

在原来的模型中,我们这样定义这个分类任务:

  • 目标:对“这个餐厅服务真不错”情感倾向分类
  • 任务输入:这个餐厅的服务真不错
  • 任务输出:任务标签{正向,负向}

在Prompt中,我们把上述任务重构为一个完形填空问题:

  • Prompt任务输入:____满意,这个餐厅的服务真不错
  • Prompt任务输出:任务标签{正向,负向}

在这里插入图片描述
  当然这里需要通过一些手段,限制Bert只能在这个位置预测出“很”或者“不”,另外还需要将“很”对应为正向标签,将“不”定义为负向标签。以上,经过对下游任务的重构,不需要对Bert进行fine-tune即完成了任务。

举例2.多分类

  • 目标:对“滑雪运动员取得了很好的成绩”主题分类
  • 任务输入:“滑雪运动员取得了很好的成绩”
  • 任务输出:任务标签{体育,娱乐,访谈,影视}

将这个任务重构为完形填空问题:

  • 输入:“下面是一则___新闻。滑雪运动员取得了很好的成绩”
  • 输出:任务标签{体育,娱乐,访谈,影视}

在这里插入图片描述
  与上一个二分类问题不一样,这了的输出{体育,娱乐…}直接就是分类标签,无需再进行输出与标签的映射

举例3.匹配任务

  • 目标:判断这两个句子“我去了北京”跟“我去了上海”是否相容
  • 输出:“我去了北京”+“我去了上海”
  • 输出:任务标签{相容,不相容}

将这个匹配任务重构为

  • 输入:我去了北京?____我去了上海
  • 输出:任务标签{相容,不相容}
    在这里插入图片描述
      同样,Bert填好空之后,需要将“是的”映射为“相容”,将“不是”映射为“不相容”。
      通过上面这三个例子,你清楚了Prompt所谓改造下游任务是什么意思了吗?每一个任务都巧妙地改造成了一个完形填空问题,这对我们“完形填空高手Bert”来说,简直是小菜一碟啊。所以,经过这样的改造,直接通过之前训练好的语言模型就可以完成任务,在某些场景下不需要对语言模型进行任何的改动。

第三范式与第四范式的关系

  🔥 Fine-tuning中:是预训练语言模型“迁就“各种下游任务。具体体现就是通过引入各种辅助任务loss,将其添加到预训练模型中,然后继续pre-training,以便让其更加适配下游任务。总之,这个过程中,预训练语言模型做出了更多的牺牲。
  🔥 Prompting中,是各种下游任务“迁就“预训练语言模型。我们需要对不同任务进行重构,使得它达到适配预训练语言模型的效果。总之,这个过程中,是下游任务做出了更多的牺牲。
在这里插入图片描述
  可以看到无论是谁迁就谁,本质上都是预训练模型与下游任务越来越靠近。刘鹏飞博士在知乎回答的最后有这样一段话发人深思:Prompting本身不是目的,它是一种让下游任务和预训练语言模型更加接近的途径,如果我们有其他更好的方式,那就可以引领下一个范式,近代自然语言处理技术的发展史本质上(可能)是下游任务与预训练语言模型关系的变迁史。(膜拜大佬🤩)
在这里插入图片描述

Prompt最大的优点:少/零样本

  前面我们提到Prompt的思想是重构下游任务来适配预训练语言模型,不需要对预训练语言模型进行任何fine-tune。但是为了达到让“预处理模型与下游任务靠近”的目的,在有条件的情况下,也可以即重构下游任务,又对预处理模型进行fine-tune。(比如在一些应用场景中,可以很轻松得到大量有标注数据以供fine-tune,此时就可以尝试一下除了使用Prompt之外,再微调LM是否能获得更好的效果)
  在基于Prompt的下游任务学习中,通常存在两种类型的参数,即来自预训练模型的参数和Prompt的参数。根据(i) 底层LM的参数(LM params)是否被调优,(ii)是否有额外的与Prompt相关的参数(Additional),(iii)如果有额外的与提示相关的参数,这些参数是否被调优,总结了5种调优策略(如下图所示)。
在这里插入图片描述
  先来看第二个策略:Tuning-free Prompting, 根据表格可以看到这种策略不需要对LM参数进行微调,不需要额外的Prompt参数,没有任何参数的更新,因此这个策略最大的优点就是完全不需要任何有标注数据来更新模型参数,所以会适用于零样本的场景。
  再看第三个策略:Fixed-LM prompt Tunning,这种策略不需要对语言模型进行任何参数调整,只需要少量标注数据对Prompt相关参数进行调整即可,适合与少样本场景。
  Prompt确实为少样本和零样本场景提供了新的解题思路,不过也只使用于特定的应用场景,并不是每一种Prompt策略都适合在零/少样本场景下使用(可不要误解了哦~)

参考:
Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing:https://arxiv.org/abs/2107.13586
https://mp.weixin.qq.com/s/vyKCCjAEbuOxpKOd6zhz3w
国科大胡玥老师自然语言处理课件
刘鹏飞博士知乎回答:https://zhuanlan.zhihu.com/p/395115779

通过这一篇博客,读者应该了解到了NLP范式的发展过程,以及了解到了Prompt适用于零样本的原因,关于Prompt的细节会在下一篇博客中介绍:
详细介绍:红到发紫的Prompt是什么?【下】

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vector<>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值