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

2020-01-01から1年間の記事一覧

汎用行動選択モデルの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上の余剰計算資源を安価に貸し出すような形態で、余剰が少なくなると強制的に終了されてしまう仮想マ…

TensorRTのバッチサイズチューニング【コンピュータ将棋】

前回の記事ではNVIDIA GPU上でDNNモデルを高速実行できるライブラリであるTensorRTの使い方について紹介しました。 select766.hatenablog.com その中で、最適化プロファイルの設定というチューニング項目の効果について紹介します。 TensorRTはモデルとGPUの…

USIプロトコルのコンピュータ将棋エンジンのフェイルオーバーツール【コンピュータ将棋】

コンピュータ将棋エンジンの強さを最大化するにはAWS等のクラウド上の強力なマシンの利用が不可欠ですが、大会で本番対局中に回線が切れるという可能性があります。また普段より性能の高いマシンで十分に動作テストが行えず、クラッシュするリスクもあります…

TensorRTを用いて将棋AI向けDeep Neural Networkの推論を高速化する【コンピュータ将棋】

TensorRTは、NVIDIA社が提供している、Deep Neural Networkの推論を高速に行うライブラリです。NVIDIA社のGPU上での推論(学習済みモデルの実行)に特化しており、CaffeやPyTorchで学習したモデルを読み込んで実行計画を最適化したうえで推論してくれます。も…

【ジュウオウ】ポケモン名っぽい駅名 part03終 Character-level Recurrent Neural Networkによるポケモン名らしさの定量化【一発ネタ】

前回学習させた、ポケモン名を表現するCharacter-level RNNを用いて、ポケモン名っぽい駅名を探します。 select766.hatenablog.com 前回の実験ではCharacter-level RNNを用いてポケモン名っぽい文字列を生成しました。このモデルは、与えられた文字列の自然…

【ガメハチ】ポケモン名っぽい駅名 part02 Character-level Recurrent Neural Networkの学習【一発ネタ】

前回はポケモン名を一部に含む駅名を抽出する単純な実験を行いました。今回は、自然言語処理技術を導入してポケモン名をモデル化します。 select766.hatenablog.com モデルの構造として、Character-level Recurrent Neural Network (Character-level RNN)と…

【ハッサム】ポケモン名っぽい駅名 part01 文字列一致【一発ネタ】

とあるゲーム実況放送にて、「ハッサムというポケモンがいるが、北海道には発寒(はっさむと発音)駅がある」という話題がありました。 ポケモンの名前っぽさとは何か、駅名の中でほかにポケモン名っぽいものがないかが気になったので、自然言語処理の側面か…

技術書典応援祭(技術書典8代替オンラインイベント)頒布予定

技術書典 応援祭は新型コロナウイルス問題で中止となった技術書典8(2020年3月1日)の代替となるオンラインイベントです。2020年3月7日から約1か月間開催されます。 当サークル「ヤマブキ計算所」は技術書典 応援祭へ出展いたしますので、頒布内容をお知らせ…

汎用行動選択モデルの学習 part05 教師あり学習の定性評価【PokéAI】

学習した汎用行動選択モデルの挙動を定性的に確認してみます。 前回の記事で最も精度が高かったモデル(3層、チャンネル数16、バッチ正規化なし)に対しvalidationデータを入力し、モデルの出力(選択した技)および正解データを表示します。正解データはパ…

汎用行動選択モデルの学習 part04 教師あり学習【PokéAI】

前回作成した教師データを用いて、汎用行動選択モデルの学習を試みます。 select766.hatenablog.com 以下のようにバトルの状態を入力とし、適切な行動(技)を選択するモデルを学習することが目標です。 F マタドガス 187/187 ころがる 10まんボルト でん…

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

任意のパーティを受け取って、バトル中の行動(技)を選択する「汎用行動選択モデル」を学習していきます。 この記事では、モデルの構造を検討するための疑似教師データの作成を考えます。 汎用行動選択モデルではDeep Neural Networkを用いることを考えてい…

汎用行動選択モデルの学習 part02 ポケモン・技のサブセット作成【PokéAI】

任意のパーティを受け取って、バトル中の行動(技)を選択する「汎用行動選択モデル」を学習していきます。 この記事では、学習を容易にするためポケモン・技の数を制限する手法を考えます。 バトルのルールの前提条件は、 ポケモン金銀ルール パーティのポ…

汎用行動選択モデルの学習 part01 構想【PokéAI】

今までポケモンバトル中の行動選択を行うモデルは、パーティごとに別個のパラメータを学習していました。しかし今後の発展を考えるとこの方式は難点があり、あらゆるパーティの行動選択を行える単一のモデルを学習したいと思いました。 昨年8月を最後にイベ…

技術書典→コミックマーケット 出展方法の差分

私は2018年10月に技術書典5で同人誌即売会に初サークル参加した後、2019年4月に技術書典6にもサークル参加、そして先日2019年12月にコミックマーケット97(コミケ)にサークル参加しました。 技術書典とコミケでは勝手が違う部分もあったので、その差分に特…

コミックマーケット97 振り返り(出展側)

当ブログのサークル「ヤマブキ計算所」は2019年12月31日にコミックマーケット97(コミケ)にてポケモンバトルAI本「PokéAI」シリーズを頒布いたしました。 まずは会場でお買い上げくださった方に感謝申し上げます。会場に来られなかった方にも電子版(PDFダウン…