大家都知道,,AI (神經(jīng)網(wǎng)絡(luò)) 連加減法這樣的簡單算術(shù)都做不好: 可現(xiàn)在,AI已經(jīng)懂得微積分,,把魔爪伸向你最愛的高數(shù)了,。 它不光會求不定積分: 還能解常微分方程: 一階二階都可以,。 這是Facebook發(fā)表的新模型,1秒給出的答案,,超越了Mathematica和Matlab這兩只付費數(shù)學軟件30秒的成績,。 團隊說,這是Seq2Seq和Transformer搭配食用的結(jié)果,。 用自然語言處理 (NLP) 的方法來理解數(shù)學,,果然行得通。 這項成果,,已經(jīng)在推特上獲得了1700贊,。許多小伙伴表示驚奇,,比如:
而且,,據(jù)說算法很快就要開源了: 到時候讓付費軟件怎么辦? 要訓練模型做微積分題目,,最重要的前提就是要有大大大的數(shù)據(jù)集,。 這里有,積分數(shù)據(jù)集和常微分方程數(shù)據(jù)集的制造方法: 函數(shù),,和它的積分首先,,就是要做出“一個函數(shù)&它的微分”這樣的數(shù)據(jù)對。團隊用了三種方法: 第一種是正向生成 (Fwd),,指生成隨機函數(shù) (最多n個運算符) ,,再用現(xiàn)成的工具求積分,。把工具求不出的函數(shù)扔掉,。 第二種是反向生成 (Bwd),指生成隨機函數(shù),,再對函數(shù)求導(dǎo),。填補了第一種方法收集不到的一些函數(shù),,因為就算工具求不出積分,也一定可以求導(dǎo)。 第三種是用了分部積分的反向生成 (Ibp),。前面的反向生成有個問題,,就是不太可能覆蓋到f(x)=x3sin(x)的積分: F(x)=-x3cos(x)+3x2sin(x)+6xcos(x)-6sin(x) 因為這個函數(shù)太長了,隨機生成很難做到,。 另外,,反向生成的產(chǎn)物,大多會是函數(shù)的積分比函數(shù)要短,,正向生成則相反,。 為了解決這個問題,團隊用了分部積分:生成兩個隨機函數(shù)F和G,,分別算出導(dǎo)數(shù)f和g,。 如果fG已經(jīng)出現(xiàn)在前兩種方法得到的訓練集里,它的積分就是已知,,可以用來求出Fg: ∫Fg=FG-∫fG 反過來也可以,,如果Fg已經(jīng)在訓練集里,就用它的積分求出fG,。 每求出一個新函數(shù)的積分,,就把它加入訓練集。 如果fG和Fg都不在訓練集里,,就重新生成一對F和G,。 如此一來,不借助外部的積分工具,,也能輕松得到x10sin(x)這樣的函數(shù)了,。 一階常微分方程,和它的解從一個二元函數(shù)F(x,y)說起,。 有個方程F(x,y)=c,,可對y求解得到y=f(x,c)。就是說有一個二元函數(shù)f,,對任意x和c都滿足: 再對x求導(dǎo),,就得到一個微分方程: fc表示從x到f(x,c)的映射,也就是這個微分方程的解,。 這樣,,對于任何的常數(shù)c,,fc都是一階微分方程的解。 把fc替換回y,,就有了整潔的微分方程: 這樣一來,,想做出“一階常微分方程&解”的成對數(shù)據(jù)集,只要生成一個f(x,c),,對c有解的那種,,再找出它滿足的微分方程F就可以了,比如: 二階常微分方程,,和它的解 二階的原理,,是從一階那里擴展來的,只要把f(x,c)變成f(x,c1,c2) ,,對c2有解,。 微分方程F要滿足: 把它對x求導(dǎo),,會得到: fc1,c2表示,,從x到f(x,c1,c2)的映射。 如果這個方程對c1有解,,就可以推出另外一個三元函數(shù)G,,它對任意x都滿足: 再對x求導(dǎo),就會得到: 最后,,整理出清爽的微分方程: 它的解就是fc1,c2,。 至于生成過程,,舉個例子: 現(xiàn)在,求積分和求解微分方程兩個訓練集都有了,。那么問題也來了,,AI要怎么理解這些復(fù)雜的式子,然后學會求解方法呢,? 將數(shù)學視作自然語言積分方程和微分方程,,都可以視作將一個表達式轉(zhuǎn)換為另一個表達式,研究人員認為,,這是機器翻譯的一個特殊實例,,可以用NLP的方法來解決。 第一步,,是將數(shù)學表達式以樹的形式表示,。 運算符和函數(shù)為內(nèi)部節(jié)點,數(shù)字,、常數(shù)和變量等為葉子節(jié)點,。 比如 3x^2 + cos(2x) - 1 就可以表示為: 再舉一個復(fù)雜一點的例子,這樣一個偏微分表達式: 用樹的形式表示,,就是: 采用樹的形式,,就能消除運算順序的歧義,照顧優(yōu)先級和關(guān)聯(lián)性,,并且省去了括號,。 在沒有空格、標點符號,、多余的括號這樣的無意義符號的情況下,,不同的表達式會生成不同的樹,。表達式和樹之間是一一對應(yīng)的。 第二步,,引入seq2seq模型,。 seq2seq模型具有兩種重要特性: 輸入和輸出序列都可以具有任意長度,并且長度可以不同,。 輸入序列和輸出序列中的字詞不需要一一對應(yīng),。 因此,seq2seq模型非常適合求解微積分的問題,。 使用seq2seq模型生成樹,,首先,要將樹映射到序列,。 使用前綴表示法,,將每個父節(jié)點寫在其子節(jié)點之前,從左至右列出,。 比如 2 + 3 * (5 + 2),,表示為樹是: 表示為序列就是 [+ 2 * 3 + 5 2]。 樹和前綴序列之間也是一一映射的,。 第三步,,生成隨機表達式。 要創(chuàng)建訓練數(shù)據(jù),,就需要生成隨機數(shù)學表達式,。前文已經(jīng)介紹了數(shù)據(jù)集的生成策略,這里著重講一下生成隨機表達式的算法,。 使用n個內(nèi)部節(jié)點對表達式進行統(tǒng)一采樣并非易事。比如遞歸這樣的方法,,就會傾向于生成深樹而非寬樹,,偏左樹而非偏右樹,實際上是無法以相同的概率生成不同種類的樹的,。 所以,,以隨機二叉樹為例,具體的方法是:從一個空的根節(jié)點開始,,在每一步中確定下一個內(nèi)部節(jié)點在空節(jié)點中的位置,。重復(fù)進行直到所有內(nèi)部節(jié)點都被分配為止。 不過,在通常情況下,,數(shù)學表達式樹不一定是二叉樹,,內(nèi)部節(jié)點可能只有1個子節(jié)點。如此,,就要考慮根節(jié)點和下一內(nèi)部節(jié)點參數(shù)數(shù)量的二維概率分布,,記作 L(e,n)。 接下來,,就是對隨機樹進行采樣,,從可能的運算符和整數(shù)、變量,、常量列表中隨機選擇內(nèi)部節(jié)點及葉子節(jié)點來對樹進行“裝飾”,。 最后,計算表達式的數(shù)量,。 經(jīng)由前面的步驟,,可以看出,表達式實際上是由一組有限的變量,、常量,、整數(shù)和一系列運算符組成的。 于是,,問題可以概括成:
如果p1 = 0,則表達式用二叉樹表示,。 這樣,,具有n個內(nèi)部節(jié)點的二叉樹恰好具有n + 1個葉子節(jié)點。每個節(jié)點和葉子可以分別取p1和L個不同的值,。 具有n個二進制運算符的表達式數(shù)量就可以表示為: 如果p1 > 0,,表達式數(shù)量則為: 可以觀察到,葉子節(jié)點和二元運算符的數(shù)量會明顯影響問題空間的大小,。 △不同數(shù)目運算符和葉子節(jié)點的表達式數(shù)量勝過商業(yè)軟件 實驗中,,研究人員訓練seq2seq模型預(yù)測給定問題的解決方案。采用的模型,,是8個注意力頭(attention head),,6層,512維的Transformer模型,。 研究人員在一個擁有5000個方程的數(shù)據(jù)集中,,對模型求解微積分方程的準確率進行了評估。 結(jié)果表明,,對于微分方程,,波束搜索解碼能大大提高模型的準確率。 而與最先進的商業(yè)科學計算軟件相比,,新模型不僅更快,,準確率也更高。 在包含500個方程的測試集上,,商業(yè)軟件中表現(xiàn)最好的是Mathematica。 比如,,在一階微分方程中,,與使用貪婪搜索解碼算法(集束大小為1)的新模型相比,,Mathematica不落下風,但新方法通常1秒以內(nèi)就能解完方程,,Mathematica的解題時間要長的多(限制時間30s,,若超過30s則視作沒有得到解)。 而當新方法進行大小為50的波束搜索時,,模型準確率就從81.2%提升到了97%,,遠勝于Mathematica(77.2%) 并且,在某一些Mathematica和Matlab無力解決的問題上,,新模型都給出了有效解,。 △商業(yè)科學計算軟件沒有找到解的方程邀請AI參加IMO 這個會解微積分的AI一登場,就吸引了眾多網(wǎng)友的目光,,引發(fā)熱烈討論,。網(wǎng)友們紛紛稱贊:鵝妹子嚶。 有網(wǎng)友這樣說道:
還有網(wǎng)友認為,這項研究太酷了,,該模型能夠歸納和整合一些sympy無法實現(xiàn)的功能,。 不過,也有網(wǎng)友認為,,在與Mathematica的對比上,,研究人員的實驗設(shè)定顯得不夠嚴謹。
但總之,,面對越來越機智的AI,,已經(jīng)有人發(fā)起了挑戰(zhàn)賽,邀請AI挑戰(zhàn)IMO金牌,。 Facebook AI研究院出品 這篇論文有兩位共同一作,。 Guillaume Lample,來自法國布雷斯特,,是Facebook AI研究院,、皮埃爾和瑪麗·居里大學在讀博士。 他曾于巴黎綜合理工學院和CMU分別獲得數(shù)學與計算機科學和人工智能碩士學位,。2014年進入Facebook實習,。 Fran?ois Charton,F(xiàn)acebook AI研究院的客座企業(yè)家(Visiting entrepreneur),,主要研究方向是數(shù)學和因果關(guān)系,。
|
|