Bridge619

Bridge619

Bridge619

命定的局限尽可永在,不屈的挑战却不可须臾或缺!

100 文章数
11 评论数
来首音乐
光阴似箭
今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

Prompt-Tuning——深度解读一种新的微调范式

Bridge619
2023-04-23 / 1 评论 / 1531 阅读 / 0 点赞

Prompt-Tuning——深度解读一种新的微调范式

作者:王嘉宁
👉转载学习

本博客针对Prompt进行的综述博客,暂时为半成品,持续更新中,若对您的科研和工作有所帮助,期待您的收藏与引用。

作者简介:王嘉宁,华东师范大学 数据学院 博士生,研究方向为自然语言处理、知识图谱。

首次发布日期:2021年11月19日
第一次全面更新:2023年2月3日
第二次全面更新:2023年3月29日


阅读该博客,您将系统地掌握如下知识点:

  • 什么是预训练语言模型?
  • 什么是prompt?为什么要引入prompt?相比传统fine-tuning有什么优势?
  • 自20年底开始,prompt的发展历程,哪些经典的代表方法?
  • 面向不同种类NLP任务,prompt如何选择和设计?
  • 面向超大规模模型,如何借助prompt进行参数有效性训练?
  • 面向GPT3,什么是In-Context Learning?什么是Chain-Of-Thought?
  • 面向黑盒模型,如何使用prompt?
  • ChatGPT里有哪些prompt技术?
  • 未来prompt的发展与研究前景

Prompt的由浅入深的理解:

  • 1级:Prompt是一种对任务的指令;
  • 2级:Prompt是一种对预训练目标的复用;
  • 3级:Prompt本质是参数有效性训练;

热点预览

🔥预告: HugNLP 即将发布⌛️⌛️

博主自研的 HugNLP 框架即将发布!目前已经开放开源地址:https://github.com/wjn1996/HugNLP,欢迎StarIssuePR

image-20230423143656681

  • HugNLP是一个统一的面向自然语言处理的训练和部署框架,其支持预训练文本分类信息抽取阅读理解多项选择代码克隆监测与修复等众多自然语言理解和生成任务的训练和推理。HugNLP完全基于HuggingFace开发,具备可扩展性强、通用型好的特点,HugNLP的打造,可以极大地方便研究者和用户上手NLP的训练和部署;
  • 如今大语言模型和Prompt-Tuning的发展迅速,HugNLP同样集成了面向分类和生成的Prompt-tuningIn-Context LearningInstruction-tuning等技术,并应用在NLP各种类型任务上,未来也将集成各种大模型API服务;
  • 目前博主已经推出两个基于 HugNLP 框架训练的产品和技术方案,包括:
    • HugChat:模拟ChatGPT训练的面向中小规模语言模型的对话模型,主要技术是Instruction-tuning,GPT-2、LLaMA等开源模型作为Backbone。HugNLP开源了训练数据和技术方案;
    • HugIE:统一的中文信息抽取框架,采用Global Pointer实现文本中结构化信息的抽取;

HugNLP实时更新,欢迎Star、Issue和PR!

🔥预训练语言模型的发展历程:

image-20230423143744432

  截止23年3月底,语言模型发展走过了三个阶段:

  • 第一阶段:设计一系列的自监督训练目标(MLM、NSP等),设计新颖的模型架构(Transformer),遵循Pre-training和Fine-tuning范式。典型代表是BERT、GPT、XLNet等;
  • 第二阶段:逐步扩大模型参数和训练语料规模,探索不同类型的架构。典型代表是BART、T5、GPT-3等;
  • 第三阶段:走向AIGC(Artificial Intelligent Generated Content)时代,模型参数规模步入千万亿,模型架构为自回归架构,大模型走向对话式、生成式、多模态时代,更加注重与人类交互进行对齐,实现可靠、安全、无毒的模型。典型代表是InstructionGPT、ChatGPT、Bard、GPT-4等。

