TinyML

Was ist TinyML?

TinyML steht für Tiny Machine Learning und beschreibt die Anwendung von maschinellem Lernen in kleinen bzw. winzigen (engl. tiny) elektronischen Bauteilen und Geräten wie Mikrocontrollern oder IoT-Geräten bzw. in eingebetteten Systemen. Damit sollen die Geräte befähigt werden, maschinelles Lernen zu nutzen und umzusetzen.

Aufgrund der Gegebenheiten in solchen Geräten bestehen andere Voraussetzungen für das maschinelle Lernen als bei anderen Anwendungsfällen. Da die Geräte im Normalfall mit einem niedrigen Energiebedarf betrieben werden, muss diese Prämisse auch auf die Rechenkapazitäten zur Lösung der Probleme im Bereich des maschinellen Lernens zutreffen. Die große Besonderheit bei diesem Ansatz liegt in der Ressourcenbeschränkung im Sinne eines beschränkten Arbeitsspeichers sowie einer beschränkten Rechenleistung der Mikrocontroller.

Es besteht keine einheitliche Definition von TinyML-Geräten, jedoch erfolgt die Kategorisierung oftmals für Geräte mit einem Arbeitsspeicher unter einem Megabyte und einer Leistungsaufnahme von weniger als einem Milliwatt.

Wie funktioniert das Modell?

Da das Training der Machine Learning Modelle in der Regel rechenintensiv ist, muss das Training in einer externen Umgebung durchgeführt werden. Nach dem externen Training des Modells wird der Algorithmus einmalig auf das TinyML-Gerät übertragen. Im Optimalfall ist das Gerät für die Inferenz, d. h. für den Produktivbetrieb in der Lage, die Machine Learning Aufgaben autark und ohne Cloud-Kommunikation auszuführen. Gebräuchliche Frameworks und Tools auf dem Gebiet des maschinellen Lernens wie TensorFlow versagen für den Anwendungsfall auf TinyML-Geräten, weshalb dafür spezielle Bibliotheken und Frameworks entwickelt wurden.

Vorteile von TinyML

Die Vorteile von TinyML liegen vorwiegend in der möglichen Autarkie des Systems. Aufgrund der Option der lokalen Datenverarbeitung entfällt die Notwendigkeit einer Internetverbindung mit hoher Bandbreite. Gleichzeitig reduzieren sich dadurch auch die Latenzzeiten. Da die Datenübermittlung zwischen verschiedenen Geräten oder Systemen entfällt, hat TinyML auch hohe Ansprüche auf dem Gebiet der Privatsphäre und des Datenschutzes. Aufgrund des geringen Energiebedarfs kann TinyML auf batteriebetriebenen Geräten betrieben werden.

Use Cases und Beispiele

Die Anwendungsfelder von TinyML sind sehr vielfältig. Vor allem Applikationen auf Mikrocontrollern sind häufig verbreitet, da diese universell eingesetzt werden können. Oftmals funktionieren sie auch in Kombination mit anderen Anwendungen wie beim sogenannten Keyword-Spotting bzw. Wakeword-Detection von Sprachassistenten. Wird ein Keyword (z. B. „Hey Siri“ oder „Okay Google“) erkannt, schaltet sich die Haupt-CPU des Gerätes ein, während für das dauerhafte Filtern der Aktivierungskommandos TinyML zuständig ist. Ein ähnliches Beispiel beschreibt die Überwachung von Beschleunigungssensoren und Gyroskopen durch TinyML in Smartphones, wodurch erkannt wird, ob ein Gerät in die Hand genommen wird und anschließend die Haupt-CPU aktiviert.

Einen weiteren Anwendungsfall beschreibt die Objekt- und Bilderkennung von Überwachungskameras oder die Geräuschanalyse. Auf dem Gebiet der Brandprävention kann TinyML eingesetzt werden, um Rauchmelder dahin gehend zu trainieren, echte Brände von Fehlalarmen zu unterscheiden. Auch für Mikrodrohnen-Anwendungen wird TinyML eingesetzt, indem die Drohnen in der Lage sind, selbstständig in der Umgebung zu navigieren. Aufgrund der besonderen Voraussetzungen von TinyML werden spezielle Frameworks und Bibliotheken zur Umsetzung benötigt. Beispiele hierfür sind etwa TensorFlow Lite, uTensor oder CMSIS-NN (Common Microcontroller Software Interface Standard – Neural Network).

