AI攻破高數核心,1秒內精確求解微分方程、不定積分

2020-12-04 新浪科技

來源:創事記

歡迎關注「創事記」微信訂閱號:sinachuangshiji

文/慄子 魚羊

來源:量子位(ID:QbitAI)

大家都知道,AI (神經網絡) 連加減法這樣的簡單算術都做不好:

可現在,AI已經懂得微積分,把魔爪伸向你最愛的高數了。

它不光會求不定積分:

還能解常微分方程:

一階二階都可以。

這是Facebook發表的新模型,1秒給出的答案,超越了Mathematica和Matlab這兩隻付費數學軟體30秒的成績。

團隊說,這是Seq2SeqTransformer搭配食用的結果。

用自然語言處理 (NLP) 的方法來理解數學,果然行得通。

這項成果,已經在推特上獲得了1700贊。許多小夥伴表示驚奇,比如:

「感謝你們!在我原本的想像中,這完全是不可能的!」

而且,據說算法很快就要開源了:

到時候讓付費軟體怎麼辦?

巨大數據集的生成姿勢

要訓練模型做微積分題目,最重要的前提就是要有大大大的數據集。

這裡有,積分數據集微分方程數據集的製造方法:

函數,和它的積分

首先,就是要做出「一個函數&它的微分」這樣的數據對。團隊用了三種方法:

第一種是正向生成 (Fwd) ,指生成隨機函數 (最多n個運算符) ,再用現成的工具求積分。把工具求不出的函數扔掉。

第二種是反向生成 (Bwd) ,指生成隨機函數,再對函數求導。填補了第一種方法收集不到的一些函數,因為就算工具求不出積分,也一定可以求導。

第三種是用了分部積分的反向生成 (Ibp) 。前面的反向生成有個問題,就是不太可能覆蓋到f(x)=x3sin(x)的積分:

F(x)=-x3cos(x)+3x2sin(x)+6xcos(x)-6sin(x)

因為這個函數太長了,隨機生成很難做到。

另外,反向生成的產物,大多會是函數的積分比函數要短,正向生成則相反。

為了解決這個問題,團隊用了分部積分:生成兩個隨機函數F和G,分別算出導數f和g。

如果fG已經出現在前兩種方法得到的訓練集裡,它的積分就是已知,可以用來求出Fg:

∫Fg=FG-∫fG

反過來也可以,如果Fg已經在訓練集裡,就用它的積分求出fG。

每求出一個新函數的積分,就把它加入訓練集。

如果fG和Fg都不在訓練集裡,就重新生成一對F和G。

如此一來,不藉助外部的積分工具,也能輕鬆得到x10sin(x)這樣的函數了。

一階常微分方程,和它的解

從一個二元函數F(x,y)說起。

有個方程F(x,y)=c,可對y求解得到y=f(x,c)。就是說有一個二元函數f,對任意x和c都滿足:

再對x求導,就得到一個微分方程:

fc表示從x到f(x,c)的映射,也就是這個微分方程的解。

這樣,對於任何的常數c,fc都是一階微分方程的解。

把fc替換回y,就有了整潔的微分方程:

這樣一來,想做出「一階常微分方程&解」的成對數據集,只要生成一個f(x,c),對c有解的那種,再找出它滿足的微分方程F就可以了,比如:

二階常微分方程,和它的解

二階的原理,是從一階那裡擴展來的,只要把f(x,c)變成f(x,c1,c2) ,對c2有解。

微分方程F要滿足:

把它對x求導,會得到:

fc1,c2表示,從x到f(x,c1,c2)的映射。

如果這個方程對c1有解,就可以推出另外一個三元函數G,它對任意x都滿足:

再對x求導,就會得到:

最後,整理出清爽的微分方程:

它的解就是fc1,c2。

至於生成過程,舉個例子:

現在,求積分求解微分方程兩個訓練集都有了。那麼問題也來了,AI要怎麼理解這些複雜的式子,然後學會求解方法呢?

將數學視作自然語言

積分方程和微分方程,都可以視作將一個表達式轉換為另一個表達式,研究人員認為,這是機器翻譯的一個特殊實例,可以用NLP的方法來解決。

第一步,是將數學表達式以樹的形式表示

運算符和函數為內部節點,數字、常數和變量等為葉子節點。

比如 3x^2 + cos(2x) - 1 就可以表示為:

再舉一個複雜一點的例子,這樣一個偏微分表達式:

用樹的形式表示,就是:

採用樹的形式,就能消除運算順序的歧義,照顧優先級和關聯性,並且省去了括號。

在沒有空格、標點符號、多餘的括號這樣的無意義符號的情況下,不同的表達式會生成不同的樹。表達式和樹之間是一一對應的。

第二步,引入seq2seq模型

seq2seq模型具有兩種重要特性:

