阅读摘要
目前流行的第四大范式Prompt的主流思路是PVP,即Pattern-Verbalizer-Pair,主打的就是Pattern(模板)与Verbalizer(标签映射器)。
本文是在Verbalizer(标签映射器)方面做出的创新。
文章思路是数据增强+去噪,不过数据增强在于verbalizer对于label space至expanding word space的映射,引入外部的扩展标签词集,辅助分类,去噪并不新颖,就是在细化两个场景,zeroshot滤掉扩展标签词集的低频词,并上下文校验。fewshot则是引入可学习权值,减小噪声影响。
[0] 摘要
小样本文本分类下,Prompt-Tuning比Fine-Tuning好,PT核心是:verbalizer,主要是完成标签空间到标签词空间的映射。
传统verbalizer不准确。论文提出KPT方法,使用KB拓展verbalizer的标签词空间,并使用预训练模型对标签词空间进行细化。
[1] 介绍
PLM本身含有丰富的知识,如何激发和利用这些知识是研究重点。
使用PLM中蕴含的信息的手段有2:FT&PT。微调需要充分的下游任务数据学习,不使用小样本或零样本;提示学习被证明在小样本或零样本中有更好的表现。
最常用的Prompt方法就是把文本分类任务转化为MLM任务,其中PET那篇论文提出了Verbalizer(标签映射器),对分类性能有很大影响。
PET论文地址:https://arxiv.org/abs/2001.07676
有人提出使用离散搜索或梯度下降来替代手动verbalizer,但是效果都不如手动的好。
这里我理解的离散搜索或梯度下降,分别指PET和接全连接层。但我还没看对应的论文,先贴出来。
离散搜索论文:《Automatically Identifying Words That Can Serve as Labels for Few-Shot Text Classification》
梯度下降论文:《WARP: Word-level Adversarial ReProgramming》
手工制作的一对一映射限制了标签词的覆盖范围,人工语言编写者通常根据有限的信息来确定预测,限制verbalizer的性能。
手动verbalizer和基于优化的拓展结合使用效果会好,但是很难跨粒度推断单词,例如”生物“到”科学“。提出基于知识的提示调优KPT,不基于优化,所以也对零样本学习有作用。
基于优化的肯定需要样本学习。基于外部知识图谱的就可以直接不学习就分类了。
KPT包含三个步骤:构建、改进和利用。
(1)构建:使用外部KBs(理解为知识图谱)为每个标签生成一组标签词,扩展的标签词不仅仅是彼此的同义词,而是涵盖了不同的粒度和角度;
(2)改进:为了应对标签词无监督扩展中的噪声,提出了四种细化方法,即频率细化、相关性细化、上下文化校准和可学习细化;
(3)利用:应用平均损失函数或加权平均损失函数来利用扩展的映射器,它将一组标签词的分数映射到标签的分数。
[2] 相关工作
Prompt-tuning
自从GPT3出现以来,提示调优受到了相当大的关注。GPT-3证明,通过提示调优和上下文学习,大规模语言模型可以在低数据环境中获得优异的性能。
Verbalizer Construction
1. 映射器器是提示调优中的重要组成部分,对提示调优的性能有很强的影响
2. 使用人类书写的映射器,高度偏向于个人词汇,覆盖面不够。
3. 如果是自动化研究(添加网络层学习)需要足够的训练集和验证集来进行优化,且确定的映射器通常是类名的同义词。
4. 尝试每个类别的多个标签词。为每个类设置的标签词的最佳大小通常小于10,这在文本分类任务中缺乏覆盖率。
[3] KPT
[3.1] 总体思路
作者使用外部kb为每个标签生成一组扩展标签单词(每个类生成100多个相关的标签词),并根据Prompt-tuning的核心思想:
1. 在输入x中插入文本片段(前缀),构建出模板(Pattern)
2. 在输出y,将label 用一个语言表达器(verbalizer)映射至lablel的扩展词上
3. 问题转化成输入为模板,输出为label的扩展词,且分类问题转化为掩码语言建模问题 模板具体流程如下,Xp的样例如下
利用MLM模型预测[mask]位置单词,通过预训练的掩码语言模型M计算出 扩展标签词集 中的每个标签词v分别放入mask token位置时的概率:
最后通过g函数将空间从标签扩展词的概率映射回标签概率:
举例:由于外部知识库中,属于类标签A的单词有100个左右,所以只要模型预测的[MASK]在这100个词里面,都可以算是预测中了标签A。那么问题来了,这100个词我都想要吗?这100个词都是同等重要的吗?这涉及到去噪、和权重问题。
引入了太多了知识库,这属于数据增强。单数增强的数据有噪声,需要去噪,留下需要的部分。文章主打的是,以前的工作中,增强的都是类标签的同义词,而作者自己增强的是多粒度的、多方面的。
这样也就完成了分类,基于上述主思想,作者提出了一种上下文的校准方法消除扩展词v中的噪声。并探讨了利用扩展v的普通平均和加权平均方法。
[3.2] 构建映射器
重点是如何在主题分类和情绪分类中引入外部知识构建扩展标签词。对于主题分类,利用concept net与word net等方法引入相关词,通过边缘表示相关性筛选。情绪这种二元分类,作者引入前人构建的情感字典获得扩展词,最终构建扩展标签词词汇表,示例如下:
[3.3] 映射器 细化/精炼/去噪
去噪场景有2种:
1、少样本学习(few shot)
2、零样本学习(zero shot)
对于少样本学习:
可学习权重去噪: 因为有样本可以学,所以为每个标签词分配了一个可学习的权重:
我们希望学习到的权重要更小,以使其对预测的影响达到最小化,所以公式种才要正则化。而且这样的权重不一定是必要的,因为模型本身就有可能学习到可以去噪的水平。
除此之外,论文还把OOV的标签词拆分成逐token的多个部分,并用PLM逐token预测的平均概率,作为整个词的概率,没理解。这里涉及到WordPiece,关于英文数据集怎么改成MLM,我还没弄懂,就是因为分词会产生WordPiece。
对于零样本学习,主要有三个问题:
词频去噪:稀有词预测概率低,结果可能不准确。 作者用一种标签词的上下文先验来代替词频字典,把预测概率低于阈值的词去掉。
本文作者假定了一个小尺寸的未标注的support集C作为上下文,并假设c中的样本均符合均匀分布,则每个标签扩展词的上下文的分布为:
最后删去那些概率低于设定阈值的扩展词。
相关性去噪:KBs中的标签词没经过训练,会存在一个标签词对多个类别都有很大贡献的情况,文章设计了一种相关性计算方法,会在标签词集合里面删除相关性小于1的词。
各个标签词的先验概率差异极大,导致有些词相比于其它词很难被预测。作者使用上文提到的上下文先验对概率分布进行了一个校准来解决这个问题,即用 PLM 预测概率除以标签词的先验分布概率。
对于 few-shot learning,Refinement 简单很多,作者为每一个标签词赋了一个权重来学习。
上下文校准:标签词的先验概率有巨大差异。有些词就是很难被预测到,所以要正则化这些词的概率。
[3.4] 映射器的使用
平均:取标签词集合中,每个标签词的概率的平均,然后比大小。适用于零样本学习。
加权平均:取标签词集合中,每个标签词的概率的加权平均,然后比大小。适用于少样本学习。
[4] 实验
数据集
· AG’s News
· DBPedia
· Yahoo
· IMDB
· Amazon
[5] 分析
标签词集的多样性
KPT的一个优点是它可以跨不同粒度生成不同的标签词。
为了具体量化这种多样性,对于类别y的正确预测句子,计算标签词v∈Vy出现在[MASK]位置前5个预测中的频率。然后报告出现频率最高的15个标签词。
如图所示,预测了标签词的多样性,而不是主要是原始的类名。预测的标签词涵盖了相应主题的各个方面。例如,在SPORTS这个话题中,预测的“联赛”、“足球”、“教练”从不同的角度与之相关。