[PYTHON] Warum Deep Metric Learning basierend auf der Softmax-Funktion funktioniert

Einführung

Beim Fernunterricht (metrisches Lernen) mit Deep Learning werden Ähnlichkeiten (und Unähnlichkeiten) zwischen Bildern mit Contrastive Loss und [Triplet Loss] verwendet (https://qiita.com/tancoro/items/35d0925de74f21bfff14). ) Ist weit verbreitet, aber es ist auch bekannt, dass es schwierig ist, Lerndaten zu kombinieren und auszuwählen, und das Lernen selbst ist oft schwierig. Aus diesem Grund wurden bisher verschiedene Verbesserungen und Einfallsreichtum vorgeschlagen. In jüngster Zeit hat das metrische Lernen, mit dem Sie anhand der Softmax-Funktion lernen können, die Aufmerksamkeit auf sich gezogen, als wäre es eine allgemeine Klassifizierungsaufgabe, ohne dass es schwierig ist, Trainingsdaten auszuwählen. ArcFace usw. ist eine typische Methode und wird in hier ausführlich erläutert. Warum funktioniert metrisches Lernen basierend auf der Softmax-Funktion und gibt es Raum für weitere Verbesserungen? Ich möchte ein wenig dazu vorstellen.

Center Loss Center Loss [^ Center] ist wahrscheinlich der Urheber der Einbeziehung der Elemente des metrischen Lernens in die Klassifizierung. Center Loss wurde unter hier ausführlich erläutert, daher werde ich die wichtigsten Punkte nur kurz vorstellen. Center Loss lernt gleichzeitig die Klassenklassifizierung und die Position des Klassenzentrums im Merkmalsraum, indem der Abstand zwischen jedem Merkmalsvektor und dem entsprechenden Klassenzentrum bestraft wird. Infolgedessen wird die Variation innerhalb der Klasse verringert, und dies wurde auf der ECCV 2016 als effektivere Methode zur Klassentrennung angekündigt.

In diesem Artikel wird die FC-Schicht unmittelbar vor der letzten Schicht von CNN auf zwei Dimensionen verbessert, und der Wert wird in der zweidimensionalen Ebene aufgetragen, um die Merkmalsmenge zu visualisieren. Die folgende Abbildung zeigt die Zwischenfunktionen bei der Klassifizierung von MNIST mit der normalen Softmax-Funktion.

スクリーンショット 2020-02-03 17.45.57.png

Die Verlustfunktion ist der normale Softmax-Kreuzentropieverlust plus der Mittelverlustterm für den Abstand zwischen jedem Merkmalsvektor und dem Mittelvektor seiner Klasse. スクリーンショット 2020-02-03 18.09.05.png

Da es nicht realistisch ist, das Klassenzentrum $ C_ {y_i} $ jedes Mal genau zu berechnen, wird die folgende Berechnung für jeden Mini-Batch durchgeführt und das Klassenzentrum $ C_ {y_i} $ wird nacheinander aktualisiert. Ich werde.

スクリーンショット 2020-02-03 19.02.18.png スクリーンショット 2020-02-03 19.02.32.png スクリーンショット 2020-02-03 19.06.13.png

Das Folgende ist ein konkretes Beispiel für ein klassenzentriertes Update. Wenn der Mini-Batch drei Daten der Klasse A enthält, $ A1 $, $ A2 $ und $ A3 $, wird die Mittelposition $ C_A $ der Klasse A wie in der folgenden Abbildung gezeigt aktualisiert.

スクリーンショット 2020-02-03 19.22.49.png

Schließlich ist hier eine Visualisierung der Ergebnisse von Center Loss. Sie können sehen, dass durch Erhöhen des Werts des Hyperparameters $ \ lambda $ auch die Variation innerhalb der Klasse abnimmt.

スクリーンショット 2020-02-03 19.32.22.png

Sphereface Er fand heraus, dass der Merkmalsraum beim Training mit der Softmax-Funktion eine einzigartige Winkelverteilung aufwies, und bestand darauf, dass der winkelbasierte Rand besser geeignet war als der euklidische entfernungsbasierte Rand wie Center Loss. Angular Softmax (A-Softmax) Loss wurde vorgeschlagen [^ Sphere] und am CVPR2017 übernommen.

Ich würde sie gerne der Reihe nach anschauen. Erstens sind die üblichen Softmax Cross Entropy Loss: スクリーンショット 2020-02-03 22.30.08.png Als nächstes ist dies die Formel des inneren Produkts\boldsymbol{a}\cdot\boldsymbol{b}=\|\|\boldsymbol{a}\|\|\,\|\|\boldsymbol{b}\|\|\cos\thetaMit\boldsymbol{W^T_j}Wann\boldsymbol{x_i}Schreiben Sie den inneren Produktteil von neu. スクリーンショット 2020-02-03 22.49.50.png Normalisieren Sie außerdem die Gewichtsparameter\|\|\boldsymbol{W_j}\|\| = 1Und Voreingenommenheitb_jEbenfalls0Zu Dann haben wir Folgendes, das wir als modifizierten Softmax-Verlust definieren. スクリーンショット 2020-02-03 23.03.35.png Als nächstes wollen wir sehen, wie die Entscheidungsgrenze in diesem $ L_ {modifiziert} $ ist. Eine Entscheidungsgrenze ist ein Grenzwert, bei dem zwei Klassen genau die gleiche Wahrscheinlichkeit haben.

Sei $ \ cos \ theta_1 $ der Winkel zwischen dem Gewicht der Klasse 1 $ W_1 $ und dem Merkmal $ x_i $ und $ \ cos \ theta_2 $ der Winkel zwischen dem Gewicht der Klasse 2 $ W_2 $ und dem Merkmal $ x_i $. Diese beiden Wahrscheinlichkeiten sind genau gleich, wenn die folgenden Bedingungen erfüllt sind.

\frac{e^{\|\boldsymbol{x_i}\|\cos\theta_1}}{\sum_{j} e^{\|\boldsymbol{x_i}\|\cos(\theta_{j,i})}} = \frac{e^{\|\boldsymbol{x_i}\|\cos\theta_2}}{\sum_{j} e^{\|\boldsymbol{x_i}\|\cos(\theta_{j,i})}} \\
\|\boldsymbol{x_i}\|\cos\theta_1 = \|\boldsymbol{x_i}\|\cos\theta_2 \\
\theta_1 = \theta_2

Daher ist die Wahrscheinlichkeit von Klasse 1 und Klasse 2 genau gleich, wenn es in linearer Richtung $ x_i $ gibt, das den Winkel der Gewichte $ W_1 $ und $ W_2 $ in zwei gleiche Teile teilt. スクリーンショット 2020-02-03 23.42.12.png Aus diesem Ergebnis ist ersichtlich, dass der durch Softmax Loss gelernte Merkmalsbetrag $ x_i $ im Wesentlichen entlang des Winkels des letzten Gewichts $ Wj $ unmittelbar vor dem Multiplizieren mit Softmax verteilt ist. スクリーンショット 2020-02-03 23.54.56.png Dies deutet darauf hin, dass die Kombination von euklidischen entfernungsbasierten Rändern wie Center Loss mit der Softmax-Funktion nicht sehr kompatibel ist und ** die Bereitstellung von Rändern entlang des Winkels am effektivsten ist. Es zeigt, dass es sich um ein Ziel handelt **.

Angular Softmax (A-Softmax) Loss Angular Softmax (A-Softmax) Der Verlust ist wie folgt definiert: スクリーンショット 2020-02-04 0.29.05.png Da $ L_ {modifiziert} $ nur für den Winkel $ \ theta_ {y_i, i} $, der durch das Gewicht $ W_ {y_i} $ seiner eigenen Klasse gebildet wird, mit einem Koeffizienten von $ m $ bestraft wird, wird die ursprüngliche Entscheidungsgrenze festgelegt. Es wird erwartet, dass sich das Gewicht Ihrer Klasse näher an $ W_ {y_i} $ als an die Position bewegt. スクリーンショット 2020-02-04 0.39.42.png

CosFace und ArcFace

Es gibt mehrere Vorschläge für Sphereface und darüber hinaus, Ränder entlang des von Sphereface beanspruchten Winkels zu ziehen. CosFace [^ Cosface] und ArcFace [^ Arcface] sind Beispiele. スクリーンショット 2020-02-04 0.59.41.png

Ich werde die Details weglassen, aber kurz, da CosFace auch $ x_i $ normalisiert, wird der Winkel zwischen den beiden Vektoren $ \ cos \ theta $ als Ähnlichkeit ausgedrückt. Es ist jetzt möglich. Wir haben auch einen Hyperparameter $ s $ eingeführt, um zu verhindern, dass Softmax ausfällt, weil der Wert von $ \ cos \ theta $ zu klein ist. Seitdem hat ArcFace die Position der Ränder geändert. Da der Rand direkt für den Winkel angegeben wird, ist die Trenngrenze in Softmax über das gesamte Intervall linear und konstant.

Uniform Loss Durch Hinzufügen eines neuen Begriffs namens Uniform Loss zu Cosine Based Softmax Loss wie Sphereface schlagen wir eine Methode vor, die gleiche Verteilungsbeschränkungen auferlegt, die das Klassenzentrum gleichmäßig verteilen und den Merkmalsraum optimal nutzen [^ Uniformface] ]es war erledigt. Verabschiedet bei CVPR 2019. Uniform Loss funktioniert, indem das Zentrum einer Klasse als Ladung mit Abstoßung zwischen Klassen auf der Hypersphäre, die ein Merkmalsraum ist, betrachtet und ihre potentielle Energie minimiert wird. Viele der bisher existierenden Methoden zielen darauf ab, den Abstand zwischen den Klassen zu vergrößern und die Variation zwischen den Klassen zu verringern, aber Uniform Loss erwartet auch, den minimalen Abstand zwischen den Klassen zu maximieren. Ich kann es schaffen

