知识图谱:【知识图谱问答KBQA(五)】——P-tuning V2

Abstract

Prompt tuning仅使用冻结的语言模型调整连续提示,大大减少了训练时每个任务的存储和内存使用,然而,在 NLU 的背景下,先前的工作表明,对于正常大小的预训练模型,prompt tuning效果不佳。我们还发现,现有的prompt tuning方法无法处理硬序列标记任务,这表明缺乏普遍性。我们提出了一个新的经验发现,即适当优化的prompt tuning可以在广泛的模型尺度和 NLU 任务中普遍有效,它在只调整0.1%-3%的参数下可以与fine-tuning性能相匹敌。我们的方法 P-Tuning v2 不是一种新方法,而是针对 NLU 优化和适配前缀微调prefix-tuning的新版本。鉴于 P-Tuning v2 的普遍性和简单性,我们相信它可以作为fine-tuning的替代方案和未来研究的强大基线。

Introduction

预训练的语言模型提高了广泛的自然语言理解 (NLU) 任务(如问答和文本蕴涵)的性能。一种广泛使用的方法fine-tuning,更新目标任务的整个模型参数集。 虽然微调获得了良好的性能,但因为其必须存储所有参数的梯度和优化器状态,所以它在训练期间会消耗内存。

此外,微调需要在推理过程中为每个任务保留一份模型参数的副本,因为预训练的模型通常很大导致这很不方便。另一方面,Prompting会冻结预训练模型的所有参数,并使用自然语言提示来查询语言模型。例如,对于情感分析,我们可以连接一个带有提示“This movie is [MASK]”的样本,并要求预训练的语言模型预测掩码标记,然后我们可以使用“good”和“bad”的预测概率作为掩码标记来预测样本的标签。Prompting根本不需要训练,只存储一份模型参数。 但是,与微调相比,prompting在许多情况下会导致性能欠佳。

Prompt tuning是只tuning连续prompts的想法。 具体来说,Liu,Lester等人2021年提出将可训练的连续嵌入添加到输入词嵌入的原始序列中。这些连续嵌入(也称为连续提示)类似于prompting中的离散手动设计提示。训练期间仅更新连续提示。 虽然prompt tuning在许多任务上优于prompting,但在模型规模较小(特别是小于 100 亿个参数)时,它仍然表现不佳。此外,如我们的实验所示,与几个硬序列任务(如抽取式问答和序列标记)的fine-tuning相比,prompt tuning表现不佳。

我们在本文中的主要贡献是一个新的经验发现,即适当优化的 prompt tuning 可以在跨各种模型规模和 NLU 任务中普遍与fine-tuning相媲美。与先前工作中的观察相比,我们的发现揭示了 NLU 中prompt tuning的普遍性和巨大潜力。

从技术上讲,P-tuning v2 可以被视为prefix-tuning的优化版本,这是一种为生成而设计并适用于 NLU 的方法。最显着的改进源于使用deep prompt tuning,即对预训练模型的每一层应用连续提示。deep prompt tuning增加了连续提示的容量,并缩小了跨各种设置微调的差距,尤其是对于小型模型和硬NLU任务。此外,我们提出了一些优化和实现的细节,以进一步增强结果。

实验结果表明P-Tuning V2在从300M到10B参数的不同模型尺度下以及在问答和序列标注等各种硬NLU任务上都可与fine-tuning相匹敌。

Preliminaries

1.NLU Tasks

在这项工作中,将 NLU 挑战分为两类:Simple NLU tasks和Hard sequence NLU tasks:

1) Simple NLU tasks

这类任务指的是单标签分类。来自 GLUE 和 SuperGLUE 的大多数数据集,包括文本分类(例如,SST-2)、自然语言推理(NLI,例如,MNLI-m、RTE)、多项选择问答(例如,BoolQ)等都属于这类任务。

2) Hard sequence NLU tasks

这类任务指的是对一系列标签的分类。它们主要是与信息抽取相关的问题,例如开放信息抽取、命名实体识别、抽取式问答和语义角色标注。

2.Prompt Tuning

当主干语言模型的参数被冻结时,prompt tuning或 P-tuning引入了可训练的连续提示,以替代 NLU 的自然语言提示。
例如,让 V 指代语言模型 M 的词汇表,e 充当 M 的嵌入函数。对电影评论进行分类 x =“令人惊叹的电影!” 作为正面或负面,很自然地会想到在评论中附加一个提示“It is [MASK]”,并生成被预测为“好”或“坏”的掩码标记的条件概率作为分类。 在这种情况下,提示标记 {“It”,“is”, “[MASK]”} 属于模型的词汇表 V,输入嵌入序列将是:
在这里插入图片描述

然而,由于模型 M 本质上是连续的,从优化的角度来看,用离散的自然提示永远无法达到最优。相反,P-tuning 建议用可训练的连续嵌入 [h0, …, hi ] 替换提示标记,并将输入序列转换为:
在这里插入图片描述

因此可以进行差异优化。在骨干预训练模型的参数被冻结的严格约束下,在简单的 NLU 任务和知识探测中,prompt tuning已被证明具有与 100 亿参数模型微调相当的性能。

