Halbüberwachte Bildklassifizierung mit unbeschrifteten Daten

Veröffentlicht: 2022-03-11

Überwachtes Lernen stand in den letzten zehn Jahren an der Spitze der Forschung im Bereich Computer Vision und Deep Learning.

In einer überwachten Lernumgebung müssen Menschen eine große Menge an Datensätzen manuell kommentieren. Anschließend verwenden Modelle diese Daten, um komplexe zugrunde liegende Beziehungen zwischen den Daten und dem Etikett zu lernen und die Fähigkeit zu entwickeln, das Etikett anhand der Daten vorherzusagen. Deep-Learning-Modelle sind im Allgemeinen datenhungrig und erfordern enorme Mengen an Datensätzen, um eine gute Leistung zu erzielen. Die sich ständig verbessernde Hardware und die Verfügbarkeit großer, von Menschen gekennzeichneter Datensätze waren der Grund für die jüngsten Erfolge von Deep Learning.

Ein großer Nachteil des überwachten Deep Learnings besteht darin, dass es für das Training auf das Vorhandensein einer umfangreichen Menge von Datensätzen mit menschlichem Label angewiesen ist. Dieser Luxus ist nicht in allen Bereichen verfügbar, da es logistisch schwierig und sehr teuer sein kann, riesige Datensätze von Fachleuten kommentieren zu lassen. Während die Erfassung gekennzeichneter Daten ein herausforderndes und kostspieliges Unterfangen sein kann, haben wir normalerweise Zugriff auf große Mengen nicht gekennzeichneter Datensätze, insbesondere Bild- und Textdaten. Daher müssen wir einen Weg finden, diese zu wenig genutzten Datensätze anzuzapfen und sie zum Lernen zu nutzen.

Beschriftete und unbeschriftete Bilder

Übertragen Sie das Lernen aus vortrainierten Modellen

In Ermangelung großer Mengen gekennzeichneter Daten greifen wir normalerweise auf Transfer Learning zurück. Was ist Transferlernen?

Transferlernen bedeutet, Wissen aus einer ähnlichen Aufgabe zu nutzen, um ein Problem zu lösen. In der Praxis bedeutet dies normalerweise, dass die aus einer ähnlichen Aufgabe gelernten tiefen neuronalen Netzwerkgewichtungen als Initialisierungen verwendet werden, anstatt von einer zufälligen Initialisierung der Gewichtungen auszugehen und das Modell dann mit den verfügbaren gekennzeichneten Daten weiter zu trainieren, um die anstehende Aufgabe zu lösen.

Transfer Learning ermöglicht es uns, Modelle auf Datensätzen zu trainieren, die so klein wie einige tausend Beispiele sind, und es kann eine sehr gute Leistung erbringen. Das Transferlernen von vortrainierten Modellen kann auf drei Arten durchgeführt werden:

1. Merkmalsextraktion

Normalerweise führen die letzten Schichten des neuronalen Netzwerks die abstraktesten und aufgabenspezifischsten Berechnungen durch, die im Allgemeinen nicht einfach auf andere Aufgaben übertragbar sind. Im Gegensatz dazu lernen die ersten Schichten des Netzwerks einige grundlegende Merkmale wie Kanten und gemeinsame Formen, die leicht auf Aufgaben übertragen werden können.

Die folgenden Bildersätze zeigen, was die Faltungskerne auf verschiedenen Ebenen in einem Convolutional Neural Network (CNN) im Wesentlichen lernen. Wir sehen eine hierarchische Darstellung, bei der die ersten Schichten grundlegende Formen lernen und höhere Schichten nach und nach komplexere semantische Konzepte lernen.

Hierarchische Darstellung: Anfangsschichten und höhere Schichten

Eine gängige Praxis besteht darin, ein Modell zu nehmen, das auf großen beschrifteten Bilddatensätzen (z. B. ImageNet) vortrainiert wurde, und die vollständig verbundenen Schichten am Ende abzuschneiden. Anschließend werden neue, vollständig verbundene Schichten hinzugefügt und entsprechend der erforderlichen Anzahl von Klassen konfiguriert. Übertragene Layer werden eingefroren, und die neuen Layer werden anhand der verfügbaren beschrifteten Daten für Ihre Aufgabe trainiert.

In diesem Aufbau wird das vortrainierte Modell als Merkmalsextraktor verwendet, und die vollständig verbundenen Schichten oben können als flacher Klassifikator betrachtet werden. Dieses Setup ist robuster als eine Überanpassung, da die Anzahl der trainierbaren Parameter relativ gering ist, sodass diese Konfiguration gut funktioniert, wenn die verfügbaren beschrifteten Daten sehr knapp sind. Welche Größe eines Datensatzes als sehr kleiner Datensatz gilt, ist normalerweise ein kniffliges Problem, bei dem viele Aspekte berücksichtigt werden müssen, einschließlich des vorliegenden Problems und der Größe des Modellrückgrats. Grob gesagt würde ich diese Strategie für einen Datensatz verwenden, der aus ein paar tausend Bildern besteht.

