制限ボルツマンマシン(またの名をRBM)

英語版WikipediaRestricted Boltzmann Machineのページの翻訳。「ヒントン教授によって書かれた、RBMを訓練する実際的なガイドは彼のホームページの中で見つかる。」より以降の文章はよく分からない。

制限ボルツマン・マシン
制限ボルツマン・マシン(RBM)は入力の集合における確率分布を学習することが出来る生成確率人工ニューラルネットワークである。RBMは最初ポール・スモレンスキーによってハーモニアムの名前で発明されたが、ジェフリー・ヒントンと協力者たちが2000年代半ばにそれらについての素早い学習アルゴリズムを発明したのちになってから有名になった。RBMは次元圧縮、分類、協調フィルタリング、特徴学習、トピック・モデリングに応用されている。RBMはタスクに応じて教師ありでも教師なしの方法でも訓練可能である。
その名前が暗示しているようにRBMはボルツマン・マシンの変形であり、そのニューロンが2つの部分に分かれたグラフを形成しなければならないという制限を持っている。つまり、通常それぞれ「可視」と「隠れた」ユニットと呼ばれるユニットの2つのグループの各々からのノードの組は対称な接続をもち、グループ内のノードとは接続を持たない。対照的に「制限なし」ボルツマン・マシンは隠れたユニット間で接続を持つ。この制限は一般的なボルツマン・マシンで可能であるよりも効率のよい訓練アルゴリズムを可能にする。特に、勾配ベース対照分岐アルゴリズムにおいてそうである。
制限ボルツマン・マシンはディープラーニングにも用いることが出来る。特に、ディープ・ビリーフ・ネットワークはRBMを積み上げ、得られたディープ・ネットワークを随意に勾配降下とバックプロパゲーションで微調整することにより形成出来る。

構造

標準タイプのRBMは2進数の(ブーリアン/ベルヌーイの)隠れたユニットと可視のユニットを持ち、隠れたユニットh_jと可視のユニットv_iの間の接続に関係する重みW = (w_{i,j})の行列とバイアス重み(オフセット)、可視のユニットについてはa_i、隠れたユニットについてはb_j、から構成される。これらが与えられると構成(ブーリアン・ベクトルのひと組)(v,h)のエネルギーは

  • E(v,h) = -\sum_i a_i v_i - \sum_j b_j h_j -\sum_i \sum_j v_i w_{i,j} h_j

あるいは行列の記法で

  • E(v,h) = -a^{\mathrm{T}} v - b^{\mathrm{T}} h -v^{\mathrm{T}} W h

で定義される。



3個の可視のユニットと4個の隠れたユニットを持つ制限ボルツマンマシンの図(バイアス・ユニットはない)


このエネルギー関数はホップフィールド・ネットワークのエネルギー関数に類似している。一般のボルツマンマシンとして、隠れたものと可視のベクトルに渡っての確率分布はエネルギー関数の観点から

  • P(v,h) = \frac{1}{Z} e^{-E(v,h)}

と定義され、ここにZは、可能な全ての構成に渡ってのe^{-E(v,h)}の和として定義される分配関数である(言い換えれば、確率分布の合計が1になるようにするための正規化定数である)。同様に、ブーリアンの可視(入力)ベクトルの(周辺)確率は可能な全ての隠れた層の構成に渡る和である。

  • P(v) = \frac{1}{Z} \sum_h e^{-E(v,h)}

RBMは層内部には接続のない2つの部分に分かれるグラフの形をしているので、可視のユニットの活性化が与えられた場合隠れたユニットの活性化は相互に独立であり、逆に、隠れたユニットの活性化が与えられた場合可視のユニットの活性化は相互に独立である。つまりm個の可視ユニットとn個の隠れたユニットについて、隠れたユニットの構成hが与えられた時の可視ユニットの構成vの条件確率は

  • P(v|h) = \prod_{i=1}^m P(v_i|h)

となり、逆に、与えられたvにおけるhの条件確率は

  • P(h|v) = \prod_{j=1}^n P(h_j|v)

となる。個々の活性化確率は

  • P(h_j=1|v) = \sigma \left(b_j + \sum_{i=1}^m w_{i,j} v_i \right)P(v_i=1|h) = \sigma \left(a_i + \sum_{j=1}^n w_{i,j} h_j \right)

