Transcript Elman-Netz

Klassifikation von
Bewegungsdaten
Gliederung
1. Aufgabenstellung
2. Vorgehensweise
2.1 Ausgangslage
2.2 Probleme
2.3 Durchführung
3. Auswertung
3.1 Implementierung Rekurrente Neuronale
Netze
3.2 Vorhersageergebnisse der Rekurrenten
Neuronalen Netze
1. Aufgabenstellung
• Klassifikation von Bewegungsdaten
• MMK -> Roboter soll die Bewegung eines
Menschen erkennen
• Vorgaben: aufgezeichnete Bewegungsdaten
• schnelle Ergebnisse -> durch Verwendung
grafischer Programmierumgebungen (KNIME
und RapidMiner)
• erkennen der Bewegungsart mittels rekurrenter
neuronaler Netze (Jordan Netzwerk und Elman
Netzwerk)
2. Vorgehensweise
2.1 Ausgangslage
Bewegungsdaten (Wdh)
• viele Datensätze mit Punktdaten
• Motion Capture – Aufnahmen von Personen
– Marker an 15 verschiedenen Punkten (Gelenken)
– Aufnahmen von verschiedenen
Aktionen, Emotionen,
Geschlechter
• enthalten sind x,y,zKoordinaten der 15
Gelenke
• zeitliche Abfolge
Quelle: Screenshot Datenstruktur
KNIME und RapidMiner (Wdh)
• Umgebungen für maschinelles Lernen und
Data-Mining
• graphische Benutzeroberfläche
– ermöglicht einfaches und schnelles
Aneinandersetzen von Modulen für
Datenvorverarbeitung, Analyse und
Visualisierung
• Verarbeitung sehr großer Datenbestände
KNIME und RapidMiner
Quelle: http://de.wikipedia.org/w/index.php?title=Datei:Knime.jpg
Quelle: http://de.wikipedia.org/wiki/RapidMiner
Ausgangslage
• beide Programme unterstützen das
Entwickeln eigener Knoten
• Javabibliothek, die Rekurrente Neuronale
Netze (RNN) realisiert, verfügbar
• beide Programme können Ihre Daten aus
einer SQL-Datenbank beziehen
2.2 Probleme
Probleme
• Datensätze nur in vielen Textdateien vorhanden
– Datensätze einzeln einlesen zeitaufwändig
• Nutzung einer SQL-Datenbank sinnvoll
• Beide Programme unterstützen keine RNN
– Beide Programme nur NN implementiert
• Erstellung eines eigenen Knotens für RNN notwendig
• Nutzung verfügbarer Java-Bibliothek
• Visualisierung in beiden Programmen nur in
Tabellenform bzw. 2D-Diagrammen möglich
– Keine 3D-Visualisierung
– Tabellen/Diagramme für die Darstellung von Bewegungsdaten
ungeeignet
– Eigener Knoten oder Programm zur Visualisierung notwendig
Neuronale Netze (Wdh)
• „Beide Programme unterstützen keine RNN“
• Neuronale Netze = Nachempfindung Neuronennetz des
menschlichen Gehirns
• NN bestehen aus mehreren Neuronen (Units)
– Informationen aufnehmen -> modifizieren -> weiterzuleiten
– 3 Neuronen-Arten
• (Input-, Hidden-, Output-Units)
• "Übereinander" angeordnete Knoten bilden Schicht
• Neuronen miteinander durch Kanten verbunden
– Kanten gewichtet -> Stärke der Verbindung
– Wissen eines NN ist in seinen Gewichten gespeichert
Bild - Quelle: http://www.neuronalesnetz.de/units.html
Rekurrente Neuronale Netze
•
besitzen Rückkopplungen zw. Neuronen
– Rückkopplungen direkte, indirekt, seitlich, vollständig
•
Damit sollen zumeist zeitlich codierte Informationen in den Daten entdeckt
werden
•
•
Elman-Netz (SRN)
besitzen Kontext-Einheiten
– Neuronen, die sich auf gleicher Ebene wie Input-Schicht befinden
– erhalten, verarbeiten Informationen -> Zurücksendung
•
Durch Kontext-Einheiten besitzt SRN
Teilinformationen aus sämtlichen vorangegangen
Zeitpunkten bzw. Durchgängen
•
•
•
Jordan-Netze
ähnlich aufgebaut wie SRNs
Erhalten von Units der Output-Schicht Informationen
Bild – Quelle (SRN): http://www.neuronalesnetz.de/rekurrente1.html
2.3 Vorgehensweise
Einlesen der Datensätze
• automatisiertes Einlesen in MySQL-DB
• Erkennung der Bewegung/Emotion
anhand des Dateinamens
• Verarbeitung aller ptd-Dateien in
angegebenem Verzeichnis
Einlesen der Datensätze
• zusätzliche Schwierigkeit: nicht alle Daten
in einer Datei entsprechen der Bewegung
• nur bestimmte Bereiche in einer Datei
symbolisieren die eigentliche Bewegung
• Berücksichtigung einer weiteren Datei mit
Metadaten
Implementierung RNN
• sehr gute Unterstützung der Entwicklung
eigener Knoten durch KNIME
• KNIME basiert auf Eclipse
• KNIME-Knoten = Eclipse-Plugin
Implementierung RNN
• KNIME erweitert Eclipse um erforderliche
Assistenten für neues Projekt bzw. Export
• optional: KNIME erzeugt funktionierenden
Beispielcode für neuen Knoten
• Debugging direkt im KNIME möglich
Implementierung RNN
• Entwicklung eines Knotens für KNIME, der RNN
anlernt und das trainierte Netz abspeichert
– Nutzung der Java-Bibliothek
• Konfiguration sämtlicher Parameter sowie der
Netzart durch Konfigurationsdialog
• Entwicklung eines Knotens für KNIME, der mit
einem trainierten RNN Daten vorhersagen kann
– Einlesen des vormals abgespeicherten Netzes
Konfigurationsdialog
Screenshot Konfigurationsdialog
Punktdaten -> Richtungsvektoren
•
Entwicklung eines Knotens der Punktdaten in Richtungsvektoren umrechnet
- Netz mit Bewegungsrichtung statt absoluten Punktkoordinaten
trainieren
- bessere Chancen, dass RNN Bewegung wieder erkennt
Screenshot Punktdaten (tabellarische Ausgabe KNIME)
Screenshot Vektordaten (tabellarische Ausgabe KNIME)
Aufbau der Knoten in KNIME
Screenshot Oberfläche KNIME
Visualisierung
• Entwicklung eines separaten Java-Programms zum
Visualisieren der 3D-Punktdaten
– unabhängig von den beiden Programmen mit Java3D
• Kommunikation zwischen KNIME und Viewer über
Socket-Schnittstelle
• Viewer hört bestimmten Port ab und stellt die
empfangenen Daten dar
– Unabhängig, auch andere Tools könnten Daten senden
– 2 Möglichkeiten zur Datenaufnahme und Visualisierung
implementiert
• kann kompletten Datensatz empfangen und selbständig
nacheinander abspielen
• Taktung von außen, nur ein Datum empfangen -> sofortige
Darstellung
Visualisierung
• Knoten in Entwicklungsumgebung erstellt, der
Daten per Socket an Viewer sendet
• Daten werden übers „Netzwerk“ geschickt
– KNIME fungiert als Client, Viewer als Server
– Keine Zwischenspeicherung der Daten erforderlich
• Bewegung der einzelnen Punkte in Abhängigkeit
von der Zeit sowie Anpassung des Farbtons je
nach Bewegungsart
Konfiguration des Viewer-Knotens
Screenshot Konfigurationsdialog Viewer-Knoten
3. Auswertung
3.1 Implementierung RNN
Entwicklung eigener Knoten
• Entwicklung eigener Knoten in KNIME
nutzerfreundlich
• Kommunikation zw. KNIME und MySQL-Server
bzw. KNIME und Viewer reibungslos
• Verarbeitung von den ~80000 Datensätzen
dauert (je nach Konfiguration) mehrere Minuten
– akzeptabel
– Ausnahme: Training des RNN, je nach Konfiguration
5-15 Minuten
Entwicklung eigener Knoten
• Schwierigkeiten bei RapidMiner!
• Prinzipiell unterstützt RapidMiner die Erstellung eigener
Programmknoten
• Handbuch zur Erweiterung von RapidMiner ist kostenpflichtig (40€)
• Nutzung des Handbuchs von älterer Version 4.6 (aktuell 5.0)
– Hier: Anlegen eines Plugins nicht beschrieben nur der Aufbau
• Versuch der Implementierung mit Plugin-Vorlage der Uni-Dortmund
– Kompilierung mit Hilfe von Ant
– Folglich Einbindung von Ant in Eclipse per Installation der Development
Enviroment (Eclipse Plugin)
– Plugin-Methodennamen haben sich zu Version 5.0 geändert…usw.
• -> Abbruch der Bemühungen bei RapidMiner
• Teil der Aufgabe: „Vergleich der beiden Programmierumgebungen“
– Entscheidung für KNIME
Vorhersageergebnisse
• Darstellung der Ergebnisse im Viewer wie
gefordert
• Vorhersageergebnisse des Jordan Netzwerk
zufrieden stellend
• für Elman Netzwerk nicht zufrieden stellend
• Mögliche Ursachen:
– Implementierung der RNN, da nicht professionell
– RNN ungeeignet, da eher für zeitlich codierte
Informationen geeignet
Programmpräsentation
Danke für die Aufmerksamkeit
Für Fragen stehen wir jetzt gern
zur Verfügung!