Open AI 研究员 Lilian Weng 再发重磅文章!
《LLMs中的外在幻觉》
完整遍历了 LLM 产生幻觉的原因、检测方法和防止幻觉的方法。
图片是我自己的笔记,跳过了无法理解的算法部分。
原文链接:https://lilianweng.github.io/posts/2024-07-07-hallucination/
AI 的幻觉有两种类型:
上下文幻觉:模型输出应与上下文中的源内容一致。
外在幻觉:模型输出应该由预训练数据集作为基础。
关于外在幻觉:努力确保模型输出是事实和可通过外部世界知识验证的。当模型不知道某个事实时,应该明确指出。
是什么导致的模型出现幻觉:
1 预训练数据问题:从公共互联网爬取的数据是最常见的选择,因此预计会存在过时、缺失或不正确的信息。
2 微调时的新知识:
1 LLMs学习新知识的微调示例比其他与模型现有知识一致的示例学习速度慢
2 一旦学习了具有新知识的示例,它们会增加模型产生幻觉的倾向。
通过 RAG 进行幻觉检测的方式:
1 使用Wikipedia文档作为事实性基准
1 两个评估指标: a) 幻觉命名实体(NE)错误:
▪ 使用预训练实体检测模型
▪ 测量不出现在ground truth文档中的检测到的命名实体比例 b) 蕴含比率:
▪ 使用fine-tuned RoBERTa模型
▪ 计算被蕴含模型标记为与配对Wikipedia句子相关的生成句子比例。
2 高NE错误和低蕴含比率表示更高的事实性
2 FActScore (Min et al., 2023)
1 将长文本生成分解为多个原子事实,并分别验证
2 测量每个模型生成中被知识源支持的句子比例(精确率)
3 实验了几种事实性验证方法: a) 非上下文LLM b) 检索→LLM c) 非参数概率(NP) d) 检索→LLM + NP
4 发现使用检索来验证模型生成显著减少了幻觉
3 . SAFE (Wei et al., 2024)
1 使用语言模型作为代理,迭代发出Google搜索查询
2 对每个自包含的原子事实进行多步处理
3 根据搜索结果推理事实是否得到支持
4 评估指标: F1 @ K
▪ 考虑精确率(事实性)和召回率(长度)
5 据报道优于人类注释者,同时成本更低
FacTool (Chern et al., 2023)
1 遵循标准事实检查工作流:
1 声明提取:通过提示LLM提取可验证声明
2 查询生成:将每个声明转换为适合外部工具的查询列表
3 工具查询和证据收集:查询外部工具并获取结果
4 一致性验证:根据外部工具证据的支持程度,为每个声明分配二元事实性标签
2 观察结果
◦ 对于较罕见的实体,错误率较高
◦ 在生成的后半部分提及的事实,错误率较高
◦ 使用检索来验证模型生成可以显著减少幻觉。
通过未知知识的校准以及间接查询进行幻觉检测的方式:
1 TruthfulQA(Lin 等,2021 年)和 SelfAware(Yin 等,2023 年)是两个基准,用于衡量模型在这种情况下生成真实回应的能力,前者是对抗性构建的,强调人类的虚假,而后者包含由于其本质而无法回答的问题。当面对这些问题时,模型应拒绝或提供相关信息。
2 Agrawal 等人(2023 年)专门调查了LLM生成中幻觉参考案例,包括虚构的书籍、文章和论文标题。他们尝试了两种基于一致性的方法来检查幻觉,即直接与间接查询。这两种方法在 T > 0 时多次运行检查并验证一致性。 直接查询要求模型判断生成的参考文献是否存在。间接查询则要求提供辅助细节——生成的参考文献的作者是谁;例如,如果我们想要检查 "Is the following paper real?" ,我们可以检查 "Who are the author of the paper?" 假设是,多个生成的参考文献对相同作者的一致性可能性要小于多个对直接查询的响应表明参考文献存在的可能性。
帮助 LLM 抵抗幻觉的方法,包括检索外部知识库、特殊抽样方法和对齐微调。
1 RAG(检索增强生成)是提供基础信息的一种非常常见的方法,即检索相关文档,然后生成与相关文档一起作为额外上下文。
1 研究阶段:查找相关文件作为证据。
2 修订阶段:编辑输出,纠正不受证据支持的内容,尽量保留原始内容。
2 行动链,没有外部检索知识的基础,可以设计一个使用模型本身进行验证和修订以减少幻觉的过程。CoVe 包括四个核心步骤:
1 基准响应:该模型生成一个初始草案响应,命名为“基准”。
2 计划验证:基于这个原始生成,模型为事实核查设计非模板化的验证问题;可以通过少拍提示与(响应,验证问题)示例来实现。
3 执行验证:该模型独立回答这些问题。设置有几种变体:
1 联合:与第 2 步结合,其中少样本示例结构为(响应,验证问题,验证答案);
2 步骤:分离验证计划和执行步骤。
3 分解:每个验证问题都单独回答。
4 因子+修订:在因子验证执行后添加一个“交叉检查”步骤,取决于基线响应和验证问题与答案。它可以检测不一致性。
4 最终输出:生成最终的、精炼的输出。如果发现任何不一致,输出将在此步骤进行修订。
3 抽样方法:
1 基于事实的核采样算法,该算法基于这样的假设:采样随机性对句子后半部分的事实性造成的危害大于对句子开头造成的危害。
2 通过在每一层的激活上拟合线性探针来区分真实与虚假输出。他们发现对于许多头部,探针无法比随机效果更好,而一些头部表现出色。
4 事实性微调:
1 SFT 阶段(意识到事实性的 SFT):旨在生成比模型自身生成更具事实性(由 FActScore 衡量)的训练数据。
2 RLHF 阶段:
1 给定一组提示的模型完成的示例对
2 根据两种不涉及人类的方法,用真实性对它们进行注释:
1 基于参考:检查外部知识库是否支持模型陈述,类似于上文中关于基于检索的幻觉评估的部分。
2 无需参考:使用模型自身的置信度作为其真实性的代理,类似于间接查询方法。
3 通过从模型中生成多个样本并根据真实性评分分配偏好来构建训练数据集。
5 归因微调
1 WebGPT(中野等人,2022 年)将网络搜索与文档检索结合,使用经过微调的 GPT 模型,旨在回答长篇问题,以减少虚构内容并实现更好的事实准确性。
2 GopherCite(Menick 等人,2022 年)与 WebGPT 非常相似,但与依赖人类演示进行行为克隆的 WebGPT 不同,GopherCite 通过少量提示生成演示,每一代使用相关文档进行上下文填充,然后使用奖励模型对哪些是最佳的进行评分。