山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。MCTSAlphaZeroのMCTSのUCBには、という式が使用されており、このUCBで行動価値の信頼区間の上限を見積もっている。行動価値を、探索を行った結果得られた価値の平均で推定する。未定義であるため、何らかの値で推定する必要がある。AlphaZeroでは0で初期化、つまり、未探索のノードの価値を0(負け)としている。dlshogiでは、これを0.5(引き分け)で初期化している。以前に、これをAlphaZeroに合わせて0で初期化してみたところ、勝率が極端に落ちたので、0.5のままとしている。dlshogiで、負けで初期化すると勝率が極端に落ちる原因はよくわかっていない。方策を分布ではなく指し手で学習しているという、学習方法の違いによるものかもしれない。親ノードの価値が使用されていた。以下のissueで、これをAlphaZeroと同様に0で初期化することについて議論されている。GitHub学習時の自己対局では、負けで初期化することで、負けの局面は広く探索して、勝ちの局面では現在の方策が実際に良いか補強して検証するという目的があると考察されている。以下のPRでは、ルートの初期値は、勝ちで初期化した方が、チェスではAlphaZeroにより近くなると主張されている。理由は、35手くらいまではすべて探索されるからと説明されている。Zeroの設定を確認すると、ルートノードでは、勝ちで初期化し、中間ノードでは負けで初期化している。対局時の設定も、同じになっている。初期化する方法を試してみた。技巧2と1手3秒で100対局した結果は、以下のようになった。親ノードで初期化することで、勝率が9%(R+68.6)上昇した。Zeroで、親ノードの価値で初期化する場合は、さらに低減(reduction)項が加えられている。これは、方策の確率が大きいノードが探索された数が多いほど、探索の緊急度を削減するという意味がある。次は、この項も加えて検証してみたい。その35(PyTorchに移行)年末に新しいCPUが届いたので、正月はPCを組んでいた。»プロフィールid:TadaoYamaokaスマホアプリ開発とディープラーニングを使った将棋ソフトの開発を行っています。読者になる将棋AIネタはコンピュータ将棋におけるディープラーニングの考察からどうぞ。)はてなブログをはじめよう!TadaoYamaokaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。