Transfer Learning

Was ist Transfer Learning?

Transfer Learning beschreibt eine Methode im Bereich des Machine Learning, welche vor allem für Klassifizierungsaufgaben Anwendung findet. Transfer Learning basiert dabei auf der Vorgehensweise, dass der Algorithmus ein bereits vortrainiertes Modell (z. B. eines künstlichen neuronalen Netzes) eines ähnlichen oder auch fremden Anwendungsfalles nutzt und diesen um zusätzliche Schichten ergänzt oder erweitert, welche auf den speziellen Anwendungsfall abzielen.

Der Unterschied des Transfer Learning zu anderen Lernmethoden des Machine Learning besteht darin, dass das Modell nicht von Grund auf neu trainiert werden muss, sondern auf bereits trainierte Daten aufsetzen kann. Das vortrainierte Modell wird im Normalfall unverändert übernommen, weshalb man dabei auch von gefrorenen Schichten bzw. „frozen layers“ spricht. Das trainierte Modell wird dann auf das Modell des konkreten Anwendungsfalles transferiert und anschließend durch das Hinzufügen weiterer Schichten konkretisiert. Diese Vorgehensweise hat vor allem den Vorteil in der Zeit- und Ressourcenersparnis, da ein bestimmter Teil des Trainings übersprungen und bereits auf einem vortrainierten Modellstand aufgesetzt werden kann.

Die Methode findet häufig in der Objekterkennung und Bilddatenanalyse Anwendung. Als greifbares Beispiel für die Funktion der Vorgehensweise dieser Lernmethode wird oftmals der Fall genannt, dass ein vortrainiertes Modell grundsätzlich Hunde auf Fotos identifizieren bzw. von anderen Tieren oder Objekten unterscheiden kann. Im Rahmen des Transfer Learning findet nun durch Erweiterung des Klassifizierungs-Layers statt, welche auf das Training für die Fähigkeit zur Unterscheidung der einzelnen Hunderassen abzielt. Ähnliches lässt sich auch in einem vorgelagerten Schritt anwenden, indem Modelle darauf trainiert wurden, etwa Hunde von Katzen zu unterscheiden bzw. generell Lebewesen von Objekten.

Was sind Anwendungen und Beispiele?

Die Anwendungsgebiete von Transfer Learning sind vielfältig, wobei der aktuell größte Anwendungsbereich in der Bilddatenanalyse liegt. Da Videos lediglich eine Aneinanderreihung von einzelnen Bildern sind, kann die Methode klarerweise auch auf Videos angewandt werden. Damit Maschinen die Informationen auf Bildern „sehen“ bzw. verstehen können, müssen diese vorerst für Maschinen lesbar gemacht werden, welches dem Bereich der Computer Vision zuzuschreiben ist.

Ein bekanntes Modell auf dem Bereich der Bildklassifizierung stellt der Vision Transformer (ViT) dar, welcher den Grundstein für die weitere Datenverarbeitung legt. Ein weiteres Anwendungsgebiet stellt die Sprachanalyse, aber auch die Verarbeitung von Textdaten dar. Im Teilbereich des Natural Language Processing (NLP) wird die menschliche Sprache für Maschinen verständlich gemacht, der die Basis für weitere Anwendungen des Transfer Learning legt. Ein sehr großes und nützliches Anwendungsfeld stellt die medizinische Bildklassifizierung bzw. Bildanalyse dar. Vor allem in der computergestützten Gewebeerkennung in Verbindung mit bildgebenden Untersuchungsmethoden wie CT oder MRT findet Transfer Learning Anwendung. Mithilfe der Lernmethode können Auffälligkeiten in Gewebeabbildungen identifiziert sowie kategorisiert bzw. klassifiziert werden, welche beispielsweise auf Tumore, Krebs oder andere Krankheiten hinweisen können.

