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

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,其中包括正确和错误的证据。该基准是通过演示错误创建过程和收集不同领域的数据而设计的。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • leetcode - 分治思想
  • 前后端数据交互 笔记03(get和post方法)
  • hku-mars雷达相机时间同步方案-软件驱动(MID360与海康MV-CB060-10UMUC-S)
  • [Redis] Redis中的Hash类型和List类型
  • 【CTF Web】BUUCTF BUU UPLOAD COURSE 1 Writeup(文件上传+PHP+文件包含漏洞)
  • 泛微E10产品二开
  • OrionX GPU算力池助力AI OCR场景应用
  • 鹏哥C语言36-37---循环/分支语句练习(折半查找算法)
  • CleanClip for Mac 剪切板 粘贴工具 历史记录 安装(保姆级教程,新手小白轻松上手)
  • (SERIES12)DM性能优化
  • Redis如何实现分布式锁
  • Kali Linux 2024.3 发布,包含新黑客工具
  • 挑战力扣高难度算法、数据库题
  • 基于Arduino Uno开发板实现PWM呼吸灯的设计方案
  • C语言-结构体-详解
  • JAVA并发编程--1.基础概念
  • Python实现BT种子转化为磁力链接【实战】
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SpringBoot几种定时任务的实现方式
  • 工作中总结前端开发流程--vue项目
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用SAX解析XML
  • 我这样减少了26.5M Java内存!
  • 一文看透浏览器架构
  • 终端用户监控:真实用户监控还是模拟监控?
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​linux启动进程的方式
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (12)目标检测_SSD基于pytorch搭建代码
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (c语言)strcpy函数用法
  • (pytorch进阶之路)扩散概率模型
  • (二)linux使用docker容器运行mysql
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)C#调用WebService 基础
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .net 发送邮件
  • .Net 高效开发之不可错过的实用工具
  • .net通过类组装数据转换为json并且传递给对方接口
  • @EnableWebMvc介绍和使用详细demo
  • @font-face 用字体画图标
  • @JsonFormat 和 @DateTimeFormat 的区别
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @拔赤:Web前端开发十日谈
  • [ C++ ] STL_list 使用及其模拟实现
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现
  • []FET-430SIM508 研究日志 11.3.31
  • [000-01-022].第03节:RabbitMQ环境搭建
  • [1181]linux两台服务器之间传输文件和文件夹
  • [AIGC] 开源流程引擎哪个好,如何选型?