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

汎用行動選択モデルの3vs3対応 part10 行動の強化学習とパーティ生成の交互実行(学習経過の評価)【PokéAI】

3vs3バトルでの強化学習とパーティ生成の実装が完成したので、1vs1バトルの時と同様、これらを交互に動作させて強いパーティとその適切な運用法を学習します。

実験条件

アルゴリズム自体は1vs1の時と変わりません。

select766.hatenablog.com

  • 反復回数 10
  • パーティ数
    • Q関数を用いて生成するパーティ数 871
    • ランダム生成するパーティ数 129
  • パーティの生成条件
  • 類似パーティ生成抑制のペナルティ 0.1
  • 強化学習
    • 探索: epsilon-greedy
    • ランダム行動する確率epsilon: 0.3
    • epsilon decay: 2.0×10−6
    • 最小のepsilon: 0.01
    • 報酬割引率: 0.95
    • バッチサイズ: 32
    • 最初に学習するまでのステップ数(replay bufferのサンプル数): 500
    • Nサンプル収集するたびにoptimize: 1
    • N optimizeごとにtarget networkのアップデート: 100
    • replay bufferサイズ: 100,000
    • optimizer (Adam)の学習率: 0.00001
    • バトル数: 100,000
    • 補助報酬

各反復の結果

各反復ではパーティが1,000個生成されます。そして、そのパーティを用いて学習したモデルを用いてレーティングバトルを行い、上位10パーティを示します。また、上位100パーティに含まれるポケモン・技の分布(それぞれ出現回数トップ10)を示します。全1,000パーティでの分布では、多様性を確保したパーティ生成の影響で、ほとんどのポケモンが覚える技(かげぶんしん、どくどく等)が常に上位を占めて傾向が出ませんでした。

反復0

レート パーティ
1975 カビゴン,LV50,かみなりパンチ,のしかかり,すてみタックル,ふぶき
シャワーズ,LV50,のしかかり,ふぶき,バブルこうせん,ずつき
エレブー,LV55,おんがえし,サイコキネシス,スピードスター,はかいこうせん
1969 バクフーン,LV50,すてみタックル,かえんほうしゃ,じしん,ほのおのパンチ
オドシシ,LV50,ずつき,どろかけ,じしん,おんがえし
カビゴン,LV55,のしかかり,はかいこうせん,ちきゅうなげ,いわくだき
1941 ケンタロス,LV50,でんじほう,つのドリル,とっしん,おんがえし
ゴルダック,LV50,かいりき,のしかかり,れいとうビーム,なみのり
ルージュラ,LV55,れいとうビーム,おんがえし,ロケットずつき,とっしん
1939 バンギラス,LV55,じしん,どろかけ,いわくだき,げんしのちから
ムウマ,LV50,10まんボルト,かみなり,スピードスター,でんじほう
シャワーズ,LV50,どくどく,はかいこうせん,かげぶんしん,なみのり
1930 カイリュー,LV55,おんがえし,ロケットずつき,れいとうビーム,だいもんじ
シャワーズ,LV50,たきのぼり,どろかけ,とっしん,ロケットずつき
ゲンガー,LV50,のしかかり,ナイトヘッド,サイコキネシス,ほのおのパンチ
1899 ジュゴン,LV50,ロケットずつき,ずつき,つのドリル,れいとうビーム
カビゴン,LV55,すなあらし,ソーラービーム,のしかかり,でんじほう
ハピナス,LV50,かえんほうしゃ,すてみタックル,とっしん,どくどく
1881 ハピナス,LV50,バブルこうせん,10まんボルト,だいもんじ,かえんほうしゃ
シャワーズ,LV50,れいとうビーム,とっしん,ロケットずつき,すてみタックル
バクフーン,LV55,スピードスター,ばくれつパンチ,かみなりパンチ,だいもんじ
1878 ドンファン,LV50,すなあらし,すてみタックル,ころがる,じしん
ランターン,LV50,でんじほう,なみのり,ハイドロポンプ,おんがえし
スイクン,LV55,バブルこうせん,れいとうビーム,どくどく,はかいこうせん
1870 シャワーズ,LV55,ふぶき,とっしん,スピードスター,なみのり
フーディン,LV50,ちきゅうなげ,サイコキネシス,ほのおのパンチ,れいとうパンチ
マンタイン,LV50,おんがえし,ふぶき,どろかけ,なみのり
1845 プテラ,LV50,いわくだき,とっしん,そらをとぶ,おんがえし
ラプラス,LV55,ふぶき,いわくだき,なみのり,ずつき
ライコウ,LV50,すなあらし,かみなり,でんじほう,はかいこうせん

