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

LLM应用开发(九)- 幻觉及如何缓解

1.幻觉的定义

1.1.事实性幻觉

指模型生成的内容与可验证的现实事实不一致。比如提问“第一个在月球上行走的人是谁?",模型回复"CharlesLindbergh在1951年月球先驱任务中第一个登上月球",而实际上,第一个登上月球的人是Nei Armstrong。而事实性幻觉又分为事实不一致(与现实世界信息相矛盾)和事实捏造(压根没有,无法根据现实信息验证)。

1.2.忠实性幻觉

指模型生成的内容与用户的指令或上下文不一致。比如让模型总结今年10月的新闻,结果模型却在说2006年10月的事。忠实性幻觉也可以细分,分为指令不一致(输出偏离用户指令)、上下文不一致(输出与上下文信息不符)、逻辑不一致(推理步骡以及与最终答案之间不一致)三类,

 2.产生幻觉原因

2.1.数据源导致的幻觉

首先病从口入,大模型的粮食数据,是致使它产生幻觉的一大原因。这里面就包括 数据缺陷和数据中捕获的事实知识的利用率低。具体来说,数据缺陷分为错误信息和偏见(重复偏见、社会偏见),此外大模型也存在知识边界,所以存在领域知识缺陷和过时的事实知识。即便大模型吃掉了大量的数据,也会在利用时出现问题。
除此之外,大模型可能会过度依赖训练数据中的一些模式,如位置接近性、共现统计数据和相关文档计数,从而导致幻觉,比如:如果训练数据中频繁出现“加拿大”和“多伦多”,那么大模型可能会错误地将多伦多识别为加拿大的首都。

2.2.训练过程导致的幻觉

在模型的预训练阶段(大模型学习通用表示并获取世界知识)、对齐阶段(微调大模型使其更好地与人类偏好一致)两个阶段产生的问题也会导致幻觉的发生。

预训练阶段:

架构缺陷:基于前一个token 预测下一个token,这种单向建模阻碍了模型捕获复杂的上下文关系的能力;自注意力模块存在缺陷随着 token 长度增加,不同位置的注意力被稀释。

暴露偏差:训练策路也有缺陷,模型推理时依赖于自己生成的token 进行后续预测,模型生成的错误 token 会在整个后续 token 中产生级联错误。

对齐阶段:

能力错位:大模型内在能力与标注数据中描述的功能之间可能存在错位。当对齐数据需求超出这些预定义的能力边界时,大模型会被训练来生成超出其自身知识边界的内容,从而放大幻觉的风险。

信念错位:基于 RLHF 等的微调,使大模型的输出更符合人类偏好,但有时模型会倾向于迎合人类偏好,从而牺牲信息真实性。

2.3.推理导致的幻觉

1.固有的抽样随机性:在生成内容时根据概率随机生成。

2.不完美的解码表示:上下文关注不足,(过度关注相邻文本而忽视了源上下文)和 softmax 瓶颈(输出概率分布的表达能力受限)

3.幻觉评估检测

3.1.不确定性检测评估方法

1.基于内部状态的方法主要依赖于大模型的内部状态。例如,通过考虑关键概念的最小标记概率来确定模型的不确定性。

2.基于行为的方法主要依赖观察大模型的行为,不需要访问其内部状态。例如,通过采样多个大语言模型响应并评估事实陈述的一致性来检测幻觉。

3.2.忠实性检测评估方法

基于事实的度量:测量生成内容和源内容之间事实的重叠程度来评估忠实性。

分类器度量:使用训练过的分类器来区分模型生成的忠实内容和幻觉内容。

问答度量:使用问答系统来验证源内容和生成内容之间的信息一致性。

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

提示度量:让大模型作为评估者,通过特定的提示策略来评估生成内容的忠实性。

4.幻觉的缓解方案

4.1.缓解数据相关幻觉(重点)

减少错误信息和偏见,最直观的方法是收集高质量的事实数据,并进行数据清理以消除偏见。对于大语言模型知识边界的问题,有两种流行方法。一种是知识编辑,直接编辑模型参数弥合知识差距。另一种通过检索增强生成(RAG)利用非参数知识源。

检索增强生成具体分为三种类型:一次性检索、迭代检索和事后检索。

4.2.缓解预训练幻觉

4.3.缓解对齐幻觉

4.4.缓解推理幻觉

http://www.xdnf.cn/news/12030.html

相关文章:

  • Authentication failed(切换了新的远程仓库tld)
  • 区块链技术发展现状与应用前景分析
  • Rocket客户端消息确认机制
  • JAVA:String类详解
  • 华为云Flexus+DeepSeek征文|Flexus云服务器单机部署+CCE容器高可用部署快速搭建生产级的生成式AI应用
  • (LeetCode 每日一题)3403. 从盒子中找出字典序最大的字符串 I (贪心+枚举)
  • 12.3Swing控件1
  • Java并发编程实战 Day 7:并发集合类详解
  • Docker轻松搭建Neo4j+APOC环境
  • 《PyTorch Hub:解锁深度学习模型的百宝箱》
  • 物流数据接口新玩法:跨境订单处理效率提升200%
  • echarts显示/隐藏标签的同时,始终显示饼图中间文字
  • 简数采集技巧之快速获取特殊链接网址URL方法
  • Playwright 测试框架 - Python
  • 软件工程专业的本科生应该具备哪些技能
  • 【Bluedroid】蓝牙启动之gatt_init 流程源码解析
  • DrissionPage爬虫包实战分享
  • 汽车加气站操作工证考试重点
  • 文献阅读|基于PSMA PET/CT与mpMRI多模态深度学习预测前列腺癌的不良病变
  • Spring AI 之工具调用
  • cpp多线程学习
  • 无人机光纤FC接口模块技术分析
  • [华为eNSP] 在eNSP上实现IPv4地址以及IPv4静态路由的配置
  • 融智学的数学基础,通过微分几何的纤维丛结构,构建理论框架模型包含生物层、动物层、心智层、人造物层和人格层五个维度
  • C++算法训练营 Day7 哈希表及双指针
  • 聊聊FlaUI:让Windows UI自动化测试优雅起飞!
  • Deepin 安装 Nginx
  • (eNSP)配置WDS手拉手业务
  • .NET 生态中的 MCP 项目及技术分析
  • 那些Java 线程中断的实现方式