Computer Vision ist einer der einflussreichsten Bereiche der künstlichen Intelligenz und verändert nahezu jeden Aspekt unseres Lebens, ebenso wie die generative KI. Von der medizinischen Bildanalyse über autonome Fahrzeuge bis hin zu Sicherheitssystemen ist KI-gestütztes Computersehen von entscheidender Bedeutung für die Verbesserung von Sicherheit, Effizienz und Gesundheitsversorgung durch Technologien wie Objekterkennung, Gesichtserkennung und Bildklassifizierung.
Aber Computer Vision sorgt nicht nur in Spezialgebieten für Aufsehen; Es ist auch Teil der Verbraucher-Apps, die wir täglich nutzen. Verbessern des Kamerafokus, Bearbeiten von Fotos, Echtzeit-Texterkennung und Scannen mit einer Smartphone-Kamera, Ermöglichen der Erkennung und Warnung von Bewegungen durch Smart-Home-Geräte wie Sicherheitskameras, Posenschätzung für Fitness-Tracking-Apps, Kalorien- und Lebensmittelerkennung für Diät-Tracking-Apps, Gesichtserkennung zum Entsperren von Telefonen sowie Gesichtserkennung und -klassifizierung zum Organisieren von Fotos nach Personen in Alben. Diese Anwendungen sind zu einem integralen Bestandteil der täglichen Erfahrungen von Millionen von Menschen geworden.
Quelle: Real Computer Vision von Boris Denisenko am Medium
Die meisten Ingenieure für maschinelles Lernen erstellen ihre Modelle nicht von Grund auf, um diese Funktionen zum Leben zu erwecken. Stattdessen stützen sie sich auf bestehende Open-Source-Modelle. Obwohl dies der praktikabelste Ansatz ist, da die Erstellung eines Modells von Grund auf unerschwinglich teuer ist, muss noch viel Arbeit geleistet werden, bevor das Modell in einer App verwendet werden kann.
Erstens löst das Open-Source-Modell möglicherweise ein ähnliches Szenario, jedoch nicht genau das, was ein Ingenieur benötigt. Beispielsweise benötigt ein ML-Ingenieur möglicherweise eine App, die verschiedene Getränke vergleicht, das verfügbare Modell ist jedoch auf den Vergleich von Lebensmitteln ausgelegt. Obwohl es bei Lebensmitteln gut funktioniert, kann es bei der Anwendung auf Getränken Probleme bereiten.
Zweitens unterscheiden sich die realen Bedingungen, unter denen diese Modelle laufen müssen, häufig erheblich von den Umgebungen, für die sie ursprünglich entwickelt wurden. Beispielsweise könnte ein Modell Hunderte Millionen Parameter haben, was es zu groß und rechenintensiv macht, um es beispielsweise auf einem Smartphone auszuführen. Der Versuch, ein solches Modell auf einem Gerät mit begrenzten Rechenressourcen auszuführen, führt zu langsamer Leistung, übermäßiger Batterieentladung oder Ausführungsfehlern.
Anpassung an reale Szenarien und Bedingungen
Dies führt früher oder später dazu, dass die meisten Ingenieure, die maschinelles Lernen für Computer Vision in Verbraucheranwendungen anwenden, sich der Notwendigkeit stellen müssen:
- Anpassen eines vorhandenen Open-Source-Modells an sein spezifisches Szenario.
- Optimierung des Modells für den Betrieb innerhalb begrenzter Kapazitäten.
Die Anpassung eines Modells kann nicht einfach so erledigt werden. Sie beginnen mit einem vorab trainierten Modell und passen es an Ihre spezifische Aufgabe an. Dies erfordert die Anpassung einer Vielzahl von Parametern – der Anzahl der Schichten, der Anzahl der Neuronen in jeder Schicht, der Lernrate, der Stapelgröße und mehr. Die schiere Anzahl möglicher Kombinationen kann überwältigend sein, da möglicherweise Millionen verschiedener Konfigurationen getestet werden müssen. Hier kommt die Hyperparameteroptimierung (HPO) ins Spiel. HPO trägt dazu bei, diesen Prozess zu rationalisieren, sodass Sie die beste Konfiguration schneller finden, als wenn Sie die Parameter manuell separat anpassen müssten.
Sobald Sie das Modell an Ihr Szenario angepasst haben, besteht die nächste Herausforderung darin, es auf einem Gerät mit begrenzten Ressourcen zum Laufen zu bringen. Beispielsweise müssen Sie das Modell möglicherweise auf einem Smartphone mit nur 6 GB RAM bereitstellen. In solchen Fällen ist die Modellkomprimierung unerlässlich, um die Größe des Modells zu reduzieren und es für Geräte mit begrenztem Speicher und begrenzter Rechenleistung handhabbar zu machen.
Techniken zur Hyperparameteroptimierung (HPO).
Bei der Hyperparameteroptimierung geht es darum, den besten Parametersatz für Ihr neuronales Netzwerk zu finden, um Fehler bei einer bestimmten Aufgabe zu minimieren. Nehmen wir an, Sie trainieren ein Modell, um anhand eines Fotos das Alter einer Person abzuschätzen. Der Fehler bezieht sich in diesem Zusammenhang auf die Abweichung der Altersschätzung des Modells vom tatsächlichen Alter der Person – gemessen beispielsweise in der Anzahl der Jahre, in denen sie abweicht.
Rastersuche
Die Rastersuche ist eine Brute-Force-Methode, die die optimale Kombination findet, indem sie alle möglichen Parametersätze testet. Sie beginnen mit einem bestehenden Modell und passen es an Ihre Aufgabenstellung an. Anschließend ändern Sie systematisch Parameter – wie die Anzahl der Neuronen oder Schichten –, um zu sehen, wie sich diese Änderungen auf den Modellfehler auswirken. Bei der Rastersuche wird jede Kombination dieser Parameter getestet, um diejenige zu finden, die den geringsten Fehler erzeugt. Die Herausforderung besteht darin, dass Sie zahlreiche Parameter anpassen können, von denen jeder ein breites Spektrum potenzieller Werte aufweist.
Obwohl diese Methode garantiert die beste Option findet, ist sie unglaublich zeitaufwändig und oft unpraktisch.
Zufällige Suche
Ein anderer Ansatz ist die Zufallssuche, bei der Sie einen Teil der möglichen Kombinationen zufällig auswählen, anstatt jede Kombination zu testen. Bei dieser Methode werden für jeden Parameter innerhalb eines bestimmten Bereichs zufällige Werte ausgewählt und diese Kombinationen getestet. Sie ist zwar schneller als die Rastersuche, garantiert jedoch nicht das beste Ergebnis. Es ist jedoch wahrscheinlich, dass eine gute, wenn nicht sogar optimale Lösung gefunden wird. Es ist ein Kompromiss zwischen Geschwindigkeit und Präzision.
Wenn es beispielsweise 1.000 mögliche Parameterkombinationen gibt, könnten Sie 100 zufällig auswählen und testen, was im Vergleich zum Testen aller Kombinationen nur ein Zehntel der Zeit in Anspruch nehmen würde.
HPO mit Optimierungsalgorithmen
Optimierungsbasierte Hyperparameter-Tuning-Methoden nutzen unterschiedliche mathematische Ansätze, um effizient die besten Parametereinstellungen zu finden. Beispielsweise verwendet die Bayes’sche Optimierung probabilistische Modelle zur Steuerung der Suche, während TetraOpt – ein vom Autor und seinem Team entwickelter Algorithmus – eine Tensor-Train-Optimierung verwendet, um sich besser in hochdimensionalen Räumen zurechtzufinden. Diese Methoden sind effizienter als die Raster- oder Zufallssuche, da sie darauf abzielen, die Anzahl der zum Finden optimaler Hyperparameter erforderlichen Bewertungen zu minimieren und sich auf die vielversprechendsten Kombinationen zu konzentrieren, ohne jede Möglichkeit zu testen.
Solche Optimierungsalgorithmen helfen dabei, schneller bessere Lösungen zu finden, was besonders wertvoll ist, wenn Modellevaluierungen rechenintensiv sind. Ihr Ziel ist es, mit möglichst wenig Versuchen die besten Ergebnisse zu erzielen.
Komprimierungstechniken für ML-Modelle
Sobald ein Modell theoretisch funktioniert, besteht die nächste Herausforderung darin, es unter realen Bedingungen einzusetzen. Nehmen Sie zum Beispiel ResNet für Gesichtserkennung, YOLO für Verkehrsmanagement und Sportanalysen oder VGG für Stilübertragung und Inhaltsmoderation. Obwohl sie leistungsstark sind, sind diese Modelle oft zu groß für Geräte mit begrenzten Ressourcen, wie zum Beispiel Smartphones oder Smart-Kameras.
ML-Ingenieure greifen auf eine Reihe bewährter Komprimierungstechniken zurück, um die Modelle für solche Umgebungen effizienter zu machen. Diese Methoden – Quantisierung, Pruning, Matrixzerlegung und Wissensdestillation – sind unerlässlich, um die Größe und den Rechenaufwand von KI-Modellen zu reduzieren und gleichzeitig ihre Leistung zu erhalten.
Quantisierung
Quelle: Master the Art of Quantization von Jan Marcel Kezmann auf Medium
Die Quantisierung ist eine der beliebtesten Methoden zur Komprimierung neuronaler Netze, vor allem weil sie im Vergleich zu anderen Techniken nur minimale zusätzliche Berechnungen erfordert.
Die Grundidee ist einfach: Ein neuronales Netzwerk besteht aus zahlreichen mit Zahlen gefüllten Matrizen. Diese Zahlen können in verschiedenen Formaten auf einem Computer gespeichert werden, beispielsweise als Gleitkommazahl (z. B. 32,15) oder als Ganzzahl (z. B. 4). Unterschiedliche Formate beanspruchen unterschiedlich viel Speicher. Beispielsweise belegt eine Zahl im Float32-Format (z. B. 3.14) 32 Bit Speicher, während eine Zahl im int8-Format (z. B. 42) nur 8 Bit benötigt.
Wenn die Zahlen eines Modells ursprünglich im Float32-Format gespeichert sind, können sie in das Int8-Format konvertiert werden. Diese Änderung reduziert den Speicherbedarf des Modells erheblich. Beispielsweise könnte ein Modell, das anfänglich 100 MB belegt, nach der Quantisierung auf nur 25 MB komprimiert werden.
Beschneidung
Wie bereits erwähnt, besteht ein neuronales Netzwerk aus einer Reihe von Matrizen, die mit Zahlen gefüllt sind, die als „Gewichte“ bezeichnet werden. Beim Beschneiden werden die „unwichtigen“ Gewichte aus diesen Matrizen entfernt. Durch die Eliminierung dieser unnötigen Gewichte bleibt das Verhalten des Modells weitgehend unberührt, der Speicher- und Rechenbedarf wird jedoch deutlich reduziert.
Stellen Sie sich zum Beispiel vor, dass eine der Matrizen des neuronalen Netzwerks so aussieht:
Nach dem Beschneiden könnte es etwa so aussehen:
Die Bindestriche („-“) zeigen an, wo Elemente beim Beschneiden entfernt wurden. Für den Betrieb dieses vereinfachten Modells sind weniger Rechenressourcen erforderlich.
Matrixzerlegung
Die Matrixzerlegung ist eine weitere effektive Komprimierungsmethode, bei der die großen Matrizen in einem neuronalen Netzwerk in mehrere kleinere, einfachere Matrizen zerlegt (oder „zerlegt“) werden.
Nehmen wir zum Beispiel an, eine der Matrizen in einem neuronalen Netzwerk sieht so aus:
Durch die Matrixzerlegung können wir diese einzelne große Matrix durch zwei kleinere ersetzen.
Wenn diese kleineren Matrizen miteinander multipliziert werden, ergeben sie das gleiche Ergebnis wie das Original und stellen so sicher, dass das Verhalten des Modells konsistent bleibt.
Das heißt, wir können die Matrix aus dem ersten Bild durch die Matrizen aus dem zweiten ersetzen.
Die ursprüngliche Matrix enthält 9 Parameter, aber nach der Zerlegung enthalten die Matrizen zusammen nur 6, was zu einer Reduzierung um ca. 33 % führt. Einer der Hauptvorteile dieser Methode ist ihr Potenzial, KI-Modelle stark zu komprimieren – in manchen Fällen sogar mehrmals.
Es ist wichtig zu beachten, dass die Matrixzerlegung nicht immer vollkommen genau ist. Manchmal kommt es während des Prozesses zu einem kleinen Näherungsfehler, aber die Effizienzgewinne überwiegen diesen kleinen Nachteil oft.
Wissensdestillation
Wissensdestillation ist eine Technik zum Aufbau eines kleineren Modells, das als „Schülermodell“ bekannt ist, indem Wissen aus einem größeren, komplexeren Modell, dem „Lehrermodell“, übertragen wird. Die Schlüsselidee besteht darin, das kleinere Modell parallel zum größeren zu trainieren, damit das Schülermodell lernt, das Verhalten des Lehrermodells nachzuahmen.
So funktioniert es: Sie leiten dieselben Daten durch das große neuronale Netzwerk (den Lehrer) und das komprimierte (den Schüler). Beide Modelle erzeugen Ergebnisse, und das Schülermodell ist darauf trainiert, möglichst ähnliche Ergebnisse wie die des Lehrers zu generieren. Auf diese Weise lernt das komprimierte Modell, eine ähnliche Leistung wie das größere Modell zu erbringen, jedoch mit weniger Parametern.
Die Destillation kann problemlos mit Quantisierung, Bereinigung und Matrixzerlegung kombiniert werden, wobei das Lehrermodell die Originalversion und das Schülermodell die komprimierte Version ist. Diese Kombinationen tragen dazu bei, die Genauigkeit des komprimierten Modells zu verbessern.
In der Praxis kombinieren Ingenieure diese Techniken häufig, um die Leistung ihrer Modelle beim Einsatz in realen Szenarien zu maximieren.
KI entwickelt sich auf zwei parallelen Wegen. Einerseits treibt es beeindruckende Fortschritte in Bereichen wie dem Gesundheitswesen voran und verschiebt die Grenzen dessen, was wir für möglich gehalten haben. Andererseits ist die Anpassung der KI an reale Bedingungen ebenso entscheidend, um fortschrittliche Technologie oft nahtlos und unbemerkt in das tägliche Leben von Millionen Menschen zu integrieren. Diese Dualität spiegelt die Auswirkungen der Smartphone-Revolution wider, die Computer von etwas Störendem und Kostspieligem in eine Technologie verwandelte, die für jedermann zugänglich und praktisch ist.
Die in diesem Artikel behandelten Optimierungstechniken werden von Ingenieuren eingesetzt, um KI zu einem greifbaren Teil des Alltags zu machen. Diese Forschung ist im Gange und große Technologieunternehmen (wie Meta, Tesla oder Huawei) und Forschungslabore investieren erhebliche Ressourcen in die Suche nach neuen Wegen zur Optimierung von Modellen. Gut implementierte HPO-Techniken und Komprimierungsmethoden helfen Ingenieuren weltweit jedoch bereits dabei, die neuesten Modelle in alltägliche Szenarien und Geräte zu integrieren, beeindruckende Produkte für Millionen von Menschen zu schaffen und die Branche durch ihre veröffentlichten und Open-Source-Ergebnisse voranzutreiben.