Advertisement

文献阅读——Knowledgeable Prompt-tuning: Incorporating Knowledge into Prompt Verbalizer for TC

阅读量:

文章目录

  • 文章标题
  • 文章的动机
  • KPT算法中使用到一些标志
  • 对输入Text预测class概率的公式
  • 使用KB来扩充lable words中的种类
  • 对于扩充之后的label words的提纯
  • 使用每一个label得到的概率去预测class

文章标题

Knowledgeable Prompt-tuning: Incorporating Knowledge into Prompt Verbalizer for Text Classification

对于这篇文章,我使用了近三天的时间去阅读,当然也不能忽略寒假的效率低的问题,然后,我打算使用这篇文献中的代码去跑一跑,一下,然后去分析一下,看一下能否顺利调成功。如果可以的话,也可以使用这篇文献中的代码对于Prompt-Learning方面的TC有一个很好的认识,如果可以的话,也可以将STC上的一些做法进入到上面看看能不能做到STC上面来

文章的动机

这篇文章的书写动机无非就是为了解决TC问题,然后呢,加上一点就是通过引入外部的KBs中的知识来使得我们的最终分类的效果更上一层楼。

因为在这篇文章的发表之前就已经有人做过了相关的使用PLM加上Prompt-Learning相结合的方式来实现文本处理任务。也就是我之前看过的一篇文献Timo Schick and Hinrich Schütze. 2021a. Exploiting cloze-questions for few-shot text classification and natural language inference. In Proceedings of the16th Conference of the European Chapter of the Association for Computational Linguistics: Main Volume, pages 255–269, Online. Association for Computational Linguistics.

然后在使用这篇文献中verbalizer的思想,不过呢,跟原文有些不同的地方在于,这篇文章中借鉴的文章使用的verbalizer的方式是将label映射到label words的方式,而在本篇文章中使用的方式是将label words映射到class的方式,并且在之前前人研究的映射关系中,都是使用单个label word映射到label的方式,而在这篇文献中使用了KB中的knowledge来扩充label words set中的word数量。

同时,实验表明我们最终扩充得到的label words set中的words的种类越是繁多,那么最终我们的verbalizer的效果就是越好。因此,这也是我们引入KB中的知识来扩充label words set的目的。

但是由于我们在使用外部的知识来扩充label words的同时,可能也会将一些不必要的噪声引入进来。因此,我们在扩充label words 之后,又使用了四种提纯技术来将引入的label words中的那些类似于噪声的东西去除。

KPT算法中使用到一些标志

首先,我们来分解在KPT model中使用的一些标志。

  1. M表示这个算法中使用的大规模预训练语言模型;
  2. X=(x_0,x_1,...,x_n)表示原始的输入文本序列;这个序列输入进来之后,要经过prompt-tuning进行包装嵌套进响应的template形成最终的prompts命名为X_p
  3. Y表示总体的标签集;y表示Y中的一个类标签;
  4. 然后文中使用在X_p的输入条件之下对于【mask】的部分填充的不同的标签词进行计算条件概率。
  5. 然后这个结果得到之后,通过一个function g将这些不同的标签词的条件概率转换成这些标签词对应的class label的概率,然后选择一个概率最高的class label作为这个input data的最终分类标签。
  6. 又提到了一个Vy表示对于标签set中的任意一个子标签y,它对应的标签词的集合,如果将label set中的每一个子标签对应的标签词集合取并集,就是整个标签词集合。
  7. 文中在verbalizer的构建中提到的点是,这个verbalizer的功能就是将label words映射到对应的class中,这个verbalizer需要具备两个特点:一个是较大的覆盖率,还有一个是较小的主观偏差;
  8. 然后,文中实现上面的需求的方法是使用外部的知识,这里主要是解决了两种分类任务一个是topic分类还有一个是sentiment分类。

对输入Text预测class概率的公式

下面的公式表示将对于[MASK]位置的预测结果概率转换为这个label word对应标签概率的转换式:
在这里插入图片描述
这个公式的含义也就是,使用对于在input text X_p的情况下,如果我们对于Mask位置的预测结果是v,那么由于这个v\in V_y,所以就是说,此时我们对于v预测在输入x的情况下的概率,那么最终得到的结果就是这个这个预测值v对应的标签的概率,只不过需要进行一个转化。

如果多个label words同时对应同一个label ,那么计算这个标签的概率就是所有这些label words 的边缘概率之和
在这里插入图片描述

使用KB来扩充lable words中的种类

文中提到了两种文本分类的场景,一个是“topic分类”、还有一个就是“情感分类”。

  • Topic 分类

对于这种分类,文中使用的来扩充label words的工具是Related Words,这种工具也是一种知识图谱,在这个工具中的边表示两个结点对应的词之间的相似度;而结点则是毫无疑问的是对应的词。
然后通过和中心结点相连接的边所连接的结点对应的单词,就是我们需要引入的label words。

  • Sentiment 分类

这种分类,文化使用的扩充knowledge的工具是https://www.enchantedlearning.com/wordlist/negativewords.shtml和https://www.enchantedlearning.com/wordlist/positivewords.shtml
从中获取得到positive和negative的词汇,然后将这些词汇作为label words。

对于扩充之后的label words的提纯

通过上面的文中提到的一点就是,如果我们想要使得Text Classification的效果好,就是需要使得label words的种类尽可能的多,这样才有利于我们模型的泛化。文中提到的模型进行的改进就是在这个地方进行的改进,使用了KB中的knowledge引入到label words中从而开扩充label words的空间,最终达到增加label words种类的概率。

