今日arXiv最热大模型论文:清华大学发布,ChatGML又添新功能,集成“自我批评”,提升数学能力

news2024/11/24 4:29:21

引言:数学问题解决在大语言模型中的挑战

在当今的人工智能领域,大语言模型(Large Language Models,LLMs)已经在理解和生成人类语言方面取得了显著的进展。这些模型在文本摘要、问答、角色扮演对话等多种语言任务上展现出了惊人的能力。然而,当这些模型被应用于需要数学推理的复杂问题时,它们的表现往往不尽如人意。尽管开发了许多策略和数据集来增强LLMs在数学方面的能力,但在实际部署的LLM系统中同时保持和提升语言和数学能力仍然是一个显著的挑战。

GPT-3.5研究测试: https://hujiaoai.cn

GPT-4研究测试: https://higpt4.cn

Claude-3研究测试(全面吊打GPT-4): https://hiclaude3.com

传统的通过人类反馈进行强化学习(Reinforcement Learning from Human Feedback,RLHF)方法主要是通过反映人类偏好的奖励模型来增强文本生成的质量。虽然这种方法提升了生成文本的质量,但它通常忽视了解决数学问题所必需的准确性和逻辑连贯性,导致在数学推理任务上的表现出现所谓的“对齐税”(alignment tax)。与此相反,旨在增强LLMs数学能力的尝试通常涉及到监督式微调(Supervised Fine-tuning,SFT),这不可避免地会降低它们在语言多样性上的表现,为LLM系统的实际应用带来了困境。

本文介绍了一种新颖的方法,旨在提升LLMs在语言和数学技能上的能力,而不会牺牲其中的任何一个。我们的策略与传统的RLHF方法不同,它包含了从LLM自身派生出的数学批判模型(Math-Critique model),该模型用于评估其数学输出。这种自我批判机制使模型能够从专门针对数学内容的AI生成反馈中学习。

论文标题:
ChatGLM-Math: Improving Math Problem-Solving in Large Language Models with a Self-Critique Pipeline

论文链接:
https://arxiv.org/pdf/2404.02893.pdf

自我批判管道(Self-Critique Pipeline)的介绍

在优化大语言模型(LLMs)的过程中,研究者们面临着一个显著的挑战:如何在不牺牲语言理解能力的前提下,提升模型在数学问题解决方面的性能。传统的强化学习方法虽然能够提高文本生成的质量,但往往忽视了解决数学问题所需的准确性和逻辑一致性。为了解决这一问题,本文介绍了一种新颖的自我批判管道(Self-Critique Pipeline),旨在同时提升LLMs的数学和语言能力。

我们的自我批评管道能够同时提高语言和数学能力。

自我批判管道包括两个主要阶段

1. 拒绝性微调(Rejective Fine-tuning, RFT):在此阶段,采用拒绝采样技术,即淘汰不符合Math-Critique标准的响应,而将其余响应进一步微调。这一阶段的目标是提高模型在数学回答方面的准确性和一致性,同时确保所选答案的多样性。

2. 直接偏好优化(Direct Preference Optimization, DPO):在RFT的基础上,通过直接从正确和错误答案对中学习,进一步提炼通过Math-Critique的答案,重点解决上一阶段中最具挑战性的问题。

自我批判管道的引入,不仅提升了LLMs在数学问题解决方面的性能,而且还改善了其语言能力。通过在ChatGLM3-32B模型上的一系列实验,结果表明,该管道显著增强了LLMs的数学问题解决能力,并在MATHUSEREVAL等数据集上取得了优于规模更大两倍的LLMs的性能。

ChatGLM-Math的自我评价管道

Math-Critique模型的设计与实现

Math-Critique模型的设计灵感来源于利用大模型进行评估的工作。该方法通过对模型生成的数学回答进行评分,包括解释性分析和1到10之间的分数输出,与传统的奖励模型相比,Math-Critique利用语言模型的上下文能力,通过整合参考答案,实现更准确的判断。

在Math-Critique的指导下,回答被分类为完全错误、部分正确的方法但结果错误、准确的结论但方法部分有缺陷和完全正确四个类别。这些类别与1-2、3-5、6-8和9-10的评分范围相对应。

Math-Critique的实现包括以下步骤:

  • 从训练数据中筛选出包含数学问题及其参考答案和模型响应的数据集,主要来源于从初中到大学级别的考试题目。

  • 使用CritiqueLLM和ORM对数据集进行注释,选择代表最好和最差评分极端的注释,并直接用这些伪标签进行训练,共生成了10k条注释数据。

  • 对于中间范围的分数结果,选择一部分进行手动注释,分为四个类别,然后将这些结果映射到10分制上。同时,从训练数据集中划分出一个测试集,并采用相同的四类别注释方法,生成了5k条训练数据和800条测试数据。

