【コンピュータオセロ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アピール文書を参照。 そもそも着想の元ネタの一つであ…

【コンピュータオセロ1】指し手選択の温度について

背景1 手法の有効性がゲーム依存ではないことを主張するため、そして実験サイクルを高速に回せるという利点があるため、オセロでも実験をしていく。 オセロは将棋より簡単だろうと勝手に判断してやや小さめのネットワークで学習をさせている。具体的にはチャ…

Miacis WCSOC2020版

世界コンピュータ将棋選手権のオンライン大会(WCSOC)に向けて、これ以上レートが伸びそうにないのでここで結果をまとめておきます。 実行ファイル Windows向け実行ファイルをGitHubで公開しています。 CPU版 GPU版 CPU版はNPS50くらいしか出ないのでほぼお…

教師データ生成時(800探索)の性能

要約 教師データ生成時のレートはfloodgate換算で Miacis:2700程度 やねうら王:2800〜2900程度? AobaZero:3000程度 また探索バッチサイズはできれば1で生成するべきだとわかった。 背景 AobaZeroが800回の探索でKrist_483_473stb_16t_100mに勝ったという話…

損失と棋力の関係

動機 Miacisでは強化学習の最中にも定期的にfloodgateの棋譜を用いて検証損失の計測をしている。対局には計算コストがかかるため、検証損失の値から大雑把にでも性能が把握できると嬉しい。よって今回はこれらの関係を調査した。 使用した結果 基本的にはこ…

Google Compute Cloudでの探索実験

8GPUインスタンスを使って探索速度を検証した。 まず20CPU、8GPU(Tesla V100)のインスタンスを使って探索速度を検証した。 早い段階で頭打ちになっている。8GPU使うときのGPU利用率を見てもあまり高くなっていない(1GPUなら50%くらいは行く)。 1GPUでも探…

思考時間とレートの関係(2)

上の調査に便乗してMiacisでも調べ直した。以前(8ヶ月前)の調査は 結論としては今回も変わらず、「思考時間2倍でレート+100ちょい」という感じ。 以下対戦相手はYO/Kristallweizen(Thread4・0.2秒)。 Miacis 1手1秒 対局数 勝数 引き分け数 敗数 勝率 相…

対局結果メモ

ここ数日で回していた対局結果をメモしておく。対局結果は全てMiacis側から見たもの。マシンはCPUの周波数約3.6GHz、GPUは2080ti。YO/Kristallweizenは4スレッド、定跡オフ。 ベースライン Miacis側 0.5秒、YO/Kristallweizen側 0.1秒。 対局数 勝数 引き分…

教師あり学習による事前学習

再現性をある程度担保したいので、一度強化学習で学習したパラメータを初期値として再び強化学習をやるようなことはあまりしたくない。かといって毎回ランダムパラメータから学習しているのも効率が悪いと思えたので、自分の中で折り合いのつく点として、教…

探索速度と棋力の関係

以前AlphaZeroの探索速度を検討した回でMiacisの探索速度も調べた。 この記事でも述べた通り、今の仕組みではNPSが上がれば棋力が上がるとは限らない。というわけでやねうら王/Kristallweizen(2スレッド、0.1秒)と対局してレートを測定した。 バッチサイズ16…

AtCoder Beginner Contest 156

結果 順位 228th / 5737 パフォーマンス 2034 レーティング 1753 → 1784(+31) E問題までの5完。F問題も解きたかったけど、終了後10分くらい粘ってもダメだったのでそんなに行けそうでもなかった。 A - Beginner 最初提示されているのが表示レーティングかと…

学習に必要な演算量の比較メモ

Miacisの学習はAlphaZeroの学習に比べて少ない計算量で行っていることは確かだが、実時間としては多くかかっている。総演算量(単位時間あたりの演算量×学習時間)をちゃんと検討しておくべきだと思ったのでメモを残しておく。基本的にCPUは無視してGPUあるい…

対抗形における性能

前回、左右反転によるデータ拡張を導入し、初期局面からの対局では勝率にあまり差がないことがわかった。しかし以前の結果では、対抗形の学習は不十分であるという場合が見られた。左右反転を学習データに含めると、飛車が左にあるような局面がデータに含ま…

AlphaZeroの探索はすごく速いか?

ふとAlphaZeroの論文読み直して、TPU4個とはいえ将棋で40K NPS出てるってやばくないか? って思いましたね。手元だとチャンネル半分、ブロック半分で10K出てない気がするんですが。2080tiとTPUってそんなに差があるものなんですかね— t (@tokumini_ss) 2020…

左右反転によるデータ拡張

要約 左右反転によるデータ拡張を行うことで性能を落とさず学習速度を2倍にできた。 背景 囲碁では左右反転や回転などを利用してデータ拡張することができ、本家AlphaZeroでも の下の方にあるSupplementary Materialsに掲載されているFigure S1 において、同…

AtCoder Beginner Contest 155

結果 順位 795th / 6812 パフォーマンス 1489 レーティング 1779 → 1753(-26) D問題までの4完でレート減。しかしレート下がってもそんなに悲しくならないくらい今は競技プログラミングへのモチベーションが落ちている。コンテストに出ることは継続しているけ…

ここ2ヶ月の進捗

論文を書いているのもあってある程度情報を隠しながらやっていかないといけないかなと思っていた部分もあったのだけど、やはり性に合わない感じがしてきたので書きたいように書こうという方針で。正直なところ論文も公開しながら書きたいくらい……。 まずは前…

近況

1行まとめ 去年のWCSCで使った手法(AlphaZero+分布型強化学習)についての論文を出そうと奮闘していたのですがちょっと挫折しかかっているという感じです。 長い 現在はジャーナルに投稿してレビューが返ってきた段階です。レビューの指摘に従って改稿作業や…

学習の再現性確認

最近はあまり新しい工夫を実装する時間がなく、とりあえず今の時点での学習に再現性があるかどうかを確認していた。 現状使えるマシンは、2080tiを2枚搭載しているものが1台、1080を2枚搭載しているものが2台となっている。実装上の都合によりマシン間でのデ…

MuZeroと脳内盤

技術的な内容というよりはやや曖昧な、(この言い方は好きではないが)ポエムっぽい文章を書いてみるなど。 今年の選手権でmerom氏には話した気がするのだけど、プログラム内部に盤面を保持してそれを遷移させて評価関数に入力するという方式は、継ぎ盤を用…

三井住友信託銀行プログラミングコンテスト2019

結果 順位 323rd / 3912 パフォーマンス 1901 レーティング 1835 → 1842(+7) 全完早解きセットだったので3WAを出すようではそれほど良い順位にならない。 A - November 30 で判定。出力のYes/Noが1/0だと判定をそのまま出せば良いので楽なんだな。 提出 B - …

AtCoder Beginner Contest 146

結果 順位 359th / 5026 パフォーマンス 1799 レーティング 1839 → 1835(-4) E問題以外の5完。しかし、うーん、E問題解けないようではひどい。レート下がるのもしょうがない。 前回ドハマりした反省として、今回は順位表を常に眺めながら参加した。ある問題…

DISCO presents ディスカバリーチャンネル コードコンテスト2020 予選

結果 順位 1517th / 3050 パフォーマンス 978 レーティング 1904 → 1839(-65) A,B,Cの3完遅解きで大失敗。パフォーマンス3桁なんていつぶりだ? と思ったけど成績表見てみたら2019/03/23のAGC032でもやらかしているので定期的に発生するものなんだろう。 A -…