6.2. ボルツマンマシン――Learning Deep Architectures for AI

Learning Deep Architectures for AI の翻訳です。

6.2. ボルツマンマシン


ボルツマンマシンは特定のタイプのエネルギー・ベースのモデルであり、制限ボルツマンマシンはボルツマンマシンの特殊な形式で、そこではP(h|x)P(x|h)の両方が因数分解出来るため、扱い易くなっている。ボルツマンマシン(Hinton, Sejnowski, & Ackley, 1984; Ackley et al., 1985; Hinton & Sejnowski, 1986)では、エネルギー関数は2次の多項式
        \rm{Energy}(x,h)=-b'x-c'h-h'Wx-x'Ux-h'Vh        (21)
である。2つのタイプのパラメータがあり、それらはバイアスb_ic_i(各々がベクトルxの、あるいはベクトルhの単一要素に関係する)と、重みW_{ij}U_{ij}V_{ij}(各々がユニットのペアと関係する)であり、まとめて\thetaで表す。行列UVは対称的であると仮定され、大部分のモデルでは対角要素がゼロである。対角要素がゼロでないものは、他の変形、例えば2項ユニットの代わりにガウシアンを用いるもの、を得るために使用可能である (Welling, Rosen-Zvi, & Hinton, 2005)。


hの2次形式の相互作用項のため、自由エネルギーを解析的に計算するための手法(式18)は、ここでは適用出来ない。しかし、勾配の確率的評価子を得るために、MCMCモンテカルロ・マルコフチェーン(Andrieu, de Freitas, Doucet, & Jordan, 2003))サンプリング手続きを適用することが出来る。log尤度の勾配は、式12から始めて、以下のように書くことが出来る。
     \frac{\partial\log{P}(x)}{\partial\theta}=\frac{\partial\log\Bigsum_he^{-\rm{Energy}(x,y)}}{\partial\theta}-\frac{\partial\log\Bigsum_{x,h}e^{-\rm{Energy}(x,h)}}{\partial\theta}
          =-\frac{1}{\Bigsum_he^{-\rm{Enegry}(x,h)}}\Bigsum_he^{-\rm{Energy}(x,h)}\frac{\partial\rm{Energy}(x,h)}{\partial\theta}
            +\frac{1}{\Bigsum_{x,h}e^{-\rm{Energy}(x,h)}}\Bigsum_{x,h}e^{-\rm{Energy}(x,h)}\frac{\rm{Energy}(x,h)}{\partial\theta}
          =-\Bigsum_hP(h|x)\frac{\partial\rm{Energy}(x,h)}{\partial\theta}+\Bigsum_{x,h}P(x,h)\frac{\partial\rm{Energy}(x,h)}{\partial\theta}      (22)
\frac{\partial\rm{Energy}(x,h)}{\partial\theta}は計算が容易であることに注意。よってもしP(h|x)からサンプル抽出する手順とP(x,h)からサンプル抽出する手順を持てば、我々はlog尤度勾配の、バイアスのない確率的評価子を得ることが出来る。Hinton et al. (1984), Ackley et al. (1985), Hinton and Sejnowski (1986)は以下の用語を導入した。ポジティブ・フェーズでは、xは観察された入力ベクトルに固定され(? clamped to)、xを与えた状態でhをサンプル抽出する。ネガティブ・フェーズでは、xhの両方が、理想的にはモデル自身からサンプル抽出される。実際には、近似的なサンプリングだけが、例えばMCMCを構成する繰り返し手続きを用いて、達成可能である。Hinton et al. (1984),、Ackley et al. (1985)、Hinton and Sejnowski (1986)で導入されたMCMCサンプリング方法は、ギブスサンプリング (Geman & Geman, 1984; Andrieu et al., 2003)に基づいている。N個の確率変数X_1\cdots{X}_Nの結合のギブスサンプリングは
           X_i\sim{P}(X_i|X_{-i}=x_{-i})       (23)
の形のN回のサンプリング・サブステップによって行われる。ここでX_{-i}は、 X内のX_iを除いた他のN-1個の確率変数を含む。これらN個のサンプルが得られたのち、チェーンの1ステップが完了し、ステップの数が\inftyに近づくにつれて、その分布がP(X)に収束するようなXのサンプルをもたらす。


y=(x,h)で、ボルツマンマシン内の全てのユニットを表すとし、y_{-i}で、i番目のユニットを除くすべてのユニットに関係する値の集合を表すとする。全てのパラメータをベクトル dと対称行列A内に置くことで、ボルツマンマシン・エネルギー関数は書き直すことが出来る。
           \rm{Energy}(y)=-d'y-y'Ay,      (24)
ここでd_{-i}はベクトルdの要素d_iのないもの、A_{-i}は行列Ai番目の行と列がないもの、A_iAi番目の行(または列)でi番目の要素がないベクトルである。この考えは、P(y_i|y_{-i})はボルツマンマシンでは容易に計算出来、そこからサンプル抽出出来るという事実を利用することである。例えば、もしy_i\in\{0,1\}ならば
   P(y_i=1|y_{-i})=\frac{\exp(d_i+d'_{-i}y_{-i}+A'_iy_{-i}+y'_{-i}A_{-i}y_{-i})}{\exp(d_i+d'_{-i}y_{-i}+A'_iy_{-i}+y'_{-i}A_{-i}y_{-i})+\exp(d'_{-i}y_{-i}+y'_{-i}A_{-i}y_{-i})}
       =\frac{\exp(d_i+A'_iy_{-i})}{\exp(d_i+A'_iy_{-i})+1}=\frac{1}{1+\exp(-d_i-A'_iy_{-i})}
       =\sigm(d_i+A'_iy_{-i})        (25)
これは、人工ニューラル・ネットワークで、他のニューロンy_{-i}に関する、あるニューロンの出力を計算する通常の方程式である。


個々の例xのために、2つのMCMCチェーン(1つはポジティブ・フェーズのための、1つはネガティブ・フェーズのための)が必要であり、勾配の計算は非常に高価に、訓練時間は非常に長く、なる可能性がある。これは本質的に、ボルツマンマシンが80年代終わりに、主要な学習方法として、複数層ニューラル・ネットワークのためのバック・プロパゲーション・アルゴリズムに置き換わった理由である。しかし、近年の研究は、短いチェーンを使ってときどき成功することを示してきており、これは、以下で検討する、制限ボルツマンマシンを訓練するための対照分岐の原理である。