Fehlertoleranz und Machine-Learning
Machine-Learning statt Algorithmen?
In unserer letzten Prototypenentwicklung setzten wir TensorFlow zur Nachbildung eines Algorithmus ein und lernten dessen Fehlertoleranz-Eigenschaften kennen. Unseren vorhandenen C-Code nutzten wir zunächst, um dessen Funktion über einen längeren Zeitraum zu loggen – Eingangs- und Ausgangswerte – etwa 20.000 Iterationen.
Mit diesen Trainingsdaten lernten wir ein TensorFlow-Modell an, quantisierten es und wandelten es für den Einsatz in TensorFlow Lite um. Die notwendige Python-Toolchain generierten wir mittels Ollama und einem LLM flott selbst. Das Ergebnis überraschte: Das Modell imitiert nach kleinen Anpassungen perfekt unseren Algorithmus auf der Zielhardware – einem ARM Cortex-M3.
Wo liegen die Vorteile?
Nun bringt ein in TensorFlow umgesetzter Algorithmus per se keine Vorteile sondern vor allem Herausforderungen: Wie qualifiziere ich ein Modell gegenüber einem Algorithmus? Wie formuliere ich meine Anforderungen, was sind meine Testfälle und wie führe ich Änderungen richtig durch? Warum also der Aufwand?
Wir führten ein Experiment durch: Was macht das Modell im Fehlerfall, wenn einer oder mehrere Eingangswerte fehlen. Unser Algorithmus kann damit nicht umgehen, wir müssten jeden Fehlerfall durchdenken und möglichst elegant abfangen. Unser Modell? Kann ebenfalls nicht mit einem Fehlerfall umgehen. Daher erweiterten wir die Trainingsdaten um exakt die erwarteten Fehlerfälle – lernten das Modell neu an. Und wir haben nicht schlecht gestaunt, dass unser Modell mühelos alle Fehlerfälle gemeistert hat. Diese Kombinatorik in unserem Algorithmus zu lösen wäre mehr Aufwand gewesen.
Natürlich steckt noch Arbeit im Verständnis und der richtigen Qualifizierung der Ergebnisse. Unser Experiment zeigt aber: In schwierigen Szenarien oder für Prototypen kann ein Maschine-Learning-Ansatz sehr schnell sehr gute Ergebnisse liefern und die Arbeit unserer Entwickler spürbar beschleunigen.
Übrigens
Schon 2020 haben wir unseren Messedemonstrator iSparcc (Video) mit einem TensorFlow-Modell Videodaten interpretieren lassen. Das trainierte Modell war in der Lage Miniatur-Stoppschilder zu erkennen und dynamisch auf seine Umgebung zu reagieren und war mehrfach auf der Embedded World zu sehen.