🔥面向预训练语言模型的Prompt-Tuning技术发展历程:

在这里插入图片描述Prompt-Tuning自从GPT-3被提出以来,从传统的离散、连续的Prompt的构建、走向面向超大规模模型的In-Context Learning、Instruction-tuning和Chain-of-Thought。


  自从GPT、EMLO、BERT的相继提出,以Pre-training + Fine-tuning 的模式在诸多自然语言处理(NLP)任务中被广泛使用,其先在Pre-training阶段通过一个模型在大规模无监督语料上预先训练一个预训练语言模型(Pre-trained Language Model,PLM),然后在Fine-tuning阶段基于训练好的语言模型在具体的下游任务上再次进行微调(Fine-tuning),以获得适应下游任务的模型。这种模式在诸多任务的表现上超越了传统的监督学习方法,不论在工业生产、科研创新还是竞赛中均作为新的主流方式。然而,这套模式也存在着一些问题。例如,在大多数的下游任务微调时,下游任务的目标与预训练的目标差距过大导致提升效果不明显,微调过程中依赖大量的监督语料等。至此,以GPT-3、PET为首提出一种基于预训练语言模型的新的微调范式——Prompt-Tuning,其旨在通过添加模板的方法来避免引入额外的参数,从而让语言模型可以在小样本(Few-shot)或零样本(Zero-shot)场景下达到理想的效果。Prompt-Tuning又可以称为Prompt、Prompting、Prompt-based Fine-tuning等。

  因此简单的来说,Prompt-Tuning的动机旨在解决目前传统Fine-tuning的两个痛点问题:

  • 降低语义差异(Bridge the gap between Pre-training and Fine-tuning):预训练任务主要以Masked Language Modeling(MLM)为主,而下游任务则重新引入新的训练参数,因此两个阶段的目标通常有较大差异。因此需要解决如何缩小Pre-training和Fine-tuning两个阶段目标差距过大的问题;
  • 避免过拟合(Overfitting of the head):由于再Fine-tuning阶段需要新引入额外的参数以适配相应的任务需要,因此在样本数量有限的情况容易发生过拟合,降低了模型的泛化能力。因此需要面对预训练语言模型的过拟合问题。

  本文将深入解读Prompt-Tuning的微调范式,以综述+讨论的形式展开。


第一章:预训练语言模型


涉及知识点:

  • 单向语言模型、双向语言模型;
  • Transformer;
  • 预训练任务,包括MLM、NSP等;
  • NLP的任务类型以及fine-tuning;

  预训练语言模型想必大家已经不再陌生,以GPT、ELMO和BERT为首的预训练语言模型在近两年内大放异彩。预训练语言模型主要分为单向和双向两种类型:

  • 单向:以GPT为首,强调从左向右的编码顺序,适用于Encoder-Decoder模式的自回归(Auto-regressive)模型;
  • 双向:以ELMO为首,强调从左向右和从右向左双向编码,但ELMO的主体是LSTM,由于其是串形地进行编码,导致其运行速度较慢,因此最近BERT则以Transformer为主体结构作为双向语言模型的基准。

  现如今常用的语言模型大多数是BERT及其变体,它的主体结构Transformer模型是由谷歌机器翻译团队在17年末提出的,是一种完全利用attention机制构建的端到端模型,具体算法详解可详情【预训练语言模型】Attention Is All You Need(Transformer)。之所以选择Transformer,是因为其完全以Attention作为计算推理技术,任意的两个token均可以两两交互,使得推理完全可以由矩阵乘机来替代,实现了可并行化计算,因此Transformer也可以认为是一个全连接图,缓解了序列数据普遍存在的长距离依赖和梯度消失等缺陷

  在NLP领域中,Attention机制的目标是对具有强相关的token之间提高模型的关注度。例如在文本分类中,部分词对分类产生的贡献更大,则会分配较大的权重。  对句子的编码主要目标是为了让模型记住token的语义。传统的LSTM则只能通过长短期记忆的方法来捕捉token之间的关系,容易导致梯度消失或记忆模糊问题,而Transformer中,任意的token之间都有显式的连接,避免了长距离依赖性问题。当然Transformer也增加了position embedding以区分不同token的位置关系,

