Benötigt Batch Normalized Network noch skalierte Eingaben?
Ich bin ein bisschen neu in diesem Thema. Ersetzt die Chargennormalisierung die Feature-Skalierung?
Nach meinem Verständnis verwendet die Batch-Normalisierung einen exponentiellen gleitenden Durchschnitt zur Schätzung $\mu$ und $\sigma$ on the fly, um Chargen während des Trainings des Neuronalen Netzes zu normalisieren.
Nach Beendigung des Trainings werden die geschätzten Werte von $\mu$ und $\sigma$ werden verwendet, um die Eingabetestchargen zu skalieren.
Wenn wir also die Chargennormalisierung als Eingabeebene für ein neuronales Netzwerk verwenden, müssen wir die Eingaben dann noch manuell skalieren?
Antworten
In der Regel gilt die Chargennormalisierung für Zwischenschichten, die Merkmalsskalierung / -standardisierung jedoch für die erste Schicht. Sie könnten berechnen$\mu,\sigma$Für jede Eingabe auf der Zwischenschicht werden die gesamten Daten verwendet und zur Normalisierung Ihres Stapels verwendet. Da sich jedoch die Gewichte des Netzwerks bei jeder Iteration ändern, wäre dies äußerst kostspielig. Aus diesem Grund versucht die Chargennormalisierung, sie anhand der vorliegenden Charge zu schätzen (und manchmal einige historische Informationen zu verwenden, z. B. exp-avg). Aber wenn diese Berechnung kostenlos wäre, würden wir die verwenden$\mu,\sigma$für das gesamte Trainingsset. Dies ist der Fall, wenn Sie die BN-Ebene an den Anfang setzen. Es funktioniert tatsächlich, aber warum sollten Sie etwas schätzen, das bereits bekannt ist (nach dem Vorverarbeitungsschritt)?