用深度神經網絡解決三體問題,提速一億倍
- 2019 年 10 月 31 日
- 筆記
曉查 發自 凹非寺
「不要回答!不要回答!不要回答!」
劉慈欣在為自己的科幻小說起名為《三體》時,他早已知道「三體」本身就是一個不可回答的問題。

「三體問題」已經困擾了人類幾百年,曾經無數讓你感到恐懼的大牛都為此付出了巨大的心血,比如牛頓、歐拉、拉格朗日、龐加萊,直到今天還有很多人在研究。
但遇事不決,用神經網絡總是沒錯的。
最近來自愛丁堡大學、劍橋大學的數學家們,用神經網絡來求解三體問題,速度比之前的求解器快一億倍,而且誤差只有十萬分之一。
「我太難了」
那麼三體問題到底是什麼,為什麼它會難倒如此多的物理學家、數學家?
N體問題是指,根據牛頓三大運動定律和牛頓萬有引力定律,在知道N個質點的初始位置和速度的情況下,求解其後續運動的問題。
首先,二體問題極易解決,人類早已掌握地球圍繞太陽運轉的規律,開普勒行星運動三大定律就是答案。

所以在牛頓提出了萬有引力後,一開始人們以為,三體問題不過是比二體問題多一體,也沒什麼難的嘛,就是多加一個方程而已。
然而事情並不簡單,當物體增加到3個以後,一般來說,運動軌跡就會變成亂七八糟的曲線,不再像橢圓那樣優美簡單。

雖然三體問題雖然只包含三個方程,但數學上已經證明,除了少數特殊情況,一般是無法找到解析解的,我們只能用數值模擬的方法求得近似解。
在歐拉、拉格朗日等大牛的努力下,數學家找到了一些特殊三體問題的精確解,比如三個等質量物體繞「8」字運動。

但是大多數三體問題還是無法求出精確解的,而且就像混沌里的蝴蝶效應一樣,只要初始條件有一些細微的差異,就會導致結果大為不同。
為此需要有巨大算力的計算機去求解三體問題。由於系統的混沌性質,只能通過費時費力的迭代計算來找到給定初始化問題的解。
2015年,有人開發了開發了Brutus積分器,可以按任意精度計算出求出任意N體問題的近似收斂解。

但是,迭代計算隨着精度的不斷提高和模擬時間的增長,需要在內存中保留的數字精度呈指數級增長,並且計算的步長要進一步縮小。
神經網絡可不是瞎蒙
既然用傳統的數值解法難度很大,不妨試一試神經網絡。
不過最近神經網絡的跨界比較多,有人用來預測餘震,有人用來診斷心臟病,最後發現都不靠譜。
物理學家、數學家在使用深度神經網絡之前,當然不能隨便硬套,得先證明這不是玄學。
早在1991年,已經有人用理論證明,如果神經網絡的激活函數是連續、有界且非恆定值的,則可以在緊湊的輸入集上實現連續映射。
說得通俗些,一個包含足夠光滑激活函數的網絡,能夠以任意精確度逼近函數及其導數。也就是說,用神經網絡可以找到三位問題中物體運動方程的近似解。
作者使用了由128個節點、10個隱藏層組成的前饋神經網絡。使用ADAM優化算法對數據進行訓練,其中每個epoch分為5000個batch,並將激活函數設置為ReLU。

訓練集和驗證集分別由9900和100個模擬數據組成。在每個模擬中,通過Brutus積分運動方程求解,與神經網絡的結果進行對照。
通過輸入時間t和粒子的位置坐標,以上的神經網絡返回其他粒子在該時刻的坐標,從而實現了近似求解三體問題。
在這個過程中,神經網絡需要的時間平均比Brutus積分器快10萬倍,最高可以快一億倍。
不過,還有是該方法還是遭到了一些網友的質疑,原因是它只解決了在二維平面內的三體問題,粒子的初速度也限制為0。
而且神經網絡在求解問題的時候似乎沒有遵循能量守恆定律,最後靠作者引入了一個「能量投影層」,才實現了誤差10-5的結果。

但是這種方法為我們快速低成本計算航天器軌道提供了一種解決思路。
論文地址: https://arxiv.org/abs/1910.07291