2. Feinabstimmung

Alternativ können wir die Schichten aus einem vortrainierten Netzwerk übertragen und das gesamte Netzwerk auf den verfügbaren beschrifteten Daten trainieren. Dieses Setup benötigt etwas mehr beschriftete Daten, da Sie das gesamte Netzwerk und damit eine große Anzahl von Parametern trainieren. Dieses Setup ist anfälliger für eine Überanpassung, wenn Daten knapp sind.

3. Zweistufiges Transferlernen

Dieser Ansatz ist mein persönlicher Favorit und liefert normalerweise die besten Ergebnisse, zumindest meiner Erfahrung nach. Hier trainieren wir die neu angefügten Schichten, während wir die übertragenen Schichten für einige Epochen einfrieren, bevor wir das gesamte Netzwerk feinabstimmen.

Die Feinabstimmung des gesamten Netzwerks, ohne den letzten Schichten einige Epochen zu geben, kann zur Ausbreitung schädlicher Gradienten von zufällig initialisierten Schichten zum Basisnetzwerk führen. Darüber hinaus erfordert die Feinabstimmung eine vergleichsweise geringere Lernrate, und ein zweistufiger Ansatz ist eine bequeme Lösung dafür.

Die Notwendigkeit halbüberwachter und unüberwachter Methoden

Dies funktioniert normalerweise sehr gut für die meisten Bildklassifizierungsaufgaben, da wir über riesige Bilddatensätze wie ImageNet verfügen, die einen guten Teil des möglichen Bildraums abdecken – und normalerweise sind die daraus gelernten Gewichtungen auf benutzerdefinierte Bildklassifizierungsaufgaben übertragbar. Darüber hinaus sind die vortrainierten Netze ohne weiteres von der Stange erhältlich, was den Prozess erleichtert.

Dieser Ansatz funktioniert jedoch nicht gut, wenn sich die Verteilung der Bilder in Ihrer Aufgabe drastisch von den Bildern unterscheidet, mit denen das Basisnetzwerk trainiert wurde. Wenn Sie es beispielsweise mit Graustufenbildern zu tun haben, die von einem medizinischen Bildgebungsgerät erzeugt wurden, ist das Transferlernen von ImageNet-Gewichten nicht so effektiv, und Sie benötigen mehr als ein paar tausend beschriftete Bilder, um Ihr Netzwerk auf eine zufriedenstellende Leistung zu trainieren.

Im Gegensatz dazu haben Sie möglicherweise Zugriff auf große Mengen unbeschrifteter Datensätze für Ihr Problem. Aus diesem Grund ist die Fähigkeit, aus unbeschrifteten Datensätzen zu lernen, von entscheidender Bedeutung. Darüber hinaus ist der unbeschriftete Datensatz in der Regel weitaus vielfältiger und umfangreicher als selbst die größten beschrifteten Datensätze.

Semi-überwachte Ansätze haben gezeigt, dass sie bei großen Benchmarks wie ImageNet eine überlegene Leistung gegenüber überwachten Ansätzen erbringen. Yann LeCuns berühmte Kuchenanalogie betont die Bedeutung des unüberwachten Lernens:

Yann LeCuns Kuchenanalogie

Halbüberwachtes Lernen

Dieser Ansatz nutzt sowohl beschriftete als auch unbeschriftete Daten zum Lernen, daher wird er als halbüberwachtes Lernen bezeichnet. Dies ist normalerweise der bevorzugte Ansatz, wenn Sie über eine kleine Menge beschrifteter Daten und eine große Menge unbeschrifteter Daten verfügen. Es gibt Techniken, bei denen Sie gleichzeitig aus gekennzeichneten und nicht gekennzeichneten Daten lernen, aber wir werden das Problem im Kontext eines zweistufigen Ansatzes diskutieren: unüberwachtes Lernen an nicht gekennzeichneten Daten und Transferlernen mit einer der oben beschriebenen Strategien, um Ihre Klassifizierungsaufgabe zu lösen .

In diesen Fällen ist unüberwachtes Lernen ein ziemlich verwirrender Begriff. Diese Ansätze sind nicht wirklich unüberwacht in dem Sinne, dass es ein Überwachungssignal gibt, das das Lernen von Gewichten leitet, aber somit wird das Überwachungssignal von den Daten selbst abgeleitet. Daher wird es manchmal als selbstüberwachtes Lernen bezeichnet, aber diese Begriffe wurden in der Literatur synonym verwendet, um sich auf denselben Ansatz zu beziehen.

