はじめに
Group Normalizationについて調べていたので、まとめました。
Group Normalizationとは
Group Normalization(GN)は、入力のチャネルをより小さなサブグループに分割し、それらの平均と分散に基づいてこれらの値を正規化します。 GNは単一の例で機能するため、この手法はバッチサイズに依存しません。
https://www.tensorflow.org/addons/tutorials/layers_normalizations
正規化の種類
各サブプロットは、入力テンソルを示しています。Nはバッチ軸、Cはチャネル軸、(H、W)は空間軸(画像の高さと幅など)です。青のピクセルは、これらのピクセルの値を集計することによって計算された、同じ平均と分散によって正規化されます。
https://www.tensorflow.org/addons/tutorials/layers_normalizations
Group Normを導入すると
ResNet-50
ImageNetの分類誤差とバッチサイズの比較の図。これは、ImageNet訓練セットで訓練されたResNet-50モデルで、検証セットで評価されています。Group Normはバッチサイズに依存しないので、よりよいパフォーマンスが期待できます。
ResNet-50での検証誤差を示した図。バッチサイズを変えると、BNは誤差にブレがあるが、GNはほとんど同じだということが分かる。
一見良いように見えるが、精度を比較してみると、バッチサイズを低くするにつれてGNの精度が低くなることが分かる。特にバッチサイズ2のときには(-10.6)とかなり低くなっている。
これらの結果は、バッチ平均と分散の推定が過度に確率的で不正確になり得ることを示している。
VGG-16
正規化を行わない場合と比較してGN/BNを検討するために,正規化層がなくても健全に学習できるVGG-16を考える。各畳み込み層の直後にBNまたはGNを適用する.
VGG-16では、GNはBNよりも0.4%優れています。これは、VGG-16ではBNの正則化効果の恩恵が少なく、学習誤差の少ないGNの方がBNよりも優れていることを示唆していると考えられる。
今後の展望
GNベースのモデルには最適ではない可能性があることに注意が必要です。システムを再設計したり、GNのために新しいハイパーパラメータを探索したりすることで、より良い結果が得られる可能性があります。さらに、我々は、GNがリカレントモデル(RNN/LSTM)やジェネレーティブモデル(GAN)の訓練で適応しているので今後に期待です。
まとめ
バッチサイズが増えるとメモリが増えて大変だったので、簡易的なモデル構築を行っている身としてはありがたいです。
参考文献