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

探索AI大模型(LLM)减少幻觉的三种策略

        大型语言模型(LLM)在生成文本方面具有令人瞩目的能力,但在面对陌生概念和查询时,它们有时会输出看似合理却实际错误的信息,这种现象被称为“幻觉”。近期的研究发现,通过策略性微调和情境学习、检索增强等方法,可以显著降低这种幻觉现象的发生。

        当LLM遭遇不熟悉的查询时,它们可能会产生幻觉,即那些听起来头头是道却与事实不符的回答。这主要是因为在训练数据中缺少相关背景信息时,LLM仍会尝试根据其在训练过程中学到的规律生成通顺的答案。麻省理工学院的研究人员在其首篇论文中指出,当LLM被问到其预训练语料库中鲜有涉及的概念时,幻觉现象尤为明显。例如,如果要求模型撰写一个不太出名人物的传记,由于缺乏足够的数据支持,模型可能会编造出不实的内容。

        为了应对这一挑战,研究者们提出了一些策略,来降低LLM幻觉的可能性。

  1. 策略性微调(Strategic Fine-Tuning),使用包含“I don’t know”标记的响应的数据集来训练模型,特别是在面对不熟悉的查询时。这种训练方法帮助模型学会在不确定时表达不确定性,而不是捏造信息。

  2. 多样本上下文学习(Many-Shot In-Context Learning),是一种通过在大上下文窗口中提供大量示例来增强模型适应性和准确性的方法。

  3. 检索增强生成(Retrieval-Augmented Generation, RAG),通过整合外部知识源来减少幻觉现象的方法,确保生成的响应基于从可信来源检索到的事实信息。

        通过这些方法,LLM在处理不熟悉查询时的准确性和可靠性得到了显著提升。

        

策略性微调(Strategic Fine-Tuning)

        策略性微调是针对大型语言模型(LLM)的一种先进训练方法,目的在于降低模型在处理不熟悉查询时产生错误响应的倾向。这种方法的核心在于教会模型在知识边界之外时表达不确定性,而不是编造信息。

  1. 数据集的选择与准备:选择或创建包含熟悉和不熟悉查询的数据集,并为后者标注“I don’t know”。

  2. 微调过程:使用这个标注过的数据集对模型进行微调,使其学习在面对不熟悉的查询时如何表达不确定性。

  3. 强化学习(RL)的应用:结合强化学习来鼓励模型在不确定时给出不确定的响应,而不是错误的响应。通过设计奖励函数,使得模型在给出不确定响应时获得正向反馈。

        首先需要构建或选择一个包含广泛查询的数据集,并对那些可能导致模型产生幻觉的查询进行明确标注。随后,在该数据集上对模型进行微调,强化其在遇到这些特定查询时识别自身知识的局限。此外,通过结合强化学习技术,模型被激励在不确定时提供不确定的响应,而不是错误的信息。这涉及到设计合适的奖励机制,以正向反馈鼓励模型的适当行为。

        效果体现在显著降低模型幻觉的同时,提升了其在面对边缘情况或少见查询时的可靠性。它的优势在于增强了模型的适应性,使其在缺乏足够信息的情况下,能够更加合理地处理查询,而不是盲目生成可能误导用户的响应。

        挑战和限制,高质量的标注数据集是成功实施微调的关键,这可能需要大量的人工工作和专业知识。强化学习技术的集成可能会增加计算资源的需求。还有,确保模型在微调后具有良好的泛化能力,能够处理未见过的数据,是另一个重要的考量点。

        策略性微调通过精心设计的训练过程和强化学习的应用,有效地提升了大型语言模型在处理不熟悉查询时的表现。这种方法不仅减少了模型产生错误信息的风险,还增强了用户对模型输出的信任度,从而在实际应用中发挥了重要作用。随着人工智能技术的不断进步,策略性微调将继续作为提高语言模型可靠性的重要手段。

 多样本上下文学习(Many-Shot In-Context Learning)

        这种方法的核心思想是利用大量的、多样化的示例来减少模型在面对不常见或新颖情况时产生幻觉的可能性。模型不是孤立地处理每一个查询,而是通过在上下文中提供大量示例来学习特定任务。这种方法使得模型能够从一系列相关的交互中学习,从而更好地捕捉语言和任务的细微差别。通过这种方式,模型能够接触到更广泛的语言使用场景,包括边缘情况和复杂查询,这有助于提高其泛化能力。

        与传统的少量样本学习(few-shot learning)相比,多样本上下文学习通过增加上下文信息的数量,显著提高了模型对复杂任务的理解和适应能力。从提供非常少(1-5)个示例的少样本上下文学习(few-shot learning)到提供很多(100-1000)个示例的多样本上下文学习(Many-Shot In-Context Learning),性能会有很大的飞跃 - 任务越难,提示中更多的示例所带来的好处就越多。

        实施多样本上下文学习的第一步是准备一个包含丰富示例的数据集。这些示例应该涵盖各种情况,包括边缘案例和复杂查询,以便模型能够学习到任务的多样性和复杂性。数据集的质量和多样性对模型性能有直接影响。

        这种策略可以提高大型语言模型对新任务和不熟悉查询的适应性。通过在训练过程中提供丰富的上下文信息,这种方法有助于减少模型的幻觉现象,提高其在各种语言使用场景下的表现。Google Deepmind的论文提到另一个有意思的发现,提示中示例的顺序也会影响多样本性能,DSPy 等优化系统如何帮助解决这个问题。DSPy是斯坦福大学出的一个开源项目,用于优化大模型Prompt和权重,后面再研究一下这个框架。

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

        检索增强生成是一种通过整合外部知识源来减少幻觉现象的方法。这种方法确保生成的响应基于从可信来源检索到的事实信息。RAG的关键步骤包括初始响应生成、多语言一致性检查和检索增强。通过这种方式,模型可以利用外部知识数据库来补充其内部知识,从而提高响应的准确性。

        检索增强生成的机制

  • 初始响应生成:模型根据其内部知识生成初始响应,通常采用链式思考(Chain-of-Thought)方法来详细说明响应背后的推理过程。

  • 多语言一致性检查:多语言检测系统评估初始响应在不同语言中的一致性。如果检测到不一致,系统将响应标记为可能的幻觉。

  • 检索增强:对于被标记为不一致的响应,检索机制从外部数据库获取相关信息,并将增强的信息整合到最终响应中,确保输出在事实上是准确的,并且得到了外部知识的充分支持。

        检索增强生成(RAG)架构在减少幻觉方面取得了显著的效果,这个已经是一个共识。

