今回はマルチエージェント強化学習のReward Shaping手法の1つの
Difference Rewards について紹介します。
Difference Rewards
Difference Rewards はマルチエージェント強化学習の完全協調タスク における報酬形成手法の1つです。
Difference Rewardsではエージェント\(i\)の報酬は以下のようになります。
D_i \equiv G(\textbf{a}) – G(\textbf{a}_{-i})
\end{aligned}$$
通常のシステム全体の評価(Global Reward) \(G(\textbf{a})\)と
エージェント\(i\)の行動\(a_i\)を取り除いた\(G(\textbf{a}_{-i})\)との差分を報酬としてます。
このように差分を取ることで、エージェント\(i\)の行動\(a_i\)のシステム全体への 純粋な貢献度を計算することができます。
直感的にも、Difference Rewardsを使うことで
Global Reward\(G(\textbf{a})\)を向上させられそうなのはわかりますが、
単純にDifference Rewardsの行動\(a_i\)に対する勾配を求めると以下のようになります。
\frac{\partial D_i}{\partial a_i} &= \frac{\partial G(\textbf{a})}{\partial a_i} – \frac{\partial G(\textbf{a}_{-i})}{\partial a_i} \\
&= \frac{\partial G(\vec{a})}{\partial a_i}
\end{aligned}$$
つまり、Difference Rewardsを向上させることは、Global Reward\(G(\textbf{a})\)を向上させることと同等になります。
実験
評価用問題
前回紹介したGSDというマルチエージェントゲームを用いて、
Difference Rewards の評価を行います。
https://www.tcom242242.net/entry/2019/06/03/173802
今回はエージェント数10体、\(\mu\), \(\delta\)で実験してみます。 同じ設定で5回実験を行い平均で評価します。
プログラム
githubにあげました。
https://github.com/tocom242242/difference_rewards_sample
実験結果
横軸がepisode、縦軸がグローバル報酬を示しています。
Gが単純にGlobal Reward、DがDifference Rewardsを報酬として用いた時です。
Difference Rewardsのほうが単純にグローバル報酬によって学習するより、
適切に学習を進められていることがわかります。
課題
シンプルな問題を用いてDifference Rewardsによって良い性能を得ることを確認しました。
しかしながら、 実システムにおいて\(G(\vec{a}_{-i})\)を計算することは非常に困難です。
エージェント\(i\)の行動を考慮しない場合のシステム評価も毎度しなければならないためです。
この問題をいかに解決するかが重要になります。
コメント