我的问题

1.DeepSeekMath 7B通过精心设计的数据选择管道挖掘公开网络数据潜力以及引入GRPO算法来提升成绩,具体的操作细节和技术原理是什么?

2.从Common Crawl中筛选出120B与数学相关标记数据时,如何确保筛选出的数据质量足够高且能有效提升模型数学推理能力?是不是所有来自Common Crawl的数据都适用,是否需多轮筛选和验证?

3.GRPO作为PPO的变体,做出了哪些关键改进,才实现了性能和内存使用的双重优化?

4.DeepSeekMath 7B经过64个样本的自一致性处理后成绩提升,自一致性处理是如何实施的?它在提升模型性能方面的原理是什么?这种方法是否具有普适性,能否应用到其他类似模型中提升其数学推理能力?

5.DeepSeekMath 7B与Gemini - Ultra和GPT-4相比,是否还存在尚未解决的差距?这些差距体现在哪些方面,是数学推理的准确性、泛化能力,还是在处理特定类型数学问题时的表现?

学习笔记

DeepSeekMath 7B提升成绩的秘密武器:数据选择管道与GRPO算法

一、精心设计的数据选择管道

(一)操作细节

  1. 确定“种子”数据:DeepSeekMath 7B从一个叫OpenWebMath的数据集里选取了高质量的数学网络文本作为起始的“种子”数据。这就好比我们学习新知识时,先找到一本非常好的入门教材,为后续的学习打下坚实基础。
  2. 训练筛选模型:利用这些“种子”数据,研究人员训练了一个名为fastText的模型。在训练过程中,从“种子”数据里随机挑选50万个数据点作为正例,同时从Common Crawl(一个庞大的公开网络数据集合)中选取50万个网页作为反例。训练时还设置了一些参数,像向量维度设为256、学习率设为0.1、词n - gram的最大长度设为3、词出现的最少次数设为3、训练轮数设为3等。这样训练好的fastText模型就像一个“数据筛选小助手”,能够识别出与数学相关的网页。
  3. 初步筛选数据:Common Crawl的数据量巨大,为了提高筛选效率,先采用URL去重和近去重技术,将数据量减少到400亿个HTML网页。接着,使用训练好的fastText模型从这些网页中筛选出数学相关的网页。为了保证筛选出的数据质量,根据fastText模型预测的分数对收集到的网页进行排序,只保留排名靠前的网页。通过在不同数量的标记数据(如前400亿、800亿、1200亿和1600亿标记)上进行预训练实验,在第一轮选择保留前400亿标记的数据。
  4. 优化筛选过程:经过第一轮筛选后,发现还有很多数学网页未被收集到,原因是fastText模型训练时使用的正例缺乏多样性。于是,研究人员进一步寻找更多的数学网页来源来丰富“种子”数据。他们将整个Common Crawl按照域名进行划分,对于每个域名,计算第一轮筛选中被收集的网页占比。如果一个域名中超过10%的网页被收集,就将其归类为数学相关域名(例如mathoverflow.net)。然后,人工标注这些域名中与数学内容相关的URL(例如mathoverflow.net/questions),把那些与这些URL相关但未被收集的网页添加到“种子”数据中。通过这种方式,为fastText模型提供了更多的正例,使其能够学习到更丰富的数学网页特征,从而在后续的筛选中表现得更加出色。经过四轮这样的迭代筛选,最终收集到了3550万个数学网页,总共有1200亿个标记的数据。
  5. 去除污染数据:为了避免模型在训练过程中接触到与测试集相同的问题或答案,导致测试结果不准确,研究人员对收集到的数据进行了去污染处理。具体做法是,过滤掉包含来自英语数学基准测试(如GSM8K和MATH)以及中文数学基准测试(如CMATH和AGIEval)中问题或答案的网页。过滤标准为:如果文本段中包含与评估基准中任何子字符串完全匹配的10 - gram字符串,则将其从数学训练语料库中删除;对于长度小于10克但至少3克的基准文本,则采用精确匹配的方式过滤掉受污染的网页。

(二)技术原理

  1. 模式识别原理:fastText模型的核心技术原理是通过学习大量的数学网页数据,识别其中的模式和特征。数学网页通常包含特定的数学符号、术语、公式结构等特征,fastText模型在训练过程中,从正例和反例中学习这些特征,建立起一个数学网页识别模型。当用它去筛选Common Crawl中的网页时,就能够根据这些学到的特征判断一个网页是否与数学相关。
  2. 迭代优化原理:数据选择过程采用迭代的方式,每一轮都对筛选过程进行优化。随着“种子”数据的不断丰富,fastText模型学习到的数学网页特征也越来越全面,其筛选能力不断提高。这种迭代优化的过程使得收集到的数据质量不断提升,包含了更丰富、更全面的数学知识和推理信息,为模型的训练提供了更优质的素材。

