Nvidia发布OpenMathInstruct-1数据集,180万数学题目助力AI精准学习

引言:数学推理与大型语言模型的新进展

已有的AI模型在数学推理方面始终表现较差,而大型语言模型(LLMs)的出现为这一领域带来了新的可能性。已有的研究发现,在数学推理领域,通过合成数据集训练LLMs能够有效提升模型性能。通过使用强大的闭源模型如GPT-3.5/4生成的高质量合成数据,可以训练出在数学任务上表现出色的小型LLMs 。因此,已有的模型通常是通过利用gpt的输出进行蒸馏而得到的

然而,依赖于闭源模型进行开发始终会有潜在的法律风险。本文中利用最近发布的开源模型Mixtral,构建了一个名为OpenMathInstruct-1的数学推理数据集,该数据集包含了180万对问题-解答,并在数学推理测试中表现良好。

1. 论文标题、机构、论文链接

论文标题:OpenMathInstruct-1: A 1.8 Million Math Instruction Tuning Dataset

机构:NVIDIA

论文链接:arxiv.org/pdf/2402.10...

OpenMathInstruct-1数据集的构建背景与意义

1. 现有数学推理数据集的局限性

现有的数学推理数据集,如MetaMathQA和MAmmoTH,数据大部分由闭源的大型语言模型(LLMs)生成,这些模型通常带有商业限制,导致构建的数据集受到法律约束。此外,使用闭源模型生成数据的成本通常高于最新开源模型,并且由于闭源模型行为会随时间产生变化,导致数据集缺乏可重复性。

2. 开源大型语言模型在数学技能上的差距

首先引入一个背景知识,覆盖率(TSC)

TSC(Training Set Coverage)衡量的是模型针对训练集中的数学问题,所生成的解决思路中,至少有一个能够得出正确答案的问题数量。

简单地说,假设训练集有100个数学题,模型为每道题目产生16种解决思路,其中,有80道题目,他们的16种思路中至少有一个思路可以算出正确答案,有20道题目,他们的16种思路都是错的,那么TSC=80/100=80%。

在数学推理任务上,目前的开源模型与GPT-4等闭源模型相比在数学技能上存在明显差距:

  • Mixtral模型如果想要在GSM8K基准测试中得到与GPT-4相同的覆盖率,其为每道题所生成的解决思路的数量是GPT-4的8倍;简单地说,如果gpt-4为每道题生成4个思路就可以正确解决80%的数学题,Mixtral模型需要为每道题生成32个思路才能解决80%。
  • 在更难的MATH基准测试中,即使生成了12倍的解决思路,Mixtral模型的性能仍低于GPT-4。

数据集构建方法:从Mixtral模型到OpenMathInstruct-1

再讲细节之前,我们先说一下整个论文的逻辑:

  1. 传统的数学推理模型的训练方式是:让强大的闭源模型(如gpt-4)在数学题目数据集上进行推理,并使用推理结果作为标签,制作一个新的数据集,用这个新数据集训练其他模型
  2. 但是使用闭源模型制作数据集会有成本问题和法律问题
  3. 但如果使用开源模型在数学题目上产生标签来制作数据集,这个数据集所训练出的模型的效果远不如闭源模型所产生的数据集的效果
  4. 本文就是探讨如何利用开源模型制作一个数据集,在这个数据集上训练的模型,其性能和在闭源数据集上训练的模型效果相近
  5. 作者基于已有的数学题目数据集,使用开源模型进行推理,但是作者对于模型的最终输出(即作者所制作的数据集的标签)进行了很多调整
    • 首先,作者要求开源模型输出的标签,必须是代码解释器风格
    • 而后,作者利用已有的文本风格的标签,通过掩码prompt方法(其实基本就是思维链),让每个标签中的求解步骤,都是一步步进行的
  6. 最终,作者得到了一个新数据集,这个数据集的标签都是基于第5点构建的,且在该数据集上训练的模型效果较好。

1. 使用Mixtral模型合成问题-解答对

OpenMathInstruct-1数据集使用Mixtral模型,基于GSM8K和MATH来构建的。这个数据集包含了1.8M对问题-答案。