Einige Programmbibliotheken und Frameworks wie Keras oder PyTorch bieten einfache Implementierungsmöglichkeiten von vortrainierten Modellen, die als Aufsatzpunkte für das Transfer Learning genutzt werden. Auf dem Gebiet der Bildererkennung können beispielsweise ResNet von Microsoft oder Inception von Google genannt werden. Diese Modelle werden in die Bibliothek implementiert und anschließend im Rahmen des sogenannten „Fine-Tunings“ derart verändert bzw. erweitert, damit das Modell für den konkreten Anwendungsfall verwendet werden kann.

Transformer (Maschinelles Lernen)

Was ist ein Transformer?

Transformer im Bereich des maschinellen Lernens sind eine Form von neuronalen Netzen, welche sich einen sogenannten Attention-Mechanismus (dt. Aufmerksamkeit) zunutze machen. Dabei wird ein Teil einer Eingangsgröße (beispielsweise ein Wort, eine Wortsilbe eines Satzes oder ein Pixel eines Bildes) mit den restlichen Teilen einer Eingangsgröße in Beziehung gestellt.

Ziel dieser Methode ist es, dass das jeweilige Wort oder Pixel durch die Kombination mit den restlichen Bestandteilen zum Verständnis der Gesamtdaten beiträgt. Beispielsweise ist bei Suchanfragen im Internet das Verständnis von Pronomen und Präpositionen in Zusammenhang mit Nomen elementar, da nur so eine Erfassung des Sinnes der Gesamtsuche möglich und zielführend ist.

Transformer finden sich vorwiegend bei Anwendung im Bereich des Deep Learning zur Texterkennung, -verarbeitung oder der Bilderkennung.

Architektur im Deep Learning

Die Struktur eines Transformer im maschinellen Lernen ist grundsätzlich in einen Encoder und einen Decoder unterteilt. Die Abfolge des Datendurchlaufs im Encoder und Decoder stellt sich wie folgt dar.

Im ersten Prozessschritt wird der Input durch das „Input Embedding“ in verarbeitbare Daten in Form von Vektoren transferiert. Im nächsten Schritt werden dem Transformer die Position der Vektoren (bzw. Wörter in einem Satz) durch das „Positional Encoding“ in Form einer Indexierung mitgeteilt. Daraufhin folgt das Durchlaufen des ersten Attention-Mechanismus. In dieser Multi-Head-Attention-Schicht vergleicht der Transformer die aktuell verarbeitenden Daten (z. B. ein Wort) mit allen anderen Daten (z. B. die restlichen Wörter einen Satzes) und ermittelt die Relevanz. Aufgrund dieses Selbstvergleichs wird diese Schicht auch „Self-Attention“ genannt.

Nun folgt der Schritt „Add & Norm“ in welchem die Ursprungsdaten vor Durchlaufen der Multi-Head-Attention-Schicht unverändert kopiert und mit den verarbeiteten Daten aus der Multi-Head-Attention-Schicht addiert und normiert werden. Die letzte Schicht des Encoders bildet die „Feed-Forward-Schicht“, welche durch ein neuronales Netz mit einer Input-, einer verdeckten und einer Output-Schicht dargestellt wird und die Werte durch eine nicht lineare Aktivierungsfunktion auf einen Bereich von 0 bis unendlich umwandelt. Abgeschlossen wird die Encoder-Verarbeitung mit einem abermaligem und zuvor beschriebenen „Add & Norm“-Schritt.

Im nächsten Prozessschritt startet der Decoder, indem eine Output-Sequenz initialisiert und positioniert wird. Dies erfolgt analog zum Encoder durch das „Output Embedding“ und „Positional Encoding“. Gefolgt wird dieser Schritt vom Durchlaufen der „Masked Multi-Head Attention“-Schicht, welche vor allem in der Trainingsphase des Modells von Relevanz ist. Hier lernt der Decoder aus einem Ist-Inputnden Trainingsdaten einen Soll-Output zu generieren bzw. sich diesen anzunähern. Aufgrund der parallelen Arbeitsweise des Transformers im maschinellen Lernen liegt dem Decoder bereits im Trainingsmodus die jeweilige Position der einzelnen Outputs-Sequenz vor, wodurch die zukünftige Position der Output-Sequenz maskiert bzw. verschleiert wird. Davon hat diese Schicht auch ihren Namen.

