日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

求解微分方程,用seq2seq就夠了,性能遠(yuǎn)超 Mathematica、Matlab

 taotao_2016 2019-12-18


距離用深度學(xué)習(xí)技術(shù)求解符號(hào)數(shù)學(xué)推理問(wèn)題,或許只差一個(gè)恰當(dāng)?shù)谋硎竞颓‘?dāng)?shù)臄?shù)據(jù)集。
近日,F(xiàn)acebook AI研究院的Guillaume Lample 和Francois Charton兩人在arxiv上發(fā)表了一篇論文,標(biāo)題為《Deep Learning for Symbolic Mathematics》。

論文地址:https:///abs/1912.01412

這篇論文提出了一種新的基于seq2seq的方法來(lái)求解符號(hào)數(shù)學(xué)問(wèn)題,例如函數(shù)積分、一階常微分方程、二階常微分方程等復(fù)雜問(wèn)題。其結(jié)果表明,這種模型的性能要遠(yuǎn)超現(xiàn)在常用的能進(jìn)行符號(hào)運(yùn)算的工具,例如Mathematica、Matlab、Maple等。

有例為證:

上圖左側(cè)幾個(gè)微分方程,Mathematica和Matlab都求解失敗,而作者所提的模型卻能夠獲得右側(cè)的正確結(jié)果(這不是個(gè)案,而是普遍現(xiàn)象,具體可見后文)。
更有意思的是,這還并不僅僅是它的唯一好處。由于seq2seq模型的特點(diǎn),作者所提方法能夠?qū)ν粋€(gè)公式得出不止一個(gè)的運(yùn)算結(jié)果,例如如下的微分方程
 該模型能夠反饋這么多的結(jié)果:
可以驗(yàn)證一下,這些結(jié)果都是正確的,至多差一個(gè)常數(shù) c。
我們來(lái)看下這樣美好的結(jié)果,作者是如何做到的。(其實(shí)很簡(jiǎn)單?。?/span>

一、總體思路
首先需要強(qiáng)調(diào),在過(guò)往中,機(jī)器學(xué)習(xí)(包括神經(jīng)網(wǎng)絡(luò))是一種統(tǒng)計(jì)學(xué)習(xí)方法,這些方法被證明在統(tǒng)計(jì)模式識(shí)別方面非常有效,例如在CV、NLP、語(yǔ)音識(shí)別等問(wèn)題上均已經(jīng)達(dá)到了超過(guò)人類的性能。
但機(jī)器學(xué)習(xí)(這里特別強(qiáng)調(diào)是神經(jīng)網(wǎng)絡(luò))卻不適合去解決符號(hào)推理問(wèn)題,目前僅有少數(shù)這樣的工作,但主要集中在解決基本的算術(shù)任務(wù)(例如加法和乘法)上,且實(shí)驗(yàn)上證明在這些問(wèn)題上,神經(jīng)網(wǎng)絡(luò)的方法往往表現(xiàn)不佳,需要引入一些已有的指向任務(wù)的組件才勉強(qiáng)可行。
相比于以往的各種方法,作者思想獨(dú)特,他們認(rèn)為數(shù)學(xué)符號(hào)計(jì)算的過(guò)程本質(zhì)上就是一個(gè)模式識(shí)別的過(guò)程。由此他們將數(shù)學(xué)(尤其是符號(hào)計(jì)算)視為一個(gè) NLP 模型問(wèn)題,符號(hào)推理等同于seq2seq的「機(jī)器翻譯」過(guò)程。(真是“機(jī)器翻譯”解決一切?。?/span>
具體來(lái)講,作者在文章中主要針對(duì)函數(shù)積分和常微分方程(ODE)進(jìn)行研究。
學(xué)過(guò)高等數(shù)學(xué)的我們都有過(guò)求積分和解微分方程的痛苦經(jīng)歷,對(duì)計(jì)算機(jī)軟件來(lái)講,求解這些問(wèn)題事實(shí)上也同樣困難。以函數(shù)積分為例,人類在求解過(guò)程中主要是依賴一些規(guī)則(例如基本函數(shù)的積分公式、換元積分、部分積分等);而傳統(tǒng)的計(jì)算機(jī)代數(shù)系統(tǒng)則主要是通過(guò)從大量具體的案例中進(jìn)行搜索,例如對(duì)用于函數(shù)積分的Risch算法的完整描述就超過(guò)了100頁(yè)。
但,回過(guò)頭,我們思考,從本質(zhì)上來(lái)講,求積分的過(guò)程不正是一個(gè)模式識(shí)別的過(guò)程嗎?當(dāng)給你一個(gè)公式y(tǒng)y′(y^2 + 1)^{?1/2},你會(huì)從腦海中牢牢記住的數(shù)十、數(shù)百個(gè)積分模型中尋找出「模式」最為匹配的結(jié)果\sqrt{y^2 + 1}。
基于這種思路,作者首先提出了將數(shù)學(xué)表達(dá)式轉(zhuǎn)換為seq2seq表示形式的方法,并用多種策略生成了用于監(jiān)督學(xué)習(xí)的數(shù)據(jù)集(積分、一階和二階微分方程),然后將seq2seq模型用于這些數(shù)據(jù)集,便得出了比最新計(jì)算機(jī)代數(shù)程序Matlab、Mathematica等更好的性能。

二、表示:從數(shù)學(xué)公式到seq
作者將數(shù)學(xué)問(wèn)題視作自然語(yǔ)言處理的問(wèn)題,因此首要一步便是將數(shù)學(xué)公式轉(zhuǎn)化為NLP模型能夠處理的形式,即序列(seq)。
這分兩步:
首先,將數(shù)學(xué)公式轉(zhuǎn)化為樹結(jié)構(gòu)。

運(yùn)算符和函數(shù)(例如cos、pow等)為內(nèi)部節(jié)點(diǎn),數(shù)字、常數(shù)和變量為葉??梢钥闯鲞@里每一個(gè)數(shù)學(xué)公式都對(duì)應(yīng)唯一一個(gè)樹結(jié)構(gòu)。
需要強(qiáng)調(diào)兩點(diǎn):
  • 這里把2+3 和 3 +2視作不同的數(shù)學(xué)公式;
  • 這里x/0、log(0)等在數(shù)學(xué)中認(rèn)為是無(wú)效的函數(shù)表達(dá)式在這里并不會(huì)排除在外;
由于樹和表達(dá)式之間存在一一對(duì)應(yīng)的關(guān)系,因此表達(dá)式之間的相等性,將反映在它們相關(guān)的樹上。作為等價(jià)關(guān)系,由于 2 + 3 = 5 = 12-7 = 1×5,所以這對(duì)應(yīng)于這些表達(dá)式的四棵樹是等價(jià)的。
形式數(shù)學(xué)的許多問(wèn)題都可以重組為對(duì)表達(dá)式或樹的運(yùn)算。例如,表達(dá)式簡(jiǎn)化等于找到樹的較短等效表示。
在這篇文章中,作者考慮兩個(gè)問(wèn)題:符號(hào)積分和微分方程。兩者都可以歸結(jié)為將一個(gè)表達(dá)式轉(zhuǎn)換為另一個(gè)表達(dá)式。例如在函數(shù)積分中,將 cos(x) 的樹映射到其解 sin(x)+c 的樹。這本質(zhì)上就是機(jī)器翻譯的一個(gè)特殊實(shí)例,而已。
其次,將樹轉(zhuǎn)化為序列。
這很顯然,機(jī)器翻譯模型運(yùn)行在序列(seq)。針對(duì)這一步,學(xué)過(guò)計(jì)算機(jī)的同學(xué)應(yīng)該都不陌生,作者選用了前綴表示法,從左到右,將每個(gè)節(jié)點(diǎn)寫在其子節(jié)點(diǎn)前面。例如 2 + 3×(5+2),表示為序列為 [+ 2 * 3 + 5 2]。這里,在序列內(nèi)部,運(yùn)算符、函數(shù)或變量由特定的標(biāo)記表示。就像在表達(dá)式和樹之間的情況一樣,樹和前綴序列之間也存在一對(duì)一的映射。
 
三、數(shù)據(jù)集生成
當(dāng)有了合適的表示之后,另一個(gè)重要的事情便是如何生成恰當(dāng)?shù)臄?shù)據(jù)集。作者采用生成隨機(jī)表達(dá)式的算法(具體這里不再贅述),如果用p1表示一元運(yùn)算子(例如cos、sin、exp、log等)的集合,p2表示二元運(yùn)算子(例如+、-、×、÷等)的集合,L表示變量、常數(shù)、整數(shù)的集合,n 為一棵樹的內(nèi)部節(jié)點(diǎn)個(gè)數(shù)(因此也是表達(dá)式中運(yùn)算子的個(gè)數(shù))??梢杂?jì)算,表達(dá)式的個(gè)數(shù)與n之間有如下關(guān)系:

