「よくわかるフリストンの自由エネルギー原理」作成しました

スライド「よくわかるフリストンの自由エネルギー原理」を作成してslideshareにアップロードしました。

よくわかるフリストンの自由エネルギー原理 from Masatoshi Yoshida

このスライドは栢森情報科学振興財団 第17回 Kフォーラム2017での発表をもとにして作成しました。そのときのスライドの構成は「1) 盲視についての吉田の研究の紹介 2) 自由エネルギー原理についての直感的な説明 3) 自由エネルギー原理を意識の理論にするためには」という3パートからなっていて、今回のスライドは2)の部分に該当します。3)についてもそのうち発表したい。

このスライドは以前作成したスライド「アクティブビジョンと フリストン自由エネルギー原理」の更新版と捉えていただけるとよいかと思います。以前のスライドについてはブログ記事(「セミナー「アクティブビジョンと フリストン自由エネルギー原理」スライドをアップロードしました」)にさらに情報があります。その当時は自由エネルギーの式をさらに簡略してあって、それだけ見てもどう自由エネルギーが計算できるかわからなかったのですが、今回は単純なケースではあるけれども、実際に自由エネルギーの値を計算しています。

FEPを正確に理解するためには機械学習(変分ベイズ)、そしてニューラルネットワーク(確率的勾配降下法)についての知識が必要となります。しかしそもそもそこまでしてFEPを理解する意義があるか、判断の材料を提供するために、神経科学者、心理学者、哲学者に向けてFEPの最小限の理屈を説明したい、というのが本スライドを作成した動機であります。そういうわけで、この説明では(世界一)単純化した例を用いているということを承知しておいていただきたい。

私自身はFEPをどのくらい重要だと思っているかというと、批判的に継承したいと考えていて、Kフォーラムでは3)の部分でその話をしました。そのうちそちらもまとめる予定。


最尤法、MAP法、ベイズ推定についてのまとめ

ずいぶんと昔の話なのだけど、「比率のデータにエラーバーを付けたいんだけど」っていう記事を作ったときに、最尤法でも尤度関数の分布を使ってエラーバー(ベイズ的なcredible interval)を付けることができるよね、というのをやったことがある。そのときどうもしっくりきてなかったことを整理してみる。

最尤法の具体例として(この例自体は今回の話に必須なわけではないが)、二項分布でコインの表裏を で表現するとして、n回のコイン投げデータ が確率モデル(二項分布)のパラメータ (コインの表が出る確率)の尤度関数

となる。最尤法ではこの尤度関数 の最大値となるパラメータ を推定する。

これはベイズの枠組みで言えば、無情報のprior を使って計算したposteriorの分布の最大値となるパラメータ を推定することと等価だ。

いっぽうでベイズ推定の場合には、尤度そのものを使うのではなくて、ベイズの定理からposteriorの分布を推定している。

もしここで点推定したければ、

となる。

こうしてみると、posteriorの分布を推論する(inference)ところと、そのあとパラメーター を点推定(estimate)するところを分けて整理できるなと思った。

さっそく作ってみた。

MLE.001s.png

こんなかんじ。ベイズの定理に基づいてposteriorの分布を推論(infer)する方法に対して、priorの情報を使わない尤度を用いた方法がある。どちらもパラメーター の推測(estimate)を行う際には、最大値を採用する方法や期待値を採用する方法がある。

尤度関数の分布を求めた後に最大値を採用する方法が最大尤度法MLE(maximum likelihood estimation)であり、ベイズの公式でjoint probability (=generative model)の分布を求めた後に最大値を採用する方法がMAP法(maximum A posterior)だと。

つまり最大尤度法MLEという言葉を私が気持ち悪いなあと思ったのは、尤度関数を計算するところと、最大値を推定するところとが両方いっぺんに入っているからだということがわかった。「分布関数を計算する尤度推測(likelihood inference)」とそのあとの「最大値を採用する点推定MLE」みたいな言い方をするほうが混乱しなくていいんじゃないの?

なんか、MLEは点推定するけど、ベイズは点推定しないみたいな言い方はmisleadingだと思っていたので。

