QMIXのメモと実装:Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning

マルチエージェント深層強化学習手法の1つであるQMIXについてちょっと調査しましたので、メモしておきます。

一応実装してみたのですが、まだTwo State Game上でしかテストできてません。

QMixとは

  • QMixはcentralized training with decentralized execution (CTDE)の一種。つまり、行動選択自体は各々のネットワークで行うが、学習自体はすべてのエージェントの情報を用いて行う
  • 各々のエージェントのQネットワークを\(Q_a\),\(Q_a\)を使って中央で学習するネットワークを\(Q_{tot}\)とする
  • QMIXでは、\(Q_a\), \(Q_{tot}\)が以下のような関係であることを仮定する。
  • つまり、\(Q_a\)を向上させると\(Q_{tot}\)も向上する。なので、\(Q_{tot}\)を最大化する行動の組み合わせは、

QMIXのネットワークは以下のようになります。

QMIXのネットワーク
出典:https://arxiv.org/pdf/1803.11485.pdf

各エージェントが各々のネットワークを保持しており、各エージェントはここから得られたQ値を使って行動選択を行います。
学習は各エージェントのネットワークから得られた\(Q_{a}\)と状態\(s_t\)を入力としたMixing Networkを使って学習を行います。Mixing Networkは内部でhyper networkを使っています。
最小化したい関数は以下のようになります。

誤差関数
出典:https://arxiv.org/pdf/1803.11485.pdf

QMIXの実装(Two State Game)

QMIXをtensorflow2で実装してみました。
https://github.com/tocom242242/qmix_tf2

ちなみに本家のソースコードも公開されています。
https://github.com/oxwhirl/pymarl

まだ、Two State Gameでしか実験できてません。(計算機が貧弱なので、いつできるかもう少し複雑な問題でテストできるかわかりません・・・)

ちなみに、実験結果は以下のようになりました。参考文献と同じような結果にはなっていました。

左がepisodeの報酬(最大が8)、左が\(Q_{tot}\)の学習時の誤差の推移になります。

参考文献

https://arxiv.org/pdf/1803.11485.pdf

コメント

タイトルとURLをコピーしました