目前RALM主要存在两个问题:
- 搜索结果误导性:搜索结果依赖其召回和排序,所以不一定和问题相关,不相关的结果融合到大模型中会给大模型带来误导导致错误的答案(甚至有的时候大模型依靠内部记忆能够正确回答);
- 回复幻觉问题:针对无法回答的问题(不管是搜索结果还是内部记忆),大模型有时也会一本正经的胡说八道。
本篇paper CON(Chain-of-Note)主要就是解决上面两个问题:
如下图所示,有三种情况
- 搜索结果能够回答问题,能够直接回答问题
- 搜索结果和问题相关,但是不能直接回答问题,但是结合内部记忆,能够回答问题
- 搜索结果和问题不相关,内部记忆也无法回答问题,直接回答Unkoown
针对上面的两个问题,该方法的优势是:
- 通过针对搜索结果生成理解文档,保证在回答问题前只参考相关的搜索结果,这样可以解决不相关搜索结果带来的误导;
- 当搜索结果和内部记忆都不能回答问题时,让大模型输出搜索结果和问题不相关,且自身都无法回答问题,最后输出unknown,这样可以解决大模型胡乱回复的问题。
论文题目:Chain-of-Note: Enhancing Robustness in Retrieval-Augmented Language Models
论文链接:https://arxiv.org/pdf/2311.09210.pdf
CON(Chain-of-Note)方法介绍
介绍论文中作者的详细方法(可复现)
1. Note Design
如上图所示,作者总共设计了三种reading notes
a. 当搜索结果能够回答问题,大模型基于搜索结果的分析生成正确的答案;
b. 当搜索结果和问题相关但是不能直接回答问题,但是通过内部记忆能够推理得到答案;
c. 搜索结果和问题不相关,并且模型缺少知识回答问题,回复unknown
2. Data Collection
和很多大模型项目类似,作者也是先抓取ChatGPT(目前GPT4可能是更好的选择)的结果。作者选择了10k的问题,通过设计好的instruction,包含针对上面三种问题的的描述;
3. Model Training
通过微调LLaMa-2 7B(这里没有介绍具体的微调方式,读者可以试下全量或者lora),通过训练
a. 通过学习针对搜索结果的理解,判定搜索结果是否和问题相关,并且最后回复是基于相关文题,能够提高准确率减少误答;
b. 针对搜索结果不能满足问题的情况,一方面内部记忆能满足问题则通过内部记忆回答,如果内部记忆无法回答则回答Unknown
tricks: 作者发现直接全部计算notes和answer的loss,会让模型过度关注notes从而answer表现不好(直观感觉也是,notes更长 loss计算会参与更大的影响),所以作者最后在训练过程中,一半时间只训练answer的loss、另外一半时间训练notes+answer的loss。