Die Haupttechniken des selbstüberwachten Lernens können danach unterteilt werden, wie sie dieses Überwachungssignal aus den Daten erzeugen, wie unten beschrieben.

Generative Methoden

Generative Methoden - Autoencoder: Encoder- und Decoder-Netzwerke

Generative Methoden zielen auf die genaue Rekonstruktion von Daten ab, nachdem sie einen Engpass passiert haben. Ein Beispiel für solche Netzwerke sind Autoencoder. Sie reduzieren die Eingabe in einen niedrigdimensionalen Darstellungsraum unter Verwendung eines Encoder-Netzwerks und rekonstruieren das Bild unter Verwendung des Decoder-Netzwerks.

Bei diesem Aufbau wird der Eingang selbst zum Überwachungssignal (Label) zum Trainieren des Netzwerks. Das Encoder-Netzwerk kann dann extrahiert und als Ausgangspunkt zum Erstellen Ihres Klassifikators verwendet werden, indem Sie eine der im obigen Abschnitt beschriebenen Transfer-Lerntechniken verwenden.

In ähnlicher Weise kann eine andere Form von generativen Netzwerken – Generative Adversarial Networks (GANs) – für das Vortraining auf unbeschrifteten Daten verwendet werden. Dann kann ein Diskriminator übernommen und für die Klassifikationsaufgabe weiter verfeinert werden.

Diskriminierende Methoden

Diskriminierende Ansätze trainieren ein neuronales Netzwerk, um eine Hilfsklassifikationsaufgabe zu lernen. Eine Hilfsaufgabe wird so gewählt, dass das Überwachungssignal ohne menschliche Anmerkung aus den Daten selbst abgeleitet werden kann.

Beispiele für diese Art von Aufgaben sind das Erlernen der relativen Positionen von Bildfeldern, das Kolorieren von Graustufenbildern oder das Erlernen der auf Bilder angewendeten geometrischen Transformationen. Auf zwei davon gehen wir näher ein.

Lernen relativer Positionen von Bildfeldern

Lernen relativer Positionen von Bildfeldern

Bei dieser Technik werden Bildausschnitte aus dem Quellbild extrahiert, um ein Puzzle-ähnliches Gitter zu bilden. Die Pfadpositionen werden gemischt, und die gemischte Eingabe wird in das Netzwerk eingespeist, das darauf trainiert ist, die Position jedes Patches im Gitter korrekt vorherzusagen. Somit ist das Überwachungssignal die tatsächliche Position jedes Pfads im Gitter.

Dabei lernt das Netzwerk die relative Struktur und Ausrichtung von Objekten sowie die Kontinuität visueller Merkmale auf niedriger Ebene wie Farbe. Die Ergebnisse zeigen, dass die durch das Lösen dieses Puzzles erlernten Merkmale in hohem Maße auf Aufgaben wie Bildklassifizierung und Objekterkennung übertragbar sind.

Lernen von geometrischen Transformationen, die auf Bilder angewendet werden

Lernen von geometrischen Transformationen, die auf Bilder angewendet werden

Diese Ansätze wenden einen kleinen Satz geometrischer Transformationen auf die Eingabebilder an und trainieren einen Klassifikator, um die angewendete Transformation vorherzusagen, indem er allein das transformierte Bild betrachtet. Ein Beispiel für diese Ansätze besteht darin, eine 2D-Drehung auf die unbeschrifteten Bilder anzuwenden, um einen Satz gedrehter Bilder zu erhalten, und dann das Netzwerk zu trainieren, um die Drehung jedes Bilds vorherzusagen.

Dieses einfache Überwachungssignal zwingt das Netzwerk, zu lernen, die Objekte in einem Bild zu lokalisieren und ihre Ausrichtung zu verstehen. Die durch diese Ansätze erlernten Funktionen haben sich als hochgradig übertragbar erwiesen und liefern eine Leistung auf dem neuesten Stand der Technik für Klassifizierungsaufgaben in halbüberwachten Umgebungen.

Ähnlichkeitsbasierte Ansätze

Diese Ansätze projizieren die Bilder in einen Darstellungsraum fester Größe, in dem ähnliche Bilder näher beieinander liegen und unterschiedliche Bilder weiter voneinander entfernt sind. Eine Möglichkeit, dies zu erreichen, ist die Verwendung von siamesischen Netzwerken basierend auf Triplettverlust, wodurch der Abstand zwischen semantisch ähnlichen Bildern minimiert wird. Triplettverlust braucht einen Anker, ein positives Beispiel und ein negatives Beispiel und versucht, das Positive näher an den Anker zu bringen als das Negative in Bezug auf die euklidische Distanz im latenten Raum. Anker und Positiv stammen aus derselben Klasse, und das Negativbeispiel wird zufällig aus den verbleibenden Klassen ausgewählt.

