TadaoYamaokaの日記

山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。

将棋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 安定動作するようになったので、前回記…

Windowsのネイティブアプリで例外発生時にデバッガを起動する

Windows XP以前では、プログラムが異常終了すると このようなダイアログが表示されて、デバッガを起動できた。 ※このダイアログはWindows10のものWindows10のデフォルトの設定では、ダイアログが表示されず、アプリがだまって終了する。 一般ユーザには不要…

MuZeroの論文を読む その10(再分析、評価)

今回で、最後です。 付録H 再分析 MuZeroのサンプル効率を改善するために、MuZero Reanalyzeという、わずかに異なるアルゴリズムを導入した。 MuZero Reanalyzeは過去のタイムステップを再検討し、最新のモデルパラメーターを使用して探索を再実行するため、…

Leela Chess Zeroウォッチ

LC0

少し古いが、Leela Chess Zeroの進化をまとめたよい記事があったので、読んでいる。 Leela Chess — Test40, Test50, and beyond - Veedrac - Medium GitHubのissuesから拾うのもしんどいのでまとめがあるとありがたい。Leela Chess Zeroは新しい手法をいくつ…

将棋AIの進捗 その34(終盤力の強化)

前回の日記からしばらくぶりですが、その間SENetの学習を続けていました。 自己対局中の詰み探索の深さ ディープラーニング+MCTS系は終盤に弱点があるので、dlshogiでは自己対局中にルート局面でdf-pnによる詰み探索を行い、詰みが見つかった場合は、ゲーム…

MuZeroの論文を読む その9(訓練)

付録G 訓練 訓練中に、MuZeroネットワークはK個の仮想ステップに対して展開され、MCTSアクターによって生成された軌跡からサンプリングされたシーケンスに合わせられる。 シーケンスは、リプレイバッファ内の任意のゲームから状態をサンプリングし、その状態…

WindowsでPyTorchをC++(Visual C++)で動かす【更新】

以前にWindowsでLibTorchをC++から使う方法について記事を書いたが、内容が古くなったので書き直す。基本的な手順は以前と同じだが、リリースビルドとデバッグビルドの使い分けができるようになっている。最新のLibTorch 1.3は、Release用のバイナリと、Debu…

MuZeroの論文を読む その8(ネットワーク)

付録E ネットワーク入力 表現関数 ボードゲーム 囲碁、チェス、将棋の表現関数への入力として使用されるボード状態の履歴は、AlphaZeroと同様に表される。 囲碁および将棋では、AlphaZeroのように最後の8つのボード状態をエンコードする。 チェスでは、引き…

リバーシ(オセロ)で深層強化学習 その6(Dueling Network)

前回はリバーシでDDQNを試したが、今回は同じくDQNの発展形であるDueling Networkを試す。 Dueling Network [1511.06581] Dueling Network Architectures for Deep Reinforcement LearningDQNでは行動価値を行動価値関数Qで推定するが、Dueling Networkでは…

2つのプログラムの勝率に違いがあるか検定する

昨日書いた記事で、DQNとDDQNのランダムに対する勝率の違いについて、統計的に違いがあると言えるのか検証してみた。 昨日の結果 結果 勝率 DQN 833勝152敗15分 84.57% DDQN 847勝131敗22分 86.61% ※勝率は引き分けを無効として計算した。 仮説検定 以下のよ…

リバーシ(オセロ)で深層強化学習 その5(DDQN)

前回は、環境を並列実行することでDQNの高速化を行った。今回は、DQNの派生形である、Double DQN(DDQN)を試す。 Double DQN(DDQN) 一般的にQ学習は、の項が行動価値を過大評価する傾向があり、それを抑制する手法としてDouble Q学習という手法がDQN以前から…

MuZeroの論文を読む その7(ハイパーパラメータ、データ生成)

付録C ハイパーパラメータ 簡単にするために、以前の研究と同じアーキテクチャの選択とハイパーパラメータを優先的に使用する。 具体的には、AlphaZeroのネットワークアーキテクチャと探索の選択肢から始めた。 ボードゲームでは、AlphaZeroと同じUCB定数、…

MuZeroの論文を読む その6(探索)

付録B 探索 MuZeroで使用される探索アルゴリズムについて説明する。 私たちのアプローチは、信頼区間の上限(UCB; upper confidence bounds)のあるモンテカルロ木探索、単一エージェントドメインの最適な方策とゼロサムゲームのミニマックス価値関数に漸近的…

リバーシ(オセロ)で深層強化学習 その4(並列実行)

