Ranking-Verlust, kontrastiver Verlust, Margin-Verlust, Triplett-Verlust, Scharnier-Verlust und all diese verwirrenden Namen verstehen

Nach dem Erfolg meines Beitrags Understanding Categorical Cross-Entropy Loss, Binary Cross-Entropy Loss, Softmax Loss, Logistic Loss, Focal Loss und all diese verwirrenden Namen und nach der Überprüfung, dass Triplett-Verlust Cross-Entropy Loss in meinem Hauptforschungsthema (Multimodal Retrieval) übertrifft, habe ich beschlossen, einen ähnlichen Beitrag zu schreiben, der die Funktionen von Ranking-Verlusten erklärt.

Rangverluste werden in verschiedenen Bereichen, Aufgaben und neuronalen Netzen (wie Siamesische Netze oder Triplettnetze) verwendet. Deshalb erhalten sie unterschiedliche Namen wie kontrastiver Verlust, Margenverlust, Scharnierverlust oder Triplettverlust.

Ranking-Verlustfunktionen: Metrisches Lernen

Im Gegensatz zu anderen Verlustfunktionen wie Cross-Entropy-Verlust oder Mean Square Error-Verlust, deren Ziel es ist, zu lernen, eine Bezeichnung, einen Wert oder eine Menge oder Werte direkt vorherzusagen, wenn eine Eingabe erfolgt, besteht das Ziel von Ranking-Verlusten darin, relative Abstände zwischen Eingaben vorherzusagen. Diese Aufgabe wird oft als metrisches Lernen bezeichnet.

Ranking-Funktionen sind sehr flexibel in Bezug auf Trainingsdaten: Wir brauchen nur eine Ähnlichkeitsbewertung zwischen Datenpunkten, um sie zu verwenden. Diese Punktzahl kann binär sein (ähnlich / unähnlich). Stellen Sie sich als Beispiel einen Datensatz zur Gesichtsverifizierung vor, in dem wir wissen, welche Gesichtsbilder zu derselben Person gehören (ähnlich) und welche nicht (unähnlich). Mit einer Ranking-Verlustfunktion können wir ein CNN trainieren, um zu schließen, ob zwei Gesichtsbilder derselben Person gehören oder nicht.

Um eine Ranking-Verlustfunktion zu verwenden, extrahieren wir zuerst Merkmale aus zwei (oder drei) Eingabedatenpunkten und erhalten für jeden von ihnen eine eingebettete Darstellung. Dann definieren wir eine metrische Funktion, um die Ähnlichkeit zwischen diesen Darstellungen zu messen, zum Beispiel die euklidische Entfernung. Schließlich trainieren wir die Feature-Extraktoren, um ähnliche Darstellungen für beide Eingaben zu erzeugen, falls die Eingaben ähnlich sind, oder entfernte Darstellungen für die beiden Eingaben, falls sie unterschiedlich sind.
Wir kümmern uns nicht einmal um die Werte der Darstellungen, sondern nur um die Abstände zwischen ihnen. Diese Trainingsmethodik hat jedoch gezeigt, dass sie leistungsstarke Darstellungen für verschiedene Aufgaben liefert.

Ranglistenverlustformulierung

Für Ranglistenverluste werden verschiedene Namen verwendet, aber ihre Formulierung ist in den meisten Fällen einfach und invariant. Wir unterscheiden zwei Arten von Ranking-Verlusten für zwei verschiedene Setups: Wenn wir Paare von Trainingsdatenpunkten oder Drillinge von Trainingsdatenpunkten verwenden.
Beide vergleichen Abstände zwischen Darstellungen von Trainingsdatenbeispielen.

Wenn Sie das Videoformat bevorzugen, habe ich aus diesem Beitrag ein Video gemacht. Auch auf Spanisch verfügbar:

Pairwise Ranking Loss

Beispiel für ein paarweises Ranking-Verlust-Setup zum Trainieren eines Netzes für die Bildgesichtsüberprüfung. In diesem Setup werden die Gewichte der CNNs gemeinsam genutzt. Wir nennen es siamesische Netze. Ein paarweiser Ranking-Verlust kann jedoch in anderen Setups oder mit anderen Netzen verwendet werden.

