Transformerを用いた探索的NNの学習(失敗編)

以下の続き。 前回までの手法では多少改善は得られたものの、探索回数を増やすほど性能が良くなるような性質は得られなかった。またこのやり方では本質的にゲームであることを利用しておらず、一般的に画像認識等でも利用できるものになっており、スコープが…

AobaZeroの棋譜を用いた教師あり学習 192ch

今回は普段128chである残差ブロック中のCNNを192chに増やして学習を行った。 学習結果 左:Policy損失 右:Value損失 どちらも学習損失では192chの方がやや良いのだが、検証損失ではそこまで差が出ていない。 学習時間はやや長くなり45時間、約二日であった。 …

Miacisを用いた教師あり学習の実行手順

AobaZeroの棋譜を用いて学習し、floodgateの棋譜を用いて検証する場合を説明します。 前提 Ubuntu 18.04でのみ検証ができています。おそらくUbuntu 16.04や20.04でも大丈夫だとは思いますが、未検証です。Windowsでも最近のWSL2やDocker for Windowsでできる…

LSTMを用いた探索的NNの学習:単純なLSTM

以下の続き。 前回はLSTMによくわからない工夫を入れることで探索(?)回数が増えると損失が落ちる結果を得ることができた。 今回はもっと単純に本当にLSTMだけを使うものと比較する。 手法 余計な部分を加えず、LSTMで単純に規定回数だけ推論してから出力す…

LSTMを用いた探索的NNの学習

以下の続き。 前回はMCTSNetの学習方法を工夫することで上手く学習できた。 今回はそれに対する提案手法に近いものとして、LSTMを用いてGPU上のみで探索的な振る舞いを可能にするモデルについて実験を行った。 手法 Simulation Policyに相当するLSTMは状態の…

AobaZeroの棋譜を用いた教師あり学習

前回、AobaZeroの棋譜を取得できるようになった。floodgateの棋譜についてもダウンロードスクリプトを整備し、実験手順を再現しやすいように仕組みをやや変えたので教師あり学習をやり直すことにした。 棋譜について floodgateの棋譜(いつも通りの設定) 20…

MCTSNetの学習結果(Simulation Policyの廃止)

以下の続き。 前回はMCTSNetの学習式に従って実験したが、結果は振るわなかった。学習の挙動などを見ていて、個人的な印象としてはSimulation Policyを方策勾配法のような形で学習していくのは難しいように感じている。 具体的な要因としては、特に学習序盤…

AobaZeroの棋譜をコマンドラインからダウンロードする

ありがたいことにAobaZeroの学習データはGoogleドライブで公開されている。 Dockerコンテナ内などコマンドラインしか使えない環境でもダウンロードできるようにシェルスクリプトを作成した。 最終的なシェルスクリプト これと同階層にAobaZero_kifuID.csvを…

事前学習を含めたMCTSNetの学習結果

以下の続き。 前回はエンコーダ部分(MCTSNetのEmbedネットワーク)だけ事前学習したものを用いた。結果的に0回探索でも事前学習より悪い損失に留まり、また探索回数を増やしたときに性能向上しなかった。対策案として今回は次の2点について修正を行った。 勾…

エンコーダを凍結した探索系NNの学習結果

以下の続き。 前回の学習の反省としてエンコーダ側を事前学習し、凍結することにした。事前学習でのPolicy損失は1.85であった。 実験結果 全体の結果 前回に比べて値が安定するようになり、MCTSnetはかなり低い値まで下がっていった。しかし単純な探索なしで…

囲碁のルールについてのメモ

Miacisをコンピュータ囲碁にも対応させようかと思って調べてみているが、意外と詰まるところが多そうだ。やっぱりあまり知らないゲームの実装は難しい。とりあえずここまでの考えをメモしておく。 プロトコル 基本的にはGo Text Protocolに対応していれば良…

探索系NNの学習結果

