查看原文
其他

增强大模型智能:数学推理能力的提升策略与实践

文亮 DataFunTalk
2024-09-10

导读 本文将分享如何提升大模型的数学推理能力。我们没有把数学推理能力与翻译、长文本生成等专项分开优化,而是视为通用能力的一部分。因为我们认为数学推理能力是衡量大模型智能水平的关键指标。

主要内容包括以下五个部分:

1. 大语言模型概述

2. 混合指令

3. 合成数据

4. 训练优化

5. 问答环节

分享嘉宾|文亮 奇虎360  资深算法专家 

编辑整理|王甲君

内容校对|李瑶

出品社区|DataFun


01

大语言模型概述

首先来回顾一下大模型的基本结构。上图中列出了当前一些主流大模型,比如 GPT 系列中的 GPT-3,发布于 2020 年,拥有 175B 参数,还有 Huggingface 的 Bloom、清华的 GLM 系列、Meta 的 LLaMA、百川的 Baichuan 和阿里的 Qwen 系列等等。除了清华的 GLM 使用的是 Prefix decoder,这些模型大多采用与 GPT 类似的架构。

这些模型的参数规模各不相同。GLM 系列除了最大 130B 的模型外,还有 6B 和 10B 的版本。Meta 的 LLaMA 系列有 65B 及其他不同规模的版本。千问系列有 7B、14B 和最大的 110B。这些开源模型为业界公司提供了很多优化的思路。

大模型的结构在业界已较为标准化,主要基于 transformer 结构。关键参数包括词表、transformer 层数、Multi-head 和全连接层。以 GPT-2 为例,它是一个 1.3B 参数的模型,词表大小 5 万,层数 24 层。根据参数计算公式, Embedding 层的 d_model 为 2048,乘以 5 万,得到其参数规模。QKV 计算、Attention Project 和 FFN 等参数加起来,最终得到 1.3B 的总参数。

大模型优化方面,常用的方法包括 SparseAttention、FlashAttention,以及其他结构如 MAQ 和 GQA 的优化,但整体结构仍基于 transformer。

大模型结构中,关键部分包括图上面的 Multi-head 和下面的点积注意力计算,右侧是大模型的总体结构示意。针对 Attention 的优化有 FlashAttention、SparseAttention 和 GQA,位置编码有绝对位置编码和 RoPE 等相对位置编码。优化主要是为了提升大模型的外推能力,尤其对长文本效果更好。此外,还有对激活函数和其他细节的优化,业界在这些方向上都做了很多工作。

大语言模型的构建通常分为四个部分。以 OpenAI 为例:①预训练,这是资源消耗最大的一环,通常使用 1000 多块 GPU,训练周期长,数据量达到数千亿 token,约几 TB;②SFT 层(有监督微调),主要优化指令对齐,数据量较少,通常为百万级,少数达千万级,训练时间为天级别;③训练奖励模型(Reward Model);④人工反馈强化学习(RLHF),这部分的成本与 SFT 相似,但如果使用传统 PPU 显存占用较高,数据量允许天级别完成。

LLaMA 等模型也遵循类似流程,比如说 LLaMA2-Chat,分为预训练、SFT、强化等阶段,根据人类反馈调整指令偏好。

大模型的构建可以分为三个部分。第一阶段是指令学习阶段,通过训练基座模型,使其理解人类指令,并根据人类编写的指令和高质量回答进行 SFT。第二阶段是让大模型更拟人性或者是更符合人类偏好(人类对模型输出进行偏好排序)。第三阶段是人类反馈强化学习阶段,是由四个模型构成:Reference Model(训练好的参考模型)、Reward Model(对生成结果评分的模型)、Actor Model(需要强化的模型)和 Critique Model(训练过程中的评分模型)。

前面回顾了大语言模型的基础结构,接下来将介绍数学推理优化的流程,分为四块:数据构建、数据筛选、模型构建、模型训练与优化。数学推理的数据分为混合指令和合成数据。其中合成数据是对当前数据的扩展,因为高质量的数学数据,尤其是应用类指令较少。数据筛选,包括质量筛选和多样性筛选,避免重复或相似问题。筛选原则依赖于 Reward Model 或 Critique Model。模型训练使用 Reference Model,训练好 SFT 后进行质量和多样性筛选,归为 RFT 流程,即拒绝采样流程。在 Reward Model 或 Critique Model 中,使用 PPO、DPO 或 RFT 流程。