三种策略对比

1.熟悉度

FT:最适合查询非常熟悉且与训练数据相似的情况。它在模型需要根据众所周知的信息产生高度准确的响应的场景中表现出色。

ICL:非常适合中等熟悉度到不熟悉的查询。此方法在查询差异很大的场景中表现出色,包括极端情况和不太常见的示例,为模型提供了广泛的上下文供其学习。

RAG:最适合处理不熟悉的查询,其中模型可以通过访问外部信息受益匪浅,以确保响应的准确性。

2.任务的复杂性

  • FT:适用于定义明确且可在训练数据集内全面覆盖的低到中等复杂度任务。

  • ICL:适用于中高复杂度的任务。这种方法通过在大型上下文窗口内提供大量示例,使模型能够处理更细微、更复杂的查询,从而增强模型的适应和泛化能力。

  • RAG:最适合需要大量最新信息的高复杂性、开放式任务。它利用广泛的外部知识来处理复杂的查询。

3.资源可用性

  • FT:需要大量资源,包括大量标记数据集和训练计算能力。适用于拥有大量数据和计算能力的组织。

  • ICL:对资源要求适中。需要样本,但不像微调那样广泛。适用于资源可用但资源不那么丰富的场景。它可以有效利用现有示例来增强模型性能。

  • RAG:对标记数据的要求相对较低,但需要访问强大而全面的外部数据库。适用于标记数据稀缺但可以访问知识库的情况。

    4.期望响应精度

  • FT:确保在训练数据范围内响应的准确性较高。非常适合精度至关重要且查询在已知域内的应用。

  • ICL:能够提供较高的准确率,通过利用大量示例,在处理多样化和不熟悉的查询时,其表现通常优于 FT。该方法在准确性和适应性之间取得平衡,使其适用于动态环境。

  • RAG:通过使用外部知识验证响应来提供高精度。最适合事实正确性至关重要的场景,尤其是在处理新颖或鲜为人知的信息时。

    5.时间限制

  • FT:由于数据准备和训练需要时间,因此最适合长期项目。不适合快速部署需求。

  • ICL:适用于中期项目。比微调更快,但仍需要时间来收集和整合相关示例。它提供了一种比 FT 更快的替代方案,并且具有提高各种查询性能的优势。

  • RAG:最适合短期需求。通过动态检索相关信息提供实时增强,使其成为快速部署和即时响应场景的理想选择。

总结
这三种方法的结合,显著提升了LLM在处理不熟悉查询时的准确性和可靠性,减少了幻觉现象,增强了模型的整体性能和用户信任度。随着人工智能技术的不断进步,这些策略有望进一步发展和完善,为提高语言模型的可靠性提供关键支持。

 

相关文章:

探索AI大模型(LLM)减少幻觉的三种策略

大型语言模型(LLM)在生成文本方面具有令人瞩目的能力,但在面对陌生概念和查询时,它们有时会输出看似合理却实际错误的信息,这种现象被称为“幻觉”。近期的研究发现,通过策略性微调和情境学习、检索增强等方…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十三章 Linux连接档

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...

鸿蒙语言基础类库:【@ohos.uri (URI字符串解析)】

URI字符串解析 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入…...

JavaScript---new Map()用法

new Map 创建 Map 对象设置键值对获取值检查键是否存在键值对数量删除键值对清空所有键值对迭代 Map 在JavaScript中,Map 是一个构造函数,用于创建 Map 对象,它可以存储键值对集合。与普通的对象不同,Map 的键可以是任何类型的值&…...

【数据基础】— 基于Go1.19的站点模板爬虫的实现

