In früheren Blogposts haben wir darüber gesprochen, wie man eine Kamera für sein Computer Vision Projekt auswählt und wie man die mit dieser Kamera aufgenommenen Daten korrekt beschriftet . Gehen wir also davon aus, dass wir an diesem Punkt unseren beschrifteten Datensatz bereit haben. Wir können nun einen Schritt weitergehen und uns mit der Praxis der Datenerweiterung befassen, d. h. mit der Vergrößerung unseres Datensatzes, indem wir kleine Variationen der vorhandenen Datenpunkte erstellen.
In diesem Blogpost geben wir eine kurze Auffrischung (oder Fibel) darüber, was Datenerweiterung ist. Dann gehen wir dazu über, zu begründen, warum wir immer noch über ein Konzept sprechen, das heute so gut etabliert und allgemein akzeptiert ist, und stellen es in den Kontext des aktuellen Themas der datenzentrierten KI. Abschließend erläutern wir, wie wir bei ML6 an die Datenerweiterung herangehen.
"Gib einem Mann einen großen Datensatz und er wird die Daten haben, um ein starkes Modell zu trainieren. Bringe einem Mann gute Verfahren zur Datenerweiterung bei, und er wird Daten für ein ganzes Leben haben."
(Wenn Sie mit dem Konzept der Datenerweiterung bereits vertraut sind, ist dieser kurze Abschnitt nicht für Sie bestimmt. Sie können gerne zum nächsten Abschnitt übergehen und ich werde Sie dort treffen).
Die Praxis der Datenerweiterung zielt darauf ab, den Umfang Ihres Datensatzes zu vergrößern, indem ein vorhandener Datenpunkt genommen und so umgewandelt wird, dass ein neuer, aber immer noch realistischer Datenpunkt entsteht. Die Vorteile sind zweifach:
Ein kurzes Beispiel hilft, die Dinge zu verdeutlichen: Stellen Sie sich vor, wir trainieren ein Modell zur Erkennung von Vögeln. Im folgenden Beispiel haben wir links ein Bild eines Vogels, das aus unserem ursprünglichen Datensatz stammt. Auf der rechten Seite sehen wir drei Transformationen des Originalbildes, von denen wir erwarten, dass unser Modell sie trotzdem als Vogel interpretiert. Die ersten beiden sind ganz einfach: Ein Vogel ist ein Vogel, egal ob er nach Osten oder Westen, nach oben oder nach unten fliegt. Im dritten Beispiel sind der Kopf und der Körper des Vogels künstlich verdeckt worden. Dieses Bild würde unser Modell dazu bringen, sich auf gefiederte Flügel als Merkmal von Vögeln zu konzentrieren.
Wenn Sie an einer detaillierteren Einführung in die Datenerweiterung und die vielen häufig verwendeten Transformationen interessiert sind, empfehlen wir Ihnen, sich eine der vielen guten Ressourcen wie diese und diese anzusehen.
Techniken zur Datenerweiterung für das maschinelle Lernen, insbesondere für das Computer-Vision-Verfahren, gibt es schon sehr lange und es hat sich immer wieder gezeigt, dass sie funktionieren. Selbst einer der ersten Erfolge mit faltigen neuronalen Netzen, Yann LeCuns LeNet-5 (veröffentlicht 1998), befürwortet bereits die "künstliche Erzeugung von mehr Trainingsmustern durch zufällige Verzerrungen". Daher könnte man meinen, dass die Förderung der Datenerweiterung für Praktiker des maschinellen Lernens wie eine Predigt vor dem Chor ist. Warum tun wir es dann?
Nun, wir befinden uns in guter Gesellschaft: Andrew Ng, Mitbegründer und ehemaliger Leiter von Google Brain, steht an der Spitze eines Wandels in der KI-Forschung und -Nutzung hin zu dem, was er als "datenzentrierte KI" bezeichnet, und weg von der Praxis der "modellzentrierten KI", die die Forschung über die Jahre hinweg dominiert hat. Der Grundgedanke ist, dass unverhältnismäßig viel Zeit für die Erforschung von Modellarchitekturen aufgewendet wird, während die Forschung im Bereich der Datenbereinigung, -erweiterung und MLOps-Praktiken weit weniger populär ist und mehr Aufmerksamkeit verdient. Weitere Informationen finden Sie in Andrews Vortrag (oder den Folien).
"Das maschinelle Lernen ist so weit ausgereift, dass leistungsstarke Modellarchitekturen weithin verfügbar sind, während die Ansätze für die Entwicklung von Datensätzen zurückgeblieben sind."
Er hat auch den ersten datenzentrierten KI-Wettbewerb ins Leben gerufen. Bei herkömmlichen Kaggle-Wettbewerben werden Sie aufgefordert, ein Modell mit einem festen Datensatz zu trainieren und einzureichen. Hier wird das Format umgedreht und jeder Teilnehmer wird gebeten, einen Datensatz einzureichen, der dann zum Trainieren eines festen Modells verwendet wird.
Auch wenn die datenzentrierte KI ein breiteres Spektrum an Praktiken und Konzepten umfasst als nur die Datenanreicherung, ist sie dennoch ein wichtiger Teil davon. Wir reiten also nicht auf einem toten Pferd herum, wenn wir das Thema Datenanreicherung in diesem Blogpost noch einmal aufgreifen.
Bisher haben wir kurz erläutert, was Datenerweiterung ist, und wir haben festgestellt, dass dies immer noch ein aktuelles Thema ist. Kommen wir nun zum Geschäft (Wert).
Natürlich hat jeder Anwendungsfall, den wir angehen, und jeder Datensatz, den wir verwenden oder erstellen, seine eigenen, einzigartigen Feinheiten. Im Allgemeinen gibt es jedoch drei Leitprinzipien, an die wir uns halten: solide Baselines, Kenntnis des Modells und Einbringung von Expertenwissen, wo immer möglich:
Maschinelles Lernen ist ein iterativer Prozess: Änderungen vornehmen, trainieren, bewerten und wiederholen. Daher ist es wichtig, einen guten Ausgangspunkt zu haben, so dass nachfolgende Iterationen mit diesem Ausgangspunkt verglichen werden können, um schnell herauszufinden, was funktioniert und was nicht. Dieser Ansatz gilt auch für die Datenerweiterung.
Eine besonders interessante Entwicklung in dieser Hinsicht ist Googles AutoAugment. Sie formulieren das Problem, die beste Erweiterungspolitik für einen Datensatz zu finden, als ein diskretes Suchproblem. In ihrem Papier zeigen sie die optimalen entdeckten Augmentierungsstrategien für Datensätze: CIFAR-10, SVHN und ImageNet. Okay, toll, Problem gelöst also? Nun, nicht ganz. Die Suche nach einer optimalen Erweiterungsstrategie für einen ausreichend großen Suchraum erfordert eine Menge Rechenleistung. Aus diesem Grund ist die Ausführung von AutoAugment auf Ihrem eigenen Datensatz keine praktikable Option. Aber es gibt eine gute Nachricht. Die Autoren von AutoAugment argumentieren, dass gelernte Richtlinien zwischen verschiedenen Datensätzen übertragbar sind, z. B. dass eine optimale Richtlinie für ImageNet auch auf anderen, ImageNet-ähnlichen Datensätzen gut funktioniert. Wir sehen hier eine offensichtliche Parallele zum Transfer-Lernen, bei dem vortrainierte Gewichte aus einem Datensatz oft auch in anderen Datensätzen gute Ergebnisse liefern. Folglich kann eine AutoAugment-Richtlinie als solide Basis für eine große Bandbreite von Datensätzen verwendet werden.
Seit seiner Veröffentlichung wurden Verbesserungen wie Fast AutoAugment und RandAugment vorgeschlagen, um AutoAugment weniger rechenintensiv zu machen, aber die zentrale Idee ist dieselbe geblieben: die automatische Suche nach einer guten Augmentierungspolitik für einen gegebenen Datensatz. Es gibt auch eine Version von AutoAugment, die vollständig auf die Objekterkennung ausgerichtet ist.
Immer noch nicht überzeugt? Beachten Sie, dass eines der Gewinnerteams des bereits erwähnten datenzentrierten KI-Wettbewerbs, Synaptic-AnN, genau diese Strategie als Teil seiner Siegerlösung verwendet hat. Sie bemerkten, dass der Datensatz des Wettbewerbs (römische Ziffern) eine gewisse Ähnlichkeit mit dem SVHN-Datensatz (Street View House Numbers) aufwies, für den es eine erlernte AutoAugment-Richtlinie gibt, die sie als Ausgangspunkt für ihre Verbesserungen nutzten:
"Wir untersuchten die Möglichkeiten der Verwendung von AutoAugment um die Parameter der Augmentationstechnik zu erlernen, aber aufgrund begrenzter Rechenressourcen und unzureichender Daten sind die Ergebnisse der Arbeit für den SVHN-Datensatz auf den Wettbewerbsdatensatz angewendet. Wir stellten fest, dass Augmentationstechniken wie Solarize und Invert ineffektiv waren und entfernten sie daher aus der endgültigen SVHN-Policy. Diese Methode führte zu einer deutlichen Leistungssteigerung und wurde gewählt, weil der SVHN-Datensatz Graustufen aufweist und mit Zahlendarstellungen (Hausnummern) zu tun hat. Wir haben auch andere Auto-Augment-Verfahren auf der Grundlage von CIFAR10 und ImageNet untersucht, aber diese waren nicht so effektiv wie SVHN."
Wenn Sie dachten, der Begriff "datenzentrierte KI" würde Sie davon entbinden, Ihr Modell zu verstehen, dann irren Sie sich. Einige Modelle werden mit Blick auf eine bestimmte Datenaufbereitung entwickelt. Wenn Sie dies außer Acht lassen, kann sich das negativ auf die Leistung Ihres Modells auswirken.
Ein Paradebeispiel dafür ist YOLOv4, das nach wie vor ein sehr beliebtes Modell zur Objekterkennung ist. Einer der Beiträge, die zum Erfolg des Modells beitragen, ist die sogenannte Bag of Freebies (BoF). Dabei handelt es sich um Techniken, die die Leistung des Modells verbessern, ohne das Modell zum Zeitpunkt der Inferenz zu beeinflussen, einschließlich der Datenerweiterung. Die Augmentationstransformationen, die aufgrund von Ablationsexperimenten tatsächlich in BoF aufgenommen wurden, sind CutMix und Mosaic Data Augmentation. Diese Augmentierungen sind also ebenso Teil des Modells wie die Modellarchitektur selbst.
Jahre der "modellzentrierten KI" haben dazu geführt, dass hochleistungsfähige Modellarchitekturen und vortrainierte Gewichte zum Standard gehören. Darüber hinaus haben Forschungsentwicklungen wie AutoAugment dazu geführt, dass starke Augmentierungs-Baselines weithin anwendbar sind. Gibt es in dieser Geschichte also noch Platz für Expertenwissen? Kann ein erfahrener ML-Praktiker immer noch einen Unterschied machen und den letzten Tropfen Leistung aus den Daten herausquetschen? Wir glauben, dass die Antwort ein klares "Ja" ist.
Werfen wir noch einmal einen Blick auf die Lösung von Synaptic-AnN. Nachdem sie die AutoAugment-Richtlinie für den SVHN-Datensatz verwendet hatten, stellten sie die wichtigsten Unterschiede zwischen SVHN und ihrem Datensatz fest und kamen zu dem Schluss, dass einige Augmentierungen für ihren Datensatz nicht sinnvoll waren: Solarisieren und Invertieren. Diese Strategie führte zu einer erheblichen Leistungssteigerung.
In ähnlicher Weise haben viele Anwendungsfälle, mit denen wir uns bei ML6 befassen, sehr spezifische Datensätze, und die Nichtbeachtung der feinen Unterschiede zwischen ihnen würde dazu führen, dass die Modellleistung auf der Strecke bleibt. Nehmen wir zum Beispiel die automatische Qualitätskontrolle in einer Fertigungsstraße. Bildverarbeitungsanwendungen in der Fertigung ermöglichen in der Regel eine sehr kontrollierte Umgebung: Es gibt eine konstante Beleuchtung, einen festen Blickwinkel, einen festen Abstand zum Objekt... Folglich ist es unnötig, Augmentierungen zu verwenden, um unser Modell invariant gegenüber Lichtverhältnissen, Blickwinkeln oder der Objektgröße zu machen. Stattdessen sollten wir uns auf Erweiterungen konzentrieren, die plausible Variationen der Defekte erzeugen, die wir zu erkennen versuchen.
Wenn Sie den Datensatz für Ihr nächstes ML-Projekt gesammelt und beschriftet haben, sollten Sie sich etwas Zeit nehmen, um eine gute Strategie für die Datenerweiterung zu erstellen und zu entwickeln. Beginnen Sie mit der Anwendung einer soliden Basisstrategie und erweitern Sie diese, indem Sie Expertenwissen einbeziehen, indem Sie Ihre Daten und Ihren Anwendungsfall verstehen. Schließlich sollten Sie sich die Zeit nehmen, die innere Funktionsweise Ihres Modells zu verstehen, um sicherzustellen, dass Ihre Erweiterungsstrategien darauf abgestimmt sind.