TadaoYamaokaの開発日記

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

将棋でディープラーニングする その12(Wide ResNetを試す)

AlphaGoの論文ではSL policy networkは13層のCNNとなっているが、画像認識の分野では単純なDCNNよりGoogLeNet(Inception)やResidual Network(ResNet)が高い精度を上げている。
ResNetで層を増やすのが最も精度が上がるが、層が増えるほど学習時間も増える。

ResNetはカーネルサイズ、フィルター枚数を少なくして層を増やす、狭く深くという方向だが、ResNetと同じ構造で、層を浅くしてカーネルサイズ、フィルター枚数を増やしたものに、Wide Residual Networksがある。

学習時間が増えない方が個人としては望ましいので、Wide Residual Networksを試してみた。

Wide Residual Networks

ResNetは、以下のように2層の畳み込みのブロックとショートカットを足し合わせ、それを複数繋げることで構成する。
Wide ResNetはブロックの2層の畳み込みの間でDropoutを行うことが特徴である。
畳み込み層のバイアスはなしにする。

f:id:TadaoYamaoka:20170511224719p:plain

13層のCNNをWide ResNetの構成にすると畳み込み層が一つ余るので、1層減らして12層(5ブロック)で構成した。

測定結果

前回の13層のCNNと12層のWide ResNetを比較すると以下のようになった。
カーネルサイズ(3×3)、フィルター枚数(256)は変更していない。

f:id:TadaoYamaoka:20170511225629p:plain

Wide ResNetの方が収束が速くなっている。
3エポック回しているので、3エポック目ではtest accuracyがほぼ同じになっているが、1エポックで比較すると精度も高い。

学習時間は以下の通りとなった。(422852局面、3エポック)

学習時間
13層CNN 0:48:24
Wide ResNet 0:48:44

学習時間はわずかに増えた。
畳み込み層は1層減ったがショートカットを足し合わせる演算が影響していると思われる。

GitHubにソースを公開しました。
github.com