《Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing》论文阅读
文章地址:
文章介绍
提示学习作为继传统特征工程、机器学习的第一范式,基于神经网络的完全监督学习(架构工程)的第二范式,预训练,微调范式(目标工程)的第三范式之后的预训练,提示,预测范式(Prompt工程)第四范式,自从GPT-3出来以后受到了极大的推崇。该篇文章则从基本概念、训练策略、提示(答案)工程、现有研究、未来挑战等方面详细介绍了提示学习的“过去,现在以及可能的未来”。
NLP的两大问题
首先是缺乏足够的预料去训练模型,尤其是大规模预训练语言模型出来以后,如果数据集过小很容易过拟合。紧接着就是如何在小样本甚至零样本的情况下中让预训练语言模型能够最大程度上的预测出样本标签。
提示学习便孕育而生,其主要目的是将原本的问题转化为预训练语言模型预训练时候的任务,比如如果我们要预测“这部电影很糟糕”的情感极性,便可以添加提示“这部电影很糟糕,[总体上来说这部电影的情感极性是__]”。通过选择适当的提示,便可以让模型最大程度上的预测我们期望 的输出。这种方法的优点是,给定一组适当的提示,理论上便可以以完全无监督的方式让语言模型解决大量的问题。
当然提示学习也引入了一个必要的问题,即提示工程——如何寻找到最合适的提示。
提示学习
与普通的微调不同,提示学习看似很简单,一般来讲就是根据特定的下游任务去设计相应的提示模板。而提示模板可以就是简单的一句话,从而将其转化为一种类似于问句(前缀提示)或者完型填空的形似(完型填空提示)。前者适用于像GPT-3这样的从左到右的预训练语言模型,而后者理论上更适用于像BERT这样的双向预训练语言模型(MLM)。
提示工程
提示学习较为重要的是提示模板的设计。其可以简单的分为两个步骤,首先在原句中添加若干个空位(slot),紧接着选取合适的token填补这些空位。目前常见的提示模板的生成有2种,一个最直观的方式就是人工设计提示,但这种方式就跟最早的特征工程一样,难以去寻找到合适的模板且需要消耗大量的时间和人力。因此有些人就通过梯度或者探寻是答案与原句中的中间词从而自动生成提示。
然而在有些时候虽然这种人们看得懂的提示(离散提示)在我们看来是合理的,但对模型来说其看得懂的是数值向量,因此连续型提示(也就是一组向量,甚至无法转化为人们看得懂的单词)更适合模型的理解
答案工程
一般来讲我们不会再让模型回答数字(分类问题),而是一个真真正正的单词比如情感极性中的positive.当然对于答案集的选择也是一个很重要的问题,因为同义词是否要加进去以及要怎么样才能映射,确实是个重要的问题。
训练策略
目前有三种常见的训练策略,没数据不训练,小样本只训练提示,大样本都可训练。
挑战
- 如何设计一个合理的提示以及如何讲提示应用到其他任务当中
- 如何在提示中添加结构化信息
- 提示与答案之间的相互影响
- 多个提示模板的共同学习
- 提供共享、提示迁移和跨语言提示
- 提示的可解释性