科学探索|MIT发布加强版“高数”求解器:7门课程正确率达81%( 二 )


6.042计算机科学数学
哥伦比亚大学的COMS3251计算线性代数
对于MATH数据集,研究人员从数据集的六个主题(代数、计数与概率、中级代数、数论、预代数和预科)中随机抽取15个问题 。
为了验证模型生成的结果不是对训练数据的过拟合,研究人员选择了没有在互联网上公开过的COMS3251课程来验证生成结果 。

科学探索|MIT发布加强版“高数”求解器:7门课程正确率达81%
文章图片

工作流程
模型以一个课程问题作为输入,然后对其进行上下文增强(automatic augmentation with context),结果合成程序(resulting synthesized program),最后输出答案和生成的解释 。
对于不同的问题来说,输出结果可能不同,比如18.01的答案为一个方程式,18.02的答案为一个布尔值,18.03和18.06的答案为一个图或矢量,18.05的答案为一个数值 。

科学探索|MIT发布加强版“高数”求解器:7门课程正确率达81%
文章图片

拿到一个问题,第一步就是让模型找到问题的相关的上下文 。研究人员主要关注Codex生成的Python程序,所以在问题前加上“write a program”的文字,并将文字放在Python程序的三个引号内,装作是程序里的一个docstring
生成程序后,还需要一个Codex prompt来指定引入哪些库,作者选择在问题前加入“use sympy”字符串作为上下文,指定为解决问题而合成的程序应该使用这个包 。
通过统计每门课程所使用的Python编程包,可以看到所有课程都使用NumPy和Sympy 。Matplotlib只在有需要绘图的问题的课程中使用 。大约有一半的课程使用math、random和SciPy 。在实际运行的时候,研究人员只指定SymPy或绘图相关的包导入,其他导入的包都是自动合成的 。

科学探索|MIT发布加强版“高数”求解器:7门课程正确率达81%
文章图片

以Zero-shot learning的方式,即仅对原始问题采用自动增强的方式就可以自动解决71%的问题 。
【科学探索|MIT发布加强版“高数”求解器:7门课程正确率达81%】如果一个问题没有解决,研究人员尝试对这类问题采用Few-shot learning的方式来解决 。
首先使用OpenAI的text-similarity-babbag-001嵌入引擎获取所有问题的2048维的embedding,然后对所有向量使用余弦相似度计算,找出与已解决的问题最相似的未解决问题 。最后将最相似的问题及其相应的代码作为新问题的few-shot例子 。
如果生成的代码没有输出正确的答案,就再增加另一个已解决的question-code对,每次都使用下一个类似的已解决的问题 。
在实践中可以发现,使用最多5个例子进行few-shot learning的效果最好,可以自动解决的问题总数从zero-shot learning的71%增加到few-shot learning的81%
要想解决剩下19%的问题,就需要人工编辑的介入了 。
研究人员首先收集所有的问题,发现这些问题大多是模糊的(vague)或包含多余的信息,如参考电影人物或当前事件等,需要对问题进行整理以提取问题的本质 。
问题整理主要包括删除多余的信息,将长句结构分解成较小的组成部分,并将提示转换为编程格式 。
另一种需要人工介入的情形是,一个问题的解答需要多个步骤的绘图来解释,也就是需要交互式地提示Codex,直到达到预期的可视化效果 。

科学探索|MIT发布加强版“高数”求解器:7门课程正确率达81%
文章图片

除了生成答案外,模型还应该能解释出答案的理由,研究人员通过提示词“Here is what the above code is doing: 1.”来引导模型生成一步步解释的结果 。
能解答问题后,下一步就是用Codex为每门课程生成新问题 。
研究人员创建了一个由每个班级的学生写的问题的编号列表,这个列表在随机的问题数量后被切断,其结果被用来提示Codex生成下一个问题 。