不光玩小學數學應用題,AI已經開始攻克高數了!
最近MIT的研究人員宣布他們基於OpenAI Codex預訓練模型,在本科生級別的數學問題上透過few-shot learning成功達到81%的正確率!
先來幾個小問題看看答案,例如計算單變量函數的圖形繞軸旋轉產生的體積、計算洛倫茨吸引子及投影、計算和描繪奇異值分解(SVD)的幾何形狀,不光能正確解答,還能給出對應的解釋!
確實是逆了天了,憶往昔,高數及格都是飄過,如今AI一出手就能拿81分,我單方面宣布AI已經超越人類了。
更牛的是,除了能解決一般機器學習模式難以解決的問題外,這項研究也顯示此技術可以大規模推廣,可以解決所屬課程及類似的課程問題。
這也是歷史上首次,單一機器學習模型能夠解決如此大規模的數學問題,而且還能對問題的解答過程進行解釋、繪圖,甚至還能產生新問題!
其實這篇論文早在年初就發佈出來了,經過半年的修改後,從114頁的篇幅增加到181頁,能解決的數學問題更多了,附錄的編號從A-Z直接拉滿。
文章的作者單位主要有四個,分別為麻省理工學院、哥倫比亞大學、哈佛大學和滑鐵盧大學。
第一作者Iddo Drori是MIT的電機工程與電腦科學系AI部門講師、哥倫比亞大學工程與應用科學學院的兼任副教授。曾獲CCAI NeurIPS 2021最佳論文獎。
他的主要研究方向為教育機器學習,即試圖讓機器解決,解釋和產生大學級數學和STEM課程;氣候科學的機器學習,即根據數千禧年的數據預測極端氣候變化並監測氣候,融合多學科的工作來預測大西洋多年來海洋生物地球化學的變化;自動駕駛的機器學習演算法等。
他也是劍橋大學出版社出版的The Science of Deep Learning的作者。
在這篇論文之前,研究人員大多認為神經網路無法處理高數問題,只能解決一些簡單的數學題目。
即便Transformer模型在各種不同的NLP任務中超越人類的效能,在解決數學問題上仍然沒有不行,主要原因還是因為各種大模型如GPT-3都是只在文字數據上進行預訓練。
後來有研究人員發現,以逐步解析的方式(chain of thoughts)還是可以引導語言模型來推理回答一些簡單的數學問題,但高等數學問題就沒這麼容易解決了。
當目標瞄準為高數問題後,先得蒐集一波訓練資料。
作者從麻省理工學院的七門課程中各隨機抽出25個問題,包括:
對於MATH資料集,研究人員從資料集的六個主題(代數、計數與機率、中級代數、數論、預代數和預科)中隨機抽取15個問題。
為了驗證模型產生的結果不是對訓練資料的過度擬合,研究人員選擇了沒有在網路上公開過的COMS3251課程來驗證產生結果。
#
模型以一個課程問題作為輸入,然後對其進行上下文增強(automatic augmentation with context),結果合成程序(resulting synthesized program),最後輸出答案和生成的解釋。
對於不同的問題來說,輸出結果可能不同,例如18.01的答案為一個方程式,18.02的答案為一個布林值,18.03和18.06的答案為一個圖或向量,18.05的答案為一個數值。
拿到一個問題,第一步就是讓模型找到問題的相關的脈絡。研究者主要關注Codex產生的Python程序,所以在問題前加上「write a program」的文字,並將文字放在Python程式的三個引號內,裝作是程式裡的一個docstring 。
生成程式後,還需要一個Codex prompt來指定引入哪些函式庫,作者選擇在問題前加入「use sympy」字串作為上下文,指定為解決問題而合成的程式應該使用這個套件。
透過統計每門課程所使用的Python程式包,可以看到所有課程都使用NumPy和Sympy。 Matplotlib只在有需要繪圖的問題的課程中使用。大約有一半的課程使用math、random和SciPy。在實際運作的時候,研究人員只指定SymPy或繪圖相關的套件導入,其他導入的套件都是自動合成的。
以Zero-shot learning的方式,即僅對原始問題採用自動增強的方式就可以自動解決71%的問題。
如果一個問題沒有解決,研究者嘗試對這類問題採取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,直到達到預期的視覺化效果。
除了產生答案外,模型也應該能解釋出答案的理由,研究者透過提示詞「Here is what the above code is doing: 1.」來引導模型產生一步步解釋的結果。
能回答問題後,下一步就是用Codex為每門課程產生新問題。
研究人員創建了一個由每個班級的學生寫的問題的編號列表,這個列表在隨機的問題數量後被切斷,其結果被用來提示Codex產生下一個問題。
這個過程重複進行,直到每門課程創造了足夠多的新問題。
為了評估產生的問題,研究人員對參加過這些課程或其同等課程的麻省理工學院學生進行了調查,以比較機器生成的問題與課程原始的品質和難度差異。
從學生調查的結果可以看到:
參考資料:
https://www.reddit.com/r/artificial/comments/v8liqh/researchers_built_a_neural_network_that_not_only/
以上是MIT發布加強版「高數」解算器:7門課程正確率達81%的詳細內容。更多資訊請關注PHP中文網其他相關文章!