丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能學(xué)術(shù) 正文
發(fā)私信給camel
發(fā)送

0

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

本文作者: camel 2019-12-18 11:55
導(dǎo)語:距離用深度學(xué)習(xí)技術(shù)求解符號(hào)數(shù)學(xué)推理問題,或許只差一個(gè)恰當(dāng)?shù)谋硎竞蛿?shù)據(jù)集。

雷鋒網(wǎng) AI 科技評(píng)論按:近日,F(xiàn)acebook AI研究院的Guillaume Lample 和Francois Charton兩人在arxiv上發(fā)表了一篇論文,標(biāo)題為《Deep Learning for Symbolic Matehmatics》。

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

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

有例為證:


求解微分方程,用seq2seq就夠了,性能遠(yuǎn)超 Mathematica、Matlab 上圖左側(cè)幾個(gè)微分方程,Mathematica和Matlab都求解失敗,而作者所提的模型卻能夠獲得右側(cè)的正確結(jié)果(這不是個(gè)案,而是普遍現(xiàn)象,具體可見后文)。

更有意思的是,這還并不僅僅是它的唯一好處。由于seq2seq模型的特點(diǎn),作者所提方法能夠?qū)ν粋€(gè)公式得出不止一個(gè)的運(yùn)算結(jié)果,例如如下的微分方程


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

該模型能夠反饋這么多的結(jié)果:

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

可以驗(yàn)證一下,這些結(jié)果都是正確的,至多差一個(gè)常數(shù) c。

我們來看下這樣美好的結(jié)果,作者是如何做到的。(其實(shí)很簡單!)

 


一、總體思路


首先需要強(qiáng)調(diào),在過往中,機(jī)器學(xué)習(xí)(包括神經(jīng)網(wǎng)絡(luò))是一種統(tǒng)計(jì)學(xué)習(xí)方法,這些方法被證明在統(tǒng)計(jì)模式識(shí)別方面非常有效,例如在CV、NLP、語音識(shí)別等問題上均已經(jīng)達(dá)到了超過人類的性能。但機(jī)器學(xué)習(xí)(這里特別強(qiáng)調(diào)是神經(jīng)網(wǎng)絡(luò))卻不適合去解決符號(hào)推理問題,目前僅有少數(shù)這樣的工作,但主要集中在解決基本的算術(shù)任務(wù)(例如加法和乘法)上,且實(shí)驗(yàn)上證明在這些問題上,神經(jīng)網(wǎng)絡(luò)的方法往往表現(xiàn)不佳,需要引入一些已有的指向任務(wù)的組件才勉強(qiáng)可行。

相比于以往的各種方法,作者思想獨(dú)特,他們認(rèn)為數(shù)學(xué)符號(hào)計(jì)算的過程本質(zhì)上就是一個(gè)模式識(shí)別的過程。由此他們將數(shù)學(xué)(尤其是符號(hào)計(jì)算)視為一個(gè) NLP 模型問題,符號(hào)推理等同于seq2seq的「機(jī)器翻譯」過程。(真是“機(jī)器翻譯”解決一切啊)

具體來講,作者在文章中主要針對(duì)函數(shù)積分和常微分方程(ODE)進(jìn)行研究。

學(xué)過高等數(shù)學(xué)的我們都有過求積分和解微分方程的痛苦經(jīng)歷,對(duì)計(jì)算機(jī)軟件來講,求解這些問題事實(shí)上也同樣困難。以函數(shù)積分為例,人類在求解過程中主要是依賴一些規(guī)則(例如基本函數(shù)的積分公式、換元積分、部分積分等);而傳統(tǒng)的計(jì)算機(jī)代數(shù)系統(tǒng)則主要是通過從大量具體的案例中進(jìn)行搜索,例如對(duì)用于函數(shù)積分的Risch算法的完整描述就超過了100頁。

但,回過頭,我們思考,從本質(zhì)上來講,求積分的過程不正是一個(gè)模式識(shí)別的過程嗎?當(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é)問題視作自然語言處理的問題,因此首要一步便是將數(shù)學(xué)公式轉(zhuǎn)化為NLP模型能夠處理的形式,即序列(seq)。

這分兩步:

首先,將數(shù)學(xué)公式轉(zhuǎn)化為樹結(jié)構(gòu)。

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

運(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)為是無效的函數(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é)的許多問題都可以重組為對(duì)表達(dá)式或樹的運(yùn)算。例如,表達(dá)式簡化等于找到樹的較短等效表示。

在這篇文章中,作者考慮兩個(gè)問題:符號(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é)過計(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)系:

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

要訓(xùn)練網(wǎng)絡(luò)模型,就需要有(問題,解決方案)對(duì)的數(shù)據(jù)集。理想情況下,我們應(yīng)該生成問題空間的代表性樣本,即隨機(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á)式,通過計(jì)算機(jī)代數(shù)系統(tǒng)求解出該表達(dá)式的積分;如果不能求解,則將該表達(dá)式丟棄。顯然這種方式獲得的數(shù)據(jù)集只是問題空間的一個(gè)子集,也即只包含符號(hào)框架可以求解的函數(shù)積分;且求積分的過程往往是非常耗時(shí)的。

