Ich habe gerade Geoff Hintons Artikel über die Transformation von Autoencodern gelesen
Hinton, Krizhevsky und Wang: Auto-Encoder transformieren . In Künstlichen Neuronalen Netzen und Maschinellem Lernen, 2011.
und würde gerne mit so etwas herumspielen. Aber nachdem ich es gelesen hatte, konnte ich nicht genug Details aus dem Papier bekommen, wie ich es tatsächlich implementieren könnte.
- Weiß jemand, wie die Zuordnung zwischen Eingabepixeln zu Kapseln funktionieren soll?
- Was genau soll in den Erkennungseinheiten passieren?
- Wie soll es trainiert werden? Ist es nur eine Standard-Stütze zwischen jeder Verbindung?
Noch besser wäre ein Link zu einem Quellcode für dieses oder ähnliches.
neural-network
deep-learning
autoencoder
Daniel Slater
quelle
quelle
Antworten:
Ich habe einen Beispiel-Tensorflow-Code zusammengestellt, um die Erklärung zu erleichtern (der vollständige Arbeitscode befindet sich in dieser Übersicht ). Dieser Code implementiert das Kapselnetzwerk aus dem ersten Teil von Abschnitt 2 des von Ihnen verlinkten Dokuments:
Dies hängt von der Netzwerkstruktur ab. Für das erste Experiment in diesem Artikel (und den obigen Code) hat jede Kapsel ein Empfangsfeld, das das gesamte Eingabebild enthält. Das ist die einfachste Anordnung. In diesem Fall handelt es sich um eine vollständig verbundene Ebene zwischen dem Eingabebild und der ersten verborgenen Ebene in jeder Kapsel.
Alternativ können die Kapselrezeptionsfelder eher wie CNN-Kerne mit Schritten angeordnet werden, wie in den späteren Experimenten in diesem Artikel.
Die Erkennungseinheiten sind eine interne Darstellung, die jede Kapsel hat. Jede Kapsel berechnet anhand dieser internen Darstellung
p
die Wahrscheinlichkeit, dass das Merkmal der Kapsel vorhanden ist, undxy
die abgeleiteten Übersetzungswerte. In Abbildung 2 dieses Dokuments wird überprüft, ob das Netzwerk diexy
korrekte Verwendung lernt (dies ist der Fall).Insbesondere sollten Sie es als Autoencoder trainieren und dabei einen Verlust verwenden, der die Ähnlichkeit zwischen der generierten Ausgabe und dem Original erzwingt. Der mittlere quadratische Fehler funktioniert hier gut. Abgesehen davon müssen Sie den Gradientenabstieg mit Backprop propagieren.
quelle