輸入和輸出序列都可以具有任意長度,並且長度可以不同。

輸入序列和輸出序列中的字詞不需要一一對應。

因此,seq2seq模型非常適合求解微積分的問題。

使用seq2seq模型生成樹,首先,要將樹映射到序列。

使用前綴表示法,將每個父節點寫在其子節點之前,從左至右列出。

比如 2 + 3 * (5 + 2),表示為樹是:

表示為序列就是 [+ 2 * 3 + 5 2]。

樹和前綴序列之間也是一一映射的。

第三步,生成隨機表達式

要創建訓練數據,就需要生成隨機數學表達式。前文已經介紹了數據集的生成策略,這裡著重講一下生成隨機表達式的算法。

使用n個內部節點對表達式進行統一採樣並非易事。比如遞歸這樣的方法,就會傾向於生成深樹而非寬樹,偏左樹而非偏右樹,實際上是無法以相同的概率生成不同種類的樹的。

所以,以隨機二叉樹為例,具體的方法是:從一個空的根節點開始,在每一步中確定下一個內部節點在空節點中的位置。重複進行直到所有內部節點都被分配為止。

不過,在通常情況下,數學表達式樹不一定是二叉樹,內部節點可能只有1個子節點。如此,就要考慮根節點和下一內部節點參數數量的二維概率分布,記作 L(e,n)。

接下來,就是對隨機樹進行採樣,從可能的運算符和整數、變量、常量列表中隨機選擇內部節點及葉子節點來對樹進行「裝飾」。

最後,計算表達式的數量

經由前面的步驟,可以看出,表達式實際上是由一組有限的變量、常量、整數和一系列運算符組成的。

於是,問題可以概括成:

最多包含n個內部節點的樹

一組p1個一元運算符(如cos,sin,exp,log)

一組p2個二進位運算符(如+,-,×,pow)

一組L個葉子值,其中包含變量(如x,y,z),常量(如e,π),整數(如 {-10,…,10})

如果p1 = 0,則表達式用二叉樹表示。

這樣,具有n個內部節點的二叉樹恰好具有n + 1個葉子節點。每個節點和葉子可以分別取p1和L個不同的值。

具有n個二進位運算符的表達式數量就可以表示為:

如果p1 > 0,表達式數量則為:

可以觀察到,葉子節點和二元運算符的數量會明顯影響問題空間的大小。

不同數目運算符和葉子節點的表達式數量

勝過商業軟體

實驗中,研究人員訓練seq2seq模型預測給定問題的解決方案。採用的模型,是8個注意力頭(attention head),6層,512維的Transformer模型。

研究人員在一個擁有5000個方程的數據集中,對模型求解微積分方程的準確率進行了評估。

結果表明,對於微分方程,波束搜索解碼能大大提高模型的準確率。

而與最先進的商業科學計算軟體相比,新模型不僅更快,準確率也更高。

在包含500個方程的測試集上,商業軟體中表現最好的是Mathematica。

比如,在一階微分方程中,與使用貪婪搜索解碼算法(集束大小為1)的新模型相比,Mathematica不落下風,但新方法通常1秒以內就能解完方程,Mathematica的解題時間要長的多(限制時間30s,若超過30s則視作沒有得到解)。

而當新方法進行大小為50的波束搜索時,模型準確率就從81.2%提升到了97%,遠勝於Mathematica(77.2%)

並且,在某一些Mathematica和Matlab無力解決的問題上,新模型都給出了有效解。

商業科學計算軟體沒有找到解的方程

邀請AI參加IMO

這個會解微積分的AI一登場,就吸引了眾多網友的目光,引發熱烈討論。網友們紛紛稱讚:鵝妹子嚶。

有網友這樣說道:

這篇論文超級有趣的地方在於,它有可能解決複雜度比積分要高得高得高得多的問題。

還有網友認為,這項研究太酷了,該模型能夠歸納和整合一些sympy無法實現的功能。

不過,也有網友認為,在與Mathematica的對比上,研究人員的實驗設定顯得不夠嚴謹。

默認設置下,Mathematica是在複數域中進行計算的,這會增加其操作的難度。但作者把包含複數係數的表達式視作「無效」。所以他們在使用Mathematica的時候將設置調整為實數域了?

我很好奇Mathematica是否可以解決該系統無法解決的問題。

30s的限制時間對於計算機代數系統有點武斷了。

但總之,面對越來越機智的AI,已經有人發起了挑戰賽,邀請AI挑戰IMO金牌。

Facebook AI研究院出品

這篇論文有兩位共同一作。

Guillaume Lample,來自法國布雷斯特,是Facebook AI研究院、皮埃爾和瑪麗·居裡大學在讀博士。

他曾於巴黎綜合理工學院和CMU分別獲得數學與計算機科學和人工智慧碩士學位。2014年進入Facebook實習。