但是,上面的这种方式在增加label words种类的同时也引入了许多的噪声。这里提到的对于扩充之后的label words的提纯 工作就是基于这种情境之下展开的。

文中提到了四种方法,这四种方法在KPT中是都包含在内的,也就是说对于提纯任务他们都会发挥作用,同时也可以单独用在某一个模型上。

  1. 第一种方法:Frequency Refinement

这种方法解决的问题就是过滤掉一些在文本语料库中出现频率比较低的label words。
因为这种“频率较低”的词通常在我们使用这些标签词的时候是作为“噪声”的角色出现的,也就是实际的作用并不大。所以我们需要把它过滤掉。

在这个模型中使用的方法是,在正式的预测之前使用一种基于情境的先验概率作为指标,如果概率低于一个阈值就将这些词提前移除。

这种方法实际操作起来就是,首先考虑将这个label word使用语料库D中的每一个句子作为input text然后进行“包装”成一个prompt,然后将这个label word作为answer部分放到【mask】的位置,然后使用PML来预测此时的概率,通过这个label word对于全corpus中的所有的句子,都做这样的操作,然后我们就可以拿到这个label word对于这个语料库场景下的平均概率,通过这个平均概率和一个阈值进行比较,最终得到是否将这个label word移除出我们的label word set中。
在这里插入图片描述
然后,文中又提到了一个Support Set \widetilde{C}的概念,这个支持集是从这个整体的语料库中抽样而来的,可以代表整个的语料库,然后上面在整个语料库中进行的操作就可以只在这个支持集上进行。
在这里插入图片描述

  1. 第二种方法:Relevance Refinement

这种方法是将与当前class 相关性程度较低的label words挑选出来并移除。

  1. 文中在“相关性提纯”上使用的方式,从整体的框架上面来看就是使用了跟TF-IDF的方式相同,TF-IDF就是求一个词和当前文档的相似度,同时呢求解和其他文档的相似度,如果这个词和当前文档相似但是和其他文档不相似就证明这个词和这个文档有关和其他文档无关。
  2. 在Relevance Refinement中使用的方式跟TF-IDF相同,在文中的方法中label word v相当于是TF-IDF中的文档中的word;同时,class相当于是TF-IDF中的document。
  3. 这个方法中首先使用上面“频率提纯”中的语料库的support set C,然后通过这个C可以得到label word在这个C中的每一个sentence对应的prompt中的概率,通过这个概率的组合作为这个label word的向量化表示;对于class的表示,是给这个class起一个名字,虽然有可能导致覆盖率不足,但是这个这名字还是和这个class十分相关的。然后通过这个名字的表示作为这个class的向量化表示。
  4. 然后通过上面得到的label word和class的向量化表示进行计算label word和class的余弦相似度。
    在这里插入图片描述
  5. 然后上面的1,2点中提到的点就是为了防止有一些label word和一个class有一定对应关系,和其他的class也有一定的对应关系,从而导致混淆。也有一些label word和当前的class相关性太差,就需要将和当前class关联性较强的label word保留下来,关联性差的移除,就通过一个指标计算R(v)的值来表示相关性的程度。
  6. 对于这个R(v)的计算,首先计算得到label word 和 class的余弦相似度,然后就可以计算这个R(v)的值了。
    在这里插入图片描述
    如果R(v)的值<1,那么最终认为这个标签词v和当前的class y相关性并不大相比于y之外的class而言;如果值>1,就将这个v保留下来,作为class y的label word。
  1. 第三种方法:Contextualized Calibration

这种方法的目的是为了平衡一个class对应的label words的先验概率分布极端不平衡的情况,因为,在有些情况下,PLM计算label words的概率时,在忽略input text的情况下,同样也会侧重某一些label words,这就是先验分布的差异较大导致的问题。

但是,我们引入KBs中的knowledge来扩充label words目的就是为了引入多类不同的label words,所以这种不均衡肯定是要存在的

CC中对于使用PLM对于label word v在input text上的预测概率进行了改进在给原始的P_M添加一个分母,这个分母就是这个label word的先验概率,同时也是可以理解的,这个先验概率越大,最终总的概率就越小,先验概率越小,最终的总概率就越大。这也是一种调节的极端性差距的方式。
在这里插入图片描述
4. 第四种方法:Learnable Refinement

这种方法对应的场景是few-shot场景下,.

  1. 对于“可学习的提纯”中,使用的方式是给每一个label word配备一个可学习的权重,然后可以使用这些标签词集合中词的权重形成一个向量,这个向量初始化为0,对于每一个class对应的标签词集合中的每一个词的权重都是在这个子label words集合中是归一化处理的,也就是class y对应下,所有标签词的权重相加等于1
  2. 在训练过程中,对于有噪声的标签词,期望学习较小的权重,以使其对预测的影响最小化
  3. 由于这种可学习的权重是设定在few-shot场景之下,所以在这种情况下上面提到的CC方法,可以不用,不去调节极端分布。
  4. 如果出现有一些词不在PLM的词表中,那么使用这些词的平均预测值作为他们每一个的预测值。

使用每一个label得到的概率去预测class

平均法:对于得到的提纯之后的label word之后,如果进行class预测,这种方式是通过计算在V_y下的这些label words的预测分数然后然后进行取平均,然后得到最大的平均分数对应的V_y就是目标class对应的标签子集,这里的y就是最终的预测class

加权法:这种方式适配的是在few-shot场景下的可学习的提纯方法,这种方式中
会得到一个最终权重,然后将这个权重作为这个子标签词集合中的各个word预测概率的权重。然后将这个添加权重之后的class对应的label words集合的概率之和相加,就得到了当前label的概率。

全部评论 (0)

还没有任何评论哟~