Math-Critique模型的训练过程中,基于ChatGLM3-32B作为初始的Math-Critique基础模型,每次迭代后,通过SFT或Critique RFT精炼的当前模型将作为基础。使用的学习率为3e-6,批量大小为128,适用于6B和32B规模的模型。

自我批判管道中,Math-Critique模型的数据构建仅涉及少量的手动注释。这批注释是一次性的努力,因为只需要这批注释数据作为其余迭代的引导。之后,所有剩余步骤都可以通过推理和自动模型过滤来完成。

MATHUSEREVAL数据集的创建

在创建MATHUSEREVAL数据集的过程中,研究团队采取了一系列步骤以确保数据集能够准确评估大语言模型(LLMs)在解决实际数学问题方面的能力。

MATHUSEREVAL数据集的特点是包含了一系列多样化的问题,这些问题不仅仅局限于学术练习,还扩展到了实际应用场景,更好地反映了用户的需求,与传统的学术数学数据集相比,它提供了一个更高标准的实际数学推理能力评估。

1. 数据集来源

数据集的主要来源包括公开数据集的训练集和公开可用的中学及大学考试题。研究团队从GSM8k和MATH训练集中挑选了所有提示作为英文数据的问题集,并使用原始数据集中的回答作为标准答案。对于公开可用的中学和大学考试题,研究者使用了考试试卷提供的答案格式作为通用答案,无需进一步处理。

2. 数据集分类

基于收集到的数据分布,研究团队将测试集分为两个主要类别:基础数学和高级数学,并进一步细分为八个子类别。由于计算应用类问题难度较低,且与之前公开数据集的范围较为一致,因此在此类别中选择的问题较少。所有问题都以开放式格式提出,可能的答案包括单个数字、多个数字或数学表达式。

3. 评估方法

研究团队提供了两种评估方法:GPT-4-1106——Preview评估和Math-Critique评估。前者采用alignbench的评估方法,以提供更准确、公平和可访问的评估方式;后者则采用与上述Math-Critique相同的使用方式。同样,研究团队也将报告两种类型的分数:平均分和硬分割分。

实验结果与分析

在实验中,研究团队使用了ChatGLM3-32B-SFT-2312版本作为基线模型。RFT阶段在所有数学数据集上都显著提高了性能。相比之下,DPO阶段的改进集中在开放式数学问题上,包括MATHUSEREVAL、匈牙利考试和通用的AlignBench。

尽管研究者们在MT-bench上的改进不显著,但考虑到超过90%的训练数据是中文,研究者们认为保持平衡本质上表明我们的方法保留了原始的英文通用或多轮能力。

与专有模型相比,特别是OpenAI的GPT系列,GLM-4在特定领域展示了竞争性或更优越的性能。例如,GPT-4-1106-Preview在大多数任务中表现最佳,包括在中英文基准测试中的最高分,突显了其在各种数学问题解决环境中的有效性。

然而,GLM-4在Ape210k和AlignBench基准测试中超越了它,表明了在数学推理和跨语言泛化方面的特定优势。

1. 数据组成的影响

研究团队选择了相对较强的Metamath训练集作为基线。在应用Critique-RFT之后,发现仅使用学术数据集构建RFT数据在面向现实生活场景的MATHUSEREVAL和学术测试集上的性能不如在整合了现实生活场景数据之后的结果。

此外,引入英文数据显著提高了英文数据集的性能,而不会对中文能力产生实质性影响。

2. 对一般能力的影响

考虑到目标不是开发一个专门的数学模型来攀登排行榜,而是一个具有强大数学能力的通用模型,研究者们使用Alignbench测试了结果,这是一个中文通用开放式问答数据集。结果表明,模型在中文语言能力方面超过了不包含专门数学数据的类似基线模型的训练成果。此外,与其他开源中文数学/通用模型相比,它的表现也非常出色。

在英文通用能力方面,使用MT-Bench作为测试集。考虑到超过90%的训练数据是中文,MT-Bench上的结果在训练过程中基本保持不变,表明英文语言能力没有受到显著影响。

3. Math-Critique的有效性

在手动注释过程中,收集了800个问题的测试集,所有这些问题都根据答案和程序的正确性进行了手动标记,从而形成了一个四类测试;Math-Critique的输出结果根据指令的要求映射到这四个类别。

研究者们通过实证实验验证了Math-Critique本身的有效性。设置了两种评估方法:直接评分判断正确/错误结果的准确性和判断我们定义的四个类别的准确性。从中国初高中考试题和MATHUSEREVAL中提取了测试集,并由专家注释正确判断。

