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

汎用行動選択モデルの学習 part09 Q関数を用いたパーティ評価【PokéAI】

前回、バトル中の行動選択を行うQ関数について、バトル開始直後のQ値は0ではなく、自分のパーティ構成および相手に応じて変動することがわかりました。 今回から、この性質を用いて強いパーティを生成することを試みます。

Q関数を用いたパーティの強さの定式化

強化学習を通じて学習されるQ関数Q(s, a)のsにはバトルの状態、aには選択する行動が代入されます。現在は交代なしの1vs1バトルを扱っており、バトル開始直後のsには相手のポケモンのタイプ(17次元のうち該当する次元が1)が含まれます。残りHPなどの要素もありますが、定数になります。また、aには自分のポケモンの種族(251次元のうち該当する次元が1)および技(251次元のうち該当する次元が1)が含まれます。

前回掲載したように、Q値(Q関数の出力)は次のようになります。1つの状況に対して選択肢となる技ごとに異なるaが与えられるため、異なるQ値が得られます。

相手 パラセクト HP182/182  
自分 ギャラドス HP220/220  
技       Q値
いわくだき   0.31
ハイドロポンプ 0.24
なみのり    0.36
のしかかり   0.68

相手ポケモンが変化すればsが変化し、Q値が変化します。

相手 ニドクイン HP215/215  
自分 ギャラドス HP220/220  
技       Q値
いわくだき   -0.15
ハイドロポンプ 0.18
なみのり    0.37
のしかかり   0.31

良いパーティは、どんな相手に対しても高いQ値が得られるパーティであると考えられます。 これを定式化すると、パーティXに対してパーティの良さを表す関数R(X)は次のようになります。


R(X) = \frac{1}{|E|} \sum_E \max_a Q(s(E), a)

ここで、Eは相手として想定するポケモンの集合、s(E)は相手ポケモンを代入した状態ベクトルです。今回、Eにはポケモン全種類(最終進化系129種類)を用いることにします。 言葉で説明すれば、Rは相手ポケモンに対して最善の技を選択したときのQ値を、想定されるすべての相手ポケモンに対して平均したものとなります。平均ではなくてmaxなのは、相手ごとに有効な技を1つ覚えていれば十分であるためです。

具体例として、上に示したギャラドスのパーティに対するRは、E={パラセクト, ニドクイン}としたときに


R(X) = \frac{1}{2} (\max \{0.31, 0.24, 0.36, 0.68\} + \max \{-0.15, 0.18, 0.37, 0.31\}) = \frac{1}{2} (0.68 + 0.37) = 0.525

となります。

実験結果

実際に上記の定式化を使って、ランダムに生成したパーティ1,000個の評価を行いました。エージェントは前回と同じid:7cfです。

トップ10のパーティは以下のようになりました。

R=0.675 フォレトス,LV55,かげぶんしん,すてみタックル,ソーラービーム,ギガドレイン
R=0.665 サイドン,LV55,かいりき,だいもんじ,じしん,ふみつけ
R=0.664 フォレトス,LV55,かげぶんしん,いわくだき,ギガドレイン,スピードスター
R=0.656 ヤドラン,LV55,じしん,かげぶんしん,ちきゅうなげ,とっしん
R=0.651 ガルーラ,LV55,ほのおのパンチ,のしかかり,かえんほうしゃ,いわくだき
R=0.646 サイドン,LV55,じしん,ばくれつパンチ,かえんほうしゃ,バブルこうせん
R=0.646 フォレトス,LV55,ころがる,おんがえし,とっしん,スピードスター
R=0.636 フォレトス,LV55,ずつき,すてみタックル,スピードスター,すなあらし
R=0.634 フォレトス,LV55,いわくだき,ソーラービーム,ころがる,すてみタックル
R=0.634 フォレトス,LV55,かげぶんしん,おんがえし,どくどく,いわくだき

ワースト10のパーティは以下のようになりました。

R=-0.601 レディアン,LV55,スピードスター,ばくれつパンチ,かげぶんしん,ずつき
R=-0.596 レディアン,LV55,ソーラービーム,すてみタックル,ずつき,ころがる
R=-0.584 レディアン,LV55,おんがえし,かげぶんしん,すてみタックル,ソーラービーム
R=-0.501 レディアン,LV55,どくどく,おんがえし,スピードスター,はかいこうせん
R=-0.501 レディアン,LV55,はかいこうせん,どくどく,おんがえし,すてみタックル
R=-0.496 レディアン,LV55,ばくれつパンチ,ずつき,れいとうパンチ,ソーラービーム
R=-0.383 ヤンヤンマ,LV55,かげぶんしん,ソーラービーム,ずつき,はがねのつばさ
R=-0.379 ヤンヤンマ,LV55,つばさでうつ,ずつき,ソーラービーム,はがねのつばさ
R=-0.378 ヤンヤンマ,LV55,スピードスター,つばさでうつ,ずつき,ソーラービーム
R=-0.366 ヤンヤンマ,LV55,はがねのつばさ,つばさでうつ,スピードスター,おんがえし

上位はフォレトスが占めています。あまり強いというイメージはないですが、物理技で突破するのは困難なので交代なしのルールでは強いのかもしれません。サイドンなども強力な技を覚えた個体が上位に来ていることが確認できます。下位はレディアンヤンヤンマでした。この時代、タイプ一致の虫タイプも飛行タイプも技に恵まれていないので妥当な結果と思われます。

このように、Q関数でパーティの強さを評価することができそうだと分かりました。今後、既存のパーティを評価するだけでなく、強いパーティの生成を試みたいと思います。