二、引入GRPO算法

(一)操作细节

  1. PPO算法的问题与GRPO的改进思路:在介绍GRPO算法之前,先了解一下它改进的对象——近端策略优化(PPO)算法。PPO是一种在语言模型强化学习微调阶段广泛使用的算法,但它存在一些问题。PPO需要训练一个与策略模型规模相当的价值函数,这不仅增加了计算负担和内存消耗,而且在语言模型中,通常只有最后一个标记会得到奖励分数,这使得训练一个准确的价值函数变得困难。为了解决这些问题,GRPO算法提出了一种新的思路。
  2. GRPO的具体操作步骤:在GRPO算法中,对于每个问题,从旧的策略模型中采样一组输出(假设有G个输出)。然后,使用奖励模型对这些输出进行评分,得到G个奖励分数。接下来,对这些奖励分数进行标准化处理,即减去奖励分数的平均值并除以标准差。在计算优势时,根据不同的监督方式有不同的计算方法。在结果监督中,将标准化后的奖励作为每个输出所有标记的优势;在过程监督中,计算每个标记的优势为从该标记开始到输出结束的所有后续步骤标准化奖励的总和。最后,通过最大化一个目标函数来优化策略模型。这个目标函数中,除了考虑优势,还添加了一个基于相对奖励计算的项以及一个直接的KL散度项来进行正则化。与PPO不同,GRPO直接将KL散度添加到损失中,避免了在优势计算中引入复杂的KL惩罚项,使得计算更加简洁。
  3. 迭代训练过程:随着强化学习训练过程的推进,旧的奖励模型可能无法很好地监督当前的策略模型。因此,GRPO算法采用迭代的方式进行训练。在每次迭代中,根据策略模型的采样结果生成新的训练集,用于持续训练奖励模型,并使用一种包含10%历史数据的回放机制来更新奖励模型。同时,将参考模型设置为当前的策略模型,然后使用更新后的奖励模型继续训练策略模型,不断提升模型的性能。

(二)技术原理

  1. 简化计算与降低负担:GRPO算法摒弃了PPO中复杂的价值函数训练,而是通过计算一组输出的平均奖励来作为基准线。这种方法大大简化了计算过程,降低了内存和计算资源的消耗。因为不再需要训练一个与策略模型规模相当的价值函数,模型在训练过程中可以更加高效地运行。
  2. 利用相对奖励进行优化:GRPO算法基于相对奖励计算优势,这种方式与奖励模型的工作方式相契合。奖励模型通常是通过比较不同输出在同一问题上的表现来进行评分的,GRPO利用这一特点,根据输出之间的相对优劣来调整策略模型。对于表现较好的输出(即奖励分数较高的输出),模型会强化生成这种输出的策略;对于表现较差的输出,则会调整策略以避免生成类似的输出。通过这种方式,模型能够更加有效地学习到最优的策略,从而在数学推理任务中取得更好的成绩。

