Loading [MathJax]/jax/output/CommonHTML/jax.js

« 今年の生理研研究会は脳の自由エネルギー原理がテーマです | 最新のページに戻る | 自由エネルギー原理入門(2/7): Sec.2 自由エネルギー原理の前提、世界設定 »

■ 自由エネルギー原理入門(1/7): 変分自由エネルギー VFEの定義

今年の生理研研究会は「認知神経科学の先端 脳の理論から身体・世界へ」と題して、自由エネルギー原理(Free-energy principle, FEP)をテーマに9/2に開催。これに先立つ8/31-9/1には「脳の自由エネルギー原理チュートリアル・ワークショップ」というタイトルでFEP入門のためのレクチャーとハンズオン。

これらに向けてFEP入門の資料を作りました。今日はその第1回。「Sec.1 変分自由エネルギー VFE の定義、基礎」です。これから数日かけて連続してポストして、最終版はPDFでアップロードします。これを使って予習してみてください。

参加募集開始は連休明けの予定。もう少々お待ちください。

最新版のPDFファイルが最後のエントリ:「自由エネルギー原理入門(7/7): 「Sec.0 自由エネルギー原理を数式無しで説明する」を追加」にあります。このPDFファイルを最新版としますので、これから読む方にはPDFファイルでの閲覧をオススメします。


[Sec.1 変分自由エネルギー VFE の定義、基礎]

このセクションでは、変分自由エネルギー VFE について、教科書的な定義と基礎についてまとめてみた。ちゃんとした説明のためには「パターン認識と機械学習(PRML)」の10章とかの機械学習の教科書を読んでみてほしい。

だいたい知っている人のためにまとめておくとこのとおり:以降のセクションを読むために理解していほしいことはたった二つだ。(a) 変分推定を使うためには、問題となっている状況の生成モデルがどういう構造になっているかを因果グラフ、因子グラフを用いてきっちり決めてやる必要がある。(b) そのうえで、変分自由エネルギー F を定義するためには、なにが観測データで、なにが潜在変数を理解して、あとはそれは式(5)に代入すれば一意に決まる。

[1-1. ベイズ推定とは]

そもそも変分自由エネルギー variational free energy VFE F とはなにかというと、変分推定を行うときに使われる値だ。変分推定というのはある種間接的な推定法なので、それの前にもっと直接的な推定(ベイズ推定)について説明する。ベイズ推定というのは確率論的な推定法だ。

まず問題設定はこうだ。観測データ Y={y1,y2} (y1 :窓ガラスが濡れている or y2 :窓ガラスが濡れていない)と 潜在変数 Z(={z1,z2}) (z1 :外は雨が降っている or z2 :外は雨が降っていない) がある。いま窓ガラスが濡れている、を観測した(Y=y1)。このとき外が雨が降っている確率 Prob(Z=z1) を推定したい。これだけだと問題の解きようがないから、潜在変数 Z (雨が降っているかどうか)という原因が観測データ Y (窓ガラスが濡れているかどうか)という結果を引き起こすときの関係を、これまでの経験から、両者の同時確率 Prob(Z,Y) として持っている。この同時確率のことを生成モデル p(Z,Y) と表記する。

EFEc01.png

図1-1: 窓ガラスYから降雨Zを推測する


このときの潜在変数 Z と観測データ Y の因果関係を有向グラフで表したのが図1-1Aの因果グラフ。両者をつなぐ関係が生成モデル p(Z,Y) となっている。生成モデルは同時確率なので、具体的な例としては図1-1Cのような2x2の行列で表すことができる。同時確率なので、4つのセルの確率を全部足すと1になる。

しかし図1-1Aでは生成モデル p(Z,Y)Z および Y に対する関係がよくわからないので、それを明示したのが図1-1Bの因子グラフ。このような表現にすると、生成モデル p(Z,Y) は Z の事前分布である C=p(Z)Z からY を生成する観測モデル A=p(Y|Z) に分けることができる。こうすると図1-1Cにあるように、生成モデルの意味もわかりやすい。事前分布 C からわかるように、そもそも雨が降る確率は低い。また、観測モデル A からわかるように、雨が降ってなくても(z2)、窓ガラスが濡れている可能性はある(y1)。

