摘要
近日,中国团队Deepseek推出了一款名为DeepSeekMath的7B开源数学模型,这个模型在数学方面的表现令人惊叹。DeepSeekMath 7 B在不依赖外部工具包和投票技术的情况下,在竞赛级MATH基准测试中获得了51.7%的分数,接近Gemini-Ultra和GPT-4的性能水平。DeepSeekMath 7B的64个样本在数学上的自我一致性达到60.9%。
本文将深入探讨DeepSeekMath的技术特点和开发过程,以及它在数学领域中的潜力和应用前景。
1.简介
在本研究中,作者引入了DeepSeekMath,这是一个特定于领域的语言模型,它的数学性能显著优于开源模型,在学术基准测试中接近GPT-4的性能水平。
为了实现这一目标,作者创建了DeepSeekMath语料库,这是一个包含120 B个数学标记的大规模高质量预训练语料库。在初始迭代中,使用OpenWebMath中的实例来训练分类器作为正面例子,同时纳入了其他网页的多样化选择作为负面例子。随后,使用基于fastText的分类器从Common Crawl中挖掘额外的正实例,这些正实例通过人工标注进一步细化。然后用该增强的数据集更新分类器以提高其性能。评测结果表明,大规模语料库具有较高的质量,因为我们的基础模型DeepSeekMath-Base 7B在GSM 8 K上达到了64.2%和36.2%的竞争水平MATH数据集,性能优于Minerva 540 B。
DeepSeekMath利用DeepSeek-Coder-Base-v1. 57 B进行初始化,因为作者注意到,与一般的LLM相比,从代码训练模型开始是更好的选择。此外,作者观察到数学训练也提高了MMLU上的模型能力和BBH基准,表明它不仅增强了模型的数学能力,而且增强了一般推理能力。
在预训练之后,作者将数学指令调整应用于DeepSeekMath-Base,使其拥有思维链(chain-of-thought),程序链(program-of-thought)和工具集成推理(tool-integrated reasoning)的能力。由此产生的模型DeepSeekMath-Instruct 7 B击败了所有7 B对应模型,并与70 B开源指令调优模型相当。
此外,作者还介绍了组相对策略优化(GRPO),它是邻近策略优化(PPO)的一种变体强化学习算法。GRPO放弃了批评者模型,而是根据小组得分来估计基线,从而显著减少了培训资源。通过仅使用英语指令调优数据的子集,GRPO获得了相对于强大的DeepSeekMath-Instruct的实质性改进。
作者还提供了一个统一的范例来理解不同的方法,如拒绝采样微调(RFT),直接偏好优化(DPO)、PPO和GRPO。基于这样一个统一的范式,作者发现所有这些方法都可以被概念化为直接或简化的RL技术。最后,作者解释了为什么作者的RL提高了指令调优模型的性能,并进一步总结了基于这种统一范式实现更有效的RL的潜在方向。
总的来说,作者的贡献如下:
规模化数学预训练
- 通过实现精心设计的数据选择管道,作者成功构建了DeepSeekMath Corpus,这是一个高质量的数据集,包含120B个标记,这些标记来自经过数学内容过滤的网页,几乎是Minerva所使用的数学网页大小的7倍和最近发布的OpenWebMath的9倍大小
- 作者的预训练基础模型DeepSeekMath-Base 7 B实现了与Minerva 540 B相当的性能,表明参数的数量不是数学推理能力的唯一关键因素。在高质量数据上预先训练的较小模型也可以实现强大的性能。
- 回答了一个长期存在的问题:代码训练能提高推理能力吗?作者相信,至少在数学推理上是这样的。
- 尽管在arXiv论文上进行训练很常见,特别是在许多与数学相关的论文中,但它并没有带来显着的改进。
强化学习探析
- 作者引入了组相对策略优化(GRPO),这是一种高效且有效的强化学习算法。GRPO放弃了批评者模型,而是从组分数中估计基线,与最近策略优化(PPO)相比,显着减少了培训资源。GRPO显着提高了DeepSeekMath-Instruct的性能,通过单独使用预调数据。
- 作者提供了一个统一的范式来理解不同的方法,如RFT,DPO,PPO和GRPO。作者还进行了广泛的实验,以深入研究这种范式的基本要素。
-
-
2.数学预训练
数据收集和过滤
在本节中,我们将概述通过Common Crawl构建DeepSeekMath语料库的过程。
如图所示,这里展示了一个迭代管道,演示了如何从Common Crawl系统地收集大规模数学语料库,从种子语料库(例如,与数学相关数据集的小但高质量的数据集)。值得注意的是,这种方法也适用于其他领域,如编码。
首先,作者选择了OpenWebMath作为初始种子语料库,这是一个高质量的数学网络文本的集合。使用该语料库,作者训练了fastText模型,以寻找更多类似OpenWebMath-like数学网页。具体地说,作者从种子语料库中随机选取50万个数据点作为正样本,从Common Crawl中随机选取50万个网页作为负样本。为了减少原始Common Crawl的大小,作者采用了基于URL的重复数据删除和近似重复数据删除技术,产生了40 B HTML网页数据。
然后,作者用fastText模型从去重的Common Crawl中召回数学网页。为了过滤掉低质量的数学内容,作者根据fastText模型预测的分数对收集到的页面进行排名,只保留排名最高的页面。通过对前40 B、80 B、120 B和160 B令牌进行预训练实验来评估保留的数据量。在第一次迭代中,作者选择保留前40 B个令牌。
在数据收集的第一次迭代之后,大量的数学网页仍然没有被收集到,主要是因为fastText模型是在一组缺乏足够多样性的正例上训练的。因此,作者识别额外的数学网络资源来丰富种子语料库,以便优化fastText模型。具体地说,首先将整个Common Crawl组织到不相交的域中;域被定义为共享同一个基本URL的网页。对于每个域,计算在第一次迭代中收集的网页的百分比。已经收集了超过10%的网页的领域被分类为数学相关的(例如,mathoverflow.net)。随后,作者手动地注释与这些识别的域中的数学内容相关联的URL(例如,mathoverflow.net/questions).链接到这些URL但尚未收集的网页将被添加到种子语料库。该方法能够收集更多的正样本,从而训练出一个改进的fastText模型,该模型能够在后续的迭代中调用更多的数学数据。
经过四次迭代的数据收集,最终得到了3550万个数学网页,总计1200亿个令牌。在第四次迭代中,作者注意到在第三次迭代中已经收集了将近98%的数据,因此决定停止数据收集。
为了避免基准测试污染,作者过滤掉包含来自GSM8K、MATH、中文基准如 CMATH、AGIEval。过滤标准如下:从作者的数学训练语料库中删除与基准的任何子串达到10-gram匹配的任何文本片段。对于长度小于10-grams但至少3-grams的基准文本,作者采用精确匹配来过滤被污染的网页。
-
验证DeepSeekMath语料库的质量
作者运行预训练实验来将DeepSeekMath语料库与最近发布的数学训练语料库进行比较:
- MathPile:从教科书、维基百科、ProofWiki、CommonCrawl、StackExchange和arXiv聚合的多源语料库(8.9B令牌),其中大部分(超过85%)来自arXiv;
- OpenWebMath:根据数学内容过滤的CommonCrawl数据,总计136亿个令牌
- Proof-Pile-2:一个数学语料库,由OpenWebMath、AlgebraicStack(10.3B数学代码令牌)和arXiv papers(28.0B令牌)组成。当在Proof-Pile-2上进行实验时,作者遵循Arzibayev等人(2023)使用的arXiv:Web:Code比例为2:4:1。
作者将数学训练应用于具有1.3B参数的一般预训练语