Bei positiven Paaren ist der Verlust nur dann \ (0\), wenn das Netz Darstellungen für beide Elemente im Paar ohne Abstand zwischen ihnen erzeugt, und der Verlust (und damit die Aktualisierung der entsprechenden Netzparameter) nimmt mit diesem Abstand zu.

Für negative Paare ist der Verlust \(0\), wenn der Abstand zwischen den Darstellungen der beiden Paarelemente größer als der Rand \(m\) ist. Wenn dieser Abstand jedoch nicht größer als \(m\) ist, ist der Verlust positiv, und die Nettoparameter werden aktualisiert, um eine entferntere Darstellung für diese beiden Elemente zu erzeugen. Der Verlustwert beträgt höchstens \(m\), wenn der Abstand zwischen \(r_a\) und \(r_n\) \(0\) beträgt. Die Funktion des Randes besteht darin, dass, wenn die für ein negatives Paar erzeugten Darstellungen weit genug entfernt sind, keine Anstrengungen verschwendet werden, um diesen Abstand zu vergrößern, sodass sich das weitere Training auf schwierigere Paare konzentrieren kann.

Triplett-Ranking-Verlust

Beispiel für ein Triplett-Ranking-Verlust-Setup zum Trainieren eines Netzes für die Bildgesichtsüberprüfung. In diesem Setup werden die Gewichte der CNNs gemeinsam genutzt. Wir nennen es Dreifachnetze.

Lassen Sie uns 3 Situationen dieses Verlustes analysieren:

Quelle: https://omoindrot.github.io/triplet-loss. Darstellung von drei “Arten von Negativen” für ein Anker- und Positivpaar.

Negativauswahl

Eine wichtige Entscheidung eines Trainings mit Triplett-Ranking-Verlust ist die Negativauswahl oder das Triplett-Mining. Die gewählte Strategie hat einen hohen Einfluss auf die Trainingseffizienz und die endgültige Leistung. Eine offensichtliche Erkenntnis ist, dass das Training mit einfachen Drillingen vermieden werden sollte, da der daraus resultierende Verlust \ (0\) beträgt.

Erste Strategien, die Offline-Triplett-Mining verwendet werden, was bedeutet, dass Drillinge zu Beginn des Trainings oder zu jeder Epoche definiert werden. Später wurde das Online-Triplett-Mining vorgeschlagen, was bedeutet, dass während des Trainings für jede Charge Drillinge definiert werden, was zu einer besseren Trainingseffizienz und -leistung führte.
Der optimale Weg zur Negativauswahl hängt stark von der Aufgabe ab. Aber ich werde in diesem Beitrag nicht darauf eingehen, da sein Ziel nur darin besteht Überblick über die verschiedenen Namen und Ansätze für Ranking-Verluste. Siehe Oliver moindrot Blog-Post für eine tiefere Analyse auf Triplett Bergbau.

Triplet Loss in deep learning wurde in Learning Fine-grained Image Similarity with Deep Ranking and FaceNet: A Unified Embedding for Face Recognition and Clustering eingeführt.

Dieser Github enthält einige interessante Diagramme aus einem Modell, das auf MNIST mit Kreuzentropieverlust, paarweisem Ranking-Verlust und Triplett-Ranking-Verlust trainiert wurde, sowie Pytorch-Code für diese Trainings.

Andere Namen, die für Rangverluste verwendet werden

