概要
- Boltzmann Machineの 学習アルゴリズム であるContrastive Divergence(CD)について解説
- エネルギー関数 と確率分布の定式化を示し、勾配計算の流れを説明
- 重み・バイアスの更新規則 を導出し、CDによる近似手法を紹介
- Gibbsサンプリング を用いたモデル期待値の近似方法を解説
- 学習手順の 正負フェーズ とパラメータ更新式をまとめて確認
Contrastive DivergenceによるBoltzmann Machineの学習
Boltzmann Machineの基本構造
- 可視層(visible layer) v と隠れ層(hidden layer) h を持つことを前提とする
- 重み行列 W で可視層と隠れ層を接続
- バイアスベクトル b (可視層用)と c (隠れ層用)を用意
- エネルギー関数(行列表現)を以下のように定義
- $E(v, h) = -\sum_{i=1}^{m} \sum_{j=1}^{n} w_{ij} v_i h_j - \sum_{i=1}^{m} b_i v_i - \sum_{j=1}^{n} c_j h_j$
- 定式化の確認
確率分布と目的関数
- 同時分布 :$P(v, h) = \frac{1}{Z} e^{-E(v, h)}$
- $Z$は分配関数(正規化定数)で全状態に対して和を取ることにより定義
- 周辺尤度 :$P(v) = \sum_{h} P(v, h)$
- 対数尤度 :$\log P(v) = \log \sum_{h} e^{-E(v,h)} - \log(Z)$
- 学習データの尤度最大化を目的とすること
勾配とパラメータ更新則
- 重み$w_{ij}$に関する 勾配
- $\frac{\partial \log P(v)}{\partial w_{ij}} = \langle v_i h_j \rangle_{data} - \langle v_i h_j \rangle_{model}$
- $\langle \cdot \rangle_{data}$:データ分布での期待値
- $\langle \cdot \rangle_{model}$:モデル分布での期待値
- バイアス$b_i$と$c_j$も同様の形で導出
- パラメータ更新則 (学習率$\eta$を用いる)
- $\Delta w_{ij} = \eta (\langle v_i h_j \rangle_{data} - \langle v_i h_j \rangle_{model})$
- $\Delta b_i = \eta (\langle v_i \rangle_{data} - \langle v_i \rangle_{model})$
- $\Delta c_j = \eta (\langle h_j \rangle_{data} - \langle h_j \rangle_{model})$
- 更新則の確認
モデル期待値の近似とGibbsサンプリング
- モデル期待値 の計算は厳密には困難
- Gibbsサンプリング により近似することが一般的
- 正フェーズ :$h^{(0)} \sim P(h | v^{(0)} = \text{data})$をサンプリング
- 負フェーズ :$k$ステップGibbsサンプリング($v^{(t+1)} \sim P(v | h^{(t)})$と$h^{(t+1)} \sim P(h | v^{(t)})$を交互に繰り返す)
- $k=1$のときが Contrastive Divergence-1(CD-1) と呼ばれる
- 計算コストと近似精度のバランス
Contrastive Divergenceによる学習手順
- 正フェーズ :データから隠れ層をサンプリングし期待値を計算
- 負フェーズ :Gibbsサンプリングで生成データを得て期待値を計算
- パラメータ更新 :
- 上述の差分(データ期待値とモデル期待値)で重み・バイアスを更新すること
- 反復処理 :全データで繰り返し学習を進めること
このように、Contrastive Divergenceは Boltzmann Machine や Restricted Boltzmann Machine(RBM) の学習において、現実的な計算コストで近似的にパラメータを更新するための代表的な手法であることを理解することが重要です。