[论文笔记]RA-DIT: RETRIEVAL-AUGMENTED DUAL INSTRUCTION TUNING

embedded/2024/10/21 19:00:06/

引言

今天带来一篇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+初始化框架。

image-20241018080532438

图 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 cC映射到一个嵌入 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 CC,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(yx,C)=cCpLM(ycx)pR(cx)(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(cx)=cCexps(x,c)exps(x,c) 是在top-k相关片段中重新归一化的检索分数。

使用一对起始(Background)和结束(\n\n)标记来划定增强提示中的检索段。

2.2 微调数据集

image-20241018082209181

语言模型微调数据集( 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 CiC。对于每个检索到的片段 c i j ∈ C i c_{ij} \in \mathcal C_i cijCi,通过将其作为背景字段添加到指令前面,创建一个单独的微调示例,从而为每个原始示例生成 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\} {(cijxi,yij=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)=ijlogpLM(yicijxi)(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(cx,y)=cCexp(pLM(ycx)/τ)exp(pLM(ycx)/τ)cCexp(pLM(ycx)/τ)exp(pLM(ycx)/τ)(4)
其中 τ \tau τ是一个温度参数; C ′ ∈ C \mathcal C^\prime \in \mathcal C CC表示 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(cx)∣∣pLSR(cx,y)))(5)
在实践中,只更新检索器的查询编码器,因为微调两个编码器会损害性能。

结论

本文提出了一种轻量级的检索增强双指令微调框架 RA-DIT,它可以有效地为任何预训练的 LLM 添加检索能力。RA-DIT 通过检索增强指令微调更新 LLM,以更好地利用检索到的知识并忽略无关或干扰信息。它还通过来自 LLM 的监督对检索器进行微调,以检索能够更好地帮助 LLM 生成正确输出的文本。

总结

⭐ 作者提出了一种检索增强微调的方法,为语言模型和检索器进行微调。引导LLM最佳地利用检索到的信息并忽略干扰内容。


http://www.ppmy.cn/embedded/129336.html

相关文章

CTFHUB技能树之SQL——时间盲注

开启靶场,打开链接: 说明这关对所有信息都做了统一输出,换成延时注入试试 输入: 1 and sleep(15) (这里不知道为什么加上--倒是会影响sleep()函数的触发,从而没有延时感) 可以观察到有明显的延…

中级注册安全工程师《安全生产法律法规》真题及详解

2022年中级注册安全工程师《安全生产法律法规》真题及详解 一、单项选择题 (共70题,每题1分。每题的备选项中,只有1个最符合题意) 1. 法律的制定主体不同,其法律地位和法律效力也不同。关于法律地位和效力的说法&…

透过 Diffusion Transformer 探索生成式模型的技术演进

SiT: Exploring Flow and Diffusion-based Generative Models with Scalable Interpolant Transformers 一、前言 扩散模型为代表的生成式模型,以其深刻的还原论的哲学原理作为内在基础,辅以机器学习领域各类优秀的模型设计,在各个学术和应…

Flink系统架构和应用部署方式

目录 概述 Flink集群架构组件 Client JobManager TaskManagers 算子、Task和Subtask三者关系 概念 算子和Task的关系 Task和SubTask的关系 算子和SubTask的关系 样例 Task Slots和资源的关系 Flink应用程序部署 Flink Session 集群 Flink Job 集群 Flink Appli…

【已解决】Eclipse下载安装和环境配置 超详细教程 小白

首先确保安装了JDK 如果没安装可参考该博客安装:JDK安装、环境配置 官网下载 Eclipse Downloads | The Eclipse Foundation 1.点击download package下载 2.找到Eclipse IDE for Enterprise Java and Web Developers,根据自己的系统选择相应链接下载。…

Django发送短信

settings.py中设置 ##################################容联云短信平台账号信息############################## #容联云查看信息 RONGLIAN_ACC_ID ...... RONGLIAN_ACC_TOKEN ...... RONGLIAN_APP_ID ...... ############################################################…

QSpliter实例操作

话不多直接上代码 int main(int argc, char *argv[]) {QApplication a(argc, argv); // MainWindow w; // w.show();QFont font("PZ", 12);a.setFont(font);//左分割QSplitter* main_spliter new QSplitter(Qt::Horizontal, 0);QTextEdit* left_edit new QT…

Docker 构建 Miniconda3 Python 运行环境实战指南

Docker 构建 Miniconda3 Python 运行环境实战指南 文章目录 Docker 构建 Miniconda3 Python 运行环境实战指南一 准备 environment.yml二 获取项目 pip 信息三 Dockerfile 编写四 构建多平台镜像1 准备组件2 构建镜像3 导出镜像4 导入镜像 五 注意事项 本文详细介绍了如何通过 …