Im Fall von ** Center Loss ** wird lediglich der Abstand zwischen den Elementen in der Klasse und dem Zentrum der Klasse minimiert und die Beziehungen zwischen den Klassen überhaupt nicht beschrieben. スクリーンショット 2020-02-04 13.03.15.png

Im Fall von ** Sphereface **, ** Cosface **, ** Arcface ** wird die Diskriminanzgrenze mit einem Rand auf der Hypersphäre gelernt, und infolgedessen ist die Variation innerhalb der Klasse gering und der Abstand zwischen den Klassen gering. Das Lernen schreitet voran, wenn es größer wird. Da jedoch nichts die Gesamtverteilung des Merkmalsraums explizit einschränkt, kann es sich um eine lokale Anordnung innerhalb des Merkmalsraums handeln und unausgeglichen sein. スクリーンショット 2020-02-04 13.08.08.png

Ein gleichmäßiger Verlust wird durch die Tatsache motiviert, dass beim Platzieren von Ladungen auf der Oberfläche einer Kugel die potentielle Energie minimiert wird, wenn sie gleichmäßig verteilt sind, sodass das Zentrum der Klasse als Ladung und deren Potential betrachtet wird. Die Funktion, die Energie darstellt, wird als Verlust ausgedrückt. スクリーンショット 2020-02-04 13.15.19.png

