Meist sind die KI-Experten auf die Datenaufbereitung und die Entwicklung von Modellen konzentriert. Doch dies ist in der Regel nur ein kleiner Teil des gesamten Ökosystems in dem das Machine Learning Modell dann später eingesetzt werden soll. Jedes datengetriebene Produkt verlangt, den gesamten Prozess, in dem das Modell genutzt wird, von Anfang bis zum Ende zu durchdenken.

Dieser Blogpost behandelt nicht alle Themen, die damit in Zusammenhang stehen (wie die Verwaltung verschiedener Versionen von Modellen, A/B Tests, Refreshing der Datensamples, etc.). Wer mehr zu diesen Kernthemen lesen möchte, sei an dieser Stelle auf das Buch Building Machine Learning Powered Applications von Emmanuel Ameisen verwiesen.

Testen und Verstehen von MachineLearning Modellen

Der zentrale Punkt ist, dass das Testen und Verstehen von Modellen, die im Zuge künstlicher Intelligenz eingesetzt werden, viel schwieriger und aufwändiger ist, als bei klassischem Programmcode. Bei einem klassischen Computerprogramm kann der Quellcode Schritt für Schritt nachvollzogen werden. Das Programm ist deterministisch und muss für die gleichen Inputs immer auch die gleichen Outputs liefern. Dies unterscheidet ein ML-Modell drastisch. Denn bei einem neuronalen Netz entsteht das Verhalten des Systems aus dem Versuch, sich den Trainingsdaten anzupassen. Und darin liegt die größte Schwierigkeit beim Testen und Verstehen.

So kann das Ausrollen eines Modells zum Desaster führen!

Dem Deployment-Desaster vorbeugen

Nehmen wir folgendes Beispiel an: Wir möchten ein System entwickeln, das autonom Bären erkennt und Camper warnen kann.

Wie gehen wir hinsichtlich der Umsetzung vor:

  1. Wir generieren ein Datenset mit Trainingsdaten. Also Fotos von Bären und entsprechende Labels, um welche Bären es sich handelt. Dazu laden wir eine große Anzahl entsprechender Fotos aus dem Internet.

Probleme mit unseren Trainingsdaten für das Machinelearning Modell

Aber welche Probleme hinsichtlich des späteren Einsatzzwecks können durch unsere Trainingsdaten entstehen?

Unser Produktivsystem muss:

  • mit Video und nicht nur Bilddaten arbeiten (können)
  • auch in der Nach korrekt funktionieren (sind Nachtfotos in unseren Trainingsdaten enthalten?)
  • möglicherweise Bilder in schlechter Auflösung korrekt verarbeiten
  • sicherstellen, dass die Klassifizierung der Bilder schnell genug errechnet wird
  • Bären in unterschiedlichesten Positionen (auch hinter Büschen und Bäumen) erkennen können

Es kommt also bereits bei den Trainingsdaten darauf an, solche Daten zu nutzen, die dem späteren Einsatzgebiet gleichen. Wenn wir Bärenfotos aus dem Internet verwenden, werden dies in der überwiegenden Zahl sicher “gute” Fotos von Bären sein. Sie entsprechen aber möglicherweise nicht den Bildern von Bären, denen unser MachineLearning-Modell im späteren Produktiveinsatz gegenüber steht.

Out-of-Domain Daten

Das beschriebene Problem mit unseren Trainingsdaten ist ein konkretes Beispiel dessen, was allgemein als out of domain data beschrieben wird. Ganz allgemein formuliert bedeutet dies, dass unser Modell während des Produktiveinsatzes möglicherweise andere Daten sehen wird, als während des Trainingsprozesses. Da es für dieses Problem keine eindeutige technische Lösung gibt, muss man bei der Zusammenstellung der Trainingsdaten bereits den späteren Einsatzzweck des Modells im Kopf haben.

Doch gibt es auch noch andere Schwierigkeiten, die uns hinsichtlich der eingesetzten Trainingsdaten treffen können.

Domain-Shift Problem

Eines dieser ist das domain shift problem. Dieses beschreibt jene Situation in der unser KI-Modell während der Produktivphase veränderte Daten erhält. Beispielsweise kann ein MachineLearning Modell, das in einer Versicherung eingesetzt wird, auf eine bestehende Kundengruppe trainiert worden sein. Ändert sich nun in der Praxis die Zusammensetzung der Kundengruppe, so muss auch unser Modell angepasst werden, um noch adäquate Entscheidungen treffen zu können.

Wege, um diese Probleme zu verhindern

Die Ursache dieser Probleme liegt in der Komplexität von neuronalen Netzen, die es unmöglich macht, ihr Verhalten vollends zu verstehen und vorwegzunehmen. Doch gerade diese Komplexität ist es, was neuronale Netze derartig mächtig in der Anwendung macht.

Um also die Vorteile bestmöglich im Produktivbetrieb nutzen zu können, empfehlen wir einen 3-stufigen Einführungsplan:

  1. Manueller Prozess: Die künstliche Intelligenz läuft parallel zu ganz normalen manuellen Abarbeitung des Prozesses.
  2. Einführung mit eingeschränktem Fokus: In einem zeitlich und geografisch eingegrenztem Raum wird die künstliche Intelligenz eingeführt. Der Prozess wird von einem menschlichen Anwender überwacht.
  3. Schrittweise Erweiterung: Schritt für Schritt wird der KI-Einsatz zeitlich und geografisch ausgeweitet.

Wenn immer möglich, sollte im ersten Schritt die künstliche Intelligenz (bzw. das Machine Learning Modell) nur im Hintergrund mitlaufen. Der tatsächliche Prozess wird jedoch von einem menschlichen Anwender durchgeführt. Während dieser Phase können erste Erfahrungen gesammelt werden und man erkennt schnell, ob die KI auch richtig agiert.

Im zweiten Schritt übernimmt dann die KI die Führungsrolle. Der Prozess wird jedoch von einem menschlichen Anwender permanent überwacht. Wichtig ist, die Stufe von Schritt 1 auf Schritt 2 nicht überall zeitgleich durchzuführen, sondern Teil für Teil die Anwendung des Systems auszuweiten.

Danach kann der Umfang und Fokus der künstlichen Intelligenz laufend erweitert werden. Wichtig ist, während dieser Phase auf genaue Protokolle und ein etabliertes Reportingsystem zu achten.

Quelle: Deep Learning for Coders with fastai and PyTorch: AI Applications Without a PhD