読者です 読者をやめる 読者になる 読者になる

人工知能に関する断創録

人工知能、認知科学、心理学、ロボティクス、生物学などに興味を持っています。このブログでは人工知能のさまざまな分野について調査したことをまとめています。最近は、機械学習・Deep Learningに関する記事が多いです。



ボルツマンマシン(可視変数のみ)の導出

Deep Learning

制限ボルツマンマシンのアルゴリズムの導出が難しかったので忘れないようにまとめておいた。今回から数回にわたって

  1. 可視変数のみのボルツマンマシンの導出(2.4節)
  2. 隠れ変数ありのボルツマンマシンの導出(2.5節)
  3. 制限ボルツマンマシンの導出(2.7節)

の順番に書いてみる予定。表記法は下の深層学習に準じた。この本は紙面の都合か教育的配慮かわからないが最終結果しか書いてない。この記事ではなるべく1ステップずつ展開していって無理なく理解できるレベルにまで落とし込みたいと思っている。ボルツマンマシン自体の説明は非常にわかりやすいこの本に譲ってここでは純粋に式展開とポイントだけをまとめる。

深層学習 Deep Learning (監修:人工知能学会)

深層学習 Deep Learning (監修:人工知能学会)

  • 作者: 麻生英樹,安田宗樹,前田新一,岡野原大輔,岡谷貴之,久保陽太郎,ボレガラダヌシカ,人工知能学会,神嶌敏弘
  • 出版社/メーカー: 近代科学社
  • 発売日: 2015/11/05
  • メディア: 単行本
  • この商品を含むブログ (1件) を見る

今回は可視変数のみのボルツマンマシンの学習方程式(式2.17・2.18)の導出が目標!

定義

エネルギー関数(energy function)

f:id:aidiary:20160311201746p:plain

f:id:aidiary:20160311210947p:plain

bは各ノードに割り当てられたバイアスパラメータ、Wは各結合に割り当てられた重みパラメータ。

ボルツマン分布(Boltzmann distribution)

f:id:aidiary:20160311210740p:plain

分配関数(partition function)

f:id:aidiary:20160311201932p:plain

このvは観測データとは無関係でノードが取り得るあらゆるパターンの集合を表す。ノード数が多いボルツマンマシンでは、この「ノードが取り得るあらゆるパターン」が爆発的に増加することで厳密な計算が困難になる。

データ集合

f:id:aidiary:20160311202956p:plain

対数尤度関数

尤度関数

データはi.i.d.なので各データの生成確率をすべて掛け算したものがデータ全体を生成する確率になる。

f:id:aidiary:20160311203001p:plain

なぜインデックスに \mu を使うんだー入力が面倒だーと愚痴りたくなった。

対数尤度関数

尤度関数のままだとアンダーフローして扱いにくいため対数を取って足し算に変換する。対数をとっても尤度関数を最大化するパラメータは変わらない。

f:id:aidiary:20160311203023p:plain

ここは一番最後の展開がポイント。

 \ln (\exp(x)) = x

 \ln \frac{M}{N} = \ln M - \ln N

の自然対数に関する公式を使った。

対数尤度関数のバイアスパラメータに対する勾配(2.14)の導出

f:id:aidiary:20160311203052p:plain

先の対数尤度関数をバイアスパラメータ b_i で偏微分する。対数尤度関数は3つの項があった。1項目は b_i に対応する v_i しか残らない。2項目は b_i とは無関係の定数なので消えてしまう。ここで3項目が曲者で Z(\theta) をパラメータに対する定数だと思ってはいけない!\thetab_i を含むので偏微分の対象なのだ。最後の展開は合成関数の微分。

上の式の第2項の偏微分をさらに展開していく。ここのvは観測データではなく、可能なあらゆるvを表すため(\mu)はつかない。

f:id:aidiary:20160311203201p:plain

2式目から3式目は合成関数の微分だが \exp (A) の微分はそのまま \exp (A) なので消えない。中身のAの微分は b_i に対応する v_i 以外は残らない。

以上の結果をまとめると

f:id:aidiary:20160311203248p:plain

となり、式 (2.14) が導出できた。最後は期待値の定義

f:id:aidiary:20160311213029p:plain

による。

対数尤度関数の重みパラメータに対する勾配(2.15)の導出

f:id:aidiary:20160311203317p:plain

こちらもバイアスパラメータのときとほとんど同じように進めればよい。偏微分するパラメータが異なるので残る変数が異なるだけ。

上の式の第2項の偏微分をさらに展開していく。

f:id:aidiary:20160311203328p:plain

よって、

f:id:aidiary:20160311203341p:plain

となり式 (2.15) が導出できた。

ボルツマンマシンの学習方程式

対数尤度関数の最大点では下の条件を満たす

f:id:aidiary:20160311203411p:plain

よって、左辺にこれまでの結果を代入するとボルツマンマシンの学習方程式

f:id:aidiary:20160311203422p:plain

が得られる。式 (2.17) と式 (2.18) が導出できた。やったね!

何か誤りを見つけたり、ここの展開は不明だという点があったらぜひ指摘してほしいです。

次回は隠れ変数があるボルツマンマシンを導出していきたい。