Der Name ist Twin Neural Network, aber eigentlich gibt es nur ein Netzwerk
Methoden zum Training von Zwillingsnetzwerken (zwei)
Methode 1: Nehmen Sie jeweils zwei Proben und vergleichen Sie deren Ähnlichkeit
Das Training dieses großen neuronalen Netzwerks erfordert einen großen Datensatz und jede Kategorie muss gekennzeichnet sein.
-
Für die Einstellung positiver und negativer Proben werden zwei Bilder aus derselben Klasse platziert und die Beschriftung lautet 1 (vollständige Ähnlichkeit). Es werden zwei Bilder aus unterschiedlichen Klassen aufgenommen und die Beschriftung lautet 0.
-
Aufbau eines neuronalen Netzwerks
Das Bild wird nach der Faltung zu einem langen Vektor erweitert
Hier sind h1 und h2 die Ergebnisse, die von demselben neuronalen Netzwerk erhalten wurden. Nach der Subtraktion wird der Absolutwert erhalten, um Z zu erhalten. Anschließend wird die vollständig verbundene Schicht eingegeben, um 1 Ausgabe zu erhalten. Schließlich wird die Sigmoidfunktion aktiviert, um die Wahrscheinlichkeit zu erhalten.
损失函数
: Die Verlustfunktion kann Kreuzentropie seinDas Gleiche gilt für negative Proben: (positive Probenbezeichnung ist 1, negative Probenbezeichnung ist 0)
-
One-Shot-Vorhersage
Zuerst müssen Sie
Support Set
bereitstellen. Beachten Sie, dass das inSupport Set
angezeigte Bild nicht im Trainingssatz enthalten ist. Geben Sie dann eine Abfrage an. Die Abfrage sollte a sein eine bestimmte im Support-Set. Klasse, dann werden Abfrage und Support-Set nacheinander verglichen, um die Ähnlichkeit zu berechnen, und das mit der größten Ähnlichkeit wird als Vorhersageergebnis ausgewählt
Methode 2: Triplettverlust
-
Datenaufbereitung
Jedes Mal werden drei Bilder aus dem Trainingssatz für das Training ausgewählt, zwei davon gehören zur gleichen Kategorie und das andere zu einer anderen Kategorie. Von den beiden Bildern derselben Kategorie wird eines als Anker und das andere als Anker bezeichnet positiv, und das andere gehört zu verschiedenen Kategorien. Das Bild wird als negativ bezeichnet. Berechnung
向量差的二范数的平方
Hier gilt: Je kleiner d+ ist, desto besser ist es, die gleiche Kategorie anzuzeigen, und je größer d-, desto besser, was auf unterschiedliche Kategorien hinweist.
-
verlustfunktion
Wenn der Verlust Null ist: (d-) - (d+) >= α (α ist der von uns festgelegte Hyperparameter), was darauf hinweist, dass das Netzwerk zu diesem Zeitpunkt positive und negative Stichproben unterscheiden kann
Wenn der Verlust nicht Null ist: Wenn die obige Bedingung (d-) – (d+) >= α nicht erfüllt ist, dann sei Verlust = (d+) + α – (d-). Während des Optimierungsprozesses hoffen wir, dass die Je kleiner der Verlust, desto kleiner der Verlust. Je besser, desto kleiner wird d+ und größer d-, wodurch der Abstand zwischen derselben Probe immer kleiner und der Abstand zwischen verschiedenen Proben immer größer wird größer.
-
prüfen
Die endgültige Ausgabe des neuronalen Netzwerks, die durch die obige Methode erhalten wird, ist d+ und d-. Zu diesem Zeitpunkt geben wir eine Abfrage in das Netzwerk ein, um dist zu erhalten, und finden den kleinsten dist.