KPT,将知识引入Prompt Verbalizer 处理文本分类任务,清华大学
在低数据场景下,Prompt-tuning(PT)比fine-tuning(FT)效果好,PT将分类问题转为带掩码的语言模型问题,关键就在于如何构建一个verbalizer实现标签空间到标签词空间的映射。现有的verbalizer大多由人工构建或者基于梯度下降进行搜索得到,不足在于标签词的覆盖范围小、存在巨大的偏差(bias) 。
KPT通过引入额外的知识扩展标签词空间,为了更好的利用知识利用PLM重新定义了扩展后的标签词空间,并在zero-shot和few-shot的文本分类任务中表现出色
在zero-shot和few-shot学习中KPT都有不错的性能
Open questions:
(1)用更精细化的方法从verbalizer中选择有用的标签词
(2)在模板构造和verbalizer设计方面用更好方法结合知识库和prompt-tunig
(3)探索KPT在其他任务上的应用
PLM在预训练过程中获得了丰富的知识,如何有效利用PLM中的知识越来越受关注
增加额外的分类器,在分类的目标函数下继续训练模型,有监督任务中且有足够的训练实例情况下表现好
在zero-shot和few-shot学习场景下应有fine-tuning仍是挑战,而prompt-tuning在zero-shot和few-shot任务中能有出色的表现
使用方法是将 输入语句嵌入自然语言模板,让PLM进行掩码语言建模
举例(对句子x进行主题分类)
x:“What’s the relation between speed and acceleration?”-----class:SCIENCE
prompt-tuning template:
“A [MASK] question: x” — 预测在[MASK]中填入标签词science — class:SCIENCE
从标签词science映射到类标签SCIENCE就需要用到verbalizer
人工制作:设计者对每一类标签写单个标签词对应(one-to-one),不足在于标签词包含的信息有限
如:{science} → \to →SCIENCE,但没考虑到信息更丰富的相关词“physics”和“maths”
使用梯度下降自动搜索最佳的verbalizer:归纳出一些在词义上与类名相似但在表面形式上不同于类名的单词,不足在于这种基于优化的扩展很难跨粒度推断单词,比如从“science” → \to →“physics”
knowledgeable prompt-tuning:不基于优化,更加适用于zero-shot学习
(1)Construction:引入额外知识为每一个类标签生成对应的一个标签词集,扩展的标签词并不仅仅是彼此的同义词,而且涵盖了不同的粒度和方面,因此比类名更全面、更公正
(2)Refinement:使用PLM对扩展的标签词进行降噪,对于zero-shot学习,使用contextualized prior剔除先验概率低的词,来自KB的词可能存在极其不同的先验概率,提出了一种鲁棒的校正方法contextualized calibration;对few-shot学习,对每个标签词分配一个可学习的权重。
(3)Utilization:使用普通的平均损失函数或一个加权平均损失函数,expended verbalizers将一组标签单词的分数映射到标签的分数
相关工作主要涉及:prompt-tuning, verbailizer construction, knowledge-enhanced PLMs, zero-shot and few-shot text classification
在大规模预训练模型GPT-3使用、小规模语言模型使用、在文本分类和SuperGLUE任务及其他任务中使用
human-written verbalizers、自动的方法搜寻最佳的verbalizers(缺点在于标签词最多不超过10个,且大部分是类别名称的同义词,不全面),KPT可以跨粒度为每个类生成和有效利用100多个相关标签词且能有效应用在zero-shot学习中
在知识增强应用在预训练阶段、fine-tuning阶段、文本分类任务。KPT在prompt-tuning阶段进行数据增强
M \mathcal{M} M:为在大规模语料上预训练后的语言模型
输入句子: X = ( x 0 , x 1 , . . . , x n ) X=(x_0,x_1,...,x_n) X=(x0,x1,...,xn)
句子 X X X属于类标签 y ∈ Y y\in\mathcal{Y} y∈Y
原始问题:classify the sentence x =“What’s the relation between speed and acceleration?” into label SCIENCE (labeled as 1) or SPORTS (labeled as 2)
X p = [ C L S ] A [ M A S K ] q u e s t i o n : X X_p=[CLS]\quad A \quad[MASK] question : X Xp=[CLS]A[MASK]question:X
对每一个填入 [ M A S K ] [MASK] [MASK]的词 v v v计算概率: P M ( [ M A S K ] = v ∣ X p ) P_{\mathcal{M}}([MASK]=v|X_p) PM([MASK]=v∣Xp)
定义一个 v e r b a l i z e r verbalizer verbalizer映射: f : V ↦ Y f:\mathcal{V}\mapsto\mathcal{Y} f:V↦Y 及 V \mathcal{V} V的一个子集 V y \mathcal{V_y} Vy映射到标签 y y y 即 ∪ y ∈ Y V y = V \cup_{y\in\mathcal{Y}}\mathcal{V}_y=\mathcal{V} ∪y∈YVy=V
函数 g g g :将标签词的概率转换到标签的概率,如一般的prompt-tuning中定义 V 1 = { “ s c i e n c e ” } \mathcal{V}_1=\{“science”\} V1={“science”}, V 2 = { “ s p o r t s ” } \mathcal{V}_2=\{“sports”\} V2={“sports”},如果 “science”的概率远大于“sports”的概率,则判为SCIENCE类
标签词应有两个特性:覆盖范围广、偏差小
对于主题分类任务
选择 Related Words 库(来源word embeddings, ConceptNet, WordNet)
N g ( v ) N_\mathcal{g}(v) Ng(v) 表示Related Words中与词 v v v相关系数 s > η s>\eta s>η(阈值)的相关词集合
于是有 V y = N g ( v ) ∪ { v } \mathcal{V}_y=N_\mathcal{g}(v)\cup\{v\} Vy=Ng(v)∪{v}
对于情感分类任务
引入positivewords、negativewords知识库,尽可能多地选择出关于positive和negative的表达
因为知识库的词汇不是为PLM量身定制的,所以收集到的知识丰富的词汇分析器可能会存在噪声
(1)OOV (out-of-vocabulary):有些词对PLM来说是词表外的,但是这些词可能也包含信息,为了能用PLM预测出这些词,使用每个token被填充到掩码位置的平均概率作为这些单词的概率
(2)rare words:使用上下文先验剔除低于一定阈值的稀有词
\quad\quad 对于文本分类任务
(3)标签词先验概率的差异大:使用标签词的contextualized prior校正预测的分布
\quad\quad contextualized calibration (CC)
P M ~ ( [ M A S K ] = v ∣ X p ) = P M ( [ M A S K ] = v ∣ X p ) P D ( v ) \tilde{P_{\mathcal{M}}}([MASK]=v|X_p)=\dfrac{P_{\mathcal{M}}([MASK]=v|X_p)}{P_{\mathcal{D}}(v)} PM~([MASK]=v∣Xp)=PD(v)PM([MASK]=v∣Xp)
使用contextualized calibration (CC)的优势在于只需要使用一个小规模的无标签支持集即可得到更好且更稳定的结果
已得到识别每个标签词对预测的影响,首先剔除归属多个标签的词,并给每个标签词 v v v分配可学习的权重 ω v \omega_v ωv,权重组合成一个向量 W ∈ R ∣ V ∣ W\in\mathbb{R}^{|V|} W∈R∣V∣,以零向量作为初始化
将每个refine的标签词的预测概率映射到类标签y上
假设 V y \mathcal{V}_y Vy中每个词 v v v对类标签 y y y的贡献相同,用在 V y \mathcal{V}_y Vy上的预测得分的平均值作为标签 y y y的预测得分:
y ^ = a r g m a x y ∈ Y ( 1 ∣ V y ∣ ∑ v ∈ V y P M ~ ( [ M A S K ] = v ∣ X p ) ) \hat{y}=argmax_{y\in\mathcal{Y}}(\dfrac{1}{|\mathcal{V}_y|}\sum_{v\in\mathcal{V}_y}\tilde{P_{\mathcal{M}}}([MASK]=v|X_p)) y^=argmaxy∈Y(∣Vy∣1v∈Vy∑PM~([MASK]=v∣Xp))
将标签词得分的加权平均作为预测得分
y ^ = a r g m a x y ∈ Y e x p ( s ( y ∣ X p ) ) ∑ y ′ e x p ( s ( y ′ ∣ X p ) ) \hat{y}=argmax_{y\in\mathcal{Y}}\dfrac{exp(s(y|X_p))}{\sum_{y'}exp(s(y'|X_p))} y^=argmaxy∈Y∑y′exp(s(y′∣Xp))exp(s(y∣Xp))
其中 s ( y ∣ X p ) = ∑ v ∈ V y α v l o g P M ( [ M A S K ] = v ∣ X p ) s(y|X_p)=\sum_{v\in\mathcal{V}_y}\alpha_vlogP_{\mathcal{M}}([MASK]=v|X_p) s(y∣Xp)=v∈Vy∑αvlogPM([MASK]=v∣Xp)
可应用交叉熵损失进行优化
由于人工设计的模板已被证明比自动学习出的模板更加有效,每个数据集使用了4个人工设计的模板,报告4个模板的评价结果和最佳结果
AG’s News数据集模板
DBPedia数据集模板
Amazon数据集模板
IMDB数据集模板
现有的方法提出Domain Conditional PMI( P M I D C PMI_{DC} PMIDC)来校准分布,它直接测量给定原始模板的[MASK]位置预测的标签词的先验概率,而不使用语料库中的实例填充模板
将我们的方法与PMIDC进行比较,并进一步评估需要多少实例才能产生令人满意的校准结果
我们发现 ∣ C ~ ∣ ∼ 100 |\tilde{C}|\sim100 ∣C~∣∼100足以产生令人满意的校准结果,并且利用这样一个小的未标记支持集产生比 P M I D C PMI_{DC} PMIDC更好的结果
假设标签词的后验概率只需要少量的训练实例即可以被训练到所需的大小,在10-sot场景下进行实验结果如下,CC对few-shot的只有少量的影响