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

汎用行動選択モデルの学習 part13 行動の強化学習とパーティ生成の交互実行(結果)【PokéAI】

前回、バトル中の行動の強化学習と、そこで得られたモデルのQ関数を用いて強いパーティを生成するステップを交互に反復する手法を提案しました。 今回はそれを実際に動作させた結果を示します。

実験条件

  • 反復回数 10
  • パーティ数
    • Q関数を用いて生成するパーティ数 871
    • ランダム生成するパーティ数 129
  • パーティの生成条件
    • ポケモンの制限 最終進化系129種類(ミュウツードーブル等除く)
    • 技の制限 効果が見込める52種類(高威力攻撃技主体)
    • 類似パーティ生成抑制のペナルティ 1
  • 強化学習
    • 探索: epsilon-greedy
      • ランダム行動する確率epsilon: 0.3
      • epsilon decay: 2.0 \times 10^{-6}
    • 報酬割引率: 0.95
    • バッチサイズ: 32
    • 最初に学習するまでのステップ数(replay bufferのサンプル数): 500
    • Nサンプル収集するたびにoptimize: 1
    • N optimizeごとにtarget networkのアップデート: 100
    • replay bufferサイズ: 100,000
    • optimizer (Adam)の学習率: 0.0004
    • バトル数: 100,000

強化学習のハイパーパラメータは、以前Optunaで最適化したものを丸めました。

各反復の結果

各反復ではパーティが1,000個生成されます。それらに含まれるポケモン・技の分布(それぞれ出現回数トップ10)を示します。

反復0 (ランダム生成)

要素 出現回数
ピクシー 14
ツボツボ 12
マタドガス 12
ライコウ 12
モルフォン 11
ピジョット 11
キレイハナ 11
ゴローニャ 11
エアームド 11
トゲチック 11
要素 出現回数
どくどく 246
かげぶんしん 229
おんがえし 219
はかいこうせん 170
とっしん 161
ずつき 143
どろかけ 138
すてみタックル 137
スピードスター 137
いわくだき 115

最初はランダムなので、ポケモンは均等に出現、技は覚えるポケモンの数が多いどくどく・かげぶんしんなどが上位に来ています。

反復1

要素 出現回数
カイリュー 87
ミルタンク 63
ケンタロス 45
サンダー 43
ゲンガー 39
ファイヤー 38
ガルーラ 38
メガニウム 36
キングドラ 33
カビゴン 29
要素 出現回数
10まんボルト 121
じしん 113
なみのり 102
れいとうビーム 98
だいもんじ 94
おんがえし 91
かえんほうしゃ 89
ハイドロポンプ 87
サイコキネシス 83
かみなり 83

強化学習結果からパーティ生成を経ることで、強そうなポケモンが上位に来ています。

反復2

要素 出現回数
カビゴン 99
サンダー 76
ハピナス 64
スターミー 51
ガルーラ 51
マンタイン 41
ケンタロス 41
ヤドキング 39
サンダース 38
ライコウ 29
要素 出現回数
おんがえし 129
10まんボルト 113
サイコキネシス 104
かみなり 103
すてみタックル 102
じしん 101
れいとうビーム 99
のしかかり 98
なみのり 92
ハイドロポンプ 90

ここで、ポケモン金銀最強と言われたカビゴンがトップとなりました。カイリューはトップ10から消えています。この理由を推察すると、反復0の時点では氷タイプの強力な技を持つポケモンが少なかったため上位に来て、氷タイプの技で対策すればあまり強くないということが学習された可能性があります。

(途中省略)

反復9(最終)

要素 出現回数
カビゴン 104
サンダー 83
キングドラ 66
ライコウ 47
ガルーラ 46
メガニウム 43
デンリュウ 39
ベトベトン 34
バリヤード 34
ラプラス 30
要素 出現回数
10まんボルト 126
おんがえし 115
なみのり 114
かみなり 108
れいとうビーム 100
じしん 98
サイコキネシス 95
どくどく 92
のしかかり 91
ふぶき 88

反復によって若干順位が入れ替わりますが、カビゴンは不動の1位でした。技はサンダー・ライコウに欠かせない10まんボルト(かみなりも選択しうる)が最上位となりました。

それらを(当該反復で学習した行動選択モデルを用いて)レーティングバトルさせ、上位10パーティを示します。

反復0

