前回、バトル中の行動の強化学習と、そこで得られたモデルのQ関数を用いて強いパーティを生成するステップを交互に反復する手法を提案しました。 今回はそれを実際に動作させた結果を示します。
実験条件
- 反復回数 10
- パーティ数
- Q関数を用いて生成するパーティ数 871
- ランダム生成するパーティ数 129
- パーティの生成条件
- 強化学習
- 探索: epsilon-greedy
- ランダム行動する確率epsilon: 0.3
- epsilon decay:
- 報酬割引率: 0.95
- バッチサイズ: 32
- 最初に学習するまでのステップ数(replay bufferのサンプル数): 500
- Nサンプル収集するたびにoptimize: 1
- N optimizeごとにtarget networkのアップデート: 100
- replay bufferサイズ: 100,000
- optimizer (Adam)の学習率: 0.0004
- バトル数: 100,000
- 探索: epsilon-greedy
強化学習のハイパーパラメータは、以前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パーティのレーティングバトルの結果として得られる各パーティのレートを、それが所属する反復ごとに平均した結果を示します。
反復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ルールへと移行することが必須のようです。