回答:
最初の注意:実際に各特徴(ピクセル)値の標準偏差で割る必要もあります。平均を減算すると、入力が0に中央揃えされ、標準偏差で割ると、スケーリングされたフィーチャ値が平均から離れた標準偏差の数になります。
質問に答えるには:ニューラルネットワークがその重みを学習する方法を検討します。C(NN)sは、トレーニング例が通過するときに、バックプロパゲーションから計算された勾配誤差ベクトル(学習率を乗算)をネットワーク全体のさまざまな重み行列に継続的に追加して学習します。
ここで注意すべきことは、「学習率を乗じた」です。
入力トレーニングベクトルをスケーリングしなかった場合、特徴値の分布の範囲は特徴ごとに異なる可能性が高いため、学習率により、各次元で補正が行われます(比例的に言えば)。ある重み次元では補正を過剰に補正し、別の重み次元では補正を低くしている場合があります。
これは、理想的な状態ではありません。振動状態(コスト(ウェイト)スペースのより良い最大値に集中することができない)状態、またはスローモーション(より良い最大値に到達するには遅すぎて移動する)状態になります。
もちろん、重みごとに学習率を設定することは可能ですが、すでに複雑なネットワークに導入するハイパーパラメーターはまだ多く、それを見つけるために最適化する必要があります。通常、学習率はスカラーです。
したがって、NN(または任意の勾配ベース)アルゴリズムへの入力として使用する前に、画像を正規化しようとします。
(image - image.mean()) / (image.std() + 1e-8)