结果表明,Math-Critique-32B模型在判断准确性和与人类注释相比的相关系数方面显著超过了GPT-3.5-Turbo,并且基本与GPT-4-0613持平。

4. 超出分布测试

遵循Grok-1的方法,为了测试超出分布数据集的性能,选择了匈牙利国家期末考试。这是一个没有训练集的33个考试问题的测试集,其优势在于它允许评估模型在完全OOD环境中的数学能力。

使用人类专家评估,研究者们发现在32B模型规模下,RFT模型得分为57,而DPO模型得分为73。然而,需要注意的是,由于模型的主要语言是中文,如果模型用中文正确回答,通常会给予评分。研究者们计划在未来的模型中解决这个问题。

模型在数学问题解决中的错误案例分析

在数学问题解决的实际应用中,大语言模型(LLMs)虽然在语言理解方面表现出色,但在数学问题的准确性和逻辑一致性方面仍存在挑战。这些挑战通常归因于模型在训练过程中的对齐税(alignment tax),即在数学推理任务上应用常规的文本生成增强方法时,可能会导致性能的不一致。

讨论与未来工作

本研究提出了自我批评(Self-Critique)管道,旨在提高LLMs的数学问题解决能力,同时保持其语言能力。通过自我生成的反馈,我们的方法在不需要外部监督模型和手动注释的情况下,显著提高了LLMs在MATHUSEREVAL等数据集上的数学问题解决能力。

1. 未来工作方向

  • 图形思维和绘图能力:目前的模型在处理需要绘图的问题上存在不足,未来可以探索集成多模态输入和输出组件的方法。

  • 精确计算能力:模型在处理多位小数的乘法、除法或指数运算时可能会出现高达5%的偏差。未来的工作可以考虑使用外部工具进行计算或直接使用带有代码解释器的代码。

  • 模型的通用能力:目标是开发一个具有强大数学能力的通用模型,而不仅仅是为了领先排行榜。未来的研究可以继续探索如何在增强特定能力的同时保持模型的通用性。

2. 结论

本研究证明了自我批评方法在提高LLMs数学问题解决能力方面的有效性,并在多个数据集上取得了优于现有开源和专有模型的结果。该方法已经在GLM-4的开发过程中应用,以提高其数学能力,并在MATHUSEREVAL等数据集上取得了最佳结果。未来将继续探索和改进这些方法,以进一步提高模型在实际应用中的表现。

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

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

相关文章

JVM性能调优——OOM分类及解决方案

文章目录 1、概述2、OOM案例1:堆内存溢出3、OOM案例2:元空间溢出4、OOM案例3:GC overhead limit exceeded5、OOM案例4:线程溢出6、小结 在工作中会经常遇到内存溢出(Out Of Memory,OOM)异常的情况,每当遇到OOM,总是让人…

今天我们来聊一聊Java中的Semaphore

写在开头 在上几天写《基于AQS手写一个同步器》时,很多同学留言说里面提到的Semaphore,讲得太笼统了,今天趁着周末有空,咱们就一起详细的学习和梳理一把 Semaphore。 什么是Semaphore? 在前面我们讲过的synchronize…

【计算机毕业设计】人事管理系统——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

【刷题】代码随想录算法训练营第十一天|20、有效的括号,1047、删除字符中的所有相邻重复项,150、逆波兰表达式求值

目录 20、有效的括号1047、删除字符中的所有相邻重复项150、逆波兰表达式求值 20、有效的括号 讲解:https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.html 括号匹配是使用栈解决的经典问题。 三种不匹配:第一种是缺少匹…

Axure RP中的相关概念及高保真原型构建方法

1 Axure RP中概念介绍 对于构建高保真原型来说,需要知道事件(Event)、Case、Action等概念。Axure RP中给出这些概念,是为了方便原型的构建,尤其是高保真原型的构建。 事件(Event)是附着于控件…

.vue文件引入路径正确,但报错

问题描述 使用Vue挂载组件时,导入路径正确,但是一直提示 Already included file name ‘绝对路径/index.vue’ differs from file name ‘绝对路径/Index. vue’ only in casing. The file is in the program because: Imported via ‘./components/ind…

Ubuntu,Kylin环境使用clock()函数设置延迟

一、Ubuntu操作系统中&#xff0c;直接在main中测试clock()设置延迟功能 代码描述&#xff1a;直接在main中使用clock()函数设置200ms延迟。 代码输出&#xff1a; 实现了200ms的延迟。 #include <time.h> #include <sys/time.h> #include <stdio.h> #inc…

HarmonyOS实战开发-自定义通知角标、如何设定应用的桌面图标角标的功能。

