1 基本概念
1.1 定義と構造
制約ボルツマンマシンは、確率的生成モデルの一種であり、二部グラフ構造を持つ無向グラフモデルである。同一層内のユニット間に結合が存在しないという制約により、推論と学習の計算が効率化される。
1.1.1 可視層と隠れ層
RBMは、観測データを表現する可視層(visible layer)と、潜在変数を表現する隠れ層(hidden layer)の2層から構成される。可視層のユニット数は入力データの次元に対応し、隠れ層のユニット数は設計者が決定するハイパーパラメータである。可視層と隠れ層の間には全結合が存在するが、同一層内のユニット間には結合がない。
1.1.2 二値ユニットとエネルギー関数
典型的なRBMでは、各ユニットは二値(0または1)を取る確率変数として定義される。モデルの状態(可視層の状態ベクトルvと隠れ層の状態ベクトルh)に対して、エネルギー関数E(v, h) = -∑ᵢ aᵢ vᵢ - ∑ⱼ bⱼ hⱼ - ∑ᵢ∑ⱼ vᵢ Wᵢⱼ hⱼ が定義される。ここでaᵢ、bⱼはバイアス項、Wᵢⱼは結合重みである。このエネルギー関数に基づき、状態の確率はP(v, h) = (1/Z) exp(-E(v, h))で与えられる。Zは分配関数である。
1.2 確率的挙動の原理
| RBMは確率的生成モデルとして、与えられたデータ分布を学習する。隠れ層ユニットの活性化確率は、可視層の状態に依存してP(hⱼ=1 | v) = σ(bⱼ + ∑ᵢ vᵢ Wᵢⱼ)で計算される(σはシグモイド関数)。同様に、可視層ユニットの活性化確率はP(vᵢ=1 | h) = σ(aᵢ + ∑ⱼ Wᵢⱼ hⱼ)となる。この条件付き確率の対称性により、可視層と隠れ層の間で交互にサンプリングを行うことで、モデルからの生成が可能となる。 |
|---|
1.3 ギブスサンプリングと定常分布
RBMの確率的挙動を利用して、ギブスサンプリングによりモデルの定常分布からのサンプリングが行われる。具体的には、可視層の初期状態から始めて、条件付き確率に従って隠れ層→可視層→隠れ層…と交互にサンプリングを繰り返す。十分なステップ数(kステップ)後には、サンプルはモデルの定常分布に近づく。この性質は学習アルゴリズム(後述のコントラスティブ・ダイバージェンス)の基礎となる。
2 学習アルゴリズム
2.1 勾配降下法と対数尤度
RBMの学習は、観測データの対数尤度を最大化する方向にパラメータを更新する最尤推定に基づく。対数尤度の勾配は、データ分布に関する期待値(正相)とモデル分布に関する期待値(負相)の差として表される。しかし、モデル分布からの正確な期待値の計算は分配関数Zのために指数時間を要するため、近似が必要となる。
2.2 コントラスティブ・ダイバージェンス(CD)
コントラスティブ・ダイバージェンス(Contrastive Divergence, CD)は、Hintonによって提案された効率的な近似学習アルゴリズムである。正相の期待値を観測データで近似し、負相の期待値をギブスサンプリングの短いチェインで近似することで、勾配を推定する。
2.2.1 CD-k法の手順
CD-k法では、以下の手順でパラメータ更新を行う。まず、可視層にデータサンプルv⁰を設定する。次に、条件付き確率に従って隠れ層h⁰をサンプリングする。その後、可視層v¹、隠れ層h¹…とkステップのギブスサンプリングを実行し、最終状態(vᵏ, hᵏ)を得る。各パラメータの更新量は、ΔWᵢⱼ ∝ ⟨vᵢhⱼ⟩_data - ⟨vᵢhⱼ⟩_recon(データの期待値と再構成の期待値の差)として計算される。通常k=1で実用的な性能が得られる。
2.2.2 持続的CD(PCD)
持続的CD(Persistent Contrastive Divergence, PCD)は、CDの改良版である。ギブスサンプリングのチェインを学習ステップ間で持続させ、各更新ステップで前ステップの終了状態からサンプリングを継続する。これにより、モデル分布の近似精度が向上し、特に多峰性分布の学習に有効である。PCDは深層信念ネットワークの事前学習で広く用いられる。
2.3 学習率と正則化
RBMの学習では、学習率の設定が収束性に大きな影響を与える。通常は0.01から0.1程度の小さな値から始め、学習の進行に応じて減衰させる。また、過学習を防ぐために、重み減衰(L2正則化)やスパース性制約(隠れ層ユニットの活性化確率を低く保つ)などの正則化手法が併用される。さらに、ミニバッチ学習により勾配推定の分散を低減することが一般的である。
3 主要な拡張モデル
3.1 ガウシアンRBM
標準的な二値RBMでは可視層も二値であるが、実数値データ(画像のピクセル値など)を扱うために、可視層ユニットにガウシアン分布を仮定したガウシアンRBMが提案されている。エネルギー関数はE(v, h) = ∑ᵢ (vᵢ - aᵢ)²/(2σᵢ²) - ∑ⱼ bⱼ hⱼ - ∑ᵢ∑ⱼ (vᵢ/σᵢ) Wᵢⱼ hⱼ と修正される。σᵢは可視ユニットの標準偏差であり、学習前にデータから推定または共に学習される。
3.2 畳み込みRBM
畳み込みRBM(Convolutional RBM)は、画像のような空間構造を持つデータを効率的に処理するために、畳み込み演算を導入したモデルである。可視層と隠れ層の間の結合が局所的な受容野に制限され、重みが空間的に共有される(重み共有)。これにより、パラメータ数が大幅に削減され、並進不変な特徴抽出が可能となる。深層学習では畳み込みニューラルネットワークの事前学習に利用される。
3.3 スパースRBM
スパースRBMは、隠れ層ユニットの活性化が疎(ほとんどのユニットが0に近い値)になるように制約を加えたモデルである。学習時に活性化確率の平均を小さな値(例:0.01)に保つペナルティ項を尤度関数に追加する。これにより、個々の隠れユニットがデータの局所的なパターン(エッジやテクスチャなど)を学習するようになり、解釈性と汎化性能が向上する。
3.4 条件付きRBM(CRBM)
条件付きRBM(Conditional RBM, CRBM)は、過去のデータや外部変数(コンテキスト)を条件として導入したモデルである。例えば、時系列データに対して、過去の観測値を可視層に追加の入力として与えることで、時間的依存関係をモデル化する。CRBMは動的システムの生成モデルとして、音楽生成や株価予測などに応用される。
4 応用事例
4.1 深層信念ネットワーク(DBN)への積層
RBMの最も重要な応用の一つは、深層信念ネットワーク(Deep Belief Network, DBN)の事前学習である。複数のRBMを積み重ね、下層のRBMの隠れ層を上層のRBMの可視層として順次学習する。これにより、ラベルなしデータから階層的な特徴表現が獲得され、その後の教師あり学習(微調整)の初期値として機能する。この手法は、深層学習における勾配消失問題の軽減に大きく貢献した。
4.2 協調フィルタリング(推薦システム)
RBMは協調フィルタリングの枠組みで、ユーザーとアイテムのインタラクション(例:映画の評価)をモデル化するために応用される。各ユーザーの評価ベクトルを可視層とし、隠れ層でユーザーの潜在的な好みを表現する。これにより、未評価のアイテムに対するユーザーの評価を確率的に予測できる。Netflix Prizeなどのコンペティションで高い性能を示した。
4.3 次元削減と特徴学習
RBMの隠れ層の活性化は、入力データの非線形な低次元表現として利用できる。特に、二値の隠れ層は離散的な特徴を抽出するため、クラスタリングや可視化に適している。標準的な主成分分析(PCA)と比較して、RBMはより複雑なデータ分布の構造を捉えることができる。
4.4 確率的生成によるデータ補完
RBMは生成モデルとして、欠損値のあるデータの補完(inpainting)に活用される。観測された部分を固定し、欠損部分をギブスサンプリングで生成することで、データの復元が可能である。これは画像の修復や、アンケートデータの欠損値補間などのタスクに適用される。
5 限界と発展的課題
5.1 勾配推定の分散問題
CD法やPCD法による勾配推定は、サンプリングに起因する高い分散を持つ。特に、学習初期やモデルが複雑な場合、推定値が不安定になり収束が遅くなる。この問題に対処するため、Rao-Blackwellizationや平行チェインの使用などの手法が研究されている。
5.2 スケーラビリティと大規模データへの適用
RBMの学習は、データ数やユニット数が増加するにつれて計算コストが急増する。特に、分配関数の推定が困難であるため、大規模データセットへの適用には工夫が必要である。近年では、ミニバッチ学習やGPU並列化によりある程度のスケーラビリティは達成されているが、数十億パラメータ級のモデルには適さない。
5.3 代替手法との比較(オートエンコーダなど)
深層学習の分野では、RBMに代わる生成モデルとして、変分オートエンコーダ(VAE)や敵対的生成ネットワーク(GAN)が広く使われている。これらの手法は、尤度関数の直接的な最大化ではなく、変分下界や敵対的損失を用いることで、より柔軟な表現と高品質な生成を可能にする。また、オートエンコーダは決定論的な再構成誤差最小化に基づくため、RBMのような確率的サンプリングが不要で学習が安定している。ただし、RBMは確率的生成モデルとしての理論的基盤が明確であり、DBNの構成要素としての歴史的重要性は失われていない。
6 実装とツール
6.1 主なフレームワーク(TensorFlow, PyTorch等)
現代の深層学習フレームワークでは、RBMの実装はカスタムレイヤーとして容易に構築できる。TensorFlowやPyTorchでは、自動微分機能を利用してCD法の勾配計算を実装できる。また、Scikit-learnなどの機械学習ライブラリには簡単なRBMの実装が含まれている。PyTorch LightningやKerasでは、より抽象化されたインターフェースも提供されている。
6.2 ハイパーパラメータ調整の指針
RBMの主要なハイパーパラメータには、隠れ層のユニット数、学習率、CDのステップ数k、ミニバッチサイズ、正則化強度などがある。隠れ層ユニット数はデータの複雑さに応じて設定し、標準的には入力次元の1/2から2倍程度が目安となる。学習率はモーメンタム項(例:0.5~0.9)と組み合わせて調整する。CD-kのkは通常1で十分であるが、より正確な勾配が必要な場合は3~10程度に増やす。過学習が疑われる場合はL2正則化(重み減衰率0.0001程度)や早期停止を導入する。
6.3 オープンソースリソースとライブラリ
Pythonでは、sklearn.neural_network.BernoulliRBM(Scikit-learn)が標準的な二値RBMを提供している。より高度な実装としては、pylearn2(開発停止)やTheanoベースのレガシーコードが存在するが、現在はTensorFlow ProbabilityやPyro(確率的プログラミング)を用いた実装が推奨される。GitHub上には多くの教育用リポジトリが公開されており、MNISTなどの標準データセットを用いたチュートリアルが豊富にある。