COTERRORSET—— LLM训练新基准让模型从自身错误中学习

概述

论文地址:https://arxiv.org/pdf/2403.20046.pdf
在最近的研究中,大规模语言模型因其推理能力而备受关注。这些模型在各种任务和应用中取得了令人瞩目的成果,尤其是使用思维链(CoT)提示方法的有效性已得到证实。这种方法以人类逻辑思维为模型,采用循序渐进的方式解决问题。

正如人类从过去的错误中学习一样,大规模语言模型也必须回顾过去并从错误中学习。然而,迄今为止,关于大规模语言模型如何从错误中学习的研究还很少。因此,本文将重点关注这一方面,并研究新的学习方法。

该研究建立了一个大型数据集 COTERRORSET,其中包含来自 1,060 个不同任务的 609,432 个问题。每个问题都建立在从 PaLM2 回答中收集到的人工策划的正确参考和错误理由之上。此外,用正确的参考答案和错误的答案来提示大规模语言模型,可以反映出犯错误的原因。这为分析大规模语言模型如何犯错提供了依据。此外,它还引入了两种新方法–"错误调整 "和 “自我反思”–来利用这些错误,提高大规模语言模型的能力。为了促进大规模语言模型的学习过程,它在相应的理由前加上了[CORRECTRATIONALE] 和 [INCORRECT RATIONALE] 前缀。这超越了传统的监督学习,提出了更好地利用错误的方法。

本文提出的方法有助于大规模语言模型区分正确和错误的证据,并通过对比样本的实验进一步深化其学习过程。这样,模型就能在初步回答后重新考虑并修正自己的答案。该方法还对模型"自我反思 "和"调整 "的次数设置了阈值,以管理计算资源并防止潜在的循环。

下图为管道概览。

此外,为了更深入地了解这些模型如何从错误中学习以及它们的学习能力,我们使用各种推理任务和不同规模的大型语言模型进行了实验,结果表明这些模型的性能得到了持续改善。该方法能在大规模语言模型的调整和推理阶段有效利用错误,表明其具有广泛的适用性和有效性。这进一步扩展了大规模语言模型的可用性和有效性,值得进一步研究。

COTERRORSET 概览

本文构建了一个名为 "COTERRORSET "的新基准,以研究虚假理由对大规模语言模型推理性能的影响。该数据集以 COTCOLLECTION(Kim 等人,2023 年)为基础,涵盖了多种问题领域(多选问答、提取问答、闭卷问答、形式逻辑、自然语言推理和算术推理)。

本数据集中的问题和参考资料来自多个现有数据集,包括

  • QASC(Khot 等人,2020 年)。
  • AQuA(Ling 等人,2017 年)。
  • GSM8K (Cobbe 等人,2021 年)
  • QED(Lamm 等人,2021 年)。
  • StrategyQA(Geva 等人,2021 年)。
  • SenseMaking (Wang et al., 2019)。
  • CREAK(Onoe 等人,2021 年)。
  • eSNLI(Camburu 等人,2018 年)。
  • ECQA(Aggarwal 等人,2021 年)。

这些数据经过系统整理,每个任务都包含一个演示,显示正确答案和错误答案,以及错误发生的原因。这些错误和演示都是使用 PaLM2 生成的。

与传统的 CoT 数据集不同,COTERRORSET 利用 PaLM2 收集错误及其背后的原因。对于数据集中的每个问题,PaLM2 都用来收集特别错误的证据,并将其与正确答案一起提供,以详细反映模型是如何犯错的。下图概述了这一过程。

系统地收集错误证据有可能为今后从新的角度改进工作铺平道路。具体例子见下表。

此外,对 COTERRORSET 数据集的详细分析显示,其中包含的误差类型非常复杂多样。这种复杂性给改进模型带来了挑战。为了解决这个问题,我们引入了一种无监督聚类方法,利用大规模语言模型,如下图所示。

通过这种方法,可以将不同的错误类型划分为更多的类别。首先,识别并提取造成错误的关键词。然后将这些关键词输入大规模语言模型,促使其形成涵盖整个错误的一般类别。自动聚类过程结束后,每个聚类都要经过人工检查,并根据需要进行调整,以完善匹配结果。最终,错误类型被合并为若干抽象类别,如算术推理中的 “计算错误”、"数字错误 "和 “逻辑错误”,以及常识推理中的 “逻辑错误”、“常识错误”、"语言错误 "和 “语境错误”。下表对此进行了概述。

实验结果

与标准的"思维链"(CoT)方法相比,"自我反思"在提高 GPT-4 和 PaLM2 模型的成绩方面效果显著。下表显示了使用这种方法时 PaLM2 的成绩。

下表还将其与 GPT4 的成绩进行了比较。其中,使用"自我反思"时的改进尤为突出,表明这是提高 GPT-4 性能的有效方法。

与 "自洽 "不同的是,这种方法在实现高准确度的同时,将推理次数降至最低。具体来说,它对一个问题进行两到三次推理,如果发现错误,则利用错误推导出最终答案。与 "自我一致性 "相比,这种方法能以更少的计算资源更有效地解决问题。

