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

汎用行動選択モデルの3vs3対応 part10 行動の強化学習とパーティ生成の交互実行(学習経過の評価)【PokéAI】

3vs3バトルでの強化学習とパーティ生成の実装が完成したので、1vs1バトルの時と同様、これらを交互に動作させて強いパーティとその適切な運用法を学習します。 実験条件 アルゴリズム自体は1vs1の時と変わりません。 select766.hatenablog.com 反復回数 10 …

汎用行動選択モデルの3vs3対応 part09 Q関数を用いたパーティ生成【PokéAI】

1vs1バトルの時と同様に、強化学習の結果得られる、行動ごとの価値の期待値を表すQ関数を用いて強力なパーティを生成することを試みます。 手法 手法は1vs1バトルの時のものを応用し、3vs3対応のための変更を行います。 select766.hatenablog.com 3vs3対応の…

汎用行動選択モデルの3vs3対応 part08 学習率の調整【PokéAI】

強化学習はアルゴリズムが正しくてもハイパーパラメータ設定により性能が大幅に変わってきます。1vs1バトル環境において、optunaによる調整を行ったところ学習率が最も大きな要素であることがわかりました。 しかしこのパラメータのまま3vs3バトル環境へ適用…

汎用行動選択モデルの3vs3対応 part07 強化学習中の対戦相手【PokéAI】

今回も強化学習の改善を目指します。ポケモンバトルの強化学習の特徴的な要素として、バトル開始時にエージェントに操作すべきパーティが割り当てられるという点があります。バトルごとに異なるパーティが割り当てられ、相手のパーティとの関係性により有利…

汎用行動選択モデルの3vs3対応 part06 学習バトル数と強さ【PokéAI】

モデルの強化学習におけるバトル数は、1vs1の時のパラメータを引き継いで10万に設定していました。3vs3ではそもそもバトル1回あたりのターン数が違うこと、学習すべき行動がより複雑であることから、この値が適切なのかどうか検証しました。 バトル数を10万…

汎用行動選択モデルの3vs3対応 part05 補助報酬の調整【PokéAI】

前回エージェントの強化学習に対して、バトル途中でのHPの増減などに応じた補助報酬を導入し、定量的には強さが向上することを確認しました。 今回は、補助報酬の大きさなどを調整してさらに強くできないか実験します。あらかじめ結果を述べると、前回のパラ…

汎用行動選択モデルの3vs3対応 part04 補助報酬【PokéAI】

前回バトルログを可視化してわかったのは、学習したエージェントの行動でタイプ相性などがある程度考慮されているものの、まだまだ改善の余地が大きいということでした。 この記事から、強化学習手法の改善を試みていきます。 今回は、初代ルールの3vs3のと…

DNNの方策に従来型エンジンのbestmoveをブレンドする コードの動かし方【コンピュータ将棋】

今回の研究用に開発したコードの動かし方と、改良のアイデアを掲載します。私が所持していない、より強力なハードウェアで検証・強化したいという方がもしいらっしゃれば参考にしてください。 記事一覧 DNNの方策に従来型エンジンのbestmoveをブレンドする【…

DNNの方策に従来型エンジンのbestmoveをブレンドする 実装編 part03(終)【コンピュータ将棋】

