论文阅读:Mammoth: Building math generalist models through hybrid instruction tuning
Mammoth: Building math generalist models through hybrid instruction tuning
https://arxiv.org/pdf/2309.05653
MAmmoTH:通过混合指令调优构建数学通才模型
摘要
我们介绍了MAmmoTH,一系列特别为通用数学问题解决而设计的开源大型语言模型(LLMs)。MAmmoTH模型是在我们精心策划的指令调优数据集MathInstruct上训练的。MathInstruct是由13个数学数据集组成的,其中包含中间推理过程,我们新策划了其中的六个。它展示了思维链(CoT)和程序思维(PoT)推理的独特混合,并且确保了在数学领域广泛的多样性覆盖。CoT和PoT的混合不仅释放了工具使用的潜力,还允许对不同的数学问题采取不同的思维过程。结果,MAmmoTH系列在所有规模上的九个数学推理数据集上显著优于现有的开源模型,平均准确率提高了16%到32%。值得注意的是,我们的MAmmoTH-7B模型在MATH(一个竞赛级数据集)上达到了33%,超过了最好的开源7B模型(WizardMath)23%,而MAmmoTH-34B模型在MATH上达到了44%的准确率,甚至超过了GPT-4的思维链结果。我们的工作强调了在开发更优秀的数学通才模型时,多样化问题覆盖和使用混合推理的重要性。

