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

汎用行動選択モデルの学習 part03 パーティ固有行動選択モデルを用いた学習データの生成【PokéAI】

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

この記事では、モデルの構造を検討するための疑似教師データの作成を考えます。

汎用行動選択モデルではDeep Neural Networkを用いることを考えていますが、パーティの情報を取り入れるための構造や、パラメータ数の自由度が非常に大きいため適切な規模のものを選ぶ必要があります。 モデルを強化学習させると強化学習自体にも様々なパラメータが必要(割引率やreplay bufferのサイズ等)で、探索が大変です。 そのため強化学習の適切なパラメータがわかっているパーティ固有モデルを用いて局面ごとの行動の正解を生成します。パーティ固有モデルは1パーティに対し1つのモデルが対応します。様々なパーティに対しそれぞれパーティ固有モデルを強化学習させ、その行動データを集積し、それを1つの汎用行動選択モデルに教師あり学習させるという流れを提案します。パーティ固有モデルにより選択された行動を疑似教師データと呼ぶことにします。「疑似」とついているのは、パーティ固有モデルの強化学習が完ぺきではなく、必ずしも最適な行動を選択できるわけではないということを指しています。

疑似教師データの作成を実装しました。パーティをランダムに1000個生成させ、それぞれに対してパーティ固有モデルを学習させます。パーティの条件は前パートで検討した最終進化系ポケモンだけを含むものです。強化学習中の対戦相手は自分以外のパーティがランダムに行動するエージェントです。 こうして学習させたエージェント同士を対戦させ、対戦ログを保存する仕組みを用意しました。対戦ログには、各ターンにおける状況(相手のポケモンの種族、残りHP、状態異常など)・自分のパーティの情報(ポケモンの種族、覚えている技など)、エージェントが選択した行動が含まれます。

実際のログを整形していくつか表示します。

凡例

自分のポケモン(FはFriend)
自分のポケモンの技構成
相手のポケモン(OはOpponent)
=> 選択した行動
F マタドガス 187/187  
ころがる 10まんボルト でんじほう だいもんじ
O オムスター 193/193  
=> 10まんボルト

F ラフレシア 198/198  
はかいこうせん やどりぎのタネ ギガドレイン おんがえし
O ウソッキー 193/193  
=> ギガドレイン

F ラプラス 259/259  
いわくだき 10まんボルト サイコキネシス ハイドロポンプ
O オクタン 198/198  
=> サイコキネシス

F ブーバー 187/187  
すてみタックル サイコキネシス いわくだき ずつき
O ジュゴン 215/215  
=> いわくだき

必ずしも最適とは言えないですが、ある程度「こうかはばつぐん」な行動を選べています。

次の例は1つのバトル中の行動系列を示したものです。

F プテラ 204/204  
かげぶんしん つばさでうつ どくどく だいもんじ
O ポリゴン2 209/209  
=> どくどく

F プテラ 157/204  
かげぶんしん つばさでうつ どくどく だいもんじ
O ポリゴン2 185/209 tox 
=> だいもんじ

F プテラ 108/204  
かげぶんしん つばさでうつ どくどく だいもんじ
O ポリゴン2 106/209 tox 
=> かげぶんしん

F プテラ 63/204   evasion+1
かげぶんしん つばさでうつ どくどく だいもんじ
O ポリゴン2 56/209 tox 
=> かげぶんしん

F プテラ 63/204   evasion+2
かげぶんしん つばさでうつ どくどく だいもんじ
O ポリゴン2 4/209 tox 
=> だいもんじ

toxは猛毒状態、evasion+1は回避率が1段階上がった状態です。どくどくのあとかげぶんしんで逃げ回るという戦略のエージェントも存在しました。

次回は、このデータを教師データとしてパーティ固有モデルの学習を試みます。