1.1 经典的Pre-trained任务

  本文的目标是介绍Prompt-Tuning的方法,而Prompt-Tuning的动机则是进一步拉近微调与预训练阶段的任务目标,因此本部分则以常用的BERT为主,简单介绍Pre-training的经典方法,更加详细的解读,可参考:【预训练语言模型】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(BERT)

(1)Masked Language Modeling(MLM)

  传统的语言模型是以word2vec、GloVe为代表的词向量模型,他们主要是以词袋(N-Gram)为基础。例如在word2vec的CBOW方法中,随机选取一个固定长度的词袋区间,然后挖掉中心部分的词后,让模型(一个简单的深度神经网络)预测该位置的词,如下图所示:

img

  Masked Language Modeling(MLM)则采用了N-Gram的方法,不同的是,N-Gram喂入的是被截断的短文本,而MLM则是完整的文本,因此MLM更能够保留原始的语义:

img

  MLM是一种自监督的训练方法,其先从大规模的无监督语料上通过固定的替换策略获得自监督语料,设计预训练的目标来训练模型,具体的可以描述为:

  • 替换策略:在所有语料中,随机抽取15%的文本。被选中的文本中,则有80%的文本中,随机挑选一个token并替换为 [mask],10%的文本中则随机挑选一个token替换为其他token,10%的文本中保持不变。
  • 训练目标:当模型遇见 [mask] token时,则根据学习得到的上下文语义去预测该位置可能的词,因此,训练的目标是对整个词表上的分类任务,可以使用交叉信息熵作为目标函数。

  因此以BERT为例,首先喂入一个文本It is very cold today, we need to wear more clothes. ,然后随机mask掉一个token,并结合一些特殊标记得到:[cls] It is very cold today, we need to [mask] more clothes. [sep] ,喂入到多层的Transformer结构中,则可以得到最后一层每个token的隐状态向量。MLM则通过在[mask]头部添加一个MLP映射到词表上,得到所有词预测的概率分布。

  现如今有诸多针对MLM的改进版本,我们挑选两个经典的改进进行介绍:

  • Whole Word Masking(WWM):来源于RoBERTa等,其认为BERT经过分词后得到的是word piece,而BERT的MLM则是基于word piece进行随机替换操作的,即Single-token Masking,因此被mask的token语义并不完整。而WWM则表示被mask的必须是一个完整的单词。
  • Entity Mention Replacement(EMR):来源于ERNIE-BAIDU等,其通常是在知识增强的预训练场景中,即给定已知的知识库(实体),对文本中的整个实体进行mask,而不是单一的token或字符。

  下面给出对比样例。以文本“Michael Jackson is one of the best-selling music artists of all time, with estimated sales of over 400 million records worldwide”为例:

MLM的Masking策略 原始分词 被Mask后结果
Single-token Masking Michael Jackson is one of the best - ###selling music artists of all time, with estimate ###ed sales of over 400 million records world ###wide [mask] Jackson is one of the best - ###selling music artists of all time, with estimate [mask] sales of [mask] 400 million records [mask] ###wide.
Whole Word Masking Michael Jackson is one of the best - ###selling music artists of all time, with estimate ###ed sales of over 400 million records world ###wide [mask] Jackson is one of the [mask] [mask] [mask] music artists of all time, with [mask] [mask] sales of over 400 million records [mask] [mask].
Entity Mention Replacement Michael Jackson is one of the best - ###selling music artists of all time, with estimate ###ed sales of over 400 million records world ###wide [mask] [mask] is one of the best - ###selling music artists of all time, with estimate ###ed sales of over 400 million records world ###wide.

