AI-MASTER WIKI

ボルツマンマシン

ニューラルネットワーク

ボルツマンマシン

各変数との相関関係をグラフ理論と確率論で表現したモデルのことをボルツマンマシンと呼びます。

bm.png

ボルツマンマシンはパーセプトロンとは違うタイプのニューラルネットワークです。 パーセプトロンは入力に対して出力が決まる決定的ニューラルネットワークと呼びます。一方でボルツマンマシンは変数の組合せがどのような頻度で出現するかを確率分布で表現するため確率的ニューラルネットワークと呼びます。

できること

連想記憶(エラー訂正)

ボルツマンマシン学習でノードどうしでどんな値の組み合せが安定しているかを記憶することが出来ます。 それにより隣接ノードの情報から欠損した情報がどんな値を取るかを推定することが出来ます。

fig_memory.png

ネットワーク分析(グラフマイニング)

データからネットワーク構造を推定します これにより他ノードとの相関関係を可視化します。

(他の確率モデルつかったネットワーク分析ではグラフィカルラッソやスピングラス法といったものがありますが, 本質的には同じです。)

fig_mining.png

もしかして: スパースモデリング?

組合せ最適化

応用例

  • レコメンデーション

レコメンデーションアルゴリズムのひとつである協調フィルタリングに応用することが出来ます。 協調フィルタリングとは自分と他の人の情報を使って商品の評価値を推定することです。

実際に、Netflix社のレコメンデーションアルゴリズムとして使われていたそうです。

  • 巡回セールスマン問題
  • ニューラルネットワークの事前学習

後述の制限ボルツマンマシンやディープビリーフネットワーク等をつかってニューラルネットワークの特徴抽出に用います。 通常のディープニューラルネットワークが勾配消失問題で精度が向上しなかったのを事前学習という別のアプローチで回避します。

ボルツマンマシンの数式的な定義

ボルツマンマシンはエネルギー関数Eを用いて次のような確率分布として定義されます。

fig_bm.png

エネルギー関数はボルツマンマシンを用いてどんなことを表現したいかによって自由に設計することが出来ます。

次節でより具体的なエネルギー関数の例を紹介します。

エネルギー関数

ただ確率分布を定義しただけではボルツマンマシンの変数がどんな役割や意味を持っているかがわかりません。 そこで、エネルギー関数Eを定義することでボルツマンマシンがどのような働きをするかの意味付けをします。

(執筆途中)

What is エネルギー関数???

確率変数がどんな組み合わせなら確率的に発生しやすいかを決めるための関数です。 エネルギー関数が最小となるような確率変数の組み合せが最も高確率で発生しやすくなります。 その組み合わせがどういう性質を持っているかになどの制約条件を与えるためには以下のようにエネルギー関数を設計する必要があります。

大きい(小さい)値を取りやすくするには? (1変数に着目)

bm_node.png

fig_bias1.png

各ノードに対してバイアスパラメータbを導入することで確率変数vが大きい値を取りやすくなるのか小さい値を取りやすくなるのかを調整することが出来ます。

  • b < 0 確率変数vが大きな値を取りやすくなる
  • b = 0 確率変数vはどんな値でも同じ確率で取る
  • 0 < b 確率変数vは小さな値を取りやすくなる
0に近い値を取りやすくするには? (1変数に着目)

bm_node.png

fig_bias2.png

各ノードに対して逆分散パラメータλを導入することで確率変数vが0に近い値を取りやすくなるのか0から離れた値を取りやすくなるかを調整することが出来ます。

  • λ < 0 確率変数vは0から離れた値を取りやすくなる
  • λ = 0 確率変数vはどんな値でも同じ確率で取る
  • 0 < λ 確率変数vは0に近い値を取りやすくなる
特定の値を取りやすくするには? (1変数に着目)

bm_node.png

fig_bias3.png

バイアスパラメータbを逆分散パラメータλの両方を導入することで特定の値を取りやすくなります。 イメージ的には大きい(小さい)値を取りやすいパラメータbと0を取りやすいパラメータλがどっちの値を取りやすいかで確率変数vを引っ張り合い最終的に途中の値で拮抗する感じです。

数式を用いて具体的に説明するために、今回定義したエネルギー関数Eをボルツマンマシンの確率分布に代入してみましょう。

fig_bias3_gaussian_prob.jpg

