TadaoYamaokaの開発日記

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

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

将棋でディープラーニングする その49(再学習)

ResNetのブロック数を10にして、elmoで生成した深さ8の局面を使って、学習をやり直しています。 スクラッチからの学習も試したいところですが、モデルの性能を評価するには、既存将棋ソフトで生成した棋譜は役に立ちます。 tanhバージョン はじめ、vlaue net…

世界コンピュータ将棋選手権 ライブラリ登録

dlshogiをライブラリ登録しました。 コンピュータ将棋選手権使用可能ライブラリディープラーニングを使って将棋AIを開発したい方のお役に立てば幸いです。第5回電王トーナメントバージョンは、いろいろとバグがあったので、↓このコミットがバグを修正したソ…

将棋でディープラーニングする その48(ResNet)

これまでニューラルネットワークの構成に、5ブロックのResNetを使ってきたが、層を増やすると精度がどれくらい上がるか実験を行ってみた。これまでは、ResNetの構成は、こちらの論文([1603.05027] Identity Mappings in Deep Residual Networks)で精度が高…

将棋でディープラーニングする その47(全結合)

AlphaGo Zeroでは、policy networkの出力ラベルを石の色×座標+passで表しており、全結合層で出力を行っている。 Fan Hui版AlphaGoでは1×1フィルターの畳み込み層を出力層としていた。 出力層を全結合にした理由は、論文では説明されていないが、精度が上がる…

将棋でディープラーニングする その46(出力ラベルの表現方法)

開発してるdlshogiでは、出力ラベルを(駒の種類×移動方向+持ち駒の種類)×座標で表現し、出力層にAlphaGoを参考に1×1の畳み込み層を使用している。 AlphaGo Zeroでは、出力ラベルを石の色×座標+passで表しており、全結合層で出力を行っている。 1×1の畳み込み…

dlshogiのバグ報告

電王トーナメントバージョンを公開しましたが、致命的なバグがありました。移動を表すラベルにバグがあり、いくつかの異なるラベルが同じラベルに割り振られていました。 このバグのため学習の精度がかなり落ちていたと思われます。モデルの学習からやり直し…

将棋でディープラーニングする その45(高速化)

現在のdlshogiの実装では、NPSが2500程度しかでていないため、高速化できる箇所がないかを検討している。モンテカルロ木探索でpolicyとvalueをGPUで計算すると、GPUの実行時間が処理時間のほとんどを占めているため、CPUの論理コア数以上のスレッドで並列に…

dlshogiのビルド済みファイル公開

dlshogiの第5回将棋電王トーナメントバージョンのビルド済みファイルを公開しました。elmoで生成した35.8億局面を学習済みモデルと、モンテカルロ木探索で事前探索した定跡も含んでいます。CUDA、Pythonの環境構築が必要になるので、なるだけ丁寧に説明を記…

第5回将棋電王トーナメント 出場結果

第5回将棋電王トーナメントに参加しました。本日は予選が行われ、dlshogiは3勝5敗という結果で、予選落ちとなりました。 3回戦と6回戦は、秒読みに入ってから将棋所のinfo stringの出力に時間がかかり、優勢にかかわらず時間切れ負けとなってしまうという残…

将棋でディープラーニングする その44(L2正則化)

将棋AIのPolicy NetworkとValue Networkのマルチタスク学習でのL2正則化の効果を測定してみた。 正則化なし loss policy accuracy value accuracy L2正則化係数 loss policy accuracy value accuracy 考察 正則化なしでも、trainとlossにそれほど差がないが…

将棋でディープラーニングする その43(ValueNetの出力をtanhにする2)

前回、Value Networkの出力をtanhにした場合とsigmoidにした場合で比較を行ったが、マルチタスク学習を行っているため、はっきりした結果がわからなかった。今回は、Value Networkのみの学習で比較を行った。 以下の2パターンで比較した。 出力関数 損失関数…

tanh vs sigmoid

AlphaGoのValue Networkの出力にはtanhが使用されている。 一方、将棋AIでは評価関数から勝率に変換する際、sigmoidが使われている。tanhとsigmoidのどちらがよいか、dlshogiの学習で検証してみたが、Policy NetworkとValue Networkのマルチタスク学習を行っ…

将棋でディープラーニングする その42(ValueNetの出力をtanhにする)

将棋AIでは、評価関数をsigmoid関数で[0,1]の範囲で勝率にすることが行われている。 elmoの損失関数には、勝率の交差エントロピーと、浅い探索と深い探索の評価値から求めた勝率の交差エントロピーの和が使われている。一方、AlphaGoでは報酬に[-1,1]が使用…

将棋でディープラーニングする その41(モーメントありSGD)

AlphaGo Zeroのニューラルネットワークの学習の最適化に使用されているモーメントありSGDを将棋AIで試してみた。以前に、最適化手法を比較した際、Adamのような学習率を自動で調整する手法よりSGDの方が学習効率が高かった。 AlphaGo FanバージョンでもSGDが…

将棋でディープラーニングする その40(入力特徴に履歴追加)

その39からずいぶん期間が空きましたが、AlphaGo Zeroの論文を読んで試したいことができたので、AlphaGo Zeroの論文の方法が将棋AIに応用が可能か少しずつ試していこうと思います。AlphaGo Zeroの特徴については、別の記事に記載していますので、参照してく…