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

汎用行動選択モデルの3vs3対応 part01 入出力の拡張【PokéAI】

前回まで、汎用行動選択モデルは1vs1バトルの環境で学習をしていました。今回から3vs3バトルに拡張していきます。

select766.hatenablog.com

9月から着手していたのですが、2020年12月時点では、動作しなくはないが定性的にいまひとつの結果という状況です。それもあって全く新しい手段である木構造探索に手を付けているのですが、時間がたつと忘れてしまうので、進捗を書き留めておきたいと思います。

本記事では、1vs1バトルのシステムから最小限の変更で3vs3バトルを可能にします。汎用行動選択モデルにおける行動選択の仕組みは、(ディープニューラルネットワーク=DNNで表現された)Q関数に選択肢を表現したベクトルを入力し、その出力が最大となるような選択肢を選ぶというものでした。1vs1バトルでは選択肢は場に出ているポケモンが覚えている技4つのうちどれを選択するかでした。3vs3バトルでは、技のほかに、控えのポケモン(最大2体)のいずれかと交代する選択肢が追加されます。選択肢を表現するベクトルが交代を表現できるようにすれば、3vs3バトルが可能になると考えられます。パーティ固有行動選択モデルだと、(ポケモン1の技1(のQ値), ポケモン1の技2, ポケモン1の技3, ポケモン1の技4, ポケモン1に交代, ポケモン1に強制交代, ポケモン2の技1, ...という固定の18次元ベクトルを出力するようにしていました。汎用行動選択モデルでは、Q関数自体の出力はスカラー値で、場に出ているポケモンの技4種類それぞれに対応するベクトルと控えのポケモン最大2体に交代するベクトルの最大6つのベクトルを独立にQ関数に入力することになります。

Q関数へ入力するベクトルは、残りHPや状態異常などバトルの状態を表した「状態特徴量」と選択肢固有の情報を表した「選択肢特徴量」を連結して生成します。

状態特徴量は1vs1バトルのときと同じです。

特徴 次元数 自分/相手 説明
生存ポケモン 1 両方 瀕死でないポケモン数/全ポケモン
ポケモンタイプ 17 相手 場に出ているポケモンポケモンのタイプ(ノーマル・水・…)に該当する次元に1を設定
HP残存率 1 両方 場に出ているポケモンの現在HP/最大HP
状態異常 6 両方 場に出ているポケモンの状態異常(どく・もうどく・まひ・やけど・ねむり・こおりのうち該当次元に1を設定)
ランク補正 6 両方 場に出ているポケモンのランク補正(こうげき・ぼうぎょ・とくこう・とくぼう・すばやさ・命中・回避それぞれ、ランク/12+0.5を設定)
天候 3 - 場の天候(はれ・あめ・すなあらし)に該当する次元に1を設定

選択肢特徴量は以下のようになります。

特徴 次元数 説明
交代 1 選択肢が交代(強制交代も含む)を表すとき1
強制交代 1 選択肢が強制交代を表すとき1
ポケモン 251 技の選択肢では、場に出ているポケモンに対応する次元を1にする。交代・強制交代の選択肢では、交代して繰り出すポケモンに対応する次元を1にする。
267 技の選択肢では、繰り出す技に対応する次元を1にする。交代・強制交代の選択肢では、交代して繰り出すポケモンが覚えている技すべてに対応する次元を1にする。
持ち物 47 技の選択肢では、場に出ているポケモンの持ち物に対応する次元を1にする。交代・強制交代の選択肢では、交代して繰り出すポケモンの持ち物に対応する次元を1にする。

強制交代とは、場に出ているポケモンが瀕死となった際に交代先となる控えのポケモンを選択する場合を指します。3vs3バトルのために追加した要素は交代・強制交代の2次元だけです。この入力で交代を含めた行動の選択が可能であると考えた理由は、1vs1バトルでのQ関数の出力を観察した結果です。

select766.hatenablog.com

この観察から、場に出ている自分のポケモンと相手のポケモンの相性にあわせてQ値が変動していることがわかります。相性の情報は、状態特徴量における相手のタイプと、選択肢特徴量における自分のポケモンの種族から判定するようにQ関数が学習されたと考えられます。仮にそのQ関数の入力として自分の場に出ているポケモンを表す部分に交代先のポケモンの情報を入れた場合、そのポケモンが相手のポケモンに対して相性が良いのであれば高いQ値、相性が悪ければ低いQ値が得られ、自然に交代を行動選択に考慮可能であると考えました。技の部分についても、相手のポケモンに有効な技を持っていれば高いQ値が得られると期待できます。ただし、交代に1ターンかかるので場に出ているポケモンが技を出す場合と比べ、同じ技であってもQ値を割り引く必要があります。それを考慮可能とするため、選択肢特徴量に交代であるかどうかの情報を含めました。

細かいことですが、ポケモン金銀における技は251種類ですが、めざめるパワーについて、タイプ不定のもののほか、16タイプそれぞれを別の技として追加してあります。ただ当面はめざめるパワーを覚えたポケモンは使用しません。持ち物については「持ち物なし」に対応する次元を含めてあります。こちらも当面持ち物なしの環境で実験を行います。過去記事で決めた有効なポケモン・技のサブセットを継承しています。

select766.hatenablog.com

次回以降、この拡張を用いて強化学習を試みます。