如何确保筛选出的数据质量足够高且能有效提升模型数学推理能力

  1. 选择优质“种子”数据:就像盖房子需要好的基石一样,筛选数据也需要一个好的起点。研究人员选择了OpenWebMath这个包含高质量数学网络文本的数据集作为“种子”数据。这些数据经过了一定的筛选和整理,本身质量就比较高,就好比是精挑细选的优质建筑材料,为后续的筛选工作提供了可靠的基础。
  2. 训练专门的筛选模型:利用这些“种子”数据,研究人员训练了一个叫fastText的模型。在训练时,从“种子”数据里选50万个数据点当作正例,再从Common Crawl里随机选50万个网页当作反例。训练的时候还设置了很多参数,比如向量维度设为256、学习率设为0.1 等。这样训练出来的fastText模型,就像是一个智能“筛选小助手”,它学会了数学网页该有的样子。数学网页一般会有独特的符号、术语和表达结构,fastText模型通过学习这些特点,就能够从大量数据里找出可能是数学相关的网页。
  3. 多轮筛选与质量控制:Common Crawl的数据太多了,所以先要用URL去重和近去重技术,把数据量缩小到400亿个HTML网页,这就像是先把一堆杂乱的东西简单整理一下,方便后续筛选。然后用训练好的fastText模型去筛选这些网页。筛选完后,还会按照fastText模型给出的分数对网页进行排序,只留下分数高的网页。为了确定留下多少数据合适,研究人员还做了不同规模数据的预训练实验,比如在400亿、800亿、1200亿和1600亿标记数据上分别尝试,最后在第一轮选择保留前400亿标记的数据。这一系列操作就像是层层把关,保证留下的数据质量更高。
  4. 迭代优化筛选过程:第一轮筛选完后,发现还有不少数学网页没被选上。这是因为fastText模型训练用的正例不够多样,就像一个人只看过有限的几种数学书,对数学的了解不够全面一样。所以,研究人员又找了更多数学网页来源,把Common Crawl按域名划分,看看哪些域名里数学网页多。如果一个域名里超过10%的网页被第一轮筛选收集到了,就把这个域名当成数学相关的,像mathoverflow.net。然后人工去标注这些域名里和数学有关的URL,把和这些URL相关但之前没收集到的网页加到“种子”数据里。这样,“种子”数据就更丰富了,再用它训练fastText模型,模型就能学到更多数学网页的特点,筛选能力也就更强了。经过四轮这样的迭代筛选,最后得到了3550万个数学网页,总共1200亿个标记的数据。
  5. 去除“坏数据”:为了让模型学习到的都是有用的知识,不会被测试集里的问题或答案干扰,研究人员还对数据进行了去污染处理。如果一个网页的文本里有和英语数学基准测试(像GSM8K和MATH)或者中文数学基准测试(像CMATH和AGIEval)里一样的内容,就把这个网页去掉。具体来说,如果文本里有和评估基准里10个字符长度的子字符串完全一样的部分,就删除这个网页;如果基准文本比较短,不到10个字符但至少有3个字符,就用精确匹配的方法把受污染的网页过滤掉。

是不是所有来自Common Crawl的数据都适用,是否需多轮筛选和验证

不是所有来自Common Crawl的数据都适用。Common Crawl包含了各种各样的信息,有很多数据和数学推理没什么关系,比如一些娱乐新闻、生活琐事的网页数据。如果把这些数据都放进模型训练里,就像给一个正在学习数学的学生看很多和数学无关的漫画书,会分散他的注意力,让他没办法专注学习数学知识,也没办法提高数学推理能力。

多轮筛选和验证是非常有必要的。第一轮筛选虽然能找到一些数学相关的网页,但因为“种子”数据的局限性,很多数学网页没被选到。随着后续不断丰富“种子”数据,多轮训练fastText模型,筛选出的数学网页会越来越全面,数据质量也会越来越高。而且,通过在不同规模数据上做预训练实验,以及不断调整筛选标准,能确保筛选出的数据更适合用来训练模型,提升模型的数学推理能力。就像做科学实验一样,多轮筛选和验证就像是多次实验和改进,能让结果更加准确和可靠。

GRPO作为PPO的变体,做出了哪些关键改进,才实现了性能和内存使用的双重优化?

在理解GRPO对PPO的改进之前,我们先简单认识一下PPO(近端策略优化)算法。PPO是一种广泛应用在语言模型强化学习微调阶段的算法,它就像是一个能让模型变得更聪明的“训练师”,通过不断调整模型的策略,让模型在各种任务中表现得更好。但是PPO在工作的时候遇到了一些麻烦。

PPO在优化模型时,需要训练一个价值函数。这个价值函数就像是一个“评估员”,用来评估模型做出的决策好不好。但问题在于,这个“评估员”的训练可不简单,它需要占用大量的内存,计算起来也很复杂,因为它通常和策略模型的规模差不多大。而且在语言模型中,奖励分数一般只给最后一个标记,这就好像只看学生最后一次考试成绩来评价他一学期的表现,很难让这个“评估员”准确地给每个决策打分。

那GRPO(Group Relative Policy Optimization)作为PPO的变体,是怎么解决这些问题的呢?

1. 去除价值函数,简化计算过程

GRPO直接舍弃了PPO中复杂的价值函数。它不再依赖这个“评估员”来计算优势(优势可以理解为模型当前决策比平均决策好多少的一个指标),而是采用了一种更简单直接的方法。对于每个问题,GRPO从旧的策略模型中采样出一组输出,就好比让模型给出好几个不同的答案。然后用奖励模型给这些答案打分,再通过这些分数算出一个平均奖励作为基准线。这样一来,就不需要花费大量的内存和计算资源去训练价值函数了,大大简化了整个计算过程,就像去掉了一个复杂的工具,用更简单的方法达到了类似的目的。

2. 基于相对奖励计算优势

