当前位置: 首页 > news >正文

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

本文记录大模型幻觉问题的相关内容。
参考: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)

相关文章:

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

本文记录大模型幻觉问题的相关内容。 参考:Mitigating LLM Hallucinations: a multifaceted approach 地址:https://amatriain.net/blog/hallucinations (图:解决大模型幻觉的不同方式) 什么是幻觉? 幻觉…...

Python装饰器进阶:深入理解与最佳实践

1、什么是装饰器 https://docs.python.org/zh-cn/3.7/glossary.html#term-decorator 官网介绍的很简单,返回值为另一个函数的函数,通常使用 wrapper 语法形式来进行函数变换。装饰器就是闭包的应用,是用来**装饰(修改或增强&…...

数据库数据恢复—Oracle数据库报错ORA-01110错误的数据恢复案例

Oracle数据库故障: 北京某公司一台运行oracle数据库的服务器,机房意外断电导致该服务器重启,重启后发现oracle数据库报错。该Oracle数据库没有备份。 Oracle数据库数据恢复过程: 1、北亚企安数据恢复工程师检查该oracle数据库的数…...

如何通过adb控制安卓手机wifi

一、准备工作 1、先用USB数据线 将手机和电脑连接在一起 1) 数据线连接手机和电脑,选择“传输文件”的连接方式; 2) 在手机上,打开“开发者选项”、“USB调试”; 2、在电脑上安装adb工具,参考…...

VR全景应用广泛体现在哪里?有何优势?

VR全景作为一种新型营销方式,正在逐渐走进人们的视线,它区别于以往单一角度的照片和视频,VR全景制作显得更加直观、更加真实、更加生动。VR全景通过VR技术将所拍摄的图片变成720度可观看的场景模式,把产品的特色以及魅力整体呈现展…...

【深度学习】Python使用指定gpu运行代码

命令行指定显卡GPU运行python脚本 在大型机构分配的服务器集群中,需要使用GPU的程序默认都会在第一张卡上进行,如果第一张卡倍别人占用或者显存不够的情况下,程序就会报错说没有显存容量,所以能够合理地利用GPU资源能帮助你更快更…...

二叉树的遍历