目录 1. 定义目标站点 2. 使用Go的库 3. 发送HTTP请求 4. 解析HTML并提取数据 5. 存储数据 6. 并发处理 示例代码 基于Go 1.19的站点模板爬虫实现通常涉及几个关键步骤:定义目标站点、解析HTML页面、提取所需数据、存储数据以及可能的并发处理。下面我将详细…...

Angular进阶之九: JS code coverage是如何运作的

环境准备 需要用到的包 node 18.16.0# Javascript 代码编辑"babel/core": "^7.24.7","babel/preset-env": "^7.24.7","babel-loader": "^9.1.3",# 打包时使用的 module, 给代码中注入新的方法# http…...

el-table 鼠标移入更改悬停背景颜色

鼠标悬停时需要更改当前行背景颜色,一开始写的颜色会改变,但是一闪而过就没了 这是因为移入移出的动画效果导致的 .el-table__body {.el-table__row:hover {background-color: pink !important;}} 更改为后面的代码,就可以了 .el-table__…...

【《无主之地3》风格角色渲染在Unity URP下的实现_角色渲染(第四篇) 】

文章目录 概要描边问题外秒变分叉解决办法1:测试效果如下:外秒变分叉解决办法2:URP管线下PBR渲染源码关键词解释:完整shader代码如下:URP管线下二次元皮肤渲染源码URP管线下二次元头发渲染源码简要介绍文章的目的、主要内容和读者将获得的知识。 概要 提示:《无主之地3》…...

【linux服务器篇】-Redis-RDM远程连接redis

redis desktop manager 使用远程连接工具RDM连接redis 市面上比较常见的其中一款工具redis desktop manager 简单的说: Redis Desktop Manager 简单的来讲就是Redis可视化工具,可以让我们看到Redis中存储的内容。 redis desktop manager是一款功能强…...

【pytorch15】链式法则

x到u再到y,可以理解为x是输入,中间层hidden layer 是u,最后y是pred 对于一个简单的线性层可以展开得到y的表达式,但是对于实际的神经网络还要加上激活函数,此时展开就非常的复杂,不能够一次到位&#xff0c…...

C#用链表和数组分别实现堆栈

1.链表 实现栈的四个基本功能 入栈 出栈 长度 栈顶值 public class 基础 : MonoBehaviour {public class MyStack{//定义每一个元素的数据结构 //下一个元素 和 该元素的值public class StackData{public StackData next;public object data;public StackData(StackData next,…...

【AI原理解析】—强化学习(RL)原理

目录 一、基本原理 二、基本框架与要素 三、学习过程 四、关键概念 五、算法实现 六、应用领域 七、总结 强化学习(Reinforcement Learning, RL) 一、基本原理 强化学习的基本原理是基于“试错学习”(trial-and-error learning&…...

java解析请求的字符串参数Content-Disposition: form-data;和拼接的键值对

项目场景: 获取到http请求的参数,已经被字符串接收了,需求是需要从字符串中解析出来。 一种情况是:Content-Disposition: form-data; name"userCode" 另一种是:key1value1&key2value2&key3value3…...

活动回顾|2024 MongoDB Developer Day圆满收官!

上周六,MongoDB专家与团队在深圳 与90位开发者度过了充实一日 至此,2024 MongoDB Developer Day 北上深三站之行全部圆满结束! 一文回顾本次活动全程与精彩影像! MongoDB Developer Day 专为开发者定制的技术盛宴 全天沉浸动手实…...

MySQL资源组的使用方法

MySQL支持创建和管理资源组,并允许将服务器内运行的线程分配给特定的组,以便线程根据组可用的资源执行。组属性允许控制其资源,以启用或限制组中线程的资源消耗。DBA可以针对不同的工作负载适当地修改这些属性。 目前,CPU时间是一…...

python--实验7 函数(1)

知识点 函数的定义与调用 函数分类:内置函数和自定义函数。函数定义:使用def关键字定义函数,包括函数名、参数列表和函数体。注意: (1)即使该函数不需要接收任何参数,也必须保留一对空的圆括号…...

【力扣】数组中的第K个最大元素

一、题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,…...

WTM的项目中EFCore如何适配人大金仓数据库

一、WTM是什么 WalkingTec.Mvvm框架(简称WTM)最早开发与2013年,基于Asp.net MVC3 和 最早的Entity Framework, 当初主要是为了解决公司内部开发效率低,代码风格不统一的问题。2017年9月,将代码移植到了.Net Core上&…...

互联网3.0时代的变革者:华贝甄选大模型创新之道

在当今竞争激烈的商业世界中,华贝甄选犹如一颗璀璨的明星,闪耀着独特的光芒。 华贝甄选始终将技术创新与研发视为发展的核心驱动力。拥有先进的研发团队和一流设施,积极探索人工智能、大数据、区块链等前沿技术,为用户提供高性能…...

Tomcat的安全配置

1、生产环境优化 2、部分漏洞修复 转载自风险评估:Tomcat的安全配置,Tomcat安全基线检查加固-CSDN博客...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Java 二维码

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

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...