持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
导语
本文对应原论文的第2章的部分内容。主要介绍Prompt的形式化描述。
2 Prompt的形式化描述
2.1 NLP中的有监督学习
在传统的监督学习系统中,输入 x 通常是文本数据,训练得到的模型 预测输出 y。然而,监督学习面临的一个主要问题是:找到大量的标注数据比较困难。
2.2 Prompt基础
基于提示的NLP学习方法试图通过学习LM来避免上述问题,这个LM学习的是文本本身的概率并使用该概率来预测y,减少或避免对大型监督数据集的需求。下表展示了一些Prompt中常见的术语,后续将分别进行解释。
总体来说,一般的Prompt分三步预测输出,即: 1)prompt添加、 2)answer搜索和 3)answer映射。
2.2.1 Prompt Addition
prompt添加是创建一个prompting函数,使得输入x 变为 。
函数的建立有两个步骤:
- 建立一个含有两个slot的模板,分别用于放置input slot [x]和answer slot [z]
- 将输入文本填充到 [x]
下表展示了几种常见的Prompt的形式:其中涵盖了包括文本分类(情感分类、主题分类、意图判断),基于方面的情感分析,文本对分类(自然语言推断),标注(如命名实体识别),文本生成(如概括和翻译)等任务。
其中需要注意的是:
- 按slot的位置来分,prompt 有两种主要类型:
- 填充文本字符串空白的完形填空 (cloze) prompt;
- 用于延续字符串前缀的前缀 (prefix) prompt。
- 模板中的词不一定是由自然语言tokens组成,也可以是连续空间的词嵌入向量。
- 和 的数量可以根据任务进行灵活的改变。
2.2.2 Answer Search
answer 搜索是搜索得分最高的文本z,使LM的得分最大化。
首先定义一个 z 的取值空间 Z。在文本生成任务中, Z 可以是整个语料范围,在文本分类任务中可以是语料词的一个小子集,比如 Z = { “excellent”, “good”, “OK”, “bad”, “horrible” }
定义一个填充函数,即用潜在的答案 z 填充 中的slot 。
最后,我们通过使用预先训练的LM来计算对应的填充的prompts的概率来搜索可能的答案z
这里的搜索函数可以是一个搜索得分最高的输出的argmax搜索,也可以是根据LM的概率分布随机生成输出的抽样。
2.2.3 Answer Mapping
搜索得到answer 后,我们最后需要将其转换为最终的label输出。在文本生成任务中,就等于,而某些情况下,多个答案可能会得到相同的输出。例如,在文本情感分类中,“excellent”, “fabulous”, “wonderful”这些答案就可以归类到同一个类(++,即very positive)。
2.3 设计Prompt时的考虑
主要考虑如下:
- PLM的选取,即使用哪个PLM来估计;
- Prompt工程,即如何设计选择Prompt模板;
- Answer工程,即的选取和answer mapping函数的设计;
- 扩展范式:上面展示的是最基础的Prompt的流程,我们也可以扩展至更加复杂的流程;
- 基于Prompt的训练策略:还有一些方法可以训练参数,prompt、LM或两者都可以。