要訓(xùn)練網(wǎng)絡(luò)模型,就需要有(問(wèn)題,解決方案)對(duì)的數(shù)據(jù)集。理想情況下,我們應(yīng)該生成問(wèn)題空間的代表性樣本,即隨機(jī)生成要積分的函數(shù)和要求解的微分方程。但我們知道,并不是所有的函數(shù)都能夠積分(例如f=exp(x^2)和f=log(log(x)))。為了生成大型的訓(xùn)練集,作者提出了一些技巧。
在這里我們以積分為例(ODE-1 和ODE-2 數(shù)據(jù)集的生成方法這里不再贅述,可參見論文)。作者提出了三種方法:
Forward generation(FWD)。給定n 個(gè)運(yùn)算子的表達(dá)式,通過(guò)計(jì)算機(jī)代數(shù)系統(tǒng)求解出該表達(dá)式的積分;如果不能求解,則將該表達(dá)式丟棄。顯然這種方式獲得的數(shù)據(jù)集只是問(wèn)題空間的一個(gè)子集,也即只包含符號(hào)框架可以求解的函數(shù)積分;且求積分的過(guò)程往往是非常耗時(shí)的。
Backward generation(BWD)。求微分是容易的。因此我們可以先隨機(jī)生成積分表達(dá)式f,然后再對(duì)其進(jìn)行微分得到 f',將(f,f')添加到數(shù)據(jù)集當(dāng)中。這種方法不會(huì)依賴于符號(hào)積分系統(tǒng)。這種方法生成的數(shù)據(jù)集也有一定的問(wèn)題:1)數(shù)據(jù)集中簡(jiǎn)單積分函數(shù)的數(shù)量很少,例如 f=x^3 sin(x),其對(duì)應(yīng)的積分式微F=-x^3 cos(x) + 3x^2sin(x) + 6x cos(x) - 6 sin(x),這是一個(gè)有15個(gè)運(yùn)算子的表達(dá)式,隨機(jī)生成的概率相對(duì)來(lái)說(shuō)會(huì)小一些;2)表達(dá)式的微分往往會(huì)比表達(dá)式本身更長(zhǎng),因此在BWD方式所生成的數(shù)據(jù)集中,積分(問(wèn)題的解)傾向短于積分函數(shù)(問(wèn)題)。
Backward generation withintegration by parts(IBP)。為了克服BWD所存在的問(wèn)題,作者提出IBP的方法,即利用分部積分

隨機(jī)生成兩個(gè)函數(shù)F和G,如果已知fG和它的積分式已經(jīng)在數(shù)據(jù)集當(dāng)中,那么就可以求解出Fg的積分式,然后把Fg和它的積分式放入數(shù)據(jù)集。反之也可以求解 fG 的積分式。如果fG和Fg都不在數(shù)據(jù)集中,那么可以按照BWD的方式求解FG 對(duì)應(yīng)的微分fg。不斷迭代,從而獲得數(shù)據(jù)集。
可以對(duì)比一下不同的方式,生成數(shù)據(jù)集的特點(diǎn):

