【NLP】Prompt-Tuning这么好用?

作者:十方

使用prompts去调节预训练模型处理文本分类任务在小样本上已经取得了比直接finetuning模型更好的效果,prompt-tuning的核心思想就是嵌入一小段文本,比如对于文本分类任务,将其转变成填空任务,还有就是构建个映射器(verbalizer)可以在label和word之间相互映射,verbalizer是人工精妙设计的且用梯度下降学习的。论文提到verbalizer可能缺少覆盖度且引入很高的偏差和方差,所以论文提出引入额外知识到verbalizer里,构建一个Knowledgable Prompt-tuning(KPT)去提升效果。Finetuning虽然效果很好,但是也需要充足的样本去重新训练网络,在模型tuning领域,有很多prompts的研究在预训练目标和下游任务构建了桥梁。论文给了个很好的例子:

句子x: What's the relation between speed and acceleration?

category: SCIENCE

模板: A [MASK] question: x

预估结果基于[MASK]所填word的概率,如果[MASK]填science概率比较高,那verbalizer的作用就是把science映射到真正的类别SCIENCE上。verbalizer就是构建vocabulary和label之间的桥梁。

现存很多工作都是人工制定verbalizer的,人工指定verbalizer就有很多问题,比如上述例子只把science映射成SCIENCE类,就很多限制,因为physics和maths同样可以映射到SCIENCE,因此这种人工one-one映射限制了模型的收敛,同时预估也会有问题,也容易在verbalizer中引入偏差。还有很多工作尝试缓解人工verbalizer的缺陷,用梯度下降寻找最好的verbalizer,然而这样的方法很难推断science和physics之间的联系。如果我们能把{science, physics}->SCIENCE这种信息直接注入到verbalizer,预估的效果就会显著提升,这就是KPT做的事。

ff8756db7a0d62b6e82c23e96ce2f9b5.png

fac37b7f34048e43d403850c1cdd05c9.png

KPT概述

KPT有3步

  • construction stage

用external KBs为每个label创建一系列的label words。值得注意的是扩展label words不仅仅是找同义词,而是从各种粒度视角。

  • refinement stage

用PLM本身去给扩展的label words降噪。对于zero-shot的效果,该文提出了contextualized calibration去删除一些先验概率较低的words。对于few-shot learning,该文又提出了一个可学习的权重用于verbalizer的降噪。

  • utilization stage

最后用个average loss function去优化expanded verbalizers,把对一系列label words的打分映射到真正标签的打分上。

整体框架如下图:

【NLP】Prompt-Tuning这么好用?_第1张图片

该文的重点就是构建一个优秀的融合各种外在知识的verbalizer。verbalizer就是把vocabulary中的少数词的概率,映射到label的概率,label words的集合是V,label空间是Y,Vy表示标签y的label words集合,是V的子集,最终预估y的概率就是下式,g就是把label words的概率转成label的概率:

d5746013d84f1fd88282fad9b099207a.png

62830c0f0d68110212e1a93d96c5518c.png

c127bb276ed2d596313b942910f4d0aa.png

KPT Method

基于上下文预估masked的word并不是一个单选问题,是没有标准答案的,所以verbalizer必须有两个特性,广覆盖和少主观偏差。幸运的是external structured knowledge在主题分类和情感分类会同时满足这两个特性。对于主题分类而言,核心就是要从各个角度找到与topic相关的label words,论文选了个知识图谱作为外部信息(external KB),该图谱可以用来衡量label words和topic直接的相关性,用此选出与topic最相关的label words集合,如下表所示:

【NLP】Prompt-Tuning这么好用?_第2张图片

尽管用了个知识图谱构建了一个verbalizer,但是这个verbalizer是充满噪声的,因为PLM可能根本不认可,所以需要refinement的过程。对于zero-shot learning,有3个问题需要解决。首先就是OOV问题,PLM没见过KB推荐的词咋办呢?这些词可能有很多类目的信息,处理这个问题,可以简单的把没见过的词mask后预估应该填的词的平均概率,作为这个词的概率。第二个问题是处理一些长尾词汇,PLM预估长尾词汇的概率往往是不准确的。该文提出用contextualized calibration去删除一些先验概率较低的words,具体是我们可以计算label words的概率期望:

779ced040c7350fa1e76593cd3999c57.png

我们从训练集采样一批样本然后mask掉word v并近似计算其期望:

682e0c4568a72685e7d95a0554196c8a.png

如果这个值小于一个阈值就删除。

第三个问题就是有些label words和其他相比,很难被预估个比较高的score,所以KB中的label words的概率需要被修正,用下公式:

aae375f3eb7f61ff1dd389f328f7c7c4.png

对于Few-shot learning,处理起来就相对简单了,给每个label words使用一个可学习的wv,最终weight归一化后如下:

40556e07d0f21084baa9958ff67d9a48.png

最后就是优化的目标了,一种是averge的方式,一种是加权,如下所示:

bf9e618218e33238fd908d59d27097d3.png

7b0a3783a41c008a7dec2275e66ab8ef.png

f39dfb1a1a9ecd8c968902214c9355dd.png

0f3890927ac37324e4a4743338aa5468.png

164ef89492e1d4918c8ef5656e2bb8cd.png

实验

实验效果如图所示:

【NLP】Prompt-Tuning这么好用?_第3张图片

【NLP】Prompt-Tuning这么好用?_第4张图片

e769b77bf93c6c1d8dddd6c57485cd6d.png

442f53eec9de21733c2b4f8784f336d5.png

参考文献

1 KnowLedgeble Prompt-tuning: Incorporating Knowledge into Prompt Verbalizer for Text Classification

https://arxiv.org/pdf/2108.02035.pdf






往期精彩回顾




适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群955171419,加入微信群请扫码:

【NLP】Prompt-Tuning这么好用?_第5张图片

你可能感兴趣的:(人工智能,机器学习,深度学习,python,神经网络)