Definieren Sie eine Abstoßungskraft $ F $ zwischen zwei Klassen, die umgekehrt proportional zum Quadrat dieser Entfernung ist. スクリーンショット 2020-02-04 13.17.52.png

Die Distanzfunktion $ d $ folgt dem Coulombschen Gesetz und verwendet die euklidische Distanz. Addieren Sie außerdem 1, um zu verhindern, dass die Abstoßungskraft $ F $ zu groß wird. スクリーンショット 2020-02-04 13.21.18.png

Formulieren Sie den einheitlichen Verlust als Durchschnitt aller klassenzentrierten paarweisen Energien. スクリーンショット 2020-02-04 13.25.32.png

Der Funktionsteil Loss (Cosine Based Softmax Loss) von Sphereface lautet wie folgt. スクリーンショット 2020-02-04 13.30.10.png

Die Summe dieser beiden Verluste ist die endgültige Verlustfunktion. スクリーンショット 2020-02-04 13.31.25.png

Schließlich gibt es eine klassenzentrierte Aktualisierungsmethode, die genau der von Center Loss entspricht.

Übrigens, wenn N Punkte auf einer dreidimensionalen sphärischen Oberfläche platziert und so angeordnet sind, dass der minimale Wert des sphärischen Abstands zwischen den Punkten der maximale ist, wie lang ist der sphärische Abstand? Dieses Problem wird als Tammes-Problem bezeichnet und scheint eines der ungelösten mathematischen Probleme zu sein, für die noch keine vollständige Antwort gefunden wurde.