いま知りたいのはある Y=y1 のときの Z の確率分布 p(Z|y1) だから、ベイズの法則が使える。

p(Z|y1)=p(Z,y1)Zp(Z,y1)

このようにして、生成モデル p(Z,Y) から事後分布(以下true posteriorと呼ぶ) p(Z|y1) を計算するのがベイズ推定だった。

(なお。以下のすべての説明で、総和の記号 のみで説明できる状況の話だけをする。積分記号 は出てこない。つか積分記号嫌い。)

[1-2. 変分推定とは]

しかし、式(1)は分母で全ての可能な潜在変数 Z で足し算をするという作業が入っている。そんな事できないときもあるし、現実的な場面での応用では生成モデル p(Z,Y) は変数が多くて計算量的に難しいという事情もある。そこで使われる近似的方法が変分推定だ。

True posterior p(Z|y1) を直接計算する代わりに、それを近似する確率分布として推測 q(Z) というものを設定する。(どちらも全ての Z で和を取れば1になるようになってる。) 推測 q(Z) の分布の形を変えて、true posterior p(Z|y1) に一致させることができれば、true posterior p(Z|y1) を計算できたのと同じことだ。

このために、推測 q(Z) とtrue posterior p(Z|y1) というふたつの確率分布の近似度を計算する指標としてカルバック・ライブラー距離 DKL (以下KL距離, KLDと略する)というのを使う。

DKL[q(Z)p(Z|y1)]=Zq(Z)lnq(Z)p(Z|y1)

y1 はすでに観察されて確定している値で、Z で総和をとっているから、KL距離は q(Z) の分布の形だけによって決まる定数だ。もし推測 q(Z) とtrue posterior p(Z|y1) が完全一致していたらKL距離は0になる。それ以外は>0となってる。(距離とはいうけど逆向きは同じ距離ではないので、式変形で DKL の中身は交換したりとかはできない。)

[1-3. KL距離の最小化]

しかしこのKL距離が直接計算できるならいいのだが、それができるなら直接true posteriorを計算すればいいだけ。しかしKL距離を式変形すると、式(3)のようになる。(式変形では p(Y,Z)=p(Z|Y)p(Y) を使っている。)

lnp(y1)Log evindece=Zq(Z)lnq(Z)p(Z,y1)ELBO=F+DKL[q(Z)p(Z|y1)]KLD

左辺は観測データ Y が生成モデルp のもとでどのくらいの確率であり得るかというevidence p(Y)=Zp(Y,Z) のlogをとったものなので、log evidence (周辺対数尤度)と呼ぶ。なお、p(Y) はただの観測データ Y の出現確率 Prob(Y) では無いことに注意。いまある生成モデルに基づいてのデータの出現確率だから、尤度likelihoodなのだ。このことを明示するためにこの生成モデルに m という名前をつけて、p(Y|m) と表示することもあるがここではやらない。そのかわり、生成モデル p() とただの確率 Prob() を分けて表示している。

でもって、このlog evidneceというやつはlogの中身が確率だから、かならず負の値を取る。(実際に観測されたデータだから、 にはならない。) そして右辺の第2項はKLD 0 だから、第1項はlog evidenceよりも必ず小さい。

lnp(y1)Log evindeceZq(Z)lnq(Z)p(Z,y1)ELBO=F

よって、この第1項はlog evidneceの下限になっている。そこでこの第1項はEvidence lower bound, ELBOと呼ばれる。そして変分自由エネルギー F とは F=ELBO と単に符号逆転させただけのものだ。(ELBOはlog evidneceよりも小さいのだから、必ず負の値だ。ということは変分自由エネルギー F はかならず正の値。)

[1-4. ちょっと脇道]

ちょっと脇道。といいつつここからが面白い。以上のことからわかるのは、以下のリストが全部同じことだという点だ。
  • (1) ベイズ推定をする
  • (2) true posteriorを計算する
  • (3) 推測q をtrue posteriorに一致させる
  • (4) KL距離を0にする
  • (5) ELBOを最大化する
  • (6) 変分自由エネルギー F を最小化する
  • (7) 周辺対数尤度 lnp(Y) を最大化する