(2)Next Sentence Prediction(NSP)

  在BERT原文中,还添加了NSP任务,其主要目标是给定两个句子,来判断他们之间的关系,属于一种自然语言推理(NLI)任务。在NSP中则存在三种关系,分别是:

  • entailment(isNext):存在蕴含关系,NSP中则认为紧相邻的两个句子属于entailment,即isNext关系;
  • contradiction(isNotNext):矛盾关系,NSP中则认为这两个句子不存在前后关系,例如两个句子来自于不同的文章;
  • Neutral:中性关系,NSP中认为当前的两个句子可能来自于同一篇文章,但是不属于isNext关系的

而显然,构建NSP语料也可以通过自监督的方法获得,首先给定一个大规模无监督语料,按照文章进行分类。在同一篇文章里,随机挑选一个句子作为premise,因此entailment类对应的则是其下一个句子,另外再随机挑选同一篇文章中的其他句子作为Neutral类,其他文章中的句子作为contradiction类。

  在BERT中,NSP任务则视为sentence-pair任务,例如输入两个句子S1:It is very cold today.S2:We need to wear more clothes.,通过拼接特殊字符后,得到:[cls] It is very cold today. [sep] We need to wear more clothes. [sep],然后喂入到多层Transformer中,可以得到[cls]token的隐状态向量,同样通过MLP映射到一个3分类上获得各个类的概率分布:

img

  在以ALBETR、RoBERTa等系列的模型,由于发现NSP对实验的效果并没有太多正向影响,因此均删除了NSP的任务,在后续的预训练语言模型中,也纷纷提出其他的预训练目标,本文不再过多赘述。在后续的Prompt-Tuning技术中,大多数则以MLM作为切入点。

1.2 Task-specific Fine-tuning

  获得了预训练的语言模型后,在面对具体的下游任务时,则需要进行微调。通常微调的任务目标取决于下游任务的性质。我们简单列举了几种NLP有关的下游任务:

  • Single-text Classification(单句分类):常见的单句分类任务有短文本分类、长文本分类、意图识别、情感分析、关系抽取等。给定一个文本,喂入多层Transformer模型中,获得最后一层的隐状态向量后,再输入到新添加的分类器MLP中进行分类。在Fine-tuning阶段,则通过交叉信息熵损失函数训练分类器;
  • 短/长文本分类:直接对句子进行归类,例如新闻归类、主题分类、场景识别等;
  • 意图识别:根据给定的问句判断其意图,常用于检索式问答、多轮对话、知识图谱问答等;
  • 情感分析:对评论类型的文本进行情感取向分类或打分;
  • 关系抽取:给定两个实体及对应的一个描述类句子,判断这两个实体的关系类型;
  • Sentence-pair Classification(句子匹配/成对分类):常见的匹配类型任务有语义推理、语义蕴含、文本匹配与检索等。给定两个文本,用于判断其是否存在匹配关系。此时将两个文本拼接后喂入模型中,训练策略则与Single-text Classification一样;
  • 语义推理/蕴含:判断两个句子是否存在推理关系,例如entailment、contradiction,neutral三种推理关系;
  • 文本匹配与检索:输入一个文本,并从数据库中检索与之高相似度匹配的其他句子
  • Span Text Prediction(区间预测):常见的任务类型有抽取式阅读理解、实体抽取、抽取式摘要等。给定一个passage和query,根据query寻找passage中可靠的字序列作为预测答案。通常该类任务需要模型预测区间的起始位置,因此在Transformer头部添加两个分类器以预测两个位置。
  • 抽取式阅读理解:给定query和passage,寻找passage中的一个文本区间作为答案;
  • 实体抽取:对一段文本中寻找所有可能的实体;
  • 抽取式摘要:给定一个长文本段落,寻找一个或多个区间作为该段落的摘要;
  • Single-token Classification(字符分类):此类涵盖序列标注、完形填空、拼写检测等任务。获得给定文本的隐状态向量后,喂入MLP中,获得每个token对应的预测结果,并采用交叉熵进行训练。
  • 序列标注:对给定的文本每个token进行标注,通常有词性标注、槽位填充、句法分析、实体识别等;
  • 完形填空:与MLM一致,预测给定文本中空位处可能的词
  • 拼写检测:对给定的文本中寻找在语法或语义上的错误拼写,并进行纠正;
  • Text Generation(文本生成):文本生成任务常用于生成式摘要、机器翻译、问答等。通常选择单向的预训练语言模型实现文本的自回归生成,当然也有部分研究探索非自回归的双向Transformer进行文本生成任务。BART等模型则结合单向和双向实现生成任务。
  • 生成式摘要:在文本摘要中,通过生成方法获得摘要;
  • 机器翻译:给定原始语言的文本,来生成目标语言的翻译句子;
  • 问答:给定query,直接生成答案;

  相关的任务类型、常见的Benchmark以及形式化定义如下图所示:

