DESIGN-Praxis Schlüsselwortsuche auf Mikrocontrollern

Die Implementierung einer KI-basierten Spracherkennung auf einem Mikrocontroller wird eine gängige Entwicklungsaufgabe. Die Arbeit klassifiziert unterschiedliche Verfahren nach ihrer Trefferwahrscheinlichkeit, Rechen- und Speicherressourcen und zeigt ihre Skalierbarkeit auf.

Das Erkennen von Schlüsselwörtern ist für sprachbasierte HMIs wesentlich. Eine angenehme Nutzererfahrung fordert dazu hohe Trefferraten und eine gewisse Echtzeitfähigkeit.
Wegen ihrer hohen Trefferrate gegenüber konventionellen Verfahren sind dazu neuerdings neuronale Netze modern. Notwendigerweise müssen solche Algorithmen auf einem Mikrocontroller permanent laufen und daher energieeffizient arbeiten. Gleichzeitig sind Speicher- und Rechenressourcen dabei beschränkt.
Diese Arbeit stellt eine Architekturevaluation und -exploration für solche Algorithmen auf einem Mikrocontroller unter beschränkten Ressourcen vor. Dabei wird gezeigt, dass unterschiedliche Algorithmen derart optimiert werden können, dass sie ohne Einbussen in der Trefferwahrscheinlichkeit auf einem ressourcenbeschränkten Mikrocontroller laufen.

Kognitive Aufgaben wie Sprach- oder Bilderkennung bewältigen heutzutage Deep-Learning-Algorithmen mit menschlicher Trefferwahrscheinlichkeit. Auf dieser Evolutionsstufe wird die Spracherkennung im Verbrauchersegment zunehmend populär. Allerdings sind solche permanenten Aufzeichnungen energieineffizient. Zudem kann simultane Übertragung einiger Millionen Audiostreams in die Cloud einen Netzwerkzusammenbruch bewirken. Daher wird so ein kognitiver Dienst erst mit einem Schlüsselwort gestartet. Da zumindest diese Schlüsselworterkennung permanent läuft, sollte sie energieeffizient, aber zugleich präzise und latenzarm arbeiten.

Wegen dieser widersprüchlichen Anforderungen ist die Schlüsselwortsuche seit nahezu fünfzig Jahren ein sehr aktives Forschungsgebiet. Mit ihren Low-Power-Attributen eignen sich moderne Mikrocontroller zur Implementierung. 

Neuronale Netze im embedded-HMI bergen aber einige Herausforderungen: Üblicherweise besitzen Mikrocontroller einige hunderte Kilobyte Speicher.
Das gesamte NN einschließlich I/Os, Gewichten und Aktivierungsfunktionen muss darin Platz finden. Allerdings schränken Echtzeitanforderungen die Folgerungsanzahl eines neuronalen Netzes ein. Den selben Einschränkungen unterliegt eine Softwareexploration dieser Netzwerke.

In der Arbeit werden dazu gängige Algorithmen zur Spracherkennung mit dem Google Kommandosatz trainiert. Im Anschluß werden Trefferwahrscheinlichkeit, Speichertiefe und Operationen pro Folgerung verglichen. Zusätzlich wird ein neues SWS-Modell implementiert, das wie Googles MobileNet auf Faltungen basiert. Dieses Modell überragt die vorherigen in sämtlichen Aspekten. Die Architekturexploration arbeitet in, für generische Mikrocontroller, realistischen Ressourcenschranken. Code-, Modelldefinitionen und trainierte Modelle sind unter gitHub frei verfügbar [1].

Typischerweise extrahiert ein SWS-Algorithmus Merkmale aus dem Eingangssignal und übergibt diese an ein Neuronales Netz zur Folgerung (Bild 1). Ein Sprachsignal der Länge L wird dabei in überlappende Intervalle der Länge l geteilt, bei s Schritten entstehen damit T=(L-l)/s+1 Intervalle.  
Aus jedem Intervall werden dabei F Merkmale extrahiert, also insgesamt TxF Merkmale. Zur Extraktion dienen LFBE- und MFCC-Verfahren, letztendlich eine Art Spektraldarstellung des Eingangssignals. Die Merkmalsmatrix wird dann der Bewertung übergeben, welche die Wahrscheinlichkeiten zur Folgerung generiert.

Konventionelle Spracherkennung nutzt dagegen Hidden-Markov-Modelle und Viterbi-Dekodierung, ist schwierig trainierbar und rechenaufwendig.
Alternativen sind deskriptive Modelle oder rekursive Neuronale Netze (RNN). Die Steigerung der Trefferwahrscheinlichkeit bewirkt hier jedoch eine Latenzerhöhung.
Deep-Neural-Networks, mit durchgängig verbundenen Ebenen und linear gerichteter Aktivierungsfunktion, überragen die Trefferwahrscheinlichkeit der HMMs zu geringer Latenz. Unter approximativer Kompression der Gewichte eines DNNs wird ähnliche Trefferwahrscheinlichkeit zu geringeren Ressourcen erzielt. DNN-Methoden ignorieren aber Impulse bzw. Frequenzkorrelationen im Eingangssignal. Solche Korrelationen nutzen unterschiedliche Varianten der CNN-Algorithmen aus.

Die Stärken von CNN- und RNN-Methoden können kombiniert werden [2]:
Ein sogenanntes max-Pooling-Training mit langem Kurzzeitgedächtnis erzielt erhöhte Genauigkeit gegenüber Kreuz-Entropieverlust-trainierten DNNs.

Obwohl die Literatur einige NNs zur SWS diskutiert kann wegen der proprietären Trainingsdaten (z.B. TalkType oder Alexa) kein fairer Vergleich gezogen werden. Dies geht vor allem auf unterschiedliche Länge und Merkmale der Trainingswörter zurück. Die vorhandene Literatur zielte auch auf die Erhöhung der Trefferwahrscheinlichkeit und nicht auf die Implementierung einer unterliegenden Hardwareebene.

Deshalb wird im Folgenden die Auslastung dieser NN-Architekturen auf Mikrocontrollern betrachtet: Einschränkungen an Speicher- und Rechenleistung nehmen signifikanten Einfluss auf die Parametrierung eines Neuronalen Netzwerkes.