MIT發(fā)布加強版「高數(shù)」求解器:7門課程正確率達(dá)81%
?不光玩小學(xué)數(shù)學(xué)應(yīng)用題,AI已經(jīng)開始攻克高數(shù)了!
最近MIT的研究人員宣布他們基于OpenAI Codex預(yù)訓(xùn)練模型,在本科生級別的數(shù)學(xué)問題上通過few-shot learning成功達(dá)到81%的正確率!
- 論文鏈接:https://arxiv.org/abs/2112.15594
- 代碼鏈接:https://github.com/idrori/mathq
先來幾個小問題看看答案,比如計算單變量函數(shù)的圖形繞軸旋轉(zhuǎn)產(chǎn)生的體積、計算洛倫茨吸引子及投影、計算和描繪奇異值分解(SVD)的幾何形狀,不光能正確解答,還能給出對應(yīng)的解釋!
確實是逆了天了,憶往昔,高數(shù)及格都是飄過,如今AI一出手就能拿81分,我單方面宣布AI已經(jīng)超越人類了。
更牛的是,除了能解決普通機器學(xué)習(xí)模型難以解決的問題外,這項研究還表明該技術(shù)可以大規(guī)模推廣,可以解決所屬課程及類似的課程問題。
這也是歷史上首次,單個機器學(xué)習(xí)模型能夠解決如此大規(guī)模的數(shù)學(xué)問題,而且還能對問題的解答過程進(jìn)行解釋、繪圖,甚至還能生成新問題!
實際上這篇論文早在年初就發(fā)布出來了,經(jīng)過半年的修改后,從114頁的篇幅增加到181頁,能解決的數(shù)學(xué)問題更多了,附錄的編號從A-Z直接拉滿。
文章的作者單位主要有四個,分別為麻省理工學(xué)院、哥倫比亞大學(xué)、哈佛大學(xué)和滑鐵盧大學(xué)。
第一作者Iddo Drori是MIT的電氣工程與計算機科學(xué)系A(chǔ)I部門講師、哥倫比亞大學(xué)工程和應(yīng)用科學(xué)學(xué)院的兼任副教授。曾獲得CCAI NeurIPS 2021最佳論文獎。
他的主要研究方向為教育機器學(xué)習(xí),即試圖讓機器解決,解釋和生成大學(xué)級數(shù)學(xué)和STEM課程;氣候科學(xué)的機器學(xué)習(xí),即根據(jù)數(shù)千年的數(shù)據(jù)預(yù)測極端氣候變化并監(jiān)測氣候,融合多學(xué)科的工作來預(yù)測大西洋多年來海洋生物地球化學(xué)的變化;自動駕駛的機器學(xué)習(xí)算法等。
他也是劍橋大學(xué)出版社出版的The Science of Deep Learning的作者。
高等教育里程碑
在這篇論文之前,大部分研究人員都認(rèn)為神經(jīng)網(wǎng)絡(luò)無法處理高數(shù)問題,只能解決一些簡單的數(shù)學(xué)題。
即便Transformer模型在各種各樣的NLP任務(wù)中超越人類的性能,在解決數(shù)學(xué)問題上仍然沒有不行,主要原因還是因為各種大模型如GPT-3都是只在文本數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練。
后來有研究人員發(fā)現(xiàn),以逐步解析的方式(chain of thoughts)還是可以引導(dǎo)語言模型來推理回答一些簡單的數(shù)學(xué)問題,但高等數(shù)學(xué)問題就沒這么容易解決了。
當(dāng)目標(biāo)瞄準(zhǔn)為高數(shù)問題后,首先就得搜集一波訓(xùn)練數(shù)據(jù)。
作者從麻省理工學(xué)院的七門課程中各隨機抽出25個問題,包括:
- 18.01單變量微積分
- 18.02多變量微積分
- 18.03微分方程
- 18.05概率和統(tǒng)計學(xué)概論
- 18.06線性代數(shù)
- 6.042計算機科學(xué)數(shù)學(xué)
- 哥倫比亞大學(xué)的COMS3251計算線性代數(shù)
對于MATH數(shù)據(jù)集,研究人員從數(shù)據(jù)集的六個主題(代數(shù)、計數(shù)與概率、中級代數(shù)、數(shù)論、預(yù)代數(shù)和預(yù)科)中隨機抽取15個問題。
為了驗證模型生成的結(jié)果不是對訓(xùn)練數(shù)據(jù)的過擬合,研究人員選擇了沒有在互聯(lián)網(wǎng)上公開過的COMS3251課程來驗證生成結(jié)果。
工作流程
模型以一個課程問題作為輸入,然后對其進(jìn)行上下文增強(automatic augmentation with context),結(jié)果合成程序(resulting synthesized program),最后輸出答案和生成的解釋。
對于不同的問題來說,輸出結(jié)果可能不同,比如18.01的答案為一個方程式,18.02的答案為一個布爾值,18.03和18.06的答案為一個圖或矢量,18.05的答案為一個數(shù)值。
拿到一個問題,第一步就是讓模型找到問題的相關(guān)的上下文。研究人員主要關(guān)注Codex生成的Python程序,所以在問題前加上「write a program」的文字,并將文字放在Python程序的三個引號內(nèi),裝作是程序里的一個docstring 。
生成程序后,還需要一個Codex prompt來指定引入哪些庫,作者選擇在問題前加入「use sympy」字符串作為上下文,指定為解決問題而合成的程序應(yīng)該使用這個包。
通過統(tǒng)計每門課程所使用的Python編程包,可以看到所有課程都使用NumPy和Sympy。Matplotlib只在有需要繪圖的問題的課程中使用。大約有一半的課程使用math、random和SciPy。在實際運行的時候,研究人員只指定SymPy或繪圖相關(guān)的包導(dǎo)入,其他導(dǎo)入的包都是自動合成的。
以Zero-shot learning的方式,即僅對原始問題采用自動增強的方式就可以自動解決71%的問題。
如果一個問題沒有解決,研究人員嘗試對這類問題采用Few-shot learning的方式來解決。
首先使用OpenAI的text-similarity-babbag-001嵌入引擎獲取所有問題的2048維的embedding,然后對所有向量使用余弦相似度計算,找出與已解決的問題最相似的未解決問題。最后將最相似的問題及其相應(yīng)的代碼作為新問題的few-shot例子。
如果生成的代碼沒有輸出正確的答案,就再增加另一個已解決的question-code對,每次都使用下一個類似的已解決的問題。
在實踐中可以發(fā)現(xiàn),使用最多5個例子進(jìn)行few-shot learning的效果最好,可以自動解決的問題總數(shù)從zero-shot learning的71%增加到few-shot learning的81% 。
要想解決剩下19%的問題,就需要人工編輯的介入了。
研究人員首先收集所有的問題,發(fā)現(xiàn)這些問題大多是模糊的(vague)或包含多余的信息,如參考電影人物或當(dāng)前事件等,需要對問題進(jìn)行整理以提取問題的本質(zhì)。
問題整理主要包括刪除多余的信息,將長句結(jié)構(gòu)分解成較小的組成部分,并將提示轉(zhuǎn)換為編程格式。
另一種需要人工介入的情形是,一個問題的解答需要多個步驟的繪圖來解釋,也就是需要交互式地提示Codex,直到達(dá)到預(yù)期的可視化效果。
除了生成答案外,模型還應(yīng)該能解釋出答案的理由,研究人員通過提示詞「Here is what the above code is doing: 1.」來引導(dǎo)模型生成一步步解釋的結(jié)果。
能解答問題后,下一步就是用Codex為每門課程生成新問題。
研究人員創(chuàng)建了一個由每個班級的學(xué)生寫的問題的編號列表,這個列表在隨機的問題數(shù)量后被切斷,其結(jié)果被用來提示Codex生成下一個問題。
這個過程重復(fù)進(jìn)行,直到為每門課程創(chuàng)建了足夠多的新問題。
為了評估生成的問題,研究人員對參加過這些課程或其同等課程的麻省理工學(xué)院學(xué)生進(jìn)行了調(diào)查,以比較機器生成的問題與課程原始的質(zhì)量和難度差異。
從學(xué)生調(diào)查的結(jié)果可以看到:
- 機器的評分在質(zhì)量上與人類出的題目已經(jīng)有一戰(zhàn)之力了;
- 在難度上人類的問題更適合作為課程題目,而機器生成的結(jié)果則略難一些;
- 超過一半的課程題目都能被學(xué)生看出來是模型生成的,最貼近人類的是18.01課程
參考資料:
https://www.reddit.com/r/artificial/comments/v8liqh/researchers_built_a_neural_network_that_not_only/?