《GPT Understands, Too》论文主要部分翻译
3.1 结构
Prompt \(\mathbf{p}\) 的功能是将 context \(\mathbf{x}\) ,target \(\mathbf{y}\) 和自身组成一个模板 \(T\) 。例如,在预测一个国家的首都(LAMA-TREx P36)任务中,模板可以为 "The capital of Britain is [MASK]." ,其中 "The capital of ... is ... ." 是 prompt, "Britain" 是 context , "[MASK]" 是 target 。 Prompt 非常灵活,我们甚至可以将其插入 context 或 target 中。
设 \(\mathcal{V}\) 是指语言模型 \(\mathcal{M}\) 的词汇表,而 \([P_i]\) 是指模板 \(T\) 中的第 \(i\) 个 prompt token。对于相似度,给定模板 \(T=\{[P_{0:i}], \mathbf{x}, [P_{i+1:m}], \mathbf{y}\}\) ,与满足 \([P_i]\in\mathcal{V}\) 并将T映射成:
P-tuning将 \([P_i]\) 视为伪标记(pseudo tokens),并将模板映射到
其中 \(h_i(0≤i<m)\) 是可训练的嵌入张量。这使我们能够找到一个更好的连续提示,超出了 \(\mathcal{M}\) 的原始词汇表 \(\mathcal{V}\) 所能表达的范围。最后,利用下游损失函数 \(\mathcal{L}\) ,我们可以通过下式来差分优化连续 prompt \(h_i(0≤i<m)\) :
3.2 最优化
虽然训练连续提示的想法很简单,但在实践中,它面临两个优化挑战:
- 离散性:\(\mathcal{M}\) 原始单词嵌入 \(\mathbf{e}\) 在预训练后已经变得高度离散。如果用随机分布初始化 \(h\),然后用随机梯度下降(SGD)进行优化,这已被证明只改变小邻域中的参数,优化器将很容易陷入局部极小值。
- 关联性:另一个问题是,直觉上,我们认为提示嵌入的值应该是相互依赖的,而不是独立的。我们需要一些机制将提示嵌入相互关联起来。
鉴于这些挑战,在 P-tuning 中,我们建议使用 prompt encoder 将 \(h_i\) 建模为序列,该编码器由一个非常精简的神经网络组成,可以解决离散性和关联问题。在实践中,我们选择双向长短期记忆网络(LSTM),用ReLU激活的两层多层感知器(MLP)来激发离散性。从形式上讲,语言模型 \(\mathcal{M}\) 的真实输入嵌入 \(h'_i\) 来自
尽管LSTM头的使用确实为连续 prompt 的训练增加了一些参数,但LSTM头比预训练的模型小了几个数量级。此外,在推理时,我们只需要输出嵌入 \(h\) ,就可以丢弃LSTM头。
此外,我们还发现添加少量锚标记(anchor token)有助于SuperGLUE基准中的某些NLU任务。例如,对于RTE任务,在 prompt 模板 "[PRE][prompt tokens][HYP]?[prompt tokens][MASK]" 中特别添加的token "?" 作为 anchor token ,对效果影响很大。通常,这些 anchor token 用以描述每个部分,在本例中 "?" 表明 "[HYP]" 是一个询问部分。

浙公网安备 33010602011771号