接下来将详细介绍混合指令、合成数据和训练优化的具体做法。

02

混合指令

数学问题可以拆解为逻辑推理和数学应用两类。数学应用早期主要采用思维链(CoT)模式,后来为解决计算问题,引入了 PoT(Program-of-Thought)模式。当前的思路是数学分析或逻辑推理放到 CoT 部分处理,涉及计算的问题,如解方程或微积分计算,放到 PoT 部分。因此,混合指令由这两部分构成。

这样做有两个原因。首先,CoT 并不擅长复杂运算,尤其是积分和方程运算。尽管大模型在预训练中可以处理简单运算(如三位数的加减乘除),但对于更高阶的数学运算,PoT 的准确率更高,让大模型专注于擅长的部分。

其次,单纯使用 PoT 也有问题。在涉及需要推理的数学场景(如抽象代数和几何运算)时,PoT 显得不够直观,难以一步步推理。此外,它在整合前后逻辑关系时也存在问题。

所以现在我们使用的是混合指令。混合指令的前一部分是标准的 CoT 模式,比如 GPT-4o 的回答,前面的推理、中间的评分计算、合并同类项都是靠其数学推理能力一步步解决的。但我们发现最后的合并同类项出现了错误,前面的推理是完全正确的,公式引用也没问题,但在数值计算方面有误。

左侧的方案将其拆分为:前面采用 CoT 思维链模式,类似于 GPT-4o,而在最后的计算部分,使用 PoT 来提高准确性。这个方法对于大模型的数学推理来说虽然不复杂,但确实简单有效。

03

合成数据

接下来介绍合成数据。在预训练时我们能获得大量数学题目,但以英文为主。进行二阶段 SFT 时,我们发现开源的好数据很少。常用的数据集如 GSM8K 和 MATH,虽然不错,但数量有限。GSM8K 是小学数学推理题,MATH 类偏向竞赛题。

大模型在解题时表现优秀,但让它生成新问题则相对困难。这是因为解题需要的是运算能力,而生成新问题需要更高层次的思考和创造能力。

合成数据的 Self Instruct 是常用的方法,此方法早已提出。我们在种子任务中有部分高质量的数学问题集合,无论是购买的还是自建的。我们希望从这些高质量集合中扩展出更多样化的数学指令。为此,将其细分为数学问题,按学科拆解,如矩阵运算、微积分、方程等。拆解后,再对每个子问题进行 Self Instruct,以扩展种子任务。筛选时,若只对指令筛选,可用最长公共子序列或 Jaccard 距离等简单方法。

指令构建和筛选相对容易,但指令能否提供更多样化的问题则是一个难点。有些解出的题目不适合作为训练集,因此需严格把控指令和回答的质量。我们训练过 Reward Model,最新的英伟达 340B 模型评分最高为 92 分,我们的模型为 86.8 分,排第五。86.8 分包括所有任务,如生成任务和翻译任务。

针对数学类问题,我们理想的 Reward Model 评分分布应是正态分布,实际情况中,GPT-4o 评分在正确和错误回答间有明显区分度,但我们 Reward Model 的评分分布不明显。训练时,Reward Model 对同一问题的正确和错误答案进行排序,而非绝对值评分。因此,Reward Model 能合理地对相同问题的生成进行排序,但不同问题间的绝对值评分参考意义不大。

在质量过滤时,不仅考虑相同问题,还要考虑不同问题之间的差异。因此,我们选择了 Critique Model 进行绝对值打分。例如,左图中,先用 Reward Model 对 n 个问题评分,取前 M 个高分,再用 Critique Model 从下往上卡绝对值。

Critique Model 的训练如中图所示:首先构建指令,明确角色;然后提供参考答案和模型回答;最后,GPT-4o 给出步骤和最终分值。

整个 Critique Model 训练流程如下:从数据中提取问题和对应的参考答案,中间部分是标准指令,指导模型生成评判标准。最下面是 GPT-4o 或其他模型生成的打分结果。我们用这些数据训练 Critique Model。GPT-4o 对问题的打分准确率为 85.94%,Critique Model 训练后约为 84.76%。可以看到,GPT-4o 和 Critique Model 的最终打分分布差异明显。

04

训练优化

训练分两阶段:RFT 阶段和强化阶段。

