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

汎用行動選択モデルの3vs3対応 part06 学習バトル数と強さ【PokéAI】

モデルの強化学習におけるバトル数は、1vs1の時のパラメータを引き継いで10万に設定していました。3vs3ではそもそもバトル1回あたりのターン数が違うこと、学習すべき行動がより複雑であることから、この値が適切なのかどうか検証しました。

バトル数を10万より長くするにあたり、エージェントがランダムに行動する確率 \epsilonの減衰後の下限 \epsilon_{min}を新たにパラメータとして加えました。ステップ数 stepに対するランダム行動率 \epsilon(step)は、減衰率 \epsilon_{decay}を用いて \epsilon(step) = \max((1 - \epsilon_{decay})^{step} \epsilon, \epsilon_{min})と定義します。今回、 \epsilon=0.3, \epsilon_{decay} = 2 \times 10^{-6}, \epsilon_{min} = 0.01に設定しました。この場合、およそ50万ステップで \epsilon(step)が下限になります。なおバトル1回あたりの1エージェントの行動回数は平均20回程度で、バトルに参加する2プレイヤー両方の行動を学習サンプルとして用いるので、40ステップ分になります。すなわち1.25万バトルで下限に達するということです。

10000バトルごとにモデルを保存するようにして、50万バトルまで学習を進めてみました。 モデルIDは78eで、学習率は従来通り1e-5です。 バトル数1万、3万、10万、30万、50万の時点のモデルをレーティングバトルで比較しました。ランダムは弱すぎて細かい差を測るのに邪魔になると考えて外しました。

学習バトル数 平均レート
10000 1449
30000 1496
100000 1510
300000 1528
500000 1517

結果として、1万から10万にかけては大きな改善が見られる一方、それ以上は伸びが弱く、30万から50万にかけてはむしろ弱くなっています。 実験時間としては、10万バトルで24時間程度かかります。むやみに伸ばすのはコストのわりにメリットが少ないようなので、10万バトルを今後も標準のパラメータとして使おうと思います。