機械学習周りのプログラミング中心。 ポケモンバトルAI本通販中(4/5まで)

汎用行動選択モデルの学習 part02 ポケモン・技のサブセット作成【PokéAI】

任意のパーティを受け取って、バトル中の行動(技)を選択する「汎用行動選択モデル」を学習していきます。

この記事では、学習を容易にするためポケモン・技の数を制限する手法を考えます。

バトルのルールの前提条件は、

3vs3は選択肢が多くなり学習が難しくなることが予想されるので、まずは一番簡単な条件に設定しました。

従来の行動学習で扱いづらかった点として、ポケモンや技の強さに格差が大きい点がありました。例えばトランセルはどういう戦略をとろうが勝ち目はほとんどなく、「なみのり・みずでっぽう・あわ・しっぽをふる」を覚えたカメックスではバトル中の状況にかかわらずなみのりを選択するのが最適解となるでしょう。このような状況下の行動選択データは無意味なデータとなってしまう可能性が高く、モデルの学習の妨げになると考えられます。そこで、ある程度有効なポケモン・技だけが存在する環境で学習を試みることにしました。

まずポケモンですが、最終進化系だけを用いることにしました。ただし、禁止級伝説、技マシンが使えないポケモンを除外しています。すなわちミュウ、ミュウツー、ホウオウ、ルギア、セレビィメタモンアンノーンソーナンスドーブル以外の最終進化系で、合計129種類となりました。ほかの手法として、種族値で決める方法もあるかと思います。

次に技ですが、ポケモンほど自明な基準がありません。そこで、ランダムな技を覚えたパーティを多数生成し、パーティ評価関数 select766.hatenablog.com の手法で技の有用度を定量化することとしました。

ポケモンは最終進化系だけをランダムに選択し、技はそれぞれのポケモンが覚えられるものからランダムに4つ選択します。このようなパーティを10,000個生成し、ランダムに行動させた勝敗から各パーティのレートを計算します。ここでは技がレートに与える影響を抽出したいので、パーティ特徴量として技(M)特徴量のみを用います。

技ごとに算出された係数のtop10、worst10を表示します。係数が大きいほど勝利に貢献していることを表します。

係数
はかいこうせん 0.660
じしん 0.561
なみのり 0.493
10まんボルト 0.477
れいとうビーム 0.460
のしかかり 0.418
かいりき 0.415
ハイドロポンプ 0.406
かえんほうしゃ 0.393
ちきゅうなげ 0.392
... ...
あまごい -0.411
やつあたり -0.411
いびき -0.423
ねごと -0.449
こらえる -0.456
しんぴのまもり -0.479
メロメロ -0.484
だいばくはつ -0.490
じばく -0.760
いとをはく -0.862

はかいこうせん、じしんなどの強そうな技が上位に来ています。下位では、1vs1バトルなので使うと即負けになるじばくのほか、使用条件を満たさないと無意味なメロメロ、ねごとなどが出ています。これらの技の有効な運用もいつかは実現したいですが、「こうかはばつぐん」の技を選ぶことすら苦労している現状なので後回しです。

ポケモンごとに技構成の自由度をもたせつつ無意味な技を排除するため、各ポケモンの覚えられる技のうち係数上位8個を選択し、全(最終進化系)ポケモンにわたって和集合をとりました。その結果、以下の52個の技が選択されました。

つのでつく, ふぶき, つばさでうつ, どくどく, やどりぎのタネ, ふみつけ, いあいぎり, はかいこうせん, でんじほう, サイコキネシス, かいりき, ソーラービーム, ロケットずつき, げんしのちから, そらをとぶ, ナイトヘッド, おんがえし, はなびらのまい, なみのり, かみなりパンチ, たきのぼり, かげぶんしん, いわくだき, どくのこな, とっしん, つのドリル, どろかけ, のしかかり, ゴッドバード, ころがる, スピードスター, れいとうビーム, ちきゅうなげ, ヘドロばくだん, すてみタックル, バブルこうせん, ほのおのパンチ, だいもんじ, ハイドロポンプ, サイケこうせん, かみなり, はっぱカッター, じしん, ドリルくちばし, ばくれつパンチ, ずつき, はがねのつばさ, すなあらし, れいとうパンチ, 10まんボルト, ギガドレイン, かえんほうしゃ

以上、ルール上存在するポケモン・技のうち、ランダムに選択しても大きく格差が出ないよう有効なポケモン129種類・技52種類からなるサブセットを抽出しました。この範囲で汎用行動選択モデルの学習を進めていきます。