缓解大模型幻觉问题的解决方案

本文记录大模型幻觉问题的相关内容。
参考:Mitigating LLM Hallucinations: a multifaceted approach
地址:https://amatriain.net/blog/hallucinations

解决LLM幻觉的不同方式
(图:解决大模型幻觉的不同方式)

什么是幻觉?

幻觉(Hallucination)指生成内容与源数据不一致或无意义,可分为内生幻觉和外在幻觉(参考Paper:Survey of Hallucination in Natural Language Generation)。

  • 内在幻觉:生成内容与源数据相矛盾,引入了事实错误或逻辑不一致的情况。
  • 外在幻觉:生成内容与源数据没有矛盾,但也并不能根据源数据进行验证,添加了可能被视为推测性或无法证实的元素。

为什么产生幻觉?

LLM通过预训练来预测下一个token,没有正确/错误的概念,仅仅是基于概率来生成文本。虽然这导致了一些意外的推理能力,但这仅仅是这种基于概率的逐标记推理的结果。指令微调和RLHF确实能让模型更偏向事实,但并没有改变LLM的机制及缺陷。

LLM已经在整个互联网、图书、问答和百科等许多数据集上进行了训练。它们在训练集中有正确和错误的知识。模型回答偏向于它们见过最多的内容。比如提问一个医学问题,而且问法跟某个帖子差不多,那可能就会得到跟训练集里那个帖子大致一样的答案。

在一篇最近的题为 Sources of Hallucination by Large Language Models on Inference Tasks 的论文中,作者展示了LLM训练数据集的两个方面导致了幻觉的产生:真实性先验(veracity prior)和相对频率启发式(relative frequency heuristic)。

如何评测是否有幻觉?

幻觉评测的五个步骤

  1. 准备基准数据:也就是给出大模型生成的参考答案;
  2. 准备测试集:包括随机通用测试集 + 对抗性攻击样本;
  3. 提取断言:可以用手动、规则、机器学习等方式;
  4. 验证:确保大模型生成的东西跟基准数据对齐;
  5. 评价指标:可以用基准错误率(Grounding Defect Rate)评估,即跟基准答案不一致的数量除以测试集总数量。

幻觉的常用度量标准和方法

