Large Scale Multilayer Perceptron

download Large Scale Multilayer Perceptron

of 119

  • date post

    17-Aug-2015
  • Category

    Documents

  • view

    63
  • download

    4

Embed Size (px)

Transcript of Large Scale Multilayer Perceptron

  1. 1. LARGE SCALE MULTILAYER PERCEPTRON Abschlussarbeit zur Erlangung des akademischen Grades Master of Science (M.Sc.) an der Hochschule fr Technik und Wirtschaft Berlin Fachbereich Wirtschaftswissenschaften II Studiengang Angewandte Informatik 1. Prfer: Prof. Dr. Christian Herta 2. Prfer: Prof. Dr. Hermann Hessling Eingereicht von Sascha Jonas (B.Sc.) 10. Februar 2014 Copyright 2013 Sascha Jonas (B.Sc.). Alle Rechte vorbehalten.
  2. 2. iii Kurzbeschreibung: In dieser Arbeit wurde ein Software-Framework entwickelt, auf der Basis von Apache Hama, einer Implementierung des bulk-synchronous parallel model (BSP). Das Framework bietet die Mglichkeit, ein knstliches neuronales Netz in einem Rechner-Cluster verteilt zu trainieren. Es bietet weiterhin die Mglichkeit, sowohl auf Mini- als auch auf Big-Batch basierende Trainingsalgorithmen zu benutzen. Skalierbarkeit und Performance wurden unter anderem anhand des Trainings eines Denoising Autoencoders mit 1.000 Eingabe- und Ausga- beneuronen ermittelt. Abstract: In this study the ability of bulk-synchronous parallel model (BSP) for scaling out the training of an articial neural networks is analyzed. Comparable distributed training al- gorithms based on mini-batch and big-batch scheme were developed. For this purpose the framework Apache Hama was used. The scalability of the dierent approaches has be- en determined by the training of an denoising autoencoder with 1,000 input and output neurons. Keywords: autoencoder, bulk-synchronous parallel computing (BSP), deep learning, Multilayer Perceptron, Apache Hama
  3. 3. Inhaltsverzeichnis Inhaltsverzeichnis v 1 Einleitung 1 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Zielstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Grundlagen 5 2.1 Knstliche neuronale Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 Initialisierung der Verbindungsgewichte . . . . . . . . . . . . . . . . . . . 8 2.1.2 Gradientenbasierte Lernverfahren . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.3 Backpropagation of Error . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.4 Momentum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.5 ADAGRAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.6 Resilient Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.7 Autoencoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Bulk-Synchronous Parallel Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2.1 Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.2.2 Apache Hama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3 Anforderungsanalyse 21 3.1 Verwandte Studien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.1 Studie 1: Using the BSP Cost Model to Optimize Parallel Neural Network Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.2 Studie 2: Large Scale Distributed Deep Networks . . . . . . . . . . . . . . 22 3.2 Analyse des MLP Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.1 Speicherung der Verbindungsgewichte . . . . . . . . . . . . . . . . . . . . 24 3.2.2 Lernverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2.3 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3 Zielstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.3.1 Funktionale Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . 25
  4. 4. INHALTSVERZEICHNIS vi 3.3.2 Nicht-Funktionale-Anforderungen . . . . . . . . . . . . . . . . . . . . . . . 27 3.3.3 Abgrenzungskriterium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4 Entwurf 29 4.1 Systembeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.1.1 Datenvorverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.1.2 verteiltes Training mit BSP . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.1.3 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.2 Sparse Autoencoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5 Implementierung 39 5.1 Datenverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.1.1 Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.1.2 Trainingsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.2 MLP-Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2.1 Initialisierung der Verbindungsgewichte . . . . . . . . . . . . . . . . . . . 41 5.2.2 Matrizen-Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.3 Trainingsalgorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3 verteiltes Training mit BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.3.1 Initialisierung & Cleanup . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.3.2 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.4 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.5 Apache Hama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.5.1 Stabilittsprobleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.5.2 Job-Verteilung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.6 Software-Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5.6.1 Datenverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.6.2 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6 Auswertung 49 6.1 Testumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.2 Validittstests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.2.1 Experiment: XOR-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.2.2 Experiment: MONK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.3 Skalierungstests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.3.1 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.3.2 Vertikale Skalierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6.3.3 horizontale Skalierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 6.4 Laufzeittests einzelner Komponenten . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.4.1 Einuss des Caches auf die Ladezeit . . . . . . . . . . . . . . . . . . . . . 60 6.4.2 Vergleich von sequentieller und Binary Tree Kommunikation . . . . . . . 60
  5. 5. INHALTSVERZEICHNIS vii 6.4.3 Vergleich von Apache Mahout und jblas . . . . . . . . . . . . . . . . . . . 61 6.5 Untersuchung des Arbeitsspeicherverbrauchs . . . . . . . . . . . . . . . . . . . . . 63 6.6 Performancetests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.6.1 Messung: Iterationsanzahl bis zur Erreichung eines Zielfehlerwerts . . . . 65 6.6.2 Messung: Fehlerwert nach 50 Iterationen . . . . . . . . . . . . . . . . . . . 66 6.7 Xing-Proldaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 6.7.1 Problembeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 6.7.2 Datenaufbereitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6.7.3 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6.7.4 Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7 Fazit 75 7.1 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 A Klassendiagramme 79 B Einzelergebnisse der Performancetests 83 B.1 MONK: Anzahl Iterationen bis zum Fehlerwert 0,1 . . . . . . . . . . . . . . . . . 83 B.2 MONK: Fehlerwert nach 50 Iterationen . . . . . . . . . . . . . . . . . . . . . . . 85 B.3 Xing20: Fehlerwert nach 50 Iterationen . . . . . . . . . . . . . . . . . . . . . . . . 87 C Fehlerrechnung 89 D Metriken 91 D.1 Precision/Recall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 D.2 F-measure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 D.3 Speedup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 E Normalisierung von Trainingsdaten 93 F Verteiltes Training mit BSP in Pseudocode 95 G Abkrzungsverzeichnis 97 H Abbildungsverzeichnis 99 I Sourcecodeverzeichnis 101 J Tabellenverzeichnis 103 K Literaturverzeichnis 105 L Eigenstndigkeitserklrung 111
  6. 6. Kapitel 1 Einleitung 1.1 Motivation Das Multilayer Perceptron (MLP) ist ein knstliches neuronales Netz und wird bereits seit den 80er Jahren erfolgreich zur Lsung verschiedener Probleme, wie z.B. Klassizierung und Regression, genutzt (siehe Abschnitt 2.1[Seite 7]). Ausgelst unter anderem durch die Arbeit Georey E. Hintons im Jahr 2006, der einen Auto- encoder (siehe Unterabschnitt 2.1.7[Seite 15]) benutzte, um ein knstliches neuronales Netzwerk mit mehreren versteckten Schichten zu trainieren (deep learning), ist das MLP auch heute noch im Fokus aktueller Forschung (siehe [HS06a], [Hin07]). Eine Gruppe von Forschern bei Google verfolgte 2012 einen Ansatz mit horizontaler Ska- lierung (scale out). Ihnen gelang es ein lokal verbundenes neuronales Netz mit einer Milliarde Neuronenverbindungen auf eine