ららにく@utool.cc

機械学習に関する怪しいメモやらあれこれその他メモやら

Restricted Boltzmann Machineの変種(変数表現編)

制限ボルツマンマシンは二値変数を用いることが一般的です。
今回は他の変数表現について紹介していきます。


今回は三種類の変数ユニットについて説明していきます。

  • 二値ユニット
  • ガウシアンユニット
  • ソフトマックスユニット

二値ユニットは文字通り二値を取ります。
ガウシアンユニットは実数値
ソフトマックスユニットは1-of-K表現と呼ばれる値を取ります。1-of-K表現とはカテゴリなどを表すときに便利な表現だと思ってください。



--- 補足 ---

  • 隠れ変数については二値変数を用いることをお勧めします。
  • 隠れ変数にガウシアンユニットを用いるとしょぼいというのが定説です。

以降紹介する3つのユニットは、すべて隠れ変数は二値\left(h_j \in \{0, 1\}\right)で説明していきます。

普通の二値ユニット

f:id:utool:20170627064317p:plain

可視変数が二値\left(v_i \in \{0, 1\}\right)を取る二値ユニットについて説明していきます。
(\left(v_i \in \{0, 1\}\right)以外の二値は後述の特別付録を見てください)

この二値ユニットが制限ボルツマンマシンの最もシンプルなモデルとなります。

エネルギー関数

\begin{align}
E\left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right) = -\sum_{i \ in V}b_i v_i - \sum_{i \in V} \sum_{j \in H}w_{i, j}v_i h_j - \sum_{j \in H}c_j h_j
\end{align}

条件付き確率

\begin{align}
P\left(v_i \mid \boldsymbol{h}, \boldsymbol{\theta} \right) = \frac{\displaystyle \exp\left( b_i v_i + \sum_{j \in H}w_{i, j}v_i h_j  \right)}{\displaystyle 1 +\exp\left( b_i + \sum_{j \in H}w_{i, j} h_j \right)}
\end{align}
\begin{align}
P\left(h_j \mid \boldsymbol{v}, \boldsymbol{\theta} \right) = \frac{\displaystyle \exp\left( c_j h_j + \sum_{i \in V}w_{i, j}v_i h_j  \right)}{\displaystyle 1 +\exp\left( c_j + \sum_{i \in V}w_{i, j} v_i \right)}
\end{align}

尤度関数とパラメータの偏微分

  • 尤度関数(対数尤度関数)

\begin{align}
L\left(\boldsymbol{\theta} \right) = \frac{1}{N}\sum_{n=1}^N P\left( \boldsymbol{v} = \boldsymbol{d}^{(n)} \right) = \frac{1}{Z} \exp\left( \sum_{i \in V}b_i d_i^{(n)}\right) \prod_{j \in H}\left(1 + \exp \left(c_j + \sum_{i \in V}w_{i, j}d_i^{(n)} \right)\right)
\end{align}

  • パラメータの勾配

\begin{align}
\frac{\displaystyle \partial L\left(\boldsymbol{\theta} \right)} {\displaystyle \partial b_i} = \frac{1}{N}\sum_{n=1}^{N}d_i^{(n)} - \sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}} v_i P \left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right)  
\end{align}

\begin{align}
\frac{\displaystyle \partial L\left(\boldsymbol{\theta} \right)} {\displaystyle \partial c_j} = \frac{1}{N}\sum_{n=1}^{N} \mathrm{sigmond}\left(c_j + \sum_{i\in V}w_{i, j}d_i^{(n)} \right) - \sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}} h_j P \left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right)  
\end{align}

\begin{align}
\frac{\displaystyle \partial L\left(\boldsymbol{\theta} \right)} {\displaystyle \partial w_{i, j}} = \frac{1}{N}\sum_{n=1}^{N} d_i^{(n)}\mathrm{sigmond}\left(c_j + \sum_{i\in V}w_{i, j}d_i^{(n)} \right) - \sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}} v_i h_j P \left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right)  
\end{align}

ガウシアンユニット

f:id:utool:20170627064312p:plain

エネルギー関数

\begin{align}
E\left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right) = -\sum_{i \in V}\frac{\displaystyle \left(v_i - b_i \right)^2} {\displaystyle 2 \sigma_i ^2}  - \sum_{i \in V} \sum_{j \in H}\frac{w_{i, j}v_i h_j}{\sigma_i} - \sum_{j \in H}c_j h_j
\end{align}

条件付き確率

条件付き確率がガウス分布になる
\begin{align}
P\left(v_i \mid \boldsymbol{h}, \boldsymbol{\theta} \right) = \frac{\displaystyle 1}{\displaystyle \sqrt{2 \pi \sigma_i^2}} \exp \left( - \frac{\displaystyle \left(v_i -\left(b_i + \sigma_i\sum_{j \in H}w_{i, j} \right) \right)^2} {\displaystyle 2 \sigma_i^2}\right)
\end{align}

