前回記事 (Jakob N. Foerster et al. Counterfactual Multi-Agent Policy Gradient, AAAI2018. (1/N))
今回はCOMAのやりたいことを述べる.
N体のエージェントについて考える. 素朴な方法として各$i\in{ 1, \ldots, N }$番目のエージェントの方策勾配を一律
G = \nabla_{\theta}\log \pi_{\theta}(a_{t} | s^{i}_t) \left( Q(s_{t}, a_{t}) - V\left( s_t \right) \right)
と定めたとする. ここで, $s_{t}$と$a_t$はそれぞれ全エージェントのjoint stateとjoint actionであり, $r_t$は全エージェント共通のrewardとする.
これだとそのエージェントの行動がどれくらい全体の報酬に貢献したかうまく推論しづらい ("Credit Assignment"). 他のエージェントがうまい方策を探索している最中だと, $G$はノイジーになり, 自分の方策をうまく改善できない.
提案手法
学習を"安定"させるためにアドバンテージ関数を工夫しなければいけないというのが出発点である. ベースライン関数を変更する. 直観的には, 「ほかのエージェントがそのままの行動を取った時に自分(エージェント$i$)の今の方策はどれくらい良いか」が知りたいのだ. COMAはこの直観を以下のアドバンテージ関数を構築することで知ろうとする.
A^{i}(s, a) = Q(s, a) - \sum_{u_{i} \in \mathcal{A}} \pi_{\theta}(u_{i} | \tau_{i}) Q(s, (\boldsymbol{u}^{- i}, u_{i}))
ここで$u_{i}$はエージェント$i$の行動, $\boldsymbol{u}^{-i}$はエージェント$i$以外の行動を固定した時の行動ベクトル, $\tau_{i}$はエージェント$i$の行動・観測履歴である.
次回
次回は簡単な実験を通して実装を見ていく.