指数関数型シナプスモデル
Contents
指数関数型シナプスモデル#
シナプスのモデルは複数あるが, 良く用いられるのが指数関数型シナプスモデル(exponential synapse model)である.このモデルは生理学的な過程を無視した現象論的モデルであることに注意しよう.指数関数型シナプスモデルには2つの種類, 単一指数関数型モデル (single exponential model)と二重指数関数型モデル (double exponential model)がある.
数式の説明の前にモデルの挙動を示す.次図は2種類のモデルにおいて\(t=0\)でスパイクが生じてからのシナプス後電流の変化を示している.ただし, 実際のシナプス後電流はこれにシナプス強度 (Synaptic strength)1を乗じて総和を取ったものとなる.
using PyPlot
rc("axes.spines", top=false, right=false)
td, tr = 2e-2, 2e-3 # synaptic decay time, synaptic rise time (sec)
dt, T = 5e-5, 0.1 # タイムステップ, シミュレーション時間 (sec)
nt = Int(T/dt) # シミュレーションの総ステップ
# 単一指数関数型シナプス
r_single = zeros(nt)
for t in 1:nt-1
spike = ifelse(t == 1, 1, 0)
r_single[t+1] = r_single[t]*(1-dt/td) + spike/td
#r_single[t+1] = r_single[t]*exp(-dt/td) + spike/td
end
# 二重指数関数型シナプス
r_double, hr = zeros(nt), zeros(nt)
for t in 1:nt-1
spike = ifelse(t == 1, 1, 0)
r_double[t+1] = r_double[t]*(1-dt/tr) + hr[t]*dt
hr[t+1] = hr[t]*(1-dt/td) + spike/(tr*td)
#r_double[t+1] = r_double[t]*exp(-dt/tr) + hr[t]*dt
#hr[t+1] = hr[t]*exp(-dt/td) + spike/(tr*td)
end
time = (1:nt)*dt
figure(figsize=(4, 3))
plot(time, r_single, linestyle="dashed", label="single exponential")
plot(time, r_double, label="double exponential")
xlabel("Time (s)"); ylabel("Post-synaptic current (pA)")
legend(); tight_layout()
2種類の指数関数型シナプスの動態.破線は単一指数関数型シナプスで, 実線は二重指数関数型シナプスである.
単一指数関数型モデル(Single exponential model)#
シナプス前ニューロンにおいてスパイクが生じてからのシナプス後電流の変化はおおよそ指数関数的に減少する, というのが単一指数関数型モデルである 2. 式は次のようになる.
この関数を時間的なフィルターとして, 過去の全てのスパイクについての総和を取る.
ここで\({r(t)}\)は前節におけるシナプス動態(\(s_{\text{syn}}\))で, \(t_{k}\)はあるニューロンの\(k\)番目のスパイクの発生時刻である.\({t_{k}<t}\)の意味は現在の時刻\(t\)までに発生したスパイクについての和を取るという意味である.なお,スパイクが生じてから, ある程度の時間が経過した後はそのスパイクの影響はないと見なせるので, 一定の時間までの総和を取るのがよい.
別の表記法としてスパイク列に対する畳み込みを行うというものもある.畳み込み演算子を\(*\)とし, シナプス前細胞のスパイク列を\(S(t)=\sum_{t_{k}< t} \delta\left(t-t_{k}\right)\)とする (ただし, \(\delta\)はDiracのdelta関数において\(\delta(0)=1\)とした関数).このとき, \(r(t)=f*S(t)\)と表すことができる.畳み込み演算子を用いると簡略な表記ができるが,実装上は他と同じ手法を用いる.
微分方程式による表現#
上の手法ではニューロンの発火時刻を記憶し, 時間毎に全てのスパイクについての和を取る必要がある.そこで, 実装する場合は次の等価な微分方程式を用いる.
ここで\(\tau_s\)はシナプスの時定数(synaptic time constant)である. また, \(\delta(\cdot)\)はDiracのdelta関数です(ただし\(\delta(0)=1\)です). これをEuler法で差分化すると
となる.ここで\(\delta_{t,t_{k}}\)はKroneckerのdelta関数で, \(t=t_{k}\)のときに1, それ以外は0となる.また減衰度として\(\left(1-\Delta t/\tau_{d}\right)\)の代わりに\(\exp\left(-\Delta t/\tau_{d}\right)\)を用いる場合もある.
二重指数関数型モデル(Double exponential model)#
2重の指数関数によりシナプス後電流の立ち上がりも考慮するのが, 二重指数関数型モデル(Double exponential model)である3.\(t=0\)にシナプス前細胞が発火したときのシナプス後電流の時間変化の関数は次のようになる.
ただし, \({\tau_r}\)は立ち上がり時定数(synaptic rise time constant), \({\tau_d}\)は減衰時定数(synaptic decay time constant)である.\(\tau_{d}\)は\(\tau_{s}\)と同じく神経伝達物質の減少速度を決定している.\(A\)は規格化定数で次のように表される.
規格化定数\(A\)を乗じることで最大値が1となる.ただし, シミュレーションをする上で実際に規格化をする場合は少ない.
\(\alpha\)関数#
上記の式において, \(\tau=\tau_{r}=\tau_{d}\)の場合は \(\boldsymbol{\alpha}\) 関数 (alpha function, alpha synapse)と呼ぶ (Rall, 1967).式としては次のようになる.
この式は二重指数関数型シナプスの式に単に代入するだけでは導出できない.これらの式の対応については後述する.
微分方程式による表現#
ここで, 二重指数関数型シナプスの式に対応する, 補助変数\(h\)を用いた微分方程式を導入する.
単一指数関数型シナプスの場合と同様にEuler法で差分化すると
となる.
念のため, 微分方程式と元の式が一致することを確認しておこう.\(t=0\)のときにシナプス前細胞が発火したとし, それ以降の発火はないとする.このとき, \(h(0)=1/\tau_{r}\tau_{d}, r(0)=0\) である.\(h\)についての微分方程式の解は
となるので, これを\(r\)についての式に代入して
となる.これを解くには両辺に積分因子\(\exp({t}/{\tau_d})\)をかけてから積分をするかLaplace変換をするかである.今回はLaplace変換を用いる.右辺一項目を移行した後に両辺をLaplace変換すると以下のようになる.
ただし\(r(t)\)のLaplace変換を\(F(s)\)とした. ここで逆Laplace変換を行うと次のようになる.
この式の最大値\(r_{\max}\)を求めておこう. \(r(t)\)を微分して0と置いた式の解\(t_{\max}\)を代入すれば求められる.計算すると,
となる.
なお, \(\alpha\)関数の導出は逆Laplace変換をする前に\(\tau=\tau_d=\tau_r\)とすればよく,
となる.若干の係数の違いはあるが, 同じ形の関数が導出された.