這里假設(shè)了 n= 15,L ={x} ∪ {-5, ... , 5} \ {0}, p2={+,-, ×, ÷}, p1= {exp, lgo, sqrt, sin, cos, tan, sin-1, cos-1, tan-1, sinh, cosh,tanh, sinh-1, cosh-1, tanh-1}。
可以看出 FWD和 IBP 傾向于生成輸出比輸入更長(zhǎng)的樣本,而 BWD 方法則生成較短的輸出。與 BWD 情況一樣,ODE 生成器傾向于生成比其方程式短得多的解。
補(bǔ)充一點(diǎn),生成過(guò)程中清洗數(shù)據(jù)也非常重要。這包括幾個(gè)方面:
1)方程簡(jiǎn)化。例如將 x+1+1+1+1 簡(jiǎn)化為x +4
2)系數(shù)簡(jiǎn)化。例如x + x tan(3) + cx +1 簡(jiǎn)化為 cx +1
3)清除無(wú)效表達(dá)式。例如 log(0)。
 
四、模型
這篇文章中所使用的模型比較簡(jiǎn)單,就是一個(gè)seq2seq的模型,當(dāng)給定一個(gè)問(wèn)題的表達(dá)式(seq),來(lái)預(yù)測(cè)其對(duì)應(yīng)的解的表達(dá)式(seq)。
訓(xùn)練
具體來(lái)說(shuō),作者使用了一個(gè)transformer模型,有 8 個(gè)注意力頭,6層,512維。(在這個(gè)案例中,大的模型并不能提高性能)
在訓(xùn)練中,作者使用了Adam優(yōu)化器,學(xué)習(xí)率為10E-4。對(duì)于超過(guò)512個(gè)token的表達(dá)式,直接丟棄;每批使用256個(gè)表達(dá)式對(duì)進(jìn)行訓(xùn)練。
在推斷過(guò)程中,作者使用了帶有early stopping的beam搜索方法來(lái)生成表達(dá)式,并通過(guò)序列長(zhǎng)度來(lái)歸一化beam中假設(shè)的對(duì)數(shù)似然分?jǐn)?shù)。
注意一點(diǎn),在生成過(guò)程中沒(méi)有任何約束,因此會(huì)生成一些無(wú)效的前綴表達(dá)式,例如[+ 2 * 3]。這很好解決,直接丟棄就行了,并不會(huì)影響最終結(jié)果。
評(píng)估
在機(jī)器翻譯中,一般采用對(duì)人工翻譯進(jìn)行對(duì)比的BLEU分?jǐn)?shù)作為指標(biāo)來(lái)評(píng)價(jià)翻譯質(zhì)量,但許多研究表明,更好的BLEU分?jǐn)?shù)并不一定與更好的表現(xiàn)有關(guān)。不過(guò)對(duì)求解積分(或微分方程)來(lái)說(shuō),評(píng)估則相對(duì)比較簡(jiǎn)單,只要將生成的表達(dá)式與其參考解進(jìn)行簡(jiǎn)單比較,就可以驗(yàn)證結(jié)果的正確性了。例如微分方程xy′ ? y + x =0的參考解為 x log(c/ x) ,模型生成的解為 x log(c) ? x log(x),顯然這是兩個(gè)等價(jià)的方程。
由于對(duì)表達(dá)式是否正確可以很容易地進(jìn)行驗(yàn)證,因此作者提出如果生成的beam中的表達(dá)式中,只要有一個(gè)正確,則表示模型成功解決了輸入方程(而不是只選用得分最高的)。例如當(dāng) beam =10時(shí),也即生成 10 個(gè)可能的解,只要有一個(gè)正確即表明模型成功輸出結(jié)果正確。
 
