【RAG&多模态】mR^2AG:基于知识的多模态检索-反思增强生成方法浅尝

在基于知识的视觉问答(Knowledge-based VQA)任务中,输入通常是一对图像和问题 ( I , Q ) (I, Q) (I,Q),并且依赖于可访问的知识库。文章提出的 m R 2 A G mR^2AG mR2AG框架通过两个新颖的反思操作来解耦生成过程,从而提高答案的质量。 m R 2 A G mR^2AG mR2AG将生成过程分为三个步骤:执行检索反思(Retrieval-Reflection)以确定是否需要检索,执行相关性反思(Relevance-Reflection)以识别证据段落并生成答案,以及后处理多个候选答案。

方法

检索反思

用户查询可以根据输入 ( I , Q ) (I, Q) (I,Q) 分为依赖视觉 的和基于知识的。为了指导模型区分不同类型的查询,定义了两个特殊标记:[Retrieval] 和 [No Retrieval],用于执行检索反思。具体步骤如下:

  1. 模型基于输入 ( I , Q ) (I, Q) (I,Q) 生成检索反思预测 y r e t y^{ret} yret:
    y r e t = M L L M ( I , Q ) y^{ret} = MLLM(I, Q) yret=MLLM(I,Q)

  2. 根据预测结果执行相关操作:

    • 如果 $y^{ret} = $ [No Retrieval],模型确定问题可以通过视觉内容回答,不需要外部知识。模型在条件 $y^{ret} = $ [No Retrieval] 下,结合 ( I , Q ) (I, Q) (I,Q) 生成答案 y a n s y^{ans} yans:
      y a n s = M L L M ( I , Q , y r e t = [ N o R e t r i e v a l ] ) y^{ans} = MLLM(I, Q, y^{ret}=[No Retrieval]) yans=MLLM(I,Q,yret=[NoRetrieval])
    • 如果 $y^{ret} = $ [Retrieval],模型识别到需要外部知识来回答问题,并调用检索器协助进一步的生成过程
  3. 检索过程 :使用英文维基百科条目作为知识库,其中第 k k k 个条目包含候选图像 I ^ k \hat{I}{k} I^k、标题 T ^ k \hat{T}{k} T^k 和文章 P ^ k \hat{P}{k} P^k。 m R 2 A G mR^2AG mR2AG 结合跨模态和单模态检索来选择与查询图像 I I I 最相关的维基百科条目。使用 CLIP 对 I I I、 I ^ k \hat{I}{k} I^k 和 T ^ k \hat{T}{k} T^k 进行编码,并计算 sim ⁡ ( I , I ^ k ) \operatorname{sim}(I, \hat{I}{k}) sim(I,I^k) 和 sim ⁡ ( I , T ^ k ) \operatorname{sim}(I, \hat{T}{k}) sim(I,T^k) 的余弦相似度。第 k k k 个条目的整体检索分数 S k r e t S{k}^{ret} Skret 是两个余弦相似度的平均值
    S k r e t = ( sim ⁡ ( I , I ^ k ) + sim ⁡ ( I , T ^ k ) ) / 2 S_{k}^{ret} = \left(\operatorname{sim}(I, \hat{I}{k}) + \operatorname{sim}(I, \hat{T}{k})\right) / 2 Skret=(sim(I,I^k)+sim(I,T^k))/2

    假设结果 P ^ = { P ^ i } i = 1 N \hat{P} = \{\hat{P}{i}\}{i=1}^{N} P^={P^i}i=1N 对应于检索分数最高的 top-N 的文章。

相关性反思