img

  这几类任务基本可以涵盖现有的自然语言处理场景中,而这五类任务在Fine-tuning阶段几乎都涉及在模型头部引入新参数的情况,且都存在小样本场景过拟合的问题,因此Prompt-Tuning的引入非常关键。


第二章:Prompt-Tuning的定义


涉及知识点:

  • Template与Verbalizer的定义;

  那么什么是Prompt呢?在了解预训练语言模型的基础,以及预训练语言模型在Pre-training和Fine-tuning之后,我们已经可以预想到Prompt的目的是将Fine-tuning的下游任务目标转换为Pre-training的任务。那么具体如何工作呢?

  我们依然以二分类的情感分析作为例子,描述Prompt-tuning的工作原理。给定一个句子[CLS] I like the Disney films very much. [SEP] 传统的Fine-tuning方法是将其通过BERT的Transformer获得 [CLS]表征之后再喂入新增加的MLP分类器进行二分类,预测该句子是积极的(positive)还是消极的(negative),因此需要一定量的训练数据来训练。

  而Prompt-Tuning则执行如下步骤:

  • 构建模板(Template Construction):通过人工定义、自动搜索、文本生成等方法,生成与给定句子相关的一个含有[MASK]标记的模板。例如It was [MASK].,并拼接到原始的文本中,获得Prompt-Tuning的输入:[CLS] I like the Disney films very much. [SEP] It was [MASK]. [SEP]。将其喂入BERT模型中,并复用预训练好的MLM分类器(在huggingface中为BertForMaskedLM),即可直接得到[MASK]预测的各个token的概率分布;
  • 标签词映射(Label Word Verbalizer):因为[MASK]部分我们只对部分词感兴趣,因此需要建立一个映射关系。例如如果[MASK]预测的词是“great”,则认为是positive类,如果是“terrible”,则认为是negative类。

  此时会有读者思考,不同的句子应该有不同的template和label word,没错,因为每个句子可能期望预测出来的label word都不同,因此如何最大化的寻找当前任务更加合适的template和label word是Prompt-tuning非常重要的挑战。

  • 训练:根据Verbalizer,则可以获得指定label word的预测概率分布,并采用交叉信息熵进行训练。此时因为只对预训练好的MLM head进行微调,所以避免了过拟合问题

  在hugging face上也可以直接进行测试:

  其实我们可以理解,引入的模板和标签词本质上也属于一种数据增强,通过添加提示的方式引入先验知识


第三章:Prompt-Tuning的研究进展


涉及知识点:

  • GPT-3;
  • Prompt的形式化定义、Prompt的集成;
  • 经典的Template的构建方法——启发式、生成式、连续提示、混合提示;
  • 经典的Verbalizer的构建方法——启发式、连续式。

  那么Prompt-Tuning具体如何实现,其有什么挑战和困难呢,本节将详细描述Prompt-Tuning在学术上的发展历程。由于Prompt-Tuning发展很迅猛,因此很难保证完全涵盖所有论文和学术报告,因此我们挑选一些具有代表性的工作进行介绍。

