清大光電所碩士生甯敬宇以Julia實作傅立葉神經算子和馬可夫神經算子,成為NeuralOperators.jl套件,開箱即用的特點比Python版的Demo模型還實用。該套件已收錄於Julia官方套件資源中。

 秒解複雜偏微分方程式  NeuralOperators.jl

 開發者  清大光電所碩士生甯敬宇

攝影_洪政偉

 熱門特色  內建傅立葉和馬可夫神經算子套件,比原作者Python版功能更完整

 未來發展重點  打造完整框架,可設計專屬核函數、建置專屬類神經網路

不論是天氣預報、氣溫預測還是飛機動力模擬,甚至是單一疾病的傳播模式,都得靠偏微分方程計算。但,偏微分方程的傳統解法,得花上數十個小時才能算完。

不過,學術圈用AI技術找到了快速解題的新方法。加州理工學院在去年秋季和今年夏季相繼發表了兩篇重磅論文,成功用傅立葉神經算子(Fourier Neural Operators)和馬可夫神經算子(Markov Neural Operators)這兩種AI模型,可以快速計算出偏微分方程難題和流體力學方程式的解,就連最令學術人頭疼的混沌運算,也只要幾秒就能算出結果。

這與傳統數十小時相比,是數萬倍的加速。

臺灣開發者半年內用Julia實作出2種模型

不過,「這兩篇論文作者,只用Python撰寫出實驗性質的Demo模型。」就讀清大光電所的研究生甯敬宇解釋,使用者要用這些模型解特定問題,就得重新實作一次,入門門檻高。

於是,在Julia臺灣社群發起人杜岳華的鼓勵下,甯敬宇花了幾個月,以Julia開發出開箱即用的NeuralOperators.jl套件(現由SciML共同維護),內含以Julia撰寫的傅立葉神經算子和馬可夫神經算子,讓使用者可直接在Julia深度學習框架Flux上執行。也因此,這個能快速處理複雜運算的套件,在今年9月中,正式被納入Julia官方網站。

一如Julia這個年輕的程式語言,NeuralOperators.jl的開發者甯敬宇也很年輕。才20出頭的他,開發的套件不僅比原作者的Python版本還實用,而且還更完整。這對主打科學計算的Julia套件生態系來說,也因此更完善。

手工補齊Julia基礎套件不足,解決虛數比較問題

話鋒一轉,甯敬宇坦言,開發過程並非一帆風順。因為,Julia這套問世不到10年的年輕語言,不如30多歲的Python擁有完整的套件開發工具或基礎架構。因此,甯敬宇得自己手工解決這些不足。

比如,傅立葉神經算子中有一項「快速傅立葉轉換」演算法,會將輸入的訊號轉換為頻率空間上的訊號,並以帶有虛數的複數來呈現。「但Julia無法妥善處理這個問題,」甯敬宇舉例,因為帶有虛數,類神經網路無法比較複數大小,因此,甯敬宇得手動將虛數部分「封印」在類神經網路層中,不讓它影響計算過程。

這個挑戰很大。因為,甯敬宇一面要更改模型結構、解決虛數問題,一面又要保持模型準確度。

加速模型600倍訓練時間,未來還要完善

經過一段折騰、克服挑戰後,他也在自己就讀的研究所實驗室,用NerualOperators.jl來解決模型訓練問題。

舉例來說,他的實驗室專攻量子光學,需要在機率空間上,壓縮一道雷射光,並量測這道光的變化。但,這種變化非常微小,誤差甚至低於量子力學保證能觀察到的最小範圍,為求更精確的數據,他們打造了一套卷積網路模型,可達到極高的保真度(0.99)。

但是,「缺點是訓練時間得花上好幾天,」甯敬宇解釋,因為卷積網路的特徵抽取機制受限,特別花時間,後來他改用自己開發的NeuralOperators.jl後,就解決了特徵抽取的效能瓶頸,「10幾分鐘就有結果,比原有模型快上600倍,保真度還能達到0.9999!」

不只能用於學術研究,NeuralOperators.jl還能用在生活化的影像處理場景上,比如,它可將經壓縮、解析度較差的照片,還原為高解析度的影像,又或是,它能根據影片的第一幀影像,來預測下一幀。

甯敬宇也透露,未來,他還要優化套件,要提供一套完整的框架,來讓使用者用來設計專屬的核函數、建置專屬的類神經網路。


熱門新聞

Advertisement