Open6

Dual sampling neural network を実装したい

jnkjmjnkjm

i 番ニューロンのスパイク生成の有無を x_i,
i 番目のニューロンから j 番目のニューロンへの m 番シナプスの接続の有無を s_{ijm} とする。
これらの値は二値確率変数である。

x_i \in \{0, 1\}
s_{ijm} \in \{0, 1\}
jnkjmjnkjm

i 番目ニューロンから j 番目ニューロンへの接続重み w_{ij} (w_{ii}=0) は、
シナプス変数 s_{ijm} と定数 a_{ijm} の重み付き和として表現する。

w_{ij} = \sum_{m=1}^{M} s_{ijm}a_{ijm}
jnkjmjnkjm

データセットの d 番目のデータがネットワークに入力されたとき、 j 番ニューロンは事後確率

P(x_{dj}=1|\{x_{di}\}_{i\in p(j)}, \{s_{ijm}\}_{m\in M})=\sigma(v_{dj})

で発火すると仮定する。
ここで、 \sigma(x) はシグモイド関数、
x_{dj}d 番目のデータが入力されたときの j 番ニューロンの発火の有無、
v_{dj}d 番目のデータが入力されたときの j 番ニューロンの膜電位に相当する値、

\begin{split} v_{dj} &= \textstyle{\sum_{i\in p(j)} x_{di}w_{ij}} \\ &= \textstyle{\sum_{i\in p(j)} x_{di} \sum_m s_{ijm}a_{ijm}} \end{split}

p(j)j 番ニューロンに接続されているすべてのニューロンの集合。

jnkjmjnkjm

シナプスが次ニューロンに接続する確率 P(s_{ijm}=1) について、
事前確率のロジットを q_{0,ijm} とすると、

\begin{split} q_{0,ijm}&= {\rm log} \Bigl\{\frac{P(s_{ijm}=1)}{P(s_{ijm}=0)}\Bigr\} \\-q_{0,ijm} &= {\rm log}\Bigl\{\frac{1-P(s_{ijm}=1)}{P(s_{ijm}=1)}\Bigr\} \\ \frac{1}{P(s_{ijm}=1)} &= 1+{\rm exp}(-q_{0,ijm}) \\ P(s_{ijm}=1) &= \sigma(q_{0,ijm}) \end{split}
jnkjmjnkjm
  • コアとなるアイデアは、ネットワークの学習を、与えられたデータセットを条件とする
    事後分布
P(\{x_{dj}\}_{d\in D, j\in H}, \{s_{ijm}\}_{i,j\in N, m\in M} | \{x_{dj}\}_{j\in V})

から全ての確率変数(シナプスと隠れニューロン)をサンプリングし続けるプロセスであるとすること。
ここで、 VH は可視ニューロンと隠れニューロンの集合、 N は全てのニューロンの集合を表す。

  • ニューロンとシナプスを事後分布からサンプリングされる確率変数と定義することで、
    アルゴリズムから明示的な最適化手順を排除する。
  • 事後分布からのサンプリングはギブスサンプリングとして実現される。
x_{dj} \sim P(x_{dj}|\{x_{di}\}_{i\neq j}, \{s_{ijm}\}_{i,j\in N, m\in M})
s_{ijm} \sim P(s_{ijm}|\{x_{di}\}_{i\in H, d\in D}, \{s_{kln}\}_{kln\neq ijm})