这里再补充点背景知识:

  • GSM8K和MATH这两个数据集包含了大量的数学题目和不同模型所给出的答案
  • 事实上直接使用 这两个数据集训练模型等价于拿gpt等模型的输出作蒸馏

数据集的优势在于Mixtral模型本身没有太多约束,其所产生的数据集可免费商用。

2. 提升训练集覆盖率的策略

为了弥补GPT-4和开源LLMs之间的性能差距,研究者采用了多种策略:

  1. 首先,他们尝试了为每个问题采样多个答案,但效果不佳
  2. 接着,作者采用了更加细粒度的处理方案,针对特定种类数学问题进行处理:通过为MATH数据集的每类数学问题编写少量提示来合成多个不同的答案。
  3. 最后,他们利用数学问题中的文本形式的答案,通过基于文本答案的prompt方法,辅助合成代码解释器风格的答案,并发现这种方法显著提高了模型性能。

这里顺便说明一下代码解释器风格:如下图所示:

可以看到,代码解释器格式将自然语言与Python代码块交织在一起。

使用字符串⟨llm-code⟩和⟨/llm-code⟩标记代码块的开始和结束。代码块后面跟着执行块,由⟨llm-code-output⟩和⟨/llm-code-output⟩标记。

在推理过程中,模型调用Python解释器来运行前面生成的代码块⟨/llm-code⟩,将执行结果附加在⟨llm-code-output⟩分隔符之间。

这里还有个interesting的点就是,已经有论文发现,仅在代码数据上训练出的用于coding的LLM再其他任务上也可以获得较好的效果,不知道这里对于模型输出风格的限制对于性能的提升有多少关系

3. 文本答案的掩码prompt方法

这里先说一下文本答案的含义:

如上图所示,GSM8K和MATH数据集中的每个问题,都有一个文本形式的解题思路,这就是文本答案。

研究者发现,将文本解决方案中的中间计算结果用掩码替换,可以将问题的代码解释器解决方案生成问题简化为文本到代码的翻译问题。如下图所示:

作者将文本答案中的中间结果全部mask掉了,从而将一个问题拆分成了形式为 <math xmlns="http://www.w3.org/1998/Math/MathML"> [ ( q 1 , t 1 , c 1 ) , ... , ( q K , t K , c K ) q ′ , t ′ ] [(q_1, t_1, c_1), \ldots, (q_K, t_K, c_K) q', t'] </math>[(q1,t1,c1),...,(qK,tK,cK)q′,t′]

这里,为了方便理解,我们再重复说一下整个论文的逻辑:

  1. 传统的数学推理模型的训练方式是:让强大的闭源模型(如gpt-4)在数学题目数据集上进行推理,并使用推理结果作为标签,制作一个新的数据集,用这个新数据集训练其他模型
  2. 但是使用闭源模型制作数据集会有成本问题和法律问题
  3. 但如果使用开源模型在数学题目上产生标签来制作数据集,这个数据集所训练出的模型的效果远不如闭源模型所产生的数据集的效果
  4. 本文就是探讨如何利用开源模型制作一个数据集,在这个数据集上训练的模型,其性能和在闭源数据集上训练的模型效果相近
  5. 作者基于已有的数学题目数据集,使用开源模型进行推理,但是作者对于模型的最终输出(即作者所制作的数据集的标签)进行了很多调整
    • 首先,作者要求开源模型输出的标签,必须是代码解释器风格
    • 而后,作者利用已有的文本风格的标签,通过掩码prompt方法(其实基本就是思维链),让每个标签中的求解步骤,都是一步步进行的
  6. 最终,作者得到了这样的一个数据集,在该数据集上训练的模型效果较好。 他们通过提示LLM生成掩码文本解决方案,显著提高了MATH的训练集覆盖率,从而提高了微调模型的性能。

实验设计:评估OpenMathInstruct-1的有效性

1. 数据选择与下采样策略

