私は中規模のconvネットを持っていますが、バッチ正規化ですっきりとしています。バッチの正規化の効果は非常にポジティブです(10倍以上の訓練速度とはるかに向上した精度)。バッチ正規化によるオーバーフィッティング[テンソルフロー]?
しかし、訓練と検証/テストセットの間には10%に近い精度の格差が大幅に増加しています。これは邪魔です。この隙間は、訓練中ゆっくりと盛り上がる。
BN実装では、標準TF指数移動平均を使用します。これは問題ではないようです。検証とトレーニングの両方が同じ統計を共有しており、テストセット統計に向かって移動平均を「コールドウォームアップ」することも試みました。この手順は効果がなかった。 また、BNがうまく動作するためには、I2の正則化と脱落の両方を無効にする必要がありました。
誰もが似たようなことに遭遇しましたか?何か案は? 「より標準的な」正則化をBNネットワークに追加する方法についての提案はありますか?
バッチノルムはパラメータが非常に少ないため、オーバーフィッティングの原因にはなりません。モデルが十分な時間を訓練していなかったので、あまりにもあまりにも控え目に気付かなかったのでしょうか? –
ありがとうございます。私は、BNにはパラメータで2-3Xを追加すると言いたいと思います。ほとんどの重量に対してシャドウパラメータがあるからです。シンプルに。 [私はまた、畳み込みだけでなく、完全につながったレイヤーを持っています。] 私は以前、あまりにも控え目に気付かなかった可能性があります。 BNなしでは、ネットワークはずっと遅くなりました。しかし、問題は残っています.BNネットワークを適切に正規化するにはどうすればいいですか? – amitmi
私はあなたがBNを誤解していると思うが、2-3倍のパラメータはない。畳み込みの場合、バッチ平均はすべてのフィーチャマップ上で計算されるので、BNは「2 * feature_size」 パラメータ(平均および分散)を有する。 [doc](https://www.tensorflow.org/versions/r0.9/api_docs/python/nn.html#batch_normalization)はそれをうまく説明しています。 –