Nach dieser Schicht folgt wieder ein „Add & Norm“ Schritt, bevor die Daten an die Multi-Head-Attention-Schicht weitergegeben werden. Diese Schicht wird auch als „Encoder-Decoder Attention“ bezeichnet, da hierbei eine Verbindung zwischen dem Encoder und dem Decoder hergestellt wird. Sie verbindet somit die im Encoder durchlaufenen Input-Sequenzen mit den bisher generierten Output-Sequenzen und wird deshalb auch als „Cross-Attention“-Verbindung bezeichnet. Dieser Mechanismus wird benötigt, um beispielsweise im Rahmen der Übersetzung eines Textes in eine andere Sprache zu errechnen, welches Wort der Zielsprache als Nächstes im Satz gereiht werden sollte. Gefolgt wird diese Schicht wieder von einem „Add & Norm“ Schritt, einer „Feed-Forward-Schicht“, welche dem Vorgehen aus dem Encoder gleicht, sowie einem abermaligen „Add & Norm“ Schritt. Im vorletzten Schritt des Transformers im Deep Learning werden in der linearen Schicht die bis dato verarbeiteten Daten/Vektoren in einen größeren Vektor überführt, um so beispielsweise das gesamte Vokabular einer Zielsprache im Rahmen einer Übersetzung darstellen zu können. In der abschließenden Softmax-Funktion wird für jede Output-Sequenz eine Wahrscheinlichkeit zwischen 0 und 1 errechnet und so der wahrscheinlichste endgültige Output errechnet.

Temporal Difference Learning

Was ist Temporal Difference Learning?

Temporal Difference Learning (auch TD-Learning genannt) beschreibt eine Ausführung des sogenannten bestärkenden Lernen bzw. verstärkenden Lernen (engl. Reinforcement Learning), welches neben dem überwachten Lernen (engl. Supervised Learning) und dem unüberwachten Lernen (engl. Unsupervised Learning) eine der drei Lernmethoden des Machine Learnings darstellt.

Wie bei anderen Methoden des bestärkenden Lernens sind auch beim Temporal Difference Learning für den Lernalgorithmus keine Ausgangs- oder Trainingsdaten notwendig. Das System bzw. ein Software-Agent lernt anhand eines Trial-and-Error-Verfahrens, indem er für eine Folge von Entscheidungen/Aktionen eine Belohnung erhält und seine zukünftige Strategie entsprechend ausrichtet und anpasst. Das Modell des Algorithmus basiert auf dem Markow-Entscheidungsproblem, bei welchem sich der Nutzen für einen Software-Agenten aus einer Folge von Aktionen ergibt.

Im Gegensatz zu anderen Lernmethoden aktualisiert sich die Bewertungsfunktion beim TD-Learning mit der entsprechenden Belohnung nach jeder einzelnen Aktion und nicht erst nach Durchlaufen einer Sequenz von Aktionen. Dadurch nähert sich die Strategie iterativ an die Optimalfunktion an. Dieses Verfahren wird als Bootstrapping bzw. Bragging bezeichnet und hat das Ziel, die Varianz bei der Lösungsfindung zu verringern.

Welche Algorithmen existieren im TD-Learning?

Innerhalb des Temporal Difference Learning existieren mehrere Algorithmen zur Umsetzung der Methode.

Beim Q-Learning bewertet der Software-Agent statt des Nutzenniveaus eines Zustandes den Nutzen einer durchzuführenden Aktion und wählt jene Aktion mit dem größten Nutzenzuwachs auf Basis der aktuellen Bewertungsfunktion. Angesichts dessen spricht man beim Q-Learning von einer „action-value function“ anstatt einer „state-value function“.

Auch bei SARSA (Abkürzung für „state-action-reward-state-action“) handelt es sich um einen Algorithmus mit einer action-value function. Neben dieser Gemeinsamkeit mit Q-Learning unterscheidet sich SARSA von Q-Learning dahin gehend, dass es sich bei Q-Learning um einen off-policy-Algorithmus handelt, bei SARSA hingegen um einen on-policy-Algorithmus. Bei einer off-policy wird zur Aktionsfindung der nächste Zustand berücksichtigt, während bei on-policy der Algorithmus sowohl den nächsten Zustand als auch seine aktuelle Aktion berücksichtigt und der Agent somit zur Berechnung der Folgeaktion seiner Strategie treu bleibt. Die bisher betrachteten Algorithmen berücksichtigen lediglich die unmittelbare Belohnung der nächsten Aktion.

