制限ボルツマンマシン (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の数式は確率が入るためこれまでの手法に比べてかなり複雑だけれど、実装もそれに劣らず複雑なので気合いを入れて取り掛かりたい。