将每个检索到的文章 P ^ i \hat{P}{i} P^i 分成多个段落。为了使模型能够确定每个分段段落 P ^ i j \hat{P}{ij} P^ij 是否包含与问题 Q Q Q 相关的证据,也引入两个相关性反思标记:[Relevant] 和 [Irrelevant]。具体步骤如下:

  1. 模型在条件 P ^ i j \hat{P}{ij} P^ij 和查询 ( I , Q ) (I, Q) (I,Q) 的组合下生成相关性反思预测 y i j r e l y{ij}^{rel} yijrel:
    y i j r e l = M L L M ( I , Q , P ^ i j ) y_{ij}^{rel} = MLLM(I, Q, \hat{P}_{ij}) yijrel=MLLM(I,Q,P^ij)

  2. 根据预测结果执行操作

    • 如果 $y_{ij}^{rel} = $ [Irrelevant],表明模型认为 P ^ i j \hat{P}_{ij} P^ij 与查询无关且缺乏足够的证据,提示模型终止生成过程,避免产生不可靠的答案。
    • 如果 $y_{ij}^{rel} = $ [Relevant],模型认为 P ^ i j \hat{P}{ij} P^ij 与查询相关,包含有助于生成答案的证据,因此继续基于 ( I , Q , P ^ i j , y i j r e l = [ Relevant ] ) (I, Q, \hat{P}{ij}, y_{ij}^{rel}=[\text{Relevant}]) (I,Q,P^ij,yijrel=[Relevant]) 生成答案 y i j ans y_{ij}^{\text{ans}} yijans:
      y i j ans = M L L M ( I , Q , P ^ i j , y i j rel = [ Relevant ] ) y_{ij}^{\text{ans}} = MLLM(I, Q, \hat{P}{ij}, y{ij}^{\text{rel}}=[\text{Relevant}]) yijans=MLLM(I,Q,P^ij,yijrel=[Relevant])

答案后处理

在一个文章中可能存在多个证据段落,导致生成多个候选答案。因此,后处理是必要的,以便得出一个最终的答案。

层级后处理:使用层级后处理来通过整合三个级别的分数对候选答案进行排序:

  • 条目级别 :检索分数在方程 (3) 中测量查询图像 I I I 和候选维基百科条目之间的相似性,作为第 i i i 个检索到的条目的检索反思分数 S i r e t S_{i}^{ret} Siret。
  • 段落级别 :生成 [Relevant] 相关性反思标记的概率量化模型判断 P ^ i j \hat{P}{ij} P^ij 为证据的信心,可以定义为相关性反思分数 S i j r e l S{ij}^{rel} Sijrel:
    S i j r e l = p θ ( y i j r e l = [ Relevant ] ∣ I , Q , P ^ i j ) S_{ij}^{rel} = p_{\theta}(y_{ij}^{rel}=[\text{Relevant}] \mid I, Q, \hat{P}_{ij}) Sijrel=pθ(yijrel=[Relevant]∣I,Q,P^ij)
    其中 θ \theta θ 表示 MLLM 的参数。
  • 答案级别 :计算生成答案序列中每个标记的概率,并使用几何平均数来规范化序列长度变化的影响,得到答案信心分数 S i j a n s S_{ij}^{ans} Sijans:
    S i j a n s = p θ ( y i j a n s ) n S_{ij}^{ans} = \sqrt[n]{p_{\theta}(y_{ij}^{ans})} Sijans=npθ(yijans)
    其中 n n n 表示序列长度。这个分数反映了模型基于检索内容和反思标记生成答案的信心。

最后,三个级别的分数综合考虑了答案生成过程中的每一个步骤,分别在条目、段落和答案级别评估候选答案的可靠性。通过计算这三个分数的乘积来整合它们的效果,作为排序候选答案的最终标准。模型输出基于此标准得分最高的答案。

实验

参考文献

mR2AG: Multimodal Retrieval-Reflection-Augmented Generation for Knowledge-Based VQA,https://arxiv.org/pdf/2411.15041

相关推荐
机器之心23 分钟前
质量超越o1,成本仅4%,UCSD张怡颖教授团队开源生成式AI工作流自动优化器
人工智能·后端
星辰@Sea32 分钟前
使用OpenCV和卡尔曼滤波器进行实时活体检测
人工智能·opencv·计算机视觉
Tronlongtech35 分钟前
基于OpenCV的拆分和合并图像通道实验案例分享_基于RK3568教学实验箱
人工智能·opencv·计算机视觉
算力魔方AIPC41 分钟前
PyTorch 2.5.1: Bugs修复版发布
人工智能·pytorch·python
Joyner201844 分钟前
pytorch中有哪些归一化的方式?
人工智能·pytorch·python
Niuguangshuo1 小时前
PyTorch 实现动态输入
人工智能·pytorch·python
总有一天你的谜底会解开1 小时前
pytorch加载预训练权重失败
人工智能·pytorch·python
每天八杯水D1 小时前
python使用pdfplumber工具包加载pdf格式数据
人工智能·python·机器学习·pdfplumber·加载pdf数据
promising_xxx1 小时前
大语言模型微调与 XTuner 微调实战
人工智能·语言模型·自然语言处理
大道随心1 小时前
语言模型测试系列【11】
人工智能·语言模型·自然语言处理