树森林二叉树先序遍历先序遍历先序遍历后序遍历中序遍历中序遍历 1.前序遍历 leetcode题目链接 1.1 递归 前序遍历递归方式 class Solution { public:vector<int> preorderTraversal(TreeNode* root) {vector<int> res;if(root){res.push_back(root->val);ve…...

分布式限流:Redis

目录 1:如何实现分布式限流 2:限流的几种类别 2.1:固定窗口限流 2.2:滑动窗口限流 2.3:漏桶限流 2.4:令牌桶限流 3:实现分布式限流:Redis 3.1:引入Redisson的依赖包 3.2:初始化Redisson 3.3:创建Redisson的限流类 1:如何实现分布式限流 1:把统计用户的使用频率等这些…...

python excel接口自动化测试框架

前言 前些天写了pytestyamlallure接口自动化测试框架这篇文章。 今天采用Excel继续写一个接口自动化测试框架。 设计流程图 这张图是我的excel接口测试框架的一些设计思路。 首先读取excel文件&#xff0c;得到测试信息&#xff0c;然后通过封装的requests方法&#xff0c…...

Java开发面试--MongoDB专区

1、你是否了解 MongoDB&#xff1f; 答&#xff1a; 是的&#xff0c;我了解 MongoDB。MongoDB是一个流行的NoSQL数据库&#xff0c;它以文档的形式存储数据&#xff0c;具有高度的灵活性和可扩展性。我熟悉MongoDB的基本概念和特性&#xff0c;例如集合&#xff08;Collectio…...

当『后设学习』碰上『工程学思维』

只要我成为一个废物&#xff0c;就没人能够利用我&#xff01; 雷猴啊&#xff0c;我是一只临期程序猿。打过几年工&#xff0c;写过几行代码。但今天我不想聊代码&#xff0c;我们聊聊学习这件事。 技术年年更新&#xff0c;尤其是前端框架&#xff0c;很多时候觉得学习速度都…...

一表谈现实、系统、流程、报表与BI

序号主题描述1系统与现实1.1管理系统个体应用决定因素管理能力、软件工程与管理环境的综合结果1.2信息系统与现实业务的关系现实世界是以业务利弊为抓手&#xff1b;信息系统是以业务流程为抓手&#xff1b;信息系统只是对现实业务部分的数字化应用总结&#xff1a;现实业务是以…...

数据结构顺序栈例题一

内容仅供个人复习 #include<iostream> #define MAXSIZE 100using namespace std;typedef struct {int *base;int *top;int stackSize;}SqStack;void Initstack( SqStack &s) // 初始化栈 {s.base new int[MAXSIZE];s.top s.base;s.stackSize MAXSIZE; }void Pus…...

大模型在百度智能问答、搜索中的应用

本文主要介绍了智能问答技术在百度搜索中的应用。包括机器问答的发展历程、生成式问答、百度搜索智能问答应用。欢迎大家加入百度搜索团队&#xff0c;共同探索智能问答技术的发展方向&#xff0c;文末有简历投递方式。 01 什么是机器问答 机器问答&#xff0c;就是让计算机…...

ARPG----C++学习记录01日志和调试

多人射击有点难&#xff0c;发现这个更加基础&#xff0c;先学习这个 显示日志 可以在代码中插入这样一行来打印日志&#xff0c;蓝图里的printstring会在屏幕和日志里都显示。可以使用%f&#xff0c;d等来获取后边的输入值。对于打映字符串变量&#xff0c;传入需要* UE_LOG…...

3302. 表达式求值, 栈的应用

3302. 表达式求值 - AcWing题库 给定一个表达式&#xff0c;其中运算符仅包含 ,-,*,/&#xff08;加 减 乘 整除&#xff09;&#xff0c;可能包含括号&#xff0c;请你求出表达式的最终值。 注意&#xff1a; 数据保证给定的表达式合法。题目保证符号 - 只作为减号出现&…...

论文写作框架示例:论软件系统建模方法及其应用

标题 前言题目要求写作框架(1)摘要(300~330字)(2)正文(2000~2500字,2200字左右为宜)(3)收尾(200字左右)前言 本章内容参考了51cto的薛老师的《软考论文高分特训与范文10篇》的内容,是帮助初学者打开写作思路的工具,而不是必须要遵循的模式。建议软考人多读多看…...

Godot 官方2D C#重构(4):TileMap进阶使用

文章目录 前言完成内容项目节点结构TileMap设置图片资源备选图片添加物理碰撞添加y轴遮罩判断Y Sort Enable是干什么的&#xff1f; 脚本代码 前言 Godot 官方 教程 Godot 2d 官方案例C#重构 专栏 Godot 2d 重构 github地址 完成内容 项目节点结构 TileMap设置 图片资源 备选图…...

Ubuntu系统编译调试QGIS源码保姆级教程

在之前的文章中&#xff0c;我详细介绍了怎么在Windows下编译QGIS源码&#xff0c;也得到了不错的反馈。但是不足的是Windows下只能编译QGIS的Release模式和RelWithDebInfo模式&#xff0c;想要分析源码&#xff0c;“断点调试”肯定是少不了的&#xff0c;但是这两种模式虽然也…...

电源控制系统架构(PCSA)之系统控制处理器

安全之安全(security)博客目录导读 目录 一、系统控制处理器 1、服务 2、可信操作 一、系统控制处理器 SCP是一种基于处理器的能力&#xff0c;为提供电源管理功能和服务提供了一个灵活和可扩展的平台。 在移动系统中&#xff0c;SCP处理器一般是Cortex-M微控制器&#xff…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...