减轻幻觉新SOTA,7B模型自迭代训练效果超越GPT-4,上海AI lab发布
LLMs在回答各种复杂问题时,有时会“胡言乱语”,产生所谓的幻觉。解决这一问题的初始步骤就是创建高质量幻觉数据集训练模型以帮助检测、缓解幻觉。
但现有的幻觉标注数据集,因为领域窄、数量少,加上制作成本高、标注人员水平不一,所以很难变得强大。
为了解决这个问题,上海AI lab设计了一个迭代自训练框架——ANAH-v2,它像滚雪球一样,一边扩大幻觉检测的数据集,一边提高标注者的准确性。
这个框架利用期望最大化算法,每次循环都会先用现有的幻觉标注工具给新数据打上“幻觉”标签,然后用这些新数据训练一个更厉害的标注工具。
通过迭代,检测工具越来越强,数据集也越来越大。一个仅有7B参数的幻觉标注模型(89.55%)超越了GPT-4的表现(86.97%),并且在幻觉检测基准HaluEval和HalluQA上获得了新的SOTA!
论文标题:
ANAH-v2: Scaling Analytical Hallucination Annotation of Large Language Models
论文链接:
https://arxiv.org/pdf/2407.04693
方法
1. 善于分析的幻觉标注器
幻觉标注器的目标是识别模型响应中的幻觉,在本文中该过程分为三个阶段,更贴近人类认知判断过程:
-
事实存在判断:标注器评估提供的句子是否包含可验证的事实。如果没有事实内容,该句子被归类为“无事实”,无需进一步标注。
-
参考信息提取:标注器从与问题和答案相关的文档中提取相关参考点。
-
幻觉类型判断:标注器根据提取的参考点确定幻觉类型。如果句子与参考点一致,则分类为“无幻觉”。如果与参考点矛盾,则视为“矛盾幻觉”。如果缺乏支持证据且无法验证,则标记为“不可验证幻觉”。
以上三个阶段将在训练数据中形成多轮对话,用于后续模型训练。
2. 最大期望(EM)算法
本文通过最大期望算法同时扩展数据集和提高标注准确性。对于输入集合,需要同时估计两个隐藏变量,即输出集合和模型参数。具体而言,定义幻觉标注器的输入来自输入集合,包括一个问题、一个待标注的句子和一个参考文档。预期输出包括事实信息、参考文档中的关键参考点和幻觉类型。通过交替执行步和步来最大化的对数似然估计以更新模型参数:
E步:为了提高的估计准确性和稳定性,作者引入了自一致性方法,这提供了分布的更稳健表示。对于每个输入,进行多次采样以产生个独立的输出,其中第个输出样本由事实信息()、参考点()和幻觉类型()组成。使用自一致性度量从所有输出中选择最具代表性的样本:
在选择过程中,依次考虑幻觉类型、参考点和事实信息。通过对所有样本进行多数投票来确定最常见的幻觉类型,记为。然后,从包含的输出中获取相应的,形成候选参考集合。通过比较余弦相似性选择最“一致”的参考点。对于中的每个,首先计算它与中其他元素的平均余弦相似性。之后,选择平均余弦相似性最高的参考点:。最后,利用(, ),可以唯一地选择相应的。
M步:在E步的稳健估计之后,M步更新模型参数以最大化所选输出的似然。在第次迭代中将参数更新策略公式化为:
3. 多维数据缩放
基于EM算法,本文框架以迭代方式运行,逐步扩展数据集,包括三个阶段:
阶段1:种子数据和基础标注器本文利用ANAH数据集作为种子数据,其中包含超过700个主题和大约4300个由LLM生成的问题和回答。对于每个回答,ANAH通过人工参与的方法为每个句子提供幻觉类型。本文使用第一节中描述的标注方法,用这些种子数据训练初始幻觉标注器,称为ANAH-v2阶段1。
阶段2:在回答维度上扩展在阶段1中,对于每个问题,ANAH提供GPT-3.5基于参考文档生成的回答,以及InternLM-7B在没有参考文档的情况下生成回答。
本文首先通过收集13个不同规模和系列的开源模型对相同问题的回答来扩展数据集的模型回答。对于每个模型,收集有无参考文档的回答。在过滤掉相似的模型回答后,这些回答使用ANAH-v2阶段1的自一致性pipeline逐句进行标注。新标注的数据与种子数据结合,用于训练ANAH-v2阶段2。
阶段3:在主题维度上扩展本文沿四个类别扩展主题覆盖:地点、人物、事件和事物,与ANAH的配置平行。对于每个主题,根据提供的参考文档生成几个问题。然后,使用阶段2中的相同方法,收集多个模型的回答,并按照阶段2中使用ANAH-v2阶段2标注器的相同程序进行标注。最终数据集结合前几个阶段的数据,用于训练最终版本的标注器。
总体统计
最终数据集涵盖超过3000个主题,约196k个模型回答和约822k个标注句子,包含英文和中文。
主题覆盖名人、事件、地点和事物,涉及广泛领域,如政治、健康和体育。该数据集规模庞大,覆盖全面。
实验与分析
本文采用了预训练的InternLM2-7B模型来对幻觉标注器进行微调,使用ANAH数据集的子集作为测试集。利用F1和准确率评估标注器在预测幻觉类型方面的性能,还使用RougeL和BertScore 来将生成的文本与人类参考文本进行比较,以考虑语法、连续性、顺序和语义方面。实验结果如下表:
上表的最后三行展示了ANAH-v2在数据扩展各阶段的性能。随着数据集数量的增加,其性能逐步提高。这一趋势突显了幻觉标注框架的可扩展性和有效性。
值得注意的是,ANAH-v2在第二阶段的F1值达到87.78%,准确率达到88.03%,超越了GPT-4。最终,在第三阶段,我们达到了89.30%的F1值和89.55%的准确率。
除此之外,ANAH-v2在第一阶段的准确率(84.85%)已超过参数为20B的ANAH-20B(81.01%),而其参数仅为7B。这种优越性能归功于前文提到的善于分析的幻觉标注器的设计,得到了非常丰富的多轮对话。
消融实验
自一致性的影响
当标注器模型在各个数据扩展阶段使用相同的训练数据时,如下表所示,采用自一致性推理策略(w/ SC)的性能始终优于不采用自一致性策略(w/o SC),即对每个输入只生成一次。因此,自一致性方法提高了幻觉标注估计的准确性和稳定性。
渐进数据缩放的影响
在渐进方法中,第二阶段更新的标注器用于标注额外主题的响应,不断丰富训练数据。相比之下,在非渐进方法中,第一阶段的基本标注器用于生成第三阶段额外训练数据的标注。
在相同规模的训练数据下,使用非渐进数据扩展训练的标注器性能不如使用渐进数据扩展训练的标注器。
训练策略的影响
在默认训练过程中,将新标注的数据与旧数据混合以重新训练标注器。或者仅使用新标注的数据来进一步训练上一阶段的标注器模型。
结果表明,混合训练数据的训练策略比仅用新数据进一步训练效果更好。在各个训练阶段整合不同质量的数据提高了标注器模型的鲁棒性。
评估ANAH-v2模型在幻觉检测能力的泛化性
本文进一步验证了微调模型ANAH-v2在其他幻觉检测数据集HaluEval(英文)和HalluQA(中文)上的有效性。让ANAH-v2分别判断回答中是否包含幻觉。
结果显示,标注模型ANAH-v2在HaluEval和HalluQA上均取得了显著的准确率。ANAH-v2第三阶段在zero-shot设置下分别在HaluEval(81.54%)和HalluQA(94.44%)上取得了新的SOTA,这突显了ANAH-v2的泛化能力。此外,ANAH-v2第三阶段的表现优于第一阶段和第二阶段的标注器,这进一步证明了数据扩展策略在处理不熟悉回答时有效地稳定了性能。
ANAH-v2数据集可作为幻觉评估基准
ANAH-v2数据集和标注器可以作为现有模型生成文本中幻觉水平的基准。作者评估了各种不同规模的LLMs在ANAH-v2数据集的上性能。
-
所有模型在英文中的表现优于中文,这突显了需要进一步研究以理解和减少语言依赖的差异。
-
所有模型在使用参考文档时的性能都优于不使用参考文档时的性能。Qwen1.5-14B在使用参考文档时实现了最低的幻觉率(5.33%),而Deepseek-67B在没有提供参考文档时实现了最低的幻觉率(47.17%)。
ANAH-v2标注器可用于缓解幻觉
除了用于测量幻觉水平外,ANAH-v2还可以用于缓解幻觉。本文使用了两个模型InternLM2-7B和LLaMA2-7B,通过top-k采样(k=40)生成36个候选响应,然后使用ANAH-v2标注器对这些响应进行重新排序,选择具有最低幻觉率的最佳响应。
为了量化幻觉程度,使用了RougeL、BertScore、NLI和QuestionEval指标测量生成的响应与标准答案和/或参考文档之间的一致性。
结果显示,通过ANAH-v2标注器进行重新排序后,幻觉水平明显下降。LLaMA2-7B的NLI指标显著提高,从25.00%上升到37.01%。
结语
本文通过迭代自我训练,逐步扩大数据集的多样性和规模,并提高幻觉标注器的准确性。最终得到的ANAH-v2仅用7B参数在各种幻觉检测基准测试中首次超过了GPT-4,并在第三方幻觉检测基准测试中表现出色。
ANAH-v2不仅提供了一个基于的扩展数据集的自动幻觉评估基准,为未来幻觉缓解研究铺平了道路,还通过简单的重新排序策略展示了其在幻觉缓解中的潜力。相信ANAH-v2还可以为更细粒度的RLHF等更多幻觉缓解策略提供帮助。
相关文章:

