とある大学生の勉強メモ

Python, C#, UWP, WPF, 心理実験関連の開発備忘録

ベイジアン意志決定モデルに関して Bayesian Decision Models

せっかくベイジアンの(意志)決定モデルに関してお勉強したので,ブログで残しておきます.
内容を文章でまとめると,”被験者の意志決定をベイズ則を用いてモデル化することで,統計よりも解析で言えることが明確だよ”ということだと思う.
勉強したのは↓↓
www.sciencedirect.com
事前知識として,事前確率,事後確率,ベイズ則など分かっていると良いと思います.
本エントリを読破後,きっとベイジアンのビギナーになれると思います,知らんけど.

4つのステップ

本稿で説明するベイジアン決定モデルを用いた解析では,4つのステップを踏めばよいとのこと.
4つです.それぞれ順を追ってみていきましょう.
ここではまずおおまかな概要を述べ,後から具体的な実験で,実際に4つのステップを踏んでいこう思います.

Step 1 : Generative Model(モデルを作ろう)

何はともあれ,モデルを作りましょう.
実験環境sに対して,被験者の意志決定xとし,p(x|s)の分布を考えます.
p(x|s)というのは,何かの実験コンテクストsに対して,xが観測される分布のことです.

Step 2 : Inference (ベイズ則を用いるぞい)

ベイジアンモデルで重要なことは,被験者(意志決定者)がp(x|s)を学習していき,更新するということです.
そこで,本実験前に既に定まった結果を持つx_{trial}を被験者に与えましょう.
ベイズ則より,
    p(s|x_{trial}) = \frac{p(x_{trial}|s)*p(s)}{p(x_{trial})}
上式に於いて,
p(s):事前確率(意志決定者の信念に依存)
p(x_{trial}|s):尤度関数(sが与えられた時のx_{trial}の尤もらしさ)
p(s|x_{trial}):sの事前分布
p(x_{trial}):事前に決められた定数

Step 3: Taking an Action (実際にやってみた)

実際に実験を行い,その反応を見ることです.
アクションaはコスト関数C(s,a)で定義されます.
コスト関数の期待値は,
E(C(a)) = \sum_{s} p(s|x_{trial})*C(s,a)
このコストを最小化するように,被験者意志決定をします.
(コストの期待値は,全ての環境sにおける,それぞれのコストと確率の乗算の合計)
(コストっていうのは,例えば反応速度の実験なら,時間などになるかと思います.)

Step 4 : Response(アクションをそれぞれの結果に適用)

事前分布と事後計算により,ベイジアンモデルが完成しました.
最後の段階として,モデル作成者(解析側)は,それをもう一度チェックし直しましょう.
それからベイジアンモデルでのパラメータ(感覚ノイズ,経過率,誤った信念パラメータ)などを決定します.

実際にトレーニン

4つのステップはなんとなく分かったけど,実際の実験でどのように使えばよいか,正直分かりません.
ということで,実際に実験を考えてみて,どのようにベイジアンモデルを適用するか見ていきましょう.

実験(音源位置の推定)

変数の次元が分かりやすいように単位をつけて説明します.
ある線上に音源を設置し,その点から広がる音を観測して,音源がライン上のどこにあるのかを推定させるという実験を行う.

Step1 モデル生成

ライン上のs[cm]のところに,音源を設置する.音源は各試行ごとにランダムに設置されるp(s)
(ランダムというのは厄介な代物で,本当にランダムなのかは評価しづらいですが,とりまランダムと使わせて頂きます.)
どこに音源が設置されるのかという分布p(s)は,平均μ標準偏差σ_{s}ガウス分布になるので,

  p(s) = \displaystyle \frac{1}{\sqrt{2πσ^{2}_{s}}}exp(-\frac{(s-μ)^{2}}{\sqrt{2σ^{2}_{s}}})

これに対して,被験者がライン上のどこにあるのかx[cm]を回答します.
s[cm]という実験環境に対して,どこにあるのかと回答する分布がp(x|s)です.
ここで,音にはどうしても周辺音のノイズが入ってしまいます.この環境ノイズをσとすると,

  p(s) = \displaystyle \frac{1}{\sqrt{2πσ^{2}}}exp(-\frac{(x-s)^{2}}{\sqrt{2σ^{2}}})

これを図1A.Bに示します.
f:id:amakazeryu:20191115113610p:plain

Step2 推論

x_{trial}で学習すると,次の刺激の際に,どこで鳴っているのか?ということを予想することができる(事前分布p(s) )
このp(s) は生成モデルとは異なり,被験者の意志が反映されているわけです.
x_{trial}に基づいたL(s)は尤度関数です.sの関数であることに注意しましょう.

f:id:amakazeryu:20191202170011p:plain

事後分布はp(s|x_{trial})であり,ベイズ則より

p(s|x_{trial}) ∝  p(x_{trial}|s)*p(s) = L(s)*p(s)

比例記号を用いられるのは,1/p(x_{trial})が定数になるからです.
上式は未知刺激sの取り得る値の確率を表している.
事後分布は,事前分布に尤度関数を乗算することで求められる.

次の記事で,実際にモデルを適用させ,最後に評価するという所まで行きたいと思います.
今回は一旦ここまで,お疲れ様でした.