Wie und warum verwendet die Batch-Normalisierung gleitende Mittelwerte, um die Genauigkeit des Modells während des Trainings zu verfolgen?


20

Ich habe das Batch-Normalisierungspapier ( 1) gelesen und nicht verstanden, dass es notwendig ist, gleitende Durchschnitte zu verwenden, um die Genauigkeit des Modells zu verfolgen, und selbst wenn ich akzeptiere, dass dies das Richtige ist, verstehe ich es nicht was sie genau tun.

Nach meinem Verständnis (was ich falsch finde) wird in dem Papier erwähnt, dass die Bevölkerungsstatistik und nicht die Mini-Batch-Statistik verwendet wird, sobald das Modell das Training beendet hat. Nach einigen Diskussionen über unvoreingenommene Schätzungen (die mir tangential erscheinen und nicht verstehen, warum das so ist) sagen sie:

Stattdessen verfolgen wir die Genauigkeit des Modells beim Trainieren mit gleitenden Durchschnitten.

Das ist der Teil, der mich verwirrt. Warum führen sie gleitende Durchschnitte durch, um die Genauigkeit des Modells zu schätzen und über welchen Datensatz?

Normalerweise verfolgen die Benutzer bei der Schätzung der Generalisierung ihres Modells lediglich den Validierungsfehler ihres Modells (und stoppen möglicherweise frühzeitig ihren Gradientenabstieg, um zu regulieren). Es scheint jedoch, dass die Chargennormalisierung etwas völlig anderes bewirkt. Kann jemand erklären, was und warum es etwas anderes macht?


1 : Ioffe S. und Szegedy C. (2015),
"Batch-Normalisierung: Beschleunigung des Deep-Network-Trainings durch Reduzierung der internen Covariate-Verschiebung", Ergebnisse
der 32. Internationalen Konferenz über maschinelles Lernen , Lille, Frankreich, 2015.
Journal of Machine Learning Research: W & CP-Band 37


Bist du mit der Antwort zufrieden? Es ist überhaupt keine "Antwort", wenn Sie mich fragen; Wenn es noch relevant ist, kann ich eine bessere Antwort geben.
OverLordGoldDragon

Antworten:


8

Wenn Sie batch_normalization verwenden, müssen Sie zunächst verstehen, dass es in Training und Testing auf zwei verschiedene Arten funktioniert .

  1. Im Training müssen wir den Mini-Batch-Mittelwert berechnen, um den Batch zu normalisieren

  2. In der Folgerung wenden wir nur vorberechnete Mini-Batch-Statistiken an

Also in der 2. Sache, wie man diese Mini-Batch-Statik berechnet

Hier kommt der gleitende Durchschnitt

running_mean = momentum * running_mean + (1 - momentum) * sample_mean
running_var = momentum * running_var + (1 - momentum) * sample_var

Dies beantwortet die Frage überhaupt nicht; "warum" und "wie" wurden gefragt, und ein oberflächliches "was" wurde gegeben. Es sollte nicht überstimmt werden.
OverLordGoldDragon

1

Sie sprechen von einer Chargennormalisierung, die sie für das Trainingsverfahren beschrieben haben, aber nicht für Rückschlüsse.

Dies ist ein Prozess zum Normalisieren der verborgenen Einheiten unter Verwendung von Beispielmitteln usw.

In diesem Abschnitt erklären sie, was für die Inferenzphase zu tun ist, wenn Sie nur Vorhersagen treffen (dh nachdem das Training abgeschlossen ist).

Bei gestoppter Validierung verschachteln Sie jedoch die Vorhersage für die gesetzte Validierung mit dem Training, um Ihren Validierungsfehler abzuschätzen.

Während dieses Vorgangs haben Sie also keinen Bevölkerungsdurchschnitt (die Durchschnittswerte ändern sich während des Trainings immer noch). Dann verwenden Sie einen laufenden Durchschnitt, um die Parameter der Chargennorm zu berechnen und die Leistung beim Validierungssatz zu berechnen.

In diesem Sinne

Stattdessen verfolgen wir die Genauigkeit des Modells beim Trainieren mit gleitenden Durchschnitten.

Es hat nichts damit zu tun, das Laufmittel buchstäblich als Maß für die Leistung des neuronalen Netzwerks zu verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.