减轻幻觉新SOTA,7B模型自迭代训练效果超越GPT-4,上海AI lab发布
LLMs在回答各种复杂问题时,有时会“胡言乱语”,产生所谓的幻觉。解决这一问题的初始步骤就是创建高质量幻觉数据集训练模型以帮助检测、缓解幻觉。 但现有的幻觉标注数据集,因为领域窄、数量少,加上制作成本高、标注人员水平不一…...

53.最大子数组和,动态规划+贪心解法!!!
力扣53最大子数组和 题目动态规划贪心 题目 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例 1: 输入:nums…...

python+vue3+onlyoffice在线文档系统实战20240723笔记,项目界面设计和初步开发
经过之前的学习,已经能够正常打开文档了。 目前为止,我们的代码能够实现: 打开文档编辑文档手动保存自动保存虽然功能依然比较少,但是我们已经基本实现了文档管理最核心的功能,而且我们有个非常大的优势,就是支持多人同时在线协同编辑。 现在我们要开发项目,我们得做基…...

谷粒商城实战笔记-72-商品服务-API-属性分组-获取分类属性分组
文章目录 一,后端接口开发Controller层修改接口接口测试 二,前端开发 这一节的内容是开发获取分类属性分组的接口。 一,后端接口开发 Controller层修改接口 修改AttrGroupController接口。 RequestMapping("/list/{catelogId}")p…...

