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

汎用行動選択モデルの学習 part07 DQNの学習結果【PokéAI】

前回、汎用行動選択モデルを強化学習させるシステムを実装しました。今回はその結果を評価します。

学習条件

強化学習関係のデフォルトの学習条件は以下のように設定しました。

  • アルゴリズム: DQN (double DQN)
  • 探索: epsilon-greedy
    • ランダム行動する確率epsilon: 0.3 (定数)
  • 報酬割引率: 0.95
  • バッチサイズ: 32
  • 最初に学習するまでのステップ数(replay bufferのサンプル数): 500
  • Nサンプル収集するたびにoptimize: 1
  • N optimizeごとにtarget networkのアップデート: 100
  • replay bufferサイズ: 100,000

2種類の条件をで強化学習を行いました。各種IDにはわかりやすいように1,2,3のような番号を振りたいところなのですが、後続の記事との一貫性をとるのが難しいためデータベース上のIDを用いることにします。

  • エージェント 7cf
    • モデル: 3層16チャンネル
    • パーティ群 good_200614_1 (パーティ数100)
      • バトルごとに、100パーティから2パーティをランダムに選択し自己対戦
    • 対戦数 10,000
  • エージェント 93d
    • モデル: 3層64チャンネル
    • パーティ群 good_200614_2 (パーティ数 1,000)
    • 対戦数 100,000

教師あり学習したモデルを同じフォーマットに変換したものはエージェント 316として表します。3層16チャンネルモデルで、900パーティ分の行動記録から学習しています。

定性評価

強化学習モデル、教師あり学習モデルおよびランダムに行動するプレイヤーを混合してレーティングバトルを行いました。

ランダムに生成したパーティ群を用意し、全エージェント・パーティの組み合わせをそれぞれプレイヤーと呼ぶことにします。例えばエージェント1,2,3とパーティA,Bがあるとき、プレイヤー1はモデル1がパーティAを操作、プレイヤー2はモデル1がパーティBを操作、プレイヤー3はモデル2がパーティAを操作、というように6人のプレイヤーがバトルに参加します。各プレイヤーは暫定レート(イロレーティング)を持ち、レートが近いもの同士を選択して対戦させることで各プレイヤーのレートを収束させます。1プレイヤーあたり100回対戦を行います。

まずは教師あり学習と同じ構造のモデルを評価します。エージェントに操作させるパーティ群はgood_200614_1で、強化学習の際に用いたのと同じパーティ群です。3エージェント、100パーティの全組み合わせで合計300プレイヤーがバトルに参加することになります。

各エージェントが操作したプレイヤーの平均レートを示します。

エージェント 平均レート
ランダム 1403
316(教師あり) 1553
7cf(強化学習) 1544

残念ながら、教師あり学習のほうが強いという結果になりました。

パーティ群を同じ条件で別途ランダムに生成したgood_200614_3を用いて試しました。

エージェント 平均レート
ランダム 1422
316(教師あり) 1565
7cf(強化学習) 1513

さらに教師ありと強化学習の差が開きました。任意のパーティを操作できるようにモデルを学習しようとしているとはいえ、学習に使ったパーティのほうが他のパーティよりうまく操作できる傾向がみられます。

よりパラメータ数・バトル数を増やしたエージェントも評価しました。パーティ群はgood_200614_3です。

エージェント 平均レート
ランダム 1413
316(教師あり) 1555
93d(強化学習) 1532

教師あり学習との差は縮まりましたが、まだ同等性能を達成できたとは言えません。 モデル構造は同じなので、学習方法の改善で解決するのが理想です。

定性評価

Trainer 7cfだけで対戦させてレーティングおよびバトルログを観察します。

上位下位パーティ10個を示します。レートの下にパーティ構成(1匹のみ)が続きます。

1882
カビゴン,55,,じしん,のしかかり,どろかけ,ソーラービーム
1843
ミルタンク,55,,かいりき,じしん,でんじほう,のしかかり
1828
ファイヤー,55,,おんがえし,かげぶんしん,だいもんじ,はかいこうせん
1744
マタドガス,55,,かえんほうしゃ,はかいこうせん,かげぶんしん,ヘドロばくだん
1733
フリーザー,55,,どろかけ,れいとうビーム,すなあらし,とっしん
1725
ハッサム,55,,ロケットずつき,いわくだき,かげぶんしん,おんがえし
1704
ムウマ,55,,おんがえし,スピードスター,サイコキネシス,かげぶんしん
1701
ギャラドス,55,,いわくだき,ハイドロポンプ,なみのり,のしかかり
1699
フリーザー,55,,ふぶき,かげぶんしん,はがねのつばさ,すてみタックル
1691
ケンタロス,55,,すてみタックル,かえんほうしゃ,いわくだき,かいりき
931
エイパム,55,,でんじほう,10まんボルト,いわくだき,どくどく
1168
ヤンヤンマ,55,,スピードスター,はがねのつばさ,ソーラービーム,つばさでうつ
1217
スピアー,55,,ロケットずつき,ギガドレイン,スピードスター,はかいこうせん
1229
ダグトリオ,55,,すてみタックル,とっしん,ヘドロばくだん,はかいこうせん
1249
バリヤード,55,,どろかけ,ずつき,ロケットずつき,10まんボルト
1266
ヤミカラス,55,,かげぶんしん,つばさでうつ,スピードスター,ゴッドバード
1271
ヘルガー,55,,かげぶんしん,どろかけ,いわくだき,スピードスター
1303
スピアー,55,,どくどく,とっしん,ロケットずつき,ギガドレイン
1305
フーディン,55,,ばくれつパンチ,とっしん,すてみタックル,おんがえし
1306
ルージュラ,55,,すてみタックル,はなびらのまい,はかいこうせん,どろかけ

