[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval

Motivation

在工业应用的多任务场景中,基于fine-tuning (FT) 的方法在部署成本方面是不友好的。每次检索都必须重新部署一个backbone模型,因为每个任务中的backbone模型的权重是微调的,因此略有不同。Deep Prompt Tuning (DPT) 享有参数高效的特点,其中产生的prompt是轻量级的,可以很容易地传递给在线PLM服务,从而克服了FT的上述挑战。本文探究DPT是否能达到与SOTA FT方法可比的性能。因为在性能相当的情况下,DPT在部署上比FT更友好。

Methodology

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第1张图片

DPT in Dense Retrieval

如图一左侧所示,为了给dual-encoder预设多层prompts,我们为PLM的每一层初始化一个大小为 l × d l×d l×d 的可训练的前缀矩阵 M M M,其中 l l l是prompt的长度, d d d是PLM的隐藏层大小。由于prompt位于PLM的深层,它有充分的能力引导PLM向预期的方向发展,并为question和passage输出有意义的稠密向量。设 E q ′ , E p ′ E^{\prime}_q, E^{\prime}_p Eq,Ep 分别是 prompted question encoder 和prompted passage encoder,question和passage之间的相似度分数计算如下:
s ′ ( q , p ) = E q ′ ( q ) ⋅ E p ′ ( p ) s^{\prime}(q, p) = E^{\prime}_q(q) \cdot E^{\prime}_p(p) s(q,p)=Eq(q)Ep(p)
Training

训练目标是学习稠密向量,使相关的question和passage对之间的相似度高于不相关对的。给定一对问题 q q q和相关段落 p i p_i pi,以及n个不相关段落,损失函数为相关段落的negative log-likelihood:
L ( q i , p i + , { p i , j − } j = 1 n ) = − l o g e s ′ ( q i , p i + ) e s ′ ( q i , p i + ) + ∑ j = 1 n e s ′ ( q i , p i , j − ) L(q_i,p_i^+,\{p_{i,j}^-\}_{j=1}^n) = -log\frac{e^{s^{\prime}(q_i, p_i^+)}}{e^{s^{\prime}(q_i, p_i^+)}+\sum_{j=1}^ne^{s^{\prime}(q_i, p_{i,j}^-)}} L(qi,pi+,{pi,j}j=1n)=loges(qi,pi+)+j=1nes(qi,pi,j)es(qi,pi+)
在训练期间,我们冻结backbone PLM的参数,只更新prompts,其中大约0.1%-0.4%的PLM参数得到训练。

Inference

如图1右边部分所示,由于backbone PLM是冻结的,所以可以提前部署在线服务,然后将训练好的prompt作为预先计算好的键值与输入一起传递,得到稠密向量。这是本文节省部署的努力和成本,提高计算资源的效用的核心部分。

虽然DPT带来了很多优势,但它并没有加快推理速度,因为前向计算略有增加(增加了前缀)。

Retrieval-oriented Intermediate Pretraining (RIP) for DPT

RIP的目标是通过对比学习预训练prompts或PLMs。任务如下: C C C 为包含 N N N个passages的语料库,对于passage p i p_i pi, 我们将它分为 l l l 个句子: s i 1 , . . . , s i l s_i^1,...,s_i^l si1,...,sil。对于一个句子 s i j s_i^j sij, 预训练的目标是从其他passage s k l ( k ≠ i ) s_k^l (k\neq i) skl(k=i) 的句子中区分出它的上下文 s i j ′ s_i^{j^{\prime}} sij。形式上,我们从每个passage中随机选择一对句子作为上下文句子,形成一批训练数据 B = { s i 1 , s i 2 } i = 1 m B=\{s_i^1, s_i^2\}_{i=1}^m B={si1,si2}i=1m,其中m是batch size。然后,我们将 s i j s_i^j sij在该批数据上的对比损失定义为:
L c ( s i j ) = − l o g e s ( s i 1 , s i 2 ) ∑ k = 1 m ∑ l = 1 2 e s ( s i j , s k l ) , i j ≠ k l L_c(s_i^j) = -log \frac{e^{s(s_i^1,s_i^2)}}{\sum_{k=1}^m\sum_{l=1}^2e^{s(s_i^j,s_k^l)}},ij\neq kl Lc(sij)=logk=1ml=12es(sij,skl)es(si1,si2),ij=kl
在对比学习任务下,存在两种DPT的预训练方式,它们取决于预训练的对象:

Pre-train deep prompts

用PLM来预训练prompts。之后,我们使用预先训练好的prompts和PLM来初始化一个基于DPT的检索器。然而,第4.4节中的实验表明,它受到灾难性遗忘的影响,与随机初始化的prompt相比,没有表现出优越的性能。

Pre-train the PLM

另一种是预训练一个PLM,然后我们使用随机初始化的prompts和预训练的PLM来初始化基于DPT的检索器。我们打算让任何PLM都能轻松地进行DPT的预训练,这样用户就可以采用他们自己的PLM。因此,我们不修改任何模型结构。在表8中,它产生了比coCondenser (对比预训练的SOTA,但是进行了模型结构的修改) 更好的性能。因此,我们使用PLM的预训练作为RIP的策略。

对于所有PLM,我们还保留其原有的自监督任务,如MLM任务,表示为 L s L_s Ls。因此,预训练的最终损失为:
L = 1 2 m ∑ i = 1 m ∑ j = 1 2 L s ( s i j ) + L c ( s i j ) L = \frac{1}{2m}\sum_{i=1}^m\sum_{j=1}^2L_s(s_i^j)+L_c(s_i^j) L=2m1i=1mj=12Ls(sij)+Lc(sij)
经过预训练后,产生的模型可以作为在线服务部署,并作为DPT训练的backbone模型。

Unified Negative Mining (UNM)

我们还为DPT开发了统一的负例挖掘,即 “多检索器和混合采样”。"多个检索器 "是指从尽可能多的检索器中选取负例。我们使用BM25检索器作为初始检索器,并使用BM25的负例训练一个基于DPT的检索器。然后,我们把从BM25检索器和第一个基于DPT的检索器中检索到的负例作为未去噪的难负例。"混合抽样 "是指从上述多个检索器检索出的未去噪的难负例中选择去噪的难负例。我们借用RocketQA发布的re-ranker,并选择那些具有高置信度的负例。为了训练最终的基于DPT的检索器,我们将去噪的难负例、未去噪的难负例和来自batch内或交叉batch训练的简单负例混合起来。

Experiments

Datasets

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第2张图片

Results

Main results

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第3张图片

Comparing FT with and without RIP and UNM Strategies

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第4张图片

Analysis on DPT

Sensitivity on prompt length

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第5张图片

从表4中,我们观察到prompt长度为8的性能已经在MS-MARCO上实现了强大的MRR@10,达到38.6。当我们把长度增加到128时,它使MRR@10达到了39.1的最强表现。更长的prompt意味着更多的可训练参数,这获得了更多引导PLM的力量。然而,我们也想指出,DPT检索器表现出对prompt长度不敏感,因为在不同的长度下,其性能总体上是可比的。因此,我们在主要实验中选择32作为默认的prompt长度和其他超参数,以加速对MS-MARCO的消融研究。

Impact of reparameterization

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第6张图片

使用MLP对prompt进行重参数化导致MS-MARCO的MRR@10的性能下降。由于MLP打破了层间prompt的独立性,我们猜测这给密集检索带来了优化的困难。

Analysis on RIP

Whether to pre-train deep prompts or not?

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第7张图片

我们试图研究预训练的prompt是否能提高基于DPT的检索器的性能。我们使用预训练的和随机初始化的prompt来初始化基于DPT的检索器。如表6所示,与随机初始化的prompt相比,预训练的prompt并没有提高性能。它揭示了深层prompt可能很容易遭受灾难性的遗忘。

RIP on text spans or sentences

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第8张图片

使用句子的预训练比使用文本span的预训练效果更好。这可能是由于基于文本跨度的RIP没有考虑自然句子的(开始和结束)边界,因此破坏了其语义的完整性。

RIP’s effectiveness and comparison with coCondenser

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第9张图片

zero-shot和full-shot实验都表明,RIP的效果比精心修改的模型结构更好。因此,我们猜测PLM的多层transformer在适当的对比学习任务下,对密集检索来说已经有足够的表现力。然而,额外的模型结构可能会带来优化困难,特别是当增加的参数数量很大时。

Analysis on UNM

[COLING 2022] DPTDR: Deep Prompt Tuning for Dense Passage Retrieval_第10张图片

使用BM25负例的DPT实现了36.8的MRR@10的基线。当结合来自多个检索器的未去噪负例时,我们看到性能在MRR@10上取得了明显的改善,提高了1.5分。当结合由re-ranker选择的去噪难负例时,性能进一步得到提升,其中MRR@10增加了0.4点。结果表明,多检索器和混合采样都对稠密检索有积极的贡献。

你可能感兴趣的:(Information,Retrieval,双塔模型,文本匹配,nlp,人工智能,深度学习)