wake-up-neo.com

Batch-Normalisierung im konvolutionellen neuronalen Netzwerk

Ich bin Neuling in konvolutionellen neuronalen Netzwerken und habe nur eine Vorstellung von Feature-Maps und wie Faltung von Bildern zum Extrahieren von Features durchgeführt wird. Ich würde mich freuen, einige Details zur Anwendung der Batch-Normalisierung in CNN zu erfahren.

Ich las dieses Dokument https://arxiv.org/pdf/1502.03167v3.pdf und konnte den BN-Algorithmus verstehen, der auf Daten angewendet wird, aber am Ende wurde erwähnt, dass eine geringfügige Änderung erforderlich ist, wenn auf CNN angewendet:

Für Faltungs-Layer möchten wir außerdem, dass die Normalisierung der Faltungseigenschaft gehorcht - so dass verschiedene Elemente derselben Feature-Karte an verschiedenen Orten auf dieselbe Weise normalisiert werden. Um dies zu erreichen, normalisieren wir gemeinsam alle Aktivierungen in einem Mini-Batch über alle Standorte hinweg. In Alg. In 1 soll B die Menge aller Werte in einer Feature-Map sein, und zwar sowohl über die Elemente eines Mini-Batches als auch über räumliche Positionen. Für einen Mini-Batch der Größe m und Feature-Maps der Größe p × q verwenden wir den Effekt - Minibatch der Größe m ′ = | B | = m · pq. Wir lernen ein Paar von Parametern γ (k) und β (k) pro Merkmalskarte und nicht pro Aktivierung. Alg. 2 wird ähnlich modifiziert, so dass während der Inferenz die BN-Transformation dieselbe lineare Transformation auf jede Aktivierung in einer gegebenen Merkmalskarte anwendet.

Ich bin total verwirrt, wenn sie sagen "so dass verschiedene Elemente derselben Feature-Karte an verschiedenen Orten auf dieselbe Weise normalisiert werden"

Ich weiß, was Feature-Maps bedeuten, und unterschiedliche Elemente sind die Gewichte in jeder Feature-Map. Aber ich konnte nicht verstehen, was Standort oder räumlicher Standort bedeutet.

Ich konnte den folgenden Satz überhaupt nicht verstehen "In Alg. 1 lassen wir B die Menge aller Werte in einer Feature-Map sowohl über die Elemente eines Minibatches als auch über räumliche Positionen sein"

Ich würde mich freuen, wenn sich jemand kalt ausarbeitet und mich viel einfacher erklärt 

40
akshata bhat

Beginnen wir mit den Begriffen. Denken Sie daran, dass die Ausgabe der Faltungsschicht ein 4-stufiger Tensor [B, H, W, C] ist, wobei B die Stapelgröße ist, (H, W) die Feature-Map - Größe ist, C die Anzahl der Kanäle ist. Ein Index (x, y), wobei 0 <= x < H und 0 <= y < W ein räumlicher Ort ist.

Üblicher Batchnorm

Im Folgenden wird die Batchnorm wie üblich (in Pseudo-Code) angewendet:

# t is the incoming tensor of shape [B, H, W, C]
# mean and stddev are computed along 0 axis and have shape [H, W, C]
mean = mean(t, axis=0)
stddev = stddev(t, axis=0)
for i in 0..B-1:
  out[i,:,:,:] = norm(t[i,:,:,:], mean, stddev)

Im Wesentlichen werden H*W*C-Mittel und H*W*C-Standardabweichungen über B-Elemente berechnet. Möglicherweise stellen Sie fest, dass verschiedene Elemente an unterschiedlichen räumlichen Positionen ihren eigenen Mittelwert und ihre eigene Varianz haben und nur B-Werte sammeln.

Batchnorm in Konvektionsschicht

Dieser Weg ist absolut möglich. Die Faltungsebene hat jedoch eine besondere Eigenschaft: Filtergewichte werden im Eingabebild gemeinsam verwendet (Sie können es in diesem Beitrag detailliert lesen). Aus diesem Grund ist es sinnvoll, die Ausgabe auf dieselbe Weise zu normalisieren, so dass jeder Ausgabewert den Mittelwert und die Varianz der B*H*W-Werte an verschiedenen Orten annimmt.

So sieht der Code in diesem Fall aus (wieder Pseudo-Code):

# t is still the incoming tensor of shape [B, H, W, C]
# but mean and stddev are computed along (0, 1, 2) axes and have just [C] shape
mean = mean(t, axis=(0, 1, 2))
stddev = stddev(t, axis=(0, 1, 2))
for i in 0..B-1, x in 0..H-1, y in 0..W-1:
  out[i,x,y,:] = norm(t[i,x,y,:], mean, stddev)

Insgesamt gibt es nur C-Mittelwerte und Standardabweichungen, und jede davon wird anhand von B*H*W-Werten berechnet. Das meinen sie, wenn sie von "effektiver Mini-Charge" sprechen: Der Unterschied zwischen den beiden liegt nur in der Achsenauswahl (oder entsprechend "Mini-Chargenauswahl").

49
Maxim

Ich bin nur zu 70% sicher, was ich sage. Wenn es nicht sinnvoll ist, bearbeiten oder erwähnen Sie es vor dem Abstimmen. 

Über location oder spatial location: Bezeichnet die Position von Pixeln in einem Bild oder einer Feature-Map. Eine Feature-Map ist vergleichbar mit einer spärlich modifizierten Version eines Bildes, in der Konzepte dargestellt werden. 

Über so that different elements of the same feature map, at different locations, are normalized in the same way: Einige Normalisierungsalgorithmen sind lokal, dh sie hängen von ihrer nahen Umgebung (Standort) ab und nicht von den Dingen, die weit auseinander liegen. Sie bedeuten wahrscheinlich, dass jedes Pixel unabhängig von seiner Position wie das Element einer Menge behandelt wird, unabhängig von seiner direkten Umgebung. 

Über In Alg. 1, we let B be the set of all values in a feature map across both the elements of a mini-batch and spatial locations: Sie erhalten eine einfache Liste aller Werte jedes Trainingsbeispiels im Minibatch, und diese Liste kombiniert Dinge unabhängig von ihrem Standort auf der Feature-Map. 

1