[论文笔记]RA-DIT: RETRIEVAL-AUGMENTED DUAL INSTRUCTION TUNING
引言
今天带来一篇RAG微调的论文笔记——RA-DIT: RETRIEVAL-AUGMENTED DUAL INSTRUCTION TUNING。
为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。
我们引入了检索增强双指令微调(Retrieval-Agumented Dual Instruction Tuning,RA-DIT):(1)更新预训练的LM以更好地利用检索到的信息; (2) 更新检索器以返回LM所偏好更相关的结果。通过在需要知识利用和上下文感知的任务上进行微调。
1. 总体介绍
现有的RALM(Retrival-Augumented Language Modeling)架构侧重于两个挑战: (i) 增强LLM结合检索知识的能力 (ii) 改进检索组件以返回更相关的内容。
在这项工作中,我们展示了轻量级指令微调本身就能显著提升RALM的性能。提出了RA-DIT,通过在一组任务上进行微调来为任何LLM装备检索能力的方法,这些任务用于训练语言模型预测中的知识利用和上下文感知。使用预训练的LLAMA和最先进的基于双编码器的密集检索器DRAGON+初始化框架。
图 1:RA-DIT 方法分别微调 LLM 和检索器。对于给定示例,LM-ft 组件更新 LLM 以最大化给定检索增强指令的正确答案的可能性;R-ft 组件更新检索器以最小化检索器得分分布与 LLM 偏好之间的 KL 散度。
分两个步骤进行指令微调。对于语言模型微调(LM-ft),采用标签损失目标,并在每个微调提示中添加一个检索到的背景字段。该字段至于指令之前。通过在微调过程中加入背景文本,引导LLM最佳地利用检索到的信息并忽略干扰内容。
对于检索微调(R-ft),使用一个基于监督任务和无监督文本完成的组合计算广义LM监督搜索训练目标来更新查询编码器。使检索器能生成与LLM偏好一致的、更具上下文相关的内容。
2. 方法
2.1 架构
语言模型 检索增强型预训练自回归语言模型。特别是,使用LLAMA;
检索器 采用基于双编码器的检索器架构。给定一个语料库
C
\mathcal C
C和一个查询
q
q
q,文档编码器将每个文本片段
c
∈
C
c \in \mathcal C
c∈C映射到一个嵌入
E
d
(
c
)
E_d(c)
Ed(c),而查询编码器将
q
q
q映射到一个嵌入
E
q
(
q
)
E_q(q)
Eq(q)。基于查询-文档嵌入相似度检索
q
q
q中排名前k的相关文本片段,相似度通过点积计算:
s
(
q
,
c
)
=
E
q
(
q
)
⋅
E
d
(
c
)
(1)
s(q,c) = E_q(q) \cdot E_d(c) \tag 1
s(q,c)=Eq(q)⋅Ed(c)(1)
使用DRAGON +初始化检索器。
并行上下文检索增强 对于给定的语言模型提示
x
x
x,检索出排名靠前的k个相关文本片段
C
′
⊂
C
,
∣
C
′
∣
=
k
\mathcal C^\prime \subset \mathcal C, |\mathcal C^\prime| = k
C′⊂C,∣C′∣=k。为了保持上下文窗口大小限制,每个检索到的片段都预先添加到提示中,并且对来自多个增强提示的语言模型预测执行并行计算。最终输出概率是每个增强提示的概率混合,并根据片段相关性得分进行加权。
p
L
M
(
y
∣
x
,
C
′
)
=
∑
c
∈
C
′
p
L
M
(
y
∣
c
∘
x
)
⋅
p
R
(
c
∣
x
)
(2)
p_{LM} (y|x,\mathcal C^\prime) = \sum_{c \in \mathcal C^\prime} p_{LM}(y|c \,\circ\, x) \cdot p_R(c|x) \tag 2
pLM(y∣x,C′)=c∈C′∑pLM(y∣c∘x)⋅pR(c∣x)(2)
其中
∘
\circ
∘表示序列拼接;
p
R
(
c
∣
x
)
=
exp
s
(
x
,
c
)
∑
c
′
∈
C
′
exp
s
(
x
,
c
′
)
p_R(c|x) = \frac{\exp s(x,c)}{\sum_{c^\prime \in \mathcal C^\prime} \exp s(x,c^\prime)}
pR(c∣x)=∑c′∈C′exps(x,c′)exps(x,c) 是在top-k相关片段中重新归一化的检索分数。
使用一对起始(
Background
)和结束(\n\n
)标记来划定增强提示中的检索段。
2.2 微调数据集
语言模型微调数据集( D L \mathcal D_L DL)包含20个数据集。每个数据集的示例使用手动编译的模板进行序列化。
2.3 检索增强语言模型微调
将每个微调序列分词一个指令段( x x x)和一个输出段( y y y)。对于每个示例 ( x i , y i ) ∈ D L (x_i,y_i) \in \mathcal D_L (xi,yi)∈DL,根据 x i x_i xi检索 top- k ~ \text{top-}\tilde k top-k~相关的文本片段 C i ⊂ C \mathcal C_i \subset \mathcal C Ci⊂C。对于每个检索到的片段 c i j ∈ C i c_{ij} \in \mathcal C_i cij∈Ci,通过将其作为背景字段添加到指令前面,创建一个单独的微调示例,从而为每个原始示例生成 k ~ \tilde k k~个独立的微调示例: { ( c i j ∘ x i , y i ∣ j = 1 , ⋯ , k ~ } \{(c_{ij} \circ x_i,y_i| j=1,\cdots,\tilde k\} {(cij∘xi,yi∣j=1,⋯,k~}。
使用下一词预测目标对语言模型进行微调,最小化每个实例输出段中词的损失:
L
(
D
L
)
=
−
∑
i
∑
j
log
p
L
M
(
y
i
∣
c
i
j
∘
x
i
)
(3)
\mathcal L(\mathcal D_L) = -\sum_i \sum_j \log p_{LM}(y_i|c_{ij}\circ x_i) \tag 3
L(DL)=−i∑j∑logpLM(yi∣cij∘xi)(3)
在微调过程中集成上下文检索增强带来了双重益处。首先,它使 LLM 能够更好地利用相关背景知识进行预测。其次,即使是最先进的检索器也可能出错并返回不准确的结果。通过训练 LLM 在给出错误检索片段时做出正确预测,我们使 LLM 能够忽略误导性的检索内容,并在这种情况下依赖其参数化知识。
2.4 检索器微调
采用了一种广义的LSR((LM-Supervised Retrieval)训练方法,利用语言模型本身为检索器微调提供检索。
对于检索微调数据集
D
R
\mathcal D_R
DR中的训练样本
(
x
,
y
)
(x,y)
(x,y),我们定义检索到的片段
c
c
c的LSR分数如下:
p
L
S
R
(
c
∣
x
,
y
)
=
exp
(
p
L
M
(
y
∣
c
∘
x
)
/
τ
)
∑
c
′
∈
C
exp
(
p
L
M
(
y
∣
c
′
∘
x
)
/
τ
)
≈
exp
(
p
L
M
(
y
∣
c
∘
x
)
/
τ
)
∑
c
′
∈
C
′
exp
(
p
L
M
(
y
∣
c
′
∘
x
)
/
τ
)
(4)
p_{LSR}(c|x,y) = \frac{\exp(p_{LM}(y|c\circ x)/\tau)}{\sum_{c^\prime \in \mathcal C} \exp(p_{LM}(y|c^\prime \circ x)/\tau)} \approx \frac{\exp(p_{LM}(y|c\circ x)/\tau)}{\sum_{c^\prime \in \mathcal C^\prime} \exp(p_{LM}(y|c^\prime \circ x)/\tau)} \tag 4
pLSR(c∣x,y)=∑c′∈Cexp(pLM(y∣c′∘x)/τ)exp(pLM(y∣c∘x)/τ)≈∑c′∈C′exp(pLM(y∣c′∘x)/τ)exp(pLM(y∣c∘x)/τ)(4)
其中
τ
\tau
τ是一个温度参数;
C
′
∈
C
\mathcal C^\prime \in \mathcal C
C′∈C表示
x
x
x的top-k检索片段。更高的LSR分数表明
c
c
c在提高语言模型预测正确答案的概率方面更有效。LSR训练的目标是让检索器为能够提高LLM生成正确答案的可能性更高的片段分配更高的分数。
为了实现这一点,我们最小化了
p
L
S
R
p_{LSR}
pLSR与公式2中定义的检索器分数
p
R
p_R
pR之间的KL散度:
L
(
D
R
)
=
E
(
x
,
y
)
∈
D
R
K
L
(
p
R
(
c
∣
x
)
∣
∣
p
L
S
R
(
c
∣
x
,
y
)
)
)
(5)
\mathcal L(\mathcal D_R) = \Bbb E_{(x,y) \in \mathcal D_R} KL(p_R(c|x) \,||\, p_{LSR}(c|x,y) )) \tag 5
L(DR)=E(x,y)∈DRKL(pR(c∣x)∣∣pLSR(c∣x,y)))(5)
在实践中,只更新检索器的查询编码器,因为微调两个编码器会损害性能。
结论
本文提出了一种轻量级的检索增强双指令微调框架 RA-DIT,它可以有效地为任何预训练的 LLM 添加检索能力。RA-DIT 通过检索增强指令微调更新 LLM,以更好地利用检索到的知识并忽略无关或干扰信息。它还通过来自 LLM 的监督对检索器进行微调,以检索能够更好地帮助 LLM 生成正确输出的文本。
总结
⭐ 作者提出了一种检索增强微调的方法,为语言模型和检索器进行微调。引导LLM最佳地利用检索到的信息并忽略干扰内容。