Franois Charton,Facebook AI研究院的客座企業家(Visiting entrepreneur),主要研究方向是數學和因果關係。

傳送門

https://arxiv.org/abs/1912.01412

https://news.ycombinator.com/item?id=21084748

相關焦點

  • AI攻破高數核心,1秒內求解微分方程、不定積分,性能遠超Matlab
    它不光會求不定積分:還能解常微分方程:一階二階都可以。這是Facebook發表的新模型,1秒給出的答案,超越了Mathematica和Matlab這兩隻付費數學軟體30秒的成績。一階常微分方程,和它的解從一個二元函數F(x,y)說起。有個方程F(x,y)=c,可對y求解得到y=f(x,c)。
  • 典型習題:(120218)對坐標的曲線積分與二階微分方程綜合題求解
    「對坐標的曲線積分與二階微分方程求解」題型的求解思路以及相關的知識點:一、一階線性微分方程的求解方法(1) 當Q(x)恆等於0時,為齊次線性方程,使用可分離變量法求解;(2) 當Q二、可降解的微分方程類型及典型問題求解可將階的微分方程歸根結底可以歸結為一階微分方程問題,針對於一般教材中只討論了二階的類型,可以擴展為如下三種類型:(1) y(n)=f(x)對於這樣的n階微分方程可以採取對右端逐步積分的方法,通過n次不定積分即得到包含有n個相互獨立的任意常數的通解
  • 2020考研數學高數要掌握的核心知識點梳理:微分方程
    2020考研數學高數要掌握的核心知識點梳理:微分方程 2019-05-01 14:51:26| 來源:廣東考研信息
  • AI一秒解微分,高數考試再也不用「掛柯南」了-虎嗅網
    它不光會求不定積分:還能解常微分方程:如此一來,不藉助外部的積分工具,也能輕鬆得到x10sin(x)這樣的函數了。一階常微分方程,和它的解從一個二元函數F(x,y)說起。有個方程F(x,y)=c,可對y求解得到y=f(x,c)。
  • 2011年考研數學高數預測:常微分方程
    核心提示:2011考研將至,網易教育將為廣大考生提供最準確的考前預測和最及時的真題解析,敬請關注!
  • 《常見一階微分方程》類型及其一般求解思路與步驟
    第三類:全微分方程及基於曲線積分與路徑無關的積分法,或者基於全微分運算法則與微分的形式不變性的方法(這部分內容在曲線積分有關積分與路徑無關的內容中討論)。 二、求解一階微分方程的基本思路1.改寫結構,對比標準可求解類型適當變換微分方程描述形式,比對標準類型方程結構。
  • 《積分與路徑無關及全微分方程》知識要點與問題求解思路與步驟
    1.積分與路徑無關的等價描述定理設D為xOy平面上的單連通區域,函數P(x,y),Q(x,y)在D內有連續的一階偏導數,則下面的四種說法等價:(1) 在區域D內存在可微函數u(x,y),使得du(x,y)= P(x,y)dx+Q(x,y)dy,(x,y)∈D;(
  • 無窮級數,常微分方程,指數級數,冪級數求和.
    #數學分析#HLWRC高數不定積分求導驗證,鄉下話niaiwaha(你愛蛙哈)=聽來=梨比=隨便他。#無窮級數#冪級數求和函數,sum(n,0,inf)(x^(3n+1)/(3n+1)!),常微分方程同理可得特徵方程,指數級數自造自解...  http://t.cn/A6bQ999K。。微博@海離薇。關注我就屏蔽我吧。。。。
  • 高數複習重點解析之——微分方程與無窮級數
    針對考生需求,教研老師精心準備了2014年暑期考研數學複習重點解析,以下是高數微分方程與無窮級數部分,供參考。 一、微分方程 微分方程可視為一元函數微積分學的應用與推廣。該部分在考試中以大題與小題的形式交替出現,平均每年所佔分值在8分左右。常考的題型包括各種類型微分方程的求解,線性微分方程解的性質,綜合應用。
  • 最簡單的常微分方程:變量分離微分方程
    常微分方程是微積分學方程中常見的,應用非常廣泛的方程,下面就來討論常微分方程中最簡單的變量分離微分方程。設一階微分方程式:其中f(x,y)是給定的函數,我們要做的工作是求微分方程的解y=y(x),可是一般不能用初等方法來解出這個微分方程,但是當微分方程的右端f(x,y)取某幾種特殊的類型時,就可用初等積分法求解。本篇講一個重要的特殊情形此時開篇中的微分方程就變成了這樣的方程稱之為變量分離的方程。
  • 如何快且準地求解不定積分
    不定積分的求解是高數較難的部分,本文將通過兩道習題的講解,對不定積分的求解思路進行初步的闡述。1. 有理化+三角函數換元第一步,觀察被積函數形式,發現1+x和1-x能夠湊成平方差公式,優先考慮有理化。由於分子含獨立部分x,因此應對分子進行有理化,有理化過程如下所示:第二步,觀察有理化後函數形式,被積函數可以拆分成兩部分,且其中一部分很容易就能得出原函數,此時應考慮拆分,拆分過程如下所示:第三步,觀察積分部分,若對整個分母採取換元法,最後仍然無法將根號划去。此時,應考慮正弦函數換元法。在習題1的解答過程中,三角函數換元極其關鍵。
  • 2016考研數學高數考點:微分方程與無窮級數
    今天精心準備了高數微分方程與無窮級數部分考點分析,希望能夠幫助大家。   ▶微分方程   微分方程可視為一元函數微積分學的應用與推廣。該部分在考試中以大題與小題的形式交替出現,平均每年所佔分值在8分左右。常考的題型包括各種類型微分方程的求解,線性微分方程解的性質,綜合應用。
  • 2016考研:數學高數重要知識點匯總
    為此,結合考研數學歷年真題總結出高數以下幾個重要知識點,希望同學們能夠在複習過程中有所側重。  1.函數、極限與連續:主要考查極限的計算或已知極限確定原式中的常數、討論函數連續性和判斷間斷點類型、無窮小階的比較、討論連續函數在給定區間上零點的個數或確定方程在給定區間上有無實根。
  • 學習一種更出色的偏微分方程求解模擬方法
    儘管世界上最快的超級計算機是為模擬物理現象而設計的,但其速度仍不足以穩定地預測氣候變化的影響、基於氣流設計飛機的操控系統、或精確模擬核聚變反應堆。所有這些現象均通過偏微分方程 (Partial Differential Equations, PDE) 建模,這類方程用於描述現實世界中所有平滑而連續的事物,以及科學和工程領域中最常見一類的模擬問題。
  • 2019數學建模國賽|Matlab 求解微分方程(組)
    2.函數 dsolve 求解的是常微分方程的精確解法,也稱為常微分方程的符號解.但是,有大量的常微分方程雖然從理論上講,其解是存在的,但我們卻無法求出其解析解,此時,我們需要尋求方程的數值解,在求常微分方程數值解方面,MATLAB 具有豐富的函數,將其統稱為 solver,其一般格式為:           [T,Y]=solver(odefun,tspan,y0)
  • 39.積分、泛函 + 歐拉-拉格朗日方程、實數、標量、變分法、極值、弧微分、範數(數學篇)
    變分法(高數)極值(高中)弧微分(高數)範數(高數)看不懂call小嗷2.1 積分積分是微積分學與數學分析裡的一個核心概念。通常分為定積分和不定積分兩種。直觀地說,對於一個給定的正實值函數,在一個實數區間上的定積分可以理解為在坐標平面上,由曲線、直線以及軸圍成的曲邊梯形的面積值(一種確定的實數值)。
  • 習題解答——一階微分方程及其解法(1)
    新學期開始了,高數快樂學微信公眾號將繼續為大家服務,希望大家一如既往的支持我們,向周邊的同學推薦我們的公眾號,讓我們一起努力吧!
  • 微分方程3,一階線性微分方程,絕對值可以不加
    微分方程是一門比較高深的學問,很多微分方程比較難解,有的研究數學的人一輩子就求解1個微分方程。很多實際的物理過程都歸納為微分方程關係。比如大家愛談論的相對論和量子力學,相對論裡面就有一個引力場方程,是2階的偏微分方程,求解難度很大,愛因斯坦就是做了一個錯誤的宇宙常數假設,導致了結果沒有符合實際情況。量子力學也有很多微分方程,這些在普通人眼中就像天書一樣,難以理解。因此這也是民科、影視劇、大眾娛樂愛談的話題,反正普通人都搞不太懂,最適合娛樂和想像了。
  • 微分方程2,齊次方程,強迫症福利
    微分方程是一門比較高深的學問,很多微分方程比較難解,有的研究數學的人一輩子就求解1個微分方程。很多實際的物理過程都歸納為微分方程關係。比如大家愛談論的相對論和量子力學,相對論裡面就有一個引力場方程,是2階的偏微分方程,求解難度很大,愛因斯坦就是做了一個錯誤的宇宙常數假設,導致了結果沒有符合實際情況。量子力學也有很多微分方程,這些在普通人眼中就像天書一樣,難以理解。
  • 神經網絡還能求解高級數學方程?
    通過開發一種將複雜數學表達式表示為一種語言的新方法,然後將解決方案視為序列到序列的神經網絡的翻譯問題,我們構建了一個在解決積分問題以及一階和二階微分方程方面都優於傳統計算系統的系統。以前,這類問題被認為是深度學習模型所無法企及的,因為求解複雜方程需要精度而不是近似值。