レート パーティ
1997 カビゴン,LV55,おんがえし,はかいこうせん,ほのおのパンチ,すなあらし
1935 サンダー,LV55,はかいこうせん,ドリルくちばし,どろかけ,10まんボルト
1917 サンダー,LV55,おんがえし,かみなり,いわくだき,すなあらし
1896 ライコウ,LV55,どろかけ,かいりき,10まんボルト,かみなり
1892 ライコウ,LV55,ずつき,10まんボルト,すなあらし,でんじほう
1891 リングマ,LV55,ばくれつパンチ,いわくだき,おんがえし,じしん
1884 リングマ,LV55,じしん,はかいこうせん,おんがえし,ずつき
1865 バンギラス,LV55,ずつき,れいとうビーム,じしん,10まんボルト
1863 サンダー,LV55,どろかけ,はかいこうせん,ドリルくちばし,10まんボルト
1853 ランターン,LV55,かげぶんしん,10まんボルト,ハイドロポンプ,れいとうビーム

最初の時点でカビゴン・サンダーが強いということは学習の結果として現れています。

反復1

レート パーティ
1869 カビゴン,LV55,バブルこうせん,かえんほうしゃ,おんがえし,ロケットずつき
1861 カビゴン,LV55,かえんほうしゃ,すてみタックル,かみなり,れいとうパンチ
1858 カビゴン,LV55,ばくれつパンチ,かえんほうしゃ,のしかかり,バブルこうせん
1848 カビゴン,LV55,かえんほうしゃ,ばくれつパンチ,のしかかり,バブルこうせん
1842 カビゴン,LV55,のしかかり,ふぶき,でんじほう,かえんほうしゃ
1829 ライコウ,LV55,どろかけ,10まんボルト,どくどく,いあいぎり
1824 カビゴン,LV55,れいとうパンチ,だいもんじ,のしかかり,かみなり
1817 カビゴン,LV55,のしかかり,だいもんじ,なみのり,かいりき
1812 カビゴン,LV55,なみのり,ソーラービーム,ふぶき,すてみタックル
1811 カビゴン,LV55,ふぶき,ころがる,すてみタックル,かみなり

カビゴンのパーティへの採用頻度はまだ最大ではありませんが、すでに上位をカビゴンがほとんど占めています。

反復2

レート パーティ
1899 カビゴン,LV55,のしかかり,なみのり,ロケットずつき,ころがる
1887 カビゴン,LV55,じしん,だいもんじ,のしかかり,すてみタックル
1868 カビゴン,LV55,ころがる,ソーラービーム,かみなりパンチ,のしかかり
1862 カビゴン,LV55,のしかかり,ちきゅうなげ,どろかけ,ソーラービーム
1841 カビゴン,LV55,のしかかり,ほのおのパンチ,れいとうビーム,ふぶき
1831 ラプラス,LV55,つのドリル,ソーラービーム,ハイドロポンプ,10まんボルト
1831 カビゴン,LV55,ばくれつパンチ,のしかかり,でんじほう,はかいこうせん
1825 カビゴン,LV55,なみのり,かいりき,のしかかり,ちきゅうなげ
1819 カビゴン,LV55,ソーラービーム,どくどく,かえんほうしゃ,のしかかり
1814 ケンタロス,LV55,つのドリル,ふみつけ,じしん,のしかかり

つのドリルを覚えたラプラスケンタロスが登場しています。

(途中省略)

反復9

レート パーティ
1875 カビゴン,LV55,ほのおのパンチ,おんがえし,ソーラービーム,すなあらし
1866 カビゴン,LV55,とっしん,バブルこうせん,すてみタックル,だいもんじ
1838 カビゴン,LV55,すてみタックル,でんじほう,だいもんじ,ソーラービーム
1834 カビゴン,LV55,ずつき,じしん,ちきゅうなげ,おんがえし
1817 カビゴン,LV55,じしん,すなあらし,のしかかり,れいとうパンチ
1814 カビゴン,LV55,ばくれつパンチ,のしかかり,れいとうビーム,ころがる
1812 カビゴン,LV55,おんがえし,だいもんじ,すなあらし,なみのり
1810 カビゴン,LV55,すてみタックル,ころがる,ソーラービーム,どろかけ
1806 カビゴン,LV55,ふぶき,のしかかり,どろかけ,じしん
1801 カビゴン,LV55,ちきゅうなげ,おんがえし,かげぶんしん,かえんほうしゃ

THE カビゴン 無双。ただし、最上位のカビゴンでもかえんほうしゃだいもんじではなくほのおのパンチを覚えている(当時はすべて特殊技、ほのおのパンチのメリットはない)ので、技構成がパーフェクトかというとまだ疑問が残ります。とはいえ対戦の結果なので、これで差がつく場面はほとんどなかったという結果だと考えられます。

全反復でのパーティ混合での対戦結果

反復的な学習によって強くなっていっているのかを確認します。各反復内でのレーティングバトル結果の上位100パーティを抽出し、それを10反復分混合し、合計1000パーティでレーティングバトルさせます。上位を抽出する理由は、各反復で学習対象としているパーティ群にはランダム生成パーティを混合していることおよび多様性確保のために強さが劣るパーティも混合されているためです。各パーティは、その反復で学習した行動選択モデルを用いて行動選択させます。