P2SGrad Als gemeinsame Studie von SenseTime Research und der chinesischen Universität von Hongkong wurden am 7. Mai 2019 zwei Artikel, AdaCos [^ Adacos] und P2SGrad [^ P2sgrad], gleichzeitig vom selben Autor veröffentlicht. Beide Papiere wurden auf der CVPR 2019 angenommen (AdaCos wurde von Oral angenommen). Neben der vorgeschlagenen Methode fand ich es besonders interessant, die wesentlichen Unterschiede zwischen kosinusbasierten Softmax-Verlusten wie Sphereface, Cosface und Arcface sowie den Prozess der Gradientenoptimierung zu erwähnen. AdaCos wurde bereits [hier] erklärt (https://qiita.com/ninhydrin/items/797a308c864e9238c71e), daher möchte ich P2SGrad näher betrachten.

In Bezug auf P2SGrad halte ich es für erwähnenswert, dass das Modell optimiert werden kann, ohne eine bestimmte Verlustfunktion zu formulieren. Unabhängig vom metrischen Lernen ist es im Allgemeinen eine Standardpraxis, eine Verlustfunktion zu definieren und zu lernen, während Gewichte und Verzerrungen aktualisiert werden, damit die Verlustfunktion kleiner wird. In P2SGrad werden jedoch die optimale Gradientenrichtung und -größe zum Aktualisieren des Gewichtsvektors im Merkmalsraum direkt erhalten, und eine Rückausbreitung wird durchgeführt, um mit der Optimierung der Parameter fortzufahren. Darüber hinaus bedeutet die Tatsache, dass Sie keine Verlustfunktion definieren müssen, dass Sie die Hyperparameter wie $ m $ und $ s $, die in der Verlustfunktion von ArcFace und CosFace enthalten waren, nicht anpassen müssen.

Rückausbreitung von Cosinus-basiertem Softmax-Verlust

Lassen Sie uns zunächst den Gradienten für Cosinus-basierten Softmax-Verlust ohne Winkelrand überprüfen. Das nächste $ f_ {i, j} $ sind die Protokolle für die Klasse $ j $ des Features $ \ vec {x_i} $.

f_{i,j}  = s \cdot \frac{\langle \vec{x_i}, \vec{W_j} \rangle}{\|\vec{x_i}\|_2\|\vec{W_j}\|_2} = s \cdot \langle \boldsymbol{\hat{x_i}}, \boldsymbol{\hat{W_j}} \rangle = s \cdot \cos\theta_{i,j} \tag{1}

$ \ Boldsymbol {\ hat {x_i}} $ und $ \ boldsymbol {\ hat {W_j}} $ repräsentieren normalisierte Vektoren von $ \ vec {x_i} $ bzw. $ \ vec {W_j} $.

Wenn die Anzahl der Klassen $ C $ ist, kann die Wahrscheinlichkeit $ P_ {i, j} $, dass das $ i $ -te Merkmal die Klasse $ j $ ist, mit der Softmax-Funktion wie folgt geschrieben werden.

P_{i,j} = Softmax(f_{i,j}) = \frac{e^{f_{i,j}}}{\sum^{C}_{k=1}e^{f_{i,k}}} \tag{2}

Wenn die richtige Klasse $ y_i $ ist, sieht Cross Entropy Loss folgendermaßen aus:

L_{CE}(\vec{x_i}) =-\log{P_{i, y_i}} = -\log{\frac{e^{f_{i,y_i}}}{\sum^{C}_{k=1}e^{f_{i,k}}}} \tag{3}

Finden Sie für dieses $ L_ {CE} (\ vec {x_i}) $ den Gradienten von $ \ vec {x_i} $ und $ \ vec {W_j} $.

\frac{\partial L_{CE}(\vec{x_i})}{\partial \vec{x_i}} = \sum_{j=1}^{C}(P_{i,j} - \mathbb{1}(y_i=j)) \nabla f(\cos\theta_{i,j}) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{x_i}} \tag{4}
\frac{\partial L_{CE}(\vec{x_i})}{\partial \vec{W_j}} = (P_{i,j} - \mathbb{1}(y_i=j)) \nabla f(\cos\theta_{i,j}) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} \tag{5}

