TadaoYamaokaの開発日記

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

2019-12-01から1ヶ月間の記事一覧

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 | by 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を手で精選された興味深い戦略セット(例:キャノンラッシュや初期飛行ユニット)に修…