1000パーティのレーティングバトルの結果として得られる各パーティのレートを、それが所属する反復ごとに平均した結果を示します。

f:id:select766:20200831201702p:plain
反復(iteration)ごとのパーティの平均レート

反復0はもちろんランダム生成パーティなので弱いのは当然ですが、パーティ・行動双方が最適化された反復1でも飽和せず、反復2のほうがより強くなっています。しかし、それ以上は強くなっていないようで、学習手法の限界に達しているようです。改良の余地は残りますが、反復的なパーティ生成と強化学習により、戦略が改善できることがわかりました。

レーティングバトル上位10パーティを示します。

レート パーティ
1795 ドンファン,LV55,じしん,げんしのちから,ころがる,つのでつく
1776 バンギラス,LV55,じしん,かいりき,げんしのちから,ばくれつパンチ
1775 ドンファン,LV55,つのでつく,じしん,いわくだき,げんしのちから
1764 ドンファン,LV55,ころがる,げんしのちから,じしん,つのでつく
1747 ドンファン,LV55,じしん,ころがる,つのでつく,げんしのちから
1744 カビゴン,LV55,れいとうパンチ,すなあらし,のしかかり,ばくれつパンチ
1742 ドンファン,LV55,じしん,ころがる,かいりき,げんしのちから
1732 カビゴン,LV55,どろかけ,おんがえし,バブルこうせん,ばくれつパンチ
1729 ニドクイン,LV55,じしん,つのドリル,はかいこうせん,だいもんじ
1722 カビゴン,LV55,じしん,のしかかり,かみなり,ソーラービーム

驚くべきことに、最上位はカビゴンではなくドンファンという結果になりました。ドンファンは1000パーティ中7パーティでしか登場していないのですが、そのうち5パーティが上位10パーティに入るという極めて良い結果を出しています。次の章で定性的に考察します。

なお、下位10パーティは次のようになりました。

レート パーティ
1054 ニョロトノ,LV55,はかいこうせん,なみのり,サイコキネシス,いわくだき
1080 カメックス,LV55,ばくれつパンチ,ハイドロポンプ,でんじほう,たきのぼり
1114 スターミー,LV55,おんがえし,たきのぼり,かみなり,すてみタックル
1115 ポリゴン2,LV55,かみなり,でんじほう,10まんボルト,ふぶき
1119 スイクン,LV55,バブルこうせん,いわくだき,たきのぼり,おんがえし
1125 ゴルダック,LV55,ハイドロポンプ,スピードスター,はなびらのまい,れいとうパンチ
1129 ヤドキング,LV55,サイコキネシス,じしん,とっしん,のしかかり
1132 オーダイル,LV55,おんがえし,かいりき,ハイドロポンプ,げんしのちから
1143 カイリュー,LV55,かみなり,れいとうパンチ,どろかけ,どくどく
1148 エレブー,LV55,いわくだき,でんじほう,どくどく,すてみタックル

いずれも反復0で生成されたパーティで、技構成だけでなくバトル中の行動もよくなかったものと考えられます。

バトル中の行動の分析

上位のパーティが、バトル中にどんな行動をとっていたのか定性的に確認します。

ドンファン,LV55,じしん,げんしのちから,ころがる,つのでつく

1位のパーティです。 基本的にはじしんを連打し、飛行タイプのサンダーにはげんしのちから(岩タイプ)を使い分けていました。他の技はほぼ使われません。ラプラスゴルダックなど水タイプの相手と対面すると、なみのり等でなすすべなく負けてしまいます。ずつき・おんがえしを連打してくるケンタロスに対しても攻め勝てています。

カビゴン,LV55,れいとうパンチ,すなあらし,のしかかり,ばくれつパンチ

6位のパーティです。 基本的にのしかかりを使い、のしかかりが半減となるバンギラスにはばくれつパンチカイリューには4倍弱点を突けるれいとうパンチを使っていました。

バンギラス,LV55,げんしのちから,10まんボルト,ばくれつパンチ,かえんほうしゃ

11位のパーティです。 4タイプの攻撃技を覚えています。げんしのちからはサンダー・ラプラスに、10まんボルトはゴルダックオーダイルニョロトノ(いずれも水単タイプで、入力特徴量上は区別がつかない)に、ばくれつパンチ(格闘タイプ)はカビゴンバンギラスに、かえんほうしゃライコウに使うという形でうまく使い分けができていました。なお、ライコウには攻め負けます。

ケンタロス,LV55,つのドリル,のしかかり,どくどく,つのでつく

