強化学習のための「自由エネルギー原理」概論 #0

#はじめに：脳の最先端理論「自由エネルギー原理」
神経科学界隈で盛り上がっている「**自由エネルギー原理**」という脳の理論があります。
今は脳の理論に留まっていますが，数年後には**強化学習にガンガン使われる**ようになると信じているので，先取りして記事にしようと思います。
（この記事は強化学習系の人をターゲットに，数式をなるべく景色として見ながら理論全体をエクストリームに解説する読み物です。）

###簡単に説明すると…
【自由エネルギー原理（Free Energy Principle）】
脳は次に起こることを常に予測していて，予測と実際との誤差**「予測誤差」を最小化する**ように学習・推論を進めるという理論です（2005年～）。
そして，これをさらに進めて，**行動も（期待値的に）予測誤差を最小化するように選ぶ**と考えて定式化されたのが，最新の自由エネルギー原理になります（2015年～）。[^1]
上のただの推論に対比して，能動的な行動が入ってくるという意味で，**「Active Inference（能動的推論）」**とも呼ばれます。

知覚・認知・行動などを統一的に扱える万能な理論になると期待されています。
[^1]: 一時的に次の瞬間の予測誤差が大きくなるとしても，期待値的にG（期待自由エネルギー）が小さくなる方向に学習が進みます。

###何が嬉しいの？　～搾取と探索～
この原理では，報酬を求める方向と，探索を進める方向がバランスを取りつつ進むようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280275/a1710941-794f-c631-e56c-829596cb4e63.png)
強化学習では報酬（エサ）が密に存在しない場合ではうまく学習が進まないことがあります。
そういう場合にはエサに近づけるように探索的に行動していくことが必要です。
しかし，探索しすぎるとエサを食べる機会を失ってしまうかもしれないし，
かといって手近なエサばかり追い求めると，少し離れた場所にある大きなエサに気付かないかもしれません。
これを**「探索と搾取のトレードオフ（Exploration-Exploitation trade-off）」**と言います。

古典的な方法では，ε-greedy法などのようにハイパーパラメタの調整を行って，バランスを取ります。
近年は外部報酬以外に，curiosity（好奇心）という内部報酬を与えてあげて，報酬が少ない状況でもうまく探索が行えるようにしていこうという研究が出てきています。[^2]
[^2]: えるエルさんの「強化学習における好奇心」というスライドがとても参考になります。（https://speakerdeck.com/learn_learning3/qiang-hua-xue-xi-niokeruhao-qi-xin）
自由エネルギー原理では，**搾取の価値（予測が当たる価値）と探索の価値（予測が外れる価値）とが和の形**で自然に出てきて，このトレードオフを調整してくれることが期待されています。

1つの量（自由エネルギー）を最適化するという原理から，知覚や認知，そして最適な探索・搾取行動を説明することができるという点が，この原理の魅力です。
そんな**魅力的な自由エネルギー原理の世界へ，ご招待いたします！**

#はじめての自由エネルギー原理（理論編）
5つのSTEPで自由エネルギーの神髄にご案内いたします。
###1. 数学的にはKLダイバージェンスだけ覚えよう
予測と実際の2つの分布を近づけていくのが根幹になるので，分布の差を表す尺度を導入しましょう。
「けいえるだいばぁじぇんす！！」ﾄﾞﾄﾞﾝ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280275/b0d22ca5-93fd-2c89-88f8-aff392ca44c6.png)
数式が出てきましたが脱落しないでください！まだ難しくないです！
1つずつペアで比を取って，その対数を計算して，最後に確率で重みづけて和を取るだけです。

###2. ベイズの定理を理解しよう
自由エネルギー原理はベイズ理論を元にしています。
簡単に言うと，何らかの値を点推定するのではなく，**分布で予測・推定**していこうという話です。
自信がある推定なら，シャープな分布に，自信のない推定なら，ぼやけた分布になります。

このような分布での予測を行う公式が，**「ベイズの定理」**です。