Bei sogenannten TD n-step Methoden werden hingegen die Belohnungen der n nächsten Schritte einbezogen.

Bei TD-Lambda TD(λ) handelt es sich um eine Erweiterung des Temporal Difference Learning Algorithmus. Dabei besteht die Möglichkeit, dass nicht lediglich ein einziger Zustand zur Anpassung der Bewertungsfunktion führt, sondern innerhalb einer Sequenz die Werte mehrerer Zustände angepasst werden können. Die Zerfallsrate λ regelt für jeden einzelnen Zustand das Ausmaß der möglichen Änderung, wobei sich diese Größe mit jeder Iteration vom betrachteten Zustand entfernt und exponentiell abnimmt. TD-Lambda lässt sich auch auf die Methoden von Q-Learning und SARSA anwenden.

Wofür werden diese Algorithmen in der Praxis genutzt?

Die Anwendungsbereiche von Temporal Difference Learning im Rahmen der Reinforcement Learning Methoden sind vielfältig. Ein plakatives Nutzungsbeispiel ist dabei das Spiel TD-Gammon, welches sich am Spiel Backgammon orientiert und durch einen TD-Lambda-Algorithmus entwickelt wurde. Ähnliches gilt auch für das Spiel AlphaGo, welches auf dem japanischen Brettspiel Go basiert.

Ein Anwendungsfall von Q-Learning findet sich im Rahmen des autonomen Fahrens im Straßenverkehr, indem das System selbstständig kollisionsfreie Überholstrategien und Spurwechsel erlernt und anschließend eine konstante Geschwindigkeit beibehält.

SARSA lässt sich hingegen beispielsweise dafür einsetzen, Kreditkartenbetrug aufzudecken. Die SARSA-Methode errechnet den Algorithmus zur Erkennung von Betrug, während das Klassifizierungs- und Regressionsverfahren eines Random-Forest die Genauigkeit der Vorhersage von Kreditkartenausfällen optimiert.

Texterkennung (Optical Character Recognition)

Was ist Texterkennung?

Die optische Texterkennung (im Englischen Optical Character Recognition, kurz OCR) wandelt analogen Text in einen editierbaren, digitalen Text um. So wird zum Beispiel ein ausgedrucktes Formular eingescannt und von der OCR-Software in ein Textdokument am Computer umgewandelt, welches danach durchsucht, bearbeitet und gespeichert werden kann.

Mo­derne OCR-Texterkennung ist in der Lage, über 99 % der Textinformationen richtig zu erkennen. Wörter, die nicht erkannt werden, werden vom Programm gekennzeichnet und durch den Nutzer korrigiert.

Um die Ergebnisse weiter zu verbessern, wird OCR-Texterkennung oft mit Methoden der Kontextanalyse (im Englischen Intelligent Character Recognition, kurz ICR) ergänzt. Wenn die Texterkennungssoftware zum Beispiel „2immer“ erkannt hat, wird die „2“ zu einem „Z“ korrigiert, wodurch das im Kontext sinnhafte Wort „Zimmer“ ausgegeben wird.

Daneben gibt es auch Intelligent Word Recognition (IWR), welche die Probleme bei der Erkennung von Fließhandschriften lösen soll.

Einige Beispiele für kostenlose und kostenpflichtige Optical-Character-Recognition-Software (in alphabetischer Reihenfolge):

  • ABBYY FineReader PDF
  • ABBYY FlexiCapture
  • Adobe Acrobat Pro DC
  • Amazon Textract
  • Docparser
  • FineReader
  • Google Document AI
  • IBM Datacap
  • Klippa
  • Microsoft OneNote
  • Nanonets
  • OmniPage Ultimate
  • PDF Reader
  • Readiris
  • Rossum
  • SimpleOCR
  • Softworks OCR
  • Soda PDF
  • Veryfi