ただし、生物が扱うような複雑な状況においては、これらすべてを完全に実現することはできない。よって、どこかで近似が入ってくることになる。

自由エネルギー原理についての議論で、どれが目的でどれが結果か、どれがなにを近似しているのか、といった問題を理解するためには、この関係について考えればいい。

たとえば暗い部屋問題というのがある。自由エネルギー原理では (6) F を最小化することが生物の目的だというが、それだったら、(7’) 一番ありうる観測データをサンプルすればいいのだから、暗い部屋にじっとしていればいいじゃん、という議論。でもこれは(7)の解釈が間違っている。(7)は生成モデルの元での尤度なのだから、暗い部屋という観測データの出現確率が高い生成モデルをあらかじめ獲得していない限り、これは成り立たない。(だから、冬眠する動物は暗い部屋を選ぶ。我々だって夜は暗い部屋を選ぶ。)

それよりは、ネット言論がタコツボ化することについて当てはめる方がまだ尤もらしいだろう。つまり、我々は自分の持論(=世界についての生成モデル)を持っていて、それをより補強するデータばかり観測しようとする。だからネット言論ではみな自分が聞きたい意見ばかり集めるようになって、分断はより強調されていく。これは自由エネルギー原理から説明できる。なんだってー!

あと、ベイズ脳と自由エネルギー原理の関係についてもどちらが原因でどちらが結果かは自明でない。議論A: 「(1) われわれ生物はベイズ的に情報処理をしているんだ、というのが先にあって、そのための近似法として (6) 自由エネルギー最小化 をするように脳と身体を進化せさせてきた」という議論もあれば、議論B: 「(なんらかの生物学的拘束条件から) (6) われわれ生物は自由エネルギー最小化をするようになっていて、その結果として (1) 行動や知覚でベイズ推定をしているように見えている」ということかもしれない。Friston自身は(6)を自由エネルギー「原理」と呼んだうえで、(1) をベイズ脳「仮説」と呼んでいるので、後者の議論に基づいていると考えるのが筋が通っていると私は思うのだが、Fristonの発言自体はそのつど言ってることがブレているように思う。

[1-5. 変分自由エネルギーとは]

そういうわけで、変分自由エネルギー variational free energy VFE F は式(5)のとおりに定義される。

F=Eq(Z)[lnq(Z)lnp(Y,Z)]=DKL[q(Z)p(Z|Y)]KLD+lnp(Y)Surprisal

(ここまで観測データに具体例での y1 を使ってきたが、ここからは一般性を出すために、Y を使う。しかしこれまでのことからわかるように、Y はすでに確定した一つのデータで、Z とりうる値を全部並べた変数になっている。おなじ変数みたいに見えて別ものなのだ。慣れた人にとっては当たり前だろうけど、私はこれが馴染むまで相当時間がかかった。)

(ここでは期待値の記号として E を使っている。下付き文字の期待値で重み付けして、その期待値の変数 Z で和をとる。たとえば Eq(Z)p(Z)=Zq(Z)pA(Z) というふうに。)

ここで第2項は(sensory) surprisalと呼んでいる。この値はlog evidenceの符号逆転で、必ず正の値になっている。得られた観測データが現在の生成モデルに基づいて予想外であれば、p(Y) はより小さくなるので、surprisalは大きくなる。Surprisalはシャノンのself informationとも呼ばれる。これをsurpriseと呼ぶこともあるが、次に出てくるBayesian surpriseとの区別のために、この文書ではsurprisalという言葉で統一させてもらう。

[1-6. 実例で変分自由エネルギーの最小化を見てみる]

それでは、図1-1に出した例を使って、推測q を変化させながら変分自由エネルギーF の最小化をシミュレーションしてみよう。まず、先に正解をカンニングしてしまうと、図1-1の生成モデル p からtrue posteriorを直接計算して、

p(Z=[z1z2]|Y=[y1y2])=[0.5290.0300.4700.969]

となる。よって、Y=y1 (窓ガラスが濡れている)のとき、Z=z1 (雨が降っている)の確率は53%程度だ。事前分布 p(Z=z1)=0.2 であったことを考えると、窓ガラスが濡れている、という観察はinformativeであったことがわかる。