もちろんこれはベイズ史観であって、MLEを作ったフィッシャーの狙いとは異なるからこんな言い方はしないんだろうけど、そういった歴史的経緯以外にこの捉え方でまずいところってあるんだろうか?


でもってじつは本題は、このように整理すると、さらにhidden variable があるときのEMアルゴリズムと変分ベイズを並べることで2*2のマトリクスが作れるよって話だった。でもそこまで図を作る前に息切れしてしまった次第。


ところで、当たり前っちゃあ当たり前なんだけど、 の関数であって、同じ一つのグラフの上に書ける。

それは当たり前のことなんだけど、式を字面だけ読んでいると、なんだか の関数であるような(ぼんやりとした)勘違いをしてしることに気がついた。もちろん、べつに条件付き確率の左右にはどちらがgivenかといったそういう意味があるわけではない。


EMアルゴリズムの勉強メモ

自由エネルギー原理を理解するためには機械学習での「変分ベイズ」を理解する必要があって、さらにその手前の段階に「EMアルゴリズム」がある。EMアルゴリズムにおいてもKL divergenceを最小化して下界Lを最大化する過程が出てくる(PRMLの9.4章の図9.11-14)。

この図と式を字面を追っていくことはできるけど、シンプルなモデルでじっさいにグラフを書いて理解できるようにしたい。いちばん簡単な例はなんだろうか? Nature BiotechnologyのPrimerの記事で混合二項分布を使ったいい感じにわかりやすいものを見つけた:Do, C. B., & Batzoglou, S. (2008). What is the expectation maximization algorithm? Nature Biotechnology, 26(8), 897–899.

ここにある事例を使ってmatlabでグラフ書きながら理解してみることにしよう。


潜在変数がない場合 (=>最尤推定)

コインの裏表のデータがある。データXはコインの表の数(列1)と裏の数(列2)を表していて、10回での裏表の数を計算して、それを5回繰り返しす。つまり、データ で、たとえば だと、10回中5回表が出たということ。

X = [...
    5 5;
    9 1;
    8 2;
    4 6;
    7 3];

じつはコインには二種類、コインAとコインBがあって、それぞれで表が出る確率が違う。この5回でどっちを使ったかのデータがわかっていて、それをZで示している。つまり、データ で、 (A or BでAを使った確率)

Z = [...
    0
    1
    1
    0
    1];

それではcoin Aおよびcoin Bそれぞれでの表の出る確率 はいくつか?

これは最尤推定で解ける。しかも二項分布の場合は最尤推定を使わなくても、coin Aでは thetaA = 24/30=0.80 , coin Bでは thetaB = 9/20=0.45 という計算だけで済む。


潜在変数がある場合 (=>EMアルゴリズム)

ではもし、いつcoin A, coin Bが出たか(Z)が不明の場合にもcoin Aとcoin Bの表が出る確率を推定することはできるだろうか? つまり入手できるデータはXだけで、Zのほうは入手できない潜在変数という場合でも可能か?というのが問い。

そうすると問題はこのときの尤度

を最大化するような を求めたい、ということになる。

そこで尤度 を最大化する代わりに、

における を最大化する。

これのlogを取ったものの最大化を考える。

(1) 推定する変数 および の初期化

, : コインA, Bそれぞれの表が出る確率

theta_Aest = 0.60;
theta_Best = 0.50;

および

pziAest = [...
    0.5;
    0.5;
    0.5;
    0.5;
    0.5];
pziBest = 1 - pziAest;

(2) E-step: を計算する

ベイズの公式より

これらが計算できればE-stepでの目的である として

右辺は(2)と(1)から計算できる。

実際にはこれを計算する:

のときの が起こる尤度だから

px1z1A = binopdf(X(1,1), X(1,1)+X(1,2), theta_Aest)
px1z1A =       0.20066

初期設定より、

よって は以下のように計算できる。

pz1Ax1 = px1z1A .* pziAest(1)
pz1Ax1 =       0.10033

同様にして、 のときの が起こる尤度だから

px1z1B = binopdf(X(1,2), X(1,1)+X(1,2), theta_Best)
px1z1B =       0.24609