Rangverluste sind im Wesentlichen die oben erläuterten und werden in vielen verschiedenen Anwendungen mit derselben Formulierung oder geringfügigen Variationen verwendet. Für sie werden jedoch unterschiedliche Namen verwendet, was verwirrend sein kann. Hier erkläre ich, warum diese Namen verwendet werden.

  • Rangverlust: Dieser Name stammt aus dem Information Retrieval-Feld, in dem wir Modelle trainieren möchten, um Elemente in einer bestimmten Reihenfolge zu ordnen.
  • Randverlust: Dieser Name kommt von der Tatsache, dass diese Verluste einen Rand verwenden, um Proben und Entfernungen zu vergleichen.
  • Kontrastiver Verlust: Kontrastiv bezieht sich auf die Tatsache, dass diese Verluste aus zwei oder mehr Datenpunktdarstellungen berechnet werden. Dieser Name wird oft für den paarweisen Ranking-Verlust verwendet, aber ich habe ihn noch nie in einem Setup mit Drillingen verwendet.
  • Triplettverlust: Wird häufig als Verlustname verwendet, wenn Triplett-Trainingspaare verwendet werden.
  • Scharnier Verlust: Auch bekannt als Max-Margin-Ziel. Es wird zum Trainieren von SVMs zur Klassifizierung verwendet. Es hat eine ähnliche Formulierung in dem Sinne, dass es bis zu einer Marge optimiert. Deshalb wird dieser Name manchmal für Ranking-Verluste verwendet.

Siamesische und Triplettnetze

Siamesische und Triplettnetze sind Trainingsaufbauten, bei denen paarweiser Ranglistenverlust und Triplett-Ranglistenverlust verwendet werden. Aber diese Verluste können auch in anderen Setups verwendet werden.
In diesen Setups werden die Darstellungen für die Trainingsproben im Paar oder Triplett mit identischen Netzen mit gemeinsamen Gewichten (mit demselben CNN) berechnet.

Siamesische Netze

Werden von zwei identischen CNNs mit gemeinsamen Gewichten gebaut (beide CNNs haben die gleichen Gewichte). Jedes dieser Netze verarbeitet ein Bild und erzeugt eine Repräsentation. Diese Darstellungen werden verglichen und ein Abstand zwischen ihnen berechnet. Dann wird ein paarweiser Ranking-Verlust verwendet, um das Netzwerk zu trainieren, so dass der Abstand zwischen Darstellungen, die durch ähnliche Bilder erzeugt werden, klein ist und der Abstand zwischen Darstellungen von dis-ähnlichen Bildern groß ist.

Da in einem siamesischen Netzaufbau die Darstellungen für beide Elemente im Paar von demselben CNN berechnet werden, wobei \(f(x)\) dieser CNN ist, können wir den paarweisen Rangverlust wie folgt schreiben:

Triplett-Netze

Die Idee ähnelt einem siamesischen Netz, aber ein Triplett-Netz hat drei Zweige (drei CNNs mit gemeinsamen Gewichten). Das Modell wird trainiert, indem dem entsprechenden Ankerbild gleichzeitig ein positives und ein negatives Bild zugewiesen und ein Triplett-Ranking-Verlust verwendet wird. Dadurch lernt das Netz besser, welche Bilder dem Ankerbild ähnlich und verschieden sind.

Im Fall von Triplettnetzen können wir, da dasselbe CNN \(f(x)\) verwendet wird, um die Darstellungen für die drei Triplettelemente zu berechnen, den Triplett-Ranking-Verlust wie folgt schreiben :

Ranking-Verlust für multimodalen Abruf

In meiner Forschung habe ich Triplet-Ranking-Verlust für den multimodalen Abruf von Bildern und Text verwendet. Die Trainingsdaten bestehen aus einem Datensatz von Bildern mit zugehörigem Text. Ziel ist es, die Einbettung der Bilder und der Wörter in denselben Raum für den modalübergreifenden Abruf zu lernen. Dazu lernen wir zunächst Worteinbettungen aus dem Text und frieren sie ein, indem wir Algorithmen wie Word2Vec oder GloVe verwenden. Dann wollen wir ein CNN trainieren, um die Bilder in denselben Raum einzubetten: Die Idee ist, zu lernen, ein Bild und die zugehörige Beschriftung an derselben Stelle im multimodalen Einbettungsraum einzubetten.