では q(Z) を変化させてみよう。ここでq(Z) の形を変えると言ったが、実のところ、q(Z=z1) が決まれば、q(Z=z2)=1q(Z=z1) も決まる。そこでパラメーター ϕZ=q(Z=z1)01 の範囲で動かしてVFE,KLD,Surprisal を計算してプロットしてやる。すると図1-2のとおりになった。

EFEc03b.png

図1-2: 変分自由エネルギーVFEの最小化


q(Z) の初期状態は事前分布 p(Z)=[0.20.8] と等しいと考えてやれば、ϕZ=0.2 からスタートするのが妥当だろう。このとき、

VFE=1.8879KLD=0.3315Surprisal=1.5564 (bits)

となっている。ここからVFE が小さくなる方に ϕZ を動かしていくと、ϕZ=0.529

VFE=1.5564KLD=0Surprisal=1.5564 (bits)

となる。KLD=0VFE が最小化された状態では、VFE=Surprisal となっている。この ϕZ=0.529 は直接true posteriorを計算した結果の p(Z=z1|Y=y1)=0.529 と同じになっていることが確認できた。

そういうわけで、変分自由エネルギーを最小化することで、true posteriorを近似できるということが確認できた。自由エネルギー原理では、脳はこのようなやり方で観察データ(感覚入力)から潜在変数(外界の状態)を推定していると考える。以降のセクションでは、より知覚や行動に似せた状況での生成モデルを構築して、どのように VFE が計算されるかを見てゆく。

なお、図1-2を見れば想像がつくように、もしVFE の曲線がlocal minimumを持っていたら、そこで停まってしまって、正しいtrue posteriorが計算できないであろうことも想像がつく。そして、もっと複雑な生成モデルではそのようなことはいかにも起こりそうだ。

[1-7. このセクションで言いたかったこと]

長々と書いてきたが、以降のセクションを読むために理解していほしいことはたった二つだ。(a) 変分推定を使うためには、問題となっている状況の生成モデルがどういう構造になっているかを因果グラフ、因子グラフを用いてきっちり決めてやる必要がある。(b) そのうえで、変分自由エネルギー F を定義するためには、なにが観測データで、なにが潜在変数を理解して、あとはそれは式(5)に代入すれば一意に決まる。

ではこのセクションのおさらいを兼ねて、新しい生成モデルでこの二つの作業をやってみよう。図1-3Aではさきほどの図1-1の状況にひとつだけ要素が加わっている。図1-1Aでは、観測データY 「窓ガラスが濡れているか」、潜在変数 Z 「雨が降っているか」の二つの要素だけがあった。図1-3Aではこれに加えて、潜在変数 X として「スプリンクラーが作動しているかどうか」がある。この図ではスプリンクラーの動作は雨が降るかどうかとは無関係にしてある。(もし、雨が降ったときはスプリンクラーは動かさない、という因果関係を設定した場合には、Z からX への矢印も必要になる。)

EFEc02.png

図1-3: 窓ガラスYから降雨Zとスプリンクラーの動作Yを推測する


このような関係を因子グラフにすると図1-3Bになる。観察モデルA は二つの入力を受けて一つの出力を出すように変わった。ゆえに、雨が降っているかいないか {z1,z2} とスプリンクラーが動作しているかいないか {x1,x2} の4通りの組み合わせ {(z1,x1),(z1,x2),(z2,x1),(z2,x2)})について、窓ガラスが濡れているかどうか {y1,y2} の確率を知っている、これが観察モデルA だ(図1-3C)。

するとこのときのVFE F を計算するためには、観察データY と潜在変数 Z,X を式(5)の中に入れてやればいい。

F=Eq(Z)[lnq(Z,X)lnp(Y,Z,X)]=DKL[q(Z,X)p(Z,X|Y)]KLD+lnp(Y)Surprisal=DKL[q(Z,X)p(Z,X)]Bayesian surprise+Eq(Z,X)lnp(Y|Z,X)Uncertainty

その結果が式(9)だ。つまり、式(5)でZ だったところが、Z,X になっているだけ。つまり、複数の変数は同時確率としてカンマつけて並べておけばいい。


お勧めエントリ


月別過去ログ