\begin{align}
P\left(h_j \mid \boldsymbol{v}, \boldsymbol{\theta} \right) = \frac{\displaystyle \exp\left( c_j h_j + \sum_{i \in V}w_{i, j}v_i h_j  \right)}{\displaystyle 1 +\exp\left( c_j + \sum_{i \in V}w_{i, j} v_i \right)}
\end{align}

尤度関数とパラメータの偏微分

  • 尤度関数(対数尤度関数)

\begin{align}
L\left(\boldsymbol{\theta} \right) = \frac{1}{N}\sum_{n=1}^N P\left( \boldsymbol{v} = \boldsymbol{d}^{(n)} \right) = \frac{1}{Z} \exp\left( -\sum_{i \in V} \frac{\left(d_i^{(n)}\right)^2} {2\sigma_i^2} + \sum_{i \in V}\frac{b_i d_i^{(n)}}{\sigma_i^2}\right) \prod_{j \in H}\left(1 + \exp \left(c_j + \sum_{i \in V}\frac{w_{i, j}d_i^{(n)}}{\sigma_i} \right)\right)
\end{align}

  • パラメータの勾配

\begin{align}
\frac{\displaystyle \partial L\left(\boldsymbol{\theta} \right)} {\displaystyle \partial b_i} = \frac{1}{N}\sum_{n=1}^{N}\frac{d_i^{(n)}}{\sigma_i^2} - \sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}} \frac{v_i}{\sigma_i^2} P \left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right)  
\end{align}

\begin{align}
\frac{\displaystyle \partial L\left(\boldsymbol{\theta} \right)} {\displaystyle \partial c_j} = \frac{1}{N}\sum_{n=1}^{N} \mathrm{sigmond}\left(1 + \exp \left(c_j + \sum_{i \in V}\frac{w_{i, j}d_i^{(n)}}{\sigma_i} \right)\right) - \sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}} h_j P \left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right)  
\end{align}

\begin{align}
\frac{\displaystyle \partial L\left(\boldsymbol{\theta} \right)} {\displaystyle \partial w_{i, j}} = \frac{1}{N}\sum_{n=1}^{N} \frac{d_i^{(n)}}{\sigma_i}\mathrm{sigmond}\left(1 + \exp \left(c_j + \sum_{i \in V}\frac{w_{i, j}d_i^{(n)}}{\sigma_i} \right)\right) - \sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}} \frac{v_i}{\sigma_i} h_j P \left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right)  
\end{align}




ソフトマックスユニット

f:id:utool:20170617235942p:plain

エネルギー関数

\begin{align}
E\left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right) = -\sum_{i \ in V}\sum_{k \in K}b_{i, k} v_{i, k} - \sum_{i \in V}\sum_{k \in K} \sum_{j \in H}w_{i, k, j}v_{i, k} h_j - \sum_{j \in H}c_j h_j
\end{align}

条件付き確率

可視変数の条件付き確率がソフトマックス関数になる
\begin{align}
P\left(v_{i,k} = 1 \mid \boldsymbol{h}, \boldsymbol{\theta} \right ) = \frac{\displaystyle \exp\left(b_{i,k} + \sum_{j\in H}w_{i,k,j}h_j \right)} {\displaystyle \sum_{l \in K}\exp\left(b_{i,l}v_{i, l} + \sum_{j\in H}w_{i,l,j}v_{i, l}h_j \right)}
\end{align}

\begin{align}
P\left(h_j \mid \boldsymbol{v}, \boldsymbol{\theta} \right) = \frac{\displaystyle \exp\left( c_j h_j + \sum_{i \in V}\sum_{k \in K}w_{i, k, j}v_{i, k} h_j  \right)}{\displaystyle 1 +\exp\left( c_j + \sum_{i \in V}\sum_{k \in K}w_{i, k, j} v_{i, k} \right)}
\end{align}

尤度関数とパラメータの偏微分

  • 尤度関数(対数尤度関数)

\begin{align}
L\left(\boldsymbol{\theta} \right) = \frac{1}{N}\sum_{n=1}^N P\left( \boldsymbol{v} = \boldsymbol{d}^{(n)} \right) = \frac{1}{Z} \exp\left( \sum_{i \in V}\sum_{k \in K}b_{i, k} d_{i, k}^{(n)}\right) \prod_{j \in H}\left(1 + \exp \left(c_j + \sum_{i \in V}\sum_{i, k}w_{i, k, j}d_{i, k}^{(n)} \right)\right)
\end{align}

  • パラメータの勾配