Eine OCR-Texterkennung mit Python oder C# selbst schreiben

Es ist möglich, mit den Programmiersprachen Python oder C# selbst Texterkennung in Skripte einzubauen. Dafür wird die kostenlose OCR-Bibliothek Tesseract benötigt, welche für Linux und Windows funktioniert.

Diese Herangehensweise bietet eine individuell anpassbare Lösung zur Texterkennung, sowohl für Scans als auch für Fotos.

Wie funktioniert eine Optical-Character-Recognition-Software?

Die Grundlage bildet die Rastergrafik (Bildkopie des Texts), welche mithilfe eines Scanners oder einer Kamera vom physisch vorhanden Text, zum Beispiel einer Buchseite, erstellt wird. Die Texterkennung eines Fotos ist hierbei meist schwieriger, als bei einem Scan, bei dem die Bildkopie sehr ähnlich gute Voraussetzungen liefert. Bei einem Foto können Belichtung und Aufnahmewinkel des Dokuments Probleme bereiten, welche aber wiederum durch den Einsatz von KI berichtigt werden können.

Danach arbeitet die OCR-Software in 3 Schritten:

1. Erkennung der Seiten- und Gliederungsstruktur

Die eingescannte Grafik wird auf dunkle und helle Bereiche analysiert. Dabei werden im Normalfall die dunklen Bereiche als zu erkennende Zeichen und die hellen Bereiche als Hintergrund identifiziert.

2. Muster- oder Merkmalserkennung

Darauf folgt die Weiterverarbeitung der dunklen Bereiche, um alphabetische Buchstaben oder numerische Ziffern zu finden. Die Vorgehensweise der verschiedenen OCR-Lösungen unterscheidet sich dabei, ob jeweils nur ein Zeichen, ein Wort oder ein Textblock auf einmal erkannt wird. Die Zeichen werden mithilfe von Muster- oder Merkmalserkennung identifiziert:

Mustererkennung: Das OCR-Programm vergleicht die zu prüfenden Zeichen mit seiner Datenbank von Textbeispielen in verschiedenen Schriftarten und Formaten und erkennt dabei gleiche Muster.

Merkmalserkennung: Das OCR-Programm wendet Regeln bezüglich der Merkmale eines bestimmten Buchstabens oder einer Zahl an. Merkmale können beispielsweise die Anzahl der abgewinkelten Linien, gekreuzte Linien oder Kurven in einem Zeichen sein.

Zum Beispiel besteht die Information für den Buchstaben “F” aus einer langen Senkrechten und 2 kurzen, rechtwinkligen Linien.

3. Codierung in Ausgabeformat und Fehlerkontrolle

Je nach Anwendungsgebiet und genutzter Software wird das Dokument in unterschiedlichen Formaten gespeichert. Beispielsweise wird es als Word- oder PDF-Datei ausgegeben, oder direkt in einer Datenbank gespeichert.

Zudem erfolgt im letzten Schritt auch die Fehlerkontrolle durch den Anwender, um nicht erkannte Wörter oder Zeichen manuell zu korrigieren.

Wie unterstützt KI die Texterkennung?

Zum einen unterstützt Künstliche Intelligenz (KI) bei der Texterkennung schon bei der Optimierung der Rastergrafik, vor allem bei Fotos. Ist das einzulesende Dokument geknickt oder zerknittert, so ist der Text teilweise zu schräg oder verzerrt, wodurch die OCR-Software Probleme bei der Bearbeitung bekommt. Bei Fotos können auch eine schlechte Belichtung und ein unpassender Aufnahmewinkel zu schlechten Bedingungen für die OCR-Software führen.

Mithilfe von KI kann das Dokument in seiner Struktur „geglättet“, die Beleuchtung optimiert und der Winkel korrigiert werden und bietet damit wieder gute Voraussetzungen für die Texterkennung.

Zum anderen verbessert KI die Resultate der Texterkennung an sich. Mit jedem Text und jeden korrigierten Fehler lernt die Künstliche Intelligenz dazu. Damit minimieren sich immer weiter die Fehler bei der Texterkennung und die OCR-Software liefert stetig bessere Ergebnisse.