1 引言
本研究聚焦于数学推理,这是现代大型语言模型(LLMs)的一个关键能力(OpenAI, 2023; Anil等人,2023)。尽管该领域近期取得了进步,但在闭源和开源LLMs之间存在明显差距——像GPT-4(OpenAI, 2023)、PaLM-2(Anil等人,2023)和Claude 2(Bai等人,2022)这样的闭源模型在GSM8K(Cobbe等人,2021)和MATH(Hendrycks等人,2021b)等流行的数学推理基准测试中占据主导地位,而像Llama(Touvron等人,2023a;b)、Falcon(Penedo等人,2023)、OPT(Zhang等人,2022)这样的开源模型在所有基准测试中都远远落后。
目前弥合这一差距的努力主要有两个方向:(1)持续预训练,如Galactica(Taylor等人,2022)和MINERVA(Lewkowycz等人,2022),这些模型继续在超过1000亿个token的与数学相关的网络数据上训练LLM。这种方法提高了模型的一般科学推理能力,但计算成本高昂。(2)特定数据集的微调,如拒绝采样微调(RFT)(Yuan等人,2023)和WizardMath(Luo等人,2023),这些方法使用特定于某些数据集的监督数据对LLM进行微调。尽管这些方法提高了领域内的性能,但它们无法推广到超出其微调数据的更广泛的数学推理任务。例如,RFT和WizardMath都可以将GSM8K(Cobbe等人,2021)的准确率提高30%以上,这是它们的微调数据集之一,但却可能将MMLU-Math(Hendrycks等人,2021a)或AQuA(Ling等人,2017)等领域外数据集的准确率降低高达10%。
在本文中,我们旨在提出一种轻量级但具有普适性的数学指令调优方法,以增强LLMs的一般(即不限于微调任务)数学推理能力。现有方法(Luo等人,2023; Yuan等人,2023; Taylor等人,2022)主要关注通过逐步自然语言描述解决数学问题的“思维链”(Chain-of-Thought, CoT)方法(Wei等人,2022b; Nye等人,2022)。这种方法在涵盖大多数数学科目方面表现出其普适性,但在计算精度以及复杂的数学或算法推理过程(例如,求解二次方程的根和计算矩阵的特征值)方面存在挑战。
与此相反,像“程序思维”(Program-of-Thought, PoT)方法(Chen等人,2022)和PAL(Madaan等人,2022; Gao等人,2023)这样的代码格式提示利用外部工具(即Python解释器)大大简化了数学问题解决过程。这种方法主张将计算过程卸载到外部Python解释器中,以解决复杂的数学和算法推理过程(例如,使用sympy求解二次方程或使用numpy计算矩阵的特征值)。然而,PoT在处理更抽象的推理场景时存在不足,如常识推理、形式逻辑和抽象代数,特别是在没有内置API的情况下。
为了结合CoT和PoT方法的优势,我们引入了一个新的数学混合指令调优数据集MathInstruct,它具有两个主要特点:(1)广泛覆盖不同的数学领域和复杂性级别;(2)混合CoT和PoT的推理方式。MathInstruct基于七个现有的数学推理数据集和六个新策划的数据集(见表1)。我们使用MathInstruct对不同规模的Llama(Touvron等人,2023a;b; Roziere等人,2023)模型进行微调,从7B到70B不等。由此产生的MAmmoTH模型(图1)展示了作为数学通才的前所未有的潜力。
我们在一系列数据集上评估了MAmmoTH,包括领域内(IND)测试集——GSM8K(Cobbe等人,2021)、MATH(Hendrycks等人,2021b)、AQuA-RAT(Ling等人,2017)、NumGLUE(Mishra等人,2022b)——和领域外(OOD)测试集——SVAMP(Patel等人,2021)、SAT(Zhong等人,2023)、MMLU-Math(Hendrycks等人,2021a)、Mathematics(Davies等人,2021)和SimulEq(Koncel-Kedziorski等人,2016)。与现有方法相比,我们的模型更好地泛化到OOD数据集,并显著提高了开源LLMs在数学推理中的性能。值得注意的是,在流行的竞赛级MATH数据集(Hendrycks等人,2021b)上,我们的7B模型可以比WizardMath(开源MATH最先进技术)(Luo等人,2023)高出3.5倍(35.2%对10.7%),我们34B的MAmmoTH-Coder(在Code Llama(Rozier等人,2023)上微调)甚至可以超过使用CoT的GPT-4的结果。
我们从两个角度突出了我们的贡献:(1)从数据工程的角度,我们展示了MathInstruct,这是一个高质量的数学指令调优数据集,结合了各种数学问题和混合推理方式。(2)从建模的角度,我们通过训练和评估超过50种不同的模型和基线,从7B到70B不等,调查了不同数据来源和输入输出格式的影响。我们的模型,包括MAmmoTH和MAmmoTH-Coder,在准确性上取得了显著提升,超过了现有的开源模型。
这篇论文的主题是“GPT Can Solve Mathematical Problems Without a Calculator”,作者们来自清华大学和TAL AI Lab。论文的核心观点是挑战了以往对大型语言模型(LLMs)在执行复杂数学运算能力上的限制认知。作者们展示了通过充分的训练数据,一个具有20亿参数的语言模型能够以接近100%的准确率执行多位数的算术运算,而且不需要数据泄露,显著超过了GPT-4(其多位数乘法的准确率仅为4.3%)。
论文的主要贡献包括:
-
提出了MathGLM模型,这是一个针对复杂数学运算进行了细致设计的模型,与现有的领先LLMs(如GPT-4)相比,展现出了优越的性能(如图1所示)。
-
通过分步策略构建了一个算术数据集,作为MathGLM预训练的基础。该数据集覆盖了从简单的单步运算到复杂的多步运算。
-
采用了课程学习的概念,通过逐步增加算术表达式的复杂性,增强了MathGLM处理超过8位数的乘法以及包含小数和分数运算的能力。
-
在数学文字问题上,通过细化Ape210K数据集,将直接计算答案的方式改为分步计算,显著提高了MathGLM在解答数学文字问题时的准确率。
-
在包含5000个样本的中文数学问题测试集上,经过GLM-10B微调的MathGLM展现出了与GPT-4相似的性能。
-
论文还包括了对MathGLM在不同运算类型(如加法、减法、乘法和除法)上性能的详细实验和分析,证明了其在处理复杂数学任务方面的有效性。
-
论文的代码和数据已经公开在GitHub上,供有兴趣的研究者进一步探索和使用。
论文的结构还包括了相关工作的综述、方法介绍、实验设计、结果分析和结论。作者们通过这项工作,揭示了LLMs在数学推理任务上的巨大潜力,并挑战了关于它们在执行复杂数学运算上能力有限的传统观点。
相关文章:
论文阅读:Mammoth: Building math generalist models through hybrid instruction tuning
Mammoth: Building math generalist models through hybrid instruction tuning https://arxiv.org/pdf/2309.05653 MAmmoTH:通过混合指令调优构建数学通才模型 摘要 我们介绍了MAmmoTH,一系列特别为通用数学问题解决而设计的开源大型语言模型&#…...
什么样的双筒式防爆器把煤矿吸引?
什么样的双筒式防爆器把煤矿吸引?要有好的服务和态度,要用心去聆听客户的需求,去解决客户的疑虑,用诚信去赢得客户的信任。 150产品的技术特点 双筒式防爆器采用双罐结构,其水封水位观测直观、能够快速有效排污、操作…...
如何保证冰河AL0 400G 100W 的稳定运行?
要保证冰河 AL0 400G 100w 的稳定运行,可以考虑以下几点: 1. 适宜的工作环境:确保设备放置在通风良好、温度适宜的环境中。良好的散热条件有助于防止设备过热,因为过热可能会导致性能下降或故障。该设备采用纯铝合金外壳…...
剪画小程序:巴黎奥运会,从画面到声音!
在巴黎奥运会的赛场上,每一个瞬间都伴随着独特的声音。那是观众的欢呼,是运动员冲刺的呐喊,是国歌奏响的激昂旋律。 如今,通过剪画音频提取,我们能够将这些珍贵的声音从精彩的画面中分离出来,单独珍藏。 想…...
【leetcode详解】心算挑战: 一题搞懂涉及奇偶数问题的 “万金油” 思路(思路详解)
前记: 做了几日的leetcode每日一题,几乎全是十分钟结束战斗的【中等】题,今日杀出来个【简单】题,反倒开始难以想出很清楚的解题思路,反复调试修改才将题目逐渐考虑全面,看到了原本思路的漏洞,…...
【资料集】数据库设计说明书(Word原件提供)
2 数据库环境说明 3 数据库的命名规则 4 逻辑设计 5 物理设计 5.1 表汇总 5.2 表结构设计 6 数据规划 6.1 表空间设计 6.2 数据文件设计 6.3 表、索引分区设计 6.4 优化方法 7 安全性设计 7.1 防止用户直接操作数据库 7.2 用户帐号加密处理 7.3 角色与权限控制 8 数据库管理与维…...
MySQL 常用查询语句精粹
引言 MySQL 是一种广泛使用的开源关系型数据库管理系统,其强大的查询语言为用户提供了丰富的数据处理能力。掌握 MySQL 的常用查询语句对于数据库管理和数据分析至关重要。本文将介绍一些 MySQL 中的常用查询语句,并提供实际的示例。 基础查询 1. 选择…...
hive的内部表(MANAGED_TABLE)和外部表(EXTERNAL_TABLE)的区别
1.hive的表类型分为外部表和内部表 内部表和外部表的主要区别在于数据的存储方式。 外部表:外部表的存储在hdfs中,是我们指定的文件目录,当我们删除数据或者删除分区的时候不会将元数据删除,数据还会在hdfs目录中,我们…...
【AutoSar网络管理】验证ecu能够从RepeatMessage状态切换到ReadySleep
本专栏将为您提供: Autosar网络管理介绍,包括:状态迁移、状态行为、状态表现、切换条件、时间参数、消息类型等。DUT模拟节点介绍,包括:设计思路、代码展示、编写须知等。测试用例介绍,包括:测试内容、测试步骤、期望结果等。测试脚本介绍,包括:编写思路、代码展示、脚…...
js逻辑或(||)和且()
重点: JavaScript 中的逻辑运算符按照布尔逻辑进行计算,并且返回值是操作数本身 || ||:逻辑或,只要有一个表达式为真(truthy),整个表达式就为真 逻辑或 (||) 的行为: ||运算符可以用来连接两个…...
ElasticSearch入门(六)SpringBoot2
private String author; Field(name “word_count”, type FieldType.Integer) private Integer wordCount; /** Jackson日期时间序列化问题: Cannot deserialize value of type java.time.LocalDateTime from String “2020-06-04 15:07:54”: Failed to des…...
vue项目Nginx部署启动
1.vue打包 (1)package.json增加打包命令 "scripts": {"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 10.16.14.110","start": "npm run dev","un…...
Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules。Android studio纯java代码报错
我使用java代码 构建项目,初始代码运行就会报错。我使用的是Android Studio Giraffe(Adroid-studio-2022.3.1.18-windows)。我在网上找的解决办法是删除重复的类,但这操作起来真的太麻烦了。 这是全部报错代码: Dupli…...
filebeat
1、作用 1、可以在本机收集日志2、也可以远程收集日志3、轻量级的日志收集系统,可以在非java环境运行。logstash是在jmv环境中运行,资源消耗很大,启动一个logstash要消耗500M左右的内存,filebeat只消耗10M左右的内存。收集nginx的…...
matlab y=sin(x) - 2/π*(x)函数绘制
[TOC](matlab ysin(x) - 2/π*(x)函数绘制) ysin(x) - 2/π*(x) clc; clear; close all; x_axis_length 10; y_axis_length 10; % 创建 x 值向量 x_positive linspace(0.1, 10, 1000); % 正半轴上的 x 值 x_negative linspace(-10, -0.1, 1000); % 负半轴上的 x 值% 计算…...
HyperDiffusion阅读
ICCV 2023 创新点 HyperDiffusion:一种用隐式神经场无条件生成建模的新方法。 HyperDiffusion直接对MLP权重进行操作,并生成新的神经隐式场。 HyperDiffusion是与维度无关的生成模型。可以对不同维度的数据用相同的训练方法来合成高保真示例。 局限性…...
分治思想 排序数组
题目 这是一道经典的关于分治思想的算法题,适合刚接触分治的小白。 . - 力扣(LeetCode) 思路 采用递归分治的思想,也就是快速排序的模拟,这里先确定每趟递归的作用: 在一个规定的区间内,随机…...
通用前端分页插件
/*** >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>* 分页组件* >>>>>>>>>>>>>>>>>>>…...
jEasyUI 扩展编辑器
jEasyUI 扩展编辑器 jEasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的组件,用于快速构建交互式的网页界面。这些组件包括布局、窗口、数据网格等,但有时候,开发者可能需要更多的定制化功能,这时候就需要使用 jEasyUI 的扩展编辑器。 什么是 jEasyUI 扩展编辑器 …...
腾讯课堂停服,付费课程怎么观看!!!
腾讯课堂十月1停服拉,大家的付费课程赶紧保存收获一波啊, 爬虫工程师手拿把掐啦!!!...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...