\begin{align}
\frac{\displaystyle \partial L\left(\boldsymbol{\theta} \right)} {\displaystyle \partial b_{i, k}} = \frac{1}{N}\sum_{n=1}^{N}d_{i, k}^{(n)} - \sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}} v_{i, k} P \left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right)  
\end{align}

\begin{align}
\frac{\displaystyle \partial L\left(\boldsymbol{\theta} \right)} {\displaystyle \partial c_j} = \frac{1}{N}\sum_{n=1}^{N} \mathrm{sigmond}\left(c_j + \sum_{i\in V}\sum_{k\in K}w_{i, k, j}d_{i, k}^{(n)} \right) - \sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}} h_j P \left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right)  
\end{align}

\begin{align}
\frac{\displaystyle \partial L\left(\boldsymbol{\theta} \right)} {\displaystyle \partial w_{i, k, j}} = \frac{1}{N}\sum_{n=1}^{N} d_{i, k}^{(n)}\mathrm{sigmond}\left(c_j + \sum_{i\in V}\sum_{k \in K}w_{i, k, j}d_{i, k}^{(n)} \right) - \sum_{\boldsymbol{v}}\sum_{\boldsymbol{h}} v_{i, k} h_j P \left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right)  
\end{align}






特別付録: {0, 1}以外の二値ユニット

可視変数が{-1, +1}の二値の条件付き確率

  • 可視変数が-1, +1どちらかの二値を取る場合\left(v_i \in \{-1, +1 \} \right)

\begin{align}
P\left(v_i \mid \boldsymbol{h}, \boldsymbol{\theta} \right) = \frac{\displaystyle \exp\left( b_i v_i + \sum_{j \in H}w_{i, j}v_i h_j  \right)}{\displaystyle 2\cosh\left( b_i + \sum_{j \in H}w_{i, j} h_j \right)}
\end{align}

可視変数が{α, β}の二値の条件付き確率

  • 可視変数が\alpha, \betaどちらかの二値を取る場合\left(v_i \in \{\alpha, \beta \} \right)

\begin{align}
P\left(v_i \mid \boldsymbol{h}, \boldsymbol{\theta} \right) = \frac{\displaystyle \exp\left( b_i v_i + \sum_{j \in H}w_{i, j}v_i h_j  \right)}{\displaystyle \sum_{v_i}\exp\left( b_i v_i + \sum_{j \in H}w_{i, j}v_i h_j  \right)} = \frac{\displaystyle \exp\left( b_i v_i + \sum_{j \in H}w_{i, j}v_i h_j  \right)}{\displaystyle \exp\left( \alpha\left(b_i + \sum_{j \in H}w_{i, j} h_j \right) \right) + \exp\left( \beta\left(b_i + \sum_{j \in H}w_{i, j} h_j \right) \right)}
\end{align}


特別付録: 他のガウシアンユニット(自分が使ってるやつ)

基本的にエネルギー関数に正の二乗の項があれば実数値を取ることが出来ます。
ようは\int_{\infty}^{\infty}\exp\left(\cdot\right)dx_iのようにしてポテンシャル関数を無限区間積分の計算ができればいいです。

エネルギー関数

普段自分が使ってるガウシアンユニットのエネルギー関数

\begin{align}
E\left(\boldsymbol{v}, \boldsymbol{h} \mid \boldsymbol{\theta} \right) = \sum_{i\in V}\frac{\lambda_i v_i^2}{2} - \sum_{i\in V} b_{i} v_{i} -\sum_{i \in V}\sum_{j \in H} w_{i, j} v_{i} h_j - \sum_{j \in H}c_j h_j
\end{align}

条件付き確率

隠れ変数を条件として与えた確率
 \begin{align}
P\left(v_i \mid \boldsymbol{h} \right) &= \frac{\displaystyle \exp\left( \frac{\lambda_i}{2 } \left(v_i - \frac{1}{\lambda_i} \left(b_i + \sum_{j \in H}w_{i,j}h_j \right) \right)^2 \right)} {\displaystyle \int_{\infty}^{\infty} \exp\left( \frac{\lambda_i}{2 } \left(v_i - \frac{1}{\lambda_i} \left(b_i + \sum_{j \in H}w_{i,j}h_j \right) \right)^2 \right)} \\
 &= \sqrt{\frac{\lambda_i}{2\pi}} \exp\left( \frac{\lambda_i}{2} \left(v_i - \frac{1}{\lambda_i} \left(b_i + \sum_{j \in H}w_{i,j}h_j \right) \right) ^2 \right) 
\end{align}
つまり、平均 \frac{1}{\lambda_i} \left(b_i + \sum_{j \in H}w_{i,j}h_j \right), 分散\frac{1}{\lambda_i}に従うガウス分布になります。


つづく。
学習の更新式とかを追記する。