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

AIGC:大语言模型LLM的幻觉问题

引言

在使用ChatGPT或者其他大模型时,我们经常会遇到模型答非所问、知识错误、甚至自相矛盾的问题。

虽然大语言模型(LLMs)在各种下游任务中展示出了卓越的能力,在多个领域有广泛应用,但存在着幻觉的问题:即生成与用户输入不符、与先前生成的内容矛盾或与已知世界知识不符的内容。

这种现象对LLMs在现实世界场景中的可靠性构成了重大挑战。在准确率要求非常高的场景下幻觉是不可接受的,比如医疗领域、金融领域等。

目前在LLM幻觉问题上已经有无数的研究,比如关于幻觉的检测、幻觉的评估基准分类、缓解幻觉的方法等。

今天我会结合几篇有关LLM幻觉问题的综述论文,来理解LLM幻觉的分类、检测方法、评估和基准、减轻方法等。

最近的一篇是来自哈尔滨工业大学和华为的研究团队,长达49页,对有关LLM幻觉问题的最新进展来了一个全面而深入的概述。

这篇综述(下文简称:综述1)从LLM幻觉的创新分类方法出发,深入探究了可能导致幻觉的因素,并对检测幻觉的方法和基准进行了概述。

论文链接:https://arxiv.org/abs/2311.05232

另外还有一篇综述(下文简称:综述2),来自腾讯AI实验室和一些国内大学的研究团队,综述提出了LLM幻觉现象的分类法和评估基准,分析旨在减轻LLM幻觉的现有方法,并确定未来研究的潜在方向。

论文链接:https://arxiv.org/pdf/2309.01219.pdf

还有一篇有关幻觉的论文(下文简称:论文1),对各种文本生成任务中的幻觉现象进行了新的分类,从而提供了理论分析、检测方法和改进方法。

论文链接:https://arxiv.org/pdf/2309.06794v1.pdf

1 幻觉的分类

在综述2中,将LLMs幻觉分为三种:输入冲突幻觉上下文冲突幻觉事实冲突幻觉

  • 输入冲突幻觉:是指生成的内容与用户提供的输入不符;

  • 上下文冲突幻觉:是指生成的内容与之前生成的信息相矛盾;

  • 事实冲突幻觉:是指生成的内容与已知的世界知识不符。

图注:3种幻觉的定义

而在最新的综述1中,将LLM幻觉分为两种:事实型幻觉忠实度幻觉

如上图所示,左边是事实型幻觉:当LLM被问到谁是第一个在月球上漫步的人时,LLM编了个人物出来,甚至还说得有模有样。右边是忠实度幻觉:LLM在看到这段新闻后,直接把年份概括错了。

下图是一张更为详细的LLM幻觉种类图,包括更为细致的分类:事实型幻觉包括事实不一致、事实捏造;忠实度幻觉又包括:指令-答案的不一致、文本不一致,以及逻辑不一致。

图注:LLM幻觉种类图

总的来说,结合事实、上下文、输入的不一致,幻觉的定义和分类上是相似的。

结合常见的下游任务,比如机器翻译、问答系统、对话系统、文本摘要、LLM知识图谱和视觉问答系统,论文1总结了典型的幻觉现象,如下表所示:

 2 幻觉的来源

综述2认为产生幻觉的主要原因有预训练数据收集、知识GAP和大模型优化过程三个方面。

最新的综述1也深入探讨LLM产生幻觉的根本原因,主要分为三个关键方面:数据、训练和推理。

结合起来,我们具体来看下幻觉的来源:

2.1 幻觉来自数据

  • 预训练数据:大模型的知识和能力主要来自与预训练数据,如果预训练数据使用了不完整或者过期的数据,那么就很可能导致知识的错误,从而引起幻觉现象。

  • 数据利用:LLMs 往往会捕捉到虚假的相关性,在回忆知识(尤其是长尾信息)和复杂推理场景中表现出困难,从而进一步加剧幻觉。

