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!