【深層学習】Neural ODEの直感的理解

機械学習

今回は最近の深層学習(Deep Learning)分野で、最近注目を集めているNeural ODEについて解説したいと思います。
この記事では、数学的な深い部分ではなく、その概念を理解することを目的としています。

この記事は、深層学習に関してなんとなく数学的仕組みがわかっている人を対象に書いています。

Neural ODEとは?

Neural ODEは、2018年にNIPSという世界的な人工知能の学会で発表された"Neural Ordinary Differential Equations"という論文で提唱されたものです。
発想自体が非常に興味深く、ニューラルネットワークを数学的に拡張したものでもあり、物理学(というより制御工学)との融合でもあります。

応用面でも期待が持たれており、特に時間的な変化の伴う問題に対して非常に有効です。

例えば、溜まった水が排水溝に流れる様子を想像してみて下さい。
そこに発泡スチロールの玉を浮かべれば、下の図のように、渦を巻いた軌道を描きます。
この軌道は、2次元の図形として見ると、曲線だらけの非常に複雑な線です。
しかし、時間的な関数で考えれば、ほぼ円運動で非常に単純な動きとして見ることができます。

実際、この曲線を既存のニューラルネットワークで近似しようとすると上手くいきません(下図(a))が、Neural ODEを使えばキレイに近似することができます(下図(b))。

ニューラルネットワークの復習

Neural ODEは、その名の通り、ニューラルネットワークとODE(常微分方程式)が組み合わさった構造を持っています。

まずは、通常のニューラルネットワークの構造を確認しましょう。
下の図のように、入力\(z_0\)が与えられ、1層目の関数\(f_1\)を通り\(z_1\)が出力され、それがさらに次の層へと繰り返され、最終的に出力\(\hat y\)を得ます。
※ Nural ODEの説明上、入出力を\(z_i\)で表しています。

ここで重要なのが、各層で関数\(f_i\)がそれぞれ違うということです。
この違いがニューラルネットワークの汎用性を引き上げている一方で、それに対応するパラメータなどを扱うために計算が複雑化し、メモリも消費しています。

常微分方程式(Ordinary Differential Equations; ODE)

ではNeural ODEに入る前に、ODE(常微分方程式)について説明します。
常微分方程式は、一般的に以下のように表すことができます。

\(
\frac{dy}{dt} = f(t, y),\qquad y(t_0) = y_0
\)

左辺が、関数\(y(t)\)に対する時間\(t\)の微分を表しています。
従って、直感的に説明すると、関数\(y(t)\)の変化の割合を示した式と言えます。

さらに、通常のニューラルネットワークと違い、時間変化に対してその割合は常に関数\(f\)で表すことができます。
前章の図で言えば、時間変化とは層の入出力の差\(x_{i+1} - x_i\)を表しています(ただしこれは離散的な変化です)。

またODEは、力学や制御工学でよく利用されます。
物理法則は基本的に変化しないので、粒子の動きやロボットアームの動作などを一度数式としてモデル化すれば、その時間変化を容易に求めることができます。

Neural ODE

ニューラルネットとODEを理解したところで、Neural ODEの話に戻ります。

前章で少し触れたように、適切な常微分方程式を使うことで、ニューラルネットにおける層の入出力の差を求めることができます。
しかもODEは微分方程式(= 微小変化を考慮することできる)なので、連続的な時間変化を表現することができます。

では、ODEから出力\(\hat y\)を知るにはどうすればいいかというと、微小変化の合計を求めればいいわけです。
つまり積分を行うことで、ニューラルネットで言う順伝搬と同じ操作が行えます。
以下のように、初期値\(t_0\)から\(t_1\)の間で積分すれば、\(t_1\)での状態\(y(t_1)\)を求めることができます。

\(
y(t_1) = \int_{t_0}^{t_1} f(\theta,y(t),t) \,dt
\)

ここで\(theta\)は初期値などのパラメータで、ニューラルネットでは重み\(w\)にあたるものです。

図で表すと以下のようになります。
注意点としては、無限状態は図では表せないので、離散的に表現しています。

図は離散的な表現ですが、これが微分可能な1つの関数で扱うことができ、このことがNeural ODEを特徴づけています。

誤差逆伝播は、数学的なテクニックを使って、これの微分を計算していきます。
直感的に微分方程式なので、微分的な繋がりを作ることが出来ることは、なんとなくわかると思うので、ここでは詳しい説明をしません。

詳しく知りたい人は、元論文をご覧ください。
論文を読むほどでもない方は、以下のリンクがおすすめです。

Neural ODEの紹介 - Qiita
はじめに これは、NeuralODEについて整理するためのものです。ですので、間違いは多々あると思うので、本気でNeuralODEを学びたいという方は、元論文や他のプロの方々が解説してる記事をお読みになる事をおすすめします。 ...

さらに学びたい人へ

今回は、Neural ODEを出来るだけ分かりやすく解説してみました。
しかし、元々の内容がある程度、数学的な知識が必要なので、難しく感じた方もいたと思います。

そんな人には、まずはニューラルネットワークや機械学習の基礎を学ぶのがいいです。
ネット上で勉強するのもいいですが、細切れの知識の寄せ集めに過ぎないので、体系だった理解をするのは難しいです。

一方、書籍であれば、基礎からしっかりと学ぶことができます。
本で学びつつ、最新情報などをネットで調べるとより理解が深まります。

今回の記事を読んでいただけた人には、ある程度機械学習への理解がある方が多いと思いますので、以下の本がおすすめです。

created by Rinker
オライリー・ジャパン
¥5,280(2021/09/26 00:23:41時点 Amazon調べ-詳細)

詳しくは以下のリンクで、レベル別におすすめの本を紹介しているので、併せて確認してみてください。

【2021年版】大学生向け機械学習のおすすめ本!
今回は機械学習のおすすめ本を紹介していきます!対象は、高校数学ざっくりと理解している大学生です。ある程度、機械学習を勉強した方も、これから学ぶ方にもおすすめです!機械学習をザックリ知りたい人向けここでは、機械学習に対してなんとなく興...

コメント

タイトルとURLをコピーしました