2.2 幻觉来自训练

  • 预训练阶段:LLMs在这一阶段学习通用表征并捕捉广泛的知识,通常采用基于transformer的架构,在庞大的语料库中进行因果语言建模。但是,固有的架构设计和研究人员所采用的特定训练策略,可能会产生与幻觉相关的问题。

  • 对齐阶段:一般涉及两个主要过程,即监督微调和从人类反馈中强化学习(RLHF)。虽然对齐能显著提高 LLM 响应的质量,但也会带来产生幻觉的风险,主要分为两方面:能力不对齐(Capability Misalignment)和信念不对齐(Belief Misalignment)。

2.3 幻觉来自生成/推理

经过预训练和对齐后,解码在体现 LLM 能力方面发挥着重要作用。然而,解码策略的某些缺陷可能导致 LLM 出现幻觉。综述1深入探讨源于解码过程的潜在原因,并强调两个关键因素:

  • 解码策略固有的随机性(Inherent Sampling Randomness):比如采用采样生成策略(如top-p和top-k)引入的随机性也可能导致幻觉的产生。

  • 不完善的解码表示(Imperfect Decoding Representation):在解码阶段,LLM 使用顶层表示法预测下一个标记。然而,顶层表示法也有其局限性,主要表现在两个方面:上下文关注不足(Insufficient Context Attention)和Softmax瓶颈(Softmax Bottleneck)。

3 幻觉的检测

检测 LLM 中的幻觉对于确保生成内容的可靠性和可信度至关重要。传统的衡量标准主要依赖于词语重叠,无法区分可信内容和幻觉内容之间的细微差别。这样的挑战凸显了为 LLM 幻觉量身定制更复杂的检测方法的必要性。

鉴于这些幻觉的多样性,检测方法也相应地有所不同。

在综述1中,全面介绍了针对事实性幻觉忠实性幻觉的主要幻觉检测策略。

3.1 事实性幻觉的检测

事实性幻觉的检测方法:通常分为 "检索外部事实"(Retrieve External Facts)和 "不确定性估计"(Uncertainty Estimation)。

检索外部事实:为了有效地指出 LLM 输出中的事实不准确之处,一种直观的策略是将模型生成的内容与可靠的知识来源进行比较,如下图 3 所示。

虽然许多幻觉检测方法都依赖外部知识源进行事实检查,但有几种方法可以在零资源环境下解决这一问题,从而无需检索。

这些策略背后的基本前提是,LLM 幻觉的起源本质上与模型的不确定性有关。

因此,通过对模型生成的事实内容的不确定性进行估计,就可以检测出幻觉。

不确定性估计的方法大致可分为两种:基于内部状态和 LLM 行为,如图 4 所示。前者的前提是可以访问模型的内部状态,而后者则适用于更受限制的环境,仅利用模型的可观测行为来推断其潜在的不确定性。

3.2 忠实性幻觉的检测

忠实性幻觉的检测方法:主要侧重于确保生成的内容与给定上下文保持一致,从而避免无关或矛盾输出的潜在隐患。如下图5探讨在 LLM 生成中检测不忠实的方法。

  • 基于事实度量:通过检测生成内容与源内容之间的事实重叠度来评估忠实度。

  • 基于分类器的度量:利用经过训练的分类器来区分生成内容与源内容之间的关联程度。

  • 基于QA的度量方法:利用问题解答系统来验证源内容与生成内容之间的信息一致性。

  • 不确定性估计:通过测量模型对其生成输出的置信度来评估忠实度。

  • 基于prompt的度量方法:让LLM充当评估者,通过特定的prompt策略来评估生成内容的忠实度。

4 幻觉的评估

针对不同类型的幻觉,采用的评估方式不一样。

现有针对幻觉的工作,提出了各种基准来评估LLM中的幻觉,如下表5所示:

现有的基准主要根据LLMs的两种不同能力来评估幻觉:生成事实陈述或判别事实陈述与非事实陈述的能力。下表说明了这两种评估形式的区别。

  • Generation 生成式基准:将幻觉看作一种生成特征,类似于流畅度和连贯性,并对LLM生成的文本进行评估。例如,TruthfulQA用于评估大型模型对问题的回答的真实性,而FactScore则用于评估大型模型生成的个人传记的事实准确性。

  • Discrimination 判别式基准:考察大型模型区分真实陈述和幻觉陈述的能力。具体来说,HaluEval要求模型确定状态信息是否包含幻觉信息,而FACTOR则研究LLM是否更可能生成事实陈述而非非事实陈述。

