让语言模型做数学题,有多难?强如 GPT-3,在 9-12 岁的小学数学上,第一次才考 20 多分。去年底 GPT-3 用上新方法努力了很久终于拿到 55 分,可惜还是没及格。
万万想不到啊,2022 年才刚开始,突然有人宣布他们的模型掌握了高数,达到 MIT 本科水平。AI 学了 6 门 MIT 本科基础数学课里随机抽取的例题,都是网上就有的公开课,包括:
单变量微积分 (课程编号 18.01)
多变量微积分 (18.02)
微分方程 (18.03)
概率与统计入门 (18.05)
线性代数 (18.06)
计算机科学中的数学 (6.042)
那么 AI 最后学到什么水平呢?6 门课程每门随机出 25 道题,再加上一个 ACT 水平(美国高考)的数据集里的 60 道题。总计 210 道题,AI 全部答对。题目包括需要求出具体数值的,比如菌落繁殖的经典问题。
也有要求给出方程式的。
要求画出函数图像的也没问题。
最后为了证明训练出来的 AI 没有过拟合,还额外加试了一场应用线性代数 (COMS3251)。这门课不是公开课,网络上根本没有,也就是说 AI 在预训练阶段不可能接触到,结果 AI 也掌握了。
要知道在短短几个月前,AI 还在挣扎于“小明种了 5 颗柠檬树,每年从每棵树上得到 6 个柠檬,10 年间他总共得到多少柠檬”这样的问题。
短短几个月,从小学数学跨越到了高等数学。这项来自 MIT + 哈佛 + 哥伦比亚大学 + 滑铁卢大学的联合研究开了什么挂?
研究团队发现以前用 AI 做数学题的尝试有一个共同点:训练数据里只有文本。这简直是 AI 中的文科生,学不好数学也算正常。
那么 AI 中的理科生要怎么培养?研究团队的解决思路是先在文本上做预训练,再用代码进行微调。核心思想是把数学问题转换成等价的编程问题。
他们找来的这位 AI 理科生与 GPT-3 师出同门 ——OpenAI 的 Codex,也是 GitHub 代码生成工具 Copilot 背后的技术基础。
Codex 解题的过程分两步:先审题,再作答。第一步,自动生成需要的上下文,把题干扩充、缩减或改写成适合编程解决的样子。第二步,生成对应的代码,运行后给出答案。比如补充自然语言题干中隐藏着的问题语境“在微分方程中”。
列好解题需要用到的 Python 库。
把问题扩充成更精确的数学语言。原问题:
计算扑克牌中一副手牌中有两对的概率。
改写问题:
一副手牌有 5 张牌,从 13 组每组 4 张一共 52 张牌中随机抽取。
“两对牌型”要求手牌中共有 3 种牌,每种数量不能多于两张,也就是说相同的牌不能超过三张。
请编写一个模拟程序求出抽到“两对牌型”的概率。
(这也太严谨了)
对于一个复杂问题,先自动生成中间步骤的提示,再写代码。
如果题目中有与数学无关的多余信息,也需要去掉。
就这样,AI 靠先审题再写代码的方式做出全部正确答案。除了做题,学会高数的 AI 还能反过来给人类出题。不到一秒钟就能出一道题,试验中总共出了 120 道题。
把人类出的题和 AI 出的题混在一起,找学生来做问卷调查,学生也很难分清一道题是不是 AI 出的。
他们觉得 AI 出的题要稍微难一些,但大多数题目放在课程里也算合适。
论文中列出了这项研究还存在几个局限性。首先是做不了题干带配图的题,这次试验中也没有需要大量证明的题。
另外最终答案是实际运行代码得出的,但最近有研究表明神经网络也可以直接预测出部分代码的执行结果。以及还是有一些开放性高的题目 AI 做不出来。
比如“一个向量 v 能否表示为一个集合 S 中的向量之和?”或者“以下方程的整数值解是什么?”最后还有一个彩蛋,论文作者中出现了 Gilbert Strang。他编写的《线性代数导论》被誉为最好的线性代数教科书之一。
他在这篇论文中的贡献是提供了研究思路。研究团队下一步打算把这项技术扩展到更多课程,并考虑实际应用到教学中。也许以后 MIT 的同学期末考试里会有 AI 出的题了。要不先来试一试,AI 出的题你能做出来吗?
论文地址:
https://arxiv.org/abs/2112.15594
参考链接:
[1]https://www.reddit.com/r/MachineLearning/comments/rutbpv/r_a_neural_network_solves_and_generates/
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。