とりあえず試しで回した学習が一通り終わったので結果をまとめる。 実験設定 将棋での教師あり学習でモデルの学習を行い、Policy損失を比較した。 比較手法 探索なしの全結合ネットワーク MCTSnet 提案手法 Stacked LSTM(Deep Repeated ConvLSTMを意識したも…

128チャンネルで1ヶ月学習(2回目)

5月の世界コンピュータ将棋オンライン大会が終わってから、実験サイクルを早めるため学習は64チャンネルのネットワークで行っていた。しかしlibtorch1.5.0版に対応した影響で後方互換性がなくなり、すぐ動かせる強いパラメータが手元ないと細かい動作の検証…

MCTSnetの学習(仮)

MCTSnetのだいたいの実装が終わり、将棋での教師あり学習を回し始めている。 論文通りの損失ではないけどとりあえずMCTSnetの将棋での教師あり学習が回るようになったが、やっぱり探索回数が増えると損失がハチャメチャになっているし、これが逆転してくる未…

時系列モデルが木構造を学習できることの検証

前回の考察では、時系列モデルが暗黙のうちに木構造を学習できるので木の遷移履歴を時系列展開しても良いという仮説を立てた。この仮説を多少なりとも検証するため、今回は木に関する簡単なタスクを考えて、それが学習可能かどうかを実験により確かめた。 実…

MCTSnetの損失計算部

MCTSnetの解説は他にもある ので、そちらも参照されたし。この記事では損失計算部分にだけ注目して記述する。 arXiv版とOpenReview版は式番号が異なるので注意。OpenReview(ICLR2018)で一回Rejectになって、ICML2018に通っていて、arXivの最新版はそのICMLに…

木探索についての考察2

以下の続き。 木探索がそもそもどういうものであるかと考えると、状態をノード、行動をエッジとして構築されるグラフ上を遷移しつつ、ノード上の価値を更新していく作業だと思われる。モンテカルロ木探索の選択ステップに「一個親のノードへ戻る」という選択…

Differentiable Neural Computersの実装

で書いた通り、ワーキングメモリモジュールを持つ探索マネージャについて考えている。 ワーキングメモリモジュールとしては LSTM Neural Turing Machine Differentiable Neural Computer Transformer(Compressive Transformer) あたりが可能性ありそうなのか…

学習スレッドのスリープ時間と学習速度の関係

現状では少ない計算資源の下でできるだけAlphaZeroの設定に近づけるために、学習スレッドは1ステップごとに定数時間のスリープ時間を入れて、学習量に対して生成量が十分になるように調整している。スリープ時間をどの程度にすれば良いのかを決めるため、今…

AtCoder Beginner Contest 171

結果 順位 3812th / 10526 パフォーマンス 856 レーティング 1784 → 1718(-66) 気が狂うほど何もわからない回だった。二夜連続の3桁パフォーマンスは精神に来る。先週が+49, +45で喜んでいたら今週-63,-66でひどい取り立てだ。借金取りだってもう少し良心的…

最近木探索について考えていること

最近、「探索の仕方自体を学習する」手法について興味が出ている。AlphaZeroの手法をニューラルネットワーク + モンテカルロ木探索として分けて見た場合、前者は学習されるが後者は固定的なアルゴリズムとなっているため、ここを学習にすることができればよ…

【コンピュータオセロ8】全結合ネットワークでの学習・対局

要約 全結合ネットワークにした場合、CNNの場合よりもレートが200ほど落ちてしまった。オセロにおいて終盤の評価が難しいのはゲームの性質による問題の可能性がある。 背景 オセロでの対局を検証していると、終盤での状態価値推定の精度が良くないのではない…

【コンピュータオセロ7】優先度付き経験再生の検証

要約 優先度付き経験再生はオフにした方が良さそう。 背景 比較実験でAlphaZeroの学習が妙に弱いことがわかった。 原因として優先度付き経験再生が悪さをしている可能性が考えられた。優先度付き経験再生は1年前の検証で結果が良かったので採用したのだが、…

【コンピュータオセロ6】2つネットワークを使った強化学習

要約 2つネットワークを用いて対局させても学習時間が長くなるばかりで学習高速化とか性能向上といった改善は見られなかった。 背景 個人的に、今まで手元で行ったAlphaZero学習ほぼ全てについて、最終的に得られるモデルが 対抗形に弱い 穴熊の評価がおかし…

【コンピュータオセロ5】比較実験

前回、余計な探索の工夫を入れようとしなければカテゴリカルモデルがやや性能向上に寄与していそうだという結果が得られた。今回はより詳細に実験を行い、差がありそうかどうかを検証した。 実験 次の3手法についてAlphaZeroと同様の強化学習を実行して、Eda…

【コンピュータオセロ4】期待値をもちいた探索

要約 オセロに関しては分布の形状を利用した探索ではなく分布から期待値を出して通常のMCTSを行う方が性能が高い。 背景 前回など、カテゴリカルモデルがスカラーモデルよりも性能が悪い問題について、以下のような指摘をもらった。 一つの仮説としては、ラ…

教師あり学習での実験いろいろ

要約 cosine annealing : 学習率一定よりは良さそうだが、適切なタイミングで1/10する場合よりも良いかというと微妙そう。しかし適切なタイミングを調べるのも大変なので、その手間を省くという意味では有用か dropout : Value損失は改善するがPolicy損失は…

【コンピュータオセロ3】Valueの損失を定数倍することの効果

要約 オセロにおける強化学習で、損失関数のValue側のみ2倍,4倍とすることでは性能は上がらなかった。 背景 数日前に読んだ論文で、AlphaZero形式の学習について計算量の増加を抑えつつハイパーパラメータを上手く探索する手法が提案されていた。 この手法に…

置換表に保持する指し手の削減

Miacisでは一つの局面に対応する置換表エントリが持つ変数として、以下のようなものを保持している。(hash_table.hppから一部抜粋し見やすく改変) struct HashEntry { int32_t sum_N; //探索回数の合計 int32_t virtual_sum_N; //バーチャルロスの合計 //以…

【コンピュータオセロ2】カテゴリカル分布の有効性

Miacisで用いている手法の主張点は「評価値出力をスカラーではなく、各値になる確率を示すカテゴリカル分布にすることで性能が上がり、探索にも有効活用できる」というところにある。簡単な説明はWCSC30アピール文書を参照。 そもそも着想の元ネタの一つであ…