TadaoYamaokaの開発日記

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

2019-05-01から1ヶ月間の記事一覧

将棋AIの実験ノート(入力特徴に手番は必要か)

dlshogiでは入力特徴に手番を加えていない。 将棋では先手と後手で同一局面の価値は変わらないためだ。 ある局面が与えられば、先手か後手かによらず最善手は同じはずである。一方、AlphaZeroでは、手番が入力特徴に加えられている。 局面を180度回転せずに…

【Androidアプリ開発】ボーカル音程モニター(Vocal Pitch Monitor)のバージョンアップ

しばらく更新できていなかったAndroidアプリのボーカル音程モニター(Vocal Pitch Monitor)をバージョンアップしました。play.google.com今回は、要望が多かったインポート機能を実装しました。 インテント経由でGoogleドライブなどからwavファイルをインポー…

将棋AIのモデルでSENetを試す その2

前回将棋AIのモデルでSENetを組み込むと精度が上がることが確かめられた。 今回は、SENetなしで層を増やした場合と比較を行ってみた。 また、SENetのreduction rateを16から8、4にした場合とも比較を行った。測定方法は前回と同じ。 比較条件 SENetなしでブ…

将棋AIのモデルでSENetを試す

先日Chainerで実装したSENetを将棋AIのモデルで試してみた。dlshogiで使用している10ブロック、192フィルタのWideResNetにSENetを組み込んで、SENet有無による精度を比較した。 SENetの実装 DeepLearningShogi/policy_value_network.py at 7820661597f380b17…

将棋AIの実験ノート(引き分け有無の比較)

教師データ引き分けを加えた場合と、加えない場合の精度の比較を行った。 引き分けの学習には、ChainerのカスタムFunctionを使用した。測定方法は前回の正則化の効果の測定と同じ。 測定方法 10ブロック、192フィルタのモデル PolicyとValueのマルチタスク学…

将棋AIの実験ノート(正則化の影響の再測定)

先日、将棋AIのモデルにおけるエントロピー正則化とL2正則化の効果を測定したが、正しく測定できていなかったので再測定した。前回の測定結果のtest accuacyが低いので、原因を調べていたら、ChainerのV5から追加されたstatic_graphを使っていたことが原因だ…

ChainerでSENetを実装する

ILSVRC 2017で優勝したSqueeze-and-Excitation Networks (SENet)を、こちらのPyTorchの実装を参考にChainerで実装した。GitHub - TadaoYamaoka/senet.chainer 実装したのは、SE-ResNet20/Cifar10のみ。 結果 通常のResNet >python cifar.py --batch_size 64 …

将棋AIの実験ノート(正則化の影響測定)

将棋AI用モデルの学習で正則化の有無による精度への影響を測定した。 測定方法 10ブロック、192フィルタのモデル PolicyとValueのマルチタスク学習 Aperyで生成した1.4億局面をシャッフルして2500万局面分を学習 Momentum SGD(lr=0.01) 初期モデルから学習 …

2値分類で中間の値も学習する(続き)

昨日書いた2値分類で中間の値も学習するコードは、損失の計算で計算グラフを構築して、backward()時の微分はChainerに任せていた。しかし、交差エントロピーの微分は、以下のように引き算で表すことができるため、計算グラフを構築しなくてもよい。 交差エン…

2値分類で中間の値も学習する

実験している将棋AIの学習では、今まで価値ネットワークの出力の活性化関数をシグモイドとして、勝ちと負けの2値で分類していた。 しかし、先日の世界コンピュータ将棋選手権に参加して、引き分けや千日手が結果を左右するゲームが多かったため、引き分けも…

ロジットを使ってエントロピーを計算する

方策勾配で強化学習を行う際に、方策が決定論的になっていないか監視するために、ログにエントロピーを出力するようにしたい。エントロピーは、 で計算できるが、確率がほぼ0の場合、が-infになるため、この式のままでは計算できない。の最小値をクリップし…

【iOS開発】Audio Spectrum Monitorバージョンアップアップ

3年半ぶりにiPhoneアプリのAudio Spectrum Monitorをバージョンアップしました。Audio Spectrum MonitorTadao Yamaokaミュージック¥120身に付けた機械学習の知識を使って、解析精度アップを行う予定ですが、その前に要望のあったインポート/エクスポート機能…

強化学習におけるバッチサイズとエントロピー正則化

※ほぼ自分用の実験ノートです。世界コンピュータ将棋選手権の少し前から、自己対局におけるノードの再利用とバッチサイズの変更(1024→2048)を行った。 250万局面の生成と学習を8サイクル行ったところ、技巧2に対して勝率が上がったため、大会には最新のモデ…

wcsc29で負けた対局の分析

2次予選1局のKristallweizenとの対局について、敗因を分析してみた。評価値は以下のようになっており、Kristallweizen側の評価値も124手で先手が優勢となっていた。 125手目の2七桂打が悪手で、一手で後手優勢に傾いた。125手目の局面を、Aperyで分析すると…

Multi Ponderについて

今年の世界コンピュータ将棋選手権はMulti Ponderを採用しているチームが多く関心も高かったようです。dlshogiでも、Multi Ponderの考え方を取り入れていました。 Multi Ponderは、どの手にどれだけのリソースを配分すると誤差を最小化できるかという問題と…

第29回世界コンピュータ将棋選手権の感想

dlshogiは、前回に続いて1次予選を通過し、2次予選まで進むことができました。 2次予選は、2勝できればよいと考えていましたが、結果は4勝5敗と善戦できました。 ただし、1勝は相手チームのサーバダウンによるものなので、実質は3勝と思っています。 順位は2…

dlshogi(wcsc29版)のビルド済みファイル公開

dlshogiの第29回世界コンピュータ将棋選手権バージョンのビルド済みファイルを公開しました。wcsc28版は、詰み探索用にAperyの評価関数が必要でしたが、df-pnによる詰み探索を実装したため、評価関数は不要になりました。 CUDA、cuDNNはライセンス上の問題が…

世界コンピュータ将棋選手権 1次予選の感想

dlshogiは、世界コンピュータ将棋選手権 1次予選、8位でぎりぎり通過できました。3敗したうち、2つはやねうら王ライブラリのソフトでかなり棋力差がある感じでしたが、8戦目のあやめとの対局は去年の2次予選では勝っていたソフトなので、60手であっさり負け…