TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

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

将棋AIの進捗 その43(探索パラメータ調整)

未訪問ノードのQの初期値の変更と、FPU reductionを導入してから、探索パラメータの再調整を行っていなかったので、Optunaで最適化を行った。FPU reductionはKataGoを参考に、ルートノードは0としていたが、パラメータにして調整するようにした。 また、Leel…

usiToCsa.rbのdlshogi対応

世界コンピュータ将棋オンライン大会の対戦環境をテストしていて、クライアントの将棋所からssh経由でサーバでdlshogiを実行していたが、回線が不安定なため途中で切れることがあったので、サーバから直接接続する方式に変更することにした。dlshogiは標準入…

Agent57: Outperforming the Atari Human Benchmarkを読む その9

付録B B.外発的-内発的分解 内発的に動機付けられたエージェントの場合、報酬関数は、固有の報酬と外部の報酬の線形結合である。 価値の反復スキームを使用して、最適な状態行動価値関数を計算できる。 ここで、は任意に初期化できる。 ここで、別々の内発的…

Agent57: Outperforming the Atari Human Benchmarkを読む その8

付録も読んでいきます。数式多めです。ほぼ自分のメモのために訳しています。 付録A MDPの背景 マルコフ決定プロセス(MDP)はタプルであり、Xは状態空間、Aは行動空間、Pは各状態行動タプルを状態上の確率分布(行動aを選択してxから状態yに遷移する確率を…

将棋AIの進捗 その42(TensorRT対応)

TensorRTがdlshogiのDNNの推論においても効果があることがわかったので、TensorRTをdlshogiに組み込んだ。 Tensorコアを搭載したGPUでは、以前のcuDNN版に比べて推論が大幅に高速化される。 実装 ONNXから読み込んだネットワークのビルドには数十秒近く時間…

Agent57: Outperforming the Atari Human Benchmarkを読む その7

結論 57のすべてのAtariゲームで、人間のベンチマークを超えるパフォーマンスを持つ最初の深層強化学習エージェントを紹介した。 エージェントは、そのような多様なゲームセット(探索と活用、および長期的な信用割り当て)でパフォーマンスを発揮するために…

Agent57: Outperforming the Atari Human Benchmarkを読む その6

Backprop Through Timeのウィンドウサイズ この節では、backprop through timeのウィンドウサイズを使用することの影響を分析する。 より具体的には、NGUまたは提案する改善を行わないことでその効果を確認するために、基本アルゴリズムR2D2への影響を分析す…

TensorRTのパフォーマンス測定

先日試したTensorRTをdlshogiのネットワークの推論で試せるようにしたので、パフォーマンスを測定してみた。バッチサイズを可変にして、プロファイル最適化も行った。 測定条件 floodgateの棋譜からサンプリングした10万局面の推論時間を測定する。 バッチサ…

Agent57: Outperforming the Atari Human Benchmarkを読む その5

状態行動価値関数のパラメーター化 まず、「ランダムコイン」と呼ばれるミニマリズムグリッドワールド環境に対する状態行動価値関数のパラメーター化の影響を評価する。 これは、サイズが15×15の空の部屋で構成され、各エピソードの開始時にコインとエージェ…

Agent57: Outperforming the Atari Human Benchmarkを読む その4

実験 この章では、まず実験のセットアップについて説明する。 NGUに続いて、Agent57はサイズN = 32の係数のファミリーを使用する。 割引の選択はNGUのそれとは異なり、0.99から0.9999の範囲のより高い値を可能にする(詳細については付録G.1を参照)。 メタ…

将棋AIの進捗 その41(1サイクルあたりの生成局面数)

dlshogiの今の10ブロックの192フィルタのモデルは、2018年6月から学習を開始して、何度かモデルの精度が飽和して強くならなくなったが、そのたびに新しい手動を導入して現在まで継続して強くできている。201サイクル目からはリーグ戦を導入して、218サイクル…

WindowsでTensorRTを動かす

ねね将棋がTensorRTを使用しているということで、dlshogiでもTensorRTが使えないかと思って調べている。 TensorRTのドキュメントを読むと、JetsonやTeslaしか使えないように見えるが、リリースノートにGeForceの記述もあるので、GeForceでも動作するようであ…

将棋AIの進捗 その40(マルチGPUの性能)

以前のdlshogiは、マルチGPUで動かした場合、4GPUまでは線形にNPSが伸びるがそれ以上GPUを増やしてもNPSが伸びなかった。 ハッシュテーブルのロックにボトルネックがありそうだ思っていたので、今回ロックの範囲を修正してマルチGPUでの性能を改善した。 ロ…

Agent57: Outperforming the Atari Human Benchmarkを読む その3

NGUの改善 状態行動価値関数のパラメーター化 提案されているアーキテクチャの改善は、次のように状態行動価値関数を分割することである。 ここで、とは、それぞれの外部コンポーネントと組み込みコンポーネントである。 重みのセットとは、同一のアーキテク…

Agent57: Outperforming the Atari Human Benchmarkを読む その2

背景:Never Give Up(NGU) NGU上に構築する2つのアイディア 私たちの研究は、2つのアイデアを組み合わせたNGUエージェントの上に構築される。 1つは、好奇心主導型の探索、2つ目は、分散型の深層RLエージェント、特にR2D2である。 NGUの報酬 NGUは、探索を…

Agent57: Outperforming the Atari Human Benchmarkを読む

DeepMindが発表したAgent57: Outperforming the Atari Human Benchmarkの論文を読んでいきます。Agent57のすべてのゲームで人間のパフォーマンスを上回ったようです。 モンテズマリベンジのような長期的な目標を必要とするゲームは強化学習アルゴリズムが苦…

wxWidgetsをVisual Studio 2019でビルドする

マルチプラットフォームのGUIツールキットであるwxWidgetsをVisual Studio 2019でビルドする方法についてです。 ほぼ自分用のメモです。 ダウンロード 公式ページから最新のソースをダウンロードする。 ダウンロードしたソースを適当なフォルダに解凍する。 …

リバーシ(オセロ)で深層強化学習 その7(Prioritized Experience Replay)

リバーシ(オセロ)で深層強化学習を試すシリーズ、前回からしばらく空いたが、今回はPrioritized Experience Replayを試す。 Prioritized Experience Replay 強化学習では、サンプルの時間依存の相関を弱めるために、サンプルを乱択する経験再生(experience …

将棋AIの進捗 その39(リーグ戦)

年末にCPUを3970Xに変えてから、USIエンジンをリーグに加えた強化学習を行っている。 USIエンジンを各探索スレッドにつき2つ、GPUにつき探索スレッドを3つ、3GPUで探索を行っているので、合計18プロセス起動している。 メモリの制約が厳しくこれ以上は起動で…

将棋AIの進捗 その38(SWA)

dlshogiの学習にSWA(Stochastic Weight Averaging)を実装して、測定した。 SWA SWA(Stochastic Weight Averaging)は、一定間隔での重みを平均化することで、ニューラルネットワークのテスト精度を改善するテクニックである。 一般的なアンサンブルの手法では…

将棋AIの進捗 その37(FPU reduction)

昨日、MCTSで未訪問のノードの価値を、動的に親ノードの価値で初期化する方法を試した。 その結果、技巧2(4コア)に対する勝率が、60%から69%(R+68.6)になった。 昨日の結果の考察 今までは0.5(引き分け)で初期化していたため、劣勢の局面で未探索のノードが…

将棋AIの進捗 その36(UCBの価値の初期値)

AlphaZeroのMCTSのUCBには、 という式が使用されており、このUCBで行動価値の信頼区間の上限を見積もっている。は、行動の行動価値を、探索を行った結果得られた価値の平均で推定する。 ここで、のときは未定義であるため、何らかの値で推定する必要がある。…

将棋AIの進捗 その35(PyTorchに移行)

年末に新しいCPUが届いたので、正月はPCを組んでいた。 同時にフルタワーケースを買ったのだが、GPU3枚だと熱対策をしないと安定動作しなかったので、ドリルで加工してファンを増設したりと正月から働いてしまったorz 安定動作するようになったので、前回記…