3.1 Prompt-Tuning的鼻祖——GPT-3与PET

  Prompt-Tuning起源于GPT-3的提出《Language Models are Few-Shot Learners》(NIPS2020),其认为超大规模的模型只要配合好合适的模板就可以极大化地发挥其推理和理解能力。其开创性提出in-context learning概念,即无须修改模型即可实现few-shot/zero-shot learning。同时引入了demonstrate learning,即让模型知道与标签相似的语义描述,提升推理能力。

  • In-context Learning:是Prompt的前身。其通过从训练集中挑选一些样本作为任务的提示提示(Natural Language Prompt),来实现免参数更新的模型预测;
  • Demonstration Learning:添加一些新的文本作为提示。例如在对“I like the Disney film. It was [MASK]”进行情感分析时,可以拼接一些相似场景的ground-truth文本“I like the book, it was great.”、“The music is boring. It is terrible for me.”等。此时模型在根据新添加的两个样例句子就可以“照葫芦画瓢”式地预测结果了。

  不过以GPT-3为首的这类方法有一个明显的缺陷是——其建立在超大规模的预训练语言模型上,此时的模型参数数量通常超过100亿,在真实场景中很难应用,因此众多研究者开始探索GPT-3的这套思路在小规模的语言模型(BERT)上还是否适用?事实上,这套方法在小规模的语言模型上是可行的,但是需要注意几点:

  • 模型参数规模小了,Prompt直接用在Zero-shot上效果会下降,因此需要考虑将in-context learning和demonstrate learning应用在Fine-tuning阶段;
  • GPT-3中提供的提示(Natural Language Prompt)过于简单,并不难使用在一些具体的任务场景,因此需要单独设计一套组件实现。

  因此,大名鼎鼎的PET模型问世,PET(Pattern-Exploiting Training)出自《Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference》(EACL2021),根据论文题目则可以猜出,Prompt-Tuning启发于文本分类任务,并且试图将所有的分类任务转换为与MLM一致的完形填空。PET详细地设计了Prompt-Tuning的重要组件——Pattern-Verbalizer-Pair(PVP),并描述了Prompt-tuning如何实现Few-shot/Zero-shot Learning,如何应用在全监督和半监督场景(iPET)。PET的详细讲解可参考PET的论文解读

  PET设计了两个很重要的组件:

  • Pattern(Template):记作 T ,即上文提到的Template,其为额外添加的带有[mask]标记的短文本,通常一个样本只有一个Pattern(因为我们希望只有1个让模型预测的[mask]标记)。上文也提到,不同的任务、不同的样本可能会有其更加合适的pattern,因此如何构建合适的pattern是Prompt-Tuning的研究点之一
  • Verbalizer:记作 V ,即标签词的映射,对于具体的分类任务,需要选择指定的标签词(label word)。例如情感分析中,我们期望Verbalizer可能是 V(positive)=great,V(negative)=terrible (positive和negative是类标签)。同样,不同的任务有其相应的label word,但需要注意的是,Verbalizer的构建需要取决于对应的Pattern。因此如何构建Verbalizer是另一个研究挑战
    上述两个组件被称为Pattern-Verbalizer-Pair(PVP),一般记作 P=(T,V),在后续的大多数研究中均采用这种PVP组件。

  因此基于PVP的训练目标可以形式化描述:

  给定一个句子 x ,以及对应的标签 y,给定定义的PVP组件 P=(T,V),则有:
