前回、汎用行動選択モデルを強化学習させるシステムを実装しました。今回はその結果を評価します。
学習条件
強化学習関係のデフォルトの学習条件は以下のように設定しました。
- アルゴリズム: 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
はやけど状態を表します。やけどしたところでなぜかどろかけを使うように変化します。間違った学習をしているようです。
技選択の正しさの簡易評価として、技の選択回数に対する効果抜群となった回数の比率を確認してみましたが、ランダムに行動するよりは高い値になっていることがわかりました。対戦カードによってそもそも効果抜群の選択肢が存在するか否かが変動しますし、あまり安定する指標とは思えませんが。持続的に成果を確認できる定量評価指標が望まれます。
結論として、ある程度行動は正しいものの人が見て間違っている行動も混じっていました。定量的には教師あり学習より弱いという結果となっており、強化学習のパラメータの改善が必要と考えられます。