Die Funktion $ \ mathbb {1} (y_i = j) $ ist $ 1 $, wenn $ j = y_i $ und andernfalls $ 0 $. Außerdem $ \ frac {\ partiell \ cos \ theta_ {i, j}} {\ partiell \ vec {x_i}} $ und $ \ frac {\ partiell \ cos \ theta_ {i, j}} {\ partiell \ vec { Wenn W_j}} $ berechnet wird, sind die Vektorwerte wie folgt.

\frac{\partial \cos\theta_{i,j}}{\partial \vec{x_i}} = \frac{1}{\|\vec{x_i}\|_2}(\boldsymbol{\hat{W_j}} - \cos\theta_{i,j} \cdot \boldsymbol{\hat{x_i}}) \tag{6}
\frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} = \frac{1}{\|\vec{W_j}\|_2}(\boldsymbol{\hat{x_i}} - \cos\theta_{i,j} \cdot \boldsymbol{\hat{W_j}}) \tag{7}

Berechnen Sie als nächstes den Teil $ \ nabla f (\ cos \ theta_ {i, j}) $. Da $ f $ eine Funktion ist, die den Logit-Teil darstellt, ist $ f (\ cos \ theta_ {i, j}) $ ohne Winkelrand $ s \ cdot \ cos \ theta_ {i, j} $. Daher ist $ \ nabla f (\ cos \ theta_ {i, j}) = s $. Im Fall von Cosface ist $ f (\ cos \ theta_ {i, y_i}) = s \ cdot (\ cos \ theta_ {i, y_i} --m) $, also $ \ nabla f (\ cos \ theta_ {i, y_i}) ) = s $, und im Fall von Arcface ist $ f (\ cos \ theta_ {i, y_i}) = s \ cdot \ cos (\ theta_ {i, y_i} + m) $, also $ \ nabla f (\ cos) \ theta_ {i, y_i}) = s \ cdot \ frac {\ sin (\ theta_ {i, y_i} + m)} {\ sin \ theta_ {i, y_i}} $.

In jedem Fall ist $ \ nabla f (\ cos \ theta_ {i, j}) $ ein Skalarwert, der durch die Parameter $ s $, $ m $ und $ \ cos \ theta_ {i, y_i} $ bestimmt wird. Da wir normalerweise den Wert von $ s> 1 $ verwenden, ist alles oben Genannte $ \ nabla f (\ cos \ theta_ {i, j})> 1 $.

Lassen Sie uns nun $ \ frac {\ partielles L_ {CE} (\ vec {x_i})} {\ partielles \ vec {W_j}} $ nach $ j $ sortieren.

Für $ j \ neq y_i $

\frac{\partial L_{CE}(\vec{x_i})}{\partial \vec{W_j}} = P_{i,j} \cdot \nabla f(\cos\theta_{i,j}) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} = T \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} \tag{8}

Wenn $ j = y_i $

\frac{\partial L_{CE}(\vec{x_i})}{\partial \vec{W_j}} = (P_{i,j} - 1) \cdot \nabla f(\cos\theta_{i,j}) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} = U \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} \tag{9}

Da $ P_ {i, j} $ der Wert von Softmax ist, ist der Bereich möglicher Werte $ P_ {i, j} \ in [0, 1] $. Mit anderen Worten, $ T $ und $ U $ in der obigen Gleichung sind Skalarwerte, die von $ T> 0 $ bzw. $ U <0 $ reichen.

Der Gewichtsvektor $ \ vec {W_j} $ wird durch Backpropagation wie folgt optimiert.

\vec{W_j} \leftarrow \vec{W_j} - \eta\cdot \frac{\partial L_{CE}}{\partial \vec{W_j}} \tag{10}