で与えられ、ここに\sigmaはロジスティック・シグモイド関数を意味する。
RBMの隠れユニットがブーリアンではあるが可視のユニットが多項式であることも可能である。この場合、可視のユニットのロジスティクス関数はソフマックス関数に置換えられる。

  • P(v_i^k = 1|h) = \frac{\exp(a_i^k + \Sigma_j W_{ij}^k h_j)} {\Sigma_{k=1}^K \exp(a_i^k + \Sigma_j W_{ij}^k h_j)}

ここでKは可視の値が持つ個別の値の数である。これはトピック・モデリングとRecSysに応用される。

他のモデルとの関係

制限ボルツマン・マシンはボルツマン・マシンとマルコフ確率場の特別な場合である。そのグラフィカル・モデルは因子分析のグラフィカル・モデルに対応する。

訓練アルゴリズム

制限ボルツマンマシンは若干の訓練された集合V(行列であり、その個々の列が可視ベクトルvとして扱われる)に割り当てられる確率の積を最大にするように訓練される。

  • \arg\,\max_W \prod_{v \in V} P(v)

あるいは同じことであるが、Vの確率の対数の期待値を最大にするように訓練される。

  • \arg\,\max_W \mathbb{E} \left[\sum_{v \in V} \log P(v)\right]

RBMを訓練するのに、つまり、重みベクトルWを最適にするために、最もよく用いられるこのアルゴリズムはヒントンがもともとPoE(専門家の積:product of experts)を訓練するのに開発した対照分岐(CD:contractive dibergence)アルゴリズムである。このアルゴリズムはギッブス・サンプリングを実行し、重みの更新値を計算するのに(フィードフォワード・ニュラルネットを訓練する時、勾配降下法の中でバック・プロパゲーションが用いられるのに類似した仕方で)勾配降下法の中で用いられる。
単一のサンプルについての基本的な1ステップ対照的分岐(CD-1)は以下のようにまとめられる。

  1. 訓練用サンプルvを取り出し、隠れたユニットの確率を計算し、この確率分布から隠れた活性化ベクトルhのサンプルを抽出する。
  2. vh外積を計算し、これを正の勾配と呼ぶ。
  3. hから可視ユニットの再構成v'のサンプルを抽出し、これから隠れた活性化h'のサンプルを再度抽出する。(ギッブス・サンプリングのステップ)
  4. v'h'外積を計算し、これを負の勾配と呼ぶ。
  5. 重みw_{i,j}を正の勾配マイナス負の勾配、かける、ある学習レートに更新する。: \Delta w_{i,j} = \epsilon (vh^{\mathsf{T}} - v'h'^{\mathsf{T}}).

バイアスa, bの更新ルールも同様にして定義される。
ヒントン教授によって書かれた、RBMを訓練する実際的なガイドは彼のホームページの中で見つかる。(ここ
制限された/層構成のボルツマン・マシンはビットからスカラーのノードの値を持ち、個々の層の配列と層間では、潜在的には個々の層とその隣接する層からのノードの全てのペアについてのスカラー値である(??? 原文 an array for each layer, and between those are scalar values potentially for every pair of nodes one from each layer and an adjacent layer.)。個々のノードで計算された確率の「重み付けされたコイン投げ」を用いてそれは動作し訓練される。 それらの確率は、その時点でのノードのあらゆるペアのスカラー重みの合計を温度で割ったもののロジスティック・シグモイド関数である。その温度は潜在的には全てのデータがもう一度訓練されるようにシミュレーティド・アニーリングの個々の実行において減少する。ペアの中のいずれかのノードがオフの場合、この重みは計算に入れない。それを動作させるには、それがだいたいは決まった仕方で最下層(可視のノード)に滞留するコインに収束するまで、層を行ったり来たりして確率と重み付けコイン投げを更新する。それを訓練するには、ペアの重みを観察し、最初の上る時にそれらのペアの間に学習レートを加え、次に戻って下り、再び上り、その時に学習レートを引くこと以外はそれを動作させる場合と同じである。 ジェフリー・ヒントンが説明しているように、最初の上る時はデータを学習するためであり、2番目の上る時はそのデータに対する初期の反応を全て忘れるためのものである。

関連項目


Restricted Boltzmann Machine――Wikipediaより