12位のパーティです。 ほぼすべてのバトルでつのドリル(命中率30%の一撃必殺技)を連打するという恐ろしい戦法でした。この環境では、強力な格闘技を受けたり、相手がゴーストタイプでつのドリルが効かないという状況がほとんどありませんでした。ほとんどのバトルで相手に倒される前に3回以上つのドリルを試行する機会があり、試行回数2回で51%、3回で66%の確率で相手を倒せるという計算になります。1vs1バトルなので交代でゴーストタイプが出てくることを一切考慮しなくて済むため、極めて単純ながら強力な戦法といえます。

過去の学習ではタイプ相性的に「こうかはいまひとつ」の技を選んでしまうことも多々あり難がありましたが、今回は攻撃技の選択に関して明らかな間違いはほとんどなく、十分な学習結果となっていました。相手のポケモンによって選ぶ技はほぼ固定されており、状況に応じた選択はなされていませんでしたが、攻撃技を使うだけであれば適切な戦略の範疇です。どくどく等の補助技はほとんど使えていない状況は依然として続きます。1vs1バトルでは交代の隙というのがないので、能力アップよりひたすら攻撃することの有効性が高いとも考えられます。

なぜドンファンが最上位だったか

ドンファンは各反復内でのレーティングバトルでは上位10パーティに入っていなかったにもかかわらず、全体混合のレーティングバトルでは1位になりました。この理由を考察します。

全体混合のレーティングバトルでの、1000パーティ中のポケモンの出現回数上位10種類を示します。

要素 出現回数
カビゴン 468
ケンタロス 92
ライコウ 75
サンダー 69
ラプラス 61
バンギラス 51
ガルーラ 28
カイリュー 19
リングマ 16
エーフィ 12

全体の40%以上をカビゴンが占めるという状況になっています。この環境では、カビゴンに勝てるか否かが決定的な差になります。

ドンファンの主力技じしんと、カビゴンの主力技のしかかりでダメージ計算を行い、相手を何発で倒せるかを示します。

↓攻撃側\防御側→ カビゴン ドンファン
ドンファン(じしん) 3~4発 3~4発
カビゴン(のしかかり) 4発 4~5発

素早さはドンファンのほうが速いことを加味すると、急所・のしかかりによる麻痺が生じない限りドンファンが勝ちということがわかります。 仮にカビゴンドンファンに対して効果抜群となるなみのりを使用すると3発、れいとうパンチを使用すると3~4発です。これらの技を選択すれば、確定ではありませんがドンファンに勝てる可能性はあります。 ただ依然として乱数で勝敗が決まるので、単純にのしかかりを連打して麻痺に賭けるほうが単純で汎用性が高そうです。 この環境においては、ドンファンカビゴンを上回っているといえそうです。なお、人間同士のポケモンバトルの公式大会のルールでドンファンが日の目を浴びたことはないと思われますが、それは同じタイプのガラガラのほうが持ち物「ふといホネ」によって攻撃力が高くなるためです。持ち物なしのルールになっているために絶妙な攻撃力と防御力のバランスで注目対象になったといえます。 逆に各反復内のレーティングバトルではドンファンが上位に来なかった理由は、水タイプの相手に対して勝ち目がなく、水タイプのポケモンが出てくる確率が相対的に高い環境で順位が下がったのだと考えられます。 結論として、ドンファンが最上位に来た理由は、カビゴンの出現頻度が極めて高い、かつ天敵となる水タイプが相対的に少ない環境となっていたこと、その中でカビゴンに攻め勝てる性能を持っていたためだといえるでしょう。 同時に、環境内のポケモンの出現頻度によってどのポケモンが統計的に強いかが変わるというのは根本的な難題だといえそうです。

ところで、人間同士の対戦ではカビゴンに対してどう対処するのが正解なのでしょうか。ポケモンバトルに関する非公式の考察本から引用します。

(カビゴンについて) 第二世代の任天堂公式ルール『ニンテンドウカップ2000』における絶対王者と呼べるポケモン

(対策の節) まず、カビゴン対策の筆頭候補となるポケモンムウマである。 (中略)これはムウマカビゴン対策の役割しか担当しない場合の話である。 ムウマカビゴンを殴り倒せるポケモンではなく、「ほろびのうた」や「みちづれ」の効果によって共倒れにすることで、カビゴン対策の仕事をこなすことができる。

ポケットモンスター赤緑ピカチュウ&金銀クリスタル マップ&ずかん&対戦考察本『ポケモンバトルノスタルジアDX』上巻 (発行:つうしんケーブルクラブ)より

ということで、共倒れ前提の戦法が薦められています。つまり、今回採用している1vs1ルールではそもそも実行不可能です。今回は相手のポケモンごとに決まった1つの技を連打するという戦略が有効で、あまり賢いAIにはなりませんでした。その中で、ドンファンカビゴンに対抗できるということは筆者は予想しておらず、興味深い結果が得られたとも考えられます。カビゴンでとにかく攻撃技を打ちまくるという単純な戦略に対して有効な賢い手段を学習するには、3vs3ルールへと移行することが必須のようです。