GRPO计算优势的方式和PPO也不一样。PPO计算优势时,要结合价值函数和奖励来算,过程比较复杂。而GRPO是基于相对奖励来计算优势的。比如说,模型针对一个数学问题给出了一组答案,GRPO会比较这组答案之间的优劣,根据它们的相对表现来调整策略。表现好的答案,对应的策略就会得到强化,让模型以后更容易给出类似的好答案;表现差的答案,就促使模型调整策略,避免再给出这样的答案。这种基于相对奖励的计算方式,和奖励模型的工作方式很契合,因为奖励模型本身就是通过比较不同输出在同一问题上的表现来打分的。这样,GRPO就能更有效地利用奖励信号,让模型更快地学习到好的策略,提升了模型的性能。

3. 改变正则化方式

PPO在计算奖励时,会添加一个从参考模型来的每标记KL(Kullback-Leibler)散度惩罚项,来防止奖励模型过度优化。但这个惩罚项加在奖励里,会让优势的计算变得更复杂。GRPO则换了一种思路,它直接把KL散度加到损失里进行正则化,这样就避免了在优势计算中引入复杂的KL惩罚项,让整个计算过程更加清晰、简单。这就好比把一个复杂的操作从一个关键的计算步骤中拿出来,单独进行处理,使得关键步骤变得更简洁,减少了出错的可能性。

通过这一系列的关键改进,GRPO既减少了内存的使用,又提升了模型的性能。就像给一辆车换了更高效的发动机,还减轻了车身重量,让车跑得更快更稳。

DeepSeekMath 7B自一致性处理的神奇魔力

在理解DeepSeekMath 7B的自一致性处理之前,咱们先把模型想象成一个正在努力学习数学的学生。这个学生(模型)要解决各种各样的数学问题,而自一致性处理就像是一种特殊的学习方法,能帮助它提高考试(测试)成绩。下面,咱们就详细看看这个神奇的自一致性处理是怎么回事。

一、自一致性处理是如何实施的

当DeepSeekMath 7B面对一个数学问题时,它不会只给出一个答案,而是像一个细心的解题者一样,尝试从不同的思考角度去解答,从而生成64个不同的答案。这就好比咱们在做数学题时,有时候会尝试用不同的方法解题,可能用代数方法算一遍,再用几何方法算一遍。

得到这64个答案后,模型会检查这些答案之间的一致性。如果大部分答案都指向同一个结果,或者说它们之间有很高的相似性,那就说明模型对这个问题的理解比较准确和稳定。比如说,在计算一道应用题时,大部分答案都得出正确的结果,只有少数几个答案出现错误,那么正确的结果就更可靠。

然后,模型会根据这些答案的一致性情况来调整自己的输出。如果一致性高,模型就更有信心输出占主导地位的那个答案;如果一致性低,模型可能会重新思考解题思路,或者对答案进行进一步的筛选和修正。通过这样的方式,模型可以提高最终输出答案的准确性和可靠性。

二、它在提升模型性能方面的原理是什么

自一致性处理提升模型性能的原理,可以从几个方面来理解。

首先,数学问题往往有多种解决方法,就像条条大路通罗马。自一致性处理鼓励模型探索多种解题路径,而不是局限于一种。这样一来,模型就能更全面地理解问题,考虑到更多的解题思路和可能性。比如一道几何证明题,可能有多种辅助线的做法,模型通过尝试不同的方法,就能更深入地理解题目条件和几何关系,从而找到更准确的证明方法。

其次,通过检查多个答案的一致性,模型可以发现那些不稳定或者错误的答案。这就好比在一群学生的答案中,老师能发现哪些是瞎猜的或者计算错误的。把这些不可靠的答案排除掉,模型最终输出的答案就更有可能是正确的。

最后,自一致性处理可以增强模型的鲁棒性。鲁棒性就是模型面对各种情况都能稳定发挥的能力。当模型经过自一致性处理后,它对问题的理解更加深入,不会轻易受到一些微小的干扰或者错误信息的影响。就像一个经验丰富的学生,不管考试题目出得多么刁钻,都能凭借扎实的知识稳定发挥。

三、这种方法是否具有普适性,能否应用到其他类似模型中提升其数学推理能力

自一致性处理是一种很有潜力的方法,在一定程度上具有普适性,可以应用到其他类似模型中提升数学推理能力。

对于很多基于语言模型的数学推理系统来说,它们面临的问题有相似性,比如都需要准确理解数学问题、找到合适的解题方法并输出正确答案。自一致性处理的核心思想,即从多个角度思考问题并检查答案的一致性,对于这些模型同样适用。

比如说,其他模型在解决数学问题时,也可以尝试生成多个答案,然后通过检查一致性来提高答案的质量。这样做可以帮助模型避免因为单一思考角度而导致的错误,提高对复杂问题的处理能力。