Vue 自定义指令
文章目录 注册局部注册全局注册 钩子钩子参数应用1、按钮权限验证2、自定义用户行为收集指令3、按钮点击防抖4、输入框自动获取焦点5、输入框自动去空字符串6、文字展示不下时展示提示框 注册 局部注册 export default {setup() {/*...*/},directives: {// 在模板中启用 v-fo…...

【python】python图书管理系统_普通用户+管理员菜单(源码+论文)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...

智能路面裂缝检测:基于YOLO和深度学习的全流程实现
引言 路面裂缝检测是维护道路质量和延长道路寿命的重要手段。传统的检测方法往往费时费力且易受人为因素影响。为了提高检测效率和准确性,本文介绍了一种基于深度学习的路面裂缝检测系统。该系统包括用户界面,利用YOLO(You Only Look Once&a…...
C++ unordered_map
1. unordered系列关联式容器 在C98 中, STL 提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,…...

PHP Switch 语句
PHP 中的 switch 语句是一种多路分支语句,它允许一个变量的值对多个代码块进行选择执行。这通常比使用多个 if...elseif...else 语句更清晰、更易于维护。下面将详细介绍 PHP 中 switch 语句的使用方法。 基本语法 switch (n) {case label1:// 如果 n label1&…...

electron 网页TodoList应用打包win桌面软件数据持久化
参考: electron 网页TodoList工具打包成win桌面应用exe https://blog.csdn.net/weixin_42357472/article/details/140648621 electron直接打包exe应用,打开网页上面添加的task在重启后为空,历史没有被保存,需要持久化工具保存之前…...

软件缺陷(Bug)、禅道
目录 软件缺陷的判定标准 软件缺陷的核心内容 构成缺陷的基本要素 缺陷报告 缺陷管理 缺陷的跟踪流程 项目管理工具--禅道 软件在使用过程中存在的任何问题(如:错误、异常等),都叫软件的缺陷,简称bug。 软件缺…...

MySQL客户端命令一节将.sql文件导入MySQL
MySql客户端命令 直接输入SQL语句 使用MySQL客户端连接到服务器之后,可以发送SQL语句到服务器执行,并且以;和\g, \G作为结束不同的结束方式显示内容有所不同** TIPS: ;和\g结尾以表格的形式显示结果\G以行的形式显示结果 在连接到服务器之后…...

[论文笔记] DCA(Dual Chunk Attention)
DCA(Dual Chunk Attention)是一种在自然语言处理模型中用来处理长文本的技术。传统的注意力机制(Attention)在处理长文本时可能会遇到效率和性能瓶颈,因为计算每个单词与其他所有单词之间的关系会随着文本长度的增加而…...

构建查询洞察 UI
本文字数:2631;估计阅读时间:7 分钟 作者:Bucky Schwarz 本文在公众号【ClickHouseInc】首发 我们最近发布了 Query Insights 的初步实现,为 ClickHouse Cloud 用户提供了一种便捷的方法来查看和解释查询日志。该功能对…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十九章 等待队列
i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...

35.【C语言】详解函数递归
目录: 定义 作用 例子1~3 拓展学习 趣味练习 1.定义:函数自己调用自己(递推回归) int main() {main()return 0; } 这样容易死循环,导致爆栈(Stack Overflow) 所以需要设立限制条件,使执行时越来越接近条…...

【机器学习】智驭未来:机器学习如何重塑制造业的转型与升级
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 🔍1. 引言📒2. 机器学习重塑制造业生产流程🌸预测性维护:减少停机时间,提高设…...

Python爬虫(5) --爬取网页视频
文章目录 爬虫爬取视频指定url发送请求UA伪装请求页面 获取想要的数据解析定位定位音视频位置 存放视频完整代码实现总结 爬虫 Python 爬虫是一种自动化工具,用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持(如 requ…...

【Unity】关于Luban的简单使用
最近看了下Luban导出Excel数据的方式,来记录下 【Unity】关于Luban的简单使用 安装Luban开始使用UnityLubanC# 扩展 安装Luban Luban文档:https://luban.doc.code-philosophy.com/docs/beginner/quickstart 1.安装dotnet sdk 8.0或更高版本sdk 2.githu…...

企业公户验证API如何使用JAVA、Python、PHP语言进行应用
在纷繁复杂的金融与商业领域,确保每笔交易的安全与合规是至关重要的。而企业公户验证API,正是这样一位默默守护的数字卫士,它通过智能化的手段,简化了企业对公账户验证流程,让繁琐的审核变得快捷且可靠。 什么是企业公…...

杰发科技Bootloader(2)—— 基于7840的Keil配置地址
序 在7840的sample代码里面有一个简单的Boot跳转APP的示例 PFlash地址从0开始 DFlash的地址从1000000开始 Boot解析 他的boot地址配置为0 Boot的代码主要是这几行,主要作用就是Flash的跳转 int main(void) {SystemClock_Config();InitDebug();printf("demo…...

cmd常用命令
在Windows操作系统中,CMD(Command Prompt)是一个强大的命令行工具,允许用户通过键入命令来执行各种系统级操作。以下是一些常用的CMD命令及其功能: 文件与目录管理 dir:显示当前目录下的文件和子目录列表。…...

PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘
1,下载 RTL8125B driver 下载页: https://www.realtek.com/Download/List?cate_id584 2,RTL8125B datasheet下载 下载页: https://file.elecfans.com/web2/M00/44/D8/poYBAGKHVriAHnfWADAT6T6hjVk715.pdf3, 编译driver 解压: $ tar xj…...

Python tkinter Menu菜单组件详解
好久没有更新了,今天我来领大家熟悉一下Menu组件 1.认识、了解Menu 什么是Menu menu组件是tkinter中的菜单组件,通过该组件,开发者可以为窗口设计菜单和工具栏等。(ttk还提供了treeview树形菜单,python遍历目录的两种…...

谷粒商城实战笔记-46-商品服务-API-三级分类-配置网关路由与路径重写
文章目录 一,准备工作1,新增一级菜单2,新增二级菜单 二,前端树形界面开发1,开发分类展示组件 三,远程调用接口获取商品分类数据1,远程调用2,路由配置 错误记录 本节的主要内容&#…...

简要了解sql注入
sql注入安全测试中危害 数据库中的数据,对数据库数据进行操作(查询、删除等);网站的权限,找到注入点后可后门写入; sql注入产生原理详细分析 可控变量,带入数据库查询,变量未存在…...

Java 扫雷游戏
程序分析 使用Java编写的扫雷游戏界面程序,主要内容总结如下: Frame类继承自JFrame,构建了扫雷游戏的界面。 包含文本框text、标签nowBomb和setBomb、按钮start、面板MenuPamel和bombPanel等组件。通过jbInit方法进行初始化设置,…...

vue3 命令运行窗口暴露网络地址,以及修改端口号
一般情况下这里的地址是隐藏的 这里加上 --host 可以暴露网络地址,再加上--port --8080 就可以将端口号修改为8080(修改后边的数字就可以修改为你想要的端口号)...

由CANoe自带协议栈在TCP断开连接时同时发送两条FIN报文引起的注意事项
在我写这篇文章CAPL如何在底层模拟TCP Server端断开TCP连接时,我发现了一个奇怪的现象。我为了使用CAPL组装报文的方式实现TCP Server断开连接的过程,插入一个网络节点作为Client端。为了让Client能够发起连接和发起断开连接,给网络节点配置了独立的TCP/IP Stack,也就是CAN…...

FastGPT部署和接入使用重排模型bce-reranker-base
bce-reranker简介 bce-reranker 是一种专门用于信息检索和自然语言处理领域中的重排序(reranking)模型。这种模型由北京智源人工智能研究院(BAAI)开发,是 BGE(BAAI General Embedding)系列的一部分。BGE 系列模型专注于提供通用的嵌入表示,而 bce-reranker 则更进一步…...