パーティはランダムですが、強いポケモン・技の傾向が見て取れます。

要素 出現回数
シャワーズ 11
カビゴン 10
ランターン 9
ライコウ 9
サンダー 9
ケンタロス 7
ムウマ 7
ゲンガー 7
ハピナス 6
ヌオー 6
要素 出現回数
おんがえし 83
のしかかり 58
どくどく 58
はかいこうせん 56
かげぶんしん 54
ずつき 53
とっしん 53
スピードスター 43
どろかけ 41
すてみタックル 40

パーティはランダム生成ですが、上位100パーティを抽出すればカビゴン、サンダーなどの出現回数が大きくなりました。技については、AIが現状使いこなせていないものの覚えるポケモンが多いどくどく、かげぶんしんが上位に来ています。

反復1

レート パーティ
1922 カビゴン,LV55,のしかかり,ずつき,じしん,かみなり
サンダース,LV50,スピードスター,かみなり,ずつき,のしかかり
ムウマ,LV50,サイケこうせん,ずつき,かみなり,スピードスター
1903 ファイヤー,LV50,どろかけ,はがねのつばさ,スピードスター,だいもんじ
ライコウ,LV55,いあいぎり,10まんボルト,どろかけ,かいりき
サイドン,LV50,じしん,ふみつけ,だいもんじ,10まんボルト
1877 カビゴン,LV55,かえんほうしゃ,サイコキネシス,のしかかり,じしん
サンダー,LV50,ドリルくちばし,10まんボルト,どろかけ,かみなり
ドククラゲ,LV50,ふぶき,なみのり,ハイドロポンプ,ヘドロばくだん
1874 ガルーラ,LV55,だいもんじ,のしかかり,じしん,いわくだき
ケンタロス,LV50,いわくだき,のしかかり,じしん,だいもんじ
プテラ,LV50,ゴッドバード,だいもんじ,じしん,いわくだき
1866 カビゴン,LV55,じしん,かみなりパンチ,どろかけ,のしかかり
ミルタンク,LV50,かみなりパンチ,のしかかり,どろかけ,じしん
エアームド,LV50,どろかけ,ゴッドバード,はがねのつばさ,そらをとぶ
1854 プテラ,LV50,じしん,げんしのちから,はかいこうせん,ゴッドバード
フシギバナ,LV50,はっぱカッター,げんしのちから,はかいこうせん,やどりぎのタネ
ライコウ,LV55,はかいこうせん,10まんボルト,でんじほう,かみなり
1852 カビゴン,LV55,のしかかり,バブルこうせん,でんじほう,ロケットずつき
ペルシアン,LV50,バブルこうせん,でんじほう,ロケットずつき,のしかかり
フシギバナ,LV50,やどりぎのタネ,ロケットずつき,どくのこな,はっぱカッター
1839 サンダー,LV50,とっしん,ドリルくちばし,おんがえし,10まんボルト
ケンタロス,LV55,とっしん,おんがえし,10まんボルト,れいとうビーム
ランターン,LV50,10まんボルト,れいとうビーム,おんがえし,とっしん
1835 カイリュー,LV55,10まんボルト,かえんほうしゃ,ハイドロポンプ,のしかかり
サイドン,LV50,10まんボルト,かえんほうしゃ,おんがえし,のしかかり
カビゴン,LV50,かえんほうしゃ,おんがえし,10まんボルト,のしかかり
1823 カビゴン,LV55,のしかかり,サイコキネシス,だいもんじ,ばくれつパンチ
スリーパー,LV50,ばくれつパンチ,サイコキネシス,れいとうパンチ,でんじほう
ベトベトン,LV50,れいとうパンチ,だいもんじ,ばくれつパンチ,でんじほう

学習結果では、カビゴン、サンダーの優位性がよく現れる状況になりました。

要素 出現回数
カビゴン 37
サンダー 21
ライコウ 15
バンギラス 15
プテラ 8
サンダース 6
ガルーラ 6
ベトベトン 6
ヌオー 6
キングドラ 6
要素 出現回数
のしかかり 92
10まんボルト 85
おんがえし 64
じしん 63
ずつき 49
でんじほう 46
どろかけ 42
はかいこうせん 38
とっしん 37
どくどく 37

カビゴン、サンダーが1位、2位となり、その主力技となるのしかかり、10まんボルトが技の上位に来ました。

反復2