Zusammenfassend können wir anhand dieser Fakten Folgendes sehen.

スクリーンショット 2020-02-05 8.19.29.png

Gradientenlänge

Wie wir gesehen haben, beträgt die Länge des Gradienten $ (P_ {i, j} - \ mathbb {1} (y_i = j)) \ cdot \ nabla f (\ cos \ theta_ {i, j}) $ , ** $ P_ {i, j} $ hat einen großen Einfluss auf die Länge des Gradienten **. Außerdem hat $ P_ {i, j} $ eine positive Korrelation mit den Logs $ f_ {i, j} $. Und logsits $ f_ {i, j} $ wird stark von den Hyperparametern $ s $ und $ m $ beeinflusst.

Schauen wir uns ein Beispiel für ArcFace an. $ f_ {i, y_i} $ ist $ s \ cdot \ cos (\ theta_ {i, y_i} + m) $. Sie können sehen, dass sich der Wert von $ P_ {i, y_i} $ erheblich ändert, selbst wenn die Hyperparameter $ s $ und $ m $ unterschiedlich sind und dasselbe $ \ theta_ {i, y_i} $ verwendet wird.

スクリーンショット 2020-02-05 10.30.36.png

Was hier noch einmal überdacht werden sollte, ist der ursprüngliche Zweck von ArcFace. ArcFace möchte nicht klassifizieren, sondern wissen, ob der Winkel $ \ theta $ zwischen den beiden extrahierten Vektoren $ \ vec {x_1} $ und $ \ vec {x_2} $ nahe ist. Mit anderen Worten, die Größe von $ \ theta_ {i, y_i} $ muss die Länge des Gradienten (dh $ P_ {i, j} $) beeinflussen, was für die Backpropagation wichtig ist. , Hyper-Parameter $ s $ und $ m $ sind stark beteiligt. Und noch etwas. Der Wert von $ P_ {i, y_i} $ ändert sich auch in Abhängigkeit von der Anzahl der Klassen $ C $. Wenn die Anzahl der Klassen $ C $ zunimmt, wird erwartet, dass die Wahrscheinlichkeit, der falschen Klasse $ P_ {i, j} $ zugeordnet zu werden, mehr oder weniger abnimmt. Dies ist bei geschlossenen Klassifizierungsproblemen sinnvoll. Dies ist jedoch nicht für die Gesichtserkennung geeignet, bei der es sich um ein Open-Set-Problem handelt.

Es gibt auch $ \ nabla f (\ cos \ theta_ {i, j}) $ als Wert, der die Länge des Verlaufs beeinflusst. Dies hängt von der Art des kosinusbasierten Softmax-Verlusts ab.

Für Softmax-Verlust auf Kosinusbasis ohne Winkelrand

\nabla f(\cos\theta_{i,j}) = s \tag{11}

Für Cosface

\nabla f(\cos\theta_{i,j}) = s \tag{12}

Für Arcface

\nabla f(\cos\theta_{i,j}) = s \cdot \frac{\sin(\theta_{i,j} + m)}{\sin\theta_{i,j}} \tag{13}

Es wird sein.

Mit anderen Worten, in Cosine Based Softmax Loss, das keinen Winkelrand hat, und Cosface ist die Auswirkung von $ \ nabla f (\ cos \ theta_ {i, j}) $ auf die Steigungslänge immer konstant $ s $. Es zeigt, dass. In Arcface sind die Länge des Gradienten und $ \ theta_ {i, j} $ jedoch negativ korreliert, was völlig unerwartet ist. Eine allmähliche Verringerung von $ \ theta_ {i, y_i} $ verringert im Allgemeinen tendenziell den Gradienten von $ P_ {i, y_i} $, aber Arcface neigt dazu, seine Länge zu erhöhen. Daher erklärt Arcface nicht die geometrischen Auswirkungen von $ \ nabla f (\ cos \ theta_ {i, j}) $ auf die Länge des Gradienten.

スクリーンショット 2020-02-05 11.59.19.png

Vorschlag von P2S Grad zur Bestimmung der Länge des Gradienten

