當AI學會高數:解題、出題、評分樣樣都行
「高等數學裡程碑式的研究」,114頁論文讓AI文理雙修,也許不久後機器出的高數試卷就會走進高校課堂,這下可以說「高數題不是人出的了」。
編輯 | 青暮
人工智慧雖然給我們帶來了諸多便利,但也不免受到了各種質疑。在互聯網領域表現良好的人工智慧,在數學領域的很多表現卻被認為是「出乎意料地糟糕」。基於Transformers的語言模型在零樣本和少樣本等各種自然語言處理(NLP)任務中取得了令人難以置信的成功。但是,「這些模型在解決數學問題方面基本上是失敗的。」
中國科學院院士、普林斯頓大學數學系和應用數學研究所教授、北京大數據研究院院長鄂維南曾表示,神經網路可以幫助我們有效地表示或逼近高維函數,深度神經網路是一個有效的工具,它帶來的影響是巨大的。
以上思路更多還是基於深度學習在特徵提取上的優勢,然而,在更簡單或「低維」函數的、符號邏輯層面的推理中,神經網路真的毫無希望了嗎?
回歸人工智慧發展萌芽階段,符號語言的思想為數理邏輯的產生和發展奠定了基礎。當時人們試圖將對一切事物的理解與認知化為符號語言以及符號間的推理,以此思路構建的模型以符號為基底,但或許可以嘗試另一種思路,就是先用神經網路挖掘符號的特徵。
在最新的一項研究中,用神經網路的方法精確求解低維的數學問題被證實非常有效。
值得一提的是,該項研究中還用到了OpenAI Codex。作為一種生成軟體源程式碼的深度學習模型,Codex 可以理解十幾種程式語言,通過 API 提供的 Codex 模型在 Python 編程中也具有極強的能力,它在執行編程任務時能夠考慮到上下文資訊,包括轉譯、解釋程式碼和重構程式碼。
該研究還被其研究團隊稱為「第一項可以規模化自動解決、評分和生成大學水平數學課程問題」的工作,打破了人們普遍認為的神經網路不能解決高等數學問題的觀點。
「這些所謂不成功的研究只使用了基於文本的預訓練,而既對文本進行預訓練又對程式碼進行微調的神經網路,可以通過程式合成成功解決大學水平的數學問題。」
論文地址://arxiv.org/pdf/2112.15594v1.pdf
機器學習模型真的可以解決單變數函數的圖形繞軸旋轉產生的體積、洛倫茲吸引子及其投影、奇異值分解(SVD)方法的幾何圖形等問題嗎?
這項研究展示了機器學習在這方面的強大能力。機器學習模型可以大規模很好地解決麻省理工學院包括單變數微積分、多變數微積分、微分方程、概率和統計學導論在內的數學課程問題。
不僅如此,該團隊的研究證實它還可以解決MATH數據集的問題,「MATH數據集是衡量模型的數學問題解決能力的基準,該數據集的主要來源是高中數學競賽,如AMC 10、AMC 12和AIME等。目前為止,最先進的 Transformers ,如GPT-3,只對文本進行了預訓練,GPT-3取得的最好成績總體準確率為6.9%,並且在所有題目上的準確率都低於8.8%」。
圖1:圖中展示了模型可求解的高數問題。例如,在微積分18.01-02中,求由兩個二維圖形限定的二維區域圍繞z軸旋轉一周得到的體積(右上);在微分方程18.03中,求解洛倫茲奇異吸引子(右下);在線性代數18.06中,畫出奇異值分解(SVD)的幾何圖形(右下)。
「以前使用Transformers解決數學課程問題的工作之所以失敗,是由於像GPT-3一樣的Transformers,只在文本上進行了預訓練。」
研究團隊認為此前工作使用驗證或預測表達式樹的聯合訓練輸出,雖然在解決小學水平的數學問題(如MAWPS和Math23k)時,準確率超過80%。然而,這種方法的有效性並未在高中、數學奧林匹克或大學水平的數學課程中得到擴展。後來有人通過與圖神經網路(GNN)配對預測算術表達式樹(expression trees),並在文本上預訓練Transformers,來求解大學水平問題,且準確率高達95%。但是這個結果僅限於數字答案,並局限於特定課程,不容易擴展到其他課程。
而本文的這項研究證明,把問題變成編程任務進行程式合成,是大規模解決數學和STEM課程的關鍵。「對文本進行預訓練並對程式碼進行微調的 Transformers ,可以在MATH數據集和大學水平的數學課程上取得完美表現。」
如圖1所示,研究團隊將麻省理工學院課程中的數學問題和MATH數據集進行處理,並將其作為輸入傳給OpenAI Codex Transformers,使要解決的問題轉化為編程任務,然後執行自動生成程式。問題不同,運行程式的輸出形式也不同,包含數字輸出形式,甚至可以通過程式合成從文本中產生圖片輸出形式。該團隊用prompt生成法(prompt generation methods ),使Transformers能夠為每個隨機抽到的問題生成帶圖的解題程式和方案。相比之下,這項工作可以輸出包括圖表在內的多種模式,並且不需要專門的訓練就可以擴展到其他數學課程。
他們還對原始問題和轉化後的問題進行了對比量化,並通過調查評估了生成問題的品質和難度。
表1:針對六門課程(18.01, 18.02, 18.03, 18.05, 18.06, 6.042)和MATH數據集的六個主題(預-代數,代數,中級代數,計數和概率,預-微積分,數論)中的一些問題的解決方案。解決方案可包含數字答案、方程式和圖表等。
在上表所列的麻省理工學院的數學課程中,使用該方法可以很好地自動解決、評分和生成問題,並且所有這些都是實時的,每個問題處理時間竟不到一秒。
研究實驗題目來自麻省理工學院六門課程中隨機抽取的25個問題,和MATH數據集的六個主題中各隨機抽取5個問題。並且,為了說明他們的研究結果不是過度擬合訓練數據,他們還用了在訓練期間網上查不到的新的應用線性代數課程COMS3251來進行驗證。
技術代替人進行解題時,並不是使用技術對問題進行重大修改,而是努力提取問題的本質,因此,該團隊使用Codex對問題進行了整理。
上圖中,顯示了使用Codex將課程問題轉化為編程任務並運行程式以解決數學問題的方法。每個面板的左半部分顯示了原始問題和通過添加問題背景、互動或簡化後而重新表述的問題。
添加問題背景是非常有必要的,對學生和程式來說,解題域是選擇合適的解題方法的必要資訊。例如,如果沒有問題背景,一個關於網路的問題,可能是關於神經網路的問題也可能是關於通訊網路的問題。
-
面板A中對微積分方程問題的主題背景進行了補充,將其重新表述為一個編程任務的問題。補充背景包括澄清含糊不清的定義和運算符,或有一個以上標準用法的符號,說明學生通過學習課程就會知道的隱含假設,包括課程的主題或課題,指出學生從與問題相關的講座或教科書章節中學到的適當方法。
-
面板B中使用了Python庫、sympy庫和streamplot庫的背景,用於解題和繪製可視化圖。如果程式的語法與Python版本不兼容,或者數據類型有錯誤,又或者沒有使用庫,合成程式在執行中可能無法得到正確的答案。
-
面板C中顯示了概率和統計學中的一個例子,原始問題被轉化為生成模擬的概率編程任務。在做題時學生可以從課程的主題和涵蓋的材料中得到一些資訊,在這個過程中,要通過了解問題背景,確定所需要的是什麼類型的答案,對處理形式有一個合理預期。例如,概率或組合學中的許多問題可能需要用階乘、組合函數或指數來回答。因此在實驗中也必須要提供背景,以便用正確的方法來處理問題。
-
面板D考慮到NLP模型在處理長而複雜的文本方面有困難,因此將較長的問題分解成了具體的編程任務,並刪除了多餘的資訊。通過互動產生了多個圖,互動式使用Codex可以使可視化圖很好地被繪製出來,並且可以發現缺失的功能或需要的庫。
-
面板E來自《電腦科學數學》,對問題進行了簡化處理,簡化包括刪除多餘的資訊,將長的句子結構分解成較小的組成部分,並將提示轉換為編程格式。概括提煉出簡潔的提示和一系列較短的問題,可以提高Codex性能。
除此之外,他們還考慮了原始課程問題轉化為Codex 提示的三種情況:
-
-
自動提示轉換。原始問題和Codex提示不同,Codex提示是由其本身自動生成的;
-
手動提示轉換。原始問題和Codex提示不同,Codex提示是由人生成的。
當把問題轉化為Codex提示時,又出現了一個關鍵性的問題:原始問題與之後產生正確答案的提示在語義上的接近程度如何?
圖3:按課程和類別劃分的所有問題的餘弦相似度分布。
如圖3所示,為了測量原始問題和轉化後之間的差距,他們使用Sentence-BERT嵌入之間的餘弦相似度。Sentence-BERT使用siamese和triplet網路結構對預訓練的BERT模型進行了微調。Sentence-BERT能夠在句子層面上產生語義嵌入,從而可以在長篇文本中進行語義相似度比較。
應用他們的方法,對於難度較低的課程,修改少量原始問題(高餘弦相似度分數),就可以達到Codex提示,輸出一個提供正確答案的程式。而每個框圖左邊的線代表每門課程的基準相似度分數,通過平均每門課程中所有這樣的問題組之間的相似度計算得出。
他們還做了原始問題和產生正確答案的轉換版本之間的相似性分數的直方圖,用來評估。
圖4:最右邊的一列代表了按原樣或做了非常小的改動就能正確回答問題所佔的百分比。
使用Codex進行提示生成也會產生一些問題。在某些課程中,直接用未經轉化的原始問題來提示Codex並不能得到正確的答案。因此,需要將原始問題的形式進行轉化,他們將其主要分為三類:
-
主題背景。為Codex提供與一般課程和具體問題相關的主題和副主題,可以幫助指導Codex產生正確答案。例如,對於概率中的條件預期問題,提供有關貝葉斯定理、預期值等背景。
-
庫背景。為Codex提供解決特定問題所需的編程包/庫也是非常有幫助的。例如,引導Codex使用Python中的Numpy包以解決線性代數問題。
-
定義背景。很多時候,Codex缺乏某些術語的定義基礎。例如,Codex並不清楚撲克牌中 “Full House “的含義。明確這些術語的定義並讓Codex理解它們,可以更好地指導其程式合成。
此外,他們還使用Codex,通過從數據集中創建一個有編號的問題列表,為每門課程生成了新的問題。這個列表在生成隨機數量的問題後會被切斷,其結果將用於提示Codex生成下一個問題。重複進行此過程,就可以為每門課程生成許多新問題。
圖5:學生調查問題。學生要對60個問題中的每一個問題進行評分。
如上圖所示,他們還在麻省理工學院和哥倫比亞大學選修過這些課程或其同等課程的學生中進行了長時間調查,比較了機器生成的問題和人寫的問題在每門課程中的品質和難度。
圖6. 學生調查結果。A組基於學生的評分,比較了人工編寫的問題和本文研究方法為每門課程產生的問題的難度。該圖顯示了1(最容易)和5(最難)之間的難度評分的平均值,以及它們的95%置信區間。B組顯示的是人工編寫的和機器生成的問題被評為適合和不適合該課程的百分比。C組顯示了被評為人寫的或機器生成的問題的百分比。
然而,該研究還有一些局限性,如Codex只能接受基於文本的輸入,因此該團隊的方法無法對輸入影像進行處理,無法回答帶有必要視覺組成部分的問題,如數字或圖表。其次,本研究沒有涉及高級數學證明的問題,他們強調,這是研究的廣度所帶來的限制,而不是Codex的限制。
並且,他們的方法最後一步是通過執行一個程式來完成的,例如使用Python解釋器,存在局限性。此外,理論上複雜性結果也不適用於本研究解決的具體實例。
該團隊的研究證明,對文本進行預訓練並對程式碼進行微調的 Transformers能夠解決訓練能夠通過程式合成解決、評定和生成大學水平的數學問題。
問題集的生成和分析進一步驗證了這些驚人的結果。這項研究成功證實了現代程式設計語言可以作為一種替代性的表述和計算環境。由他們的方法不需要額外的訓練,就可以擴展到其它STEM課程,並且可以給高等教育帶來巨大的幫助。
他們的研究證實了,用現代程式語言進行的神經網路合成是更有活力和廣泛適用的,有可能解決更廣泛的問題。儘管任何有限的計算都可以被表示為足夠大的表達式樹,但人們可能會看到所需的表達式樹的大小可能是任意大的。與圖靈完備語言相比,這種靈活性得到了加強,因為已經存在的大量程式語料庫讓可用的標記表達式樹的數量黯然失色。
「程式輸出在本質上也更適合人類閱讀。因為使用抽象化、模組化和高級邏輯的能力可以更清晰地說明解決問題的方法。」此外,程式生成可以通過解釋性的注釋以及函數和變數的名稱,直接傳達邏輯推論。值得一提的是,在他們的這項研究中在Codex的一些輸出中看到了這樣的解釋文字和推導。
「這種正式和非正式語言的統一是我們方法論的一個固有的優勢。」
1. CQ Choi, 7 revealing ways AIs fail: Neural networks can be disastrously brittle, forgetful, and surprisingly bad at math. IEEE Spectr. 58, 42–47 (2021)