Share ZU:
7 January 2020 @ Botond Gal

Wie ein Rasenmäher-Roboter zum KI-Problem werden kann

Eigentlich ist es ja völlig klar, was ich möchte. Mein Rasenmäher-Roboter in diesem Beispiel soll überall dort mähen, wo eine Rasenfläche ist.  Gepflasterte Bereiche oder Kies können zwar befahren werden, aber diese sollte der Roboter nur nutzen, um zu weiteren Grasflächen zu kommen. Und selbstverständlich soll er keine Hindernisse berühren, da es sonst passieren kann, dass das Gerät hängen bleibt oder beschädigt wird.

Der Anwenderanspruch

Der Gärtner soll dieses neue Gerät einfach einschalten können, und alles funktioniert dann von selbst. Er muss nicht irgendwelche weiteren Einrichtungsschritte durchführen, um Beispielsweise eine Rasenfläche abzustecken. Dass soll eine Kamera möglich machen.

Damit das so funktioniert, soll eine KI lernen, Fotos von Oberflächen in einem Garten unterscheiden können. Damit kann der Roboter selbständig zwischen den drei Oberflächenklassen unterscheiden, und dann auf dieser Grundlage über den Fahrweg entscheiden.

Erste Schritte zur KI

Damit habe ich mit der Problemdefinition den die erste wichtige Aufgabe erledigt, um eine KI zu trainieren. Nach einem einfachen Modell sind es fünf:

  • Problem definieren
  • Daten sammeln
  • Modell trainieren
  • Modell bereitstellen
  • Feedback der Benutzer sammeln

Im nächsten Schritt sammle ich einige Bilder, welche jeweils eine der Oberflächenklassen repräsentieren und setze anschließend mit zwei gängigen Frameworks (TensorFlow und Keras, Programmiersprache: Python) ein neuronales Netz auf. Damit ich testen kann, wie gut das neuronale Netz funktioniert, habe ich meine Bilder aufgeteilt in Trainingsbilder und Validierungsbilder. Mit den Trainingsbildern wird das neuronale Netz trainiert. Nach dem Training lasse ich die Validierungsbilder klassifizieren und kann daraus ableiten, wie gut meine KI auf neue Daten reagiert. Mein Ergebnis an dieser Stelle ist eher mäßig, denn es werden nur ca. 73% richtig erkannt. Das ist viel zu wenig, um sicher zu vermeiden, dass das Gerät weder das Blumenbeet stutzt oder im Gartenteich versinkt.

Die Trainingsbilder: Auf den Oberflächen links
kann gemäht werden, rechts nicht.

Lernings nach der ersten Testphase

Also brauche ich mehr Bilder! Mehr unterschiedliche Motive! Mehr Daten!

Die kurze Problembeschreibung kommt mir jetzt eher lächerlich vor, bedenke man nur, was hinter diesem kleinen Wort “Hindernis” alles stecken kann. Ich muss also nochmal mein Problem neu definieren, und weitere Daten sammeln. Idealerweise kann ich auch Aussagen treffen, welche neuen Motive (“Blume, Ball, Strauch, Holzboden,…”) in den Datensätzen vorhanden sind, damit ich weiß, welche speziellen Fälle mein Roboter berücksichtigt. Damit müsste sich die Qualität verbessern.

Ist mein Prozess der richtige Prozess?

Ich bin mir sicher, dass bei meinem Entwurf die Qualität besser gewesen wäre, wenn ich gleich am Anfang mehr Daten gesammelt hätte. Oder ich gleich mehr Motive berücksichtigt hätte. Trotzdem erhalte ich neue Erkenntnisse, die ich nur tatsächlich nur dann erhalte, wenn ich das neuronale Netz trainiert habe. Mit diesen neuen Erkenntnissen kann ich anschließend die Daten anpassen oder unter Umständen auch das Problem und das Ziel anpassen.

Und auch, wenn der Test mit den Validierungsdaten sehr nah an den 100% ist, wie kann ich dann sicherstellen, dass es in den Gärten der zukünftigen Benutzer funktioniert? Ich erhalte diese Erkenntnisse nur, wenn der Roboter in sehr vielen Umgebungen mit vielen Spezialfällen trainiert und getestet wird.

Besonders das Abdecken der Spezialfälle erhöht den Aufwand bei der Sammlung von Daten und bei der Rechenleistung, die zum Trainieren nötig ist. Je größer der Aufwand, desto länger die Zeitspanne, bis eine neue Version neue Erkenntnisse liefert. Und je später die Erkenntnisse gewonnen werden umso länger arbeite ich an etwas, dass mit einer gewissen Wahrscheinlichkeit doch nicht funktioniert.

Jede neue Erkenntnis aus dem Betrieb in der Zielumgebung kann potenziell Änderungen in allen vorhergelagerten Stufen herbeiführen. Diese Anpassungsschleifen sind wichtig. Ohne eine Anpassung der vorherigen Disziplinen kann ein System, dass für den praktischen Einsatz sinnvoll sein kann.

Komplexität des Rasenmäher-Roboters

Dieser Zusammenhang wird in der Stacy-Matrix veranschaulicht. Die verhältnismäßig junge Disziplin der KI – wie sie aktuell eingesetzt wird – und die Komplexität der Zielumgebungen lassen diese Aufgaben, die mit ihr gelöst werden sollen, in den komplexen oder chaotischen Bereich einsortieren.

Dadurch, dass es so viele Unbekannte gibt, ist hier ein agiles Vorgehensmodell mit kurzen Iterationen oder das Erstellen vieler Prototypen notwendig, um Probleme aus dem komplexen oder chaotischen Bereich anzugehen. Ein Grund dafür ist die fehlende Vorhersehbarkeit der Technologie und inwieweit die Testdaten den Anforderungen gerecht werden können. Klassische Wasserfallmodelle sind hier nicht geeignet, da sie den komplizierten Bereich adressieren. Schließlich fehlen bei der Anforderungsermittlung und Spezifikation des Systems noch wichtige Erkenntnisse, die erst dann gewonnen werden können, wenn das KI-System trainiert wurde oder in einer anwendungsnahen Umgebung zum Einsatz kommt. Zusätzlich ist es hilfreich, neue Erkenntnisse so früh wie möglich in das System einfließen zu lassen.

Das richtige Vorgehensmodell löst per se noch nicht hochkomplexe Herausforderungen, spannt aber einen Rahmen auf, in dem das erst möglich wird.