指数関数型モデル(シナプスや活動トレース)の式と対応する微分・差分方程式の導出

2024-07-05

特にSpiking Neuronモデルをイメージして書いているが,異なる現象に対しても数式が同じなら計算は同じになる.

(今回はインパルス応答から微分方程式を導出しているが,微分方程式から解を計算する方が自然かもしれない.)

単一指数関数型モデル

下記の数式はインパルス応答や畳み込みのカーネルに相当する.

\begin{align}
h(t) &= \frac{1}{\tau} \exp \left( -\frac{t}{\tau} \right) \mathbf{1}(t)
\end{align}

一般には入力スパイクが複数の時刻である場合を考えるので

\begin{align}
x(t) &= \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}} h(t-t_\mathrm{spike})
\end{align}

このとき\(t_\mathrm{spike}\)はシナプス全細胞のスパイク時刻で\(\mathcal{T}_\mathrm{spike}\)はそれらの集合.

ただし,\(\mathbf{1}(t)\)はHeavisideのステップ関数で以下のように定義される.

\begin{align}
\mathbf{1}(t) &= \left\{
\begin{array}{ll}
1, & t \ge 0 \\
0, & t < 0
\end{array}
\right.
\end{align}

またHeavisideのステップ関数の微分がデルタ関数\(\delta (t)\)であることは以降で多用する.

微分方程式の導出

\(x(t)\)についての微分は\(h(t)\)に関する微分を足し合わせたものになるのでまず\(h(t)\)に関する微分を考える.これは関数の積の微分なので

\begin{align}
\frac{dh(t)}{dt} &= -\frac{1}{\tau^2} \exp \left( -\frac{t}{\tau} \right) \mathbf{1}(t) + \frac{1}{\tau} \exp \left( -\frac{t}{\tau} \right) \delta (t)\\
&= -\frac{1}{\tau} h(t) + \frac{1}{\tau} \delta (t)
\end{align}

\(x(t)\)についての微分を考えると

\begin{align}
\frac{dx(t)}{dt} &= \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}} \frac{dh}{dt}(t-t_\mathrm{spike}) \\
&= \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}} \left( -\frac{1}{\tau} h(t-t_\mathrm{spike}) + \frac{1}{\tau} \delta (t-t_\mathrm{spike}) \right)\\
&= -\frac{1}{\tau} x(t) + \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}}\frac{1}{\tau} \delta (t-t_\mathrm{spike}) \\
\end{align}

差分方程式の導出

微分方程式から差分方程式への変換には様々な手法が存在するがここではオイラー前進差分を使用する.

また差分化に伴い,\(\delta(t)\)の面積が1であるように調整する必要があることに注意.
\(\delta (t-t_\mathrm{spike}) = \frac{1}{\Delta t}\delta_{t_\mathrm{spike}}(t)\)
幅が\(\Delta t\)なので高さが\(\frac{1}{\Delta t}\)になるように調整する必要がある.
この調整をしない場合は,\(\Delta t\)が大きくなるにつれて1回のスパイクで入力される電流が大きくなる.

オイラー前進差分により\(x(t)\)に関する微分方程式は

\begin{align}
\frac{x(t+\Delta t) – x(t)}{\Delta t} &= -\frac{1}{\tau} x(t) + \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}}\frac{1}{\tau} \frac{1}{\Delta t} \delta_{t_\mathrm{spike}}(t) \\
x(t+\Delta t)&= x(t) + \Delta t \left(-\frac{1}{\tau} x(t) + \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}}\frac{1}{\tau} \frac{1}{\Delta t} \delta_{t_\mathrm{spike}}(t) \right) \\
x(t+\Delta t)&= x(t) -\frac{\Delta t}{\tau} x(t) + \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}}\frac{1}{\tau} \delta_{t_\mathrm{spike}}(t) \\
x(t+\Delta t)&= \left( 1 -\frac{\Delta t}{\tau} \right) x(t) + \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}}\frac{1}{\tau} \delta_{t_\mathrm{spike}}(t) \\
\end{align}

\(\left( 1 -\frac{\Delta t}{\tau} \right)\)から\(\exp\left(-\frac{\Delta t}{\tau} \right) \)への変更

計算上の利点はわからないが\(\left( 1 -\frac{\Delta t}{\tau} \right)\)の代わりに\(\exp\left(-\frac{\Delta t}{\tau} \right) \)が使用されることもある.(誰かコメントで教えてください)

基本的には両者は\(\Delta t\)が小さい限り同じだと考えてよいということを以下で説明する.

まず\(\exp\left(-\frac{\Delta t}{\tau} \right) \)のマクローリン展開を考えると

\begin{align}
\exp\left(-\frac{\Delta t}{\tau} \right) &= 1 + \left(-\frac{\Delta t}{\tau} \right) + \frac{1}{2!}\left(-\frac{\Delta t}{\tau} \right)^2 + \frac{1}{3!}\left(-\frac{\Delta t}{\tau} \right)^3 + \cdots \\
& = 1 -\frac{\Delta t}{\tau} + O(\Delta t ^2) \\
& \simeq 1 -\frac{\Delta t}{\tau}
\end{align}

上記の関係から

\begin{align}
\frac{\Delta t}{\tau} & \simeq 1 – \exp\left(-\frac{\Delta t}{\tau} \right)
\end{align}

指数関数で差分方程式を記述しなおすと

\begin{align}
x(t+\Delta t)&= \left( 1 -\frac{\Delta t}{\tau} \right) x(t) + \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}}\frac{1}{\tau} \delta_{t_\mathrm{spike}}(t) \\
x(t+\Delta t)&= \exp\left(-\frac{\Delta t}{\tau} \right) x(t) + \sum_{t_\mathrm{spike} \in \mathcal{T}_\mathrm{spike}} \left(1 – \exp\left(-\frac{\Delta t}{\tau} \right) \right) \frac{\delta_{t_\mathrm{spike}}(t)}{\Delta t} \\
\end{align}

研究SNN

Posted by Nakamura