Von hier aus werde ich endlich die neue Methode ** P2SGrad ** erklären, die die Länge des Gradienten nur durch $ \ theta_ {i, j} $ bestimmt, unabhängig von Hyperparametern, Anzahl der Klassen oder Protokollen. Ich werde. P2SGrad überprüft die Gleichungen $ (4) $ und $ (5) $, um den Gradienten direkt zu finden, ohne eine bestimmte Verlustfunktion zu definieren. Zunächst ist die Neigungsrichtung die am besten geeignete Richtung, wie bisher erläutert, sodass hier keine Änderung erforderlich ist. Als nächstes betrachten wir $ P_ {i, j} $ und $ \ nabla f (\ cos \ theta_ {i, j}) $, die die Längenteile des Gradienten sind. In Bezug auf $ \ nabla f (\ cos \ theta_ {i, j}) $ überprüfe ich es, um Hyperparameter auszuschließen, daher werde ich es hier auf $ 1 $ setzen.

Als nächstes sollten Sie $ P_ {i, j} $, aber $ \ cos \ theta_ {i, j} $ anstelle von $ P_ {i, j} $ verwenden. Es gibt drei Gründe unten.

Vor diesem Hintergrund werden wir ein neues P2SGrad formulieren. Die Ausdrücke $ (4) $ und $ (5) $ werden durch die Ausdrücke $ (14) $ bzw. $ (15) $ ersetzt.

\tilde{G}_{P2SGrad}(\vec{x_i}) = \sum_{j=1}^{C}(\cos\theta_{i,j} - \mathbb{1}(y_i=j)) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{x_i}} \tag{14}
\tilde{G}_{P2SGrad}(\vec{W_j}) = (\cos\theta_{i,j} - \mathbb{1}(y_i=j)) \cdot \frac{\partial \cos\theta_{i,j}}{\partial \vec{W_j}} \tag{15}

Dieses P2SGrad ist prägnant, aber sehr rational. Wenn $ y_i = j $, haben die Länge des Gradienten und $ \ theta_ {i, j} $ eine positive Korrelation, und wenn $ j \ neq y_i $, gibt es eine negative Korrelation.

Abschließend werde ich erklären, wie man lernt. Beim allgemeinen Lernen wird der Kreuzentropieverlust der Formel $ (3) $ durch Vorwärtsverarbeitung erhalten, und dann werden die Formel $ (4) $ und die Formel $ (5) $ durch Rückausbreitung von der letzten Schicht zurückpropagiert, und das Gewicht jeder Schicht und Finden Sie den Gradienten des Bias-Parameters in der richtigen Reihenfolge. Beim Training mit P2SGrad werden die Formel $ (14) $ und die Formel $ (15) $ direkt aus dem Merkmalsbetrag $ \ vec {x_i} $ berechnet, der durch Vorwärtsverarbeitung erhalten wird. Danach breitet es sich in der gleichen Prozedur wie beim normalen Lernen zurück, und das Gewicht jeder Schicht und der Gradient des Vorspannungsparameters werden der Reihe nach erhalten.

Experiment

Detaillierte experimentelle Ergebnisse finden Sie im Originalpapier. Als Referenz werde ich die experimentellen Ergebnisse mit dem LWB-Datensatz veröffentlichen. Der CNN-Teil verwendet ResNet-50 und zeigt die Beziehung zwischen der Lerniteration und dem Durchschnittswert von $ \ theta_ {i, y_i} $. スクリーンショット 2020-02-05 16.13.14.png Es ist ersichtlich, dass das Lernen mit P2SGrad $ \ theta_ {i, y_i} $ schneller verringert als andere kosinusbasierte Softmax-Verluste.

Recommended Posts

Warum Deep Metric Learning basierend auf der Softmax-Funktion funktioniert
[AI] Deep Metric Learning
Deep Learning / Softmax-Funktion
Zusammenfassender Hinweis zu Deep Learning -4.2 Verlustfunktion-
Beschleunigen Sie Deep Learning mit der Rasperry Pi 4-CPU
Zusammenfassende Anmerkung zu Deep Learning -4.3 Gradientenmethode-
Tiefes Lernen
[Python / Maschinelles Lernen] Warum Deep Learning # 1 Perceptron Neural Network
GitHub des guten Buches "Deep Learning von Grund auf neu"