尤其是 GSM8K、AQuA、MathQA 和 LogiQA 这几个数据集,在计算成本相同的情况下,显示出比"自洽"更优越的结果。然而,专门针对基于运算的算术问题的 MathQA 数据集的结果并没有超过 “自我推导”,但却优于 CoT。这表明"自洽"对于某些问题类型,尤其是复杂的数学问题是有效的。

为了说明 "自我反思 "的有效性,下表显示了使用 PaLM2 模型对四项任务(GSM8K、AQuA、MathQA 和 LogiQA)进行 8 次实验的结果。

这一过程包括收集 PaLM2 生成的错误证据,并将这些证据用作学习和反思的示范。结果证实,"自我反思 "与标准的 8 发 CoT 相比具有明显优势。这种方法对于提高需要解决复杂问题的少量学习场景的准确性尤为有效。

本研究也使用了 “自我反思”,但与 "自我反思 "不同的是,它没有使用以前的错误样本。尽管如此,在大多数数据集上,"自我反思 "的效果明显优于 “自我提炼”。特别是在算术推理(MathQA)数据集上,"自我反思"的性能有所提高,但在常识推理(LogiQA)数据集上,"自我反思 "的性能则有所下降。与此相反,"自我反思 "在一系列领域中的表现始终优于 “8-shot CoT”,这表明将以前的错误纳入反思和阐述过程具有稳定作用。

一般来说,"自我反思 "使模型能够识别固定的逻辑模式,并从错误中学习,尤其是在要求逻辑严谨的情况下。这在需要较强逻辑性且容易出现小错误的任务中尤其有用。此外,该方法还有助于识别和纠正低级错误和误解,这些错误和误解属于模型的潜能范围,但往往被忽视。这种能力已被证明是提高大规模语言模型答案准确性和可靠性的重要工具,尤其是在解决复杂问题时。

下表列出了 "错误调整 "的进一步结果。该表强调了 Flan-T5 模型结合错误和正确证据的影响,并显示了不同模型规模下的性能。

其中,Flan-T5-large(780M)在 MathQA 领域的准确率为 48.95%,超过了 PaLM2 的 41.37%,证明了这种方法的有效性。这一结果提供了一个重要指示,即大规模语言模型可以通过利用不正确的推理来提高问题解决和推理性能。此外,该方法不仅增强了对正确 CoTs 的理解,还扩展了识别和学习错误证据的能力。

研究结果为推理过程的进一步发展提出了一个新方向,即不仅要加强对正确 CoTs 的理解和学习,还要提高识别错误证据并从中学习的能力。这种方法可以成为提高大规模语言模型准确性和可靠性的重要工具,尤其是在解决复杂问题时。

总结

本文研究了大规模语言模型是否能从自己的错误中学习。为了解大规模语言模型如何识别错误并从错误中学习,我们开发了一个新的基准 COTERRORSET,其中包括正确和错误的证据。该基准是通过演示错误创建过程和收集不同领域的数据而设计的。

此外,还提出了"自我反思 "和"调整 "两种方法,从不同角度评估错误的影响。这些方法都显示出明显的改进,并突出了从推理错误中学习的潜在好处。特别是,本文详细分析了大规模语言模型在算术和常识推理领域所犯的常见错误,为今后的研究方向提供了明确的指导。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

研1日记12

1. 改19->10 2. 学习数据不平衡问题 1. 欠采样 合并两个样本数据 两种方式 1. 按原分布比例划分。sklearn中train_test_split里,参数stratify含义解析_traintestsplit参数stratify-CSDN博客 3.刘二大人 卷积操作 待看论文: 刘老师指导&#xff1a…

[Mamba_4]LMa-UNet

题目:LKM-UNet: Large Kernel Vision Mamba UNet for Medical Image Segmentation 中文题目:LMa-UNet: 探索大kernel Mamba在医学图像分割上的潜力 0摘要 在临床实践中,医学图像分割提供了有关目标器官或组织的轮廓和尺寸的有用信息&#…

外贸|基于Java+vue的智慧外贸平台系统(源码+数据库+文档)

外贸|智慧外贸平台|外贸服务系统 目录 基于Javavue的智慧外贸平台系统 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&…

Docker容器技术1——docker基本操作

Docker容器技术 随着云计算和微服务架构的普及,容器技术成为了软件开发、测试和部署过程中的重要组成部分。其中,Docker作为容器技术的代表之一,以其简便易用的特点赢得了广大开发者的青睐。 Docker允许开发者在轻量级、可移植的容器中打包和…

JDK 安装及配置教程(Windows)【安装】

文章目录 一、 下载1. 官网下载2. 其它渠道 二、 安装三、 配置四、 验证五、 双 JDK 环境 软件 / 环境安装及配置目录 一、 下载 1. 官网下载 安装地址:https://www.oracle.com/ 打开浏览器输入网址 https://www.oracle.com/index.html,进入 Oracle …

