制限ボルツマンマシン (RBM) の導出 (2)
制限ボルツマンマシン (RBM) の導出 (1) (2016/3/20)のつづき。前回は可視層を固定したときの隠れ層の分布と隠れ層を固定したときの可視層の分布を導出した。今回は、RBMの対数尤度関数の導出とそのパラメータでの偏微分の式を導出していきたい。
深層学習 Deep Learning (監修:人工知能学会)
- 作者: 麻生英樹,安田宗樹,前田新一,岡野原大輔,岡谷貴之,久保陽太郎,ボレガラダヌシカ,人工知能学会,神嶌敏弘
- 出版社/メーカー: 近代科学社
- 発売日: 2015/11/05
- メディア: 単行本
- この商品を含むブログ (1件) を見る
対数尤度関数
可視変数の分布
尤度関数を定義するにあたって観測データが与えられる可視変数のみの分布が必要になる。まずは下の式 (2.44) を導出する。
まず左辺を展開していく。この展開は前回もやったので途中は多少はしょった。
ここで
とおくと
が得られる。あれ?右辺と同じにならない・・・というわけで今度は右辺を展開していく。
左辺と右辺が同じ式になったので
となり、式 (2.44) が導出できた。
尤度関数
この尤度関数を得るために先ほどの可視変数のみの分布が必要になる。展開は対数をとってからにしよう。
対数尤度関数
この導出で先ほどの可視変数の分布(式2.44)を利用した。また、 は観測データ を含むためインデックス に依存する。
対数尤度関数のパラメータに対する勾配の導出
RBMは可視層のバイアスパラメータ 、隠れ層のバイアスパラメータ 、重みパラメータ の3種類があるのでそれぞれ偏微分を求める。
可視層のバイアスパラメータ (2.45)
先ほどの対数尤度関数を で偏微分すると下の式になる。対数尤度関数の2項目は と無関係の項なので消えてしまう。3項目の は の関数なので偏微分の対象として残る。
2項目の偏微分をさらに進める。ここも前回やったので多少はしょる。
よって、
となり、式 (2.45) が導出できた。
隠れ層のバイアスパラメータ (2.46)
対数尤度関数を で偏微分すると下の式になる。対数尤度関数の1項目は と無関係の項なので消えてしまう。 なんてない?と思ったが、 と が を含むので偏微分の対象となる。
1つめの偏微分を進める。
2つめの偏微分を進める。
これらの結果を合わせると
となり、式 (2.46) が導出できた。
重みパラメータ (2.47)
式 (2.46) とほとんど同じだが導出しておこう。式の大部分はコピペで作れるから(笑)対数尤度関数を で偏微分すると下の式になる。
1つめの偏微分を進める。
2つめの偏微分を進める。
これらの結果を合わせると
となり、式 (2.47) が導出できた。
近似計算の必要性
コスト関数(costまたはloss)は対数尤度関数にマイナス記号をつけた負の対数尤度関数(Negative Log Likelihood: NLL)とすればよい。対数尤度関数の最大化はコスト関数の最小化と同じ意味になる。そのためコスト関数のパラメータによる勾配は
となる。よって、あとは一般的な勾配降下法を使えばパラメータを学習できる!と思いきやRBMの場合はそう簡単にはいかない。
これらの式の右辺の1項目は観測データから求められるが、2項目は現在のパラメータ におけるモデルの期待値なのでモデルの変数集合のあらゆる の状態について確率を重みとした和を取る必要がある。
この計算はRBMのユニット数が多くなると指数関数的に増加する。たとえば、MNISTデータの場合、可視層のユニット数は でそれぞれが0または1をとるので最低でも 個の重み付き和を計算しないといけない。さらに隠れ層のユニットが入るとその組み合わせはさらに膨大になる。
このように2項目の期待値は厳密には求められないため近似的に求めようという話になりMCMCの一種であるGibbs sampling、平均場近似という近似手法が導入された。しかし、ニューラルネットの場合、上の勾配の計算はパラメータ が更新されるたびに何度も何度も再計算が必要なためこれらの近似手法でさえまだ計算コストが高い。そういう状況で提案されたのがHintonさんによるContrastive divergence (CD) 法であり、ニューラルネットワークのブレークスルーになったという流れだと理解している。
ここまで来てようやくRBMの実装に取りかかれる。RBMの数式は確率が入るためこれまでの手法に比べてかなり複雑だけれど、実装もそれに劣らず複雑なので気合いを入れて取り掛かりたい。
制限ボルツマンマシン (RBM) の導出 (1)
ボルツマンマシン(隠れ変数あり)の導出(2016/3/12)のつづき。Deep Learningの基礎モデルとして有名な制限ボルツマンマシン(Restricted Boltzmann Machine: RBM)を導出したい。深層学習の2.7節に当たる。前回と同様に表記法はこの本に準拠する。
深層学習 Deep Learning (監修:人工知能学会)
- 作者: 麻生英樹,安田宗樹,前田新一,岡野原大輔,岡谷貴之,久保陽太郎,ボレガラダヌシカ,人工知能学会,神嶌敏弘
- 出版社/メーカー: 近代科学社
- 発売日: 2015/11/05
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 可視変数のみのボルツマンマシンの導出(2.4節)
- 隠れ変数ありのボルツマンマシンの導出(2.5節)
- 制限ボルツマンマシンの導出(2.7節)
この本の説明も十分わかりやすいが制限ボルツマンマシンのよい解説をいくつか見つけたので参考にしたサイトを上げておく。
- 制限付きボルツマンマシンの初心者向けガイド
- RBMから考えるDeep Learning ~黒魔術を添えて~
- Restricted Boltzmann Machine の導出に至る自分用まとめ (PDF)
- Theano 入門
- Theano で Deep Learning <6>: 制約付きボルツマンマシン <前編>
- RBMのtheanoコード解説
- コンストラスティブ・ダイバージェンス法を用いた制限ボルツマンマシン(RBM)の実装
- scikit-learnのRBM
- An Introduction to Restricted Boltzmann Machines (PDF)
- Learning Deep Architecture for AI Chapter 5 Energy-Based Models and Boltzmann Machines (PDF)
- A Practical Guide to Training Restricted Boltzmann Machines (PDF)
ほとんどの資料は最終的な式しか書かれておらずどうやって導出したのかぱっと見ではわからなかった。この記事ではその導出過程をまとめておきたい。
定義
エネルギー関数
可視層と隠れ層のバイアス項を分けている。
ボルツマン分布
分配関数
可視層を固定した上での隠れ層の条件付き分布 (2.42) の導出
RBMの特殊なグラフ構造で成り立つ下の式 (2.42) を導出する。
この式は可視層のユニットを固定すると隠れ軸のユニット間で条件付き独立性が成り立つことを意味している。実際は、RBMを無向グラフィカルモデルとみなすと二つの隠れユニット間の経路を可視層が遮断するので条件付き独立が成り立つことは数式がなくてもグラフ構造を見るだけですぐにわかる。
さっそく導出しよう。
まず分子から展開する。
この段階では何でこんな展開が必要なのか意味不明だがあとできいてくる。
次に分母を展開。分子とほとんど同じだが周辺化のための がついてまわる。
この式の後半部分をさらに細かく展開する。
ここで隠れユニットの数はm個でバイナリユニット(0または1の値を取る)と仮定している。この展開では2式目から3式目への変換に気付けるかがキモな気がする。下のように同じ構造でもっと簡単な式で確認すると納得できる。
これまでの分母の展開をまとめると結局
となる。さらに分子と分母の結果をまとめると
分子と分母の前半部分はまったく同じなのでばっさり消える。ここで
と置く。2つめの式はシグモイド信念(sigmoid belief)と呼ばれる式とのこと。この本以外ではお目にかかったことないけど。最終的に
となり、式 (2.42) が得られた。証明終了!
この本には載っていないが、ついでに隠れ層のj番目のユニットが1を取る確率も導出しておこう。この式はユニットから値をサンプリングするときに重要になる。
隠れ層を固定した上での可視層の条件付き分布 (2.43) の導出
次に式 (2.43) を導出する。これが最終目標。
先ほどは可視層を固定したときの隠れ層の分布だったが、今回は逆で隠れ層を固定したときの可視層の分布だ。こちらはhとvが逆なだけでほとんど同じだけど導出しておこう。途中は少しはしょる。
分子は
分母は
分子と分母から
ここで
と置くと
となり、式 (2.43) が導出できた!
ついでに可視層のi番目のユニットが1を取る確率も導出しておこう。
長くなったのでいったんここで切る。次はRBMの対数尤度関数とパラメータでの偏微分の式を導出したい。
ボルツマンマシン(隠れ変数あり)の導出
ボルツマンマシン(可視変数のみ)の導出(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で使われる制限ボルツマンマシンを導出していきたい。