介绍 本示例主要展示了设定应用的桌面图标角标的功能&#xff0c;使用ohos.notificationManager 接口&#xff0c;进行桌面角标的设置&#xff0c;通知的发送&#xff0c;获取等。 效果预览 使用说明 在使用本应用时&#xff0c;需安装并启动仿桌面应用&#xff1b;在主界面…

微信小程序报错——“errno“: 600001, “errMsg“: “request:fail -2:net::ERR_FAILED“

bug现象 微信小程序体验版和真机调试 进入小程序的时候接口就出现了这个报错 "errno": 600001, "errMsg": "request:fail -2:net::ERR_FAILED" 排查 检查是证书过期还是证书链不完整 证书的信任链完整问题&#xff0c;可以在 亚数信息-SSL/TLS安…

Leetcode:283.移动零

题目要求 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0…

8、【构造者模式】适合于需要创建复杂对象的场景

你好&#xff0c;我是程序员。 今天我们来学习23种设计模式中的建造者模式。构造者模式是什么&#xff1f;有什么优缺点&#xff1f;使用场景&#xff0c;与工厂模式有什么区别&#xff1f;简单代码实现。 一、是什么&#xff1f; 建造者模式&#xff08;Builder Pattern&…

MySQL:MySQL的查询(上)

文章目录 MySQL的增加单行数据插入多行数据插入插入否则更新替换 MySQL的查询select列where语句 本篇开始总结的是MySQL当中的基本查询语句 对于数据库的查询&#xff0c;无非大致就是增删查改&#xff0c;因此对于这些内容进行一一解释&#xff1a; MySQL的增加 单行数据插…

鸿铭网创88计第49计:2024挂机托管项目, 单号躺赚4000+,无需发作品

项目概述&#xff1a; 这个副业项目极为适合忙碌却希望额外赚钱的伙伴们。核心是与平台合作&#xff0c;提供快手账号用于发布视频&#xff0c;视频中会嵌入推广链接。当有用户通过这些链接下载应用时&#xff0c;我们就能获得拉新佣金。 项目 地 址 &#xff1a; laoa1.cn/…

Json和Qt中Json的使用学习笔记

视频链接 https://www.bilibili.com/video/BV1yf4y1A7ek/?p2&spm_id_frompageDriver&vd_sourcefa4ef8f26ae084f9b5f70a5f87e9e41b Json JSON是在网络传输中常用的数据格式&#xff0c;能将不同类型的数据统一起来&#xff0c;我们在发送数据前将不同类型的数据存入到…

关于Git的一些基础用法

关于Git的一些基础用法 1. 前言2. 使用GitHub/gitee创建项目2.1 创建账号2.2 创建项目2.3 下载仓库到本地2.4 提交代码到远端仓库2.5 查看日志2.6 同步远端仓库和本地仓库 1. 前言 首先说一个冷知识&#xff08;好像也不是很冷&#xff09;&#xff0c;Linux和git的创始人是同…

c语言多功能计算软件170

定制魏&#xff1a;QTWZPW&#xff0c;获取更多源码等 目录 题目 要求 主要代码片段 题目 设计一个计算器软件&#xff0c;具备如下功能提示界面。 要求 设计出界面&#xff0c;注意界面名称最后为自己的姓名&#xff1b;&#xff08;20分&#xff09;能够实现加、减、乘、…

BoostCompass(建立正排索引和倒排索引模块)

阅读导航 一、模块概述二、编写正排索引和倒排索引模块✅安装 jsoncpp✅Jieba分词库的安装1. 代码基本框架2. 正排索引的建立3. 倒排索引的建立 三、整体代码⭕index.hpp 一、模块概述 这个模块我们定义了一个名为Index的C类&#xff0c;用于构建和维护一个文档索引系统。该系…

AI python

AI python 软件方面程序上的人工智能&#xff0c;和物理那种能跑机器人没关系

emmet语法---快速生成css样式

前言 本文是对emmet语法生成css样式的整理&#xff0c;emmet语法就相当于快捷键一样&#xff0c;只需要我们输入简单的缩写&#xff0c;然后按下tab键即可生成麻烦的css代码。 emmet语法生成css代码 其实&#xff0c;特别简单。比html还要简单。 先上案例&#xff1a; 我们输…

ControllerAdvice用法

ControllerAdvice用法 ControllerAdvice是一个组件注解&#xff0c;它允许你在一个地方处理整个应用程序控制器的异常、绑定数据和预处理请求。这意味着你不需要在每个控制器中重复相同的异常处理代码&#xff0c;从而使得代码更加简洁、易于管理。 主要特性 全局异常处理&a…