NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATIONを読んだのでメモ
はじめに
NICE: NON-LINEAR INDEPENDENT COMPONENTS ESTIMATIONを読んだのでメモ.
基本アイディア
Normalizing flowにおいて,変数変換における関数をニューラルネットを使って定義したという話(厳密には,議論の展開的にnormalizing flowは関係なく単純な変数変換の話のみ.ただ,最終的には変数変換を複数回行うため意味合いとしては変わらない).前に読んだVariational Inference with Normalizing Flowの先駆け的なもの.
まずデータを二つのブロックに分け,以下のような変換を定義する.
が変換の中心で,ReLUとMLPによる非線型変換を表し,データの一方を使ってもう一方を変換することを表現している.変換をこのように定義してあげると各においてunit jacobian deteminantを持ち,逆変換も以下のように定義できるためNormalizing Flowとして良く機能するでしょうという話.
以下,この式が導かれるまでの話.
non-linear independent components estimation
ここでの問題設定は最尤推定によりデータ分布を単純な分布へ移す連続かつ微分可能な変換を学習すること. 基本的にはnormalizing flowをベースとしているので以下の変数変換の関係性を用いる.
は事前分布で,扱いやすい等方性のガウス分布などを考えている(ただし,固定でなく学習してもよいとのこと).もしそのような分布で事前分布が定義されていたとしたら,以下のnon-linear independent components estimation (NICE) criterionが得られる.
単純に第1項目のがに変わっただけではを満たす関数.
今までの議論からNICEは対数尤度を増加させる逆変換可能なデータセットの前処理を学習していることがわかる.さらに変数変換の関係性が正則化として働いており任意に尤度が増加することを防いでいる.
モデルの構成
モデルはforward(encoder )とbackward(decoder )どちらにおいてもヤコビアンが扱いやすくstraightforwardに計算ができなければならない.仮にニューラルネットのように多層構造()として構成した場合,ヤコビアンの行列式は各レイヤーのヤコビアンの行列式の積になり嬉しい.そこでまずはを初歩的な構成で定義することから考える.
まず一つの手段としてアフィン変換(ニューラルネット)を考える.ここで満たさなければいけないことは,ヤコビアンや逆変換が容易に計算可能なことである.そのような行列として三角行列があげられる.特に正則な行列はLU分解によって上三角行列と下三角行列の積に分解できる.この恩恵を受ける一つの構成方法はニューラルネットの重みを三角行列にし,活性化関数が全単射であるものを選ぶことであるが,これは制約が強すぎてモデルのデザインが限られるのであまり良くない.
そこで別な手としてヤコビアンが三角行列になる全単射の変換を考える.これならヤコビアンの行列式が容易に計算できるため問題がない.そこで次のような変換を考える.
基本アイディアのところで出てきた式と同じで,個のデータをに分けており,は逆変換可能かつ,をを使って変換するような関数を表しており,ここではカップリング則(coupling law)と呼ぶ.このように二つのデータに分けることでをで微分すれば単位行列になり,で微分すれば0行列になる.そのためヤコビアンは
とうまいことブロック三角行列になる.よってヤコビアンの行列式はと簡単になる.さらに逆変換も
とかける.をカップリング関数(coupling function),変換をカップリング層(coupling layer)と呼ぶ.
カップリング則として加法カップリング則(additive coupling law)を選べば,となり,
となる.すると逆変換を陽に計算する必要はなく,カップリング関数にどのようなものを使用しても問題がなくなる.例えば,であることに注意をすれば,を次元入力,次元出力のニューラルネットとして構成することができる.さらに嬉しいことに,のによる微分が単位行列になることからヤコビアンの行列式は常に1となる.
そのほかのカップリング則として乗法カップリング則(multiplicative coupling law)やアフィンカップリング則(affine coupling law)を選ぶことができる.ただしこの論文では計算の安定性等から加法カップリング則を使っている.
加法カップリング則を使えばヤコビアンの行列式が常に1で計算が楽になって嬉しいということだったが,変数変換の関係からカップリング層を導入しても分布自体は変化がない.そこでスケーリング行列と呼ばれる対角行列を導入する.これを使うことでヤコビアンの対角成分が1ではなくスケーリング行列の対角成分に等しくなり,ヤコビアンの行列式はとなる.結果としての加法カップリング則にスケーリング行列を導入した際の目的関数は
となる.
最後に実験的なところとして,この論文では事前分布として以下のような因子分解可能な分布を使った.
基本的には問題に合わせてガウス分布かロジスティック分布を使えばいいとのこと.
以上から,NICEの良いところは変数変換に用いることのできる関数の自由度,つまり,活性化関数にReLUのような全単射でないものを使えるし,batch normやresnetのような構造を入れることも可能.しかもコスト関数にL2のような再構成誤差に依存しない良さがある.ただし,スケーリング行列の点は個人的には少し違和感。。。
まとめ
Variational inference with normalizing flowを読んだ後なのでスケーリング行列あたりでこれでいいのか感がでたけど面白かった.Variational inference with normalizing flowで急に出てきた変換の関数の形の意味がよくわかった点は勉強になった.
ボルツマンマシンについて勉強したメモ まとめ
ボルツマンマシンについて勉強したメモのまとめ.
その1 ボルツマンマシンのモデルとその学習方程式について
その3 学習に用いる平均場近似について
その4 制約ボルツマンマシンのモデルとその学習方程式について
その5 学習に用いるコントラスティブダイバージェンスについて
その他,ボルツマンマシンを勉強するきっかけになった論文.
Discrete Variational Autoencoders
GumBolt: Extending Gumbel trick to Boltzmann priors
(上二つの論文もそのうちまとめる予定)
Variational Inference with Normalizing Flowsを読んだのでメモ
はじめに
Variational Inference with Normalizing Flowsを読んだのでメモ.OpenAIからでたGlowという生成モデルの論文が話題になっていて面白そうだったので関連知識を一から勉強してみる.まず手始めにnormalizing flowを使った変分推論について.
Variational Inference
この論文で問題としているのは生成モデルにおいて変分推定を適用するときに,近似事後分布の表現力が低いというもの.より良い近似を使えば強い生成モデルが作れるはずなのでその方法としてNormalizing Flowを使った変分推定を提案しますとのこと.
変分推定は以下のようにJensenの不等式を使って変分下限(または変分下界)を求め,それを最大化しようというもの.
ここでは観測値では潜在変数.はモデルのパラメータを表し,は近似事後分布を表す.近似事後分布は因子分解可能であることなどを仮定して解析的に扱いやすくしているため,元の分布を完全に表現することは不可能である.一応,近似事後分布にすることでの表現力の低下以外の問題として第2項目の勾配の計算コストが高いことも問題としてあげられる(VAEのreparameterizationはそこをうまく扱ったもの).
Deep Latent Gaussian Models(DLGM)
Deep Neural Networksにおいて各層が潜在変数を出力するとする.ここでは番目の層に対応する潜在変数.このとき各々の潜在変数は自分の上位の層以外とは独立と仮定している.層の数をとするとDLGMにおける同時分布は各潜在変数の独立性より
と表される.各々の潜在変数は事前分布として標準ガウス分布が仮定されている.DLGMはDeepな分表現力は高いが,結局は分散が対角成分しかないような単純化されたガウス分布を用いるため真の分布を表現するには無理がある.
Normalizing flow
Normalizing flowは近似事後分布の作り方の一つで表現力の高い近似事後分布を与えることができる.イメージとしては確率分布の変数変換を繰り返し用いることで単純な分布を複雑な分布へと変換できるというもの.
まず,確率変数の変数変換として基本的な規則について.逆変換を持つ連続な写像を考える.分布を持つ確率変数に対し変換を行った確率変数を考える.このとき,に対する確率密度をとすると
と与えられる.詳しいことは「確率密度 変数変換」などでググるとたくさん出てくるので割愛.一応こちらのブログはnormalizing flowの内容含めわかりやすい.
ここで関数がのように個の関数の合成関数になっていると考える.すると上記の変数変換を繰り返し用いれば,
となる.最後の等式は逆関数定理から成り立つ.さらにこれの対数をとると
となる.ただし関数の引数を省略したことに注意.また論文ではではなくとなっていたが,本質的には変わらないはずなのでここではを使って表現する. ここで注目すべきはを計算するのにしか必要がないこと.これによって適当な関数のに関する期待値の計算ものように行うことが可能.
初期の分布は従来通りindependent Gaussianなど使っても,DLGMと違い各潜在変数は何か分布を仮定しているわけではないので表現力が高く,かつを使って計算できるため解析的に扱いやすいという利点がある.
上記では有限のフローを扱ったが,有限があれば無限も考えたくなるのが性というもの.ただし,以下の内容は前提知識が足りず理解しきれていないのでほぼ論文の和訳メモになっていることに注意.
まずLangevin Flow(ランジュバンフロー)について.Langevin Flowでは以下のランジュバン方程式(Langevin stochastic differential equation)によって確率変数が記述される.
ここでは,で与えられるWiener過程,はドリフトベクトルでは拡散行列を表す.ここで初期の分布がである確率変数が上記の方程式により変化していく場合,密度分布の変化の規則はFokker-Planck方程式で与えられる.すなわち,
として変化を記述できる.機械学習の文脈では,としたLangevin flowを用いる.ただし,は正規化されていないモデルの対数密度関数. 重要なこととして,定常状態における解はボルツマン分布になることが知られている.つまり,適当な分布を持つ確率変数をLangevin flowで変換していくと最終的にはとなる. ボルツマンマシンが任意の分布を近似可能だったことを思い出せばnormalizing flowも任意の分布を近似可能と言える(のかな?).
Inference with Normalizing Flows
ここでは有限のnormalizing flowを用いた推定について考える.基本的には変数変換における関数は逆変換可能なものかつヤコビアンンが効率的に計算できるものでなければならない.そこで以下のような変換を考える.
ここで,は学習パラメータで,はsmoothでelement-wiseな非線形関数.上記の変換はヤコビアンの項を時間で計算ができる.具体的には非線形関数の導関数をとすると,右辺第二項目のに関する微分は
とかけるので,行列式は
と計算可能.よって計算コストのオーダーがになる.
上記で定義された変換を,元の有限なnormalizing flowの式に当てはめれば,
が導かれる.このflowはで与えられる超平面に垂直な方向での収縮と拡大を与えており,それにより初期密度を変化させると考えられる.そのためこれをplanar flowと定義する.
また別なアプローチとして,初期密度を確率変数周りで変化させるような変換群を考える.そのような変換群は
として考えられる.ただし,,とし,パラメータとして.この群による変換もまた線形時間で行列式を計算可能である.このflowは放射状の(radial)収縮と拡大を与えるのでradial flowと定義する.planer flowとradial flowで球面ガウス分布を変換した例が論文のFigure 1.より複雑な分布になっていることがわかる.
ここで注意としてplaner flow,radial flowの全てが逆変換可能な関数になっているわけではなく,一定の条件下のみで逆変換可能となる.詳細なことはAppendixに.
ここで変分推定における目的関数にnormalizing flowを適用すると,
となる.4行目はnormalizing flowではの期待値がの期待値でかけることを利用しており,最後の行はplaner flowを代入した.
この論文ではVAEと同様にニューラルネットを使ったモデルを使っている.encoderとdecoderの間で関数を適用していて,の数を変えて実験を行なっている.NICEと比較した結果の可視化が論文のFigure 3(a)(b)(c).提案手法の方が真の分布をうまく表現できていることが分かる.
ちなみに学習に関して最終的な変分下限の式にはという式が現れているが,目的関数としてはで分かれるはず.はtable 1の分布を使ったと書いてあって,どちらも勾配は元のVAEと同様モンテカルロ推定で計算する.あと目的関数の項には温度パラメータを係数としてかけてとしてアニーリングしていくらしい.
まとめ
Normalizing flow非常に賢いなという思い.とりあえずGLOWの元になっていてこの論文でも比較に使われていたNICEを次は読む.
ボルツマンマシンについて勉強した その5
はじめに
RBMの最適化におけるサンプリング方法について勉強したのでメモ.教科書はいつも通り.
これでひとまずボルツマンマシンは終了
ブロック化ギブスサンプリング
RBMの条件付き独立性を有効に活用して可視変数と隠れ変数を交互にギブスサンプリングしようというもの. なので基本的にはギブスサンプリングを行うだけ.具体的には可視変数をランダムに初期化してをからサンプリング.全ての隠れ変数がサンプリングできたらそれらを用いてをサンプリング.以下,この手順を繰り返して連鎖を走らせた後にサンプルを取得する.各々の分布からサンプリングは,ギブスサンプリングで説明した一様乱数を使う方法で行う.
コントラスティブ・ダイバージェンス法(CD法)
RBMになったからといって連鎖を走らせる時間が短くなるわけではないので相変わらずギブスサンプリングの計算コストは高い.実は嬉しいことにRBMではギブスサンプリングの改良版であるCD法が適用できるとのこと.
ブロック化ギブスサンプリングとの違いの一つは,の初期値をランダムではなくデータの経験分布からのサンプル(つまりは適当に選んだ訓練サンプル)にするというもの.つまり,
と0からまでサンプリングする.ただし,上記の式ではサンプリングされた回数を括弧で表していることと,各変数一つ一つについてサンプリングを書くと煩雑なのでベクトル表記でまとめてることに注意.で,どうやらこうすると連鎖を長く走らせなくても実用上は問題ない精度でサンプリングができるらしい.なんならでもいいとのこと.
ギブスサンプリングとのもう一つの違いとして,RBMの学習方程式のモデルに関する期待値の計算方法がある.CD法ではモデルの期待値を
と計算する.さらにすごいことに勾配を求めるのにサンプリング平均を計算する必要がなく一つのサンプルから計算しても良いらしい.以上から,CD法における各学習係数の勾配をまとめると
となる.CD法ではモデルに対する期待値が,による期待値に変わっていることから条件付き独立性が成り立ち,見通しが良くなっている.具体的にはではの関係を用いており,その他二つにおいては前の記事で解説したRBMの学習方程式の導出過程で出てきた変換を使った.あとは勾配上昇法を使って学習を行えばいい.
教科書に載っていたこととして,文献によって重みに関する勾配の右辺第2項におけるをとしてを直接使わない場合もあるらしい.また,ミニバッチでやる場合にはミニバッチ分だけ初期値と連鎖を用意してサンプリングを行うとのこと.
まとめ
長かったボルツマンマシンの勉強も終わり.ちなみに,ブログにまとめるのは疲れたので割愛しているが.教科書にはこんなに思い切った近似しているCD法がなぜうまくいくかについても解説している.
ボルツマンマシンについて勉強した その4
はじめに
今回は制限付きボルツマンマシン(Restricted Boltzmann Machine, RBM)について.教科書はいつもの.
機械学習スタートアップシリーズ これならわかる深層学習入門 (KS情報科学専門書)
- 作者: 瀧雅人
- 出版社/メーカー: 講談社
- 発売日: 2017/10/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
制限付きボルツマンマシン(RBM)
ボルツマンマシンの問題点として期待値計算が難しいという点があげられた.隠れ変数を導入するとモデルに対する期待値だけでなくデータに関する期待値の項も計算量が爆発してしまう. そこで隠れ変数を導入しつつ効率化をはかるために制限を設けたものが制限付きボルツマンマシン. 制限付きボルツマンマシン隠れ変数同士,可視変数同士に結合を持たないようにグラフ構造に制限を入れたもの.
隠れ変数同士,可視変数同士に結合を持たないので隠れ変数と可視変数を陽に書き表したエネルギー関数は以下のようになる.
通常の隠れ変数を持つボルツマンマシンに比べて隠れ変数同士,可視変数同士のエッジに関する重みの項が減ってエネルギー関数が簡潔になった.ちなみにかなり強い制約を与えたが,隠れ変数の数次第で任意の分布を任意の精度で近似できるらしい.
ここでRBMの独立性をもう少し見るために,隠れ変数が与えられた時の可視変数の分布を考える.同時分布を周辺分布で割れば良いので,
と計算ができ,積の形で表されていることから隠れ変数が固定されれば可視変数は条件付き独立になっていることがわかる.隠れ変数についても同様の計算から条件付き独立性を見ることができる.独立になることで計算が飛躍的に簡単になり,そこには近似も入らないため,非常に嬉しいというのがRBM.おかげでギブスサンプリングの実装もシンプルになる.
学習方法
通常のボルツマンマシンと同様,対数尤度の各変数に関する微分を求める.基本的にはバイアスの項が一つ増えただけと考えられる.
可視変数にかかるバイアスに関する微分は隠れ変数を周辺化した対数尤度をとし,途中までの式の導出は前の記事に譲ると
と計算できる.ただし,最後の行はであることと,が経験分布であることを利用した.隠れ変数にかかるバイアスに関しても途中の導出まで前の記事に計算を譲って計算をすると,
となる.ただし,RBMの条件付き独立性とを使った.最後に重みに関する計算に関しては,バイアスに関する微分における各項の係数が変わるだけなので,
となる.ただし,最後の行は先ほどと同様に条件付き独立の性質を使った.
以上からRBMの学習方程式は
となる.隠れ変数を持つ通常のボルツマンマシンと比較するとRBMの学習方程式の左辺はサンプルに関する和を計算するだけになっておりとても簡略化されていることがわかる.
まとめ
RBMの学習方程式の導出まで.あとは学習方程式の右辺を効率よく計算する方法に関してのみ.それが終わったらもともと読みたかった論文を読む予定.まさかこんなかかるとは思わなかった.
ボルツマンマシンについて勉強した その3
はじめに
ボルツマンマシンについて勉強したのでメモその3.今回は本題と少し外れて平均場近似について.教科書は例によって以下.
機械学習スタートアップシリーズ これならわかる深層学習入門 (KS情報科学専門書)
- 作者: 瀧雅人
- 出版社/メーカー: 講談社
- 発売日: 2017/10/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
平均場近似
ボルツマンマシンは各ノード同士を掛け合わせるがあるため期待値の計算が難しい.逆にこの項が存在しなければボルツマンマシンの分布は
となり,簡単化する.平均場近似では各変数が独立となっている分布(テスト分布)の集合を用意し,その中で最も元の分布に近いものをボルツマンマシンの近似として採用しようというもの(よりかは表現力のあるもの).
まず,テスト分布をとするとテスト分布の各変数は独立であると仮定していることから,
とかける.このようにかける分布の中から,ボルツマンマシンの分布とのKLダイバージェンスが最小となる分布を探すというのが目的.つまり,
の最小化を行う.等式制約条件つきなのでラグランジュの未定乗数法を使えば
という目的関数が得られる.ただし,はラグランジュ未定乗数.この目的関数をとで変分することで得られる2つの方程式の解を求めれば分布が決まる.に関する変分は元の拘束条件を表すため,についての変分を考える.まず,変分を考えやすくするため,の独立性を使って,目的関数のKLダイバージェンスの項を以下のように変形する.
上記をについて変分すると
となる.よって,目的関数をについて変分したものは
ともとまる.ここで右辺の第1項のに対して,がに関係ないことと制約条件を使って
と変形できる.またの部分に関してはで期待値を取っているため確率変数によらない定数になる.さらに第二項目に関してもボルツマンマシンの具体形を代入すると
と変形できる.ただし,2行目から3行目において右辺第1項と同様にの項に関する関係性を使った.さらに3行目で導入されたは,ノードに隣接するノードのインデックスを示す.また,4行目で導入されたは期待値計算によって出てくる定数で,以下で定義される.
これがいわゆる平均場で,期待値計算になっていることがわかる.よって今までの変形を組み合わせて確率変数に注目すると
と簡単にかける.よって求める分布は
となる.ここで上記分布は拘束条件を満たすので,を代入して計算することでラグランジュ未定乗数は簡単にもとまって,求める分布は
となる.結局のところ,注目している変数以外は平均値で置き換えてしまおうというのがこの近似法.ここでを書き下して見ると,からの項のみが残り
が得らる.これを条件に平均場の値を決定する必要がある.ちなみにこれは自己無撞着方程式や平均場方程式と呼ばれるらしい.しかし問題は,これは非線形な連立方程式になるため解析的に解くのは困難ということ.実践的には期待値をランダムに初期化して,得られた期待値を使って実際に計算することで期待値の値を更新するという手続きを繰り返して求めるらしい.
最終的にボルツマンマシンにおいては,と近似するだけの話.
まとめ
平均場近似について勉強した.教科書によると平均場近似は簡単化しすぎているせいで変数間の相関を失って精度が落ちるらしい.独立の要請を緩めたベーテ近似やクラスター変分法という方法もあるらしいがとりあえず教科書にはないので機会があれば勉強してみようかくらい.
ボルツマンマシンについて勉強した その2
はじめに
ボルツマンマシンについて勉強したのでメモその2.主にボルツマンマシンの学習におけるサンプリングについて. 教科書は以下.機械学習プロフェッショナルシリーズの深層学習に比べてサンプリングに関わる説明が手厚くサンプリングを初めて学ぶ身としてはありがたい.
機械学習スタートアップシリーズ これならわかる深層学習入門 (KS情報科学専門書)
- 作者: 瀧雅人
- 出版社/メーカー: 講談社
- 発売日: 2017/10/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
サンプリングについて
基本的にはサンプリングを使う意味として,ボルツマンマシンの学習時に期待値計算がしんどいので,分布からサンプリングしてその平均を期待値とすれば計算量が減って嬉しいというもの. サンプリングで得られたサンプルの平均を期待値として使うには各サンプルがi.i.dに所望の分布からサンプルされてないと真の期待値から大きく外れて役に立たないのでそのようなサンプルを生成するうまいやり方がないかというのがサンプリング手法のポイントとなるところ. 基本的にサンプルがi.i.dに得られていたら大数の法則からサンプル数が無限大の時に真の期待値に収束する.
マルコフ連鎖
ここではモンテカルロ法の一種のマルコフ連鎖モンテカルロ法(Markov Chain Monte Carlo method, MCMC)について考える.
まずMCMCで重要なマルコフ連鎖について.マルコフ連鎖はマルコフ性を満たす確率過程のことで,現在の状態が1時刻前の状態だけから決定されるというもの.つまりというもの. マルコフ過程においてある時刻の確率分布は周辺化を用いてと表現できる.さらに同時分布はマルコフ性からと表される.
教科書ではマルコフ連鎖の応用としてページランクが紹介されていたが今回の勉強目的とは関係ないのでここでは割愛.
ここで,確率変数が取りうる状態をとすると,のように時刻における各状態の実現確率を並べたベクトルを考える.このベクトルを状態確率分布と呼ぶ.同様に状態から状態への遷移確率を成分とする行列を遷移確率行列と呼ぶ.すると時刻の状態確率分布はの状態分布を用いて,
と表現できる.ここで均一なマルコフ連鎖(遷移確率行列が時刻によらない)を考えれば,ある時刻における状態確率分布はとなる.ここでの時,もはや遷移確率行列により状態確率分布が変化しなくなった場合,その分布を平衡分布と呼ぶ.マルコフ連鎖は必ず平衡分布に収束するわけではなく規約性と非周期性を満たす時に収束する(詳細は教科書参照).収束の条件式として以下の詳細つり合い条件が与えられる.
2行目は1行目の両辺をについて和を取ることでの関係を用いて得られる.
マルコフ連鎖モンテカルロ法
ようやく本題のMCMC.MCMCはサンプリングしたい分布が複雑でサンプリングが難しい時に,に収束するマルコフ連鎖からサンプリングしようというもの.そうすればマルコフ連鎖が収束した時には,欲しい分布からサンプリングしているのと同じとみなせる.問題はマルコフ連鎖をどう設計するかで,収束が早いほど嬉しいのは言うまでもない.ここでは例としてギブスサンプリングを考える.
ギブスサンプリングは簡素な方法でマルコフ連鎖を設計するため,アルゴリズムも単純で汎用性が非常に高い.いまボルツマンマシンの確率変数がと定義されている時,ギブスサンプリングでは以下の条件つき分布からサンプリングを行う.
要は,全ての確率変数を一気にサンプリングするのではなく,他の確率変数を条件として一つの確率変数のみをサンプリングしようというもの.全ての変数を一気にサンプリングするのは難しいが,一つずつなら楽にできるというのがギブスサンプリングのいいところ.この時サンプリングする順番は任意.
今,確率変数以外の変数の値をとすると,ギブスサンプリングで必要な条件つき分布は
となる.ただし分母はについての周辺化を表している.この式を陽に書くと
と変形ができる.3行目から4行目はと関係ない項を約分しており,最後の行はを代入することで求まる.ここで,両辺のはノードに隣接しているノードのみでの足し合わせになっているため,ノードに隣接するノードの状態からが決まることがわかる.すなわちボルツマンマシンの局所マルコフ性のおかげで,を知らなくても周辺のノードのみでを求めることができ,それにより効率的に計算が可能である.また,ここで上記の式をよく見ると,であることからシグモイド関数の形になっていることがわかる.そのため,サンプリングも非常に単純に行うことができ,区間から発生させた一様乱数がより大きければ,を,それ以外にはをサンプリング値とすればいい.
ギブスサンプリングの問題点
サンプリングのための条件つき分布とそのサンプリング方法がわかったので,あとはギブスサンプリングの枠組みに当てはめて全ての確率変数をサンプリングすれば良い.また,簡単な計算で連鎖が定常状態になれば元の分布になることを示せる(教科書に丁寧な証明があるので割愛).ただし,ギブスサンプリングには一つ問題がある.当然,一番最初の変数をサンプリングする際には他の値はわからないため適当な値で初期化を行う.そこから平衡状態になるまで(初期値の影響が完全に消え去るまで)サンプリングを繰り返す必要があるが(この繰り返しをburn-inと呼ぶらしい),どれくらいサンプリングを繰り返せば平衡状態になるかを見積もる明確な方法がない.もう一つ問題として,burn-inをしたのち1つサンプルを得た直後に別なサンプルを得るとそのサンプルは直前のサンプルと強い相関を持つため独立なサンプルとして使うことができない.そのため,ある程度時間をあけてサンプルを取得する必要があるため,全てのサンプルが得られるまでに時間が必要となる.
実践的なサンプリング方法
上記の最後に挙げたように,ギブスサンプリングにはサンプルを連続して取得すると相関を持ってしまう問題がある.そこで連鎖を複数作ってそれぞれの連鎖からサンプリングする方法を考える.これは,サンプリングしたい数だけ連鎖を用意すればサンプル間の独立性を保証できる.ただし,連鎖の数だけburn-inが必要なので計算コストはかかる(処理を並列化すれば解決は可能?).そのため実践的には,連鎖の本数と計算時間のトレードオフを考えて,複数の連鎖を使って各連鎖から複数のサンプルを取得する方法が取られる.
まとめ
ギブスサンプリングにより分布の期待値を近似する方法を勉強した.これでボルツマンマシンの学習に必要な期待値を近似的に求めることができる.ただし,隠れ変数が入ってくるとモデルだけでなくデータに関する期待値の計算が困難なってくるためサンプリングが必要になり嬉しくない.そこで構造に制約を加えて計算をしやすくしようということで制約ボルツマンマシンができたようなので次回はそこら辺を勉強予定.
ちなみに教科書にはギブスサンプリングではなく平均場近似を使って近似する方法についての解説があったのでそっちも勉強してまとめたい.