RBMとは〜Boltzmann Machinesからの発展〜

前回のBoltzmann MachineからRestricted Boltzmann Machineへの拡張をします。

目次

今回は前回の記事に引き続きRestricted Boltzmann Machineについて話していきたいと思います。
前回の記事は以下よりご覧ください。

1. Boltzmann MachineからRestricted Boltzmann Machineへ

はじめはBoltzmann Machineについての説明をします。
Boltzmann Machineとは前回述べたように、0 or 1の値を持つ素子を用いて、それの重みを更新していく方法です。

Boltzmann Machine

$x_{1},x_{2},x_{3},x_{4}$は0,1の値をとる。
重み$w$は学習により更新していく。
この状態からRestricted Boltzmann Machine、つまり、「制約つきの」Boltzmann Machineとはどのようになるのでしょうか。

前回の記事で、隠れ素子を導入した場合のBoltzmann Machineでは隠れ変数の数を増やすと任意の分布が近似できることを述べました。これは、より複雑になることで、より複雑な関数が表現できるということですね。
このようにより複雑になったときの問題として、学習がより複雑になる ということがあります。

これを解決するモデルで提唱されたのが RBMです。

制約として以下のようなものを考えます。

1. Boltzmann Machineに隠れ変数を導入
2. 隠れ変数、可視変数同士は結合しない

これにより、よりモデルがシンプルになるわけですね。それでは次の章でより詳しい構造について見ていきましょう。

2. Restricted Boltzmann Machine の制約

Restricted Boltzmann Machine

$h$同士、$v$同士が結合していないモデルがRBM
これをすることで、学習が非常にスムーズに進むようです。理由としては隠れ変数の周辺化が必要でなくなるからなようです。

DeepLearningの元祖はこのRBMから来ているようですね。

実際、DeepLearningでよく用いられるMLP(多層パーセプトロン)では、層同士の連結などを考えない、シンプルなものです。これは上のRBMの構造とよく似ていますね。

次のページでは、RBMの学習について説明していきます。

3. Restricted Boltzmann Machine の学習

以下では下図のような層構造を持ったRBMを考えていきます。

Restricted Boltzmann Machine

\begin{align}
&E({v},{h}) = \frac{1}{2} {\Big{\|}}\frac{{v}-{b}}{{\sigma}} {\Big{\|}}^2 -{c}^T {h} - {\Big{(}}\frac{{v}}{{\sigma}^2} {\Big{)}}^T {W} {h}\\
&Z = \sum_{{v},{h}} e^{-E({v},{h})}\\
&p({v},{h}) = \frac{1}{Z} e^{-E({v},{h})}
\end{align}
ここで、可視層同士、隠れ層同士は結合していません。$S$はソフトマックス関数、$N$はガウス分布です。
\begin{align}
&p(h_{j}=1|{v}) = S(c_{j} + {W}_{:j}^T({\frac{v}{\sigma^2}}))\\
&p(v_{i}=v | {h}) = N(v|b_{i} + {W}_{i:}{h},\sigma_{i}^2)
\end{align}

難しそうな構造をしていますが、大事なのは、「連結しているもの同士の内積がコスト関数となり、層ごとの関係はコストに入らない」ということです。

---------------------------------------------------------------------------------------------------------------------

今回はRBMについて紹介しました。実はNetworkの構造は近年、盛んに研究されています。これからも最新の研究を追っていきたいものです。