Sollen neuronale Netze in einer produktiven Umgebung eingesetzt werden, gilt es, diese mithilfe der sog. Inferenz in eine praxistaugliche Form zu gießen und anzuwenden. Doch zunächst:
Woran erkennen Sie eine Antriebswelle?
An der Form? – Es gibt verschiedene Ausprägungen.
Am Material? – Unzählige Teile einer Karosse bestehen aus Metall.
An der Umgebung? Es soll auch schon Antriebswellen auf der grünen Wiese gegeben haben.
Natürlich können wir als Menschen problemlos eine Antriebswelle erkennen, egal, ob sie uns im Werk, auf einer Wiese oder halb verdeckt unter einem Stein begegnet. Unsere menschliche Intelligenz ermöglicht uns, vom Konzept „Antriebswelle“ zu abstrahieren und den Gegenstand zuverlässig zu erkennen.
Künstliche Intelligenz – und damit in vielen komplexen Fällen neuronale Netze – kann das nicht. Einmal gelernt, können diese Konzepte nur ein fest erlerntes Set an Gegenständen oder Personen zuverlässig erkennen. Obgleich die Netze sehr erfolgreich bei ihren Aufgaben sein können, sind sie nicht besonders versatil im Praxiseinsatz.
Doch wie kommen neuronale Netze und KI überhaupt zum Einsatz? Und was hat es mit der Inferenz dabei auf sich?
Verschiedene Formen Künstlicher Intelligenz
Das Konzept der Künstlichen Intelligenz ist nicht neu. Bereits 1956 wurde der wissenschaftliche Begriff in einer Konferenz am Dartmouth College in den USA geprägt. Und obgleich die ersten Automaten Jahrtausende zurückreichen, war dies der Grundstein der institutionalisierten Entwicklung künstlicher Intelligenz, wie wir sie heute verstehen. Dahinter steckt der Versuch, menschliche Intelligenz mithilfe von Maschinen und Computern nachzuahmen. Entsprechend aufwendig und komplex sind die zugrunde liegenden Algorithmen.
Doch die ihre Lösungskompetenzen waren häufig noch beschränkt – aus diesem Grund entstand das sog. Deep Learning mithilfe neuronaler Netze. Durch die Parametrisierung und Gewichtung unzähliger Datenpunkte entsteht ein dichtes, unübersichtliches Geflecht an Verbindungen, die den menschlichen Neuronen im Gehirn ähneln.
Gerade in der industriellen Bilderverarbeitung sind diese fortschrittlichen Algorithmen gefragt: sie helfen, die Informationsflut aus immer besser auflösenden Bildern zu bändigen und zu verstehen.
Die Komplexität neuronaler Netze
Exakt diese Datendichte führt dazu, dass neuronale Netze nicht mehr fest programmierbar sind. Denn um dieser Menge Herr zu werden, führen neuronale Netze sog. „hidden layer“, also versteckte Ebenen, in die Berechnung ein. Jede Ebene übernimmt dabei die Erkennung einer Vielzahl einzelner Merkmale, die erst in ihrer Gesamtheit das Gesamtergebnis produzieren.
Neuronale Netze gewichten die Abhängigkeit dieser Merkmale voneinander. So ergibt sich auch der Fachbegriff „Gewichtung“ – diese mal gewichtigen, mal nahezu unwesentlichen Verbindungen lassen sich mit den Synapsen im Gehirn vergleichen. Wichtige Nervenbahnen sind deutlicher ausgeprägt, selten genutzte Wege entsprechend schwächer gewichtet.
Training bereitet die neuronalen Netze auf ihre spezifische Aufgabe vor
Um dieses komplexe Geflecht der Informationsbewertung korrekt aufzubauen, benötigen neuronale Netze allerdings ein Training. Denn im Gegensatz zu ihrem menschlichen Pendant erkennen sie nicht ohne Weiteres eine Antriebswelle.
Um ihre zugedachte Aufgabe korrekt zu erfüllen, durchlaufen die neuronalen Netze also ein Training mit Daten des jeweils gefragten Objekttyps. Sollen Antriebswellen erkannt werden, benötigt der Algorithmus also gekennzeichnete Bilder von verschiedenen Exemplaren. In einem umfangreichen Trainingsprozess erlernt das Netz daraufhin eine jeweils einzigartige Kombination, um aus den unzähligen Parametern und Gewichtungen ein korrektes Ergebnis zu erschließen.
Gerade zu Beginn des Trainings sind die Rückschlüsse des Netzes möglicherweise falsch – es beginnt dann selbstständig von vorne in einer neuen Konstellation und berechnet ein neues Ergebnis. Dieser Prozess zieht sich häufig über mehrere Stunden hinweg. Das Training der neuronalen Netze ist daher vergleichbar komplex und rechenintensiv.
Inferenz bei neuronalen Netzen
Im praktischen Einsatz – etwa in der Produktionshalle, in der Antriebswellen automatisch von Nockenwellen und Besenstielen unterschieden werden sollen – kann ein solch trainiertes neuronales Netz unpraktisch und schlecht zu handhaben sein. Umfangreiche Dateien, die jede Menge Rechenleistung in der Werkhalle ziehen und so für Verzögerungen sorgen? In der automatisierten Produktion von heute nicht mehr denkbar!
Aus diesem Grund unterscheidet man zwischen Training und Inferenz neuronaler Netze.
Inferenz steht dabei für den produktiven Einsatz eines neuronalen Netzes – es berechnet dabei das gewünschte Ergebnis, z.B. einen Score, eine Segmentierung oder eine Klassifizierung. Der Name ist dabei Programm: Entsprechend engl. infer = folgern schlussfolgert die Inferenz aufgrund der individuellen Anpassungen im vorangegangenen Training das Ergebnis eines neuen Objekts derselben Klasse. Ein erfolgreiches Training, das z.B. ein Overfitting vermeidet, erlaubt der Inferenz stets die richtigen Schlussfolgerungen über diese neuen Objekte zu ziehen.
Setzen Sie neuronale Netze für die visuelle Qualitätsinspektion metallischer und komplexer Werkstücke ein
Anforderungen an die Inferenz
Aus diesem Grund ist eine Inferenz nicht ohne vorangegangenes Training denkbar. Sie ist gewissermaßen die praktische Umsetzung des Erlernten. Dabei fokussiert sie nicht nur auf das korrekte Ergebnis, sondern bezieht auch praktische Faktoren mit ein:
- Gerade neuronale Netze in der Bildverarbeitung und im Natural Language Processing sind häufig sehr groß und komplex. Nicht selten gibt es dutzende bis hunderte von hidden layers. Die gewichteten Verbindungen dazwischen können schnell in die Millionen gehen. Im produktiven Betrieb ein solches Netz zu verwenden bedeutet lange Rechen- und damit Standzeiten.
- Je größer das neuronale Netz, umso mehr CPU, Speicher und Energie benötigt es, um überhaupt zu einem Ergebnis zu kommen. Entsprechend verlängert sich die Programm-Laufzeit – die Latenz steigt ins Unermessliche, der Energieverbrauch
- Nicht jedes Netz arbeitet mit Rohdaten. Oft kann eine Nachbearbeitung der eingegangenen Daten sinnvoll sein, bevor sie in die KI übergehen: In der Bildverarbeitung kann das ein Aufhellen oder Ausschneiden eines bestimmten Bildausschnittes sein. Auch dafür braucht es eine Anpassung.
- Wofür sollen die Ergebnisse des neuronalen Netzes anschließend verwendet werden? Formatänderungen und -anpassungen an eine API können notwendig sein.
- Selbstredend sollen die neuronalen Netze langfristig zum Einsatz kommen. Daher ist es zentral, bereits zu Beginn Möglichkeiten für Aktualisierungen zu schaffen.
- Gleiches gilt für unternehmerisches Wachstum: Wie lässt sich die Anlage optimal skalieren?
All diese Spezifikationen und Fragen müssen für eine hervorragend arbeitende Inferenz berücksichtigt werden. Es zeigt sich: die Anforderungen für eine Anwendung neuronaler Netze steigen.
Auch aus diesem Grund vollzieht sich derzeit eine zunehmende Trennung zwischen Training und Inferenz neuronaler Netze. Das wirkt sich auch auf das Berufsbild des Machine Learning Engineers aus: Neben den eigentlichen Entwicklern der Netze gibt es immer häufiger auch Expertinnen, die sich der Umsetzung in einer produktiven Umgebung verschreiben. Diese können sich rein um die Inferenz kümmern oder – vergleichbar mit DevOps – eine schlanke Kombination im Sinne einer MLOps umsetzen.
Unabhängig davon, wie die dahinterstehende Person operativ aufgesetzt ist, kümmert sie sich aber um die optimale Verzahnung des neuronalen Netzes mit dem gesamten Produktionsablauf:
Zunächst müssen verwertbare Daten in ausreichender Qualität aus verschiedenen Quellen in der Produktion gezogen und möglicherweise aufbereitet werden. Erst dann kann das System die eigentliche Inferenz berechnen – und daraufhin die ggf. erneut aufbereiteten Daten zeitnah an die nächste Produktionsstation weitergeben.
Optimierungsmethoden für die Inferenz
Um all diese Anforderungen optimal in der Inferenz umzusetzen, nutzen Machine Learning Engineers sowohl klassische Methoden der Software-Optimierung als auch speziell auf neuronale Netze zugeschnittene Methoden. Die beiden wichtigsten hierbei sind:
- Pruning („Zurückschneiden“): Im Trainingsprozess eines Netzes werden immer wieder einzelne Layer ausgeschalten, um so ein insgesamt zuverlässigeres Ergebnis zu erhalten. Können diese sog. Drop-out Layer auch im finalen Trainingsergebnis abgeschalten bleiben, können sie auch für die Inferenz gelöscht werden. Das Netz wird kleiner und damit performanter.
- Quantization („Quantisierung“): So wie Fotos im Internet üblicherweise nur als komprimiertes .jpg-Bild angezeigt werden, können auch neuronale Netze für ihren eigentlichen Einsatz komprimiert werden. Die Inferenz verhält sich dabei ähnlich wie das Foto – mit bloßem Auge sind kaum Unterschiede zu erkennen, die Dateigröße verringert sich jedoch drastisch. In der Praxis würde ein neuronales Netz weiterhin zuverlässig Antriebswellen erkennen.
Damit lässt sich die Inferenz umfangreich für den Einsatz in der Produktionshalle optimieren und anpassen. Einer intelligenten Antriebswellen-Erkennung steht damit nichts mehr im Wege.
Setzen Sie neuronale Netze für die visuelle Qualitätsinspektion metallischer und komplexer Werkstücke ein