Bei unbeschrifteten Daten müssen wir uns eine Strategie einfallen lassen, um dieses Triplett aus positiven und negativen Ankerbeispielen zu erzeugen, ohne die Bildklassen zu kennen. Eine Möglichkeit, dies zu tun, besteht darin, eine zufällige affine Transformation des Ankerbilds als positives Beispiel zu verwenden und zufällig ein anderes Bild als negatives Beispiel auszuwählen.

Drillingsverlust

Experiment

In diesem Abschnitt werde ich ein Experiment beschreiben, das empirisch das Potenzial von unüberwachtem Vortraining für die Bildklassifizierung feststellt. Dies war mein Semesterprojekt für einen Deep-Learning-Kurs, den ich letzten Frühling mit Yann LeCun an der NYU belegt habe.

  • Datensatz . Es besteht aus 128.000 beschrifteten Beispielen, von denen die Hälfte für das Training und die andere Hälfte für die Validierung bestimmt ist. Darüber hinaus werden uns 512K unbeschriftete Bilder zur Verfügung gestellt. Die Daten umfassen insgesamt 1.000 Klassen.
  • Unbeaufsichtigtes Vortraining . AlexNet wurde für die Rotationsklassifikation unter Verwendung umfangreicher Datenaugmentation für 63 Epochen trainiert. Wir haben die von Rotnet in ihrem Papier dokumentierten Hyperparameter verwendet.
  • Ausbildung zum Klassifizierer Merkmale wurden aus der vierten Faltungsschicht extrahiert, und drei vollständig verbundene Schichten wurden daran angehängt. Diese Schichten wurden nach dem Zufallsprinzip initialisiert und mit einer geplanten abnehmenden Lernrate trainiert, und ein vorzeitiges Stoppen wurde implementiert, um das Training zu beenden.
  • Feinabstimmung des gesamten Netzwerks . Schließlich verfeinerten wir das Netzwerk, das mit den gesamten gekennzeichneten Daten trainiert wurde. Sowohl der Merkmalsextraktor als auch der Klassifikator, die zuvor separat trainiert wurden, wurden zusammen mit einer kleinen Lernrate für 15 Epochen verfeinert.

Wir haben sieben Modelle trainiert, die jeweils eine unterschiedliche Anzahl beschrifteter Trainingsbeispiele pro Klasse verwendet haben. Dies wurde getan, um zu verstehen, wie die Größe der Trainingsdaten die Leistung unseres halbüberwachten Setups beeinflusst.

Experiment

Wir konnten eine Genauigkeitsrate von 82 % für das Vortraining zur Rotationsklassifizierung erzielen. Beim Klassifikatortraining sättigten sich die obersten 5 % der Genauigkeit um den Wert von 46,24 % herum, und die Feinabstimmung des gesamten Netzwerks ergab den endgültigen Wert von 50,17 %. Durch die Nutzung des Vortrainings erzielten wir eine bessere Leistung als beim überwachten Training, das eine Top-5-Genauigkeit von 40 % ergibt.

Wie erwartet nimmt die Validierungsgenauigkeit mit der Abnahme der markierten Trainingsdaten ab. Der Leistungsabfall ist jedoch nicht so signifikant, wie man es in einer überwachten Umgebung erwarten würde. Eine Verringerung der Trainingsdaten um 50 % von 64 Beispielen pro Klasse auf 32 Beispiele pro Klasse führt nur zu einer Verringerung der Validierungsgenauigkeit um 15 %.

Experiment

Durch die Verwendung von nur 32 Beispielen pro Klasse erreicht unser halbüberwachtes Modell eine überlegene Leistung gegenüber dem überwachten Modell, das mit 64 Beispielen pro Klasse trainiert wurde. Dies liefert empirische Beweise für das Potenzial halbüberwachter Ansätze zur Bildklassifizierung bei Datensätzen mit geringer Ressourcenkennzeichnung.

Einpacken

Wir können daraus schließen, dass unüberwachtes Lernen ein leistungsstarkes Paradigma ist, das die Leistung für Datensätze mit geringen Ressourcen steigern kann. Unüberwachtes Lernen steckt derzeit noch in den Kinderschuhen, wird aber seinen Anteil im Computer-Vision-Bereich schrittweise ausbauen, indem es das Lernen aus billigen und leicht zugänglichen unbeschrifteten Daten ermöglicht.


Weiterführende Literatur im Toptal Engineering Blog:

  • Graph Data Science mit Python/NetworkX