2024年大模型面试准备(三):聊一聊大模型的幻觉问题
节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。
合集在这里:《大模型面试宝典》(2024版) 正式发布!
今天分享大模型面试中经常被问答的大模型的幻觉问题
文章目录
- 一、幻觉(Hallucination)的定义
- 二、为什么LLM会产生幻觉?
- 三、如何度量幻觉?
- 四、如何缓解LLM幻觉?
- 4.1 事实核心采样
- 4.2 通过使用外部知识验证主动检测和减轻幻觉
- 4.3 SelfCheckGPT
- 五、幻觉一定是有害的吗?
- 技术交流群
- 用通俗易懂方式讲解系列
一、幻觉(Hallucination)的定义
不遵循原文(Faithfulness)或者不符合事实(Factualness)
在传统任务里,幻觉大都是指的是Faithfulness:
-
Intrinsic Hallucination(信息冲突)
LMs在生成回复时,与输入信息产生了冲突,例如摘要问题里,abstract和document的信息不一致。 -
Extrinsic Hallucination(无中生有)
LMs在生成回复时,输出一些并没有体现在输入中的额外信息,比如邮箱地址、电话号码、住址,并且难以验证其真假。(PS: 按照此定义,Extrinsic Hallucination有可能是真的信息,只是需要外部信息源进行认证)
而面向LLMs,我们通常考虑的幻觉则是Factualness。
因为我们应用LLM的形式是open-domain Chat,而不是局限于特定任务,所以数据源可以看做任意的世界知识。LLMs如果生成了不在input source里的额外信息,但是符合事实的,这种情况也可能是对我们有帮助的。
LLM幻觉(Hallucination)经常表现为一本正经的胡说八道:看似流畅自然的表述,实则不符合事实或者是错误的。
LLM幻觉主要可以分为两类:即内在幻觉和外在幻觉。
-
内在幻觉
生成的内容与源内容相矛盾。 -
外部幻觉
生成的内容不能从源内容中得到验证,既不受源内容支持也不受其反驳。
LLMs的幻觉可能会产生如传播错误信息或侵犯隐私等严重后果。eg: 在医疗应用中,对患者生成的报告如果存在幻觉可能导致错误诊断甚至影响生命安全。
幻觉影响了模型的可靠性和可信度,因此需要解决LLM的幻觉问题。
二、为什么LLM会产生幻觉?
-
大模型缺乏相关的知识,或者存储的知识是错的。这个问题主要是由于预训练数据决定的。
-
大模型高估了自己的能力,他可能不知道问题的边界,编造内容回复。
-
对齐问题,这里主要是说我们通过指令精调,模型可以基于我们的instruciton做出回复,但是调教出来的大模型可能会迎合我们的instruciton,也有可能在某个问题下,他不具备这方面的知识,而问题又必须让他回答,他就只能生成一个一本正经的胡说八道内容。
-
在decoder-only的结构下,生成策略我们是每次生成一个token,早期如果就错了,那么后期大模型只能将错就错,不会纠正之前的错误,这也就产生了幻觉滚雪球的现象。还有像top-k,top-p的采样策略也会有影响。(top-k是每次解码时选择k个最大的概率,随机采样;top-p,是选定一个概率阈值,如chatgpt中默认的是0.95,意思是我们选择词表概率加和到大于等于0.95时随机采样。
-
最后,如GPT之类的生成模型,其实只是学会了文本中词汇间的统计规律,所以它们生成内容的准确性仍然是有限的。
三、如何度量幻觉?
最有效可靠的方式当然是靠人来评估,但是人工评估的成本太高了。因此有了一些自动化评估的指标:
-
命名实体误
命名实体(NEs)是“事实”描述的关键组成部分,我们可以利用NE匹配来计算生成文本与参考资料之间的一致性。直观上,如果一个模型生成了不在原始知识源中的NE,那么它可以被视为产生了幻觉(或者说,有事实上的错误)。 -
蕴含率
该指标定义为被参考文本所蕴含的句子数量与生成输出中的总句子数量的比例。为了实现这一点,可以采用成熟的蕴含/NLI模型。 -
基于模型的评估
应对复杂的句法和语义变化。 -
利用问答系统
此方法的思路是,如果生成的文本在事实上与参考材料一致,那么对同一个问题,其答案应该与参考材料相似。具体而言,对于给定的生成文本,问题生成模型会创建一组问题-答案对。接下来,问答模型将使用原始的参考文本来回答这些问题,并计算所得答案的相似性。 -
利用信息提取系统
此方法使用信息提取模型将知识简化为关系元组,例如<主体,关系,对象>。这些模型从生成的文本中提取此类元组,并与从原始材料中提取的元组进行比较。
四、如何缓解LLM幻觉?
与幻觉有关的数据问题可以(至少理论上)通过创建高质量无噪声的数据集来解决。但是,验证和清理数百GB的文本语料库难度太大了。
因此也有了一些其他的方法:
-
事实核心采样
-
利用外部知识验证正确性
-
采样多个输出并检查其一致性
4.1 事实核心采样
相关文章:《Factuality Enhanced Language Models for Open-Ended Text Generation》
在这种方法中,作者认为,采样的“随机性”在用于生成句子的后半部分时,对事实性的损害比在句子的开头更大。因为在句子的开始没有前文,所以只要它在语法和上下文上是正确的,LM就可以生成任何内容。然而,随着生成的进行,前提变得更为确定,只有更少的单词选择可以使句子成为事实。因此,他们引入了事实核心采样算法,该算法在生成每个句子时动态调整“核心”p。在事实核心采样中,生成每个句子的第t个标记的核心概率pt为:
其中,λ是top-p概率的衰减因子,ω是概率的下限衰减。
4.2 通过使用外部知识验证主动检测和减轻幻觉
相关文章:《A Stitch in Time Saves Nine: Detecting and Mitigating Hallucinations of LLMs by Validating Low-Confidence Generation》
作者发现
-
幻觉的生成是会传播的,比如一句话出现幻觉,后续生成的文本可能也会出现幻觉甚至更严重。这意味着,如果我们能够“主动”检测并减轻幻觉,那么我们也可以阻止其在后续生成的句子中的传播。
-
logit输出值(输出词汇表上的概率分布)可以用来获取幻觉的信号。具体地说,我们计算了一个概率得分,并展示了当这个得分很低时,模型更容易产生幻觉。因此,它可以作为幻觉的一个信号,当得分很低时,可以对生成的内容进行信息验证。
基于这两个发现,作者提出了主动检测和减轻的方法。
在检测阶段,首先确定潜在幻觉的候选者,即生成句子的重要概念。然后,利用其logit输出值计算模型对它们的不确定性并检索相关知识。
在减轻阶段,使用检索到的知识作为证据修复幻觉句子。将修复的句子附加到输入(和之前生成的句子)上,并继续生成下一个句子。这个过程不仅减轻了检测到的幻觉,而且还阻止了其在后续生成的句子中的传播。
4.3 SelfCheckGPT
相关文章:《SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models》
SelfCheckGPT的主要思想是:如果模型真的掌握某个事实,那么多次生成的结果应该是相似的且事实一致的;相反,如果模型在胡扯,那么随机采样多次的结果会发散甚至矛盾。
因此,他们从模型中采样多个response(比如通过变化温度参数)并测量不同response之间的信息一致性,以确定哪些声明是事实,哪些是幻觉。这种信息一致性可以使用各种方法计算,比如可以使用神经方法计算语义等价(如BERTScore)或使用IE/QA-based方法。
五、幻觉一定是有害的吗?
幻觉不一定是有害的,特别是在一些需要创造力或灵感的场合,比如写电影剧情,幻觉的存在可能带来一些奇思妙想,使得生成的文本充满想象力。因此,对幻觉的容忍度取决于具体的应用场景。
技术交流群
前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~
我们建了算法岗技术与面试交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。
方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:技术交流
用通俗易懂方式讲解系列
-
《大模型面试宝典》(2024版) 正式发布!
-
《大模型实战宝典》(2024版)正式发布!
-
用通俗易懂的方式讲解:自然语言处理初学者指南(附1000页的PPT讲解)
-
用通俗易懂的方式讲解:1.6万字全面掌握 BERT
-
用通俗易懂的方式讲解:NLP 这样学习才是正确路线
-
用通俗易懂的方式讲解:28张图全解深度学习知识!
-
用通俗易懂的方式讲解:不用再找了,这就是 NLP 方向最全面试题库
-
用通俗易懂的方式讲解:实体关系抽取入门教程
-
用通俗易懂的方式讲解:灵魂 20 问帮你彻底搞定Transformer
-
用通俗易懂的方式讲解:图解 Transformer 架构
-
用通俗易懂的方式讲解:大模型算法面经指南(附答案)
-
用通俗易懂的方式讲解:十分钟部署清华 ChatGLM-6B,实测效果超预期
-
用通俗易懂的方式讲解:内容讲解+代码案例,轻松掌握大模型应用框架 LangChain
-
用通俗易懂的方式讲解:如何用大语言模型构建一个知识问答系统
-
用通俗易懂的方式讲解:最全的大模型 RAG 技术概览
-
用通俗易懂的方式讲解:利用 LangChain 和 Neo4j 向量索引,构建一个RAG应用程序
-
用通俗易懂的方式讲解:使用 Neo4j 和 LangChain 集成非结构化知识图增强 QA
-
用通俗易懂的方式讲解:面了 5 家知名企业的NLP算法岗(大模型方向),被考倒了。。。。。
-
用通俗易懂的方式讲解:NLP 算法实习岗,对我后续找工作太重要了!。
-
用通俗易懂的方式讲解:理想汽车大模型算法工程师面试,被问的瑟瑟发抖。。。。
-
用通俗易懂的方式讲解:基于 Langchain-Chatchat,我搭建了一个本地知识库问答系统
-
用通俗易懂的方式讲解:面试字节大模型算法岗(实习)
-
用通俗易懂的方式讲解:大模型算法岗(含实习)最走心的总结
-
用通俗易懂的方式讲解:大模型微调方法汇总
参考文献:
1. https://medium.com/mlearning-ai/the-hallucination-problem-of-large-language-models-5d7ab1b0f37f
2. https://zhuanlan.zhihu.com/p/651507945
相关文章:

2024年大模型面试准备(三):聊一聊大模型的幻觉问题
节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…...

微信小程序实战:无痛集成腾讯地图服务
在移动互联网时代,地图服务无疑是应用程序中最常见也最实用的功能之一。无论是导航定位、附近搜索还是路线规划,地图服务都能为用户提供极大的便利。在微信小程序开发中,我们可以轻松集成腾讯地图服务,为小程序赋能增值体验。本文将详细介绍如何在微信小程序中集成使用腾讯地图…...

[flask]flask的路由
路由的基本定义 路由就是一种映射关系。是绑定应用程序(视图)和url地址的一种一对一的映射关系!在开发过程中,编写项目时所使用的路由往往是指代了框架/项目中用于完成路由功能的类,这个类一般就是路由类,…...

javaWeb项目-快捷酒店信息管理系统功能介绍
开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 项目关键技术 1、JSP技术 JSP(Java…...

C++ primer 第十五章
1.OPP:概述 面向对象程序设计的核心思想是数据抽象、继承和动态绑定。 通过继承联系在一起的类构成一种层次关系,在层次关系的根部的是基类,基类下面的类是派生类 基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义各自特有…...

【数据结构与算法】直接插入排序和希尔排序
引言 进入了初阶数据结构的一个新的主题——排序。所谓排序,就是一串记录,按照其中的某几个或某些关键字的大小(一定的规则),递增或递减排列起来的操作。 排序的稳定性:在一定的规则下,两个值…...

HQL,SQL刷题,尚硅谷
目录 相关表数据: 题目及思路解析: 多表连接 1、课程编号为"01"且课程分数小于60,按分数降序排列的学生信息 2、查询所有课程成绩在70分以上 的学生的姓名、课程名称和分数,按分数升序排列 3、查询该学生不同课程的成绩…...

随机生成用户名、密码、注册时间【Excel】
1.1简介 最近想虚拟一些数据,看下有没有自动生成的工具。百度看了下,大概有这么几种方法 1.excel内置公式函数处理 2.使用使用VBA宏生成随机 3.下载方方格子,emm工具是个好工具,蛮多功能的,每月8块 4.Java函数实现…...

C++函数模板详解(结合代码)
目录 1. 模板概念 2. 函数模板语法 3. 函数模板注意事项 4. 函数模板案例 5. 普通函数与函数模板的区别 6. 普通函数与函数模板的调用规则 7. 模板的局限性 1. 模板概念 在C中,模板是一种通用的程序设计工具,它允许我们处理多种数据类型而不是固…...

Nest学习随笔
一、Middleware(中间件)、Interceptor(拦截器)、ExceptionFilter(异常过滤器) 执行顺序 接口调用正常:Middleware > Interceptor接口调用异常:Middleware > ExceptionFilter 二、访问静态文件 使用 nestjs/serve-static 依赖 配置方法&#x…...

二十二、软考-系统架构设计师笔记-真题解析-2018年真题
软考-系统架构设计师-2018年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.在磁盘调度管理中,应先进行移臂调度,再进行旋转调度。假设磁盘移动臂位于21号柱面上,进程的请求序列如下表所示。如果采用最短移臂调度算法,那么系统…...

2024最新最全Selenium自动化测试面试题!
1、什么是自动化测试、自动化测试的优势是什么? 通过工具或脚本代替手工测试执行过程的测试都叫自动化测试。 自动化测试的优势: 1、减少回归测试成本 2、减少兼容性测试成本 3、提高测试反馈速度 4、提高测试覆盖率 5、让测试工程师做更有意义的…...

Docker 搭建Redis集群
目录 1. 3主3从架构说明 2. 3主3从Redis集群配置 2.1关闭防火墙启动docker后台服务 2.2 新建6个docker容器实例 2.3 进去任意一台redis容器,为6台机器构建集群关系 2.4 进去6381,查看集群状态 3. 主从容错切换迁移 3.1 数据读写存储 3.1.1 查看…...

spring boot商城、商城源码 欢迎交流
一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整sku和下单流程的商城 联系: V-Tavendor...

全面解析“通义千问”:功能、优势与使用指南
引言: “通义千问”是由阿里云研发的一款先进的人工智能语言模型,以其强大的自然语言处理能力与广泛的知识覆盖面,在教育、咨询、信息检索等领域发挥着重要作用。本文将详细介绍“通义千问”的核心功能、显著优势以及具体使用方法。 一、“…...

【第三方登录】Google邮箱
登录谷歌邮箱开发者 https://console.developers.google.com/ 先创建项目 我们用的web应用 设置回调 核心主要: 1.创建应用 2.创建客户端ID 3.设置域名和重定向URL 4.对外公开,这样所有的gmail邮箱 都能参与测试PHP代码实现 引入第三方包 h…...

oslo_config学习小结
2.配置文件加载方法 2.1基础 配置文件指的是文件以.conf,.ini结尾等内容为配置项的文件,配置文件内容格式一般为 [DEFAULT] option value [sectiona] optiona valuea optionb valueb [sectionb] optionc valuec optiond valued 2.2加载方法…...

SpringBoot2.6.3 + knife4j-openapi3
1.引入项目依赖: <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter</artifactId><version>4.5.0</version> </dependency> 2.新增配置文件 import io.swag…...

PostgreSQL FDW(外部表) 简介
1、FDW: 外部表 背景 提供外部数据源的透明访问机制。PostgreSQL fdw(Foreign Data Wrapper)是一种外部访问接口,可以在PG数据库中创建外部表,用户访问的时候与访问本地表的方法一样,支持增删改查。 而数据则是存储在外部,外部可以是一个远程的pg数据库或者其他数据库(…...

Java项目:75 springboot房产销售系统
作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 使用房产销售系统分为管理员和用户、销售经理三个角色的权限子模块。 管理员所能使用的功能主要有:首页、个人中心、用户管理、销…...

2.6 IDE(集成开发环境)是什么
IDE(集成开发环境)是什么 IDE 是 Integrated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员开发的应用软件,是它们的一个总称。 通过前面章节的学习我们知道,运行 C 语言&…...

tomcat和web服务器是什么??
一、什么是服务器 1.服务器是计算机的一种,它比普通计算机运行更快、负载更高。服务器拥有独立IP地址,并且运行了服务器软件。 2.服务器由服务器软件和服务器硬件组成。服务器硬件就是拥有独立ip的计算机,服务器软件是一个被动的软件&#…...

鸿蒙Harmony跨模块交互
1. 模块分类介绍 鸿蒙系统的模块一共分为四种,包括HAP两种和共享包两种 HAP(Harmony Ability Package) Entry:项目的入口模块,每个项目都有且只有一个。feature:项目的功能模块,内部模式和En…...

由浅到深认识Java语言(30):集合
该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…...

Python学习笔记(二)
一:异常: 1.1:异常处理: 1.2:异常捕获: 1.3:异常传递: 二:模块: 2.1:模块的定义: 2.2:模块的导入: 2.3&…...

5.域控服务器都要备份哪些资料?如何备份DNS服务器?如何备份DHCP服务器?如何备份组策略?如何备份服务器状态的备份?
(2.1) NTD(域控数据库)备份 (2.2)DNS备份 (2.3)DHCP备份 (2.4)组策略备份 (2.5)CA证书备份 (2.6)系统状态备份 (2.1)…...

TCP与UDP:网络协议的技术原理与要点
文章目录 1. TCP(传输控制协议)1.1 面向连接1.1.1 三次握手1.1.2 为什么需要三次握手?1.1.3 四次挥手1.1.4 为什么需要四次挥手? 1.2 可靠性1.3 有序传输1.4 流量控制1.5 拥塞控制 2. UDP(用户数据报协议)2…...

vue-office/docx插件实现docx文件预览
1.下包 //预览docx文件 npm install vue-office/docx vue-demi//如果是vue2.6版本或以下还需要额外安装 vue/composition-api2.引入 <template><div>//在src填入文档地址<VueOfficeDocx srchttp://...../xx.docx style"width:80%" rendered"re…...

STM32—控制蜂鸣器(定时器)
目录 1 、 电路构成及原理图 2 、编写实现代码 main.c tim_irq.c 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 定时器中断是利用定时器的计数功能(向上计数或向下计…...

【React】使用 JSX 为 JavaScript 添加标签
使用 JSX 为 JavaScript 添加标签实际上是将 JSX 语法与 JavaScript 代码结合使用,以描述用户界面。JSX 允许你在 JavaScript 中编写类似 HTML 的结构,并最终由 React 库将其转换为真正的 DOM 元素。以下是将标签引入 JavaScript 以及将 HTML 转化为 JSX…...