外界の状態 s* があった時に，我々は直接 s* を観測することはできず，
観測 o を得ることで，外界の真の s* の推定値 s を求めます。
求めたいものは，
・**事後分布** 今 o を得たもとで，外界が s である確率がどのくらいあるかの分布。
です。求めるために必要な情報は2つです。
・**事前分布** そもそも状態が s であることがどのくらい予測されるか。
・**尤度** 仮に s の状態が起きたもとで o だったことがどのくらいあるか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280275/04c56875-3b37-c247-9f8a-e131d375e662.png)
数式はただの，条件付き確率の公式なので怖がらなくて大丈夫です。
尤度のsとoをクルっとひっくり返す公式なので，「逆確率」とも呼ばれます。
問題は，分母のp(o)を求めるのが難しい場合が多い点です。
このため，直接，事後分布 P(s|o)が求まらない場合が多いです。

ということで，事後分布 P(s|o) の求め方を変えます。

###3. 脳内の分布を，真の分布に近づけていく
直接求められないなら，じわじわ形を変えていって事後分布 P(s|o) に近いものを求めよう！
という考え方を**「変分ベイズ」**と言います。
とはいえP(s|o)は形が不明なので，代わりに別のものを使います。
分布Q(s)を新しく用意してあげて，事前分布P(s)と尤度P(o|s)をかけて得られる，同時分布P(s,o)に近づけていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280275/cce19d98-7e58-d310-2df0-ca57995e7d93.png)
**分布の差**を求めるためには？　そうKLダイバージェンスですね。
ということで，Q(s)とP(s,o)の近さを評価する尺度として，**自由エネルギー F**という名前でKLダイバージェンスを導入します[^4]。
[^4]: 物理の統計力学における「自由エネルギー」と数学的に等価であるためこういう名前がついている。（かといって，統計力学を勉強しても自由エネルギー原理の分かりづらさは何ともならなかったので，統計力学をこのために勉強するのはおすすめできない）
このFが最小になった時，Q(s)は事後分布P(s|o)に最も近づいていることが証明できます（証明略）。
だから，**自由エネルギーFを最小化するように，分布Qの形をグニャグニャ変えていこう**。
これが自由エネルギー原理の根幹です。

###4. 未来は分からない。だから期待値を取ろう
上のやり方で，時間が止まっている場合の推定はできます。
しかし，強化学習のように，時間が刻一刻と変わっていく場合は，式を変えてあげる必要があります。
さて，時間は離散的にマルコフ過程で扱います。
ある時刻tにおいて，どのような行動をすれば未来の自由エネルギーが小さくなるかを計算していけばよいわけです。

ただ，ここで問題があります。単純に，**未来の観測 $o_{t+1}$はまだ得ていない**のです。
そこで，考えうる観測 $o_{t+1}$について期待値を取ってあげましょう。
自由エネルギーFを，観測 $o_{t+1}$について期待値を取ったものを，**「期待自由エネルギー G」**といいます。
まず，ありうる観測について，[ ]の中身を計算していきます。
そして，$s_{t+1}$の状態の時に，ある$o_{t+1}$が得られる確率 $Q(o_{t+1}|s_{t+1})$を考えて，
全てのありうる観測 $o_{t+1}$について期待値を取ります。
ゴリゴリ計算を進めると，2つのマイナスの項に分かれるので，全体にマイナスをかけてあげるとこのような式になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280275/9b9d4161-3ddb-1e86-69a4-4e8afd962146.png)

さぁ！！謎の**2つの項**が出てきました！結論はもうすぐです。

###5. 2つの価値。Extrinsic価値とEpistemic価値
負の期待自由エネルギー -G の分割によって出てきた謎の2つの項。
-G は最大化すべき量なので，この2つの項も大きくしたい量です。
これが強化学習としての大きな意味を持っています。

