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

汎用行動選択モデルの学習 part08 Q関数の観察【PokéAI】

前回、強化学習で汎用行動選択モデルの学習が可能だということを確認しました。今回はパラメータチューニングは置いておいて、学習結果のモデルの出力を観察してみたいと思います。DQNで学習されるQ関数Q(s, a)は、状態sのときに行動aをとったときの割引報酬和の期待値に対応します。ここで、報酬は勝ちが1、負けが-1に設定して学習してあります。うまく学習ができていれば、残りHPであったり相手との相性によってQ値が変動する様子が観察できるはずです。

学習結果のモデル(id:7cf)同士で対戦させ、各局面でのQ値を記録しました。

まず、100パーティ中レート8位のギャラドスを使った場合の結果を示します。1位のカビゴンは相性の影響がある場面が少なかったためです。

むし・くさタイプのパラセクトを相手にしたバトルの全ターンを示します。

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

相手 パラセクト HP127/182  
自分 ギャラドス HP174/220  
技       Q値
いわくだき   0.48
ハイドロポンプ 0.50
なみのり    0.55
のしかかり   0.75
選択=> のしかかり

相手 パラセクト HP80/182 par 
自分 ギャラドス HP174/220  
技       Q値
いわくだき   0.85
ハイドロポンプ 0.85
なみのり    0.89
のしかかり   0.91
選択=> のしかかり

相手 パラセクト HP32/182 par 
自分 ギャラドス HP174/220  
技       Q値
いわくだき   0.94
ハイドロポンプ 0.93
なみのり    0.97
のしかかり   1.00
選択=> のしかかり

ハイドロポンプ等の水技が半減なので、のしかかりのQ値が相対的に高くそれが実際の行動として選ばれています。そして、相手のHPが減り、自分のHPがあまり減少していないという勝利に近い状況になるとQ値が大きくなっており、期待通りの結果になっているといえます。

次は天敵である電気タイプのサンダースとの対戦です。

相手 サンダース HP187/187  
自分 ギャラドス HP220/220  
技       Q値
いわくだき   0.02
ハイドロポンプ 0.15
なみのり    0.15
のしかかり   0.22
選択=> のしかかり

相手 サンダース HP130/187  
自分 ギャラドス HP220/220  
技       Q値
いわくだき   0.33
ハイドロポンプ 0.52
なみのり    0.46
のしかかり   0.51
選択=> ハイドロポンプ

相手 サンダース HP64/187  
自分 ギャラドス HP220/220  
技       Q値
いわくだき   0.65
ハイドロポンプ 0.70
なみのり    0.72
のしかかり   0.71
選択=> なみのり

最初のターンの時点で、パラセクト戦のときよりQ値が低いことがわかります。なお、自分のポケモンは種族を特徴量と入れており、相手のポケモンについては種族は入れずにタイプを入れています。タイプ相性による有利不利を判断できていると考えられます。

水技が抜群となるニドクインとの対面を示します。

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

水技のQ値が高くなっており、技と相手の相性についても認識ができています。

相手 ギャラドス HP220/220  
自分 ニドクイン HP215/215  
技       Q値
10まんボルト -0.25
だいもんじ   0.46
バブルこうせん -0.37
ほのおのパンチ 0.34
選択=> だいもんじ

逆にニドクイン側は最適な10まんボルトのQ値がかなり低くなっており、間違いもまだまだ多いです。このような間違いにより強化学習モデルは教師あり学習モデルより弱くなっていると考えられます。

次に、レート最下位のエイパムについての結果を示します。

電気技が有効なフリーザーとの対戦です。

相手 フリーザー HP215/215  
自分 エイパム HP176/176  
技       Q値
でんじほう   0.24
10まんボルト 0.17
いわくだき   -0.07
どくどく    0.31
選択=> どくどく

相手 フリーザー HP197/215 tox 
自分 エイパム HP102/176  
技       Q値
でんじほう   0.10
10まんボルト 0.10
いわくだき   -0.03
どくどく    0.04
選択=> 10まんボルト

相手 フリーザー HP123/215 tox 
自分 エイパム HP31/176  
技       Q値
でんじほう   -0.20
10まんボルト -0.29
いわくだき   -0.42
どくどく    -0.36
選択=> でんじほう

まずどくどくで状態異常にしてから、電気技で攻めていくという戦略です。とはいえフリーザーの能力値が高いので勝てそうにないですが。ほかのバトルも観察すると、相手が状態異常でないときにどくどくを使うのではなく、自分のHPが減っていないときに使うという判断に見えました。

この技構成では手も足も出ないニドクインとの対面を示します。

相手 ニドクイン HP215/215  
自分 エイパム HP176/176  
技       Q値
でんじほう   -0.35
10まんボルト -0.78
いわくだき   -0.69
どくどく    -0.33
選択=> どくどく

初手の時点ですでにすべてのQ値がマイナスです。

この対面の最終ターンです。

相手 ニドクイン HP215/215  
自分 エイパム HP5/176  
技       Q値
でんじほう   -1.06
10まんボルト -1.16
いわくだき   -1.15
どくどく    -1.12
選択=> でんじほう

負けが確定的な場面で、Q値が-1より低くなっています。

ここまでで、タイプ相性やHPの減り方によってQ値が期待通り変動していることを確認できました。

さらに、相性があまり関係ない相手との最初のターンにおける出力を比較してみます。

相手 リングマ HP215/215  
自分 ギャラドス HP220/220  
技       Q値
いわくだき   -0.07
ハイドロポンプ 0.30
なみのり    -0.11
のしかかり   0.02
選択=> ハイドロポンプ
相手 リングマ HP215/215  
自分 エイパム HP176/176  
技       Q値
でんじほう   -0.27
10まんボルト -0.58
いわくだき   -0.58
どくどく    -0.39
選択=> でんじほう

自分のポケモンによってQ値に大きな違いがあることがわかります。特にいわくだきに対するQ値は、入力特徴としては自分のポケモンの種族だけが異なっている状態であり、ポケモンの強さを表現しているものと考えられます。またいわくだきは比較的弱い技なので、他の技より低いQ値となることが多いです。 ここから、「バトルの最初のターンにおけるQ値を、パーティの良さを表す指標として使えるのではないか」という仮説を提唱します。 パーティの良さを表す指標=パーティ評価関数を用いて強いパーティを構築する手法は過去に提案しました。このときはバトル中の行動の強化学習とは別個にパーティ評価関数を学習していましたが、Q関数の利用によりパーティの生成も実現できることが期待されます。

今回は、強化学習によって得たQ関数を用いて、バトル中の様々な状況におけるQ値を観察しました。タイプ相性やHPの減り方によってQ値が期待通り変動していることを確認できました。さらに、バトルの最初のターンにおけるQ値はパーティの良さを表しているという仮説を立てました。今後、Q関数をパーティ生成に活用する手法を検討します。