我们先来思考一个问题:大模型在文本生成对话方面表现确实不错,可一旦遇到需要密集专业知识的场景,它就有点力不从心了。这就像一位从来没来听课的学霸同学——你总不能指望他什么都背下来吧?知识注入型预训练的成本太高,所以退而求其次,一般依赖他的室友(也就是检索器)给他准备开卷考试的资料。
问题是,这位室友同学有个坏习惯:他特别喜欢问ChatGPT,然后把模型的答案原封不动写到学霸的小抄里。有一天,他帮学霸准备了一道经典的面试题答案:
BERT为什么不适合生成任务?
BERT(Bidirectional Encoder Representations from Transformers)是一种预训练语言表示模型,在自然语言处理领域取得了巨大成功,特别是在理解语言的任务上,如文本分类、问答、命名实体识别等。然而,BERT在生成任务上的表现并不理想,原因主要包括以下几点:
1. 单向解码限制:BERT基于Transformer架构,编码器部分是双向的,可以同时考虑前后文信息。但解码器部分通常是单向的,只能从左到右生成文本,这限制了它在生成任务中的灵活性。
2. 预训练目标:BERT的预训练目标是Masked Language Model(MLM)和Next Sentence Prediction(NSP),这些任务并不直接针对生成任务,因此它在生成连贯、流畅文本方面可能不如专门为此设计的模型。
3. 生成效率:BERT生成文本需要逐词进行,过程较慢,对长文本生成效率较低。
4. 生成质量:由于预训练时没有特别针对生成任务优化,它在生成连贯性和多样性方面可能不如GPT这类专门设计的模型。
5. 上下文限制:BERT通常只能处理固定长度的上下文信息,对于需要更长上下文的任务,可能无法生成紧密相关的文本。
6. 优化困难:BERT的优化需要大量计算资源,而在生成任务中可能需要对模型进一步微调,资源有限时可行性不高。
尽管如此,BERT在某些生成任务中仍可发挥作用,例如通过微调适应特定任务,或与其他生成模型结合。但总的来说,它不是为生成任务专门设计的,因此可能不是最佳选择。
看出来了吗?用于技术密集型问题时,ChatGPT给出的答案质量往往不高,细节错得离谱。而基于相似度的检索器并不对真实性负责——它才不管答案对不对,只管往参考资料里塞。一旦这种内容被塞进学霸的小抄,他就很有可能给出“BERT模型还有一个单向的Decoder”这种荒谬答案。
回到RAG的完整链路里,相似度检索和生成器(大模型)通常是分开优化的。检索文档后,所有相关的文档一股脑输入大模型来生成答案。弱的检索器很容易引入额外的噪声,这时候,一些考生就不知道该相信哪篇文档,结果自然容易出错。
最近,一篇发表在arXiv上的文章——“ATM: Adversarial Tuning Multi-agent System Makes a Robust Retrieval-Augmented Generator”,正是从互联网上大量大模型生成的无用甚至虚假信息出发,尝试提升这种“考生开卷考试”的能力。目标是减轻RAG生成器对大模型幻觉内容的依赖,通过引入对抗训练的思路,迭代优化,逐步提升大模型的鲁棒性。
现有方法
现有的检索增强语言模型从未在优化过程中考虑过检索到大模型生成的幻觉知识,这导致模型过于相信检索到的文档,缺乏鲁棒性。
在RetRobust这项工作中,它主要优化生成器大模型对不相关文档的鲁棒性。方法是在训练数据中加入不相关的额外噪声文档来优化模型效果。与基于自然语言推理过滤后再生成的基线相比,优化后的模型对不相关的文档更加鲁棒——也就是说,让考生在答题时学会了辨别哪些知识是相关的。但问题是,大模型编造的知识往往与话题高度相关,RetRobust很难分辨出哪些文档是有用的。
思想
本文的核心思路是通过对抗思想,提升模型对话题强相关但由模型编造的内容的鲁棒性。简单来说,就是引入另一个角色——Attacker,它负责编造虚假知识,诱导生成器输出错误内容;而生成器Generator则需要不断提升在召回文档混入虚假信息的情况下生成正确信息的概率,也就是增强自己对抗干扰文档的能力。

这种优化思路借鉴了对抗训练。综合的优化目标是:尽可能缩小模型在坏召回场景和好召回场景之间的差距(也就是提升鲁棒性),同时提升模型在给定较好召回文档条件下生成正确答案的能力。
由于两者是双向进化的,这个过程天然可以迭代循环进行,同时增强两者的能力。
方法
生成器反馈的答案不确定性可以作为Attacker的优化目标,由此形成偏好对齐的优化方向。作者通过DPO来提升Attacker的攻击强度。
在Generator的增强方面,文章除了使用标准的SFT损失外,还专门为增强模型鲁棒性设置了token级别的损失,希望模型面对两种输入能够保持相同答案输出的一致性。
经过多轮迭代训练,Attacker逐渐产生更具攻击性的数据,Generator则尽可能缩小强攻击条件下与好召回条件下的差异。模型的效果就在这种博弈中实现了双向增强。实验表明,循环迭代执行这一机制,双方的效果都有希望同步提升,而且多轮迭代还能带来效果的持续进步。
实验效果
在验证集上,通过优化得到的生成器模型在多个知识密集型数据集上表现相当亮眼。7B大小的ATM模型表现甚至能超过多个经过优化的13B模型。

文章还考虑了真实世界场景中,面对大模型幻觉内容进行RAG可能遇到的各种问题:
- 面对检索到的幻觉文档数量变化,模型随着迭代优化逐渐变得更鲁棒。

- 考虑到互联网上可能存在不同模型生成的幻觉内容,ATM模型仍然能够保持很好的效果。

- 在不同话题的知识上,模型无需训练便可以使用检索结果在PopQA上达到很好的效果。

- 训练过程中的攻击也能提升模型对检索文档排列顺序的鲁棒性。

结论
检索增强是一种向大模型注入知识的有效方式,但它很容易被其他大模型生成的幻觉内容错误引导,导致生成错误答案。
在这篇文章中,研究者设定了对抗优化的场景,通过迭代训练的方式,提升了模型对网络上错误内容的鲁棒性,并展示了迭代优化在提升真实世界场景问答准确率方面的能力。
