這篇文章將會介紹一篇有關 Reservoir Computing(儲備池計算) 的論文,包括 Reservoir Computing 的原理以及該論文作者如何利用 Reservoir Computing 預測 Kuramoto-Sivashinsky (KS) equation。
這篇論文名為 Model-Free Prediction of Large Spatiotemporally Chaotic Systems from Data: A Reservoir Computing Approach,在這個領域是一篇非常有啟發性的文章,大家有興趣可以去找找看喔~
▌什麼是 Reservoir Computing
簡單來說,Reservoir Computing 是機器學習下面的一個分支,我們輸入某一個時間的資料,然後會得到下一個時段的資料,如下圖。
▲ Reservoir Computing 示意圖 (圖片來源:理工畢卡索我本人)
因為這樣有講跟沒講一樣,所以我接著要更詳細的介紹 Reservoir Computing 的運作方法。首先要先來定義一些名詞。等下才好解釋。我們的輸入是一個大小 DinX1 的向量,定義成 u(t)。我們的輸出是一個大小 DoutX1 的向量,定義成 v(t)。大家可以理解成一個系統在時間 t 的一些參數。Reservoir Computing 的大架構如下
u(t) 連接到 I/R (Input-to-reservoir) coupler,而I/R 如其名接到 Reservoir,Reservoir 再連接到 R/O (reservoir-to-output) coupler,如下圖
▲ Reservoir Computing 更詳細的示意圖 (圖片來源:Model-Free Prediction of Large Spatiotemporally Chaotic Systems from Data: A Reservoir Computing Approach)
▌如何用 Reservoir Computing 做預測
在 R/O coupler 有很多可以調整的參數 p,我們的訓練方法就是調整這些參數 p,讓 v(t) 跟我們想到的輸出 vd(t) 越小越好。所以如果我想預測一個隨著時間改變的渾沌系統,我應該要怎麼做呢? 聰明如你一定猜得到,就是把 v(t) 接回 u(t),讓每個時段的值可以繼續拿來預測下個時段,如下圖
▲ Reservoir Computing 的預測階段 (圖片來源:Model-Free Prediction of Large Spatiotemporally Chaotic Systems from Data: A Reservoir Computing Approach)
▌中場休息&簡單的重點整理
大家加油,離結束還有一段距離。
▲ 哥本哈根真的是很漂亮的城市 (照片來源:我在丹麥玩的時候拍的)
簡單的總結一下目前講的重點,Reservoir Computing 是機器學習的一個分支,在這篇論文中用來預測混沌系統。
預測的方法就是在 training 階段調整 R/O coupler 的參數p。如何調整p? 透過把 v(t) 跟我們想要的 vd(t) 做比較。在預測階段,我們會把 v(t) 接回輸入,如此一來就可以預測下一個時間 v(t+△t) 的值。補充一下,我們這邊假設時間是離散的,也就說每個時間間隔都用 △t 表示。
▌如何列式
講了這麼多終於要詳細把式子列出來了。在這篇論文中,I/R coupler 是 Win(u)=Winu (不知道大家還記不記得 u 是輸入),Win 是一個DrXDin的矩陣,矩陣的元素是來自 [- σ ,σ] 的均勻分布。而 Reservoir r(t+△t) = tanh[Ar(t)+Winu(t)],乍看之下很複雜,不要放棄!! Winu(t) 就是輸入通過 I/R coupler 的結果而已,把這個結果加上 Ar(t),再經過tanh 就可以了。A是一個鄰接矩陣 (Adjacency matrix),矩陣裡面的元素都是0或1,你可以把每個元素所在位置的行跟列想像成 reservoir 裡面兩個節點的編號,如果元素的值是1代表相連,0則代表不相連,也就是說矩陣決定了 reservoir 裡面的構造,也就是 reservoir 裡面的點跟點之間連接的關係。
另外如果忘記的話,tanh長這樣
▲ tanh 本來想自己畫但是畫得太醜(圖片來源:https://ml-cheatsheet.readthedocs.io/en/latest/activation_functions.html)
至於 R/O coupler 則是 Wout(r) = P1r+P2r^2。大家還記得我們要訓練 P 嗎? P就是(P1,P2)。
▌預測 KS Equation
這篇論文接著預測 Kuramoto-Sivashinsky (KS) equation,這個式子長這樣
其中的 cos 項是這篇論文調整的,注意到當 μ = 0 時,這個式子就會變成常見的 KS equation。y(x,t) 是,
用上述 Reservoir Computing 的方法,作者做出了如下圖的預測
▲ 上圖的 (a) 是 KS 的真實數據 (b) 是 Reservoir Computing 的預測 (c) 是兩者的差異 (圖片來源:Model-Free Prediction of Large Spatiotemporally Chaotic Systems from Data: A Reservoir Computing Approach)
目前的作法有個缺點,就是當 L 變大時,用來預測的 reservoir 的大小就會變得很大,因此作者提出了一個解方,就是把一個超大的 reservoir 拆成一堆小的 reservoir,每個 reservoir 負責處理一個小區域,如下圖
▲Parallellized reservoir (圖片來源:Model-Free Prediction of Large Spatiotemporally Chaotic Systems from Data: A Reservoir Computing Approach)
這裡的概念都跟前面一樣,只是 reservoir 變很多個而已。hi 是第 i 個 reservoir 的輸入,第 i 個 reservoir 的輸入都會包含 hi, hi+1 和 hi-1。算法都跟前面一模一樣。ri(t+△t) = tanh(Airi(t)+Win,i hi(t)),而 Pi 是 (P1,i ,P2,i),P1,i ,P2,i 滿足 P1,i ri(t)+P2,i ri^2 = gi(t)。
以上就是相關介紹啦 如有錯誤還請不吝賜教