Java和西门子S7-1200通讯调试记录

这是很久以前做的一个项目,工业现场一个agv,主要作用的清扫摇床(一种选矿设备),选用的S7-1200的CPU。工作原理是agv上面放一个机械臂,机械臂上面装一个扫把,到固定位置以后,执行清扫…

揭开谜底:用 C 语言打造你的扫雷游戏!

目录 1. 功能概述 用户界面 2. 游戏分析与设计 2.1 数据结构分析 地雷存储: 玩家视图: 2.2 文件结构设计 3. 代码实现 game.h game.c test.c 亮点功能与创新 智慧的较量:核心游戏循环 进阶功能:让游戏更加与众不同 还…

人工智能GPT____豆包使用的一些初步探索步骤 体验不一样的工作

豆包工具是我使用比较频繁的一款软件,其集合了很多功能。对话 图像 AI搜索 伴读等等使用都非常不错。电脑端安装集合了很多功能。 官网直达:豆包 使用我的文案创作能力,您可以注意以下几个技巧: 明确需求: 尽可能具…

C++ ——string的模拟实现

目录 前言 浅记 1. reserve(扩容) 2. push_back(尾插) 3. iterator(迭代器) 4. append(尾插一个字符串) 5. insert 5.1 按pos位插入一个字符 5.2 按pos位插入一个字符串 …

C++第五十一弹---IO流实战:高效文件读写与格式化输出

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1. C语言的输入与输出 2. 流是什么 3. CIO流 3.1 C标准IO流 3.2 C文件IO流 3.2.1 以写方式打开文件 3.2.1 以读方式打开文件 4 stringstre…

flask框架

Flask 1 flask简介 我们之所以在浏览器中输入localhost:8080然后就可以把webapps下面的项目文件以浏览器的方式打开,功臣在与tomcat。python语言写的项目,转换为web,Flask框架 轻量级web应用框架。 环境准备: pip install fl…

【C语言】内存函数详细讲解

文章目录 前言strerror的声明和使用字符串分类函数字符转换函数内存拷贝函数(memcpy)memcpy的声明和使用memcpy函数的模拟实现 内存拷贝函数(memmove)memmove的声明和使用memmove模拟实现 内存比较函数(memcmp)memcmp的…

UDP_SOCKET编程实现

文章目录 socket编程接口认识struct sockaddr类 编写一个server服务Client代码查看启动结果代码修正1.获取内核分配给客户端的信息2.修正不匹配ip不能访问的问题 不同机器之间的通信利用xftp将udp_client传给wsl的ubuntu机器进行演示现在模拟在windows下的udp_client代码: 对方…

时序预测 | MATLAB实现BKA-XGBoost(黑翅鸢优化算法优化极限梯度提升树)时间序列预测

时序预测 | MATLAB实现BKA-XGBoost(黑翅鸢优化算法优化极限梯度提升树)时间序列预测 目录 时序预测 | MATLAB实现BKA-XGBoost(黑翅鸢优化算法优化极限梯度提升树)时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现BKA-XGBoost时间序列预测&a…

C++从入门到起飞之——继承下篇(万字详解) 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、派⽣类的默认成员函数 1.1 四个常⻅默认成员函数 1.2 实现⼀个不能被继承的类 ​编辑 2. 继承与友…

力扣题解2390

大家好,欢迎来到无限大的频道。 今日继续给大家带来力扣题解。 题目描述​(中等): 从字符串中移除星号 给你一个包含若干星号 * 的字符串 s 。 在一步操作中,你可以: 选中 s 中的一个星号。 移除星号…

力扣刷题(6)

两数之和 II - 输入有序数组 两数之和 II - 输入有序数组-力扣 思路: 因为该数组是非递减顺序排列,因此可以设两个左右下标当左右下标的数相加大于target时,则表示右下标的数字过大,因此将右下标 - -当左右下标的数相加小于targ…

HashMap线程不安全|Hashtable|ConcurrentHashMap

文章目录 常见集合线程安全性HashMap为什么线程不安全?怎么保证HashMap线程安全 HashtableConcurrentHashMap 引入细粒度锁代码中分析总结 小结 常见集合线程安全性 ArrayList、LinkedList、TreeSet、HashSet、HashMap、TreeMap等都是线程不安全的。 HashTable是线…

C语言:数组

1. 数组的概念 数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息: • 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。 • 数组中存放的多个数据,类型是相同的。 数组分为⼀维数组和多维数组…

【C语言必学知识点七】你知道在动态内存管理中存在的内存泄露问题吗?遇到内存泄露时应该如何处理?今天跟你好好介绍一下如何正确使用calloc与realloc!!!

动态内存管理——动态函数(calloc、realloc)的使用 导读一、calloc函数1.1 函数介绍1.2 calloc的使用1.3 calloc与malloc 二、realloc函数2.1 函数介绍2.2 realloc的使用2.3 realloc的空间分配2.3.1 空间分配成功——地址的改变2.3.2 空间分配失败——内…