p(yx)=j=1∏np([mask]j​=V(y)∣T(x))

  那么会有读者一直会思考,一般情况下,一个句子只能有一个PVP(因为我们只需要一个[mask]用来预测),这可能并不是最优的,是否可以为一个句子设计多个不同的PVP呢?这是可以的,这属于Prompt-Tuning的集成。PET提供了简单的集成思路:

  • Patterns Ensembling:同一个句子设计多个不同的pattern,例如It was [mask].I think it is [mask].This comment denotes as [mask]. 等,此时,原先只有一个句子,却可以生成多个不同的样本,也变相起到数据增强的作用。在训练时,可以当作单独的样本进行训练,推理时,则可以对所有Pattern的结果进行投票或加权。如下图所示:
    在这里插入图片描述
  • Verbalizers Ensembling:同样,在给定的某个Pattern下,并非只有1个词可以作为label word。例如positive类,则可以选择“great”、“nice”、“wonderful”。当模型预测出这三个词时,均可以判定为positive类。在训练和推理时,可以对所有label word的预测概率进行加权或投票处理,并最后获得概率最大的类。如下图所示:
    在这里插入图片描述
  • PVPs Ensembling(Prompt Ensembling):Pattern和Verbalizer均进行集成,此时同一个句子有多个Pattern,每个Pattern又对应多个label word。如下图所示(以2个PVP集成为例),在训练时可以采用加权,在推理时可以采用加权或投票法:
    在这里插入图片描述

  PET还提供了半监督的学习方法——iterative PET(iPET),如下图所示:

img

  iPET旨在先从预训练模型开始,初始化多个不同的模型(图中1步骤),在有标注的少量样本上进行Prompt-Tuning,然后通过多个不同的PVP训练得到多个不同的模型(图中a步骤),每个模型在无标注数据上进行推理打标,并根据置信度筛选(图中b步骤),根据新标注的数据与原始标注数据融合后,再重新进行Prompt-Tuning(图中c步骤),重复abc三个步骤多次后,获得每个模型后,在测试时进行集成投票(图中2、3步骤)。

  因此可以说,PET提供Prompt-Tuning比较成熟的框架——PVP,基于这套框架,目前的研究开始关注如何选择或构建合适的Pattern和Verbalizer。一种简单的方法是根据特定任务的性质和先验知识人工设计模板。例如上文例子中通常会选择It was [mask]. 作为情感分析类的模板。人工构建方法虽然直观简单,但是致命问题也很突出。有相关工作在实验中发现,在同样的数据集和训练条件下,选择不同的Pattern和Verbalizer会产生差异很大的结果,如下图所示(一般情况下,Template等同于Pattern,Verbalizer等同于Label word):

img

可发现,在相同Pattern时,选择不同的label word对结果影响很大,同理,不同的Pattern对结果影响也很明显,在真正应用中,调参者需要尝试多个不同的模板和标签词以穷举出最好的结果,并不能充分发挥Prompt简单快捷的优势。因此我们总结人工设计方法的缺陷:

  • 采用人工构建的方法成本高,需要与领域任务相关的先验知识;
  • 人工设计的Pattern和Verbalizer不能保证获得最优解,训练不稳定,不同的PVP对结果产生的差异明显,方差大;
  • 在预训练阶段MLM任务并非完全按照PVP的模式进行训练的(比如MLM训练通常都是长文本,mask的数量也并非只有1个,预测的概率分布也并非是有限的),因此人工构建的Pattern和Verbalizer使得Prompt-Tuning与MLM在语义和分布上依然存在差异。

  因此如何能够自动地挑选合适的PVP?

3.2 如何挑选合适的Pattern?

  自2020年底至今,学术界已经涌现出一批基于Prompt-Tuning的方案试图探索如何自动构建PVP。本节主要总结几种成熟的Pattern(Template)构建方法。可以罗列为如下几点:

  • 人工构建(Manual Template):在前文已经描述过,不再详细说明;
  • 启发式法(Heuristic-based Template):通过规则、启发式搜索等方法构建合适的模板;
  • 生成(Generation):根据给定的任务训练数据(通常是小样本场景),生成出合适的模板;
  • 词向量微调(Word Embedding):显式地定义离散字符的模板,但在训练时这些模板字符的词向量参与梯度下降,初始定义的离散字符用于作为向量的初始化;
  • 伪标记(Pseudo Token):不显式地定义离散的模板,而是将模板作为可训练的参数;

  前面3种也被称为离散的模板构建法(记作Hard TemplateHard PromptDiscrete TemplateDiscrete Prompt),其旨在直接与原始文本拼接显式离散的字符,且在训练中始终保持不变。这里的保持不变是指这些离散字符的词向量(Word Embedding)在训练过程中保持固定。通常情况下,离散法不需要引入任何参数

  后面2种则被称为连续的模板构建法(记作Soft TemplateSoft PromptContinuous TemplateContinuous Prompt),其旨在让模型在训练过程中根据具体的上下文语义和任务目标对模板参数进行连续可调。这套方案的动机则是认为离散不变的模板无法参与模型的训练环节,容易陷入局部最优,而如果将模板变为可训练的参数,那么不同的样本都可以在连续的向量空间中寻找合适的伪标记,同时也增加模型的泛化能力。因此,连续法需要引入少量的参数并让模型在训练时进行参数更新

  下面简单介绍几个经典的方法:

