ボルツマンマシン(隠れ変数あり)の導出
ボルツマンマシン(可視変数のみ)の導出(2016/3/11)のつづき。前回はボルツマンマシンを構成するノードがすべて可視変数(観測データが与えられる)ケースだったけれど今回は一部のノードが隠れ変数(観測データが与えられない)ケースのボルツマンマシンの学習方程式を導出する。これは深層学習の2.5節に当たる。前回と同様に表記法はこの本に準拠する。
深層学習 Deep Learning (監修:人工知能学会)
- 作者: 麻生英樹,安田宗樹,前田新一,岡野原大輔,岡谷貴之,久保陽太郎,ボレガラダヌシカ,人工知能学会,神嶌敏弘
- 出版社/メーカー: 近代科学社
- 発売日: 2015/11/05
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 可視変数のみのボルツマンマシンの導出(2.4節)
- 隠れ変数ありのボルツマンマシンの導出(2.5節)
- 制限ボルツマンマシンの導出(2.7節)
定義
エネルギー関数
ここで、は可視変数、は隠れ変数を表す。はi番目のノードが可視変数か隠れ変数かによって変換される表記法。数式では特に具体的なグラフ構造を想定しないのでこの表記法をしておくと何かと便利。
ボルツマン分布
可視変数と隠れ変数の同時分布で表されるのがポイント。
分配関数
対数尤度関数
尤度関数を定義するにあたって観測データが与えられる可視変数のみの分布が必要になるため隠れ変数を周辺化して削除する。
尤度関数
対数尤度関数
隠れ変数があると周辺化による がくっつくため可視変数のみの場合と比べると少し複雑になる。今回はエネルギー関数はこれ以上展開しないでそのままにしておく。
対数尤度関数のバイアスパラメータに対する勾配(2.27)の導出
偏微分の項が2つあるので1つずつ展開していこう。まずは1つ目の偏微分。
最初の展開は という塊で合成関数の微分をしている。3つ目の展開は という塊で合成関数の微分をしている。エネルギー関数のバイアスパラメータに対する微分は下のようにに対応するしか残らない。ここでは、グラフのi番目のノードが可視変数なのか隠れ変数なのかわからないのでを使っている。
一番最後の展開が今回の導出で個人的に一番わかりづらかったポイントだがで下のように導出できる。ここでは観測データのインデックスは省略。実際は逆にたどって当てはめる。
次は2つ目の偏微分を展開していこう。vとhの記号がだぶるのでv'とh'も使っている。
以上の2つの展開結果をもとの式に代入すると
やった導出終わったーと思いきや、式 (2.27)と比べてみるとまだ少し違う。1項目が微妙に違う。
実際はここで終わったほうがよりわかりやすいと個人的に思うが、さらに経験分布(観測データのヒストグラム)を使って書き直そう。経験分布を使うと下のように観測データのインデックスを使わない形式に変形できる。
よって第1項目は下のように変形できる。
これを代入すると式 (2.27) が得られる。やったね!
対数尤度関数のバイアスパラメータに対する勾配(2.28)の導出
といきたいところだけどこれまでとほとんど同じなので省略。エネルギー関数の偏微分の対象が異なるので出てくる変数が変わるだけ。まあ練習でやってもよいと思う。
ボルツマンマシンの学習方程式
あとは前回と一緒。対数尤度関数の最大点では下の条件を満たす
よって、左辺にこれまでの結果を代入するとボルツマンマシンの学習方程式
が得られる。式 (2.29) と式 (2.30) が導出できた!
次回はいよいよDeep Learningで使われる制限ボルツマンマシンを導出していきたい。