Hintons Kapselnetzwerke verstehen. Teil IV: CapsNet Architecture

Angenommen, die korrekte Bezeichnung ist 1. Dies bedeutet, dass die erste Ziffercap für die Codierung des Vorhandenseins der Ziffer 1 verantwortlich ist. Für die Verlustfunktion dieser DigitCap ist T_c eins und für alle verbleibenden neun DigitCaps ist T_c 0. Wenn T_c 1 ist, wird der erste Term der Verlustfunktion berechnet und der zweite Term wird Null. Um in unserem Beispiel den Verlust des ersten DigitCap zu berechnen, nehmen wir den Ausgangsvektor dieses DigitCap und subtrahieren ihn von m+, das auf 0,9 festgelegt ist. Dann behalten wir den resultierenden Wert nur für den Fall bei, dass er größer als Null ist, und quadrieren ihn. Andernfalls geben Sie 0 zurück. Mit anderen Worten, der Verlust ist Null, wenn die richtige DigitCap die richtige Beschriftung mit einer Wahrscheinlichkeit von mehr als 0,9 vorhersagt, und er ist ungleich Null, wenn die Wahrscheinlichkeit kleiner als 0,9 ist.

Verlust funktion wert für richtige und falsche DigitCap. Beachten Sie, dass das rote Diagramm im Vergleich zum grünen vertikal „gequetscht“ wird. Dies ist auf den Lambda-Multiplikator aus der Formel zurückzuführen. Quelle: Autor.

Für DigitCaps, die nicht mit dem richtigen Label übereinstimmen, ist T_c Null und daher wird der zweite Term ausgewertet (entsprechend (1 — T_c) part). In diesem Fall können wir sehen, dass der Verlust Null ist, wenn die nicht übereinstimmende DigitCap eine falsche Beschriftung mit einer Wahrscheinlichkeit von weniger als 0,1 vorhersagt, und ungleich Null, wenn sie eine falsche Beschriftung mit einer Wahrscheinlichkeit von mehr als 0,1 vorhersagt.

Schließlich ist in der Formel der Lambda-Koeffizient für die numerische Stabilität während des Trainings enthalten (sein Wert ist auf 0,5 festgelegt). Die beiden Terme in der Formel haben Quadrate, weil diese Verlustfunktion die L2-Norm hat und die Autoren diese Norm anscheinend für besser halten.

Teil II. Decoder.

CapsNet Decoder Architektur. Quelle: Originalpapier.

Decoder nimmt einen 16-dimensionalen Vektor von der richtigen DigitCap und lernt, ihn in ein Bild einer Ziffer zu dekodieren (beachten Sie, dass er während des Trainings nur den richtigen DigitCap-Vektor verwendet und die falschen ignoriert). Der Decoder wird als Regularisierer verwendet, er nimmt die Ausgabe der richtigen DigitCap als Eingabe und lernt, ein 28 x 28 Pixel großes Bild neu zu erstellen, wobei die Verlustfunktion der euklidische Abstand zwischen dem rekonstruierten Bild und dem Eingabebild ist. Decoder zwingt Sie, Funktionen zu lernen, die für die Rekonstruktion des Originalbildes nützlich sind. Je näher das rekonstruierte Bild am Eingabebild liegt, desto besser. Beispiele für rekonstruierte Bilder sind im Bild unten zu sehen.

Obere Reihe: Originalbilder. Untere Reihe: rekonstruierte Bilder. Quelle: Originalpapier.

Schicht 4. Vollständig verbunden #1

Eingang: 16×10.
Ausgang: 512.
Anzahl der Parameter: 82432.

Jeder Ausgang der unteren Ebene wird gewichtet und als Eingang in jedes Neuron der vollständig verbundenen Schicht geleitet. Jedes Neuron hat auch einen Bias-Term. Für diese Schicht gibt es 16×10 Eingänge, die alle auf jedes der 512 Neuronen dieser Schicht gerichtet sind. Daher gibt es (16×10 + 1) x512 trainierbare Parameter.

Für die folgenden zwei schichten berechnung ist die gleiche: anzahl der Parameter = (Anzahl der Eingänge + Bias) x Anzahl der Neuronen in der Schicht. Aus diesem Grund gibt es keine Erklärung für vollständig verbundene Schichten 2 und 3.

Schicht 5. Vollständig verbunden #2

Eingang: 512.
Ausgang: 1024.
Anzahl der Parameter: 525312.

Schicht 6. Vollständig verbunden #3

Eingang: 1024.
Ausgabe: 784 (was nach dem Umformen ein 28×28 decodiertes Bild ergibt).
Anzahl der Parameter: 803600.

Gesamtzahl der Parameter im Netzwerk: 8238608.

Fazit

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.