初期設定より、

よって は以下のように計算できる。

pz1Bx1 = px1z1B .* pziBest(1)
pz1Bx1 =       0.12305

まとめると となる。

同様にして について計算すると

pziAxi = ([binopdf(X(:,1), X(:,1)+X(:,2), theta_Aest)]) .* pziAest;
pziBxi = ([binopdf(X(:,2), X(:,1)+X(:,2), theta_Best)]) .* pziBest;
[pziAxi pziBxi]
ans =
      0.10033      0.12305
     0.020155    0.0048828
     0.060466     0.021973
     0.055738      0.10254
       0.1075     0.058594

を計算するには上で計算した があればよい。

より

pxi = pziAxi + pziBxi
pxi =
      0.22338
     0.025038
     0.082439
      0.15828
      0.16609

これが の推定値

pziAest = pziAxi ./ pxi;
pziBest = pziBxi ./ pxi;
[pziAest pziBest]
ans =
      0.44915      0.55085
      0.80499      0.19501
      0.73347      0.26653
      0.35216      0.64784
      0.64722      0.35278

(3) M-step: の推定

coinAが出る期待値は

X_Aest = X .* pziAest;
X_Best = X .* pziBest;
sumX_Aest = sum(X_Aest,1);
sumX_Best = sum(X_Best,1);
theta_Aest = sumX_Aest(1) / (sumX_Aest(1) + sumX_Aest(2));
theta_Best = sumX_Best(1) / (sumX_Best(1) + sumX_Best(2));
[theta_Aest theta_Best]
ans =       0.71301      0.58134

(4) 収束条件を見てストップするか判断

thetaが収束したかどうかを確認して、E-Mの繰り返しを止めるか決める。

ではE-Mを20回繰り返して、thetaが収束するかどうか見てみることにしよう。

clear all
X = [...
    5 5;
    9 1;
    8 2;
    4 6;
    7 3];
theta_Aest = 0.60;
theta_Best = 0.50;
pziAest = [...
    0.5;
    0.5;
    0.5;
    0.5;
    0.5];
pziBest = 1 - pziAest;
theta_est =[theta_Aest theta_Best];
for ii=1:20
    pziAxi = ([binopdf(X(:,1), X(:,1)+X(:,2), theta_Aest)]) .* pziAest;
    pziBxi = ([binopdf(X(:,2), X(:,1)+X(:,2), theta_Best)]) .* pziBest;
    pxi = pziAxi + pziBxi;
    pziAest = pziAxi ./ pxi;
    pziBest = pziBxi ./ pxi;
    X_Aest = X .* pziAest;
    X_Best = X .* pziBest;
    sumX_Aest = sum(X_Aest,1);
    sumX_Best = sum(X_Best,1);
    theta_Aest = sumX_Aest(1) / (sumX_Aest(1) + sumX_Aest(2));
    theta_Best = sumX_Best(1) / (sumX_Best(1) + sumX_Best(2));
    theta_est = [theta_est; theta_Aest theta_Best];
end
figure;
hold on
plot(0:size(theta_est)-1, theta_est(:,1), 'ro-')
plot(0:size(theta_est)-1, theta_est(:,2), 'bo-')
plot.png

このように、Zが既知での最尤法のときに計算した値(thetaA = 0.80, thetaB = 0.45)と同じ値に収束していることが分かる。

ところでNature BiotechnologyのPrimerの記事では10回繰り返したところでthetaの推定値が thetaA = 0.80, thetaB = 0.52 となってる。たぶんPrimerの記事のほうがなんか間違えてると思う。


盲視と表象と動物の心

こんど栢森情報科学振興財団が毎年開催している「Kフォーラム」というクローズドの会でトークさせてもらえることになった。有名な科学哲学者の方も参加するとのことなので、以前読んでたルース・ミリカンのオシツオサレツ表象とかあのへんを盲視の議論から展開させて話してみようと思う。

