教你用神經網路求解高階數學方程!

資料派THU發表於2020-04-08
Facebook AI建立了第一個可以使用符號推理解決高階數學方程的AI系統。透過開發一種將複雜數學表示式表示為一種語言的新方法,然後將解決方案視為序列到序列神經網路的翻譯問題,我們構建了一個在解決積分問題以及一階和二階微分方程方面都優於傳統計算系統的系統。
 
以前,這類問題被認為是深度學習模型所無法企及的,因為求解複雜方程需要精度而不是近似值。神經網路擅長透過近似達到成功,例如認識畫素的特定模式很可能是狗的圖片,或者一種語言的句子特徵匹配另一種語言的句子特徵。解決複雜的方程式還需要具有處理符號資料的能力,例如方程b-4ac = 7中的字母。此類變數不能直接相加、相乘或相除,僅使用傳統的模式匹配或統計分析,神經網路就僅限於極其簡單的數學問題。
 
我們的解決方案是一種全新的方法,可將複雜的方程視為語言中的句子。這使得我們能夠充分利用在神經機器翻譯(NMT)被證明有效的技術,透過訓練模型將問題從本質上轉化為解決方案。要實現此方法,需要開發一種將現有數學表示式分解為類似語言語法的方法,並生成一個超過100M個配對方程和解的大規模訓練資料集。
 
當出現數千個未知表示式時(這些方程並不是訓練資料的一部分),我們的模型比傳統基於代數的方程求解軟體,例如Maple,Mathematica和Matlab,表現出更快的速度和更高的精度。這項工作不僅表明深度學習可以用於符號推理,而且還表明神經網路有潛力解決各種各樣的任務,包括那些與模式識別不相關的任務。我們將分享我們的方法以及產生相似訓練集方法的細節。

一種應用NMT的新方法

擅長符號數學的人經常依靠一種直覺。他們對給定問題的解決方案應該是什麼有一種感覺,例如觀察被積分函式中是否存在餘弦,這意味著其積分可能存在正弦,然後進行必要的工作以證明這個直覺。這與代數所需的直接計算不同。透過訓練模型來檢測符號方程中的模式,我們相信神經網路可以將導致其解決方案的線索拼湊起來,大致類似於人類對複雜問題的基於直覺的方法。因此,我們開始探索將符號推理作為NMT問題,在該模型中,模型可以根據問題示例及其匹配的解決方案來預測可能的解決方案。

教你用神經網路求解高階數學方程!

作為示例,我們的方法將展示如何把左側的現有方程擴充套件為可以用作翻譯模型輸入的表示式樹。對於該方程,輸入到模型中的預序列為:(加,乘,3,乘方,x,2,減,餘弦,乘,2,x,1)
 
為了使用神經網路實現此應用,我們需要一種新穎的方式來表示數學表示式。NMT系統通常是序列到序列(seq2seq)模型,使用單詞序列作為輸入,並輸出新的序列,從而允許它們翻譯完整的句子而不是單個單詞。我們使用了兩步方法將此方法應用於符號方程。首先,我們開發了一種有效地分解方程的過程,將被分解後的方程佈置在樹狀結構的分支中,這個樹狀結構隨後被擴充套件為與seq2seq模型相容的序列。常量和變數充當葉子,而運算子(例如加號和減號)和函式是連線樹的分支的內部節點。
 
儘管它看起來可能不像傳統語言,但以這種方式組織表示式可為方程提供類似於語言的語法,數字和變數是名詞,而運算子則充當動詞。我們的方法使NMT模型可以學習將給定樹狀結構問題的模式與其匹配的方程的解(也表示為樹)對齊,類似於將一種語言的句子與經過確認的翻譯相匹配。這種方法使我們能夠利用功能強大的現成的seq2seq NMT模型,將單詞序列替換為符號序列。

建立新的訓練資料集

儘管我們的表示式——樹語法使NMT模型在理論上有可能有效地將複雜的數學問題轉化為方程的解,但是訓練這樣的模型將需要大量示例。而且,因為在我們關注的兩類問題(積分和微分方程)中,隨機生成的問題並不總是具有解,所以我們不能簡單地收集方程並將其輸入系統。我們需要生成一個全新的訓練集,其中包括重新構造為模型可讀的表示式樹的已解方程的示例。這產生了方程和解的二元組,類似於在各種語言之間翻譯的句子語料庫。我們的集合還必須比該領域以前的研究中使用的訓練資料大得多,後者曾嘗試對數千個示例進行系統訓練。由於神經網路只有在擁有更多訓練資料時才會表現得更好,因此我們建立了包含數百萬個示例的集合。
 
建立此資料集需要我們整合一系列資料清洗和生成技術。例如,對於我們的符號積分方程,我們翻轉了翻譯方法:不是生成問題並找到其解決方案,而是生成解決方案並找到它們的問題(它們的導數),這是一件容易得多的任務。這種從解決方案中產生問題的方法(有時被工程師稱為陷門問題)使建立數百萬個積分示例變得可行。我們得出的以翻譯為靈感的資料集包括大約1億個配對示例,其中包含積分問題的子集以及一階和二階微分方程。
 
我們使用此資料集來訓練具有8個attention head和6個層的seq2seq transformer模型。transformer通常用於翻譯任務,而我們的網路旨在預測各種方程的解,例如確定給定函式的不定積分。為了評估模型的效能,我們向模型提供了5000種未知表示式,使系統識別出訓練中未出現的方程模式。我們的模型在求解積分問題時顯示出99.7%的準確度,對於一階和二階微分方程,它們的準確度分別為94%和81.2%。這些結果超出了我們測試的所有三個傳統方程求解器的結果。Mathematica取得了次佳的結果,在相同的積分問題上準確度為84%,對於微分方程結果的準確度為77.2%和61.6%。我們的模型還可以在不到0.5秒的時間內返回大多數預測,而其他系統則需要幾分鐘來找到解決方案,有時甚至會完全超時。

教你用神經網路求解高階數學方程!

我們的模型將左側的方程式(Mathematica和Matlab都無法求解的方程式)作為輸入,並且能夠在不到一秒鐘的時間內找到正確的解決方案(如上圖所示)。
 
將生成的解決方案與參考解決方案進行比較,使我們能夠輕鬆,準確地驗證結果。但是我們的模型也為給定方程生成了多個解。這類似於機器翻譯中發生的事情,在機器翻譯中,有很多翻譯輸入句子的方法。

AI方程求解器的下一步是什麼

 
目前,我們的模型適用於單變數問題,我們計劃將其擴充套件為多變數方程。這種方法還可以應用於其他基於數學和邏輯的領域,例如物理領域,從而有可能開發出可幫助科學家進行廣泛工作的軟體。
 
但是我們的系統對於神經網路的研究和使用具有更廣泛的意義。透過在以前認為不可行的地方發現一種使用深度學習的方法,這項工作表明其他任務可以從人工智慧中受益。無論是透過將NLP技術進一步應用到傳統上與語言沒有關聯的領域,還是透過在新的或看似無關的任務中對模式識別進行更開放的探索,神經網路的侷限性可能來自想象力的侷限,而不是技術。

撰寫者

弗朗索瓦·沙頓 Facebook AI客座企業家
紀堯姆·蘭普爾 Facebook AI研究科學家

原文標題:

Using neural networks to solve advanced mathematics equations

原文連結:

https://ai.facebook.com/blog/using-neural-networks-to-solve-advanced-mathematics-equations/

相關文章