「专业智能体指导」让小模型学会数学推理!微调Mistral-7B实现86.81%准确率
对于小型语言模型(SLM)来说,数学应用题求解是一项很复杂的任务。
比如之前有研究结果显示,在GSM 8K基准测试中实现80%以上准确度所需的最小模型尺寸为340亿个参数。
为了在较小的模型上达到这种性能水平,研究人员经常训练SLM来生成Python代码或使用外部工具作为辅助,以避免计算错误。
或是基于集成(ensembling)技术,将100多个模型生成的输出组合在一起,以获得更准确的结果,最终结果的选择需要通过共识、多数表决或与SLM结合使用的单独的验证器模型来完成,可以显著提升准确率(Phi-GSM使用top-48将性能从68.2提升到81.5),不过代价是由于多次调用模型导致的成本显著增加。
最近,微软的研究人员提出了一个基于Mistral-7B、70亿参数量的小型语言模型Orca-Math,它在GSM 8 k上实现了86.81%,不需要调用多个模型进行集成或使用验证器、代码执行或任何其他外部工具。
论文链接:https://arxiv.org/abs/2402.14830
Orca-Math的关键特性为:
1. 使用多个智能体(agent)创建出20万个数学问题的高质量合成数据集,其中智能体合作创建数据;
2. 迭代学习技术,使SLM能够练习解决问题,接收对其解决方案的反馈,并从包含SLM解决方案和反馈的偏好数据中学习。
当单独使用有监督微调训练时,Orca-Math在GSM 8 k pass@1指标上达到81.50%。通过迭代偏好学习,Orca-Math实现了86.81%的pass@1
Orca-Math超越了LLAMA-2- 70B,WizardMath-70B,Gemini-Pro,ChatGPT-3.5等更大型号的性能,在使用小得多的数据(数十万对数百万问题)时也显著优于其他较小的模型。
数据集构造
种子集合
首先从现有的开源数据集中收集数学单词问题样本,即NumGLUE、AddSub、ALGES、ASDiv、DRAW、GSM8k、MATHQA、MultiArith、SingeOP、SingleEQ和SVAMP。
研究人员从Lila的训练和验证分裂中收集问题,以构建种子集,总共收集了36217个问题。
智能体 - ask me anything
通过从种子集中的问题创建多个单词问题来扩展种子集,利用后续提示来创建问题。
智能体总共生成了120445个新问题,但所有生成的问题都表现出与种子词问题相似的叙述方式,具体解决方案是使用GPT4-Trubo生成的。
智能体 - Suggester & Editor
通过解决具有挑战性的问题进一步扩大种子集合。
为了实现这一点,研究人员引入了两个新的智能体,即Suggester和Editor,可以协同工作以创建一个面向预定义目标的数据集:修改现有问题以增加其难度。
Suggester研究一个特定的问题,并提出了几种在不产生实际问题的情况下提高其复杂性的方法。
Editor采用原始单词问题和Suggester的建议,生成一个更新的、更具挑战性的问题,迭代过程可以发生在多个回合中,每一回合都会进一步增加先前生成的问题的复杂性。
眼人员利用AutoGen框架来实现多智能体工作流。
对每个问题进行两轮迭代,并过滤GPT4-Turbo生成的答案超过1800个字符的问题,最终收集了37157个问题。
训练
有监督微调实验(第一次迭代)
在Orca-Math-200K数据集上对Mistral-7B进行了微调,没有使用packing,下面为具体的指令格式。
损失函数只基于答案token来计算。
正负信号的迭代学习
数据集构建(第二次迭代)
为了为每个问题生成额外的正样本和负样本,研究人员从第一次迭代的SFT调优模型中采样四个回复。
具体来说,使用top_p=0.95和温度=0.7,过程产生了一个数据集,其中200000个问题中的每个问题都有一个GPT4-Turbo生成的解决方案和四个学生生成的解决方法。
使用基于GPT4的精确匹配中定义的提示来评估教师(GPT4-Turbo)的答案和学生的答案之间的一致性。
对于学生生成的答案与老师的答案不匹配的所有解决方案,将其标记为负样本。
数据集构建(第三次迭代)
为了从正反馈和负反馈中学习,研究人员评估了两种算法的性能:直接偏好优化(DPO)和Kahneman-Tversky优化(KTO),还探索了KTO的功能,其区别在于只需要二进制「是」或「否」的回复来评估输出的质量。
评估方法
研究人员使用精确匹配作为评估指标。
给定一个模型生成的答案,提示GPT-4来提取最终的简短答案,并将其与金标准中的简短答案进行匹配,即基于GPT4的精确匹配(GPT4-based-Exact-Match)。
实验结果
研究人员测试了模型在包含1319个单词问题的GSM8k测试集上几个训练过程的性能,对Mistral-7B模型进行了三次迭代的微调
在第一次迭代中,使用有监督微调来获得M1;
第二次迭代中,对比了SFT、DPO和KTO,其中KTO训练的模型在这一组中表现更好,获得M2后,并使用M2生成迭代#3的数据集;
第三次迭代中,对比了DPO和KTO方法,使用M2作为模型起点。
研究人员还将这些模型与Orca-Math-200K数据集上经过三个epoch的SFT训练进行了对比。
消融实验
Model Generated Positives
通过将
限制为仅包含教师生成的解决方案来研究影响模型生成的正向因素(positives),换言之,研究人员移除在为迭代#2创建数据集时模型生成的所有
结果显示,不管训练算法如何,都会看到显著的性能下降。
Synthetic Negatives
数据集的创建包括在M1或M2生成的所有四个回复都是positive的情况下的合成负样本(negative creation)。
通过忽略问题qi来研究这些合成负样本的影响,结果将第二次迭代的问题数量减少了约80k,将第三次迭代的问题数量增加了约104k
除GSM8k外的数学基准
研究人员还使用Orca Math其他几个单词问题数据集上进行了实验,并且为了便于评估,最终选择了问题答案都是单个数字的数据集。
评估指标为基于GPT4的精确匹配度量,并使用贪婪解码生成模型回复。
沾染检查(Contamination Check)
为了确保实验的公正性,研究人员在文中表示:在训练过程中,从未使用GSM8K或任何其他数据集的测试分割集,也从未将其用作合成问题生成的种子。
尽管如此,研究人员还是采用以下方法来检测任何潜在的文本沾染(text contamination)问题:
1. 对文本进行预处理,包括将所有字符转换为小写、删除标点符号、对文本进行分词,以及删除常见的英语停止词,以确保数据的一致性。
2. 使用逆文档频率(TF-IDF)方法对文本语料库进行矢量化,并确定测试集和训练集之间的余弦相似性,从中为每个测试查询选择前k个(k=10)最相似的问题。
3. 通过计算在预设阈值0.5以上具有最高n-gram重叠的试题数量及其相应的训练集匹配来评估文本污染的程度。
研究人员使用Jaccard相似度来计算文本对之间的n-gram重叠,并且为了进行严格的污染检查,n设置为1。
需要注意的是,当使用Jaccard相似性测量时,n-gram重叠是n的非递增函数。
4. 在执行算法时,确定表现出显著的n-gram重叠的试题数量为8,因此根据定义的阈值,表明测试集中的文本污染可以忽略不计。
当将训练集限制为仅包含种子问题时,表现出显著n-gram重叠的测试问题的数量为7;并且在n≥2的情况下,表现出显著的n-gram重叠的试题数为零。
本文转自 新智元 ,作者:新智元