论文阅读: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停服拉,大家的付费课程赶紧保存收获一波啊, 爬虫工程师手拿把掐啦!!!...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

JDK 17 序列化是怎么回事
如何序列化?其实很简单,就是根据每个类型,用工厂类调用。逐个完成。 没什么漂亮的代码,只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...

在Zenodo下载文件 用到googlecolab googledrive
方法:Figshare/Zenodo上的数据/文件下载不下来?尝试利用Google Colab :https://zhuanlan.zhihu.com/p/1898503078782674027 参考: 通过Colab&谷歌云下载Figshare数据,超级实用!!࿰…...