人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

ボルツマンマシン(隠れ変数あり)の導出

ボルツマンマシン(可視変数のみ)の導出(2016/3/11)のつづき。前回はボルツマンマシンを構成するノードがすべて可視変数(観測データが与えられる)ケースだったけれど今回は一部のノードが隠れ変数(観測データが与えられない)ケースのボルツマンマシンの学習方程式を導出する。これは深層学習の2.5節に当たる。前回と同様に表記法はこの本に準拠する。

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

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

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

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

定義

エネルギー関数

f:id:aidiary:20160312205848p:plain

ここで、vは可視変数、hは隠れ変数を表す。x_iはi番目のノードが可視変数か隠れ変数かによって変換される表記法。数式では特に具体的なグラフ構造を想定しないのでこの表記法をしておくと何かと便利。

f:id:aidiary:20160312210020p:plain

ボルツマン分布

f:id:aidiary:20160312210208p:plain

可視変数と隠れ変数の同時分布で表されるのがポイント。

分配関数

f:id:aidiary:20160312210843p:plain

対数尤度関数

尤度関数を定義するにあたって観測データが与えられる可視変数のみの分布が必要になるため隠れ変数を周辺化して削除する。

f:id:aidiary:20160312211145p:plain

尤度関数

f:id:aidiary:20160312211216p:plain

対数尤度関数

f:id:aidiary:20160312211314p:plain

隠れ変数があると周辺化による  \displaystyle \sum_{h} がくっつくため可視変数のみの場合と比べると少し複雑になる。今回はエネルギー関数はこれ以上展開しないでそのままにしておく。

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

f:id:aidiary:20160312211632p:plain

偏微分の項が2つあるので1つずつ展開していこう。まずは1つ目の偏微分。

f:id:aidiary:20160312211732p:plain

最初の展開は  ln(A) という塊で合成関数の微分をしている。3つ目の展開は  exp(B) という塊で合成関数の微分をしている。エネルギー関数のバイアスパラメータに対する微分は下のようにb_iに対応するx_iしか残らない。ここでは、グラフのi番目のノードが可視変数なのか隠れ変数なのかわからないのでx_iを使っている。

f:id:aidiary:20160312212215p:plain

一番最後の展開が今回の導出で個人的に一番わかりづらかったポイントだがで下のように導出できる。ここでは観測データのインデックスは省略。実際は逆にたどって当てはめる。

f:id:aidiary:20160312212248p:plain

次は2つ目の偏微分を展開していこう。vとhの記号がだぶるのでv'とh'も使っている。

f:id:aidiary:20160312212437p:plain

以上の2つの展開結果をもとの式に代入すると

f:id:aidiary:20160312212642p:plain

やった導出終わったーと思いきや、式 (2.27)と比べてみるとまだ少し違う。1項目が微妙に違う。

実際はここで終わったほうがよりわかりやすいと個人的に思うが、さらに経験分布(観測データのヒストグラム)を使って書き直そう。経験分布を使うと下のように観測データのインデックスを使わない形式に変形できる。

f:id:aidiary:20160312212742p:plain

よって第1項目は下のように変形できる。

f:id:aidiary:20160312212818p:plain

これを代入すると式 (2.27) が得られる。やったね!

f:id:aidiary:20160312213130p:plain

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

といきたいところだけどこれまでとほとんど同じなので省略。エネルギー関数の偏微分の対象が異なるので出てくる変数が変わるだけ。まあ練習でやってもよいと思う。

f:id:aidiary:20160312213238p:plain

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

あとは前回と一緒。対数尤度関数の最大点では下の条件を満たす

f:id:aidiary:20160312213556p:plain

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

f:id:aidiary:20160312213611p:plain

が得られる。式 (2.29) と式 (2.30) が導出できた!

次回はいよいよDeep Learningで使われる制限ボルツマンマシンを導出していきたい。