レート パーティ
1926 カビゴン,LV55,ふぶき,なみのり,かみなり,のしかかり
ヤドキング,LV50,なみのり,ふぶき,バブルこうせん,どくどく
スターミー,LV50,ふぶき,どくどく,バブルこうせん,かみなり
1900 カビゴン,LV55,かいりき,のしかかり,じしん,ソーラービーム
ミルタンク,LV50,のしかかり,どろかけ,じしん,かいりき
メガニウム,LV50,のしかかり,ソーラービーム,かいりき,どろかけ
1886 カビゴン,LV55,はかいこうせん,どくどく,れいとうビーム,おんがえし
メガニウム,LV50,どくどく,はかいこうせん,おんがえし,やどりぎのタネ
パルシェン,LV50,おんがえし,はかいこうせん,どくどく,れいとうビーム
1885 カビゴン,LV50,なみのり,のしかかり,じしん,ロケットずつき
ヌオー,LV50,はかいこうせん,のしかかり,なみのり,じしん
ファイヤー,LV55,そらをとぶ,はがねのつばさ,はかいこうせん,だいもんじ
1883 カビゴン,LV55,のしかかり,じしん,だいもんじ,はかいこうせん
エンテイ,LV50,はかいこうせん,ふみつけ,だいもんじ,おんがえし
キュウコン,LV50,だいもんじ,のしかかり,おんがえし,はかいこうせん
1870 カビゴン,LV55,じしん,ちきゅうなげ,のしかかり,どろかけ
ニョロボン,LV50,ちきゅうなげ,どろかけ,ハイドロポンプ,のしかかり
サワムラー,LV50,かいりき,ロケットずつき,どろかけ,のしかかり
1868 カビゴン,LV50,ばくれつパンチ,すてみタックル,のしかかり,れいとうビーム
カメックス,LV50,れいとうビーム,どくどく,すてみタックル,ばくれつパンチ
ガルーラ,LV55,どくどく,のしかかり,れいとうビーム,すてみタックル
1867 カビゴン,LV55,じしん,はかいこうせん,れいとうビーム,おんがえし
イノムー,LV50,はかいこうせん,じしん,おんがえし,れいとうビーム
ブラッキー,LV50,ロケットずつき,おんがえし,いあいぎり,はかいこうせん
1858 カビゴン,LV50,れいとうビーム,かいりき,じしん,のしかかり
サンドパン,LV50,のしかかり,どくどく,かいりき,じしん
ジュゴン,LV55,どくどく,かいりき,のしかかり,れいとうビーム
1858 カビゴン,LV50,のしかかり,いわくだき,れいとうビーム,ロケットずつき
スイクン,LV55,たきのぼり,おんがえし,いあいぎり,ふぶき
ハッサム,LV50,おんがえし,ロケットずつき,スピードスター,いあいぎり

カビゴン無双になりました。特に気になるのは、パーティの先頭にカビゴンが集中している点です。次の章で考察します。

要素 出現回数
カビゴン 56
サンダー 15
ガルーラ 10
カメックス 9
スターミー 8
メガニウム 6
ヌオー 6
ファイヤー 6
イノムー 6
バンギラス 6
要素 出現回数
のしかかり 104
じしん 93
れいとうビーム 62
おんがえし 57
すてみタックル 51
はかいこうせん 44
かいりき 42
とっしん 35
どろかけ 33
ばくれつパンチ 33

出現頻度がカビゴンに強く偏っています。

反復9 (最終)

