ボルツマンマシンについて勉強した その5
はじめに
RBMの最適化におけるサンプリング方法について勉強したのでメモ.教科書はいつも通り.
これでひとまずボルツマンマシンは終了
ブロック化ギブスサンプリング
RBMの条件付き独立性を有効に活用して可視変数と隠れ変数を交互にギブスサンプリングしようというもの. なので基本的にはギブスサンプリングを行うだけ.具体的には可視変数をランダムに初期化してをからサンプリング.全ての隠れ変数がサンプリングできたらそれらを用いてをサンプリング.以下,この手順を繰り返して連鎖を走らせた後にサンプルを取得する.各々の分布からサンプリングは,ギブスサンプリングで説明した一様乱数を使う方法で行う.
コントラスティブ・ダイバージェンス法(CD法)
RBMになったからといって連鎖を走らせる時間が短くなるわけではないので相変わらずギブスサンプリングの計算コストは高い.実は嬉しいことにRBMではギブスサンプリングの改良版であるCD法が適用できるとのこと.
ブロック化ギブスサンプリングとの違いの一つは,の初期値をランダムではなくデータの経験分布からのサンプル(つまりは適当に選んだ訓練サンプル)にするというもの.つまり,
と0からまでサンプリングする.ただし,上記の式ではサンプリングされた回数を括弧で表していることと,各変数一つ一つについてサンプリングを書くと煩雑なのでベクトル表記でまとめてることに注意.で,どうやらこうすると連鎖を長く走らせなくても実用上は問題ない精度でサンプリングができるらしい.なんならでもいいとのこと.
ギブスサンプリングとのもう一つの違いとして,RBMの学習方程式のモデルに関する期待値の計算方法がある.CD法ではモデルの期待値を
と計算する.さらにすごいことに勾配を求めるのにサンプリング平均を計算する必要がなく一つのサンプルから計算しても良いらしい.以上から,CD法における各学習係数の勾配をまとめると
となる.CD法ではモデルに対する期待値が,による期待値に変わっていることから条件付き独立性が成り立ち,見通しが良くなっている.具体的にはではの関係を用いており,その他二つにおいては前の記事で解説したRBMの学習方程式の導出過程で出てきた変換を使った.あとは勾配上昇法を使って学習を行えばいい.
教科書に載っていたこととして,文献によって重みに関する勾配の右辺第2項におけるをとしてを直接使わない場合もあるらしい.また,ミニバッチでやる場合にはミニバッチ分だけ初期値と連鎖を用意してサンプリングを行うとのこと.
まとめ
長かったボルツマンマシンの勉強も終わり.ちなみに,ブログにまとめるのは疲れたので割愛しているが.教科書にはこんなに思い切った近似しているCD法がなぜうまくいくかについても解説している.