**1つめのExtrinsic価値**は簡単です。
事前の選好が大きくなるような観測 $o_{t+1}$が来るほど，Extrinsic価値も大きくなります。
つまり，これは報酬を搾取することの価値だと思ってよいです。
ざっくり言うと，ゴールに一直線に進んでいくモチベーションです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280275/b3313308-e126-a837-f24d-1029093bc09b.png)

**2つめのEpistemic価値**が少し難解ですが見てみましょう。
Epistemic価値は，よく見てみるとKLダイバージェンスの期待値の形をしています。
そして，KLダイバージェンスは，$Q(s_{t+1})$ と $Q(s_{t+1}|o_{t+1})$の分布の差という形になっています。
これは，「$o_{t+1}$を得た時にどのくらい分布が変わるか」を表しています。
そしてこの値の期待値が，Epistemic価値になっています。
つまり，**「次の時刻にどの程度分布が変わりそうに思えるか」**を表しているわけです。
ざっくり言うと，次の時刻の観測へのワクワク感や，新奇性探究のモチベーションがこちらの価値になります。

例を用いて，やってみましょう。
次に取りうる観測が，■，●，▲の3パターンである時，
仮にそれぞれの観測を得るとどのように分布が変わるかを計算していきます。
そして，観測を得る前の分布$Q(s_{t+1})$ と観測を得た後の分布 $Q(s_{t+1}|o_{t+1})$ の間のKLダイバージェンスを計算して，
確率の重みを付けて和を取ります。
この前と後のKLダイバージェンスは，新しく得られる情報の大きさを表すので，「**情報利得**」とも呼ばれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280275/ca022649-2eac-70d9-393b-c51a7eb73581.png)


上記では行動の変数を省略しましたが，この**「Extrinsic価値＋Epistemic価値」**が行動ごとに得られてくるようになります。
報酬が得られそうな行動をするほど，Extrinsic価値は大きくなりますが，Epistemic価値は必ずしも大きくなるとは限りません。
一方，**今までに探索したことのないものを探索**するほど分布が変わるため，**Epistemic価値は大きく**なりますが，報酬が得られるとは限らないのでExtrinsic価値は小さくなるかもしれません。
つまり，Extrinsic価値とEpistemic価値もトレードオフ関係にあるわけです。
その2つの価値が和の形になっているのが，最適化すべき量 -G なのです。

-G を最適化することにより，**報酬搾取と探索のバランスを和の形で取るのが，自由エネルギー原理のActive Inference**になります。

#どうやって強化学習する？（アルゴリズム編）
ここはまだ勉強中なのと，最先端でも研究が進んでいるところなので，軽めに書きます。
###遷移行列を考える
離散的な状態で考える時には，上記の分布は，行列に置き換わります。
例えば，$P(o|s)$ は，(考えうるsの数)×(考えうるoの数)の行列で表されます。
また，状態から状態への遷移も $P(s_{t+1}|s_t)$ という遷移行列で表されます。

###行動ごとの ｰG のソフトマックスを取る
行動 u ごとに -G を求めた後，ソフトマックス関数を取ります。[^5]
ソフトマックスの確率に合わせて，実際の行動をサンプリングします。
[^5]: 厳密には，制御状態uと行動aは少し違うのですが，ここでは分かりやすさを優先しました。
すると，-G が大きい行動は確率的に選ばれやすく，-G が小さい行動は選ばれにくくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280275/8f7d32c7-c17f-4d88-7c7b-8b601487ffdc.png)

###行動を系列にする
1手先を決めるだけなら，上記の方法でよいのですが，さらに数手先までを考慮して求める場合には，
行動uを系列にしてあげる必要があります。
行動の系列のことを**policy** $\pi$ と呼びます。
これを用いて，トータルのGを求めてあげます。
最後は同じように，-G のソフトマックスを取って，取るべきpolicyを決定すればよいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280275/3c05c19b-eb86-4ff8-cada-37bbf0bf2eab.png)
この方法があることによって，一次的に$G_\tau$が大きくなってしまうとしても，全体として G を最小化する方向に学習が進むようになります。