このように式変形していくと最終的にガウス分布(正規分布)っぽい関数となります。 またこの確率分布の平均はb^2 / (2 λ)であるため、バイアスパラメータbと逆分散パラメータλを調整することで任意の値を取りやすくなるようなボルツマンマシンを設計することができます。

隣接ノードどうしで同符号(異符号)の値の組合せを取りやすくするには? (2変数に着目)

bm_coupling.png

fig_weight1.png

隣接ノードどうしで近い値(遠い値)を取りやすくするには? (2変数に着目)
隣接ノードどうしで特定の距離だけ離れた値を取りやすくするには? (2変数に着目)

ボルツマンマシン学習

ボルツマンマシン学習は, ボルツマンマシンの確率分布をデータの経験分布(ヒストグラム, 出現頻度の分布)へ似せることです。 うまく似せるためには最尤法を用いてデータに当てはまるような確率分布となるようパラメータを調整します。 (執筆途中)

隠れ変数

bm_with_hidden.png

ボルツマンマシンの内部に隠れた変数を導入することでより複雑なデータの扱いが可能となります。

隠れ変数を導入することでできそうなこと

  • モデルの表現能力の向上
  • データの特徴量の取得
  • 時間的な変化の表現
  • データのクラスタリング的働き

そのかわり隠れ変数がボルツマンマシン内部の構造をブラックボックス化するためノード間の相関関係がわからなくなってしまう欠点があります。

もしかして: RNN?

ボルツマンマシンの弱点

ボルツマンマシンは確率分布を計算するため、変数が取りうる全パターンの計算をする必要があります。そのため組合せ爆発により厳密計算は困難です。そのため実際のところは学習段階では物理学と数学の力を使って強引に近似計算を行ってどうにかこうにかやりくりしているのが現状です。

(この内容だと非常にわかりにくいため後日詳しく追記予定)

ボルツマンマシン学習の近似法

  • ギブスサンプリング
  • Contrastive Divergence法
  • 平均場近似
  • 確率伝搬法
  • 疑似最尤法

ボルツマンマシンの派生形

ボルツマンマシンのグラフ構造に制約を与えたモデルとして制限ボルツマンマシンと呼ばれるものがあります。 さらに、これから派生したモデルとしてディープビリーフネットワークやディープボルツマンマシンと呼ばれるモデルも存在します。

とくに、ディープビリーフネットワークは積層オートエンコーダと並らんでニューラルネットワークブームを再燃させ、ディープラーニングというブレイクスルーを起こしたモデルでもあります。

制限ボルツマンマシン

ボルツマンマシンの可視変数と隠れ変数をそれぞれの層に分けて配置したようなボルツマンマシンのことを制限ボルツマンマシンと呼びます。

rbm.png

用途としてはオートエンコーダと同じように事前学習に用いたり、欠損値の推定に使うことが出来ます。 たとえば通販サイトで見たことのない映画について、ユーザーがその映画がどんな評価値を与えて評価するかを予想することが出来るようになります。

ディープビリーフネットワーク

制限ボルツマンマシンを多層化したボルツマンマシンです。

dbn.png

ディープボルツマンマシン

dbm.png

ディープラーニングの誕生とボルツマンマシン

ボルツマンマシンと物理学

ボルツマンマシンは物理学の世界と関係があるモデルです。 特に、統計力学や物性物理学の分野ではボルツマンマシンはイジング模型と呼ばれていて、原子の向き(スピン)を簡易に表現するためのモデルとして使われています そのため、ボルツマンマシンの計算には物理学の手法が応用されるなどしています(モンテカルロ法や変分法など)。

また、世界初の商用量子コンピュータことD-Waveや、国産量子コンピュータである量子ニューラルネットワーク(コヒーレントイジングマシン)もイジング模型のアイデアを元にしたコンピュータです。これらの登場により、従来のコンピュータよりも高速にボルツマンマシンの計算できることが期待されています。


添付ファイル: filefig_mining.png 127件 [詳細] filefig_memory.png 124件 [詳細] filefig_bm.png 126件 [詳細] filefig_weight1.png 107件 [詳細] filefig_bias3_gaussian_prob.jpg 133件 [詳細] filefig_bias3.png 116件 [詳細] filefig_bias2.png 115件 [詳細] filefig_bias1.png 120件 [詳細] filebm_coupling.png 124件 [詳細] filebm_node.png 119件 [詳細] filedbm.png 125件 [詳細] filedbn.png 6件 [詳細] filerbm.png 125件 [詳細] filebm_with_hidden.png 133件 [詳細] filebm.png 152件 [詳細]