Hier stellen wir das Papier Deep Self-Learning From Noisy Labels [1] vor. Dieses Papier wurde auf der ICCV 2019 angenommen. Darüber hinaus ist die Implementierung von Pytorch auf GitHub verfügbar. Die Genauigkeit ist jedoch nicht so hoch, und am Ende dieses Artikels wird die Ursache erörtert.
In diesem Artikel arbeiten wir daran, die Genauigkeit des Lernens mithilfe von rauschhaltigen Datensätzen bei der Bildklassifizierung durch tiefes Lernen zu verbessern. "Enthält Rauschen" weist hier auf eine Situation hin, in der die Klassenbezeichnung des Datensatzes falsch hinzugefügt wurde. Tiefes Training erfordert im Allgemeinen einen großen Datensatz, um das Modell zu trainieren, aber das Vorbereiten eines großen, gut beschrifteten Datensatzes kann ziemlich mühsam sein. Darüber hinaus ist es beim Erstellen eines strengen Datensatzes üblich, dass Menschen manuell Anmerkungen machen. Zu diesem Zeitpunkt können jedoch Fehler auftreten. Wenn Sie die aus dem Web gecrawlten Daten so verwenden, wie sie sind, können Sie leicht einen großen Datensatz mit Beschriftungen anordnen. In diesem Fall treten jedoch im Allgemeinen mehr Beschriftungsfehler auf. Unter diesen Umständen wird ein Deep-Learning-Modell, das korrektes Lernen unter Verwendung eines Datensatzes durchführen kann, der in gewissem Maße Rauschen enthält, in der realen Welt als nützlich angesehen, und dieses Papier ist ein Papier, das darauf abzielt, dies zu erreichen.
Es gibt viele Studien zum Deep Learning mit verrauschten Datensätzen. Dazu gehören die Einführung einer Übergangsmatrix zur Anzeige der Fehlerrate des Etiketts und die Einstellung einer rauschresistenten Verlustfunktion. Diese Techniken gehen jedoch implizit davon aus, dass Beschriftungsfehler zufällig sind. Andererseits hängt das Etikettenrauschen in der Realität häufig von der Eingabe ab. Beispielsweise ist es wahrscheinlicher, dass ein Bild, das verwirrend ist, zu welcher Klasse es gehört, falsch beschriftet ist. In diesem Artikel schlagen wir ein Lernen vor, das dem Rauschen von Etiketten in der realen Welt entspricht.
Ein weiteres Merkmal dieses Dokuments ist, dass keine zusätzlichen Informationen wie rauschfreie Datensätze verwendet werden müssen. Viele bestehende Studien verwenden manuell denoisierte Datensätze. Wie bereits erwähnt, ist die manuelle Kennzeichnung jedoch auch in begrenzter Anzahl eine Belastung. Bei dieser Methode wird das Modell im sogenannten selbstlernenden Format trainiert, wobei nur der Datensatz verwendet wird, der Rauschen enthält.
Beim Lernen des Modells der vorgeschlagenen Methode gibt es zwei Phasen, die Lernphase und die Etikettenkorrekturphase. Diese Phasen wechseln sich mit jeder Epoche ab.
In der Lernphase wird Modell F für die Bildklassifizierung trainiert. Stellen Sie sich diese Phase fast wie ein typisches Deep-Learning-Training vor. Nur ein Punkt ist, dass die Verlustfunktion geringfügig abweicht und in der folgenden Formel als $ L_ {TOTAL} $ ausgedrückt wird.
Als nächstes wird die Etikettenkorrekturphase erklärt. Das Ziel dieser Phase ist es, ein gut korrigiertes Label $ \ hat {y} $ zur Verwendung in der Lernphase zu erhalten. Führen Sie zu diesem Zweck die folgenden Schritte aus.
Bevor wir die Reihenfolge erläutern, definieren wir die "Ähnlichkeit" für alle hier verwendeten Daten. Zunächst wird das Deep-Learning-Modell $ F $ als $ F = f \ circ G $ definiert. Hier ist $ G $ die Merkmalsextraktionsschicht und $ f $ die vollständig verbundene Schicht für die Klassifizierung. Damit wird die Ähnlichkeit auf die Kosinusähnlichkeit von $ G (x_1) $ und $ G (x_2) $ für die Eingaben $ x_1 $ und $ x_2 $ gesetzt. Das ist,
Zunächst werden $ m $ Daten aus jeder Klasse zufällig ausgewählt. Dies dient dazu, die Menge an $ O (n ^ 2) $ zu reduzieren, die für die Anzahl der Daten $ n $ in den nachfolgenden Berechnungen berechnet wurde.
Als nächstes werden für jede Klasse $ p $ -Prototypen aus den zuvor ausgewählten $ m $ -Daten bestimmt. Voraussetzung für diesen Prototyp ist, dass er die Merkmale jeder Klasse gut repräsentiert. Insbesondere wird ein Prototyp verwendet, der die folgenden zwei Bedingungen erfolgreich erfüllt. ・ Es gibt viele ähnliche Funktionen wie Sie. ・ Es ist nicht so ähnlich wie andere Prototypen. Mit anderen Worten, wenn die Feature-Menge in der Klasse $ p $ -Cluster enthält, möchten wir, dass die $ p $ -Prototypen die repräsentativen Punkte in jedem Cluster sind. Die spezifische Methode wird unten beschrieben.
Überprüfen Sie zunächst die Ähnlichkeit der $ m $ -Funktionen. Definieren Sie die Matrix $ S $ so, dass $ S_ {ij} $ die Ähnlichkeit zwischen der $ i $ -ten Stichprobe und der $ j $ -ten Stichprobe ist.
Zweitens definieren Sie die Dichte $ \ rho $ für jede Probe. Dies zeigt, wie dicht die Punkte um die Probe sind.
Drittens definieren wir die Ähnlichkeit $ \ eta $ für das Prototyping jeder Probe.
\eta_i = \max_{j, \rho_j > \rho_i} S_{ij} ~~(\rho_i < \rho_{max}), \\
\eta_i = \min_{j} S_{ij} ~~(\rho_i = \rho_{max})
Das heißt, derjenige mit der höchsten Dichte $ \ rho $ nimmt die kleinste Ähnlichkeit auf, und die anderen nehmen die höchste Ähnlichkeit aus den Proben mit der höchsten Dichte $ \ rho $. Daher kann gesagt werden, dass die Eigenschaft für den Prototyp umso besser geeignet ist, je kleiner $ \ eta $ ist.
Und schließlich wird der Prototyp mit $ \ rho $ und $ \ eta $ entschieden. Denken Sie daran, dass $ \ rho $ kleiner und $ \ eta $ kleiner sein sollte. Hier werden die besten $ p $ -Proben mit dem größten $ \ rho $ von denen erhalten, die $ \ eta <0,95 $ erfüllen. Lassen Sie dies den Prototyp dieser Klasse sein.
Nachdem wir für jede Klasse einen Prototyp haben, werden wir nach Korrekturetiketten für alle Daten fragen. Sortieren Sie sie einfach in Klassen, die den Prototypen sehr ähnlich sind. Berechnen Sie für jede Daten den durchschnittlichen Ähnlichkeitsgrad mit dem Prototyp jeder Klasse und lassen Sie die Bezeichnung der Klasse mit dem größten Wert die Korrekturbezeichnung $ \ hat {y} $ sein.
Von hier aus werde ich die Umsetzung des Papiers beschreiben. Überprüfen Sie GitHub auf den Quellcode. Wie ich bereits geschrieben habe, wurde die in dem Papier beschriebene Genauigkeit jedoch nicht bestätigt. Die Berücksichtigung dieser Ursache wird am Ende beschrieben.
Ähnlich wie in diesem Artikel haben wir Experimente mit dem Datensatz Clothing1M [2] und dem Datensatz FoodLog-101N [3] durchgeführt. Außerdem scheint der FoodLog-101N-Datensatz den FoodLog-101 [4] -Datensatz für Testdaten zu verwenden. Befolgen Sie ihn daher. Die in diesem Artikel beschriebenen Inhalte werden wie für Modelle und Hyperparameter verwendet.
Die Details der Hauptausführungsumgebung werden unten beschrieben. ・ Python: 3.5.2 ・ CUDA: 10.2 ・ Pytorch: 0.4.1 ・ Fackelvision: 0.2.1 ・ Numpy: 1.17.2
Die in dem Papier angegebene Genauigkeit entspricht der folgenden Tabelle. CCE ist die Genauigkeit bei der Optimierung einfach mithilfe der Kreuzentropie.
CCE | Vorgeschlagene Methode | |
---|---|---|
Clothing1M | 69.54 | 74.45 |
Food-101N | 84.51 | 85.11 |
Andererseits ist die Genauigkeit bei der Reproduktionsimplementierung wie in der folgenden Tabelle gezeigt. Der Grund, warum die Genauigkeit des vorgeschlagenen Verfahrens nicht eindeutig ist, besteht darin, dass der Fehler aufgrund von Zufallszahlen ziemlich groß ist. Wie später beschrieben wird, konnten wir den Grad dieser Unschärfe aufgrund verschiedener Bestätigungen bezüglich der Ursache nicht quantitativ bewerten. Es gibt jedoch kein Phänomen, bei dem das vorgeschlagene Verfahren die CCE signifikant überschreitet.
CCE | Vorgeschlagene Methode | |
---|---|---|
Clothing1M | 68.10 | Um 64 |
Food-101N | 85.05 | Um die 80 |
Dies ist nur ein Abschnitt, in dem die Garantie für die Richtigkeit dieser Implementierung angegeben ist. Überspringen Sie ihn daher, wenn Sie nicht interessiert sind.
Wenn bei dieser Implementierung ein Fehler auftritt, unterscheidet sich die Genauigkeit bei der Verwendung der Kreuzentropie nicht so stark von der des Papiers. Daher denke ich, dass das Problem der Teil ist, der mit der Etikettenkorrektur zusammenhängt. Dies wird bestätigt, indem es in zwei Teile geteilt wird, von denen einer das Korrekturetikett generiert und der andere das Korrekturetikett verwendet.
Die erste ist die Bestätigung des Teils, der das Korrekturetikett generiert. Zunächst haben wir individuell bestätigt, dass sich die damit verbundenen Funktionen wie erwartet verhalten haben. Als nächstes wird bestätigt, dass das korrigierte Etikett und das ursprüngliche verrauschte Etikett in gewissem Maße übereinstimmen und dass das Etikett in gewissem Maße gemäß dem verrauschten Etikett korrigiert ist. Darüber hinaus haben wir die Genauigkeit des Etikettenkorrekturverhaltens quantitativ bestätigt. Bei Clothing1M wird ein sauberes Etikett an einen Teil des Datensatzes angehängt, damit Sie die Genauigkeit der Etikettenkorrektur überprüfen können. Um sich auf die Genauigkeit der Etikettenkorrektur zu konzentrieren, wird den Testdaten unter Verwendung eines Etikettenkorrekturmoduls, das aus dem trainierten Modell und den Trainingsdaten generiert wird, ein Etikett zugewiesen, und die korrekte Antwortrate des Etiketts der gesamten Trainingsdaten und die korrekte Antwort des korrigierten Testetiketts werden zugewiesen. Wir haben die Preise verglichen. Die Ergebnisse zu diesem Zeitpunkt sind in der folgenden Tabelle aufgeführt (im Papier beträgt die Etikettengenauigkeitsrate der Trainingsdaten 61,74, im Originalpapier von Clothing 1M 61,54, daher vertraue ich darauf). .. Wenn wir uns das ansehen, können wir sehen, dass die Genauigkeit des verrauschten Etiketts der ursprünglichen Trainingsdaten überschritten wird.
Trainingsdatenetikett | Etikett zur Korrektur der Testdaten |
---|---|
61.54 | 69.92 |
Wie Sie daraus sehen können, wird das Verhalten der Etikettenkorrektur insgesamt als korrekt angesehen. Anhand der obigen Informationen können Sie bestätigen, dass das Etikettenkorrekturmodul korrekt ist.
Die zweite ist die Bestätigung des Teils, der das Korrekturetikett verwendet. Diesbezüglich war die Genauigkeit bei der Übergabe des Teils, an dem das korrigierte Etikett des Quellcodes übergeben wurde, so dass das nicht korrigierte Etikett übergeben wurde, ungefähr gleich wie bei der ursprünglichen CCE. Daher wird davon ausgegangen, dass in dem Teil, der die Optimierung unter Verwendung des Korrekturetiketts durchführt, kein Fehler vorliegt. Aus den beiden oben genannten Gründen denke ich, dass der Standpunkt von Implementierungsfehlern behoben wurde.
Die diesmal verwendeten Hyperparameter sind die gleichen wie in der Veröffentlichung. Beispielsweise wird in Kleidung 1M die Lernrate alle 5 Epochen mit insgesamt 15 Epochen abgeschwächt. Wie Sie in Abbildung 1 sehen können, scheinen die ersten 5 Epochen unnötig zu sein, da die Lernrate zu hoch ist. Eine der wahrscheinlichsten Ursachen dafür ist der Unterschied in der zur Laufzeit verwendeten Bibliothek und Version.
In der Etikettenkorrekturphase wird davon ausgegangen, dass sich die Genauigkeit verschlechtern kann, bis das neuronale Netzwerk bis zu einem gewissen Grad geeignete Merkmale extrahieren kann. Selbst im Originalpapier gibt es eine Beschreibung, die impliziert, dass die Etikettenkorrekturphase zunächst nicht eingefügt wird, die spezifische Einstellung jedoch nicht angegeben wird. In dieser Implementierung wird das Ergebnis angezeigt, wenn die Etikettenkorrekturphase unmittelbar nach dem Ende der ersten Epoche gestartet wird. Soweit ich das Papier gelesen habe, scheint die Etikettenkorrektur nach dem Ende der ersten Epoche zu beginnen, aber es scheint, dass sie so geschrieben ist, dass nicht gesagt werden kann, dass dies nicht vollständig der Fall ist.
In tatsächlichen Experimenten wurde in einigen Fällen bestätigt, dass die Genauigkeit in den frühen Stadien aufgrund der Markierungskorrektur in der ersten Epoche auf etwa 30% abfiel. Als ich einige Epochen änderte, um die Etikettenkorrekturphase zu starten, änderte sich die endgültige Genauigkeit nicht so sehr, obwohl das Phänomen, dass die Genauigkeit abfiel, plötzlich verschwand. Die Ergebnisse können sich ändern, wenn Sie versuchen, Etikettenkorrekturen in der Mitte mit einer längeren Epochennummer einzufügen. Dies bleibt jedoch eine Frage.
Obwohl wir die Varianz der Ergebnisse nicht quantitativ bewerten konnten, denke ich, dass der Einfluss von Zufallszahlen aufgrund der Intensität der Lernwellen und der Atmosphäre mehrerer Versuche nicht ignoriert werden kann. In Bezug auf das Originalpapier, zumindest für Food-101N, bin ich der Meinung, dass die Verbesserung der Genauigkeit durch diese Methode nicht über den Einflussbereich von Zufallszahlen hinausgeht. In Bezug auf das Food-101N-Experiment wurde das Originalpapier übrigens nicht so detailliert analysiert.
In Food-101N wurde die Genauigkeit im Originalpapier nicht so stark verbessert, und ich erwähnte die Möglichkeit, dass dies durch Zufallszahlen erklärt werden könnte, aber ich denke, die Ursache ist die Methode selbst. In Kleidung 1M, bei der es sich um eine Klassifizierung von 14 Klassen handelt, hat das Korrekturetikett eine ausreichend hohe Wahrscheinlichkeit, dass es dasselbe Etikett wie das Originaletikett ist, bei Food-101N, bei dem es sich um eine Klassifizierung von 101 Klassen handelt, ist die Wahrscheinlichkeit, dass das Korrekturetikett dasselbe Etikett wie das Originaletikett ist, Kleidung 1M. Es wurde bestätigt, dass es insgesamt niedriger war als. Ich kenne die Genauigkeit des Korrekturetiketts nicht, da Food-101N kein sauberes Etikett hat, aber ich denke, es ist mit ziemlicher Sicherheit niedriger als Clothing1M. Und angesichts der Schwierigkeit, 101 Klassen mit einer kleinen Anzahl von Prototypen zu klassifizieren, denke ich, dass dies kein seltsames Ergebnis ist. Daher werden bei der Anwendung dieser Methode im Fall einer Mehrklassenklassifizierung wie Food-101N weiche Etiketten verwendet, um Klassen nicht entscheidend zuzuordnen, und das Gewicht des Lernens unter Verwendung von Korrekturetiketten wird verringert. Ich denke, es wird notwendig sein, etwas zu entwickeln.
[1] Jiangfan Han, Ping Luo, and Xiaogang Wang. Deep Self-Learning From Noisy Labels. In International Conference on Computer Vision, 2019. [2] Tong Xiao, Tian Xia, Yi Yang, Chang Huang, and Xiaogang Wang. Learning from Massive Noisy Labeled Data for Image Classification. In Computer Vision and Pattern Recognition, 2015. [3] Kuang-Huei Lee, Xiaodong He, Lei Zhang, and Linjun Yang. CleanNet: Transfer Learning for Scalable Image Classifier Training with Label Noise. In Computer Vision and Pattern Recognition, 2018. [4] Lukas Bossard, Matthieu Guillaumin, and Luc Van Gool. Food-101 – Mining Discriminative Components with Random Forests. In European Conference on Computer Vision, 2014.