【提示学习】GPT Understands, Too

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介:  虽然GPT在传统的预训练微调方面并没有在自然语言理解任务上达到最好的效果, 但是当使用我们提出的P-tuning方法时,便可以与BERT相媲美。P-tuning是一种新的微调方法,其使用可训练的连续空间内的prompt embeddings。在knowledge probing和superGLUE benchmark上得以提升。最重要的是,我们发现P-tuning也可以让BERT在小样本和监督学习上得以提升。且P-tuning可以在superGLUE的小样本任务上达到SOTA。

 虽然GPT在传统的预训练微调方面并没有在自然语言理解任务上达到最好的效果, 但是当使用我们提出的P-tuning方法时,便可以与BERT相媲美。P-tuning是一种新的微调方法,其使用可训练的连续空间内的prompt embeddings。在knowledge probing和superGLUE benchmark上得以提升。最重要的是,我们发现P-tuning也可以让BERT在小样本和监督学习上得以提升。且P-tuning可以在superGLUE的小样本任务上达到SOTA。


简要信息:


序号 属性
1 模型名称 P-tuning
2 所属领域 自然语言处理;文本分类
3 研究内容 预训练语言模型;Prompt框架
4 核心内容 Prompt-based Fine-tuning
5 GitHub源码 https://github.com/THUDM/P-tuning
6 论文PDF https://arxiv.org/pdf/2103.10385.pdf


核心要点:


  • template的构建:在离散的template上对部分token替换为可在连续空间微调的pseudo token;


  • 离散和连续的template token混合时,发现显式地插入一些anchor(领域有关的离散token)可以有助于template的优化;


一、动机

  • 语言模型可以在预训练阶段学习到上下文的表征信息,也包括其他方面的知识,例如语法、常识或者世界知识等。


  • 现如今预训练模型包括三种类型,分别是以GPT为代表的单向模型,以BERT为代表的双向模型,以及以XLNet为代表的混合模型(单双向复合);


  • GPT3于2020年下半年提出,其能够在少量样本甚至是0样本情况下获得较好的效果。其主要依赖于提出的新的微调范式(prompt-based和in-context learning)。这表明,即便是单向模型,如果使用合适的人工构建的prompt模板也是可以达到很好的自然语言理解目的;
    GPT模型包含巨大规模的参数,使得其很难被迁移,也很难被落地使用


  • 然而,如何选择handcrafted prompt temporary如同大海捞针,而且需要大量的验证集,同时也可能导致陷入局部最优。先前工作(包括chengdanqi的LM-BFF)致力于解决离散提示模板(discrete prompt temporary)的自动生成问题,然而作者认为,神经网络是连续的,离散的prompt会导致局部最优。


  • 同时作者发现,prompt模板发生细微的改变,都会对最终的结果产生戏剧性的变化。例如在knowledge probing任务中,可以生成一个文本提示模板,但是究竟哪一个模板合适?作者发现模板中增删一个token就会产生很大的性能差异。(这一部分与chengdanqi的LM-BFF的发现一样)


In this work, we propose a novel method– P-tuning– to automatically search prompts in the continuous space to bridge the gap between GPTs and NLU applications.1 P-tuning leverages few continuous free parameters to serve as prompts fed as the input to the pre-trained language models. We then optimize the continuous prompts using gradient descent as an alternative to discrete prompt searching.


  • 作者还发现,GPT并非只能生成数据,而无法实现自然语言理解,语言模型是包含许多世界知识和先验知识。


综合上述,作者提出了新的方法P-tuning:


二、方法:P-tuning




     在一般场景下,给定一个token序列,通过随机MASK若干个token,并进行自监督训练,预测MASK部分的词;在预测阶段(例如分类),则输入的是整个文本序列,预测[CLS]对应的类别。


  如果在prompt-based场景下,则通常将下游任务转化为Mask Language Model任务,因此此时不需要引入额外的参数,但需要明确一个prompt模板。作者认为一个模板 就可以表示为一个token序列: 中的pseudo token序列进行表征,则可以使用梯度下降法更新连续的参数。


  另外作者发现,加入一些anchor可以提升效果。理解为加入一些比较有代表性的token可以显示让模型知道预测的意图。


  • 先前的prompt generator是通过decoder等方法直接生成出显式的token词,然后将这些token对应的embedding喂入到BERT中参与微调。


  • 而P-Tuning的思路应该是不显式的生成这些prompt temporary具体的token词,而是在generator之前的encoder表征的向量来代替这些词,这样在BERT微调的时候可以让这些temporary也跟着微调,达到作者所谓的differential,可以传梯度了。


 P-tuning的具体代码细节可以简单描述为:


  • 输入一个句子,以及预先设计的一个离散的模板:The Disney film is good! It was [MASK].


  • 先使用BERT的分词工具分词,并获得input ids、position ids、attention masks等;


  • 对输入的template中,挑选一个(或多个)token作为pseudo token:The Disney film is good! [pseudo] was [MASK].其初始化可以直接使用原本的token embedding;


  • 对所有的pseudo token


三、实验