在这些基准中,TruthfulQA是一种特殊的基准,兼具生成式和判别式两种基准,提供了一个多项选择的替代方案,以测试模型区分真实陈述的能力。

5 幻觉的解决

论文1总结了五种解决幻觉的方法,具体如下图所示:

不同下游任务解决幻觉的方法不同,具体如下图所示:

在哈工大的综述1中,全面回顾了当前减轻幻觉的方法,并根据幻觉成因对这些方法进行了系统分类。

具体来说,综述1将重点放在解决与数据相关的幻觉、与训练相关的幻觉和与推理相关的幻觉的方法上,每种方法都提供了量身定制的解决方案,以应对各自原因所固有的特定挑战。

相关文章:

AIGC:大语言模型LLM的幻觉问题

引言 在使用ChatGPT或者其他大模型时,我们经常会遇到模型答非所问、知识错误、甚至自相矛盾的问题。 虽然大语言模型(LLMs)在各种下游任务中展示出了卓越的能力,在多个领域有广泛应用,但存在着幻觉的问题&#xff1a…...

【C语言刷题每日一题#牛客网BC68】——X形图案

问题描述 思路分析 首先根据输入的描述&#xff0c;多组输入需要将scanf放在循环中来实现 #include<stdio.h> int main() {int a 0;while (scanf("%d", &a) ! EOF){} } 完成了输入之后&#xff0c;再来分析输出——输出的是一个由“*”组成的对称的X形…...

阻断血缘关系以及checkpoint文件清理

spark-sql读写同一张表&#xff0c;报错Cannot overwrite a path that is also being read from 1. 增加checkpoint&#xff0c;设置检查点阻断血缘关系 sparkSession.sparkContext.setCheckpointDir("/tmp/spark/job/OrderOnlineSparkJob")val oldOneIdTagSql s&…...

PHP代码审计之反序列化攻击链CVE-2019-6340漏洞研究

