左右反転によるデータ拡張を行うことで性能を落とさず学習速度を2倍にできた。論文を書いているのもあってある程度情報を隠しながらやっていかないといけないかなと思っていた部分もあったのだけど、やはり性に合わない感じがしてきたので書きたいように書こうという方針で。正直なところ論文も公開しながら書きたいくらい......。最近はあまり新しい工夫を実装する時間がなく、とりあえず今の時点での学習に再現性があるかどうかを確認していた。現状使えるマシンは、2080tiを2枚搭載しているものが1台、1080を2枚搭載しているものが2台となっている。技術的な内容というよりはやや曖昧な、(この言い方は好きではないが)ポエムっぽい文章を書いてみるなど。現状の学習方法で得たパラメータは対抗形が苦手であり、学習局面として対抗形ほとんど出現していない。自己対局による強化学習だと学習局面が偏ってしまうのではないかという指摘は多々ある。以下全てEloレートは全て技巧2(深さ10)と1手0.25秒で500局対戦した結果から推定したもの。価値のソフトマックス分布を選択および教師に利用することでレートが150程度上がったが、これはMiacis特有の事情である可能性がある。価値のソフトマックス分布を行動選択および教師分布として利用することで学習が2倍から3倍程度速くなった。前回、生成している棋譜を分析したところ、評価値を大きく損ねる悪い手が多く選ばれすぎていると感じられた。生成している学習データの質が悪い可能性がある。Miacisではおおむね思考時間を2倍でレート+100となる。MCTSのスケール性もαβ探索と比べてあまり変わらないのではないか。2週間弱かけて1Mステップの学習を行ったところレート2600程度になった。パラメータとWindows向けバイナリはGitHubで公開している。試したいことはやったのでここで一度長時間の学習を行った。優先度付き経験再生はAlphaZero方式の学習でも効果がありそう。以前の記事でも軽く触れたが、優先度付き経験再生という手法がある。Sarsa-UCT(λ)のλを調整しても明確な性能向上は見られなかった。以前の記事の通りMCTSにおける価値の漸進的更新を実装した。これにより単なる平均を求める手法とは異なる手法へ改造することが容易になった。SENetの構造を導入することによってネットワークの性能が向上した。計算量はやや多くなるが、全体として棋力は向上した。山岡さんのブログで将棋ソフトでもSENetの構造が有用であるとの実験結果が示されていた。2.5としたとき一番性能が良かった。今までMiacisは探索の選択ステップにおいてScience版AlphaZeroと同様の係数を用いていた。MCTSの行動価値を漸進的に更新する実装で、総和を保持して平均化する実装と同程度の性能を達成できた。以前、MCTSにおいて行動価値を漸進的に更新する方法について記事を書いたが、性能が悪化してしまった。Policyの教師信号を探索回数の正規化した分布とした方が性能が向上した。AlphaZero型の学習においてPolicyの教師信号にはルートノードから各行動について探索した回数をその総和で割った分布を利用している。強化学習でもバッチサイズとステップあたりの学習速度は比例しそうだ。あるデータ生成速度に対して学習可能な範囲でバッチサイズを上げていくことが学習の高速化に繋がるかもしれない。バッチサイズとステップあたりの学習速度は比例関係にある(?)ため、強化学習の高速化としてバッチサイズを小さくすることは意味がない可能性がある。Testによる学習率の決定法について書いた。Testを行って損失が最小となるときの学習率を初期値として決定して良さそう。(FP16)を行うことで探索は速くなったが、学習は上手くいかなかった。Normalizationの部分はFP32で計算しなければならないようだ。持ち駒は正規化した方が良さそう。WCSC29会場にて山岡さんから『ディープラーニングを使った将棋AIの作り方3』を購入させていただいた。AlphaZeroが4096という大きなバッチサイズで学習しているのに対して、Miacisは64という小さいバッチサイズでの学習を行っている。AlphaZeroに比べて使える計算資源が少ないためデータの生成速度が小さく、バッチサイズが大きいと同じデータを何度も学...バッチサイズと性能の関係2019-05-01【WCSC29】個人的に興味を惹かれたアピール文書集コンピュータ将棋すでにuuunuuun氏が書かかれた全チームの簡単なまとめや、やねさんによる見どころ紹介がありますが、ここでは個人的に面白そうだなと思ったものについて妄想レベルの私見を交えながら触れていきたいと思います。今までは再現性や比較の観点から毎回ランダム初期化したパラメータから学習を行っていたが、WCSC29も迫ってきたということで最も強いパラメータに追加学習することで性能が伸びるか検証を行った。今まで最も性能が良いパラメータは評価値をカテゴリカル分布...追加学習による性能向上の検証2019-04-28方策とディリクレノイズの比率を変更した学習コンピュータ将棋Miacisではメモリの関係上、指し手の教師信号として実際に指された手をOnehotベクトルとしたものを利用しており、そのためか方策が偏りやすい傾向にある。前回はTDLeaf()の理屈からAlphaZeroにおいて探索した値を用いる方法を検討した。今回はそれを基に強化学習を行った結果を記す。floodgate2016年・R2800以上同士の棋譜に対する損失計算によって評価を行った。~準備編~2019-04-10小さいバッチサイズに対する学習率設定コンピュータ将棋Miacisではバッチサイズ64で学習を行っている。GPUメモリが小さいのでバッチサイズを大きくできないためだが、Learnerが学習するデータ量とActorがデータを生成する量のバランスが重要なのではないかという根拠のない勘もある。前回の記事ではMCTSにおける行動価値の更新を漸進的実装に変更したが、並列化した際に性能が悪化することがわかった。MCTSの並列化方法として現在実装しているのはねね将棋、dlshogiで採用されているものと同様の方法である。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。