#おわりに：今後の発展性　～搾取と探索とデライト～
自由エネルギー原理の嬉しさとして，「報酬を求める方向と，探索を進める方向がバランスを取りつつ進む」という点を挙げました。
従来の強化学習は報酬を元に学習するというものでした。
一方，最近では，外在的な報酬を一切与えずに，**curiosityという内的な報酬のみ**を用いて，マリオなどのゲームが解けたという研究も出てきています（Pathak+ 2017）。
https://www.youtube.com/watch?v=J3FHOyhUn3A
報酬がどこにあるか未知な状況では，行動してから報酬が得られるまで時間差があることも多いので，「学習が進む方へ」「まだ見たことがない方へ」という行動原理はうなずけるものです。

しかし，なかなか難しいのが，外在する報酬と，探索への内的な報酬のバランスをどう取るかという問題です。
これは今まさに研究が進んでいるところです。
そして，自由エネルギー原理では，「自由エネルギーを小さくする」という**1本の式の中から，外的報酬と内的報酬の2つが出てくる**点が魅力的です。[^6]
そのため，-G を小さくすればバランスを取りながら，全体最適化がなされます。

この2つの価値が出てくるため，実はこの理論，**音楽の科学の分野**でも注目されています（私の専門はここ）。[^3]
[^3]: 音楽とActive Inferenceの関係についての論文。Koelsch+ (2018) https://www.cell.com/trends/cognitive-sciences/fulltext/S1364-6613(18)30254-7
音楽で心が動く瞬間は，予測していた音から少し外れる瞬間だったりします。
予測が当たるのみならず，予測が外れて”**嬉しい裏切り**”が起こる瞬間の価値を，この「探索の価値」で説明できるのではないか，と。
これは音楽に限りません。
スポーツ・ゲームでも，勝つのが分かっている試合じゃつまらなくて，刻一刻次の瞬間の予測が変わっていくハラハラが楽しいものです。
生きるのに役立つ報酬を求めるだけでなく，好奇心が働いて，生きるには一見不要かもしれないけれどエンタメを楽しんだりもします。

そんな**デライト**を説明できるかもしれない発展性が自由エネルギー原理にはあります！

さて，自由エネルギー原理の入門として書きました。
来るべき「自由エネルギー駆動強化学習」の時代に向けて，参考になれば幸いです。
応用としての利益の搾取と，科学としての探索の面白さとが期待される「自由エネルギー原理」，
**ぜひ一緒に勉強していきましょう！！**

[^6]: ここは議論のある部分でもあります。$P(o_{t+1})$ を事前の選好とするのはどうなんだ？　$P(o_{t+1})$ に恣意性が入るのはいいのか？　というツッコミがあります。強化学習としての報酬を入れるためには，事前の選好としての読み替えが必要になってしまうのですが，ここも理論の進歩が待たれる部分です。

#もっと勉強したい方のための参考文献
[入門書]
生理研の吉田正俊先生の資料がとても分かりやすいです。
http://pooneil.sakura.ne.jp/EFE_secALL0517.pdf

日本語資料はまだ充実していないので，英語が大丈夫な方は，こちらも。
今回紹介した「Active Inference（能動的推論）」の内容の入門にぴったりです。
https://medium.com/@solopchuk/tutorial-on-active-inference-30edcf50f5dc

[最新論文]
Active inferenceを強化学習に適用してシミュレーションするアルゴリズムと，その成績について検討されています。
目的指向性（goal-directed）と情報探索（information seeking）の間のバランスが取られることを示しています。
Epistemic価値とExtrinsic(Instrumental)価値を分けて検討した内容になっています。
https://www.biorxiv.org/content/10.1101/764969v1

[数学的に必要な知識]
自由エネルギー原理は様々な数学の上に成り立っています。
・ベイズの定理
・変分ベイズ
・マルコフ決定過程（MDP）
・部分観測マルコフ決定過程（POMDP）
この辺を勉強するとすんなり理解できるようになってくるかなと思いますので参考までに。