shiftという現象が起こり、そのためにパラメータの初期化をうまくやる必要があったり、学習率を大きくできず多くのステップを要する。Normalization(BN)は各層の入力を正規化して分布を固定することでこれを解決するというもの。Network)でも使われている。Shift具体的にはWx+bと活性化関数の間にBNの層を入れる。μ、σ^2は入力xの平均と分散。正規化するだけでは表現力が下がってしまうのでγとβでスケールやシフトできるようにする。これらの変数は他のパラメータと同様に学習させる。TensorFlowでの確認TensorFlowではbatch_normalization()がすでに実装されているのでこれを使う。以下のCNNで学習率を高めに設定しBNありなしの結果を比較する。学習データはmnist。MonitoredSessionでcostをsummaryとして出力しTensorBoardで見られるようにしている。bn})BNを行わなかったときの結果。コストを下げられていない。ちなみに学習率を0.01から0.001にしたら下げられるようになった。BNを行ったときの結果がこれ。学習率はそのままで順調にコストを下げることができている。