はじめに
私は神経科学が専門ではありませんが,スパイキングニューラルネットワークを扱った研究をしている以上,神経科学(ニューロサイエンス)は切っても切れない分野です.
巷で有名なディープニューラルネットワークも,結局は形式ニューロンモデルという神経細胞の数理モデルの集まりです.
形式ニューロンは,時系列データを持っておらず,神経細胞モデルとしては1943年に提案されたかなり古いモデルなのですが,今の深層学習には相性が良いので未だに使われています.
しかし,もちろん神経科学分野においては,より生物学的に精緻な神経細胞数理モデルが多く誕生しています.
これらは通常,「膜電位」や「スパイク」といった概念を持ち,そういったモデルを**スパイキングニューロンモデル (SNM)と言います.
さらに,それをネットワーク上にすればスパイキングニューラルネットワーク (SNN)**と呼ばれます.
SNNについては,私が昔書いたSpiking Neural Networkとは何なのかを読んでください.
Izhikevich Neuron Model (2003)
さて,スパイキングニューロンモデルの中でも有名なIzhikevich Neuron Modelというモデルが今回のテーマです.
エンジニアリングな研究ではLIFモデルがよく使われますが,医学寄りな研究ではこのIzhikevichモデルがよく使われ(ているように思い)ます.
なぜかというとIzhikevichモデルは様々なニューロンの活動を,パラメータを変えるだけで模倣できるからです.
さらにHodgkin-Huxleyモデルのような複雑さは無く,効率的に神経細胞の細かな挙動をシミュレーションできる,という大きなメリットがあります.
(ref. Hodgkin-Huxleyニューロンモデルを実装してみる)
Izhikevichモデルは以下のような2つの微分方程式から成り立ちます.
$$\frac{dv}{dt}=0.04v^{2} + 5v + 140 -u + I$$
$$\frac{du}{dt}=a(bv-u)$$
$${\rm if}\ \ v\geq30,\ \ {\rm then}\ \ v\leftarrow c,\ u\leftarrow u+d$$
このとき,$v$は膜電位[mV],$t$は時間[ms], $u$はrecovery variable(回復変数)と呼ばれる変数,$I$は外界からの入力電流を指します.
また$(a, b, c, d)$はハイパーパラメータです.
$a$は,$u$をどれだけ時間的減衰させるかを司る定数(時定数),$b$は$v$に対する$u$の感受性,$c$は静止膜電位,$d$は$v$が発火した後に膜電位が回復するまでにかかる時間に影響する定数です.
まあ,こんなことをつらつら書かれても分からないと思うので,実際に動かしてみましょう.
Izhikevich Neuron Simulator
Web上で動くシミュレータを作りました.
Izhikevich Neuron Simulator -Web上で動作するニューロンシミュレータ-
バックエンドはPython(Flask/NumPy)で,グラフ描画はJavascriptです.
同じようなモデルの説明や,パラメータ設定例も書いてありますので,適当に遊んでください.
スマホでも使えますが,描画が潰れてしまうので,PCやタブレット推奨です.
どうしてもスマホ,って場合は横持ちの方がまだマシかも.
例えば初期設定のまま,$I_{DC}$にチェックをいれてシミュレーションしてみると,
$$⬇️$$
このように,決めた入力電流にしたがって計算された,膜電位$v$と回復変数$u$が描画されます.
また,時間分解能は計算時は$dt=2^{-5}$と細かく設定しているのでカオスも一応確認できます.
(これはカオスと言ってもよいのかな?? 詳しい人いたら教えてください.)
おわりに
この記事は,Webアプリの紹介記事でした.
(個人的には,ニューロサイエンス初学者や,ちょっとした指導とかにつかってくれたら嬉しいなと思ったり...)
お遊び程度でも良いので使ってみて,少しでも神経科学に興味を持つ人が増えてくれたら幸いです!
もし,不具合等あればこの記事にコメントつけていただければと思います.