本篇博客参考论文:
《SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION》
在自然语言处理(NLP)领域,大型语言模型(LLMs)已成为处理复杂语言任务的强大工具。然而,这些模型在生成响应时经常遇到事实错误的问题。通常人们会使用RAG来解决大模型的幻觉问题,检索增强生成(RAG)是一种通过检索相关知识来增强 LLMs 输入的方法,可以减少这类问题。然而,无论检索是否必要或检索到的段落是否相关,RAG 方法都会不加选择地检索和整合固定数量的检索段落,这可能会降低 LLMs 的多功能性或导致生成无用的响应。
一篇名为《SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION》的论文提出了一个创新解决方案——SELF-RAG框架,旨在通过自我反思和检索增强来提高语言模型的生成质量和事实准确性。本文将深入探讨SELF-RAG框架的工作原理及其优势。
什么是SELF-RAG?
SELF-RAG(Self-Reflective Retrieval-Augmented Generation)是一种新型的框架,它通过结合检索(Retrieval)和自我反思(Self-Reflection)来提升语言模型的性能。这个框架的核心思想是让模型在生成文本时,能够根据需要检索相关信息,并对自己的生成内容进行反思和评估,从而提高输出的准确性和可靠性。
SELF-RAG如何工作?
SELF-RAG框架包括以下几个关键步骤:
按需检索(On-demand Retrieval):
SELF-RAG训练一个语言模型(LM),使其能够根据任务输入自适应地决定是否需要检索额外的信息。
如果模型确定需要检索,它会输出一个检索标记(retrieval token),触发检索模型(retriever model)按需检索相关文档。
并行处理检索到的文档:
SELF-RAG能够同时处理多个检索到的文档,并评估它们的相关性。
模型会评估每个检索到的段落与任务输入的相关性,并基于这些段落生成任务输出。
自我反思(Self-Reflection):
SELF-RAG使用特殊的标记,称为反思标记(reflection tokens),来生成和反思检索到的段落及其自身的生成内容。
这些反思标记分为检索标记和批评标记,分别指示检索的需求和生成质量。
生成反思标记:
模型在推理阶段生成反思标记,以评估检索到的段落的相关性、支持度和整体输出的有用性。
这些标记包括:检索需求(Retrieve)、相关信息性(ISREL)、支持度(ISSUP)和整体有用性(ISUSE)。
控制生成(Controllable Generation):
在推理阶段,SELF-RAG可以通过生成反思标记来控制其行为,使其能够根据不同任务的需求调整其行为。
例如,对于需要事实准确性的任务,模型可能会更频繁地检索文档以确保输出与可用证据紧密对齐。
训练和推理:
在训练阶段,SELF-RAG通过将反思标记作为下一个标记预测的一部分,从扩展的模型词汇表中统一生成。
在推理阶段,SELF-RAG使用这些反思标记来执行软约束或硬控制,以满足不同的任务需求。
自定义解码算法:
SELF-RAG允许使用自定义的解码算法来满足硬性或软性约束,这些约束由反思标记预测定义。
例如,可以通过段级束搜索(segment-level beam search)和加权线性总和的反思标记概率作为段分数来实现。
SELF-RAG的优势
与传统的语言模型相比,SELF-RAG框架有以下几个显著优势:
提高事实准确性:通过检索和自我反思,SELF-RAG能够减少生成响应中的事实错误,提供更准确的信息。
增强多功能性:SELF-RAG不会损害语言模型的多功能性,它能够根据任务需求灵活地调整检索和生成策略。
可控性:SELF-RAG在推理阶段的可控性意味着我们可以根据不同的应用场景定制模型的行为。例如,在需要创造性写作的任务中减少检索,或在需要严格事实验证的任务中增加检索。
自我评估:通过反思标记,SELF-RAG能够自我评估其输出的质量,这不仅有助于提高输出的准确性,也使得模型的输出更容易被人类理解和验证。
论文地址:https://arxiv.org/pdf/2310.11511.pdf
Github地址:https://github.com/AkariAsai/self-rag