深いニューラルネットワークトレーニングは、しばしば勾配の消失/爆発や内部共変量シフト、トレーニングの鈍化、学習の妨害などのハードルに直面することがよくあります。 正規化技術は解決策を提供し、バッチ正規化(BN)が特に顕著です。 BNは、収束を加速し、安定性を改善し、多くの深い学習アーキテクチャの一般化を強化します。このチュートリアルでは、BNのメカニック、数学的基盤、およびTensorflow/Kerasの実装について説明しています。
機械学習の正規化は、MIN-MAXスケーリング、Zスコアの正規化、ログ変換などの方法を使用して、リスケール機能へのログ変換などの方法を使用して、入力データを標準化します。これにより、外れ値の効果が軽減され、収束が改善され、公正な特徴の比較が保証されます。 正規化されたデータにより、学習プロセスへの特徴が平等に貢献し、大規模な機能が支配的になり、最適ではないモデルのパフォーマンスにつながります。 これにより、モデルは意味のあるパターンをより効果的に識別できます。ディープラーニングトレーニングの課題には以下が含まれます
内部共変量シフト:BNは、通常、層の線形変換(たとえば、完全に接続された層でのマトリックス増殖または畳み込み層の畳み込み)および非線形活性化関数(例:Relu)の後に適用されます。 重要なコンポーネントは、ミニバッチ統計(平均と分散)、正規化、および学習可能なパラメーターを使用したスケーリング/シフトです。
BNは、各ミニバッチ内のアクティブ化を正規化することにより、内部共変量シフトに対処し、後続の層への入力をより安定させます。これにより、より高速な収束により、より高速な学習率が可能になり、初期化の感度が低下します。 また、特定の活性化パターンへの依存を減らすことにより、過剰適合を防止し、正規化します。
バッチ正規化の数学:
BNは、トレーニングと推論中に異なる動作を行います。
トレーニング:
アクティベーション(xi
)が正規化されています:
(εは数値の安定性のための小さな定数です)。
推論:
バッチ統計は、移動平均(運動量因子α)を使用してトレーニング中に計算された実行統計(実行平均と分散)に置き換えられます:
これらの実行統計と学習γとβは、推論中に正規化に使用されます。
tensorflow実装:
import tensorflow as tf from tensorflow import keras # Load and preprocess MNIST data (as described in the original text) # ... # Define the model architecture model = keras.Sequential([ keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), keras.layers.BatchNormalization(), keras.layers.Conv2D(64, (3, 3), activation='relu'), keras.layers.BatchNormalization(), keras.layers.MaxPooling2D((2, 2)), keras.layers.Flatten(), keras.layers.Dense(128, activation='relu'), keras.layers.BatchNormalization(), keras.layers.Dense(10, activation='softmax') ]) # Compile and train the model (as described in the original text) # ...
実装上の考慮事項:
非ボリューションアーキテクチャ:
バリエーションと拡張:レイヤー正規化、グループ正規化、インスタンス正規化、バッチ繰り込み、および重量正規化は、特定のニーズに応じて代替または改善を提供します。
結論:バッチ正規化は、深いニューラルネットワークトレーニングを改善する強力な手法です。 その利点、実装の詳細、制限を覚えておいて、プロジェクトで最適なパフォーマンスのためにそのバリエーションを検討してください。
以上がバッチ正規化:理論と四面体の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。