1. 介绍
传统fine-tune(使用训练数据来微调模型参数),GPT在自然语言理解任务上未能取得很好的效果,关于NLU任务的一种新方法P-tuning,采用可训练的连续的 prompt embeddings。
实验表明:
在自然语言理解方面,GPT可以与BERTs一样具有竞争力(有时甚至更好),P-tuning可以提高预训练的语言模型的性能。
P-tuning是一种改善在小样本或者全监督下的 GPTs 和 BERTs的通用方法
2. Motivation
巨型模型的可移植性差
handcraft prompt(手动提示)来引导模型,但是handcraft prompt搜索严重依赖于大型验证集,且性能也不稳定,例如表中其中一个单词的变化可能会导致巨大的差异
- 提出continuous prompts that can be differentially optimized.
3. P-tuning
与 discrete prompts类似,仅对输入进行修改,不同之处在于用differential output embeddings来代替常规的input embeddings
3.1 Architecture
prompt可以非常灵活,可以插入到context x或者target y中
traditional discrete prompt如下
P-tuning 如下
pseudo tokens(伪标记)
可以从原始词表V中找到一个better continuous prompts。最后,利用下游损失函数L,可以对continuous prompts hi 进行differentially optimize
4. P-tuning
training continuous prompts 存在两个问题
- ) 离散性:M的word embedding e在pre-train后已经变得高度离散。如果h使用随机分布初始化,然后使用随机梯度下降(SGD),已被证明
只有在小范围内改变参数,优化器很容易陷入局部最优 - )关联性:认为prompt embeddings的value应该是相互依赖的,而不是独立的
P-tuning中,使用promp编码器(LSTM+RELU激活的两层MLP)将hi建模为一个序列
知识探索
dataset
所有prompt search方法都需要一些额外的数据来训练或查找prompt。我们遵循AutoPrompt中的设置,作者从原始TRE-x数据集构建了一个训练集,该训练集与测试集类似,但答案分布略有不同
在传统的知识探索中,不允许通过fine-tune来改变预先训练好的模型参数。试图评估语言模型在培训前学习了多少知识。然而,这项工作的基本方面是比较P-tuning和fine-tune,尤其是在像GPT这样的单向语言模型上。特别感兴趣的是以下问题:单向和双向语言模型是否从P-tuning中获得了类似的改进?
在知识探索方面,许多事实只能通过硬编码,而不能通过语言模型进行推断。参数的微调可能会导致遗忘。相反,P-tuning不会改变预先训练的模型的参数,而是通过寻找更好的continuous prompt来存储知识。此外,在Bert和GPT采用P-tuning存在明显的差异,使用MP+FT进行微调非常有效,但是GPT并不像BERTs那样从MP+FT中受益更多。P-tuning与单向语言模型表现出更好的亲和力。在里面就更大的型号而言,例如具有110亿个参数的MegatronLM2,虽然微调几乎不起作用,但Ptuning仍然适用,并在LAMA上达到了最先进的水平。
4.2. SuperGLUE
WiC和MultiRC都有相对较大的train sets,标准fine-tune可以从更大的数据集中获得比P-tuning更多的优势。相反,在低资源环境下,P-tuning更有益
在base模型的规模下,在7项任务中,有6项任务的gpt2-base的P-tuning相比优于基于bert的模型的最佳结果,除了Wic。
与BERT-larger-base相比,带有P-tuning的GPT2在7项任务中有4项任务显示出优势
唯一的例外是WiC任务,fine-tune取得最佳结果,推测这是因为词义消歧任务不适用于prompt-based MLM prediction
用原始训练集中32个未使用的样本构建了一个新的开发集(Ddev32)设置公平比较之下,P-tuning在所有任务上都显著优于PET和PET best。更有趣的是,P-tuning甚至在7项任务中的4项任务上优于GPT-3、PET(Ddev)和iPET(Ddev)。
4.2.2. FEW-SHOT LEARNING
尽管P-tuning在大多数任务中都能取得最佳效果,但在难以表述为完形填空问题的任务(例如WiC)中,微调的效果会更好