TadaoYamaokaの開発日記

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

2020-08-01から1ヶ月間の記事一覧

Likelihood of superiorityについて

昨日の記事でcshogiに、2つのプログラム間の連続結果からLOS(Likelihood of superiority)の算出を実装したことを書いたが、その計算式は、チェスで使用されている式をそのまま適用した。 LOSについて 測定された勝率がどれくらい確からしいかを表したのがLOS…

cshogiにElo rating測定機能を追加

Cythonを使った高速なPythonの将棋ライブラリcshogiに、Elo rating測定機能を追加した。 誤差とLOS 連続対局を行い、Elo ratingと誤差(95%信頼区間)をレポートする。 何%の確率で強いと言えるかを表すLOS(Likelihood of superiority)も表示する。 LOSが95%を…

将棋AIの実験ノート:Mask-AttentionでAIの着目点を可視化する

深層強化学習でAIが着目している箇所を可視化するという以下の論文の手法(Mask-Attention)を、将棋AIでも試してみたい。 http://mprg.jp/data/MPRG/F_group/F20200610_itaya.pdf Mask-Attention 方策ヘッドに、位置情報をAttentionとして乗算する。 Attent…

dlshogiにおける思考時間と強さの関係 更新

先日記事にしたdlshogiにおける思考時間と強さの関係について、思考時間8秒、16秒の結果と、水匠2のスレッド数を8にした場合の結果が測定できたので記事にする。測定条件は前回と同じである。 dlshogi vs 水匠2(1000万ノード固定)の測定結果 思考時間(秒) 勝…

将棋AIの実験ノート:活性化関数Swishを試す 続き

先日試したSwishについて、推論速度がどれくら低下するのかと、精度が上がった代わりに速度が低下した場合に強さにどう影響するのかが気になったので調べてみた。 精度 先日は、8サイクル分学習した時点の結果を記したが、今回は16サイクル分学習したモデル…

将棋AIの実験ノート:活性化関数Swishを試す

画像認識で高い精度を達成しているEfficientNetで使われている活性化関数Swishが将棋AIでも効果があるか試してみた。EfficientNetでは、残差ブロックにMBConvというアーキテクチャが使用されており、その中の活性化関数にSwishが使用されている。 MBConvにつ…

dlshogiのautomatic mixed precision対応

48先生から頂いたautomatic mixed precision対応のプルリクに対応しました。 Pytorch 1.6 の Automatic Mixed Precision対応 by bleu48 · Pull Request #18 · TadaoYamaoka/DeepLearningShogi · GitHubautomatic mixed precisionは、PyTorch 1.6で追加された…

dlshogiのgo nodes対応

少し前にQhapaqさんからもらったプルリクに対応しました。 add go protocol by qhapaq-49 · Pull Request #17 · TadaoYamaoka/DeepLearningShogi · GitHubgo byoyomiで、探索を打ち切らずに時間いっぱいまで探索するようになりました。 go nodesで、固定ノー…

dlshogiにおける思考時間と強さの関係

MCTSと思考時間と強さの関係について、dlshogiのデータが知りたいという要望があったので測定してみた。 測定条件 対戦相手は、最新のやねうら王をUbuntu 18.04のclangでビルドしたもの+水匠2の評価関数で、1000万ノード固定とする。dlshogiは、最新のソース…

PythonからC#へポインタ渡しする

C#からPythonへポインタ渡しするとは逆に、Python for .NETを使ってPythonからC#へポインタ渡しする方法について紹介する。 Python for .NET Python for .NETを使用すると、PythonからC#のコードを呼び出すことができる。 Pythonと同じプロセスで、.NETのラ…

dlshogiのdf-pnのテスト方法

dlshogiのdf-pnだけを動かす手順を書いておきます。 テスト局面追加 testプロジェクトのtest.cppの 「// DfPnテスト」と書いてあるところのmain()の vector<string> sfens = { // 詰み "9/9/+N8/p1p4p1/6p1p/1P7/3k3PP/2+p5L/6+rGK w R2B2G3Sgs3n3l9p 1", "1n1g3+Pl/</string>…

df-pnの関連記事

TLでdf-pnの話が上がっていたので、以前書いた記事のリンクをまとめておきます。局面ループ周りの処理はガチで発狂するレベルで面倒でdf-pnが凄いと言い張ってる人が本当にこの問題を解決できてるのかを少し疑うレベルで面倒なんすよね orz— Ryoto_Sawada⛅Qh…

dlshogiでMagic Bitboardを有効にする

やねうら王が飛車と角の利きに、PEXTの代わりにMagic Bitboardを使用することで、Threadripperで高速化できたとのことなので、dlshogiでも高速化できるか試してみた。dlshogiは合法手生成にAperyのソースを使用しており、AperyはMagic Bitboardを実装してい…

C#からPythonへポインタ渡しする

以前に、Python for .NETを使用することで、C#とPythonを同一プロセスで動かせることを紹介した。C#からPythonへの呼び出し時に、引数と戻り値は、自動的にマーシャリングが行われる。 ここで、C#の型からPythonのネイティブな型に変換されるのは、スカラ型…