レート パーティ
1906 カビゴン,LV50,ほのおのパンチ,でんじほう,じしん,おんがえし
ミルタンク,LV55,おんがえし,じしん,でんじほう,ほのおのパンチ
デンリュウ,LV50,でんじほう,ばくれつパンチ,おんがえし,ほのおのパンチ
1883 カビゴン,LV55,のしかかり,バブルこうせん,でんじほう,ちきゅうなげ
マンタイン,LV50,スピードスター,れいとうビーム,たきのぼり,ハイドロポンプ
カメックス,LV50,ハイドロポンプ,たきのぼり,れいとうビーム,ちきゅうなげ
1876 カビゴン,LV55,ソーラービーム,だいもんじ,れいとうパンチ,のしかかり
キングラー,LV50,ふみつけ,のしかかり,どくどく,どろかけ
ゴローニャ,LV50,だいもんじ,どくどく,どろかけ,のしかかり
1861 カビゴン,LV50,ほのおのパンチ,なみのり,どくどく,のしかかり
ヤドキング,LV55,どくどく,ふみつけ,なみのり,のしかかり
ケンタロス,LV50,ふみつけ,なみのり,どくどく,のしかかり
1859 カビゴン,LV55,すなあらし,じしん,ちきゅうなげ,のしかかり
ドンファン,LV50,じしん,つのでつく,のしかかり,すなあらし
ヘラクロス,LV50,つのでつく,いあいぎり,ちきゅうなげ,じしん
1857 カビゴン,LV55,だいもんじ,はかいこうせん,のしかかり,じしん
ガルーラ,LV50,はかいこうせん,じしん,どくどく,だいもんじ
マグカルゴ,LV50,だいもんじ,はかいこうせん,どくどく,じしん
1856 スイクン,LV50,なみのり,れいとうビーム,おんがえし,かげぶんしん
ドンファン,LV55,つのでつく,かげぶんしん,じしん,おんがえし
ケンタロス,LV50,じしん,つのでつく,かげぶんしん,おんがえし
1831 カビゴン,LV50,ばくれつパンチ,ふぶき,かえんほうしゃ,のしかかり
プクリン,LV55,のしかかり,かえんほうしゃ,ふぶき,ばくれつパンチ
ニョロボン,LV50,ばくれつパンチ,いわくだき,ふぶき,のしかかり
1830 カビゴン,LV50,ロケットずつき,のしかかり,かみなりパンチ,じしん
ブースター,LV50,ロケットずつき,どろかけ,のしかかり,でんじほう
スリーパー,LV55,ロケットずつき,のしかかり,でんじほう,かみなりパンチ
1829 カビゴン,LV55,ばくれつパンチ,バブルこうせん,かみなりパンチ,のしかかり
ニョロボン,LV50,のしかかり,バブルこうせん,ばくれつパンチ,れいとうビーム
パルシェン,LV50,れいとうビーム,バブルこうせん,スピードスター,ふぶき

対戦結果ではカビゴンがやはり無双している状況でした。1vs1バトルでカビゴンへの対策として現れたドンファンが、3vs3バトルではカビゴンと同じパーティに組み込まれ、上位に食い込んでいます。

要素 出現回数
カビゴン 49
ライコウ 14
サンダー 13
バンギラス 13
ドンファン 8
ガルーラ 7
バクフーン 6
プテラ 6
カメックス 5
サイドン 5
要素 出現回数
のしかかり 93
じしん 91
おんがえし 62
どろかけ 53
10まんボルト 47
どくどく 40
れいとうビーム 38
はかいこうせん 38
いわくだき 37
すてみタックル 37

カビゴンが圧倒的上位のまま収束したという状況になりました。

パーティの先頭にカビゴンが多い理由の考察

反復9のトップ100パーティにおいて、出現回数上位5ポケモンについてそれがパーティ先頭に現れた回数、先頭以外に現れた回数を抽出しました。

要素 パーティ先頭での出現回数 パーティ先頭以外での出現回数
カビゴン 48 1
バンギラス 13 0
サンダー 11 2
ライコウ 10 4
スターミー 5 0

主要なポケモンは圧倒的にパーティ先頭に集中しています。なお、パーティ先頭以外だけで出現回数の順位を確認すると、ドンファンの8回が最大となりポケモン間での偏りが小さいことがわかりました。 この結果は、カビゴンバンギラス・サンダーを並べたパーティが生成されていないということでもあり最良のパーティ構築ができていない可能性を示唆しています。 パーティ生成のアルゴリズムは、バトル開始時のQ関数の出力の全行動に対する最大値を最大とするようなパーティを生成するというものでした。Q関数の入力として自分のパーティが反映される部分を展開すると、Q(先頭ポケモン, 技1)、Q(先頭ポケモン, 技2)、…、Q(控えポケモン1に交代, その技すべて)、Q(控えポケモン2に交代, その技すべて)という6つの値のうちの最大値、すなわち最善手をとったときの勝率を取ることになります。バトル開始時にいきなり交代が最善手になる状況は不利であり、先頭に天敵の少ない強力なポケモンが配置されていればほとんど起こらないと考えられます。この場合、控えポケモンは何であっても最大値に影響しないことになります。Q関数を用いた手法は、控えポケモンの反映が弱くなるという問題を抱えていることがわかりました。この問題の解決は将来の課題です。

この記事では、反復的な学習で生成されたパーティの確認と、パーティ生成手法の問題点を確認しました。次回は、反復により強さが向上したことを確認し、最強のパーティの戦略を観察します。