还记得小学时被《口算练习》应用题晕头转向的影子吗?来,试一试!”小明每半小时喝一瓶水,一道普通的数独题需要45分钟,一道极难的数独题需要4倍的时间。他在做一道极难的数独题期间喝了多少瓶水??”难度不大。不过这一次,OpenAI会用这些应用题来测试自家的大师模型GPT-3。结果很喜人!新方法可以解决小学数学题。60亿参数的GPT-3采用新方法,准确率直接翻倍,甚至追平了1750亿参数的GPT-3模型,使用fine-tuning方法,更重要的是,一个9-12岁的孩子在测试中得到了60分,而GPT-3使用新方法可以在同一个问题上获得55分,已经达到人类小学生水平的90%左右!部分GPT-3:强调文本胜过科学OpenAI的GPT-3以其“大”175令人印象深刻亿个参数。GPT-3“文采出众”,上知天文,下知地理,很容易模仿名家的文笔,展现广博的知识面。但是,“大”GPT-3的模型是典型的偏生,善于写作,不善于推理。如果您希望他们能够进行准确的多步推理,例如解决小学数学应用题,请不要指望它。是什么原因?问题在于,虽然GPT-3可以模仿正确解的规律,但它往往会在逻辑上出现严重错误。因此,如果人类想要教大型语言模型理解复杂的逻辑,就必须让模型学会认识自己的错误,并谨慎选择解决问题的步骤。传统方法:fine-tuning目前,最常见的让大模型掌握一个领域的方法是使用大模型在指定领域进行fine-tune。通过更新模型参数来执行微调,以最小化所有训练标记的交叉熵损失。很明显,具有1750亿个参数的模型优于其他较小的模型。在使用完整GSM8K训练集时假设对数线性趋势对不同大小的训练集进行微调后测试各种GPT-3模型的性能需要具有10^16(10万亿)参数模型的模型才能达到80%的分辨率速度。然而,该模型的性能并不遵循对数线性趋势,对于175B模型,至少需要多两个数量级的训练数据才能达到80%的分辨率。6B模型在GSM8K训练集上微调后,当允许模型进行1次猜测(左)或100次猜测(右)时,答案的正确率其中,test@N表示允许的模型回答每个问题时,在进行N次单独猜测时至少正确解决一次的问题的百分比。test@1的性能近似单调递增,而对于test@100,当增加epoch的数量时,其性能下降的速度比test@1快。选择具有良好覆盖率的模型是成功训练验证器的关键。根据经验,test@100的性能在前几个epoch内达到峰值。此外,在输出最终答案之前让模型生成完整的自然语言解决方案也很重要。如果将6B模型调整为直接输出最终答案而无需任何中间步骤,则性能从20.6%急剧下降到5.2%。让AI拥有“逻辑”的法宝:“验证者”显然,“微调”无法让GPT-3学会逻辑推理。那么这一次,OpenAI是如何让GPT-3拥有“逻辑”的呢?答案是所谓的“验证器”。训练这个验证者的目的是利用验证者从众多候选方案中选出最佳方案。同时,为了评估“验证者”的性能,OpenAI收集了一个新的“GSM8K数据集”,并将其开源用于研究。论文地址:https://arxiv.org/pdf/2110.14168.pdfGSM8K数据集地址:https://github.com/openai/grade-school-math那么“验证者”是如何工作的呢?Verifier:采取afall,长期验证者(verifier)可以判断模型生成的解是否正确,所以在测试的时候,verifier会把问题和候选解作为输入,输出概率每个答案都是正确的。验证者在训练时,只训练解是否达到正确的最终答案,标记为正确或错误。但在实践中,一些解决方案使用有缺陷的推理来得出正确的最终答案,从而导致误报。验证器的具体训练方法分为“三步走”:首先在训练集上微调模型的“生成器”2个epoch。从生成器中为每个训练问题抽取100个答案,并将每个答案标记为正确或错误。在数据集上,验证器针对单个时期进行了训练。“生成器”只训练了2个epoch,因为2个epoch的训练足以学习这个领域的基本技能。随着训练时间的延长,最终的解决方案会过拟合。测试时,要解决一个新问题,首先要生成100个候选解,然后由“验证器”打分,最后选出排名最高的解。GSM8K数据集又有新解了,一起来看看本次考试的“试卷”吧。GSM8K由8500道高质量、高多样性、中等难度的小学数学题组成。当然。OpenAI表示,对于一个中学生来说,这些问题都不是问题。数据集中的每道题都需要计算2到8步才能得到最终答案,涉及“加减乘除”四种算术运算。高质量:GSM8K的题型均为人工设计,避免了错题的发生。多样性高:GSM8K中的问题都设计得比较独特,避免了来自同一个语言模板或仅在表面细节上有所不同的问题。中等难度:GSM8K中的问题分布对于大型SOTA语言模型具有挑战性,但并非完全难以解决。这些问题不需要超出早期代数水平的概念,而且绝大多数问题无需明确定义变量即可解决。自然语言解决方案:GSM8K中的解决方案是用自然语言而不是纯数学表达式编写的。模型产生的解决方案也更容易被人类理解。此外,OpenAI还期望它能阐明大型语言模型内部独白的特征。GSM8K中的三个问题示例,红色为计算标注“fine-tuning”VS“verification”在GSM8K数据集上,OpenAI测试了新方法“verification”(验证)和基线方法“fine-tuning”(微调))生成的答案。结果非常好!在完整的训练集上,使用“validation”方式的60亿参数模型会略胜于使用“finetuning”方式的1750亿参数模型,性能提升相当于模型尺寸增加整整30倍!但大型模型并非毫无用处。使用“验证”的1750亿参数模型仍然比使用“验证”方法的60亿参数模型更快,并且需要更少的训练问题来超过微调基线。OpenAI发现,只要数据集足够大,大型模型可以从“验证”中获得强大的性能提升。然而,对于太小的数据集,验证器可能会通过记住训练集中的答案来过度拟合,而不是学习基本数学推理的更有用的属性。因此,从目前的结果推断,“验证”似乎可以更有效地扩展到其他数据。“栗子”理论讲完了,我们来做个实战,比较一下新方法“验证”和基线方法“微调”生成的答案。问题:“理查德、杰瑞和罗伯特分享60颗樱桃。如果罗伯特有30颗樱桃,比理查德多10颗,那么罗伯特比杰瑞多多少颗?》175BVerification:Correct175BFine-tuning:Incorrect6BVerification:Correct6BFine-tuning:E??rrorsarevisible,新方法“verification”(验证)比基线方法“fine-tuning”在回答数学问题上有了很大的改进。不过,“验证”的方法并不完美,也存在出错的问题。毕竟6B小机型的局限性也要考虑。还记得第一个问题吗?”约翰喝了一瓶水每半小时一次。一个普通的数独谜题需要他45分钟。一个极其困难的数独需要4倍的时间。他在做一个极难的数独时喝了多少瓶水??175BVerification:Correct175BFine-tuning:E??rror6BVerification:Error6BFine-tuning:E??rror当然,如果问题稍微难一点,语言模型会集体躺平。例如,这个:“Debra正在监视一个蜂巢,看看一天中有多少蜜蜂来来去去。她看到30只蜜蜂在前6小时内离开蜂巢,然后她看到1/2的蜜蜂在接下来的6小时内离开蜂巢6小时。数小时内返回。她看到第一次离开蜂巢的蜜蜂数量是接下来六个小时内离开蜂巢的蜜蜂的两倍。然后,之前离开的每只蜜蜂,如果还没有返回,则在下一个时间飞出六个小时在一天的最后6个小时里,Debra看到有多少只蜜蜂返回蜂巢?”175B验证:错误175B微调:错误6B验证:错误6B微调:错误请看加油,AI做数学题还有很长的路要走。你也想试试吗?
