论文笔记--PTR: Prompt Tuning with Rules for Text Classification
论文笔记--PTR: Prompt Tuning with Rules for Text Classification
-
- 文章概述
-
- 文章重点
-
- 0 关键技术分析
- 3.1 综合训练策略
- 3.1.1 综合训练策略综述
- 3.1.2 基于规则的提示调优方法
- 3.1.3 任务拆解策略
- 3.1.4 子提示组合优化方法
- 3.1.5 多标签场景下的应用情况
-
4 系统性能评估与实验结果
- 4. 文章亮点
- 5. 原文传送门
- 6. References
1. 文章简介
- 标题:基于规则的提示调优方法用于文本分类
- 作者:Xu Han, Weilin Zhao, Ning Ding, Zhiyuan Liu, Maosong Sun
- 日期:2022
- 期刊:AI Open
2. 文章概括
该系统引入了PTR(Prompt Running with Rules)方法,并旨在应用于多种文本分类问题。其核心理念在于将整体任务划分为若干子任务,并通过预设的子提示组合生成新的提示。这些设计均以期更深入地挖掘模型所包含的知识。
3 文章重点技术
3.1 Pre-training & Fine-tuning & Prompt-based Fine Tuning
Pre-training 一般通过BERT[1]完形填空来达成训练,如下图(a)所示,我们随机掩码一些token,然后再根据上下文预测这些token。
在一些任务中,我们要根据task的特性对模型进行微调,也就是Fine-tuning(FT) ,如下图(b)所示,FT阶段我们会在下游任务数据上微调模型的参数,从而使得模型在特定任务上表现更好。
但上述预训练和FT由于训练目标(完形填空VS分类/…)的差异会存在gap,为了解决上述gap,我们常用prompt-based FT 来进行微调,如下图©所示,我们将标注数据嵌入到prompt中,这样下游任务目标也可以转化为一个完形填空式任务。
但针对关系提取等较为复杂的NLP任务时,上述prompt-based FT很难挑选合适的prompt和label words来支撑推理,此时可以采用auto-generated prompt 方法,让模型自己生成prompt,如下图(d)所示。
但上述auto-generated prompt会产生额外的计算,为此我们可以通过Soft Prompt 来解决,即下图(e),在hard prompt基础上进行梯度搜索。但soft prompt的问题时模型参数要足够大才会有效。

3.2 PTR(Prompt Tuning with Rules)
为了解决上述问题,文章提出了PTR,可以将单个复杂任务分解为几个简单的子任务,然后设计这些子任务的sub-prompt,再将sub-prompts整合成一个prompt。
具体来说,给定文本分类任务\mathcal{T}=\{\mathcal{X}, \mathcal{Y}\},文章将任务分解为一系列条件函数\mathcal{F}。f \in \mathcal{F}用于决定单个条件是否满足。如下图第一个例子所示,我们考虑一个关系提取任务"person:parent",给定句子"Mark Twain was the father of Langdon",我们要判定其中实体的关系。为此文章将任务分解为1) f_{e_s}(\cdot, \cdot): "Mark Twain"是一个person 2) f_{e_o}(\cdot, \cdot): “Langdon"是一个person 3) f_{e_s, e_o}(\cdot, \cdot, \cdot): “Mark Twain"和"Langdon"的关系为”'s Parent was”,写成表达式即为f_{e_s}(a, person) \land f_{e_s, e_o}(a, 's\ parent\ was, b) \land f_{e_o}(b, person),其中e_s, e_o分别代表subject/object实体。

3.3 task decomposition
该方法的核心在于如何将任务进行拆分。研究者在各个数据集上利用标注信息来推导结构性信息。例如,在意图分类场景中,“card_activating”和“card_linking”都包含“card”,因此我们可以将任务拆分为两部分:核心实体部分和后缀部分。按照类似的逻辑,则可将多分类任务表示为层次化的条件函数形式,并据此设计层次化的条件函数。
对于每个条件函数f\in\mathcal{F}, 研究者会自定义特定的提示语(sub-prompt)。下表总结了文章针对关系提取任务设计的示例提示语.例如, 对于类别为"person:country_of_birth"的任务, 提示语设定为:

3.4 Sub-prompts composition
将子任务分解之后,我们可以得到每个任务对应的sub-prompt,接下来需要将这些sub-prompts进行整合。考虑到f_{e_s, e_o}(a, 's\ parent\ was, b)的概率可能基于f_{e_s}(a, person)和f_{e_o}(b, person),文章考虑将所有sub-prompts整合为一个prompt:直接concat所有promp,即T(x) = [T_{f_{e_s}}(x);T_{f_{e_s, e_o}}(x);T_{f_{e_o}}(x);] \\ = x\ the\ [M]_1\ e_s\ [M]_2\ [M]_3 [M]_4\ the\ [M]_5\ e_o。其中;表示sub-prompts之间的聚合操作,对应的联合概率为
p(y|x) = \frac {\prod_{j=1}^n p([M]_j = \phi_j(y) | T(x))}{\sum_{\overline{y}\in\mathcal{Y} \prod_{j=1}^n p([M]_j = \phi_j(\overline{y}) | T(x))}} \tag{1}
,其中n为template T(x)中的掩码个数。推理阶段我们直接采用上式来预测每个mask即可。
在训练阶段,我们会考虑将独立概率和联合概率结合,最终的PTR的损失函数为\mathcal{L} = \frac 1{|\mathcal{X}|} \sum_{x\in\mathcal{X}} (\mathcal{L}_{indep}(x) + \mathcal{L}_{joint}(x))\\ =\frac 1{|\mathcal{X}|} \sum_{x\in\mathcal{X}} \left[-\frac 1n \sum_{j=1}^n \log p([M]_j = \phi_j (y_x) | T(x)) -\log p(y_x|x)\right],其中\log p(y_x|x)由(1)定义。
3.5 多个label words的情况
在某些情况下,在同一y值下可能会有多个关联label words。例如,在情感分类任务中,“positive”常用于表示"great, good"等情感色彩丰富的词语,在这种情况下我们需要将原来的等式关系转变为包含关系,并且特别地我们可以通过对每个label words赋予特定权重来优化计算结果。具体而言,在概率计算中我们可以将其表示为\frac 1m \sum_{k=1}^m \lambda_k p([M]_j = w_{j,k}|T(x)) ,其中\lambda_k代表每个label word对应的权重系数,默认情况下取值均为1
4. 文章亮点
该文章提出了一种名为PTR的方法,并将其作为复杂NLP任务的分解工具,在每个子任务的sub-prompt基础上进行整合以生成最终提示串。研究者在关系分类、实体识别以及意图预测等多个领域进行了系统性实验验证,在多个基准测试集上取得了显著的结果。具体而言,在与全监督学习方法相比时,PTR展现出明显的优势;与基于prompt的全监督方法相比较,则在多数情况下实现了性能提升或达到了现有最优水平(SOTA)。研究者进一步论证了以下观点:将预训练模型中融入足够多与下游任务相关的知识储备,并通过适当的prompt引导模型进行推理活动能够显著提升模型性能。
5. 原文传送门
PTR: Prompt Tuning with Rules for Text Classification
6. References
论文笔记–BERT模型:基于深度双向Transformer语言理解的预训练技术
