TadaoYamaokaの開発日記

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

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

将棋でディープラーニングする その51(ディリクレノイズ)

電王トーナメント版のdlshogiでは、Policyの読み漏れを回避するために、自分の手番の局面だけ、Policyの予測するそれぞれの手について1/1000の確率で値を1.5倍にするということを行っていた。 自分の手番の局面だけにしたのは、相手の局面にもノイズを入れる…

C++でディリクレ分布による乱数生成

C++

C++にディリクレ分布で乱数生成する標準関数は用意されていない。ガンマ分布で乱数生成する標準関数std::gamma_distributionが用意されているので、 Dirichlet distribution - Wikipedia に書かれている方法を使って、ガンマ分布で乱数y1,...,yKを生成し、 …

ディリクレ分布の可視化

AlphaZeroのMCTSのルートノードではディリクレノイズを加えることで、全ての手をランダムで選ばれやすくしている。 以前の記事で、2次元のディリクレ分布を可視化したが、3次元の場合の可視化ができないか調べていたら、以下のページを見つけたので試してみ…

AlphaZero Chess/Shogiの論文を読む その3

前回までに個人的に気になった点はだいたい書いたので、今回は残った部分で気になったところを拾って書きます。 スケーラビリティ 思考時間を増やした場合、αβ探索よりもレーティングの伸びが良い。 これはAlphaZeroのMCTSがαβ探索より思考時間を短縮できる…

AlphaZero Chess/Shogiの論文を読む その2(AlphaGo Zeroとの差分)

AlphaZero Chee/Shogiの論文についての続きです。 今回はAlphaGo Zeroとの差分について書きます。AlphaGo Zeroの論文については、以前に書いた記事を参照ください。 ネットワーク構成 ニューラルネットワークの構成は、AlphaGo Zeroと同じ、PolicyとValueを…

AlphaZero Chess/Shogiの論文を読む

DeepMindからAlphaGo Zeroと同じ方法で、チェスと将棋でトップレベルを上回ったという論文が発表されました。 [1712.01815] Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithmドメイン知識を用いないスクラッチから…

将棋でディープラーニングする その50(ブートストラップ【訂正】)

以前に書いたブートストラップの説明に誤りがあったのと、Chainerで誤差逆伝播の効率化ができたので、追加記事を書きます。 間違っていた内容 以前に書いた記事で、2確率変数の交差エントロピーは、確率変数がシグモイド関数の場合、 で表され、偏微分が、 …

Jupyter QtConsoleのTips

ほぼ自分用のメモ。 OSのコマンド実行 先頭に「!」を付ける。 例) !dir参考:IPython reference — IPython 8.1.0 documentation グラフをインラインで表示 %matplotlib inline参考:IPython reference — IPython 8.1.0 documentation グラフを別ウィンドウ…

将棋AIの進捗 その9(千日手対応)

dlshogiを千日手に対応させました。対応方法は以下の通り。 value networkで評価中に千日手チェックを行い、value networkの評価が終わったら、value networkの値を使わずに千日手チェックの結果を使うようにする。 同じ局面でも経路によって千日手チェック…