從數據中識別動力系統

從數據中識別動力系統

來自專欄數據+動力系統41 人贊了文章

【主頁】:Yuying Liu (劉宇贏)

【專欄】:數據+動力系統

引言

在氣象科學、神經科學、生態學、金融學、流行病學等領域,人們通常面臨著這樣一個困難:那就是無法找到一個簡約的物理規律來描述所觀察到的現象。其中的原因也很簡單:相比那些簡單的物理模型(比如彈簧振子),這些系統十分複雜。它們通常被諸多因素所影響,並且在不同的尺度下被不同的物理規律所主導。可喜的是,隨著互聯網、感測器等科技的進步,人們當下有了更多的技術手段去「測量」這些系統。於是,如何從數據中挖掘這些物理規律成為了很多領域(尤其是工程類領域)的關鍵問題。Kutz組的這篇文章:Discovering governing equations from data: Sparse identification of nonlinear dynamical systems (以下簡稱SINDy)就是圍繞著這個問題所展開的。

該文章所提出的方法異常基礎:簡單地講,就是把來自統計學的一些回歸類演算法(如LASSO)用在了非線性動力系統的框架之下。但由於它屬於奠基性的文章並且有一定的新穎性,之後就有諸多跟進的工作,並衍生出來了許多更加複雜卻也更為成功的演算法。有了這個做基礎,讀者便可以更深入地去了解這個領域。

方法

作為一門描述自然規律的語言,微分方程一直在諸多領域扮演著非常重要的角色。大多的物理規律,經過變數替換等方法簡化之後,可以寫成如下簡單的形式:

frac{d}{dt}f{x}(t)=f{F(x(t))}

其中, f{x(t)}in R^n 是系統的狀態向量,函數 f{F} 則定義了一些物理上的約束。

現在,我們在不同時間點 t_1,t_2,dots,t_m 對所感興趣的系統的狀態 x_1,x_2,dots,x_n 進行測量,並把它們排列成矩陣形式 f{X} ,我們用表示其導數 f{dot{X}} ,即:

這裡需要指出, f{X} 是我們測量到的數據, f{dot{X}} 一般可以靠普通的數值方法去獲得(例如:差分方法)。

事實上,很多有趣的物理系統實際上都是被「很少的幾項」所主導的,例如熱傳導方程 u_t=a^2u_{xx} 中,只有一個關於空間的二階導數項,使得熱向外「擴散」;再如波動方程 u_{tt}-cu_x=0 的形式也是相當的簡潔。於是我們合理假定,等式右側的函數 f{F} 在某個函數空間當中,有「稀疏」的表徵方式(sparse representation)。

那麼這個函數空間是什麼樣的呢?不同應用領域可能會有不同的答案,獲取這樣的信息往往需要一定的domain knowledge。一般情形下,我們可以使用最常見的函數(candidate functions)來構建我們的函數庫(library),例如多項式函數,三角函數等等。(即便這些所選取的函數並不是最簡約的基底,它們也可以用來逼近目標函數。)我們把它們記作 f{Theta(X)} ,即:

這裡, f{X^{P_2}},f{X^{P_3}} 等等表示相應階數的多項式函數庫,例如:

於是,尋找描述該動力系統的微分方程問題就轉化成了標準的多元回歸問題。也即:

f{dot{X}}=f{Theta(X)}Xi+eta Z

其中, f{Xi=[xi_1,xi_2,dots,xi_n]} 是所謂的稀疏矩陣, f{Z} 中的元素是獨立同分布的的高斯白雜訊。

由於我們假設係數矩陣應該是稀疏的,這一點我們可以通過在回歸中加入對係數 的懲罰項來實現(也就是統計中的LASSO regression)。但是,原作者使用了另一種獲得稀疏係數矩陣的方法,叫做sequential thresholded least square。其原理也非常簡單:對數據進行多次最小二乘回歸,每一次回歸之後,低於一定闕值的係數自動設置為0,再進行下一次回歸;重複該步驟直至收斂。

例子

為了驗證這個方法,文章中首先使用洛倫茲方程作為例子來分析。在這個例子中,我們假設系統狀態變數 x,y,z 三個狀態均可被測量。具體的流程和結果如下圖所示:

除此之外,文章中還涉及了該方法在流體當中的應用,以及當系統中存在其它參數、存在外部干擾或是存在分支(bifurcation)時該如何應對:

有興趣的讀者可以閱讀原文了解詳細節:

researchgate.net/profil

拓展問題

正如上文所提到的,這篇文章中所提到的方法是一個「基本框架」,在此之後還有很多後續的工作提升+補充了很多必要的細節,例如:

  • 如果數據中存在雜訊,那該如何?(尤其是如何找到好的數值方法估計導數)
  • 如果測量不到系統的狀態變數,而只能測量到某個狀態變數的函數;或是對於有多個狀態變數的系統,我們只能測量到其中幾個變數,又該怎樣處理?
  • 如果在不同尺度下,主導的物理規律截然不同,該怎樣進行層次劃分?
  • 感應器該如何採樣,才能儘可能使得所需要的數據最少,等等。

歡迎有興趣的讀者翻閱相關的文獻,

本專欄之後也會更新相關內容,歡迎訂閱點贊!


推薦閱讀:

TAG:數據分析 | 動力系統數學概念 | 機器學習 |