離散変数の無向グラフィカルモデル
前のセクションでは「連続変数」のグラフィカルモデルを学んだ。では、変数が0か1かしか取れない「離散変数」の場合は? ここで登場するのがIsingモデルと制限付きボルツマンマシン(RBM)だ。 統計力学から生まれたこのモデルがいかにして機械学習の核心に繋がるか — その答えをこれから見ていこう。
Isingモデル — 離散変数のための確率分布
コインの表裏、遺伝子のオン・オフ、ピクセルの白黒。世の中には「どちらか一方」しか取らない変数が溢れている。
これらの変数が互いにどう関係し合っているか — それを表現するのがIsingモデルだ。

Isingモデルでは、変数 $X_j \in \{0, 1\}$ がノードに対応し、 エッジのパラメータ $\theta_{jk}$ が 「ノード $j$ と $k$ の相互作用の強さ」を表す。 たとえば $\theta_{jk} > 0$ なら、 一方が1のとき他方も1になりやすい(正の相関)。$\theta_{jk} < 0$ なら逆相関だ。
全体の確率分布は次の形をしている:
ここで $E$ はエッジの集合。 そして $\Phi(\Theta)$ は分配関数(partition function)と呼ばれる正規化定数だ:
この分配関数の役割は「すべての可能な状態の重みの合計を取ることで、確率が合計1になるよう正規化すること」だ。 各変数が0か1かの組み合わせは $2^p$ 通り存在する。$p$ 個のノードがあれば、この和を取る計算は$p$ が大きくなるほど指数的に増える — それが後の課題となる。
条件付き確率とパラメータ推定
Isingモデルの美しさのひとつは、条件付き確率がロジスティック関数で書けることだ。
他のすべてのノード $X_{-j}$ の値が固定されたとき、 ノード $j$ が1になる確率は:
これはロジスティック回帰そのものだ! つまり、各ノードを「他のノードを特徴量とするロジスティック回帰」として解釈できる。

パラメータの最尤推定では、$N$ 個の観測データ$\{x_i\}_{i=1}^N$ から対数尤度を最大化する。 サンプルインデックス $i$ とノードインデックス$j, k$ の二重添字で表すと:
ここで $x_{ij}$ は 「$i$ 番目のサンプルにおけるノード$j$ の値」を意味する。 この最大化条件は直感的だ:
「データから見た $X_j$ と$X_k$ の同時出現率」と 「モデルが予測する同時出現率」が一致するとき、パラメータが最適になる。 ここで $\hat{E}$ の「ハット」は 経験(データから計算した)平均を意味する。
ただし、$p > 30$ の場合には$2^p$ 通りの状態を列挙する必要があり、分配関数を正確に計算することは非常に難しくなる。 そのため実用上は、ギブスサンプリングや平均場近似などの近似法が使われる。
隠れノード — 観測できない変数の役割
「すべての変数が観測できるとは限らない」— これが現実の難しさだ。
ノードを2種類に分けよう:
- 可視ノード(visible nodes) $X_V$:観測データに対応
- 隠れノード(hidden nodes) $X_H$:観測できない潜在変数

隠れノードがある場合、観測データだけの対数尤度は 隠れ変数の周辺化(marginalization) — つまり隠れノードがとりうる全ての値についての合計 — が必要になる:
勾配は次の形になる:
ここで $\hat{E}_V$ の 「$V$」は「可視データで平均を取る」ことを、 ハットは「経験平均」を意味する。 第1項は「各観測データを固定したときの隠れ変数を含む期待値の平均」、 第2項は「モデル全体での無条件期待値」だ。
この計算には、各観測についてギブスサンプリングを2回実行する必要がある:
- 可視変数 $X_V$ を固定して、隠れ変数 $X_H$ をサンプリング(第1項の計算)
- どの変数も固定せず、モデルの定常分布からサンプリング(第2項の計算)
これは計算量が多く、中程度の問題でも非常に遅くなる。 では、この困難をどう解決するか — それがSection 5のRBMだ。
(なお、Section 4ではいったん「グラフ構造が未知の場合」という別の問題を取り上げる。)
グラフ構造の推定 — どのエッジが存在するか
いったん視点を変えよう。これまでは「グラフ構造(どのノード間にエッジがあるか)が既知」という前提だった。 しかし実際には、グラフ構造自体も推定する必要がある。