上位にはカビゴンをはじめとした有力なポケモンが来ています。あくまでランダム生成なので技構成が完璧というわけではありませんが、各ポケモンにそれなりにあった技を所持しています。最下位はエイパムでした。エイパムの特攻種族値は40で、特殊電気技は全くマッチしません。いわくだきも威力20で話になりません。ポケモンと技のミスマッチが生じているパーティが下位に来ていることが見て取れます。

最上位だったカビゴンのバトル中の行動を定性的に確認します。

相手 サンダース HP187/187
自分 カビゴン HP292/292
じしん のしかかり どろかけ ソーラービーム
選択=> じしん

相手 サンダース HP52/187
自分 カビゴン HP207/292
じしん のしかかり どろかけ ソーラービーム
選択=> じしん
相手 ニョロトノ HP215/215
自分 カビゴン HP292/292
じしん のしかかり どろかけ ソーラービーム
選択=> じしん

相手 ニョロトノ HP160/215
自分 カビゴン HP255/292
じしん のしかかり どろかけ ソーラービーム
選択=> じしん

相手 ニョロトノ HP100/215
自分 カビゴン HP177/292
じしん のしかかり どろかけ ソーラービーム
選択=> じしん

相手 ニョロトノ HP43/215
自分 カビゴン HP137/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

原則的にじしんを使い、相手のHPが減っているとのしかかりを使うのでしょうか?タイプ一致を踏まえるとのしかかりのほうが威力が大きいため、本来はのしかかりをメインに使うのが正解と思われます。

相手 モンジャラ HP187/187
自分 カビゴン HP292/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

相手 モンジャラ HP135/187
自分 カビゴン HP262/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

相手 モンジャラ HP77/187 par
自分 カビゴン HP235/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

相手 モンジャラ HP24/187 par
自分 カビゴン HP235/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

じしんがいまひとつの相手(草タイプ)にはのしかかりを使っています。

相手 クロバット HP209/209
自分 カビゴン HP292/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

相手 クロバット HP135/209 par
自分 カビゴン HP239/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

相手 クロバット HP67/209 par
自分 カビゴン HP239/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

相手 クロバット HP67/209 par
自分 カビゴン HP239/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

じしんが無効の相手(飛行タイプ)にものしかかりを使えています。

相手 ガラガラ HP182/182
自分 カビゴン HP292/292
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

相手 ガラガラ HP152/182
自分 カビゴン HP233/292 brn
じしん のしかかり どろかけ ソーラービーム
選択=> どろかけ

相手 ガラガラ HP147/182 accuracy-1
自分 カビゴン HP176/292 brn
じしん のしかかり どろかけ ソーラービーム
選択=> じしん

相手 ガラガラ HP125/182 accuracy-1
自分 カビゴン HP118/292 brn
じしん のしかかり どろかけ ソーラービーム
選択=> どろかけ

相手 ガラガラ HP120/182 accuracy-2
自分 カビゴン HP82/292 brn
じしん のしかかり どろかけ ソーラービーム
選択=> どろかけ

相手 ガラガラ HP115/182 accuracy-3
自分 カビゴン HP26/292 brn
じしん のしかかり どろかけ ソーラービーム
選択=> のしかかり

brnはやけど状態を表します。やけどしたところでなぜかどろかけを使うように変化します。間違った学習をしているようです。

技選択の正しさの簡易評価として、技の選択回数に対する効果抜群となった回数の比率を確認してみましたが、ランダムに行動するよりは高い値になっていることがわかりました。対戦カードによってそもそも効果抜群の選択肢が存在するか否かが変動しますし、あまり安定する指標とは思えませんが。持続的に成果を確認できる定量評価指標が望まれます。

結論として、ある程度行動は正しいものの人が見て間違っている行動も混じっていました。定量的には教師あり学習より弱いという結果となっており、強化学習のパラメータの改善が必要と考えられます。