SAMACTの数式

forward

本項では、SAMACTの推論方向の数式を示します。

離散時間tにおいて、i個のシナプスを持つニューロンjにおける内部電位は下記の数式で表されます。

(1)\[U_j(t) = \Sigma_{i=1}^{n}W_{ji}X_i(t)+aV_j(t-1)\]

ただし、\(X_i(t)\) はニューロンjへのi個の入力、\(W_{ji}\) は結合荷重、aは \((1-2^{-n})\) で表される減衰定数、 \(V_j(t-1)\) は前の時刻の残存電位です。

aは減算と右シフト演算により実現されています。

この内部電位Uと、発火閾値 \(\theta\) を比較し、内部電位が発火閾値を上回る場合に、ニューロンjは、該当時間にパルスを出力します。

(2)\[X_j(t) = g(u)\]
(3)\[u = U_j(t)-\theta\]

SAMACTはSNNなので、活性化関数がStep関数で定められ、ニューロンの出力は2値になります。

(4)\[\begin{split}g(u) = \begin{cases} 1 & (u \geq 0)\\ 0 & (u < 0) \end{cases}\end{split}\]

なお、パルスが出力された場合、次の時刻に残存する電位Vは、パラメータpに応じて減衰します。具体的には下記の数式で示されます。

(5)\[V_j(t) = U_j(t) - pX_j(t)\]

ここまでの数式をネットワークとして接続することで、ニューラルネットワークを実現しています。

backward

本項では、SAMACTの学習方向の数式を示します。

目的関数の定義は下記です。SAMACTは、この関数の評価結果を最小化することを目的として、勾配降下法を利用して学習します。

※l層のネットワークという仮定

(6)\[E \stackrel{\mathrm{def}}{=} \frac{1}{N}\Sigma_{P=1}^{N}\Sigma_{t=1}^{t_N}\frac{1}{2}\Sigma_{k=1}^{n_l}(X_{P,k}^{\langle l \rangle}(t) - T_{P,k}^{\langle l \rangle}(t))^2\]

なお、下記のような意味づけになっています。

  • E: 目的関数

  • N: データのパターン数

  • \(t_N\) : 1データに対してSAMACが推論に利用する時刻数

  • \(n_3\) : 3層目のニューロン数

  • \(X(t)\) : 時刻tの3層目のニューロンの出力パルス

  • \(T(t)\) : 時刻tの3層目のニューロンの教師パルス

SAMACTにおける学習対象は、下記2種です。項目は、更新式へのリンクになっています。

重みWの更新式

m個のシナプスをn個のニューロンごとに持つl層目の重みWの更新式は下記で定義されます。

(7)\[W_{nm}^{\langle l \rangle}(t+1) \gets W_{nm}^{\langle l \rangle}(t) - \eta \frac{\partial E(t)}{\partial W_{nm}^{\langle l \rangle}(t)}\]

ただし、\(\eta\)\(2^{-n}\) で表され、右シフト演算によって実現されます。

なお、勾配は下記の式で表されます。

(8)\[\frac{\partial E(t)}{\partial W_{nm}^{\langle l \rangle}(t)} = (X_{n}^{\langle l \rangle}(t) - T_{n}^{\langle l \rangle}(t))g'(u_{n}^{\langle l \rangle}(t))H_{nm}^{\langle l \rangle}(t)\]

最終層以外の教師パルスTは、前層への教師信号の定義 に示す数式で、次の層によって生成されます。

\(u(t)\) は数式 (3) で表されます。

また、勾配計算に利用する活性化関数の導関数 \(g'(u)\) は、次のグラフで表されます。

../_images/gdash.png

Fig. 2 活性化関数の導関数のグラフ

ただし、 \(\alpha , \beta , \gamma\)\(2^{-n}\) で表され、右シフト演算で実現されます。

\(H(t)\) は入力履歴値を表し、下記の数式で定義します。

(9)\[H_{nm}^{\langle l \rangle}(t) \stackrel{\mathrm{def}}{=} aH_{nm}^{\langle l \rangle}(t-1) + X_{m}^{{\langle l-1 \rangle}}(t)\]

ただし、aは \((1-2^{-n})\) で表され、減算と右シフトにより実現されます。

発火閾値 \(\theta\) の更新式

n個のニューロンごとの発火閾値 \(\theta\) の更新式は下記で定義されます。

(10)\[\theta _{n}^{\langle l \rangle}(t+1) \gets \theta _{n}^{\langle l \rangle}(t) - \iota \frac{\partial E(t)}{\partial \theta _{n}^{\langle l \rangle}(t)}\]

ただし、\(\iota\)\(2^{-n}\) で表され、右シフト演算によって実現されます。

なお、勾配は下記の式で表されます。

(11)\[\frac{\partial E(t)}{\partial \theta _{n}^{\langle l \rangle}(t)} = -(X_{n}^{\langle l \rangle}(t) - T_{n}^{\langle l \rangle}(t))g'(u_{n}^{\langle l \rangle}(t))\]

最終層以外の教師パルスTは、前層への教師信号の定義 に示す数式で、次の層によって生成されます。

\(u(t)\) は数式 (3) で表されます。

また、勾配計算に利用する活性化関数の導関数 \(g'(u)\) は、Fig. 2 で表されます。

前層への教師信号の定義

(12)\[\begin{split}T_{j}^{\langle l-1 \rangle}(t) = \begin{cases} 1 & (X_{j}^{\langle l-1 \rangle} - \frac{\partial E(t)}{\partial X_{j}^{\langle l-1 \rangle}}(t) \geq Threshold) \\ 0 & (X_{j}^{\langle l-1 \rangle} - \frac{\partial E(t)}{\partial X_{j}^{\langle l-1 \rangle}}(t) < Threshold)) \end{cases}\end{split}\]

ただし、損失は下記の式で表されます。l層目はk個のニューロンを持ち、l-1層目はj個のニューロンを持つ想定です。

また、Thresholdは0.5です。

(13)\[\frac{\partial E(t)}{\partial X_{j}^{\langle l-1 \rangle}}(t) = \Sigma_{k=1}^{n_l}(X_{k}^{\langle l \rangle}(t) - T_{k}^{\langle l \rangle}(t))g'(u_{k}(t))W_{jk}^{\langle l \rangle}(t)\]

\(u(t)\) は数式 (3) で表されます。

教師信号生成に利用する活性化関数の導関数 \(g'(u)\) は、Fig. 2 で表されます。

Caution

l層目の重みは、転置行列です。