2018年のNeurIPSで話題になったNeuralODEですが、Juliaで簡単に出来るパッケージ「DiffEqFlux.jl」が出たようです。
論文:https://arxiv.org/abs/1902.02376
GitHub:https://github.com/SciML/DiffEqFlux.jl
ドキュメント:https://diffeqflux.sciml.ai/dev/
Juliaの公式ブログ記事:https://julialang.org/blog/2019/01/fluxdiffeq/
Juliaのセットアップ
筆者はJuliaの開発環境にJunoを用いています。
MATLABのような感じで動かせるので便利です。
セットアップはこちらの記事が参考になります。
https://qiita.com/SatoshiTerasaki/items/3dda33ece801b75e248c
DiffEqFlux.jlはどんなライブラリか
Juliaの機械学習ライブラリは以下の記事にあるのように色々とあります。
https://opensourceforu.com/2019/03/the-best-machine-learning-libraries-in-julia/
この中でも、「Flux.jl」ライブラリは有名です。
また、微分方程式を解くライブラリとしては「DifferentialEquations.jl」ライブラリがあります。
この2つを組み合わせできたのが、今回の「DiffEqFlux.jl」ライブラリのようです。
DiffEqFlux.jlはNeural ODEだけではなく、確率微分方程式や偏微分方程式を使用したニューラルネットワークを作ることも出来るようです。(Universal neural differential equations)
また、GPUの使用にも対応しています。
DiffEqFlux.jl試してみる
環境は以下です。
Ubuntu
Julia 1.4.2
Juno
インストール
ライブラリのインストールはJuliaの対話環境で以下のように行います。
Pkg.add("DiffEqFlux")
デモを動かす
ドキュメントにNeural ODEのデモがありました。
これを動かしてみましょう。
実行すると、予測値がデータにフィッティングされていく様子がplotで分かります。
終わりに
使いこなすにはJuliaやFluxライブラリの知識が必要になりそうです。
これから勉強していきたいと思います。