在构建OpenMathInstruct-1数据集时,我们采取了精心设计的数据选择和下采样策略。首先,我们从GSM8K和MATH这两个流行的数学推理基准中提取问题,然后使用开源的Mixtral模型通过少量提示(few-shot prompting)生成问题的解决方案。为了确保数据集的质量,我们采用了训练集覆盖率(Training Set Coverage, TSC)作为衡量标准,确保生成的解决方案能够覆盖训练集中的大部分问题。

在下采样方面,我们提出了公平采样(fair sampling)和简单采样(naive sampling)两种策略。公平采样策略通过轮询所有问题,并从每个问题的未选解决方案中采样,以确保数据集中每个问题的平衡代表性。这种方法在实验中表现出比简单采样更优越的性能,尤其是在MATH数据集上,这反映了MATH数据集中问题难度的不均衡性。

2. 评估设置与模型训练细节

在模型训练过程中,使用了AdamW优化器,权重衰减为1e-2,并设置了0.1的dropout。对于34B或更小的模型,我们进行了四个epoch的训练,并在每个epoch保存了一个检查点。对于最终模型的运行,我们每个epoch保存了两个检查点,并通过平均所有保存的检查点来创建最终检查点。

实验结果与分析

1. OpenMathInstruct-1与现有数据集的比较

OpenMathInstruct-1数据集与现有的数学推理微调数据集相比,数据量至少大了四倍,并且是可任意商用的数据集。作者在该数据集上训练并发布了基于Mistral-7B、Llama 2和CodeLlama的一系列模型。特别是,经过OpenMathInstruct-1子集微调的CodeLlama-70B模型,在GSM8K和MATH上的表现与当前最佳的gpt-distilled模型相当。

在构建OpenMathInstruct-1数据集时,我们采用了Mixtral模型来合成GSM8K和MATH这两个数学推理基准测试的代码解释器风格解决方案。为了比较不同的提示策略,我们进行了多种实验,包括默认提示、主题特定提示和使用掩蔽文本解决方案的提示。在默认提示策略中,我们为GSM8K样本生成了128个解决方案,达到了99.1%的训练集覆盖率,而对于MATH样本,我们生成了224个解决方案,但只达到了80.1%的覆盖率。这反映了MATH基准测试的难度较GSM8K更高。在主题特定提示策略中,我们为MATH数据集的七个数学主题创建了特定的提示,并合并了所有提示生成的解决方案,但这种方法只带来了微小的覆盖率提升。最终,我们采用了掩蔽文本解决方案的提示策略,这显著提高了训练集的覆盖率,对于MATH从80.1%提升至87.5%,对于GSM8K则从99.1%提升至99.9%。

总体而言,OpenMathInstruct-1数据集的构建和评估表明,即使是开源的LLMs,也能通过精心设计的提示策略和数据选择方法,生成高质量的数学推理解决方案,并在数学推理任务上取得与闭源模型相媲美的性能。

相关推荐
hsling松子1 小时前
使用PaddleHub智能生成,献上浓情国庆福
人工智能·算法·机器学习·语言模型·paddlepaddle
正在走向自律1 小时前
机器学习框架
人工智能·机器学习
好吃番茄2 小时前
U mamba配置问题;‘KeyError: ‘file_ending‘
人工智能·机器学习
CV-King3 小时前
opencv实战项目(三十):使用傅里叶变换进行图像边缘检测
人工智能·opencv·算法·计算机视觉
禁默3 小时前
2024年计算机视觉与艺术研讨会(CVA 2024)
人工智能·计算机视觉
whaosoft-1434 小时前
大模型~合集3
人工智能
Dream-Y.ocean4 小时前
文心智能体平台AgenBuilder | 搭建智能体:情感顾问叶晴
人工智能·智能体
丶21364 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
春末的南方城市5 小时前
FLUX的ID保持项目也来了! 字节开源PuLID-FLUX-v0.9.0,开启一致性风格写真新纪元!
人工智能·计算机视觉·stable diffusion·aigc·图像生成
zmjia1115 小时前
AI大语言模型进阶应用及模型优化、本地化部署、从0-1搭建、智能体构建技术
人工智能·语言模型·自然语言处理