(Paper Weekly03) GPT Understands, Too: P-tuning

GPT Understands, Too

(什么,GPT也可以拿来做NLU?)

本文提出了一种全新的fine-tune方法:P-tuning,并比大小接近的BERT模型上取得了相近甚至更好的表现。P-tuning的motivation其实很简单,既然可以通过离散的prompt来做NLU任务,那么连续的prompt是不是能达到更好的效果。

两个motivation如下:

  1. finetune大模型非常困难。大模型的迁移泛化能力(transferbility)很差,而且当模型过大时,显存开销是个很大的问题。P-tuning并不需要对参数进行更新,真正会被训练到的参数大概只有预训练模型的1%
  2. 人工编写的prompt准确率无法保证,一般来说任何人造的prompt能提取到的知识都是预训练模型中知识的下界。

之前的工作中,针对prompt的生成方法有两种:

  1. Mining-based生成:利用中间词或使用依存树分析
  2. Paraphasing-based生成:利用back-translation

Ranked Ensemble

P-tuning

传统的prompt会根据人工选择的词将其映射到对应的词向量上,而p-tuning的做法是直接优化隐状态。

这里的e(x)是通过embedding层得到的vector表示,h代表的是可训练的embedding向量。作者在优化一节中详细描述了得到h的过程。

如果h的初始化使用简单的独立随机采样,那么可能在优化中可能表现不佳,作者认为这是由SGD带来的,隐向量可能只在初始化附近小幅度的变化,很容易落到local minima中。

此外,还需解决不同的隐状态向量之间的依赖关系。本文采用bi-LSTM进行建模,相较transformers引入的overhead较小。

此外,作者还发现在prompt中加入一些anchor词的embedding可以改善模型在NLI部分benchmarks上的表现。

Experiments

本文在两个task上进行了实验。

Task 1 Knowledge Probing

由于bert和GPT的词汇表不太一样,作者重新构造了一个新的数据集LAMA-29K,在这个数据集上对于各种模型使用P-tuning都能带来不小的改进;在模型参数量过大以至于无法进行fine-tune的MegatronLM模型上使用P-tuning达到了新的SOTA。

Task 2 SuperGLUE

第二个TASK作者使用了superGLUE(不知道为什么不用GLUE),并使用参数量接近的GPT2-base和BERT-base作对比,可以发现P-tuning对GPT的提升幅度是比较显著的,虽然和MP相比提升不是特别明显。吐槽:70出头的avg score可以说是baseline中的baseline了,目前superGLUE的SOTA都在90+,差距还是比较明显。当然superGLUE并不是最契合p-tuning的情景,所以苛求表现好像也不太公平。

陈沁宇
陈沁宇
Master Student@PKU

My research interests include natural language processing, machine learning and recommender systems.