Facebook AI建立了第一個可以使用符號推理解決高級數(shù)學方程的AI系統(tǒng)。通過開發(fā)一種將復雜數(shù)學表達式表示為一種語言的新方法,然后將解決方案視為序列到序列的神經(jīng)網(wǎng)絡的翻譯問題,我們構(gòu)建了一個在解決積分問題以及一階和二階微分方程方面都優(yōu)于傳統(tǒng)計算系統(tǒng)的系統(tǒng)。
以前,這類問題被認為是深度學習模型所無法企及的,因為求解復雜方程需要精度而不是近似值。神經(jīng)網(wǎng)絡擅長通過近似達到成功,例如認識像素的特定模式很可能是狗的圖片,或者一種語言的句子特征匹配另一種語言的句子特征。解決復雜的方程式還需要具有處理符號數(shù)據(jù)的能力,例如方程b-4ac = 7中的字母。此類變量不能直接相加、相乘或相除,僅使用傳統(tǒng)的模式匹配或統(tǒng)計分析,神經(jīng)網(wǎng)絡就僅限于極其簡單的數(shù)學問題。
我們的解決方案是一種全新的方法,可將復雜的方程視為語言中的句子。這使得我們能夠充分利用在神經(jīng)機器翻譯(NMT)被證明有效的技術(shù),通過訓練模型將問題從本質(zhì)上轉(zhuǎn)化為解決方案。要實現(xiàn)此方法,需要開發(fā)一種將現(xiàn)有數(shù)學表達式分解為類似語言語法的方法,并生成一個超過100M個配對方程和解的大規(guī)模訓練數(shù)據(jù)集。
當出現(xiàn)數(shù)千個未知表達式時(這些方程并不是訓練數(shù)據(jù)的一部分),我們的模型比傳統(tǒng)基于代數(shù)的方程求解軟件,例如Maple,Mathematica和Matlab,表現(xiàn)出更快的速度和更高的精度。這項工作不僅表明深度學習可以用于符號推理,而且還表明神經(jīng)網(wǎng)絡有潛力解決各種各樣的任務,包括那些與模式識別不相關(guān)的任務。我們將分享我們的方法以及產(chǎn)生相似訓練集方法的細節(jié)。
一種應用NMT的新方法
擅長符號數(shù)學的人經(jīng)常依靠一種直覺。他們對給定問題的解決方案應該是什么有一種感覺,例如觀察被積分函數(shù)中是否存在余弦,這意味著其積分可能存在正弦,然后進行必要的工作以證明這個直覺。
這與代數(shù)所需的直接計算不同。通過訓練模型來檢測符號方程中的模式,我們相信神經(jīng)網(wǎng)絡可以將導致其解決方案的線索拼湊起來,大致類似于人類對復雜問題的基于直覺的方法。因此,我們開始探索將符號推理作為NMT問題,在該模型中,模型可以根據(jù)問題示例及其匹配的解決方案來預測可能的解決方案。
作為示例,我們的方法將展示如何把左側(cè)的現(xiàn)有方程擴展為可以用作翻譯模型輸入的表達式樹。對于該方程,輸入到模型中的預序列為:(加,乘,3,乘方,x,2,減,余弦,乘,2,x,1)
為了使用神經(jīng)網(wǎng)絡實現(xiàn)此應用,我們需要一種新穎的方式來表示數(shù)學表達式。NMT系統(tǒng)通常是序列到序列(seq2seq)模型,使用單詞序列作為輸入,并輸出新的序列,從而允許它們翻譯完整的句子而不是單個單詞。我們使用了兩步方法將此方法應用于符號方程。
首先,我們開發(fā)了一種有效地分解方程的過程,將被分解后的方程布置在樹狀結(jié)構(gòu)的分支中,這個樹狀結(jié)構(gòu)隨后被擴展為與seq2seq模型兼容的序列。常量和變量充當葉子,而運算符(例如加號和減號)和函數(shù)是連接樹的分支的內(nèi)部節(jié)點。
盡管它看起來可能不像傳統(tǒng)語言,但以這種方式組織表達式可為方程提供類似于語言的語法,數(shù)字和變量是名詞,而運算符則充當動詞。
我們的方法使NMT模型可以學習將給定樹狀結(jié)構(gòu)問題的模式與其匹配的方程的解(也表示為樹)對齊,類似于將一種語言的句子與經(jīng)過確認的翻譯相匹配。這種方法使我們能夠利用功能強大的現(xiàn)成的seq2seq NMT模型,將單詞序列替換為符號序列。
建立新的訓練數(shù)據(jù)集
盡管我們的表達式——樹語法使NMT模型在理論上有可能有效地將復雜的數(shù)學問題轉(zhuǎn)化為方程的解,但是訓練這樣的模型將需要大量示例。而且,因為在我們關(guān)注的兩類問題(積分和微分方程)中,隨機生成的問題并不總是具有解,所以我們不能簡單地收集方程并將其輸入系統(tǒng)。
我們需要生成一個全新的訓練集,其中包括重新構(gòu)造為模型可讀的表達式樹的已解方程的示例。這產(chǎn)生了方程和解的二元組,類似于在各種語言之間翻譯的句子語料庫。
我們的集合還必須比該領(lǐng)域以前的研究中使用的訓練數(shù)據(jù)大得多,后者曾嘗試對數(shù)千個示例進行系統(tǒng)訓練。由于神經(jīng)網(wǎng)絡只有在擁有更多訓練數(shù)據(jù)時才會表現(xiàn)得更好,因此我們創(chuàng)建了包含數(shù)百萬個示例的集合。
建立此數(shù)據(jù)集需要我們整合一系列數(shù)據(jù)清洗和生成技術(shù)。例如,對于我們的符號積分方程,我們翻轉(zhuǎn)了翻譯方法:不是生成問題并找到其解決方案,而是生成解決方案并找到它們的問題(它們的導數(shù)),這是一件容易得多的任務。
這種從解決方案中產(chǎn)生問題的方法(有時被工程師稱為陷門問題)使創(chuàng)建數(shù)百萬個積分示例變得可行。我們得出的以翻譯為靈感的數(shù)據(jù)集包括大約1億個配對示例,其中包含積分問題的子集以及一階和二階微分方程。
我們使用此數(shù)據(jù)集來訓練具有8個attention head和6個層的seq2seq transformer模型。transformer通常用于翻譯任務,而我們的網(wǎng)絡旨在預測各種方程的解,例如確定給定函數(shù)的不定積分。為了評估模型的性能,我們向模型提供了5000種未知表達式,使系統(tǒng)識別出訓練中未出現(xiàn)的方程模式。
我們的模型在求解積分問題時顯示出99.7%的準確度,對于一階和二階微分方程,它們的準確度分別為94%和81.2%。這些結(jié)果超出了我們測試的所有三個傳統(tǒng)方程求解器的結(jié)果。Mathematica取得了次佳的結(jié)果,在相同的積分問題上準確度為84%,對于微分方程結(jié)果的準確度為77.2%和61.6%。我們的模型還可以在不到0.5秒的時間內(nèi)返回大多數(shù)預測,而其他系統(tǒng)則需要幾分鐘來找到解決方案,有時甚至會完全超時。
我們的模型將左側(cè)的方程式(Mathematica和Matlab都無法求解的方程式)作為輸入,并且能夠在不到一秒鐘的時間內(nèi)找到正確的解決方案(如上圖所示)。
將生成的解決方案與參考解決方案進行比較,使我們能夠輕松,準確地驗證結(jié)果。但是我們的模型也為給定方程生成了多個解。這類似于機器翻譯中發(fā)生的事情,在機器翻譯中,有很多翻譯輸入句子的方法。
AI方程求解器的下一步是什么
目前,我們的模型適用于單變量問題,我們計劃將其擴展為多變量方程。這種方法還可以應用于其他基于數(shù)學和邏輯的領(lǐng)域,例如物理領(lǐng)域,從而有可能開發(fā)出可幫助科學家進行廣泛工作的軟件。
但是我們的系統(tǒng)對于神經(jīng)網(wǎng)絡的研究和使用具有更廣泛的意義。通過在以前認為不可行的地方發(fā)現(xiàn)一種使用深度學習的方法,這項工作表明其他任務可以從人工智能中受益。無論是通過將NLP技術(shù)進一步應用到傳統(tǒng)上與語言沒有關(guān)聯(lián)的領(lǐng)域,還是通過在新的或看似無關(guān)的任務中對模式識別進行更開放的探索,神經(jīng)網(wǎng)絡的局限性可能來自想象力的局限,而不是技術(shù)。
-
神經(jīng)網(wǎng)絡
+關(guān)注
關(guān)注
42文章
4838瀏覽量
107778 -
深度學習
+關(guān)注
關(guān)注
73文章
5599瀏覽量
124398
發(fā)布評論請先 登錄
用于窄帶匹配高速射頻ADC的全新方法
布爾表達式及范圍檢查
C語言的分支結(jié)構(gòu)介紹
第4章 C語言基礎(chǔ)以及流水燈的實現(xiàn)(4.5 4.6)
inline ASM(內(nèi)聯(lián)匯編)的細節(jié)分享
一種新的無刷直流電機反電動勢檢測方法
一種新的無刷直流電機反電動勢檢測方法
labview如何使用VISA串口資源查找的正則表達式提取串口的資源名稱?
無刷直流電機反電勢過零檢測新方法
《ESP32S3 Arduino開發(fā)指南》第三章 C/C++語言基礎(chǔ)
干貨分享 | 零基礎(chǔ)上手!TSMaster圖形信號表達式實操指南
一種將復雜數(shù)學表達式表示為一種語言的新方法
評論