Der erste Ansatz, dies zu tun, bestand darin, ein CNN zu trainieren, um Texteinbettungen aus Bildern mithilfe eines Kreuzentropieverlusts direkt vorherzusagen. Die Ergebnisse waren schön, aber später fanden wir heraus, dass die Ergebnisse mit einem Triplett-Ranking-Verlust besser waren.

Das Setup ist das folgende: Wir verwenden feste Texteinbettungen (GloVe) und lernen nur die Bilddarstellung (CNN). Das Anker-Sample \(a\) ist also das Bild, das positive Sample \ (p\) ist der Text, der diesem Bild zugeordnet ist, und das negative Sample \ (n\) ist der Text eines anderen “negativen” Bildes. Um den negativen Text auszuwählen, haben wir verschiedene Online-Strategien für das negative Mining untersucht, wobei die Abstände im Handschuhraum mit der Einbettung von positivem Text verwendet wurden. Drillinge Bergbau ist besonders sinnvoll, in diesem Problem, da es keine etablierten Klassen. Angesichts der Vielfalt der Bilder haben wir viele einfache Drillinge. Aber wir müssen vorsichtig mit harten Negativen sein, da der Text, der einem anderen Bild zugeordnet ist, auch für ein Ankerbild gültig sein kann.

Triplet Ranking Loss Training einer multimodalen Retrieval-Pipeline. Die Texteinbettungen sind festgelegt, und wir trainieren das CNN, um das Bild näher an seinem positiven Text als am negativen Text einzubetten.

Mit diesem Setup haben wir einige quantitative Ergebnisse berechnet, um das Triplett-Ranking-Verlusttraining mit dem Cross-Entropy-Verlusttraining zu vergleichen. Ich werde hier keine Experimentdetails erläutern, aber die Einrichtung ist dieselbe wie in (Papier, Blogpost). Grundsätzlich führen wir einige Textabfragen durch und bewerten die Bild-durch-Text-Abrufleistung, wenn wir selbstüberwacht aus Social-Media-Daten lernen. Ergebnisse mit einem Triplett-Ranking-Verlust sind signifikant besser als mit einem Kreuz-Entropie-Verlust.

Bildabruf nach Text durchschnittliche Genauigkeit auf InstaCities1M.

Ein weiterer Vorteil der Verwendung eines Triplett-Ranking-Verlusts anstelle eines Kreuzentropieverlusts oder eines mittleren quadratischen Fehlerverlusts zur Vorhersage von Texteinbettungen besteht darin, dass wir vorberechnete und feste Texteinbettungen beiseite legen können, die wir im Regressionsfall als Grundwahrheit für Out-Modelle verwenden. Dies ermöglicht die Verwendung von RNN, LSTM zur Verarbeitung des Textes, den wir zusammen mit dem CNN trainieren können und der zu besseren Darstellungen führt.

Ähnliche Ansätze werden für das Training von multimodalen Abrufsystemen und Untertitelungssystemen in COCO verwendet, beispielsweise in here.

Ranking von Ebenen in Deep Learning Frameworks

Caffe

  • Constrastive Verlustschicht. Beschränkt auf paarweise Ranking Verlustberechnung. Kann zum Beispiel verwendet werden, um siamesische Netzwerke zu trainieren.

  • PyCaffe Triplett Ranking Verlust Schicht. Von David Lu zum Trainieren von Triplett-Netzwerken.

PyTorch

  • CosineEmbeddingLoss. Es ist ein paarweiser Ranking-Verlust, der die Kosinusentfernung als Entfernungsmetrik verwendet. Eingaben sind die Merkmale der Paarelemente, die Beschriftung, die angibt, ob es sich um ein positives oder ein negatives Paar handelt, und der Rand.

  • Marginrankingverlust. Ähnlich wie ersteres, verwendet jedoch die euklidische Entfernung.

  • TripletMarginLoss. Ein Triplett-Ranking-Verlust mit euklidischer Entfernung.

TensorFlow

  • contrastive_loss. Paarweiser Ranking-Verlust.

  • triplet_semihard_loss. Triplettverlust mit halbhartem negativem Mining.

Schreibe einen Kommentar

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