前回、DQNでリバーシ(オセロ)の強化学習を試して、ランダムより強くなることを確認した。 しかし、シングルステッドでシングルゲームを繰り返しているため1万イテレーションの実行に約14時間かかった。方策勾配法のアルゴリズムであるA2Cでは、環境を並列実…

リバーシ(オセロ)で深層強化学習 その3(DQN)

前回、DQNのネットワークを教師ありでQ学習で学習した。 今回は、DQNを強化学習で学習する。実装するアルゴリズムは、Nature に掲載された論文「Human-level control through deep reinforcement learning」に基づく。 DeepMindによる公式の実装は、TensorFl…

MuZeroの論文を読む その5(AlphaZeroとの比較)

付録A AlphaZeroとの比較 MuZeroは、AlphaGo Zero*1やAlphaZero*2よりも一般的な設定向けに設計されている。 AlphaZeroのプランニング AlphaGo ZeroとAlphaZeroでは、プランニングプロセスは2つの別個のコンポーネントを使用する。 シミュレーターは、ゲーム…

リバーシ(オセロ)で深層強化学習 その2(教師ありQ学習)

前回、オセロの棋譜の終端の報酬を使用して(TD(1))、教師ありで学習することでランダムより強くなることを確認した。今回は、教師ありでQ学習を試す。 Q学習 Q学習の学習則は以下の式で表される。 は、遷移に対応する即時報酬で、リバーシ(オセロ)の場合、終…

MuZeroの論文を読む その4(結論)

本文の残り、結論の部分です。 結論 人工知能のブレークスルーの多くは、高パフォーマンスプランニングまたはモデルフリー強化学習方法に基づいている。 この論文では、両方のアプローチの利点を組み合わせた方法を紹介した。 私たちのアルゴリズムMuZeroは…

AlphaStarの論文を読む その13(分析、AlphaStarの一般性)

分析 エージェントセット 検証エージェント:メインエージェントのみを使用し、エクスプロイターを使用せずに訓練された17の戦略セットに対するリーグの堅牢性を検証し、zを手で精選された興味深い戦略セット(例:キャノンラッシュや初期飛行ユニット)に修…

MuZeroの論文を読む その3(結果)

結果 MuZeroアルゴリズムを、挑戦的なプランニング問題のベンチマークとしての古典的なボードゲーム囲碁、チェス、将棋、および視覚的に複雑なRLドメインのベンチマークとしてAtari Learning Environmentの57のゲームすべてに適用した。 測定条件 それぞれの…

リバーシ(オセロ)で深層強化学習

先日作成した高速なリバーシライブラリを使って、深層強化学習のアルゴリズムをいろいろ試してみたいと思っている。 DQNの実装 将棋でDQNによる強化学習を試したときはまったく学習しなかったので、まずは教師ありでDQNのネットワークが学習できるか試すこと…

AlphaStarの論文を読む その12(評価)

評価 AlphaStar Battle.netの評価 AlphaStarエージェントは、StarCraft IIバランスパッチ4.9.3で、MMRレーティングに基づくBlizzardのオンラインマッチメイキングシステムBattle.netで人間に対して評価された。 AlphaStar Finalは、グランドマスターレベル(…

AlphaStarの論文を読む その11(インフラ)

インフラ リーグを訓練するために、多数のStarCraft II対戦を並行して実行し、それらのゲームのデータに基づいてエージェントのパラメータを更新する。 これを管理するために、さまざまなタイプの分散ワーカーで非常にスケーラブルな訓練セットアップを開発…

AlphaStarの論文を読む その10(リーグ構成)

リーグ構成(Populating the League) 訓練中、新しいプレイヤーを作成するためにスナップショットが作成されたときの訓練対象の対戦相手の分布と、教師ありパラメーターにリセットされる確率のみが異なる3つのエージェントタイプを使用した。 メインエージェ…

AlphaStarの論文を読む その9(マルチエージェント学習)

マルチエージェント学習 リーグトレーニングはマルチエージェント強化学習アルゴリズムであり、セルフプレイトレーニング中によく発生するサイクルに対処し、多様な戦略を統合するために設計されている。 訓練中に、エージェント(RLアルゴリズムによって訓…

MuZeroの論文を読む その2(MuZeroアルゴリズム)

続きです。 MuZeroアルゴリズム MuZeroアルゴリズムについて詳しく説明する。 予測は、各タイムステップtで、ステップのそれぞれについて、過去の観測および将来の行動を条件とするパラメーターを使用したモデルによって行われる。 モデルは、3つの将来の量…