但是,要将自一致性处理应用到其他模型中,也需要考虑一些问题。不同的模型结构和训练方式可能会影响自一致性处理的效果。有些模型可能在生成多个答案时效率不高,或者在检查一致性时遇到困难。这就好比不同的学生有不同的学习习惯和能力,同样的学习方法对不同学生的效果可能不一样。所以,在应用自一致性处理时,可能需要根据不同模型的特点进行调整和优化,找到最适合它们的应用方式,这样才能更好地发挥自一致性处理的优势,提升模型的数学推理能力。

DeepSeekMath 7B与Gemini-Ultra、GPT-4的差距分析

在大语言模型的数学推理领域,Gemini-Ultra和GPT-4就像是两座难以逾越的高山,DeepSeekMath 7B则是后来者。虽然DeepSeekMath 7B已经取得了非常不错的成绩,但和这两位“前辈”相比,还是可能存在一些尚未解决的差距。下面我们就详细分析一下这些差距体现在哪些方面。

一、数学推理的准确性

从论文中给出的数据来看,DeepSeekMath 7B在竞赛级MATH基准测试中取得了51.7%的成绩,而Gemini-Ultra和GPT-4的表现更为出色。这说明在整体的数学推理准确性上,DeepSeekMath 7B还有提升空间。

数学推理准确性的差距可能源于多个方面。首先是数据的差异。虽然DeepSeekMath 7B使用了精心筛选的120B数学相关标记数据进行训练,但Gemini-Ultra和GPT-4背后的团队可能拥有更庞大、更丰富多样的数据资源,这些数据涵盖了更广泛的数学知识领域和更多样化的数学问题类型,这有助于模型学习到更全面的解题思路和方法,从而提高推理的准确性。

其次,模型的架构和训练方式也起着关键作用。Gemini-Ultra和GPT-4经过了大量的优化和复杂的训练过程,它们的架构设计可能更适合处理各种数学推理任务。而DeepSeekMath 7B虽然在训练过程中采用了创新的方法,如GRPO算法,但在模型架构的深度和复杂性上,或许还不及Gemini-Ultra和GPT-4,这在一定程度上影响了它的推理准确性。

二、泛化能力

泛化能力指的是模型在面对新的、未见过的数学问题时,能否运用已学知识进行有效推理并得出正确答案的能力。目前并没有直接的数据表明DeepSeekMath 7B在泛化能力上与Gemini-Ultra和GPT-4的差距,但我们可以进行一些合理推测。

DeepSeekMath 7B主要是在特定的数学语料库上进行训练,虽然这个语料库规模很大且质量较高,但相比之下,Gemini-Ultra和GPT-4可能接触到了更广泛的知识领域和更多类型的问题,包括不同学科中的数学应用、各种实际场景中的数学问题等。这使得Gemini-Ultra和GPT-4在面对全新的数学问题时,能够更好地从多个角度思考,运用不同领域的知识来辅助解题,泛化能力可能更强。

例如,当遇到一个结合物理知识的数学问题时,Gemini-Ultra和GPT-4也许能凭借更广泛的知识储备,更快地理解问题背景并找到解题思路。而DeepSeekMath 7B可能由于训练数据的局限性,在处理这类跨学科或具有复杂背景的数学问题时,泛化能力不足的问题就可能会显现出来。

三、处理特定类型数学问题时的表现

在处理特定类型数学问题方面,DeepSeekMath 7B与Gemini-Ultra、GPT-4也可能存在差距。从论文中提到的实验结果可知,在一些正式数学证明任务,如在miniF2F基准测试中进行非正式到正式的定理证明时,虽然DeepSeekMath 7B表现出了一定的能力,但与Gemini-Ultra和GPT-4相比,可能还有进步空间。

对于几何问题,尤其是涉及复杂图形和空间关系的问题,Gemini-Ultra和GPT-4可能具有更强的理解和推理能力。这可能是因为它们在训练过程中接触到了更多高质量的几何相关数据,包括各种几何证明的范例、几何图形的性质和变换规律等。相比之下,DeepSeekMath 7B在处理三角形、椭圆等相关问题时,可能会出现理解困难或推理错误的情况,这反映出它在特定几何知识领域的训练可能不够充分。

在处理一些需要深入数学理论知识的问题时,Gemini-Ultra和GPT-4可能也更具优势。例如在数论、高等代数等领域的复杂问题,这些模型可能凭借更深厚的数学知识储备和更强大的推理能力,准确地找到解题方法。而DeepSeekMath 7B可能会因为对这些高深数学理论的学习不够深入,导致在处理这类问题时表现欠佳。