前回は、手番を入力特徴に加えても効果がないことを確認した。
今回は、ニューラルネットワークの畳み込み層の後にBatch Normalizationを追加して精度への影響を確認する。
Batch Normalizationを適用することで以下のメリットがある。
- 学習を速く進行させることができる(学習係数を大きくすることができる)
- 初期値にそれほど依存しない
- 過学習を抑制する(Dropoutの必要性を減らす)
13層のCNNのどの層までBatch Normalizationを入れるのがよいかわからなかったので、1層目から順番にBatch Normalizationを入れる層を増やして測定した。
ベースの条件は以前の持ち駒のフィルターサイズを変更したバージョンとした。
測定結果
※横軸のラベルは、BNの後の数値がBatch Normalizationを入れた層数
測定結果を見ると、9層目までBatch Normalizationを入れた方がtrain loss、test accuracyともに精度が上がる。
10層目より深い層に入れると精度が落ちてくる。
また、Batch Normalizationを入れる程、学習時間が延びる傾向がある。学習の効率を上げるには必要以上に入れない方が良い。
この測定結果からは、9層目までBatch Normalizationを入れるのがよさそうだ。
9層目までBatch Normalizationを入れたことで、test accuracyは35%になった。
次回はBatch Normalizationを入れたことで学習率をどこまで増やせるか検証したい。
GitHubにソースを公開しました。
github.com