AI一秒解微分,高數考試再也不用「掛柯南」了-虎嗅網

2020-11-27 虎嗅APP


大家都知道,AI 連加減法這樣的簡單算術都做不好:



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


它不光會求不定積分:



還能解常微分方程:



一階二階都可以。


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


團隊說,這是Seq2Seq和Transformer搭配食用的結果。


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


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


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



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



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


巨大數據集的生成姿勢


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


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


函數,和它的積分


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


第一種是正向生成 ,指生成隨機函數,再用現成的工具求積分。把工具求不出的函數扔掉。


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


第三種是用了分部積分的反向生成。前面的反向生成有個問題,就是不太可能覆蓋到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)。



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


最後,計算表達式的數量。


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


於是,問題可以概括成:



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


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


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



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



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


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


勝過商業軟體


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


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


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



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



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


比如,在一階微分方程中,與使用貪婪搜索解碼算法的新模型相比,Mathematica不落下風,但新方法通常1秒以內就能解完方程,Mathematica的解題時間要長的多。


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


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


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


邀請AI參加IMO


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


有網友這樣說道:


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



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



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


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



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


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



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



Facebook AI研究院出品


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


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



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


François Charton,Facebook AI研究院的客座企業家,主要研究方向是數學和因果關係。



相關焦點

  • 高數複習重點解析之——微分方程與無窮級數
    針對考生需求,教研老師精心準備了2014年暑期考研數學複習重點解析,以下是高數微分方程與無窮級數部分,供參考。 一、微分方程 微分方程可視為一元函數微積分學的應用與推廣。該部分在考試中以大題與小題的形式交替出現,平均每年所佔分值在8分左右。常考的題型包括各種類型微分方程的求解,線性微分方程解的性質,綜合應用。
  • 高數掛了?聽聽學霸的學習之道,有了這個方法,想掛都難!
    「你高數掛了嗎?」「你高數過了嗎?」這句話可能是大一同學期末成績出來後互相問候的對話,心生後怕......高數這門課已經支配了大一的同學們。高數的無感之源小編已經為同學們大致分析出來,現在,小二就來給同學們分享一下學習高數的經驗。小二從同濟版本高數(上)開始分析學習方法:高數上冊有這樣幾個大的問題,便是極限、導數、微積分、不定積分與定積分、微分方程。從第一章節開始,便引出了函數與極限的問題,這一章節裡,同學們必定要有一種把書翻爛的覺悟,為何這樣說?
  • 2018年成人高考專升本高數一考試重點(五)
    2018年成人高等教育考試進入備考階段,對於很多考生來說,成人高考專升本高數科目的複習是個難題,往往需要花費很多的時間進行複習,在這裡,小編為各位考生整理了成人高考專升本高數一的考試大綱,各位考生可以按照大綱的內容對高數一的考試內容進行重點複習。
  • 2016考研數學高數考點:微分方程與無窮級數
    今天精心準備了高數微分方程與無窮級數部分考點分析,希望能夠幫助大家。   ▶微分方程   微分方程可視為一元函數微積分學的應用與推廣。該部分在考試中以大題與小題的形式交替出現,平均每年所佔分值在8分左右。常考的題型包括各種類型微分方程的求解,線性微分方程解的性質,綜合應用。
  • 拆分——線性微分方程的解的結構
    話不多說,這篇文章算是微分方程這一章難點的開頭了。我們現在來複習線性微分方程的解的結構。這裡主要討論二階線性方程,並且考試中也只會出現二階,不會考到三階及其以上線性方程的。(不過因為遇到的題目是二階的,那麼通解就只有兩個函數,所以這裡不是很重要)若D=0,則線性相關若D不=0,則線性無關定理一:其實就是兩個函數都是微分方程的就,那麼這兩個函數的和也是這個微分方程的解。
  • 大一新生期末考試,為什麼容易掛高數?
    我們學校的大一新生,第一次大學期末考試已經全部結束了。我們學校的大學老師,判卷速度真是非常給力啊!聽說是兩整天,判完了大一新生的全部高數試卷。根據大學裡學弟學妹們的反饋,一個班裡有40個學生,平均每個班高數掛科的有五個、六個。說實話,這個掛科的人數比較多了。
  • 2018年成人高考專升本高數一考試重點(二)
    2018年成人高等教育考試進入備考階段,對於很多考生來說,成人高考專升本高數科目的複習是個難題,往往需要花費很多的時間進行複習,在這裡,小編為各位考生整理了成人高考專升本高數一的考試大綱,各位考生可以按照大綱的內容對高數一的考試內容進行重點複習。
  • 2013考研數學(一)高數大綱考試內容及考試要求
    為了幫助同學們快速了解、把握今年的考試方向、複習重點,針對高數部分的內容,跨考教育數學教研室李老師梳理了高數重點考點的考試內容以及要求,以方便同學們結合考點來做題,選擇適合的複習方法。八、常微分方程考試內容常微分方程的基本概念 變量可分離的微分方程 齊次微分方程 一階線性微分方程 伯努利方程 全微分方程 可用簡單的變量代換求解的某些微分方程 可降階的高階微分方程線性微分方程解的性質及解的結構定理 二階常係數齊次線性微分方程 高於二階的某些常係數線性微分方程 簡單的二階常係數非其次線性微分方程 歐拉方程 微分方程的簡單應用
  • 2020考研數學高數要掌握的核心知識點梳理:微分方程
    2020考研數學高數要掌握的核心知識點梳理:微分方程 2019-05-01 14:51:26| 來源:廣東考研信息
  • 2018年成人高考專升本高數一考試重點(二)_專升本成人高考專升本...
    2018年成人高等教育考試進入備考階段,對於很多考生來說,成人高考專升本高數科目的複習是個難題,往往需要花費很多的時間進行複習,在這裡,小編為各位考生整理了成人高考專升本高數一的考試大綱,各位考生可以按照大綱的內容對高數一的考試內容進行重點複習。
  • 微分方程重點一:常係數齊次線性微分方程
    小編也說過,在考試中,那一節不是重點。微分方程前面的都是一些基礎,如果是一些和其他題型結合在一起的題目的話,可能會考前面的微分方程內容,比如說求知道函數的全微分,讓求原函數這類的。但是如果微分方程考大題的話,就是考二階常係數非齊次線性微分方程了。之前講的微分方程解的結構是基礎,主要是為了說明做題時我們需要求什麼。
  • 微分方程篇:為你構建微分方程框架
    在考研中,高數佔分約78%,另外22%就是線性代數了。考研數學中,總分150分,而微分方程大概能佔到10分左右,這是考研大綱中的出現的。一般考研中微分方程要麼是填空,要麼就是大題,所以就沒有了蒙的可能,這也就表示大家要想拿到這部分分就要自己弄懂了。
  • 常見微分方程求解公式
    如果您每天在固定的時間(無聊時、吃飯時、睡覺前、早上起床前、「吃雞」前後、「王者榮耀」前後、「英雄聯盟」前後)抽出10分鐘來瞅一瞅,那麼高數當真還那麼難搞定嗎?還會在考試之前焦慮不安嗎?還會為掛科重修而擔心嗎?
  • 2020陝西專升本高數大綱解讀
    問:我到底該怎麼備考專升本考試?數學題目是在是太難了?答:所有的備考方向看齊2020年陝西普通高等教育專升本考試高數大綱。那麼,今天小郭帶著大家解讀高數大綱。考試範圍及其分值(高數上):1、函數,極限與連續。5分選擇+10分填空+8分的計算=23分2、一元函數微分學。
  • 高數難?這一科掛的人才叫多
    學過高數的人,都知道高數很難,廣義高等數學是指初等數學之外的數學,通常認為,高等數學是由微積分學,較深入的代數學、幾何學以及它們之間的交叉內容所形成的一個學科。主要內容包括:極限、微積分、空間解析幾何與向量代數、級數、常微分方程。
  • 微分方程重點二:常係數非齊次線性微分方程
    小編在之前的文章:微分方程重點一中講了常係數齊次線性微分方程的內容。那是微分方程難點的一半,接下來的內容是另外一半。讓我們在講解之前,先來對一下答案。題目在微分方程重點一:常係數齊次線性微分方程中。接下來就是講微分方程的最後一個重點了,也是考試微分方程中最後的部分了,不過既然是最後一部分,那麼就有最後一部分的難。這部分主要講的就是求特解,這也是這裡的難點。
  • AI攻破高數核心,1秒內精確求解微分方程、不定積分
    」微信訂閱號:sinachuangshiji文/慄子 魚羊來源:量子位(ID:QbitAI)大家都知道,AI (神經網絡) 連加減法這樣的簡單算術都做不好:可現在,AI已經懂得微積分,把魔爪伸向你最愛的高數
  • 高數022|微分 微積分裡的微來了
    大家都知道 高數 其實也叫「微積分」,而我們今天就要正式接觸這一思想
  • 2018年成人高考專升本高數一考試重點(四)_專升本成人高考專升本...
    2018年成人高等教育考試進入備考階段,對於很多考生來說,成人高考專升本高數科目的複習是個難題,往往需要花費很多的時間進行複習,在這裡,小編為各位考生整理了成人高考專升本高數一的考試大綱,各位考生可以按照大綱的內容對高數一的考試內容進行重點複習。
  • 高數(一)、高數(工專)、高數(工本)有何差異
    在自學考試中,不少專業都有高等數學這門課。很多考生在看各專業課程設置時發現,有的專科專業高數課程為高等數學(一),有的專業則為高等數學(工專)。這兩門課有哪些差異?  兩門課面向的考生群體不同。從自學考試大綱中可了解到,高數(一)是全國高等教育自學考試經濟管理類專科中重要的基礎理論課程,高數(工專)是工科各專業專科自學考試計劃中重要的基礎理論課程。