4.1 knowledge probing (知识探索)


 典型代表是LAMA数据集,根据知识库中结构化三元组(事实)构建的完形填空类型的数据。例如三元组(Dante, born in, Florence)可以转化为一个完型填空句子“Dante was born in [MASK]”,语言模型则可以通过MLM来预测[MASK]标记对应的词


(1)设置


  • 作者首先使用LAMA-34k,其词汇包含了BERT的所有词汇,但与GPT有差异,作者又使用了LAMA-29K,则包括了GPT和BERT词汇的交集;


  • 作者根据AutoPrompt工作,在TRE-x数据集上训练了prompt seaching模块;


  • 在评估阶段,对于双向的语言模型(BERT),使用(3,sub,3,obj,3)模板,在单向语言模型(GPT),使用(3,sub,3,obj)模板,数字表示的是模板prompt的token数量。在本任务中,不使用anchor token


(2)分析



作者对传统的fine-tuning和p-tuning进行了对比。选择四个对比模型(MP:manual prompt、FT:fine-tuning、MP+FT、P-tuning),发现P-tuning超过了另外三个基线,且在BERT和GPT上均达到最好。作者认为:


  • fine-tuning在微调时更新了所有模型参数,而P-tuning并不更新参数;


  • fine-tuning会导致灾难性遗忘,而P-tuning因为不更新参数,而是寻找一个更好的连续的模板;


  • 作者发现P-tuning与单向语言模型更有亲和力(affinity);


4.2 SuperGLUE


(1)设置


  • SuperGLUE中包含8个自然语言理解(NLU)任务,作者只使用7个。在fully supervision和few-shot 两个setting下完成实验,前者则使用所有训练集,后者则使用32个训练集,并选择32个样本作为验证集(与chengdanqi的设置相似)


  • 在NLU任务上,首先在不同位置初始化prompt的embedding,并与预训练模型一同微调;


(2)分析



  • 在fully supervision任务上(如上表Table3/4),p-tuning比其他方法好,而且发现在p-tuning方法之下,GPT比BERT更优;



  • 在few-shot任务上(如上表Table6),P-tuning比当前最好的PET模型在各个数据集上均得到很大的提升。结果表明few-shot效果与prompt的语义、形式、语法没有明显的关系;微小的变化可能造成实质性性能的差异



  • Table5表明了P-tuning相比现有的模型PET均有很好的表现,验证了在few-shot情境下,P-tuning相比人工选择模板来说,更加有效
相关文章
|
机器学习/深度学习 存储 自然语言处理
从零开始学习Java神经网络、自然语言处理和语音识别,附详解和简易版GPT,语音识别完整代码示例解析
从零开始学习Java神经网络、自然语言处理和语音识别,附详解和简易版GPT,语音识别完整代码示例解析
139 0
|
10月前
|
机器学习/深度学习 数据采集 自然语言处理
chat GPT数据学习分析应用
ChatGPT是一种强大的自然语言处理模型,可以在数据分析学习阶段提供帮助和支持。在这一阶段,你将学习各种数据分析技术和工具,包括数据清洗、数据可视化、统计分析和机器学习等。ChatGPT可以作为一个交互式的学习工具,帮助你理解和应用这些技术。下面将详细介绍ChatGPT在数据分析学习阶段的应用。 1. 数据清洗和预处理: 数据清洗和预处理是数据分析的第一步,也是最关键的一步。ChatGPT可以帮助你处理和清洗数据,包括缺失值处理、异常值检测和处理、数据格式转换等。你可以与ChatGPT进行对话,告诉它你的数据清洗需求,它可以给出相应的建议和指导。例如,你可以向ChatGPT描述你的数据集中
112 0
|
机器学习/深度学习 自然语言处理 计算机视觉
大语言模型的视觉天赋:GPT也能通过上下文学习解决视觉任务
大语言模型的视觉天赋:GPT也能通过上下文学习解决视觉任务
101 0
|
机器学习/深度学习 人工智能 自然语言处理
1.2万亿参数:谷歌通用稀疏语言模型GLaM,小样本学习打败GPT-3
1.2万亿参数:谷歌通用稀疏语言模型GLaM,小样本学习打败GPT-3
220 0
|
机器学习/深度学习 自然语言处理 算法
清北微软深挖GPT,把上下文学习整明白了!和微调基本一致,只是参数没变而已
清北微软深挖GPT,把上下文学习整明白了!和微调基本一致,只是参数没变而已
176 0
|
1月前
|
存储 SQL 数据库
Python 金融编程第二版(GPT 重译)(四)(4)
Python 金融编程第二版(GPT 重译)(四)
25 3
|
1月前
|
存储 NoSQL 索引
Python 金融编程第二版(GPT 重译)(一)(4)
Python 金融编程第二版(GPT 重译)(一)
32 2
|
1月前
|
存储 机器学习/深度学习 关系型数据库
Python 金融编程第二版(GPT 重译)(四)(5)
Python 金融编程第二版(GPT 重译)(四)
21 2
|
1月前
|
存储 SQL 数据可视化
Python 金融编程第二版(GPT 重译)(四)(1)
Python 金融编程第二版(GPT 重译)(四)
27 2