Backward generation(BWD)。求微分是容易的。因此我們可以先隨機(jī)生成積分表達(dá)式f,然后再對(duì)其進(jìn)行微分得到 f',將(f, f')添加到數(shù)據(jù)集當(dāng)中。這種方法不會(huì)依賴于符號(hào)積分系統(tǒng)。這種方法生成的數(shù)據(jù)集也有一定的問題:1)數(shù)據(jù)集中簡單積分函數(shù)的數(shù)量很少,例如 f=x^3 sin(x),其對(duì)應(yīng)的積分式微F=-x^3 cos(x) + 3x^2 sin(x) + 6x cos(x) - 6 sin(x),這是一個(gè)有15個(gè)運(yùn)算子的表達(dá)式,隨機(jī)生成的概率相對(duì)來說會(huì)小一些;2)表達(dá)式的微分往往會(huì)比表達(dá)式本身更長,因此在BWD方式所生成的數(shù)據(jù)集中,積分(問題的解)傾向短于積分函數(shù)(問題)。

Backward generation with integration by parts(IBP)。為了克服BWD所存在的問題,作者提出IBP的方法,即利用分部積分

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

隨機(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):

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

這里假設(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 傾向于生成輸出比輸入更長的樣本,而 BWD 方法則生成較短的輸出。 與 BWD 情況一樣,ODE 生成器傾向于生成比其方程式短得多的解。

補(bǔ)充一點(diǎn),生成過程中清洗數(shù)據(jù)也非常重要。這包括幾個(gè)方面:

1)方程簡化。例如將 x+1+1+1+1 簡化為x +4

2)系數(shù)簡化。例如 x + x tan(3) + cx +1 簡化為 cx +1

3)清除無效表達(dá)式。例如 log(0)。


 


四、模型


這篇文章中所使用的模型比較簡單,就是一個(gè)seq2seq的模型,當(dāng)給定一個(gè)問題的表達(dá)式(seq),來預(yù)測其對(duì)應(yīng)的解的表達(dá)式(seq)。具體來說,作者使用了一個(gè)transformer模型,有 8 個(gè)注意力頭,6層,512維。(在這個(gè)案例中,大的模型并不能提高性能)

在訓(xùn)練中,作者使用了Adam優(yōu)化器,學(xué)習(xí)率為10E-4。對(duì)于超過512個(gè)token的表達(dá)式,直接丟棄;每批使用256個(gè)表達(dá)式對(duì)進(jìn)行訓(xùn)練。

在推斷過程中,作者使用了帶有early stopping的beam搜索方法來生成表達(dá)式,并通過序列長度來歸一化beam中假設(shè)的對(duì)數(shù)似然分?jǐn)?shù)。

注意一點(diǎn),在生成過程中沒有任何約束,因此會(huì)生成一些無效的前綴表達(dá)式,例如[+ 2 * 3]。這很好解決,直接丟棄就行了,并不會(huì)影響最終結(jié)果。

評(píng)估。在機(jī)器翻譯中,一般采用對(duì)人工翻譯進(jìn)行對(duì)比的BLEU分?jǐn)?shù)作為指標(biāo)來評(píng)價(jià)翻譯質(zhì)量,但許多研究表明,更好的BLEU分?jǐn)?shù)并不一定與更好的表現(xiàn)有關(guān)。不過對(duì)求解積分(或微分方程)來說,評(píng)估則相對(duì)比較簡單,只要將生成的表達(dá)式與其參考解進(jì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é)果


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

從上表可以看出,

1)在積分中即使讓 beam=1,模型的準(zhǔn)確性也是很高的。

2)beam=1時(shí),ODE結(jié)果并不太理想。不過當(dāng)beam尺寸增大時(shí),結(jié)果會(huì)有非常顯著的提升。原因很簡單,beam大了,可供挑選的選項(xiàng)也就多了,正確率自然會(huì)提高。

 


2、與三大著名數(shù)學(xué)軟件對(duì)比


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

這個(gè)表格顯示了包含 500 個(gè)方程的測試集上,本文模型與Mathematica、Matlab、Maple三大著名數(shù)學(xué)軟件的比較。對(duì)于Mathematica,假設(shè)了當(dāng)時(shí)間超過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)提到過,這里雷鋒網(wǎng)不再贅述。

 

4、通用性研究

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

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

結(jié)果很吃驚。

1)當(dāng)用FWD數(shù)據(jù)集訓(xùn)練,用BWD數(shù)據(jù)集進(jìn)行測試,分?jǐn)?shù)會(huì)極低;不過好在用IBP數(shù)據(jù)集測試,分?jǐn)?shù)還行;

2)同樣的情況,當(dāng)用BWD數(shù)據(jù)集訓(xùn)練,用FWD數(shù)據(jù)集進(jìn)行測試,結(jié)果也很差;意外的是,用IBP數(shù)據(jù)集測試,結(jié)果也不理想;

3)當(dāng)把三個(gè)數(shù)據(jù)集結(jié)合在一起共同作為訓(xùn)練集時(shí),測試結(jié)果都還不錯(cuò)。

這說明

1)FWD數(shù)據(jù)集和BWD數(shù)據(jù)集之間的交集真的是非常??;

2)數(shù)據(jù)集直接影響模型的普適性,因此如何生成更具代表性的數(shù)據(jù)集,是這種方法未來一個(gè)重要的研究內(nèi)容。

 


六、總結(jié)


我們用幾句話來總結(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ì)大大提升它們的性能。


雷鋒網(wǎng)報(bào)道。

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

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

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說