五、結(jié)果
1、實(shí)驗(yàn)結(jié)果

從上表可以看出,
1)在積分中即使讓beam=1,模型的準(zhǔn)確性也是很高的。
2)beam=1時(shí),ODE結(jié)果并不太理想。不過(guò)當(dāng)beam尺寸增大時(shí),結(jié)果會(huì)有非常顯著的提升。原因很簡(jiǎn)單,beam大了,可供挑選的選項(xiàng)也就多了,正確率自然會(huì)提高。
 
2、與三大著名數(shù)學(xué)軟件對(duì)比

這個(gè)表格顯示了包含 500 個(gè)方程的測(cè)試集上,本文模型與Mathematica、Matlab、Maple三大著名數(shù)學(xué)軟件的比較。對(duì)于Mathematica,假設(shè)了當(dāng)時(shí)間超過(guò)30s而未獲得解則認(rèn)為失?。ǜ鄷r(shí)延的對(duì)比可見論文原文附錄)。對(duì)于給定的方程式,本文的模型通常會(huì)在不到 1 秒的時(shí)間里找到解決方案。
從正確率上可以看出,本文方法要遠(yuǎn)遠(yuǎn)優(yōu)于三大著名數(shù)學(xué)軟件的結(jié)果。
 
3、等價(jià)解
這種方法最有意思的地方出現(xiàn)了。通常你用符號(hào)求解軟件,只能得到一個(gè)結(jié)果。但這種seq2seq 的方法卻能夠同時(shí)給你呈現(xiàn)一系列結(jié)果,它們完全等價(jià),只是用了不同的表示方式。具體案例,我們前面已經(jīng)提到過(guò),這里不再贅述。

4、通用性研究
在前面提到的實(shí)驗(yàn)結(jié)果中,測(cè)試集與訓(xùn)練集都來(lái)自同一種生成方法。但我們知道每一種生成方法都只是問(wèn)題空間的一個(gè)子集。那么當(dāng)跨子集測(cè)試時(shí)會(huì)出現(xiàn)什么現(xiàn)象呢?

結(jié)果很吃驚。
1)當(dāng)用FWD數(shù)據(jù)集訓(xùn)練,用BWD數(shù)據(jù)集進(jìn)行測(cè)試,分?jǐn)?shù)會(huì)極低;不過(guò)好在用IBP數(shù)據(jù)集測(cè)試,分?jǐn)?shù)還行;
2)同樣的情況,當(dāng)用BWD數(shù)據(jù)集訓(xùn)練,用FWD數(shù)據(jù)集進(jìn)行測(cè)試,結(jié)果也很差;意外的是,用IBP數(shù)據(jù)集測(cè)試,結(jié)果也不理想;
3)當(dāng)把三個(gè)數(shù)據(jù)集結(jié)合在一起共同作為訓(xùn)練集時(shí),測(cè)試結(jié)果都還不錯(cuò)。
這說(shuō)明
1)FWD數(shù)據(jù)集和BWD數(shù)據(jù)集之間的交集真的是非常小
2)數(shù)據(jù)集直接影響模型的普適性,因此如何生成更具代表性的數(shù)據(jù)集,是這種方法未來(lái)一個(gè)重要的研究?jī)?nèi)容。

六、總結(jié)
我們用幾句話來(lái)總結(jié)這項(xiàng)工作的意義:
1、本文提出了一種新穎的、利用seq2seq模型求解符號(hào)數(shù)學(xué)推理的方法,這種方法是普遍的,而非特定模型;
2、如何生成更具代表性的數(shù)據(jù)集,有待進(jìn)一步研究;
3、完全可以將類似的神經(jīng)組件,內(nèi)嵌到標(biāo)準(zhǔn)的數(shù)學(xué)框架(例如現(xiàn)在的3M:Mathematica、Matlab、Maple)的求解器當(dāng)中,這會(huì)大大提升它們的性能。

鎖定AI研習(xí)社,AI社區(qū)獨(dú)家直播

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多