在 RFT 阶段,我们采用这种方法有其背景。之前在大模型进行数学推理时发现,即使指令集不大,如果为每个问题生成多条不同的合理推理路径,可以提升模型的多样性和能力。因此,在 RFT 阶段,我们先训练一个 chat 模型,例如 LLaMA 进行 SFT 训练。一阶段训练后的模型在二阶段生成多条推理路径,经过 Reward Model 和 Critique Model 的质量过滤和多样性筛选。最终数据包含每个问题的多条推理路径,再用于更大模型进行 RFT。

使用小模型生成和筛选数据,是因为大模型采样成本过高。例如,10 万条指令每条采样 100 次,共生成 1000 万条数据,用大模型成本较高,而小模型生成数据更节省时间成本,其生成的推理路径更为多样化。

上图中可以反映出小模型的优势,比如右上角的 LLaMA 模型,我们可以看到 33B、7B 和 13B 的模型,其中推理路径贡献最大的一部分并不是 33B,而是 7B。下面的图也显示,7B 和 14B 的模型分别贡献了 41% 和 39% 的推理路径,而中间两个模型相交的推理路径只有 19%。这说明更小的模型在数据生成和采样方面,能得到更加多样化的推理路径。

整个 RFT 流程是使用较小的模型,例如我们会用 LLaMA 的小参数模型,来生成和过滤推理路径,并进行多样性选择,然后再将这些数据用于更大的模型进行 RFT。质量过滤包括 Reward Model 打分和 Critique Model 打分,多样性筛选是关键,因为重复的回答对大模型并不友好。

上图中展示了详细流程,比如左边图中的推理路径由 r1 到 r3,再加入一个新路径 r4。我们会计算 r1 到 r4 的相关性或距离,如果 r4 超过前两个路径的距离,就会替换其中一个,以保证选出路径间距离最大化。在我们的流程中,重点在 PoT 部分的多样性选择。PoT 部分相对结构化,不同推理路径会反映在 PoT 部分的不同实现方式上。

可以看一下,有三条路径对应三个部分的 PoT。路径一和路径二在 PoT 部分看似不同,但只是注释和变量命名不同。如果抽取关键信息,规范化变量命名并去掉冗余信息,会发现它们是完全相同的推理路径。只有路径三是真正不同的推理路径,通过设未知数和方程来实现不同的推理。因此,设置关键信息抽取模块,去掉冗余信息和规范化变量命名后,再计算相关性或距离度量,用作多样性筛选的一个评判标准。

最终实验结果显示,我们的模型每次采样 100 次,平均生成约 7.8 条推理路径。

我们也评估了准确率。在一个评测集上,SFT 后的准确率为 71%,RFT 为 77%。但 DPO 部分没有显著提升。DPO 从 RFT 中采样得分最高的答案(如九分)作为正例,得分最低的(如两分)作为负例,并训练 DPO 模型。训练时加了辅助 loss 以与 reference 对齐。但九分和两分的差距较大,DPO 能学到两者的差异,但在难以区分的问题上优化效果不佳。

复盘发现,DPO 提升不明显的主要原因:①在简单问题上,答案更固定化,导致多样性减少。②字数控制等方面做得更好,使得模型的分布更尖锐,logistic 输出更精准,但对难题的优化效果有限。

我们对 DPO 部分进行了优化,不再用九分和两分构建数据 pair 训练 DPO 模型,而是使用一些难以区分的问题。例如,数学中的精度控制问题,CoT 错误但 PoT 正确的问题,或多步 PoT 的难题。我们将这些难以通过 SFT 解决的案例放入 DPO。

我们做了两部分优化:PPO 和 DPO。最终效果显示,DPO 胜率为 17%,负率为 10%,差距为 7%;而 PPO 的差距仅为 1%。上图中右边的案例显示,SFT 难以解决的问题在 DPO 后确定性更好,减少了生成的随机性。

这是一个早期的工作,讲述了为什么要使用动态 loss。我们发现简单的数学或逻辑推理,7B 或 10B 模型就能很好地解决。在训练初期,准确率在前两个样本达到峰值,后续训练效果不明显。

而 hard sample 则需要更多轮训练才能收敛。举例来说,从前面 233 个 step 到最后 2047 个 step,loss 在后期才平缓。我们定义 hard sample 为模型有十条推理路径,但 Critique Model 打分准确率低于 50% 的问题。对这些 hard sample,特别是 PoT 部分,进行动态 loss 加权。