关键词 php 反序列化 cms Drupal CVE-2019-6340 DrupalKernel 前言 简简单单介绍下php的反序列化漏洞 php反序列化漏洞简单示例 来看一段简单的php反序列化示例 <?phpclass pingTest {public $ipAddress "127.0.0.1";public $isValid False;public $output…...

PyTorch之线性回归

1.定义&#xff1a; 回归分析是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。线性回归是利用称为线性回归方程的最小二乘函数&#xff0c;对一个或多个自变量和因变量之间关系&#xff0c;进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参…...

SSTI模板注入基础(Flask+Jinja2)

文章目录 一、前置知识1.1 模板引擎1.2 渲染 二、SSTI模板注入2.1 原理2.2 沙箱逃逸沙箱逃逸payload讲解其他重要payload 2.3 过滤绕过点.被过滤下划线_被过滤单双引号 "被过滤中括号[]被过滤关键字被过滤 三、PasecaCTF-2019-Web-Flask SSTI参考文献 一、前置知识 1.1 模…...

React网页转换为pdf并下载|使用jspdf html2canvas

checkout 分支后突然报错&#xff0c;提示&#xff1a; Cant resolve jspdf in ... Cant resolve html2canvas in ... 解决方法很简单&#xff0c;重新 yarn install 就好了&#xff0c;至于为什么&#xff0c;我暂时也不知道&#xff0c;总之解决了。 思路来源&#xff1a; 先…...

EASYEXCEL导出表格(有标题、单元格合并)

EASYEXCEL导出表格&#xff08;有标题、单元格合并&#xff09; xlsx格式报表的导出&#xff0c;导出的数据存在父子关系&#xff0c;即相当于树形数据&#xff0c;有单元格合并和标题形式的要求&#xff0c;查阅了一些资料&#xff0c;总算是弄出来了&#xff0c;这里另写一个…...

pytest 断言异常

一、前置说明 在 pytest 中,断言异常是通过 pytest 内置的 pytest.raises 上下文管理器来实现的。通过使用 pytest.raises,可以捕获并断言代码中引发的异常。 二、操作步骤 1. 编写测试代码 atme/demos/demo_pytest_tutorials/test_pytest_raises.py import pytest# 示例…...

听GPT 讲Rust源代码--src/tools(22)

File: rust/src/tools/tidy/src/lib.rs rust/src/tools/tidy/src/lib.rs是Rust编译器源代码中tidy工具的实现文件之一。tidy工具是Rust项目中的一项静态检查工具&#xff0c;用于确保代码质量和一致性。 tidy工具主要有以下几个作用&#xff1a; 格式化代码&#xff1a;tidy工具…...

OD Linux发行版本

题目描述&#xff1a; Linux操作系统有多个发行版&#xff0c;distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联&#xff0c;例如Ubuntu基于Debian开发&#xff0c;而Mint又基于Ubuntu开发&#xff0c;那么我们认为Mint同Debian也存在关联。 发行版集是一个或多…...

华为端口隔离简单使用方法同vlan下控制个别电脑不给互通

必须得用access接口&#xff0c;hybrid口不行 dhcp enable interface Vlanif1 ip address 192.168.1.1 255.255.255.0 dhcp select interface interface MEth0/0/1 interface GigabitEthernet0/0/1 port link-type access port-isolate enable group 1 interface GigabitEther…...

DaVinci各版本安装指南

链接: https://pan.baidu.com/s/1g1kaXZxcw-etsJENiW2IUQ?pwd0531 ​ #2024版 1.鼠标右击【DaVinci_Resolve_Studio_18.5(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 DaVinci_Resolve_Studio_18.5(64bit)】。 2.打开解压后的文…...

【黑马甄选离线数仓day10_会员主题域开发_DWS和ADS层】

day10_会员主题域开发 会员主题_DWS和ADS层 DWS层开发 门店会员分类天表: 维度指标: 指标&#xff1a;新增注册会员数、累计注册会员数、新增消费会员数、累计消费会员数、新增复购会员数、累计复购会员数、活跃会员数、沉睡会员数、会员消费金额 维度: 时间维度&#xff08…...

OD 完美走位

题目描述&#xff1a; 在第一人称射击游戏中&#xff0c;玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动&#xff0c;从而完成走位。假设玩家每按动一次键盘&#xff0c;游戏人物会向某个方向移动一步&#xff0c;如果玩家在操作一定次数的键…...

SpringSecurity6 | 失败后的跳转

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Java从入门到精通 ✨特色专栏: MySQL学习 🥭本文内容: SpringSecurity6 | 失败后的跳转 📚个人知识库: Leo知识库,欢迎大家访问 学习…...

MySQL数据库增删改查

常用的数据类型&#xff1a; int&#xff1a;整数类型&#xff0c;无符号的范围【0&#xff0c;2^32-1】&#xff0c;有符号【-2^31,2^31-1】 float&#xff1a;单精度浮点&#xff0c;4字节64位 double&#xff1a;双精度浮点&#xff0c;8字节64位 char&#xff1a;固定长…...

Altium Designer(AD24)新工程复用设计文件图文教程及视频演示

&#x1f3e1;《专栏目录》 目录 1&#xff0c;概述2&#xff0c;复用方法一视频演示2.1&#xff0c;创建工程2.2&#xff0c;复用设计文件 3&#xff0c;复用方法二视频演示4&#xff0c;总结 欢迎点击浏览更多高清视频演示 1&#xff0c;概述 本文简述使用AD软件复用设计文件…...

Python遥感影像深度学习指南(1)-使用卷积神经网络(CNN、U-Net)和 FastAI进行简单云层检测

【遥感影像深度学习】系列的第一章,Python遥感影像深度学习的入门课程,介绍如何使用卷积神经网络(CNN)从卫星图像中分割云层 1、数据集 在本项目中,我们将使用 Kaggle 提供的 38-Cloud Segmentation in Satellite Images数据集。 该数据集由裁剪成 384x384 (适用…...

Hive-DML详解(超详细)

文章目录 前言HiveQL的数据操作语言&#xff08;DML&#xff09;1. 插入数据1.1 直接插入固定值1.2 插入查询结果 2. 更新数据3. 删除数据3.1 删除整个分区 4. 查询数据4.1 基本查询4.2 条件筛选4.3 聚合函数 总结 前言 本文将介绍HiveQL的数据操作语言&#xff08;DML&#x…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...