包括统计学方法、基于模型的方法、基于规则的方法、人类评价、。

  • 统计学方法:ROUGE、BLUE 计算文本相似性;PARENT、PARENT-T、Knowledge F1 评测结构化数据。局限性:主要关注内在幻觉,无法捕捉句法和语义的细微差异。
  • 基于模型的方法:用IE模型抽“主体-关系-对象” 然后做验证。
    • QA-based Metrics:认为对于同一个问题,如果上下文与训练数据一致,就会生成类似答案。因此计算生成内容和训练集的一致性。(参见:Evaluating Factual Consistency in Knowledge-Grounded Dialogues via Question Generation and Question Answering
    • NLI-based Metrics:用自然语言推理(NLI)数据集训模型,计算生成的“假设”在给定的“前提”下是真、假、不确定。(参见:Evaluating Groundedness in Dialogue Systems: The BEGIN Benchmark
    • Faithfulness Classification Metrics:用针对特定任务的数据集训个忠诚度分类的模型,来改进NLI模型的性能。(参见:Rome was built in 1776: A Case Study on Factual Correctness in Knowledge-Grounded Response Generation
  • 人工评价方法:一是对幻觉程度打分;二是对比生成答案和参考答案哪个好。(人工评价很重要,但同时也要找红队攻击模型,参考:“Red Teaming Language Models with Language Models”)
  • FActScore:可用于人工+模型的评估。该指标将LLM生成结果分解为“原子事实(atomic facts)”。最终得分是每个原子事实准确性的总和,每个原子事实都被赋予相等的权重。准确性是一个二进制数字,简单地表示原子事实是否由来源支持。作者实施了不同的自动化策略,利用LLM来估计这个指标。
    在这里插入图片描述

如何缓解大模型幻觉?

本节探讨各种幻觉缓解策略。

产品侧

产品设计的时候去避免大模型生成幻觉内容,比如在生成书面内容时关注观点类文章,而不是事实类文章,有助于降低幻觉。

  • 用户编辑:让用户编辑大模型生成的内容
  • 用户责任:告诉用户对生成内容负责
  • 引文参考:给用户展示引用的内容
  • 可选模式:比如精准模式(以计算成本为代价)等
  • 用户反馈:收集用户反馈(赞踩)用于迭代模型
  • 限制输出和轮数:更长更复杂的输出更容易幻觉
  • 结构化输入输出:预置一些结构化模版

数据侧

维护一个动态数据库专门记录各种幻觉,用于回归测试。而且要注意数据隐私安全。

模型侧

  • 换模型:更大参数量的模型更不容易幻觉
  • 调参数:temperature越小,模型更加接近高概率的token,越不容易幻觉
  • RLHF:能降低尤其是领域微调过的模型的幻觉
  • 指令微调:针对需求的任务数据做微调

Prompt Engineering

通过 Meta prompt 引导大模型 “不该做什么” 有助于降低幻觉。

控制幻觉的一般思路

  • 简化复杂任务,将任务分解并描述清楚
  • 内置一些 meta prompt,比如“不要捏造事实”等话术
  • Few-Shot Learning,添加几个例子
  • 对模型生成结果进行后处理

调整 MetaPrompts

  • 强调的语气:把需要强调的内容全大写或者突出强调
  • 更多上下文:提供更多背景知识
  • 细化输出:重新评估初始输出结果并调整
  • 引用:让模型证实自己的观点
  • 转化任务:让模型做摘要总结而不是做问答
  • 选择性处理任务:有些任务必须强依赖事实回答
  • 反复强调关键点:prompt的最后多强调几遍关键点
  • 回顾输入内容:要求模型回顾重要的输入细节
  • 使用算法过滤:筛选和优先考虑相关的信息

思维链(Chain of Thought)

思维链由 “Chain-of-Thought Prompting Elicits Reasoning in Large Language Models” 提出,因为LLM用来预测下一个token的概率而不是推理,所以指定模型生成推理步骤可以让模型更接近推理。
在这里插入图片描述

RAG:检索增强的生成(Retrieval-Augmented Generation)

在这里插入图片描述
先检索,后生成。但RAG会过度依赖空或错误的检索结果导致幻觉,因此注意事项:

  • 空结果:对于空结果可以回复 “很抱歉,我们没有关于此主题的足够信息。你能换个说法吗?” 或者重新检索;
  • 模棱两可的结果:比如问“李华是谁” 这种可能有多重结果的问题时,可以引导用户进一步描述想问干嘛的李华;
  • 错误结果:作为外部知识模型很难鉴别,需要提高检索组件的准确性。

高级 Prompt Engineering 方法

  • Self-consistency:来自论文 “SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models”,思想是让模型针对同一 prompt 生成多个回答,然后用大模型本身去判断这些回答是否一致,或者结合 BERT-Score、N-gram 等计算。
    在这里插入图片描述
  • Reason and act (ReAct):Google 在 “ReAct: Synergizing Reasoning and Acting in Language Models” 提出的用于缓解 CoT 幻觉的方法,一步步生成 Thought 和 Action,有点像 Agent。
    在这里插入图片描述
  • Reflection(反思):直接问大模型对之前回答的内容是否笃定。还可以把反思过程作为长期记忆存起来强化反思过程。在这里插入图片描述
  • Dialog-Enabled Resolving Agents (DERA):Decider生成答案,让Researcher跟Decider这个Agent一起讨论这个答案,然后让Decider根据他俩的讨论结果调整答案。
    在这里插入图片描述
  • Chain-of-Verification (COVE):Meta最近提出的利用LLM生成多个回复并进行自我验证的变体。如下图所示,模型首先(i)起草一个初始回复;然后(ii)生成验证问题;(iii)独立回答这些验证问题,以避免答案受到其他回复的影响;(iv)生成最终经过验证的回复。
    在这里插入图片描述

总结

减轻幻觉需要多种手段综合应用,但完全消除难度非常大。Yann Lecun 认为,如果不完全重新设计底层模型,就无法解决这个问题(然而 OpenAI 首席科学家 Ilya Sutskever 并不同意)


参考资料:
[1] Mitigating LLM Hallucinations: a multifaceted approach:本文主体内容。
[2] 如何解决LLM大语言模型的幻觉问题?- 知乎:收集模型回答错误的问题,然后训模型的拒答能力。
[3] 大模型幻觉评估方法——忠实性(Faithfulness)与事实性(Factuality)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/123277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握CSS Flexbox,打造完美响应式布局,适配各种设备!

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 📘 文章引言 基…

Hover:借贷新势力崛起,在经验与创新中找寻平衡

复苏中的Cosmos 如果让我选择一个最我感到可惜的区块链项目,我会选择Cosmos。 Cosmos最早提出并推动万链互联的概念,希望打通不同链之间的孤岛,彼时和另一个天王项目Polkadot号称跨链双雄。其跨链技术允许不同的区块链网络互相通信&#xf…

M1安装OpenPLC Editor

下载OpenPLC Editor for macOS.zip文件后,使用tar -zvxf命令解压,然后将"OpenPLC Editor"拖入到"应用程序"文件夹 右键点击"OpenPLC Editor",打开这个""文件,替换为以下内容 #!/bin/bash…

分布式锁其实很简单,6行代码教你实现redis分布式锁

一、前言 分布式锁是一种用于协调分布式系统中多个节点之间对共享资源进行访问控制的机制。它可以确保在分布式环境下,同一时间只有一个节点能够获取到锁,并且其他节点需要等待释放锁后才能获取。 以下是使用分布式锁的几个常见场景和原因:…

「常识」浮点数和定点数

浮点数和定点数 本篇文章旨在简短的介绍浮点数、定点数的定义,以及一些常见的数制、补码。 一、常识 如果缺少以下常识的话,将很难理解浮点数和定点数的概念。 1、数 自然数整数/分数小数:有限小数、无限循环小数、无限不循环小数实数&a…

2.2 消元法的概念

一、消元法介绍 消元法(elimination)是一个求解线性方程组的系统性方法。下面是使用消元法求解一个 2 2 2\times2 22 线性方程组的例子。消元之前,两个方程都有 x x x 和 y y y,消元后,第一个未知数 x x x 将从第…

APC学习记录

文章目录 APC概念APC插入、执行过程逆向分析插入过程执行过程总结 代码演示参考资料 APC概念 APC全称叫做异步过程调用,英文名是 Asynchronous Procedure Call,在进行系统调用、线程切换、中断、异常时会进行触发执行的一段代码,其中主要分为…

机器学习 | 决策树算法

一、决策树算法概述 1、树模型 决策树:从根节点开始一步步走到叶子节点(决策)。所有的数据最终都会落到叶子节点,既可以做分类也可以做回归。 在分类问题中,表示基于特征对实例进行分类的过程,可以认为是if-then的集合&#xff0…

推理还是背诵?通过反事实任务探索语言模型的能力和局限性

推理还是背诵?通过反事实任务探索语言模型的能力和局限性 摘要1 引言2 反事实任务2.1 反事实理解检测 3 任务3.1 算术3.2 编程3.3 基本的句法推理3.4 带有一阶逻辑的自然语言推理3.5 空间推理3.6 绘图3.7 音乐3.8 国际象棋 4 结果5 分析5.1 反事实条件的“普遍性”5…

基于Qt 文本读写(QFile/QTextStream/QDataStream)实现

​ 在很多时候我们需要读写文本文件进行读写,比如写个 Mp3 音乐播放器需要读 Mp3 歌词里的文本,比如修改了一个 txt 文件后保存,就需要对这个文件进行读写操作。本章介绍简单的文本文件读写,内容精简,让大家了解文本读写的基本操作。 ## QFile 读写文本 QFile 类提供了读…

AIGC应用公司开始赚钱了,创始人来自中国,7个月实现100万美元ARR

图片来源:由无界AI生成 自 2022 年中以来,AIGC 赛道持续 1 年有余。然而,热闹归热闹,赚钱的公司一只手都能数得过来。奇葩如 Midjourney,硬是不靠 VC 输血凭着 11 人年做到 1 亿美元 ARR;幸运如 Jasper&…

ideaSSM在线商务管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 SSM 在线商务管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码 和数据库,系统主…

No175.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

WIN11新版画图问题解决

1 白色背景被连同删除的问题 解决方法:加层 将层调整为新建的层,在这个层下画图就行。 2 QQ截图无法直接放在画图上的问题 使用QQ截图的时候: 解决方法:使用windows自带的截图工具或者微信截图 步骤: 1. windows自带…

网络安全—小白自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

docker-compose安装

1.安装docker-compose: yum install -y docker-compose 出现如下错误: 可以先执行: 添加docker-compose的yum仓库 yum install -y epel-release 附:

【Bug—eNSP】华为eNsp路由器设备启动一直是0解决方案!

问题描述 在上机实验时,打开ensp软件,添加AR设备时启动异常,最开始错误代码是40,最后通过重新安装,又出现了新的问题,启动AR设备一直是0,而且界面卡住。 解决方法 打开VirtualBox,将…

Redis文件事件模型

Redis是事件驱动的程序,并基于Reactor模式开发了自己的网络事件处理器,被称之为文件处理器(File Event Handler)。 文件处理器通过I/O多路复用程序来同时监听多个Socket,并根据Socket目前执行的任务来关联不同的事件处理器。当被监听的Socket…

剪辑中遮罩可分几种 剪辑遮罩视频怎么做

当你觉得剪辑特效很难制作的时候,不妨阅读一下本文,来了解遮罩的原理和用法。它是一种超级剪辑工具,可以制作出各种神奇的画面效果。在了解遮罩的基本原理后,就连初学者也能轻松地制作出令人惊艳的剪辑遮罩。有关剪辑中遮罩可分几…

vue3 code format bug

vue code format bug vue客户端代码格式化缺陷,为了方便阅读和维护,对代码格式化发现这个缺陷 vue.global.min.3.2.26.js var Vuefunction(r){"use strict";function e(e,t){const nObject.create(null);var re.split(",");for(le…