3.P-Tuning V2

Lack of Universality

Prompt tuning和 P-Tuning已在许多 NLP 应用中被证明非常有效。尽管如此,考虑到缺乏以下普遍性,P-Tuning还不是微调的全面替代方案:

1)缺乏跨尺度的普遍性

当模型扩展到超过 100 亿个参数时,prompt tuning可以与fine-tuning相媲美。 但是对于那些较小的模型(从100M到1B),prompt tuning和fine-tuning的性能存在明显差异,这大大限制了prompt tuning的适用性。

2)缺乏跨任务普遍性

虽然Lester等人及P-tuning 在 GLUE 和 SuperGLUE 等 NLU 基准上显示出优势,但它们在另一大系列的硬序列 NLU 任务(即序列标记)上的有效性尚未得到验证。首先,序列标记需要预测标签序列而不是单个标签;其次,序列标记通常预测没有实际意义的标签,这可能很难变成有效的verbalizers。在实验中,我们证明了 Lester 等人及P-tuning与fine-tuning相比, 在典型的序列标记任务上表现不佳。

考虑到这些挑战,我们提出了P-tuning V2,将prefix-tuning调整为跨尺度和 NLU 任务的通用解决方案。
知识图谱:【知识图谱问答KBQA(五)】——P-tuning V2_第1张图片

Deep Prompt Tuning

Prefix-tuning最初是为自然语言生成 (NLG) 任务提出的,但我们发现它对 NLU 也非常有效。 我们提出了一个适应 NLU 的Prefix-tuning版本。

在 (Lester et al., 2021) 和 P-tuning 中,仅将连续提示插入到transformer第一层的输入嵌入序列中。在后面的transformer层中,插入连续提示的位置的嵌入是由先前的transformer层计算的,这可能会导致两个可能的优化挑战:
要调整的参数数量有限。 目前大多数语言模型只能支持 512 的最大序列长度(由于注意力的二次计算复杂度的代价)。 如果我们额外减去上下文的长度(例如,要分类的句子),我们可以用有限的长度来填充连续提示。
使用非常深的transformers进行tuning时稳定性有限。 随着transformer越来越深,由于许多中间层的计算(具有非线性激活函数),来自第一个transformer层的提示的影响可能会出乎意料,这使得我们的优化不是很顺利。

鉴于这些挑战,P-Tuning V2利用prefix-tuning中的deep prompt tuning作为调整P-tuning和Lester的重大改进。不同层中的提示作为前缀标记添加到输入序列中,并且在层间相互独立(而不是由先前的transformer层计算)。
一方面,通过这种方式,P-tuning v2 具有更多的可调任务特定参数(从 0.01% 到 0.1%-3%)以允许更多的每个任务容量,但它仍然比完整的预训练语言模型小得多;另一方面,添加到更深层的提示(例如,图 2 中的 LayerN 提示)可以对具有较少中间transformer层的输出预测产生更直接和显着的影响。

Optimization and Implementation

还有一些有用的优化和实现细节:
Reparameterization 以前的方法利用重新参数化功能来提高训练速度、鲁棒性和性能(例如,用于前缀调整的 MLP 和用于 P 调整的 LSTM)。然而,对于 NLU 任务,我们发现这种技术的好处取决于任务和数据集。对于某些数据集(例如 RTE 和 CoNLL04),MLP 重新参数化带来了相对于嵌入的一致改进; 对于其他人,重新参数化可能没有效果(例如,BoolQ),有时甚至更糟(例如,CoNLL12)。
Prompt length 提示长度在prompt tuning方法的超参数搜索中起着核心作用。在我们的实验中,我们发现不同的理解任务通常在不同的提示长度下达到最佳性能,这与prefixtuning 中的发现一致,其中不同的文本生成任务可能具有不同的最佳提示长度。
Multi-task learning 多任务学习对于我们的方法是可选的,但可能会很有帮助。一方面,连续提示的随机初始化给优化带来了困难,可以通过更多的训练数据或与任务相关的无监督预训练来缓解;另一方面,连续提示是跨任务和数据集的任务特定知识的完美载体。我们的实验表明,在一些硬序列任务中,多任务学习可以成为 P-tuning v2 的有用补充,表示为 MPT-2。
[CLS] and token classification, rather than verbalizers Verbalizer 一直是prompt tuning的核心组件,它将一个one-hot类标签变成有意义的词,以利用预训练的语言模型头。尽管它在few-shot设置中具有潜在的必要性,但在全数据监督设置中并不是必须的,它阻碍了在我们需要没有实际意义的标签和句子嵌入的场景中应用prompt tuning。因此,P-tuning v2 返回到具有随机初始化线性头的传统 [CLS] 标签分类(参见图 2)范式。

4.Experiments

知识图谱:【知识图谱问答KBQA(五)】——P-tuning V2_第2张图片

知识图谱:【知识图谱问答KBQA(五)】——P-tuning V2_第3张图片

思维导图

知识图谱:【知识图谱问答KBQA(五)】——P-tuning V2_第4张图片

你可能感兴趣的:(自然语言处理,前沿技术paper,基础理论,知识图谱,人工智能,自然语言处理)