我们一直在进行数学推理的研究,作为大模型通用能力的一部分。上图中展示了今年 4 月的 Superclue 评测数据,这是一个闭源的第三方评测,看不到具体问题。数据显示 GPT-4-Turbo-0125 拥有最佳表现(GPT-4o 尚未推出),国内大模型中成绩最好的是从容大模型,接着就是 360gpt-pro,得分为 75.5 分。

以上就是本次分享的内容,谢谢大家。

05

问答环节

Q1:之前提到的 DPO 和 PPO 是基于两个测试集的结果,还是在两个不同的问题领域中的表现?另外,这两个方法之间存在什么主要差异?

A1:那个评测是在一个评测集上的,都是数学推理类的问题。我们做了两部分工作,一部分是 PPO,另一部分是 DPO。当时在构建 pair 对时,是根据 RFT 的最高得分和最低得分来构建的。这部分数据是重新构建的。

Q2:关于您们的合成数据工作,包括最近其他的合成数据研究,比如腾讯的 10 亿人设研究。您觉得为什么这种合成数据能在复杂推理任务中发挥作用?另外,您认为合成数据在复杂推理任务中的上限是什么?因为看腾讯的研究,Scaling 曲线表现很好。

A2:这个问题很好,也是我们目前在做的,我们数据组尤其关注合成数据。为什么要做合成数据?因为现有指令少,尤其是数学类的。我们需要更多的指令,同时要提高指令的难度。比如,现有的 GSM8K 和 MAS 类指令只能扩展到小学数学应用和竞赛题目,这在多样性和难度上都有问题。我们的做法是将问题细分为数学应用类、矩阵运算类、积分类等子类。每个子类下由标注人员构建种子指令,然后再进行数据合成。第一步必须做到位,第二步才能有效。

合成数据在复杂推理任务的天花板在于筛选逻辑。如果筛选机制好,生成模型足够优秀,就能生成更好的指令。要对指令进行关键词抽取,再根据 token 级别扩展,生成的指令才会更好。筛选机制也很重要,不仅要筛选好的指令,还要筛选指令的回答,这两者决定了天花板的高度。

英伟达的研究也展示了合成数据的重要性。只有 2 万条数据是人工标注的,98% 是合成数据。他们的筛选方法尤其对 MAS 类问题进行了分类,但主要针对简单问题,像 GSM8K 的简单替换。而在数学推理外,如 close QA 或 open QA 类问题,英伟达的方法可能会生成与原数据分布相似的数据,这不是我们想要的。我们需要分布之外的数据,有扩展性的合成数据。英伟达还注重 reward model 的训练,特别是 340B 的 reward model,这部分工作在于区分难分的指令。因此,合成数据需要细分领域或技能,最终的质量和多样性决定了效果。

Q3:老师您好,我们看到 Critique Model 和 GPT-4o 的打分分布已经接近,Critique Model 的大小是否考虑了不同参数量的影响?您提到生成样本数据时会用一个特别小的模型,所以判别模型也会很小,但英伟达的 reward model 很大。

A3:Critique Model 比 reference model 小很多。Critique Model 和 reward model 不同,reward model 很大,但Critique Model 不能太大。reward model 推理速度快很多,但它是二分类模型;而 Critique Model 是语言模型,两者属于不同类型的模型。
以上就是本次分享的内容,谢谢大家。


分享嘉宾

INTRODUCTION


文亮

奇虎360

资深算法专家

2016 年硕士毕业于电子科技大学信息与软件工程,《推荐系统技术原理与实践》作者,拥有超过 8 年的模型优化经验,硕士期间发表 5 篇论文,其中 3 篇被EI收录。在大模型方向拥有丰富的技术背景,参与过千亿大模型训练和优化。目前主要负责大模型后训练,COT 优化以及通用技能优化。

往期推荐


数据产品方法论:踩坑与超越!

Apache Paimon 实时湖仓存储底座

LLM+RAG:大模型在金融场景的落地探索

95% 向量资源节省,火山引擎云搜索 RAG 技术体系演进

天穹数仓自治能力在大模型时代的新实践

推荐系统融合排序的多目标寻优技术

GenAI时代的实时数据分析:Apache Pinot与向量索引技术探秘

金融,大模型落地的关键场景!

打造 LLMOps 时代 Prompt 数据驱动引擎

基于大模型的数据治理应用新范式

点个在看你最好看

SPRING HAS ARRIVED

继续滑动看下一个
DataFunTalk
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存