このへんに関しては以前ブログ記事「鈴木貴之さんの「ぼくらが原子の集まりなら、なぜ痛みや悲しみを感じるのだろう」を読んだ!」および「鈴木貴之さんの本を読んでいろいろ考えた(続き)」に色々書いた。あと記事にしてないけどツイッタにも書きためている。これらをまとめたうえで、「盲視での「なにかあるかんじ」という経験とは、カエルの表象(生産者)をヒトの消費者が利用している状況ではないか」という空想を語ってみようというわけだ。

そういうわけで「哲学入門」(戸田山和久 著)を再読してる。

5章の「目的」のところの話を読んでいると、ヒト以外の動物では(1)自分の行動から生じうる未来の出来事を予測して行動する 、これはできるが、(2)ある行動による帰結を予測して行動を制御する、これはできない、とある。要するにシミュレーションができるかどうかの違いのようだ。

p.259では(1)単に未来の情報を表象すること (2)未来の状態を「目標として」表象すること の違いと表現している。これって、例の松沢さんの話で出てくる「チンパンジーは自分の未来に絶望しない」ってあれのことだなあと思う。

p.260では二匹のハムスターの例で説明しているけど、「餌を見ると、これを運べばねぐらの餌が増えるというアフォーダンスを知覚して、餌を運ぶ」これはできても「ねぐらの餌がたまった状態を目標として、その目標のために餌を運ぶ」これはできないと言う。

これは神経科学とつなげて考えられそうだ。Non-human primatesを対象とした神経生理学ではこれまでの30年くらいにわたって「目的(ゴールの場所とか)を表象するニューロン活動」について研究してきた。説明しだすと長いので次のパラグラフでざっくりとした例を書く。(わかっているヒトはスキップで対処して。)

(補足説明: たとえば、ある行動課題では、手掛かり指摘として赤丸が出たら右ターゲットをタッチすると報酬がもらえる。緑丸が出たら左ターゲットをタッチすると報酬がもらえる。するとこの課題をやっているときの脳活動の記録から「右のターゲット(ゴール)を表象するニューロン」というのが見つかる。これは赤丸が出てから右ターゲットを選ぶ行動を始めるまでの間だけに活動する。緑丸が出てから左ターゲットを選ぶ行動を始めるまでの間には活動しない、つまり選択性があるから、右ターゲットの情報を持っているのであって、手を伸ばすという運動一般の情報を表象しているわけではない。ではこれは赤丸を覚えているニューロンではないだろうか?これはお手つきをした試行を調べてみれば分かる。このニューロンは緑丸が出たのに間違って右ターゲットを選ぶ行動を始めるまでの間にも活動した。一方で、赤丸が出たのに間違って左ターゲットを選ぶ行動を始めるまでの間には活動しなかった。よってこのニューロンの活動は、赤丸や緑丸を思い出している活動(retrospective coding)ではなくて、将来起こる行動が右ターゲットと左ターゲットのどちらか(prospective coding)を示している。)

しかしけっきょくのところ、このような神経生理学で示したことは正確には何だろうか? ここで起こっていることは、未来を「イメージ」している、というのとは違うんではないだろうか?

おそらく動物ではただただ「今を生きる」をやっている。それは田口茂さんの「現象学という思考」での「行為的連関のモード」というものだ。上記の神経生理学の実験の例で挙げたような、未来に向けて行動している場合でも、いつもイマココにゴールを保持しているのであって、あとで使うかどうかもわからないイベントをエピソード記憶として持っているわけではない。

(もっとちゃんと考えようとするならば、強化学習の枠組みでの誤差をどうやって作っているのか、その教師信号はどのような形で更新されているのか、というようなことを考える必要あり。)

「行為的連関のモード」というキーワードが出てきたので、ここで以前のブログ記事で書いた神経活動と表象の関連の問題についてパラフレーズをしてみよう。側頭葉のニューロン活動を記録すると「おばあさん」を見たときだけに活動する「おばあさん細胞」が見つかった。しかしこのことから、おばあさん細胞が活動したらおばあさんが表象されたと結論づけるわけにはいかない。それはなぜかというと、それだけではおばあさん細胞の活動は、視覚入力-神経活動-行動という行為的連関の一部分でしか無いから。

