赞
踩
本文提出REPLUG
,一个将语言模型视为黑盒检索增强的语言模型架构。在REPLUG
中,仅将检索得到的文档拼接到原有输入前面即可,不需要像以前一样更新语言模型参数。该架构中可以通过更新检索器进一步提升性能。
FAISS
来快速找到top-k文档softmax
的结果REPLUG LSR
可以看做 REPLUG
的一个增强版本。在REPLUG
中,我们使用的检索器可能不够适配语言模型,因此这里利用语言模型本身反馈的监督信号,来调整REPLUG
中的检索器。
核心思想:our approach can be seen as adjusting the probabilities of the retrieved documents to match the probabilities of the output sequence perplexities of the language model
ground truth
序列的概率更大,那么我们认为模型的效果越好这部分介绍如何计算检索文档概率分布与输出序列概率分布
给定输入 x x x,我们检索回来概率最大的top-k个文档,为 D ′ ⊂ D D^{'} \subset D D′⊂D,文档 d d d的检索概率(likelihood)为
P R ( d ∣ x ) = e s ( d , x ) / γ ∑ d ∈ D ′ e s ( d , x ) / γ P_R(d \mid x)=\frac{e^{s(d, x) / \gamma}}{\sum_{d \in \mathcal{D}^{\prime}} e^{s(d, x) / \gamma}} PR(d∣x)=∑d∈D′es(d,x)/γes(d,x)/γ
γ
\gamma
γ是用来控制 softmax
温度的超参
按理应该在整个 D D D 上进行,但是那样计算量太大,因此在 D ′ D^{'} D′ 上近似计算
将语言模型用来评估每个文档对语言模型困惑度的提升程度,首先计算
P
L
M
(
y
∣
d
,
x
)
P_{LM}(y|d,x)
PLM(y∣d,x),这是给定
x
x
x 和文档
d
d
d 时,ground truth
y
y
y 的生成概率。如果这个概率越大,则说明当前文档对困惑度的提升程度越大。然后计算分布:
Q ( d ∣ x , y ) = e P L M ( y ∣ d , x ) / β ∑ d ∈ D ′ e P L M ( y ∣ d , x ) / β Q(d \mid x, y)=\frac{e^{P_{L M}(y \mid d, x) / \beta}}{\sum_{d \in \mathcal{D}^{\prime}} e^{P_{L M}(y \mid d, x) / \beta}} Q(d∣x,y)=∑d∈D′ePLM(y∣d,x)/βePLM(y∣d,x)/β
有了两个分布之后,用loss function
对二者进行匹配
在给定 x x x 和 y y y 时,计算检索概率分布和语言模型概率分布,我们利用KL divergence来匹配两个分布,并用来优化dense retriever
L = 1 ∣ B ∣ ∑ x ∈ B K L ( P R ( d ∣ x ) ∥ Q L M ( d ∣ x , y ) ) \mathcal{L}=\frac{1}{|\mathcal{B}|} \sum_{x \in \mathcal{B}} K L\left(P_R(d \mid x) \| Q_{\mathrm{LM}}(d \mid x, y)\right) L=∣B∣1∑x∈BKL(PR(d∣x)∥QLM(d∣x,y))
因为检索器参数在训练过程中更新,参数更新后document embedding会变化,因此每隔 T T T步就重新算一次document embedding,并重复上述过程
所有训练数据都来自 Pile training data
(包含不同领域文本的language model benchmark)
800K 个 256 token长的序列作为训练queries
外部语料库 D D D, 采样36M 128 token长的文档
Pile training data
(367M documents of 128 tokens) and use them as the retrieval corpus for all modelsAtlas
trains both the retriever and the language model, which we consider a white-box retrieval LM setting.dataset: Natural Question
and TriviaQA
few-shot
(use a few training data) and full data
(use all training data)RETRO
, R2-D2
, Atlas
are finetuned on the training data, either in a few-shot setting or with full training data
REPLUG
和 REPLUG LSR
的性能单点提升,不过 a small number of documents(e.g., 10)就可以做的不错REPLUG
带来的性能增益与模型大小保持一致, 且能够应用到不同模型上REPLUG
is more helpful when texts contain rare entitiesCopyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。