(1)启发式法构建模板

  启发式法一般是采用规则、正则化模板的方法自动构建出相应的Pattern,或者直接通过启发式搜索的方法获得Pattern。 这一类方法在程序设计时只需要编写规则和少量的模板即可快速的获得Pattern。

  给定一个具体的任务(例如分类任务),可以实现定义若干个模板(例如正则化工具),然后根据具体的句子内容,向模板中填充相关实体,以贴合句子实际的描述。例如清华大学刘知远团队提出的PTRPTR: Prompt Tuning with Rules for Text Classification)利用启发式的规则定义若干子模板(sub-prompt),并通过若干子模板的组合来形成最终的Pattern。

  例如在关系抽取任务中,通常给定一个短文本,两个实体(记作subject和object),假如给定句子“Mark Twain was the father of Langdon. ”以及两个实体“Mark Twain”和“Landon”。那么可以定义3个子模板:

  • 头实体(subject entity):f**s= the [mask] x**s,对应于:“the [mask] Mark Twain”,可用于预测头实体的类型;
  • 尾实体(object entity):f**o= the [mask] x**o,对应于:“the [mask] Landon”,可用于尾实体的类型;
  • 实体关系(relation):f**r=x**s[mask]x**o ,对应于:“Mark Twain [mask] Landon”,可用于头尾实体关系;

  基于上述定义的3个规则,则可以结合起来形成最终模板,即f=f**sf**rf**o,即“the [mask] Mark Twain [mask] the [mask] Landon”。如图所示:
在这里插入图片描述PTR的详细解读请参考博主的论文解读:论文解读:PTR: Prompt Tuning with Rules fo Text Classification

  因此不论给定哪个句子,模板不会完全固定不变,而是根据不同的实体而相应改变模板的字符序列。
  相比之下,AutoPrompt则是另一种典型的方法,其由加州大学提出《AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts(EMNLP2021),如下图所示,给定原始的输入,额外定义若干离散的字符作为trigger,并组成Template,喂入MLM中预测对应label word的概率。而这些trigger最终通过梯度搜索的方法进行挑选。

在这里插入图片描述

(2)生成法构建模板

  基于规则的方法构建的模板虽然简单,但是这些模板都是“一个模子刻出来的”,在语义上其实挺难做到与句子贴合。因此一种策略就是直接让模型来生成合适的模板,因为文本生成本质上就是去理解原始文本的语义,并获得在语义上较为相关的文本。这样不论给定什么句子,我们可以得到在语义层面上更加贴合的模板。陈丹琦团队提出LM-BFF则作为该类方法的典范,其出自于《Making Pre-trained Language Models Better Few-shot Learners》(ACL2021)。LM-BFF提出了基于生成的方法来构建Pattern,而给定相应的Pattern之后,再通过搜索的方法得到相应的Verbalizer。如下图所示:

img

  首先定义一个Template的母版(有点类似于PTR中的含有占位符的子模板),将这些母版与原始文本拼接后喂入T5模型(T5模型属于自回归式的生成模型)后在

文章不错,扫码支持一下吧~
上一篇 下一篇
评论