そこに反実仮想はない。それが表象であるためには、他の可能性を排除した「ほかでもない」おばあさんという情報である必要があるし、ミリカンが「バイオセマンティクス」の中で書いたように、否定文を作れるような命題的内容を持つ必要がある。

神経活動は否定文を作れない、というのも変な表現だが、この論点は、下條信輔さんが「意識とは何だろうか」でヒトは間違えてもニューロンは間違えない、という話をしたことと大いに関連しているといえるだろう。この話も詳しく説明しだすと長いので次のパラグラフでざっくりと説明する。(わかっているヒトはスキップで対処して。)

(補足説明: Newsomeの知覚的意思決定の研究を引いて、MTニューロンは誤るということがないと議論。あとで加筆予定。)

これは人間の判断というパーソナルなレベルでは「間違う」ということがあっても、ニューロンというサブパーソナルなレベルでは「間違い」「正解」は消えてしまうということだ。

こんど下條さんに会う機会までに該当部分を読み直して、この話について聞いてみることにしよう。

おばあさん細胞の活動は、視覚入力-神経活動-行動という行為的連関の一部分でしか無い。神経活動と表象の問題を考えるにあたって、ベイズ脳的な考えは重要な意味を持っていると思う。ベイズ脳ではここのニューロンが「信念」「モデル」を保持していて、それが時々刻々と入力する感覚情報によって更新されてゆく。ここには「視覚入力-神経活動-行動という行為的連関」以上のものがある。ただし「信念」「モデル」という言い方でホムンクルスっぽいものが入っていて、それを使ってしまえば、表象の自然化をするために表象もどきを埋め込むというズルをしているとも言える。

ちなみにKフォーラムの方は、クローズドではあるものの、発表と議論の結果は「K通信」としてまとめられるようなので、ここで面白いことが書けるのを目標にしてみたい。(<-未来を想像する人間らしい行為)


駒場講義2017の準備のつづき:ハンドアウトをアップロードしました

駒場学部講義2017 「意識の神経科学:盲視・統合失調症・自由エネルギー原理」講義ハンドアウトをslideshareにアップロードしました。併せて生理研の講義資料ページもアップデートしております。

駒場学部講義2017 「意識の神経科学:盲視・統合失調症・自由エネルギー原理」 from Masatoshi Yoshida

毎度そうなのだけど、slideshareは日本語が化ける。調べてみたらMacのフォントに対応していないということで、しょうがないのでアップする資料だけMS Pゴシックに変換。印刷するものはヒラギノ角ゴ ProN W3を使用してます。

なんとか今やれと言われてもできる形にはなった。また明日見直して、マテリアルの分量調節する予定。


お勧めエントリ

  • 細胞外電極はなにを見ているか(1) 20080727 (2) リニューアル版 20081107
  • 総説 長期記憶の脳内メカニズム 20100909
  • 駒場講義2013 「意識の科学的研究 - 盲視を起点に」20130626
  • 駒場講義2012レジメ 意識と注意の脳内メカニズム(1) 注意 20121010 (2) 意識 20121011
  • 視覚、注意、言語で3*2の背側、腹側経路説 20140119
  • 脳科学辞典の項目書いた 「盲視」 20130407
  • 脳科学辞典の項目書いた 「気づき」 20130228
  • 脳科学辞典の項目書いた 「サリエンシー」 20121224
  • 脳科学辞典の項目書いた 「マイクロサッケード」 20121227
  • 盲視でおこる「なにかあるかんじ」 20110126
  • DKL色空間についてまとめ 20090113
  • 科学基礎論学会 秋の研究例会 ワークショップ「意識の神経科学と神経現象学」レジメ 20131102
  • ギャラガー&ザハヴィ『現象学的な心』合評会レジメ 20130628
  • Marrのrepresentationとprocessをベイトソン流に解釈する (1) 20100317 (2) 20100317
  • 半側空間無視と同名半盲とは区別できるか?(1) 20080220 (2) 半側空間無視の原因部位は? 20080221
  • MarrのVisionの最初と最後だけを読む 20071213

月別過去ログ