Benötigt Batch Normalized Network noch skalierte Eingaben?

Sep 04 2020

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

gunes Sep 04 2020 at 14:39

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)?