機械学習周りのプログラミング中心。 イベント情報
ポケモンバトルAI本電子書籍通販中

汎用行動選択モデルの3vs3対応 part05 補助報酬の調整【PokéAI】

前回エージェントの強化学習に対して、バトル途中でのHPの増減などに応じた補助報酬を導入し、定量的には強さが向上することを確認しました。 今回は、補助報酬の大きさなどを調整してさらに強くできないか実験します。あらかじめ結果を述べると、前回のパラメータが最善でした。

まずは、 \lambda_H (HPに対する報酬の係数),  \lambda_A (瀕死に対する報酬の係数)を同じ値にする条件で、いくつかの値を試しました。

表に示す5通りの条件のモデルを学習(1つはランダム)、レーティングバトルさせ、平均レートを計算しました。

 \lambda_H, \lambda_A モデルID 平均レート
- ランダム 1306
0, 0 6ee 1533
0.125, 0.125 75f 1540
0.25, 0.25 fdf 1563
0.5, 0.5 29c 1559

前回のパラメータである、 \lambda_H, \lambda_A = 0.25, 0.25が最も強いという結果でした。 \lambda_H, \lambda_A = 0.5, 0.5とは僅差です。

次に、パラメータのバランスを変えた場合で比較しました。

 \lambda_H, \lambda_A モデルID 平均レート
- ランダム 1308
0.125, 0.125 75f 1538
0.25, 0.25 fdf 1566
0.5, 0 c69 1558
0, 0.5 1da 1527

この実験でも、 \lambda_H, \lambda_A = 0.25, 0.25が最も強いという結果でした。 \lambda_H, \lambda_A = 0.5, 0のほうが \lambda_H, \lambda_A = 0, 0.5より強いことも分かります。この理由として、HPを基準にするほうがより短い期間で報酬が得られるため学習しやすいという点が考えられます。

さらに、補助報酬のアルゴリズムを変更したものを2つ試しました。1つ目は、相手に関する値だけを計算に含めるものです。すなわち、 H_f(t)=0, A_f(t)=0とします。自分のポケモンのHPが減っているときに、倒されて負の報酬を受けるのを回避するために無駄に交代するという挙動を避ける目的です。

アルゴリズム モデルID 平均レート
- ランダム 1334
変更前 fdf 1588
相手状態のみの補助報酬 924 1578

変更しないのが良いことがわかりました。2つ目のアルゴリズムは、ゲーム終了時に今までの補助報酬を打ち消す補助報酬を与えるものです。すなわち、バトル終了時の報酬として、勝敗によるものに過去ターンの補助報酬の総和の符号を反転させたものを加算します。目的は、僅差で勝利した場合も圧勝した場合もバトル全体での合計の報酬を同じにすることにより、被害の大きさにかかわらず勝敗に注力させることです。

アルゴリズム モデルID 平均レート
- ランダム 1335
変更前 fdf 1584
補助報酬の打ち消し 412 1581

この手法は、結果にほとんど影響がないようでした。

補助報酬の調整を試みましたが、今回試した範囲ではオリジナルの手法より良い結果は得られませんでした。今後、他の側面から改善を試みます。