直感的なアプローチは「余分なエッジをゼロにする」ことだ。 前章で学んだグラフィカルLassoの発想を、 離散変数に応用できる。
実用的な方法として Wainwright らのアプローチ(2007) がある: 各ノード $j$ に対して、 他のすべてのノードを説明変数とするL₁ペナルティ付きロジスティック回帰をフィットする。
これにより:
- 各ノードに対してスパースな隣接関係が得られる
- L₁ペナルティが不要なエッジを0に押しつける
- 2方向の推定($j \to k$ と $k \to j$)が得られるため、両方の最小値を使って対称化する
ガウスモデルとの重要な違いも抑えておこう:
- ガウスモデル:共分散 $\Sigma$ と精度行列 $\Sigma^{-1}$ の両方を推定し、グラフィカルLassoは両方を提供
- 離散モデル:パラメータ $\Theta$ のみが対象(逆行列の概念がない)
制限付きボルツマンマシン — 深層学習への架け橋
Section 3で「隠れノードがあると計算が困難になる」という問題を見た。 この困難を構造的に解決したのが制限付きボルツマンマシン(Restricted Boltzmann Machine, RBM)だ。
RBMの「制限」とは何か?同じ層内のノード同士は接続しないという制約だ。

構造は2層(または3層)になっている:可視層 $V_1$、 隠れ層 $H$、可視層 $V_2$。
- 可視層 $V_1$:入力変数(例:28×28ピクセルの画像 = 784変数)
- 隠れ層 $H$:潜在変数(例:2000個の隠れユニット)
- 可視層 $V_2$:出力変数(例:10クラスのラベル)
この制約が絶大な効果を生む。各層内のユニットが互いに独立になるため、交互ギブスサンプリングが可能になる:
- 可視層を固定して隠れ層をサンプリング
- 隠れ層を固定して可視層をサンプリング
- 1と2を繰り返す
隠れ層内のユニットが独立になるため、ステップ1では全隠れユニットを並行してサンプリングできる。これが計算を劇的に速くする。
実用例:手書き数字の認識(MNISTデータセット)
- 構成:784個の可視ピクセル(入力)+ 2000個の隠れユニット + 10個の出力ラベル
- テストセット誤り率:1.9%(当時のSVMと同等、ニューラルネットワークの1.4%に迫る)
- さらに特徴抽出を組み合わせると:1.25% まで改善
対比発散 — 実用的な学習アルゴリズム
RBMの交互ギブスサンプリングは計算効率が良いが、 それでも収束には多くのステップが必要だ。 特に学習初期、パラメータが真の値から遠いときは時間がかかる。
この問題を解決したのが Hinton(2002) による対比発散(Contrastive Divergence, CD)アルゴリズムだ。

アイデアはシンプルだ:「マルコフ連鎖が完全に収束するまで待つ必要はない」。 たった1ステップのサンプリングでも、パラメータを正しい方向に更新するのに十分だ。
CDアルゴリズムの手順:
- データでマルコフ連鎖を初期化する — ランダムな状態から始めるより、データに近い点から始める
- 数ステップだけギブスサンプリングを実行(完全収束させない)
- 「元のデータの状態」と「少しサンプリングした後の状態」の差でパラメータを更新
2段階学習アプローチは、さらに表現力を高める方法だ:
- 第1段階:784個の可視ユニット(画像ピクセル)+ 500個の隠れユニットのRBMを、ラベルなしで画像データのみを使って訓練する
- 第2段階:第1段階で学習した隠れユニットの状態(これが画像の「圧縮表現」になっている)を 可視層として、今度はラベルを予測するための別のRBMを積み上げる
この「層を積み重ねて表現を学ぶ」アイデアが、現代の深層学習の出発点となった。 各層が前の層の「特徴」を学習し、複雑な表現を段階的に獲得していく — ディープニューラルネットワークはこの思想を発展させたものだ。
まとめ — 離散グラフィカルモデルの全体像
この章で学んだ離散変数の無向グラフィカルモデルを振り返ろう。

Isingモデルから制限付きボルツマンマシンへの道のりは、 統計力学から機械学習への橋渡しを物語っている。 各ステップで新たな課題が生じ、それを解決する構造的なアイデアが生まれた:
- Isingモデル(基本):離散変数の確率分布を表現できる。 ただし分配関数の計算が$p$ が大きくなると困難になる。
- 隠れノードあり:より複雑な関係を表現できるが、ギブスサンプリングが必要で遅くなる。
- RBM(制限付きボルツマンマシン):層状構造による制約で、 交互ギブスサンプリングが可能になり高速化。
- RBM + 対比発散(CD):収束を待たず数ステップだけサンプリングすることで 実用的な学習アルゴリズムが完成。
ガウスグラフィカルモデルと離散グラフィカルモデルは、 連続変数・離散変数という違いはあるものの、変数間の依存関係をグラフで表現するという同じ思想を共有している。
特にRBMは「教師なしで特徴量を学習する」という革新的なアイデアを持ち、 現代のディープラーニングの先駆けとなった。$X_j$ が手書き数字の各ピクセルであれば、 隠れユニット $H$ は「曲線」「角」「ループ」などの 低次特徴を自動的に発見する。