向量(pattern)的构建方法可以归纳为以下几点:人工构建(Manual Template)、启发式法(Heuristic-based Template)、生成(Generation)、词向量微调(Word Embedding)、伪标记(Pseudo Token)。今天就来教大家如何挑选合适的Pattern。

人工构建、启发式法、生成也被称为离散的模板构建法,其旨在直接与原始文本拼接显式离散的字符,且在训练中 始终保持不变 。这里的保持不变是指 这些离散字符的词向量在训练过程中保持固定 。通常情况下, 离散法不需要引入任何参数 。
词向量微调、伪标记则被称为连续的模板构建法,其旨在让模型在训练过程中根据具体的上下文语义和任务目标对模板参数进行连续可调。这套方法的动机则是认为离散不变的模板无法参与模型的训练环节,容易陷入局部最优,而如果将模板变为可训练的参数,那么不同的样本都可以在连续的向量空间中寻找合适的伪标记,同时也增加模型的泛化能力。
因此,连续法需要引入少量的参数并让模型在训练时进行参数更新。

下面简单介绍几个经典的方法:
(1)启发式法构建模板
启发式法一般是采用规则、正则化模板的方法自动构建出相应的Pattern,或者直接通过启发式搜索的方法获得Pattern。这一类方法在程序设计时只需要编写规则和少量的模板即可快速的获得Pattern。
给定一个具体的任务,可以实现定义若干个模板,然后根据具体的句子内容,向模板中填充相关实体,以贴合句子实际的描述。例如清华大学刘知远团队提出的 PTR (PTR: Prompt Tuning with Rules for Text Classification)利用启发式的规则定义若干子模板(sub-prompt),并通过若干子模板的组合来形成最终的Pattern。
因此不论给定哪个句子,模板不会完全固定不变,而是根据不同的实体而相应改变模板的字符序列。
相比之下,AutoPrompt则是另一种典型的方法,其由加州大学提出《AutoPrompt: Eliciting Knowledge from Language Models with Automatically Generated Prompts(EMNLP2021)》,给定原始的输入,额外定义若干离散的字符作为trigger,并组成Template,喂入MLM中预测对应label word的概率。而这些trigger最终通过梯度搜索的方法进行挑选。

(2)生成法构建模板
基于规则的方法构建的模板虽然简单,但是这些模板都是“ 一个模子刻出来的 ”,在语义上其实挺难做到与句子贴合。因此一种策略就是 直接让模型来生成合适的模板 ,因为文本生成本质上就是去理解原始文本的语义,并获得在语义上较为相关的文本。这样不论给定什么句子,我们可以得到在语义层面上更加贴合的模板。
陈丹琦团队提出 LM-BFF 则作为该类方法的典范,其出自于《Making Pre-trained Language Models Better Few-shot Learners》(ACL2021)。LM-BFF提出了基于生成的方法来构建Pattern,而给定相应的Pattern之后,再通过搜索的方法得到相应的Verbalizer。
首先定义一个Template的母版,将这些母版与原始文本拼接后喂入T5模型(T5模型属于自回归式的生成模型)后在<X>和<Y>占位符部分生成相应的字符,最终形成对应的Template。
通过多个任务的小样本场景测试,整体观察可发现这种基于生成的方法明显比人工构建的效果更好。

(3)连续提示模板
不论是启发式方法,还是通过生成的方法,都需要为每一个任务单独设计对应的模板,因为这些模板都是可读的离散的token,这导致很难寻找到最佳的模板。
另外,即便是同一个任务,不同的句子也会有其所谓最佳的模板,而且有时候,即便是人类理解的相似的模板,也会对模型预测结果产生很大差异。
如何避免这种问题呢,一种新的 “连续提示” 被提出,称作Continuous Prompt或Soft Prompt,其将模板转换为可以进行优化的连续向量,换句话说,我们不需要显式地指定这些模板中各个token具体是什么,而只需要在语义空间中表示一个向量即可。
这样,不同的任务、数据可以自适应地在语义空间中寻找若干合适的向量,来代表模板中的每一个词,相较于显式的token,这类token称为 伪标记(Pseudo Token) 。
伪标记:假设针对分类任务,给定一个输入句子 ,连续提示的模板可以定义为:其中 则是伪标记,其仅代表一个抽象的token,并没有实际的含义,本质上是一个向量。

每个伪标记的初始化可以有下列几种情况:
1、最简单的是随机初始化:即随机初始化一个面向所有伪标记的embedding table,可采用正态分布或者均匀分布等;
2、每个token使用预训练模型已有的embedding table进行初始化,此时,每一个伪标记先随机指定词表中的一个词,并取对应词的embedding作为这个伪标记的初始化;
3、在分类任务上,使用label word(verbalizer)对应的embedding作为初始化,可以有效限制模型输出的是预设的输出类对应的word。
因此,在训练过程中,每个伪标记以及对应的MLP参数都可以得到训练,对于不同的输入句子 ,这些伪标记对应的embedding也各不相同,达到了预期的目的。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/75144
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!