前回、dlshogiの方策関数にelmoの読み筋をブレンドする実験の結果を示しました。dlshogi同士でこの改造の有無を比較すると改造したほうが強くなるのですが、対戦相手としてelmo単体(dlshogiから呼び出すのではなく、elmoを普通に対局エンジンとして使用する…

汎用行動選択モデルの3vs3対応 part03 バトルログ可視化ツールの作成【PokéAI】

従来、AIによるバトル中の行動を定性的に確認するには、シミュレータの出力する機械向けのログを目視で必死に解読していました。例えば1ターンの進行を表すログはこんな感じです。 | |split|p2 |switch|p2a: Azumarill|Azumarill, L50, M|206/206 |switch|p2…

DNNの方策に従来型エンジンのbestmoveをブレンドする 実装編 part02【コンピュータ将棋】

前回、dlshogiのDNN評価と同時にelmoを呼び出し、bestmoveを取得して利用する最低限の実装をしました。その結果、無改造のdlshogiだと2500nps程度出るところ1900nps程度まで下がるという結果でした。今回はこのnps低下の原因究明と改善を行い、無改造のdlsho…

DNNの方策に従来型エンジンのbestmoveをブレンドする 実装編 part01【コンピュータ将棋】

ブレンドのアイデアを実際の対局エンジンに実装して評価を進めていきます。 dlshogiを改造して実装することにしました。昨日時点の最新版dlshogi cc722f5b2362b0364af063f008a5d922aa8c266eから分岐したこちらのブランチに実装していきます。 GitHub - selec…

DNNの読み抜け例を観察する【コンピュータ将棋】

前回、DNNの方策に従来型エンジンのbestmoveをブレンドすれば読み抜けが減らせるのではないかというアイデアを示しました。 select766.hatenablog.com このアイデアが成立する条件として、DNNで1局面を評価するのと同程度の時間従来型エンジンに手を読ませた…

DNNの方策に従来型エンジンのbestmoveをブレンドする【コンピュータ将棋】

第31回世界コンピュータ将棋選手権の参加申込が始まり、私も久々にコンピュータ将棋の研究を再開しました。 評価関数としてDNNを使い、MCTSで探索を行う将棋AIの弱点として、読みぬけの問題があります。ここで読みぬけとは、DNNが出力した方策で、ほぼ確率0…

汎用行動選択モデルの3vs3対応 part02 単純な学習【PokéAI】

前回提案した、3vs3対応の特徴量を用いて行動選択の強化学習を行っていきます。 パーティ 実験に用いる、3体からなるパーティはランダムに1000個生成しました。各ポケモンの種族・覚える技については過去記事に準拠しています。持ち物なしです。 select766.h…

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

前回まで、汎用行動選択モデルは1vs1バトルの環境で学習をしていました。今回から3vs3バトルに拡張していきます。 select766.hatenablog.com 9月から着手していたのですが、2020年12月時点では、動作しなくはないが定性的にいまひとつの結果という状況です。…

【ポケモンバトルAI本】技術書典10/エアコミケ2 頒布予定【第3巻無料/物理本あり】

技術書典10は2020年12月26日から2021年1月6日まで開催される技術系同人誌の頒布イベントです。新型コロナウイルスの影響によりオンライン開催ですので、お祭り感のある通販のようなものとお考え下さい。 同時に、エアコミケ2にも出展します。こちらはWebカタ…

ゲーム木探索入門 part03 実験用パーティの選定【PokéAI】

前回に続き、ゲーム木探索の下準備をします。 従来行っていたような、ランダムに生成したパーティ1000個を戦わせるような実験が計算コスト上できない見通しです。ランダムなパーティ同士の対戦だと、ポケモンや技自体の強さが大きく離れている場合が多く、パ…

ゲーム木探索入門 part02 シミュレータのパフォーマンス測定【PokéAI】

今回は、ゲーム木探索の下準備をします。実務上の泥臭い話で、AI的な話は出てこないので適当に読み飛ばしてください。 現在ゲーム木探索のもっとも単純な手法として、原始モンテカルロ法(次回以降に説明)の実装を進めています。処理が非常に重いため実験コ…

ゲーム木探索入門 part01 構想と予備実験【PokéAI】

今まで私が開発してきたポケモンバトルAIは、モデルフリー強化学習に基づいてバトル中の行動を選択するものでした。 先日まで1vs1バトルでうまくいった強化学習手法を3vs3に拡張する実験をしていたのですが、学習結果がいまいちという問題に苦労しており(忘…

【ポケモンバトルAI本】技術書典9 頒布予定

技術書典9は2020年9月12日から22日まで開催される技術系同人誌の頒布イベントです。新型コロナウイルスの影響によりオンライン開催ですので、お祭り感のある通販のようなものとお考え下さい。 当サークル「ヤマブキ計算所」は技術書典9へ出展いたします。新…

汎用行動選択モデルの学習 part13 行動の強化学習とパーティ生成の交互実行(結果)【PokéAI】

前回、バトル中の行動の強化学習と、そこで得られたモデルのQ関数を用いて強いパーティを生成するステップを交互に反復する手法を提案しました。 今回はそれを実際に動作させた結果を示します。 実験条件 反復回数 10 パーティ数 Q関数を用いて生成するパー…

汎用行動選択モデルの学習 part12 行動の強化学習とパーティ生成の交互実行(手法)【PokéAI】

前回、強化学習のハイパーパラメータを調整し、疑似教師データを使った教師あり学習よりも強い汎用行動選択モデルを学習させることに成功しました。 これと、汎用行動選択モデルを用いたパーティ生成手法を組み合わせて強いパーティとその適切な運用法を学習…

汎用行動選択モデルの学習 part11 Optunaを用いた強化学習のハイパーパラメータチューニング【PokéAI】

過去数回の記事で使用した汎用行動選択モデルは強化学習で学習したものでしたが、教師あり学習のものより若干弱いものになっていました。 複雑なステップを経る教師あり学習を不要とし、強化学習だけで同等以上のモデルを学習できるようにするため、強化学習…

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

前回、強化学習によって得たQ関数を用いてパーティの強さを定量化する指標(パーティ評価関数)を定義しました。 今回はこれを用いて強力なパーティを生成する手法を説明します。 ここでの目的は、パーティ評価関数R(X)の値が比較的大きいパーティXを多数求…

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

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

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

前回、強化学習で汎用行動選択モデルの学習が可能だということを確認しました。今回はパラメータチューニングは置いておいて、学習結果のモデルの出力を観察してみたいと思います。DQNで学習されるQ関数Q(s, a)は、状態sのときに行動aをとったときの割引報酬…

汎用行動選択モデルの学習 part07 DQNの学習結果【PokéAI】

前回、汎用行動選択モデルを強化学習させるシステムを実装しました。今回はその結果を評価します。 学習条件 強化学習関係のデフォルトの学習条件は以下のように設定しました。 アルゴリズム: DQN (double DQN) 探索: epsilon-greedy ランダム行動する確率ep…

汎用行動選択モデルの学習 part06 DQNの自前実装【PokéAI】

前回まで、教師あり学習であらゆるパーティの行動選択を行えるモデルを学習させ、3層16チャンネル程度の全結合DNNである程度適切な行動がとれることがわかりました。 今回からはバトルの勝敗を報酬とした強化学習に取り組みます。 select766.hatenablog.com …

AWSスポットインスタンスの起動高速化【コンピュータ将棋】

先日の世界コンピュータ将棋オンライン大会では、ねね将棋はAWSのスポットインスタンス上で将棋エンジンを動作させていました。スポットインスタンスはAWS上の余剰計算資源を安価に貸し出すような形態で、余剰が少なくなると強制的に終了されてしまう仮想マ…