TadaoYamaokaの開発日記

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

将棋でディープラーニングする その35(マルチタスク学習(補足))

試している将棋でのディープラーニングについて、PUCTの実装をRay+Rnソースコードを参考に行っていますが、囲碁部分のコードを将棋に置き換えるのがわりと面倒で、完成にはもうしばらくかかりそうです。

その間に、追加でモデル学習の実験を行いました。
今回は、あまりたいした内容ではないです。

検証内容

先日、policy networkとvalue networkを同時に学習するマルチタスク学習を試したが、policy networkとvalue networkで12層までを共有する構成としていたが、policy networkは最終層まで共有されているので、value networkの学習で出力に悪影響がでていないか気になっていた。

そこで、共有する層を減らして、マルチタスク学習を行った場合の精度について追加で検証を行った。

ニューラルネットワークは11層までは、Wide ResNet構成としているので、11層まで共有した場合と、そこから1ブロック(2層)ずつ減らした場合の条件で測定した。

測定結果

1億局面をSL policy networkで学習したモデルをベースに、そこから3千万局面をRL policy networkとvalue networkのマルチタスク学習で学習した。
3千万局面学習した結果、以下の通りとなった。
f:id:TadaoYamaoka:20170615221633p:plain

1000iterationごとのグラフ
f:id:TadaoYamaoka:20170615223555p:plain

3千万局面を学習後の、accuracyにはそれほど差がないという結果になったが、train lossの減り方が12層まで共有したものが他より遅く、value networkのaccuracyが最も低い。
train lossは11層まで共有したものが最も低く、policyのaccuracyが最も高い。
value networkのaccuracyは9層まで共有したものが最も高いが、11層まで共有したものとの差は、0.0062でほとんど差はない。
7層まで共有したものはpolicy networkのaccuracyが最も低かった。

上記の結果から、12層目は共有しない方がよさそうで、11層目か9層目まで共有するのがよさそうだ。
12層は、1×1のフィルターに座標ごとのバイアスを加えた層で、policyの最終層で座標ごとにバイアスを加えている層になっているので、共有するとpolicyの出力に悪影響がでていると思われる。
11層までは共有することでマルチタスク学習の効果がでていると思われる。


以上の結果から、共有する層を11層までに修正した。
github.com