モデルベース解析
(ページのアップグレードに伴い,添付ファイルへのリンクが切れているところがあるかもしれません。添付ファイル自体はページ末尾にリンクがあります。)
ここでは行動データのモデルベース解析に関する資料,ソースコードを公開します。資料の内容や,ソースコードは十分な検証ができていないものもあります。したがって内容やプログラムの動作については保証はできませんので,使用の際は各自の責任でお願いいたします。
このページの内容の一部をまとめ,加筆した本を出版しています→「行動データの計算論モデリング―強化学習モデルを例として―」(価格が高くてすみません)。この本が出せたのも,ご支援くださった皆様のおかげです。ありがとうございます。
このページもそのまま維持し,気づいた点は修正していきますが,上記の本のサポートサイトに掲載している情報もありますので,そちらもご参照ください。
強化学習モデルを用いたモデルベース解析の基礎
強化学習モデルを用いたモデルベース解析についての解説です。基礎的な知識と,R, Python, Matlabを用いた実装法について解説をしています。
モデルベース解析に用いられるモデル,その解釈について
強化学習モデルの学習率α,逆温度 (探索傾向) β, 報酬価値等のパラメータが実際の選択行動とどのように関係するかということについて議論しています。回帰モデル (ロジスティック回帰) による選択行動の履歴依存性の解析についても紹介し,Q学習モデルとの関係についても議論しています。 本稿の内容の一部は Katahira, J. Math. Psychol., 2015に基づいています。
学習のモデルとしてのカルマンフィルタ [Rコード]
-Daw et al. (2006) を例としながら,学習のベイズモデルとしてのカルマンフィルタについて解説しています。モデルベース解析の話題からは少し外れますが,Kruschke (2008) 等で議論されている,カルマンフィルタによる古典的条件づけについての現象 (潜在制止と逆行阻止) の説明もしています。
Q学習とアクター・クリティック学習
- 二つの代表的な強化学習のアルゴリズムについて,相違点を解説しています。モデルベース強化学習とモデルフリー強化学習 ('17/08/14一部修正)
Daw et al. (2011) 等のモデルベース強化学習の枠組みについて解説しています。
「気分」の効果を持つ強化学習モデル (Eldar & Niv, 2015)
(エモーション・スタディーズ3 巻 (2017) 1 号に解説記事が掲載されています)
[Rコード: RLmood_functions.R, RLmood_simulation.R (2つのコードは同一ディレクトリに置いてください。
RLmood_simulation.Rを実行するとシミュレーションが実行されます。)
モデル選択について
モデル選択とその計算方法 ―点推定編― (2018/4/16 一部修正,加筆)
最尤推定をベースとしたモデル選択法について簡単に解説しています。具体的には,AIC, BIC, 尤度比検定,ベイズファクター等について。
モデルベース解析におけるパラメータ推定について
複数の被験者からなる集団のデータに対しモデルベース解析を行う際の方法について。
以下の内容について紹介します。
固定効果分析,個人レベル分析
事後確率最大化 (MAP) 推定
階層モデル
経験ベイズ法 (EMアルゴリズム + ラプラス近似)
⇒ (2017/12/22追記: この経験ベイズ法は実装がやや大変で,収束が遅いようです。
まずは以下の資料でも解説している,MCMC法を用いた階層ベイズ法を試してみることをお勧めします。
Stanを使えば実装もこちらの方がずっと楽です。)
Stanを用いたMCMCによる推定の実装については,R と Stan による強化学習モデルベース解析 [Rコード] も参照してください。
最尤推定やMAP推定に用いる非線形最適化関数
モデルベース解析Q & A - いただくことの多い質問への回答をいくつか記しておきたいと思います。
Q1. モデルベース解析をするには,試行数はどのくらい必要でしょうか?
A. モデルのパラメータ数や構造,そして実験課題の構造にも強く依存しますが,
一般的な目安としては,少なくとも80試行以上はあるのが望ましいと思います。そして多いに越したことはないですが,実験参加者の負担等の制約も考慮して決めていく必要があると思います。可能であれば,想定しているモデルと実際に用いる実験課題でシミュレーションをし,そのデータをもとにパラメータ推定をしてみるとだいたいの推定精度の見通しを立てるのに役立ちます。
Q2. パラメータが極端な値になってしまいます。(学習率αがマイナスになったり,1以上になったり,逆温度βが非常に大きい値になったり)
A. 学習率のように定義域が決まっているパラメータについては,探索範囲を制限するとよいと思います。
最適化関数にはオプションで探索範囲を制限できるものも多いです。Rのoptimであれば,lower, upperというオプションで指定できます。
上記のサンプルコードにもif (False) {...} と無効化されている部分にそれが記述されています。
Matlabだとfminserchでは探索範囲の指定ができませんが,fminconであればそれが可能です。詳細は各関数のマニュアルをご覧ください。
また,値を制限すると,学習率が0や1.0にへばりついてしまう場合が多くあります。
この問題については,各パラメータに事前分布を課してベイズ事後確率最大化推定 (MAP推定) を行う方法や,階層モデルを用いる方法があります。詳しくは,集団データに対するパラメータ推定についてをご覧ください。また,それらの方法の妥当性については,片平のKatahira (2016)で議論していますのでご参照ください。推奨される事前分布については,Gershman (2016) も参考になります。
その他
被験者群間の比較方法 →こちらは上述の書籍で解説しているので,そちらをご覧ください。
Copyright (C) 2018 Kentaro Katahira, All rights reserved.
本ページに掲載されている資料の再配布は禁止します。