-
Verschiedene Ausführungsbeispiele betreffen allgemein Vorrichtungen und Verfahren zum Trainieren eines neuronalen Netzwerks zum Klassifizieren von Sequenzen von Sensordaten-Abtastwerten
-
Sensoren werden in zahlreichen Geräten, wie beispielsweise Smartphones, verschiedenen Wearables (z.B. am Körper und/oder Kopf getragenen Vorrichtungen), intelligenten Kopfhörern, etc., verwendet. Sensorsignale liegen oft als Zeitreihen (also Folgen von Abtastwerten über die Zeit) vor und können für verschiedene Zwecke verarbeitet werden. Ein Beispiel ist die Erkennung von Aktivitäten eines Benutzers aus Sensordaten eines Bewegungssensors. Beispielsweise kann eine Fitnessuhr eingerichtet sein, eine Aktivität eines Benutzers zu ermitteln und daraus einen Kalorienverbrauch zu schätzen. Ein Ansatz zur Erkennung von Aktivitäten aus Sensordaten-Zeitreihen ist die Verwendung maschineller Lernmodelle, die zur Durchführung einer entsprechenden Klassifikationsaufgabe trainiert werden. Herkömmliche maschinelle Lernmodelle für solche Anwendungen erfordern aber typischerweise eine große Menge stark gekennzeichneter Daten und auch ein komplettes Neutraining, wenn neue Aktivitäten ergänzt werden, die erkannt werden sollen. Darüber hinaus ist es auch schwierig, solche trainierten maschinellen Lernmodelle an neue Anwendungsfälle anzupassen. Es sind deshalb verbesserte Herangehensweisen zum Klassifizieren von Sensordaten-Zeitreihen (bzw. Sequenzen von Sensordaten-Abtastwerten) unter Verwendung maschineller Lernmodelle wünschenswert.
-
Gemäß verschiedenen Ausführungsformen wird ein Verfahren zum Trainieren eines neuronalen Netzwerks, um Sequenzen von Sensordaten-Abtastwerten, die jeweils Sensordaten-Abtastwerte von mehreren Messzeitpunkten enthalten, in mehrere Klassen zu klassifizieren, bereitgestellt, aufweisend: Beschaffen von Trainingsdaten für die mehreren Klassen, wobei die Trainingsdaten für jede Klasse der mehreren Klassen Sequenzen von Sensordaten-Abtastwerten, die zu der Klasse gehören und Sequenzen von Sensordaten-Abtastwerten, die zu einer anderen Klasse gehören, aufweisen, und Gruppieren der Sequenzen von Sensordaten-Abtastwerten zu Trainings-Tripletts, wobei jedes Triplett für eine jeweilige Klasse eine Sequenz von Sensordaten-Abtastwerten als Anker-Beispiel, eine Sequenz von Sensordaten-Abtastwerten als Positiv-Beispiel und eine Sequenz von Sensordaten-Abtastwerten als Negativ-Beispiel aufweist; und Trainieren des neuronalen Netzwerks durch
- Zuführen der Sequenzen von Sensordaten-Abtastwerten der Trainings-Tripletts zu dem neuronalen Netzwerk, wobei das neuronale Netzwerk Schichten zum Kombinieren von Sensordaten-Abtastwerten von unterschiedlichen Messzeitpunkten einer dem neuronalen Netzwerk zugeführten Sequenz von Sensordaten-Abtastwerten, und zur Erzeugung einer Einbettung der dem neuronalen Netzwerk zugeführten Sequenz von Sensordaten-Abtastwerten in einem Einbettungsraum aufweist und Anpassen des neuronalen Netzwerks zum Verringern des Werts einer Triplett-Verlustfunktion, die von den für die Anker-Beispiele, die Positiv-Beispiele und die Negativ-Beispiele der Trainings-Tripletts erzeugten Einbettungen abhängt.
-
Das oben beschriebene Verfahren erlaubt es, eine hohe Klassifikationsgenauigkeit mit nur einem Bruchteil des Datenvolumens erreichen wie herkömmliche neuronale Netze zur Klassifikation (z. B. 1.800 Sequenzen von Sensordaten-Abtastwerten statt ~21.000). In anderen Worten ermöglicht das oben beschriebene Verfahren eine effizientere Verallgemeinerung von Trainingsdaten und damit eine ökonomischere Nutzung von Trainingsdaten, was den Aufwand zur Erzeugung von Trainingsdaten (z.B. Kennzeichnung mit Ground Truth) verringert.
-
Im Folgenden werden verschiedene Ausführungsbeispiele angegeben.
-
Ausführungsbeispiel 1 ist das oben beschriebene Verfahren Trainieren eines neuronalen Netzwerks zum Klassifizieren von Sequenzen von Sensordaten-Abtastwerten.
-
Ausführungsbeispiel 2 ist das Verfahren nach Ausführungsbeispiel 1, wobei das Trainieren des neuronalen Netzwerks das Trainieren eines Autoencoders zum Erzeugen von Einbettungen und das Trainieren eines dichten neuronalen Netzwerks zum Trennen von Einbettungen von Anker-Beispielen und Negativ-Beispielen und zum Gruppieren von Anker-Beispielen und Positiv-Beispielen derselben Klasse aufweist und wobei das neuronale Netzwerk aus dem Encoder des Autoencoders gefolgt von dem dichten neuronalen Netzwerk gebildet wird.
-
Die Verwendung eines Autoencoders gewährleistet, dass die erzeugten Einbettungen aussagekräftig sind.
-
Ausführungsbeispiel 3 ist das Verfahren nach Ausführungsbeispiel 2, wobei der Autoencoder ein Long-Short-Term-Memory-Autoencoder ist.
-
Die Verwendung von Long-Short-Term-Memory-Elementen ermöglicht eine effektive Kombination von Sensordaten-Abtastwerten unterschiedlicher Zeitpunkte.
-
Ausführungsbeispiel 4 ist das Verfahren nach Ausführungsbeispiel 1, wobei das neuronale Netzwerk ein Konvolutionsnetzwerk ist und das Training ein Anpassen von Filtergewichten des Konvolutionsnetzwerks aufweist.
-
Ein Konvolutionsnetzwerk ist eine effektive Möglichkeit zum Extrahieren von Merkmalen und damit zum Erzeugen von Einbettungen.
-
Ausführungsbeispiel 5 ist ein Verfahren zum Konfigurieren eines Klassifizierers für Sequenzen von Sensordaten-Abtastwerten, aufweisend Trainieren eines neuronalen Netzwerks nach einem der Ausführungsbeispiel 1 bis 4 und Hinzufügen einer zusätzlichen Klasse zu den mehreren Klassen durch Empfangen mindestens einer zusätzlichen Sequenz von Sensordaten-Abtastwerten, die zu der zusätzlichen Klasse gehört und Erzeugen einer Einbettung für die zusätzliche Sequenz von Sensordaten-Abtastwerten durch Zuführen der zusätzlichen Sequenz von Sensordaten- Abtastwerten zu dem neuronalen Netzwerk.
-
Beispielsweise kann ein Klassifizierer durch Trainieren eines neuronalen Netzwerks initialisiert werden und danach (d.h. z.B. im Betrieb) durch ein oder mehrere Klassen, in die er klassifizieren kann, erweitert werden.
-
Ausführungsbeispiel 6 ist das Verfahren nach Ausführungsbeispiel 5, wobei das Hinzufügen einer zusätzlichen Klasse durchgeführt wird in Reaktion auf den Empfang einer zu klassifizierenden Sequenz von Sensordaten-Abtastwerten, deren Einbettung, die durch Zuführen der zu klassifizierenden Sequenz zu dem neuronalen Netzwerk erzeugt wird, einen Abstand zu den Einbettungen von Anker-Beispielen und/oder Positiv-Beispielen der mehreren Klassen hat, der größer ist als ein vorgegebener Schwellwert, wobei der Abstand gemäß einer vorgebbaren Abstandsfunktion bestimmt wird.
-
Es kann auf diese Weise automatisch erkannt werden, dass ein Benutzer beispielsweise eine neue Aktivität durchführt und entsprechend eine neue Klasse (für diese Aktivität) definiert werden. Der Schwellwert kann je nach Ausgestaltung des Einbettungsraums und der Abstände der Einbettungen der bestehenden Klassen gewählt werden.
-
Ausführungsbeispiel 7 ist das Verfahren nach Ausführungsbeispiel 5, wobei das Hinzufügen einer zusätzlichen Klasse Benutzer-initiiert erfolgt, indem der Benutzer spezifiziert, dass eine empfangene Sequenz zu einer zusätzlichen Klasse gehört.
-
Ein Benutzer kann somit im Betrieb wie gewünscht neue Klassen, z.B. zu erkennende Aktivitäten, hinzufügen.
-
Ausführungsbeispiel 8 ist ein Verfahren zum Klassifizieren einer Sequenz von Sensordaten mit Hilfe eines gemäß einem der Ausführungsbeispiele 1 bis 4 trainierten neuronalen Netzwerks, wobei das Verfahren aufweist Erzeugen einer Einbettung für die zu klassifizierende Sequenz durch Zuführen der zu klassifizierenden Sequenz von Sensordaten-Abtastwerten zu dem neuronalen Netzwerk und Zuordnen der zu klassifizierenden Sequenz zu der Klasse, für die die Trainingsdaten die Positiv-Beispiele und die Anker-Beispiele aufweisen, an deren Einbettungen die für die zu klassifizierende Sequenz erzeugte Einbettung gemäß einer vorgebbaren Abstandsfunktion am nächsten liegt.
-
Ausführungsbeispiel 9 ist ein Verfahren zum Klassifizieren einer Sequenz von Sensordaten-Abtastwerten mit Hilfe eines gemäß einem der Ausführungsbeispiele 1 bis 4 trainierten neuronalen Netzwerks und eines gemäß einem der Ausführungsbeispiele 5 bis 7 konfigurierten Klassifizierers, wobei das Verfahren aufweist Erzeugen einer Einbettung für die zu klassifizierende Sequenz durch Zuführen der zu klassifizierenden Sequenz von Sensordaten-Abtastwerten zu dem neuronalen Netzwerk und Zuordnen der zu klassifizierenden Sequenz zu der Klasse, für die die Trainingsdaten die Positiv-Beispiele und die Anker-Beispiele aufweisen, an deren Einbettungen die für die zu klassifizierende Sequenz erzeugte Einbettung am nächsten liegt, oder zu der zusätzlichen Klasse, falls die für die zu klassifizierende Sequenz erzeugte Einbettung näher an der Einbettung der zusätzlichen Klasse liegt, wobei die Abstände zwischen Einbettungen gemäß einer vorgebbaren Abstandsfunktion bestimmt werden.
-
Ausführungsbeispiel 10 ist das Verfahren nach einem der Ausführungsbeispiele 1 bis 4, 5 bis 7, 8 oder 9, wobei die Klassen Aktivitätsklassen von Benutzeraktivitäten sind.
-
Die oben beschriebene Herangehensweise ermöglicht insbesondere eine effektive Erkennung einer von einem Benutzer durchgeführten Aktivität sowie ein dateneffizientes und flexibles Training für diesen Anwendungsfall.
-
Ausführungsbeispiel 11 ist eine Vorrichtung aufweisend mindestens einen Sensor, der eingerichtet ist, Sensor-Abtastwerte zu erzeugen, insbesondere einen Inertialsensor, wie einen Beschleunigungssensor oder Drehratensensor, ein Magnetometer, einen Drucksensor, einen Temperatursensor, einen Feuchtigkeitssensor, einen Umweltpartikelsensor und/oder einen Gassensor, und eine Datenverarbeitungseinrichtung, die eingerichtet ist, ein Verfahren nach einem der Ausführungsbeispiele 1 bis 4, 5 bis 7, 8 oder 9 auszuführen.
-
Ausführungsbeispiel 12 ist die Vorrichtung nach Ausführungsbeispiel 11, wobei die Vorrichtung eine am Körper oder am Kopf tragbare Vorrichtung ist.
-
Ausführungsbeispiel 13 ist ein Computerprogramm, aufweisend Programminstruktionen, die, wenn sie von ein oder mehreren Prozessoren ausgeführt werden, die ein oder mehreren Prozessoren dazu bringen, ein Verfahren gemäß einem der Ausführungsbeispiele 1 bis 4, 5 bis 7, 8 oder 9 durchzuführen.
-
Ausführungsbeispiel 14 ist ein Computer lesbares Speichermedium, auf dem Programminstruktionen gespeichert sind, die, wenn sie von ein oder mehreren Prozessoren ausgeführt werden, die ein oder mehreren Prozessoren dazu bringen, ein Verfahren gemäß einem der Ausführungsbeispiele 1 bis 4, 5 bis 7, 8 oder 9 durchzuführen.
-
Ausführungsbeispiele der Erfindung sind in den Figuren dargestellt und werden im Folgenden näher erläutert. In den Zeichnungen beziehen sich gleiche Bezugszeichen überall in den mehreren Ansichten allgemein auf dieselben Teile. Die Zeichnungen sind nicht notwendig maßstabsgerecht, wobei der Schwerpunkt stattdessen allgemein auf die Darstellung der Prinzipien der Erfindung liegt.
- 1 zeigt eine Sensorvorrichtung.
- 2 zeigt das Training eines Triplett-Netzwerks.
- 3 veranschaulicht die Trennung von Positiv-Einbettung und Negativ-Einbettung im Einbettungsraum.
- 4 veranschaulicht das Bilden von Clustern von Einbettungen im Einbettungsraum.
- 5 zeigt eine Architektur zur Klassifikation von Sequenzen von Sensordaten-Abtastwerten gemäß einer ersten Ausführungsform.
- 6 zeigt eine Architektur zur Klassifikation von Sequenzen von Sensordaten-Abtastwerten gemäß einer zweiten Ausführungsform.
- 7 zeigt ein Ablaufdiagramm für ein Verfahren zum Klassifizieren von Sequenzen von Sensordaten-Abtastwerten, die jeweils Sensordaten-Abtastwerte von mehreren Messzeitpunkten enthalten, in mehrere Klassen.
-
Die verschiedenen Ausführungsformen, insbesondere die im Folgenden beschriebenen Ausführungsbeispiele, können mittels ein oder mehrerer Schaltungen implementiert werden. In einer Ausführungsform kann eine „Schaltung“ als jede Art von Logik-implementierender Entität verstanden werden, welche Hardware, Software, Firmware oder eine Kombination davon sein kann. Daher kann in einer Ausführungsform eine „Schaltung“ eine hartverdrahtete Logikschaltung oder eine programmierbare Logikschaltung, wie beispielsweise ein programmierbarer Prozessor, zum Beispiel ein Mikroprozessor sein. Eine „Schaltung“ kann auch Software sein, die von einem Prozessor implementiert bzw. ausgeführt wird, zum Beispiel jede Art von Computerprogramm. Jede andere Art der Implementierung der jeweiligen Funktionen, die im Folgenden ausführlicher beschrieben werden, kann in Übereinstimmung mit einer alternativen Ausführungsform als eine „Schaltung“ verstanden werden.
-
1 zeigt eine Sensorvorrichtung 100.
-
Die Sensorvorrichtung 100 ist beispielsweise ein Wearable (d.h. eine Körper und/oder Kopf getragene Vorrichtung). Für die folgenden Beispiele wird angenommen, dass die Sensorvorrichtung 100 eine Fitnessuhr ist, sie kann aber auch eine andere Vorrichtung wie z.B. ein Kopfhörer oder eine Datenbrille (Smart Glasses) sein.
-
Die Sensorvorrichtung 100 weist einen Sensor (oder eine Sensoranordnung) 101 gemäß verschiedenen Ausführungsformen auf. Der Sensor 101 kann ein oder mehrere Sensorelemente aufweisen. Zum Beispiel kann der Sensor 101 ein oder mehrere Sensorelemente aufweisen von: Einem Beschleunigungssensor, einem Drehratensensor, einem Magnetfeldsensor, einem Drucksensor, einem Berührungssensor, einen Pulssensor, einem Lagesensor etc. Zum Beispiel kann er ein Beschleunigungssensorelement aufweisen, das eingerichtet ist, eine Beschleunigung in jede der drei Raumrichtungen (z.B. einen Beschleunigungsvektor) zu ermitteln. Er kann auch ein Drehratensensorelement aufweisen, das eingerichtet ist, eine Drehrate in jede der drei Raumrichtungen (z.B. einen Drehratenvektor) zu ermitteln. Er kann auch ein Magnetfeldsensorelement aufweisen, das eingerichtet ist, ein Magnetfeld (z.B. eine Magnetfeldänderung) in jede der drei Raumrichtungen (z.B. einen Magnetfeldvektor) zu ermitteln. Ein Drucksensorelement des Sensors 101 kann eingerichtet sein, einen Druck (z.B. einen skalaren Druckwert) zu detektieren. Ein Pulssensorelement kann den Puls eines Benutzers messen, der die Sensorvorrichtung 100 trägt. Gemäß verschiedenen Ausführungsformen kann mindestens ein Sensorelement des Sensors 101 ein mikromechanisches Sensorelement sein.
-
Der Sensor erfasst mit dem ein oder mehreren Sensorelemente ein Sensorsignal. Dies bedeutet, dass er zu Abtastzeitpunkten Sensor-Abtastwerte (auch als Sensordaten-Samples bezeichnet) ermittelt. Je nach Anzahl und Art der Sensorelemente weist der Sensor-Abtastwert mehrere reellwertige Komponenten auf, z.B. eine oder mehrere Komponenten für eine Beschleunigung (z.B. je Raumrichtung), eine Komponente für den Puls, etc.
-
Über die Zeit betrachtet bilden die Sensor-Abtastwerte eine Zeitreihe. Die Zeitreihe kann entsprechend einem Zeitfenster in Sequenzen von Sensordaten-Abtastwerten unterteilt werden. Beispielsweise ist die Abtastfrequenz 50Hz und die Fensterlänge 4s, sodass jede Sequenz von Sensordaten-Abtastwerten 200 Sensor-Abtastwerte (jeder mit möglicherweise mehreren Komponenten) aufweist.
-
Gemäß einem Anwendungsbeispiel trägt ein Benutzer die Sensorvorrichtung 100 und die Sensorvorrichtung soll aus dem Sensorsignal eine Aktivität des Benutzers ermitteln, um z.B. eine Kalorienverbrauch des Benutzers zu schätzen. Dazu weist die Sensorvorrichtung 100 eine Datenverarbeitungseinrichtung 102 auf, die eingerichtet ist, aus einer vom Sensor 101 erzeugten Sequenz von Sensordaten-Abtastwerten eine aktuelle Aktivität des Benutzers zu schätzen. Die Datenverarbeitungseinrichtung 102 tut dies mit einem maschinellen Lernmodell 103, das Sequenzen von Sensordaten-Abtastwerten, die man ihr zuführt, klassifiziert, wobei jede Klasse einer Aktivität zugeordnet ist (z.B. „Joggen“, „Schwimmen“, „Gehen“, „Sit-Ups“ etc.).
-
Dafür muss das maschinelle Lernmodell 103 (beispielsweise ein neuronales Netzwerk) geeignet trainiert werden. Es ist wünschenswert, dass neue Aktivitäten hinzugefügt werden. Beispielsweise hat ein Benutzer eine Fitnessuhr gekauft, und diese soll in die Lage versetzt werden, dass sie auch die Aktivität „Rollschuhfahren“ erkennt. Gemäß verschiedenen Ausführungsformen wird ein maschinelles Lernmodell bereitgestellt, das es nicht erfordert, dass es in einem solchen Fall komplett neu trainiert werden muss. Dies bedeutet, dass das bereitgestellte maschinelle Lernmodell trainiert werden kann, neue (bisher ungesehene Klassen) zu erkennen, ohne dass das gesamte maschinelle Lernmodell (oder auch ein bestimmter Teil) neu trainiert werden muss.
-
Gemäß verschiedenen Ausführungsformen wird ein Few-Shot-Lernen mit einer Triplett-Netzwerkarchitektur zur Klassifikation von Sequenzen von Sensordaten-Abtastwerten verwendet, d.h. auf Daten im Zeitbereich angewendet
-
Few-Shot-Lernen ist eine Technik, die nur einige wenige Stichproben aus einem Datensatz verwendet. Es dient dazu, Ähnlichkeiten zwischen Trainingselementen (d.h. Trainingsbeispielen), die zu derselben Klassen gehören, innerhalb eines Satzes von Trainingsbeispielen zu finden. Diese Technik nutzt das Potenzial von Deep Learning-Architekturen, um markante Merkmale innerhalb der Eingabedaten zu extrahieren. Die Merkmale gemeinsamer Klassen werden dann zu sogenannten „Einbettungen“ gruppiert, die entsprechende Klassen auf eine andere, abstraktere Weise repräsentieren.
-
Menschen können neue Objektklassen leicht aus sehr wenigen Beispielen erkennen. Im Gegensatz dazu benötigen die meisten maschinellen Lernverfahren um Größenordnungen mehr Daten, um eine ähnliche Leistung zu erzielen. Das Ziel des Few-Shot-Lernens ist es, die menschliche Fähigkeit zu imitieren und neue, ungesehene Daten zu klassifizieren, wenn nur wenige Trainingsbeispiele zur Verfügung stehen. Das Konzept des Few-Shot-Lernens eignet sich, wenn Trainingsdaten schwer zu finden sind oder der Aufwand für das Kennzeichnen von Daten (d.h. das Versehen von Trainings-Eingabedaten mit der Ground-Truth, d.h. der korrekten Klasse) groß ist.
-
Ein Beispiel ist eine N-Wege-K-Shot-Klassifikation, bei der das Ziel darin besteht, zwischen N Klassen mit K Trainingsbeispielen pro Klasse unterscheiden zu lernen. Für eine typische Problemgröße besteht das Ziel darin, zwischen N=15 Klassen mit nur K=5 Trainingsbeispielen pro Klasse unterscheiden zu lernen. Ein herkömmliches Klassifizierungsmodell hängt von viel mehr Parametern ab, als es in diesem Fall Trainingsbeispiele gibt, und verallgemeinert deshalb sehr schlecht, wenn es nur unter Verwendung dieser wenigen Trainingsbeispiele trainiert wird. (Wenn die Trainingsdaten nicht ausreichen, um das Problem einzugrenzen, besteht eine Herangehensweise darin, Erfahrungen aus anderen ähnlichen Problemen zu sammeln.)
-
Beim Few-Shot-Lernen werden beispielsweise Triplett-Datensätze zum Training eines neuronalen Triplett-Netzwerks verwendet, um die Klassifizierung („Task“ genannt) durchzuführen.
-
2 zeigt das Training eines Triplett-Netzwerks 200.
-
Jedes Triplett weist für eine Aktivität (für den Fall, dass die Klassen Aktivitäten sind) eine Sequenz von Sensordaten-Abtastwerten, die als Referenz dient („Anker“ 201 genannt) auf, eine Sequenz von Sensordaten-Abtastwerten für dieselbe Aktivitätsklasse („Positiv-Beispiel“ 202 genannt), und eine Sequenz von Sensordaten-Abtastwerten für eine andere Aktivitätsklasse („Negativ-Beispiel“ 203 genannt) auf. Eine Trainingsdatensatz mit solchen Tripletts wird für das Training des Triplett-Netzwerks 200 verwendet. Das Triplett-Netzwerk 200 besteht aus drei identischen neuronalen Netzwerken, die die gleichen Gewichte und die gleiche Architektur haben. Das Negativ-Beispiel 203 wird beispielsweise aus einer leicht anderen Klasse als Anker und Positiv-Beispiel genommen, z.B. aus „Gehen“, wenn Anker und Positiv-Beispiel aus „Joggen“ sind.
-
Das Training des Triplett-Netzwerks 200 erfolgt unter Verwendung einer Verlustfunktion, die eine Metrik, z.B. der euklidischen Metrik oder Kosinus-Ähnlichkeit als Distanzmetrik verwendet.
-
Die Triplett-Architektur bildet Anker 201, Positiv-Beispiel 202 und Negativ-Beispiel 203 auf Einbettungen in einem n-dimensionalen Einbettungsraum (d.h. Merkmalsraum oder latenten Raum) 204 ab, d.h. auf eine Anker-Einbettung 205, eine Positiv-Einbettung 206 und eine Negativ-Einbettung 207.
-
Die Verlustfunktion (bezeichnet als „Triplet-Loss“) ist so gestaltet, dass ihre Minimierung den Abstand zwischen Anker-Einbettung 205 und Positiv-Einbettung möglichst klein und den Abstand zwischen Anker-Einbettung 205 und Negativ-Einbettung 207 möglichst groß macht. Ein Beispiel für eine Verlustfunktion unter Verwendung der euklidischen Metrik ist
wobei f die von dem Triplett-Netzwerk 200 implementierte Einbettung ist (und damit von den zu trainierenden Gewichten abhängt), A der Anker 201, P das Positiv-Beispiel 202 und N das Negativ-Beispiel 203 ist und α ein Parameter ist, um den Abstand zwischen den Einbettungen von Positiven und den Einbettungen von Negativen einzustellen.
-
3 veranschaulicht die Trennung von Positiv-Einbettung und Negativ-Einbettung im Einbettungsraum.
-
Das Triplett-Netzwerk 200 wird durch die Verwendung einer Verlustfunktion wie oben beschrieben derart trainiert, dass die Positiv-Einbettung 301 in Richtung der Anker-Einbettung 302 rückt („gezogen" wird) und die Negativ-Einbettung 303 von der Anker-Einbettung 302 wegrückt („weggedrückt" wird).
-
Die Wahl der Tripletts zum Trainieren des Triplett-Netzwerks 200 ist ein wichtiger Faktor, der sich auf die Leistungsfähigkeit des (trainierten) Triplett-Netzwerks 200, insbesondere seiner Fähigkeit zur Verallgemeinerung, auswirkt. Gemäß einer Ausführungsform werden Triplett-Mining und eine „Batch-All“-Strategie oder „Batch-Hard“-Strategie (semi-harte oder harte Tripletts) verwendet. Gültige Tripletts werden beispielsweise basierend auf den paarweisen Werten der Distanzmetrik des aktuellen Batches ausgewählt.
-
4 veranschaulicht das Bilden von Clustern von Einbettungen im Einbettungsraum.
-
Für jede Aktivität (der z.B. N Aktivitäten) bildet sich im Einbettungsraum ein entsprechender Cluster 401 bis 404, wobei jeder Cluster für die jeweilige Aktivität die Einbettungen von Sequenzen von Sensordaten-Abtastwerten enthält, die zu der Aktivität gehören.
-
Wie oben erwähnt wird das Triplett-Netzwerk 200 beispielsweise mit K Beispielen für jede von N Aktivitäten trainiert.
-
Im Folgenden werden zwei Beispiele für die Implementierung eines Triplett-Netzwerks 200 gegeben.
-
5 zeigt eine Architektur zur Klassifikation von Sequenzen von Sensordaten-Abtastwerten gemäß einer ersten Ausführungsform.
-
Das Triplett-Netzwerk 500 weist in diesem Beispiel einen vortrainierten Encoder 501 auf. Dieser wird durch Training eines LSTM (Long Short-Term Memory)-basierten Autoencoders 502 erzeugt. Das Ziel des Autoencoders ist es, die in einer ihm zugeführten Sequenz von Sensordaten-Abtastwerten 503 enthaltenen zeit-abhängigen Merkmale der jeweiligen Aktivität, zu der die Sequenz von Sensordaten-Abtastwerten 503 gehört, zu extrahieren. Das Ziel des Triplett-Netzwerks 500 ist es, wie oben erläutert, die vom Autoencoder extrahierten Merkmale für Sequenzen von Sensordaten-Abtastwerten, die zur selben Aktivität gehören, zu einem Cluster (d.h. einer Ansammlung von benachbarten Punkten im Einbettungsraum) zusammenzufassen.
-
Der Autoencoder 502 weist einen Encoder 504, der nach dem Training als Encoder 501 verwendet wird, und einen Decoder 505 auf. Sowohl der Encoder 504 als auch der Decoder 505 weisen Schichten 506, 507, 508, 509 von LSTM-Elementen auf (z.B. mit tanh als Aktivierungsfunktion). Der Encoder liefert eine latente Repräsentation für jede Sequenz von Sensordaten-Abtastwerten durch die Verwendung der LSTM-Elemente und Komprimieren der Sensordaten-Abtastwerte in einen n-dimensionalen Vektor, der Merkmale der Sequenz von Sensordaten-Abtastwerte codiert. Der Decoder 505 versucht umgekehrt daraus die ursprüngliche Sequenz von Sensordaten-Abtastwerten zu rekonstruieren. Zum Training des Autoencoders wird beispielsweise eine Verlustfunktion verwendet, die den mittleren quadratischen Fehler zwischen eingegebener Sequenz von Sensordaten-Abtastwerten 503 und rekonstruierter Sequenz von Sensordaten-Abtastwerten 510 bewertet. Somit werden die Parameter der LSTM-Elemente beim Training derart angepasst, dass der Encoder 504 eine aussagekräftige latente Repräsentation für die Sequenzen von Sensordaten-Abtastwerten des Trainingsdatensatzes erzeugt. Ist der Autoencoder 502 trainiert, wird der Decoder 505 nicht mehr benötigt.
-
Der Autoencoder 502 wird beispielsweise für jede Aktivitätsklasse mit K Trainingsbeispielen (z.B. verschiedener Benutzer) trainiert, die dem Encoder 504 sequentiell zugeführt werden und vom Decoder 505 jeweils rekonstruiert werden. Hierbei kann K sehr niedrig sein, sogar 1.
-
Die Längen der Sequenzen der Sensordaten-Abtastwerten können abhängig davon gewählt werden, wie lange die Benutzer die Aktivitäten durchführen. Sie können variable Länge haben.
-
Das Triplett-Netzwerk 500 bekommt Tripletts 510 als Eingabe, wie mit Bezug auf 2 erläutert. Der Encoder 501 komprimiert jeweils Positiv, Anker und Negativ-Beispiel zu einer jeweiligen latenten Repräsentation. Diese latenten Repräsentationen werden einem dichten (d.h. vollständig verbundenen) neuronalen Netzwerk 511 zugeführt, dass derart trainiert wird, dass es das Clustern durchführt, d.h., wie in 3 veranschaulicht, auf Grundlage der latenten Repräsentation derart Einbettungen 512 erzeugt (bzw. die latenten Repräsentationen derart einbettet), dass die Positiv-Einbettung nah an der Anker-Einbettung liegt und die Negativ-Einbettung entfernt von der Anker-Einbettung liegt. Dies wird wie oben erläutert durch Verwendung einer Triplett-Verlustfunktion beim Training erreicht.
-
Konfigurationsparameter des Autoencoders 502 umfassen die Anzahl der LSTM-Elemente, die zum Komprimieren bzw. der Rekonstruktion im Encoder 504 bzw. Decoder 505 verwendet werden sowie die Tiefe des Encoders 504 zum Erreichen des Raums der latenten Repräsentationen (das sogenannte Bottleneck) und die Größe des Bottlenecks. Beispielsweise weisen die Schichten 507 und 508 des Encoders 504 und des Decoders 505 (also die Schichten „näher am latenten Raum“) eine geringe Anzahl von LSTM-Elementen auf als die Schichten 506 und 509 (z.B. die Hälfte oder ein Viertel etc.) und erzeugen so ein Bottleneck.
-
Konfigurationsparameter des Triplett-Netzwerks umfassen die Tiefe der Schichten des dichten neuronalen Netzwerks 511. Als Aktivierungsfunktion wird dort z.B. ReLU verwendet.
-
6 zeigt eine Architektur zur Klassifikation von Sequenzen von Sensordaten-Abtastwerten gemäß einer zweiten Ausführungsform.
-
Wie im Beispiel von 5 bekommt ein Triplett-Netzwerk 600 für das Training Tripletts 601 als Eingabe und erzeugt Einbettungen 602 (Positiv-Einbettung, Anker-Einbettung, Negativ-Einbettung).
-
In diesem Beispiel wird jedoch nicht der Encoder eines Autoencoders verwendet, um latente Repräsentationen zu erzeugen, die als Grundlage für die Einbettungen 602 verwendet werden, sondern es wird dafür ein Konvolutionsnetzwerk verwendet.
-
Hierbei wird angenommen, dass die Sequenzen der Sensordaten-Abtastwerte eine feste Länge (entsprechend der Länge eins Fensters haben).
-
Eine zugeführte Sequenz von Sensordaten-Abtastwerten wird Konvolutionsschichten 603, 604, 605 zugeführt, die eindimensionale Faltungen (über die Zeit) durchführen. Die Dimension der Einbettungen 602 hängt von den Konfigurationsparametern der letzten Konvolutionsschicht 605 ab. Deren Ausgabe wird von einer Flattening-Schicht 606 in die Form eines Vektors im Einbettungsraum gebracht.
-
Die Konvolutionsschichten 603, 604, 605 können ein Maxpooling aufweisen. Für das Training kann für alle Schichten 603 bis 606 eine L2-Regularisierung verwendet werden.
-
Die Konfigurationsparameter der Konvolutionsschichten sind die Filterkerngröße, die Schrittweite und die Anzahl von Filteroperationen. Es sind auch Kombinationen über mehrere Achsen (z.B. verschiedener Komponenten der Abtastwerte) möglich. Die letzte Konvolutionsschicht reduziert beispielsweise die Größe der Einbettungen durch eine entsprechend geringe Anzahl von Filterelementen mit entsprechend großer Filtergröße.
-
Im Betrieb zur Klassifikation gibt die Datenverarbeitungseinrichtung 102 eine von dem Sensor erfasste Sequenz der Sensordaten-Abtastwerten in das maschinelle Lernmodell 103 (d.h. Triplett-Netzwerk 500 oder 600) ein und ermittelt als Aktivität des Benutzers die Aktivität, in deren Cluster die von dem maschinellen Lernmodell 103 erzeugte Einbettung der Sequenz der Sensordaten-Abtastwerte Aktivität liegt oder dem sie am nächsten liegt (z.B. deren Anker-Einbettung sie im Einbettungsraum am nächsten liegt).
-
Zusammenfassend wird gemäß verschiedenen Ausführungsbeispielen ein Verfahren bereitgestellt, wie es in 7 veranschaulicht ist.
-
7 zeigt ein Ablaufdiagramm 700 für ein Verfahren zum Trainieren eines neuronalen Netzwerks zum Klassifizieren von Sequenzen von Sensordaten-Abtastwerten, die jeweils Sensordaten-Abtastwerte von mehreren Messzeitpunkten enthalten, in mehrere Klassen.
-
In 701 werden Trainingsdaten für die mehreren Klassen beschafft, wobei die Trainingsdaten für jede Klasse der mehreren Klassen Sequenzen von Sensordaten-Abtastwerten, die zu der Klasse gehören und Sequenzen von Sensordaten-Abtastwerten, die zu einer anderen Klasse gehören, aufweist, und die Sequenzen von Sensordaten-Abtastwerten zu Trainings-Tripletts gruppiert, wobei jedes Triplett für eine jeweilige Klasse ein Anker-Beispiel, ein Positiv-Beispiel und ein Negativ-Beispiel aufweist.
-
In 702 wird ein neuronales Netzwerk trainiert.
-
In 703 werden dazu die Sequenzen von Sensordaten-Abtastwerten der Trainings-Tripletts dem neuronalen Netzwerk zugeführt, wobei das neuronale Netzwerk Schichten zum Kombinieren von Sensordaten-Abtastwerten von unterschiedlichen Messzeitpunkten einer dem neuronalen Netzwerk zugeführten Sequenz von Sensordaten-Abtastwerten, und zur Erzeugung einer Einbettung der dem neuronalen Netzwerk zugeführten Sequenz von Sensordaten-Abtastwerten in einem Einbettungsraum aufweist.
-
In 704 wird das neuronale Netzwerks zum Verringern des Werts einer Triplett-Verlustfunktion, die von den für die Anker-Beispiele, die Positiv-Beispiele und die Negativ-Beispiele der Trainings-Tripletts erzeugten Einbettungen abhängt, angepasst. Dies bedeutet, dass die Gewichte des neuronalen Netzwerks angepasst werden, um den Triplett-Verlust (z.B. durchschnittlich über die Trainingsdaten) zu verringern.
-
Gemäß verschiedenen Ausführungsformen wird ein Triplett-Lernen auf Zeitreihen von Sensordaten zur Klassifikation angewendet, beispielsweise zur Erkennung von Benutzeraktivitäten (insbesondere Gestenerkennung). Andere Anwendungen wie z.B. Spracherkennung sind auch möglich.
-
Der Triplett-Verlust (Engl. Triplet Loss) ist eine Verlustfunktion, die es betraft, wenn die Einbettung des Negativ-Beispiels nah an der Einbettung des Anker-Beispiels ist und die Einbettung des Positiv-Beispiels weit weg von der Einbettung des Anker-Beispiels ist. Dies bedeutet, zumindest in bestimmten Abstandsbereichen ist der Wert der Verlustfunktion umso größer, je näher die Einbettung des Negativ-Beispiels an der Einbettung des Anker-Beispiels und je weiter weg die Einbettung des Positiv-Beispiels weit weg von der Einbettung des Anker-Beispiels ist.
-
Die Herangehensweise von 7 kann für die Verarbeitung von Sensordaten-Zeitreihen von beliebigen Arten von Sensoren und in verschiedenen Anwendungen angewendet werden, wie z.B. zur Erkennung der Aktivität eines Menschen, Bewegungserkennung, Gestenerkennung, Spracherkennung etc.
-
Verschiedene Ausführungsformen können Sensorsignale von verschiedenen Sensoren wie Video, Radar, LiDAR, Ultraschall, Bewegung, Akustik, Wärmebild usw. empfangen und verwenden.
-
Ein Klassifikationsmodell kann jede Art von Modell sein, das Sensordaten bezüglich einer Benutzereingabe klassifizieren kann. Insbesondere kann das Klassifikationsmodell derart ausgeführt sein, dass es zu allen Entscheidungsmöglichkeiten Wahrscheinlichkeitswerte ermittelt (auch als „Soft Decision“ bezeichnet).
-
Das Verfahren ist gemäß einer Ausführungsform Computer-implementiert.
-
Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.