Aufbau der Eigenimplementierung



Ähnliche Dokumente
Selbstorganisierende Karten

Künstliche neuronale Netze

Konzepte der AI Neuronale Netze

Einführung in Neuronale Netze

BÜNDELN VON MUSTERN. Grundlagen der linearen Algebra im Anhang A. Kapitel 1.

Praktikum Computational Intelligence 2 Ulrich Lehmann, Johannes Brenig, Michael Schneider

Neuronale Netze. Prof. Dr. Rudolf Kruse Christoph Doell, M.Sc.

Künstliche neuronale Netze

Einfaches Framework für Neuronale Netze

Selbstorganisierende Karten

Kohonennetze Selbstorganisierende Karten

6.2 Feed-Forward Netze

Selbstorganisierende Karten

Was bisher geschah Künstliche Neuronen: Mathematisches Modell und Funktionen: Eingabe-, Aktivierungs- Ausgabefunktion Boolesche oder reelle Ein-und

Seminar über Neuronale Netze und Maschinelles Lernen WS 06/07

Thema 3: Radiale Basisfunktionen und RBF- Netze

Simulation neuronaler Netzwerke mit TIKAPP

Radiale-Basisfunktionen-Netze. Rudolf Kruse Neuronale Netze 120

Seminararbeit Thema: Die Anwendung der Kohonen-Karte am Beispiel einer Zuflussregelung an Autobahnen

kurze Wiederholung der letzten Stunde: Neuronale Netze Dipl.-Inform. Martin Lösch (0721) Dipl.-Inform.

Neuronale. Netze. Henrik Voigt. Neuronale. Netze in der Biologie Aufbau Funktion. Neuronale. Aufbau Netzarten und Topologien

Hannah Wester Juan Jose Gonzalez

Aufbau und Beschreibung Neuronaler Netzwerke

Der Backpropagation-Algorithmus als Beispiel für Lernalgorithmen künstlicher neuronaler Netze Reinhard Eck 1

Neuronale Netze. Prof. Dr. Rudolf Kruse

Virtuelles Labor für Neuronale Netze

Künstliche Neuronale Netze

Selbstorganisierende Karten

Klassifikationsverfahren und Neuronale Netze

Selbstorganisierende Karten

Implementationsaspekte

Neuronale Netze. Seminar aus Algorithmik Stefan Craß,

Praktikum Computational Intelligence 2 Ulrich Lehmann, Johannes Brenig, Michael Schneider

Neuronale Netze. Anna Wallner. 15. Mai 2007

Seminar zum Thema Künstliche Intelligenz: Clusteranalyse

Klassifikation linear separierbarer Probleme

Kapitel ML:XII. XII. Other Unsupervised Learning. Nearest Neighbor Strategies. Self Organizing Maps Neural Gas. Association Analysis Rule Mining

Neuronale Netze Aufgaben 3

Einführung in die Neuroinformatik Lösungen zum 5. Aufgabenblatt

Lernende Vektorquantisierung

Was sind Neuronale Netze?

Neuronale Netze in der Phonetik: Feed-Forward Netze. Pfitzinger, Reichel IPSK, LMU München {hpt 14.

Neuronale Netze (Konnektionismus)

Neuronale Netze (Konnektionismus) Einführung in die KI. Beispiel-Aufgabe: Schrifterkennung. Biologisches Vorbild. Neuronale Netze.

Seminar zum Thema Künstliche Intelligenz:

Grundlagen neuronaler Netzwerke

Proseminar Neuronale Netze Frühjahr 2004

Statistical Learning

Klassifizieren und Visualisieren von Daten mit Selbstorganisierenden Karten

BACKPROPAGATION & FEED-FORWARD DAS MULTILAYER PERZEPTRON

Multi-Layer Neural Networks and Learning Algorithms

Selbstorganisierende Karten

kurze Wiederholung der letzten Stunde: Neuronale Netze Dipl.-Inform. Martin Lösch (0721) Dipl.-Inform.

8. Vorlesung Neuronale Netze

Seminar K nowledge Engineering und L ernen in Spielen

Wir haben in den vorherigen Kapiteln verschiedene Verfahren zur Regression und Klassifikation kennengelernt (z.b. lineare Regression, SVMs)

weitere Modelle und Methoden

Wissensentdeckung in Datenbanken

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

(hoffentlich kurze) Einführung: Neuronale Netze. Dipl.-Inform. Martin Lösch. (0721) Dipl.-Inform.

Schule : Friedrich Schiller-Gymnasium Preetz / Holst. Am Ihlsol Preetz. Name des Schülers : Johannes Lampel

Praktische Optimierung

Adaptive Systeme. Prof. Dr.-Ing. Heinz-Georg Fehn Prof. Dr. rer. nat. Nikolaus Wulff

Technische Universität. Fakultät für Informatik

Technische Universität. Fakultät für Informatik

Neuronale Netze mit mehreren Schichten

Künstliche Neuronale Netze (KNN)

Perzeptronen. Katrin Dust, Felix Oppermann Universität Oldenburg, FK II - Department für Informatik Vortrag im Rahmen des Proseminars 2004

Satelliten-Netz Lösung des 1. Studierendenwettbewerb der GI

Neuronale Netze. Christian Böhm.

Computational Intelligence 1 / 20. Computational Intelligence Künstliche Neuronale Netze Perzeptron 3 / 20

Praktikum Simulationstechnik Rene Schneider, Benjamin Zaiser

Neuronale Netze, Fuzzy Control, Genetische Algorithmen. Prof. Jürgen Sauer. 5. Aufgabenblatt: Neural Network Toolbox 1

1 Einleitung. 2 Clustering

Anleitung zum Praktikum Neuroinformationsverarbeitung - Wintersemester 2016/2017

Kapitel 6. Neuronale Netze. 6.1 Verwendeter Netztyp

Anwenderdokumentation Beleg Neuronale Netze

Weitere Untersuchungen hinsichtlich der Anwendung von KNN für Solvency 2. Tom Schelthoff

Outline. SOMs und verwandte Verfahren. Self-Organizing Map. Outline... Self-Organizing Map. Self-Organizing Map. Architektur:

Wir haben in den vorherigen Kapiteln verschiedene Verfahren zur Regression und Klassifikation kennengelernt (z.b. lineare Regression, SVMs)

Einführung in neuronale Netze

PROCMON. Performance und Condition Monitoring komplexer verfahrenstechnischer Prozesse. Christian W. Frey.

Einführung in die Computerlinguistik

Mustererkennung: Neuronale Netze. D. Schlesinger ()Mustererkennung: Neuronale Netze 1 / 12

Wissensentdeckung in Datenbanken

Vorlesung Informatik II

Rekurrente / rückgekoppelte neuronale Netzwerke

11. Neuronale Netze 1

Neuro-Info Notizen. Markus Klemm.net WS 2016/2017. Inhaltsverzeichnis. 1 Hebbsche Lernregel. 1 Hebbsche Lernregel Fälle Lernrate...

Neuronale Netze in der Phonetik: Grundlagen. Pfitzinger, Reichel IPSK, LMU München {hpt 24.

Künstliche neuronale Netze

Jan Parthey, Christin Seifert. 22. Mai 2003

Studiengang Simulation Technology

Entwicklung von Methoden zum Nachweis von ökologisch erzeugten Produkten am Beispiel der Lachszucht - Neronale Netzanalyse -

Neuronale Steuerungsparadigmen für autonome Roboter realisiert durch ein flexibles Software-Tool

Andreas Scherer. Neuronale Netze. Grundlagen und Anwendungen. vieweg

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

(künstliche) Neuronale Netze. (c) Till Hänisch 2003, BA Heidenheim

Transkript:

Table of contents 1 2 Aufbau... 2 1.1 Feed Forward Netze...3 1.2 Self Organizing Maps... 5 Training... 6 2.1 Feed Forward Netze...7 2.2 Self Organizing Maps... 8

Nachdem wir uns entschlossen hatten, keine fertige Bibliothek für Neuronale Netze zu nutzen, sondern eine Eigenimplementierung durchzuführen, galt es, einige wichtige Entscheidungen zu treffen. Um den Implementierungsaufwand möglichst im Rahmen zu halten, entschieden wir uns, nur Feed Forward Netze und Self Organizing Maps umzusetzen. Diese beiden Netztypen bilden eine gute Grundlage für die Arbeit mit Neuronale Netzen und sind für unseren Beleg ausreichend. Auch sind zu beiden Netztypen in der Literatur umfangreiche Abhandlungen zu finden, was die Implementierung erleichtert. Das einzige implementierte Trainingsverfahren für Feed Forward Netze ist Backpropagation Learning, Quickpropagation wurde aus Zeitgründen nicht umgesetzt. Trotz dieses eingeschränkten Funktionsumfangs ist unsere "Bibliothek" für Neuronale Netze voll funktionsfähig, es liegen auch einige Beispiele zur Demonstration vor. Es wurde versucht, die Implementierung zwar auf hohe Geschwindigkeit auszurichten, aber trotzdem modular zu arbeiten. Dadurch sind die vorhandenen Klassen leicht um weitere Funktionalitäten (z.b. weitere Lernverfahren) erweiterbar. Die folgenden Abschnitte geben einen Überblick über die Struktur unserer Implementierung, weitere Informationen lassen sich aus der Entwicklerdokumentation (../ressourcen/javadoc/index.html) entnehmen. 1. Aufbau Alle Klassen zum Aufbau Neuronaler Netze befinden sich im Paket de.htwdd.rosenkoenig.neuro.net. Die Basisklasse für alle Implementierungen Neuronaler Netze ist die abstrakte Klasse NeuralNet. NeuralNet bietet Funktionen zum Speichern/Laden eines Netzes als XML-Datei sowie mehrere abstrakte Methoden, die ableitende Klassen implementieren müssen. Diese Basisklasse ermöglicht es, verschiedene Typen von Netzen mit einer einheitlichen Schnittstelle zu versehen. Die konkreten Netztypen (z.b. SOM oder Feed Forward Netz) werden somit austauschbar. Neben den momentan vorliegenden Netztypen wären weitere Netzarten wie z.b. Hopfield Netze denkbar. Das folgende Klassendiagramm gibt einen Überblick über den Aufbau des Paketes. Seite 2

Klassendiagramm de.htwdd.rosenkoenig.neuro.net 1.1. Feed Forward Netze Eine typische Modellierung eines künstlichen Neuronalen Netzes ist das Feed Forward Netz, dessen Struktur die folgende Grafik zeigt. Seite 3

Neuronales Netz Derartige Netze sind typischerweise in Schichten mit jeweils einer bestimmten Anzahl Neuronen organisiert: Eingabeschicht (input layer): Die Neuronen dieser Schicht verarbeiten die Eingaben des Netzes. verdeckte Schichten (hidden layer): Die Neuronen dieser Schichten sind meist jeweils mit allen Neuronen der vorhergehenden bzw. nachfolgenden Schicht verbunden. Ausgabeschicht (output layer): Die Neuronen der Ausgabeschicht fassen die Ergebnisse der vorherigen Schicht zusammen und bilden daraus die Ausgabe des Netzes. Die einzelnen Neuronen sind durch Synapsen verbunden, die jeweils mit einem Gewicht versehen sind. Nach Anlegen der Eingabe an eine Schicht werden mittels Aktivierungsund Ausgabefunktion die Ausgaben der Schicht berechnet, die dann wiederum die Eingaben der nächsten Schicht bilden. Auf nähere theoretische Details wird hier verzichtet. Eine gute Einführung (http://wwwmath.uni-muenster.de/softcomputing/lehre/material/wwwnnscript/prinzip.html#netz) findet sich z.b. auf den Seiten der Uni Münster. Seite 4

Um die Implementierung einfacher und vor allem performanter zu gestalten, haben wir folgende Einschränkungen festgelegt: Es lassen sich keine einzelnen Neuronen erstellen, sondern nur Schichten von Neuronen mit einer festgelegten Neuronenanzahl. Diese Schichten werden durch die Klasse Layer und ihre Unterklassen modelliert. Eine Schicht kann wahlweise ein Bias-Neuron enthalten. Eine Besonderheit stellt die Klasse KohonenLayer dar: Diese Klasse ermöglicht es, eine Self Organizing Map als Eingabeschicht eines Feed Forward Net zu nutzen. Es wird davon ausgegangen, dass zwei Schichten immer voll verbunden (jedes Neuron der einen Schicht mit jedem Neuron der andern Schicht) sind. Die Klasse Synapse bildet die Verbindung zwischen zwei Schichten mit individuellen Gewichten für jede "reale" Synapse. Durch diese Einschränkung ist kein echtes Pruning der Verbindungen möglich. Es handelt sich um Feed Forward Netze: Rückkopplungen oder Short Cuts sind nicht vorgesehen. Die Aktivierungsfunktion (ActivationFunction und ableitende Klassen) wird jeweils pro Schicht festgelegt. Ein- und Ausgaben des Netzes sowie sämtliche Zwischenwerte werden als double Werte bearbeitet. Die Klasse FeedForwardNet modelliert ein derartiges Netz: Es besteht aus einer Einund einer Ausgabeschicht, deren Größe beim Erzeugen des Netzes festgelegt wird. Die Aktivierungsfunktion dieser Schichten ist die Identitätsfunktion. Mittels der Methode addhiddenlayer können beliebig viele verdeckte Schichten mit beliebigen Aktivierungsfunktionen hinzugefügt werden. Die Gewichte werden bei Erzeugung des Netzes zufällig initialisiert. Die Ein- und Ausgaben des Netzes werden jeweils durch Arrays von double Werten repräsentiert. 1.2. Self Organizing Maps Self Organizing Maps (SOM) sind eine Spielart der sogenannten Kohonen Netze, die im Gegensatz zu Feed Forward Netzen durch unüberwachtes Lernen trainiert werden. Auch zu diesem Netztyp findet sich auf den Seiten der Uni Münster eine interessante Einführung (http://wwwmath.uni-muenster.de/softcomputing/lehre/material/wwwnnscript/strfx/koh_main.html#som. Netze dieses Typs bestehen nur aus einer einzelnen Schicht Neuronen. Jedes dieser Neuronen hat einen Gewichtsvektor der Größe des Eingaberaums, man kann sich die einzelnen Neuronen also als Koordinaten auf einer (evtl. vieldimensionalen) Karte vorstellen. Die Neuronen werden z.b. rechteckig oder in einem hexagonalen Gitter angeordnet, so dass jedes Neuron eine Anzahl von Nachbarneuronen hat. Sobald ein Eingabevektor angelegt wird, bestimmt das Netz das Neuron, dessen Gewichtsvektor die Seite 5

größte Ähnlichkeit zum Eingabevektor aufweist. Dieses sogenannte "Gewinner-Neuron" bekommt eine Aktivierung von 1.0, durch eine Nachbarschaftsfunktion werden weitere Neuronen in seiner Umgebung angeregt, die ebenfalls eine (geringere) Aktivierung bekommen. Die Ausgabe des Netzes ist die "Karte" mit den "eingezeichneten" Aktivierungen der Neuronen. Unsere Implementierung der SOM ist die Klasse KohonenNet. Beim Erzeugen einer Instanz dieser Klasse werden die Größe des Inputvektors sowie Höhe und Breite der Karte angegeben. Um den Rechenaufwand gering zu halten, haben wir uns auf eine rechteckige Karte beschränkt. Abstände und Ähnlichkeiten werden über den euklidischen Abstand ermittelt. Bei der Instanziierung der SOM werden die Gewichtsvektoren zufällig initialisiert. Um das Verhalten der SOM flexibel zu gestalten, lässt sich die Nachbarschaftsfunktion austauschen: Die Klasse NeighbourhoodFunction stellt ein Attribut radius zur Verfügung, das den Nachbarschaftsradius repräsentiert. Alle ableitenden Klassen müssen die Methode computeactivation implementieren, die die Aktivierung für einen vorgegebenen Abstand zum Gewinner-Neuron berechnet. Mehrere Implementierungen sind bereits vorhanden. Sobald ein Eingabevektor angelegt wird, bestimmt die SOM das Gewinner-Neuron und ermittelt für alle Neuronen die Aktivierung. Diese "Karte" wird dann zurückgegeben. Über die Attribute winnerx und winnery lassen sich die Koordinaten des Gewinner-Neurons abfragen. 2. Training Das Paket de.htwdd.rosenkoenig.neuro.net.training enthält Klassen, die zum Training von Neuronalen Netzen genutzt werden. Seite 6

Klassendiagramm de.htwdd.rosenkoenig.neuro.net.training 2.1. Feed Forward Netze Für das Training von Feed Forward Netzen existieren verschiedene (überwachte) Trainingsverfahren (z.b. Backpropagation, Quickpropagation,...), von denen es teilweise noch unterschiedliche Varianten gibt. Um dieser Vielfalt gerecht zu werden, wurde ein modulares Trainingssystem entworfen, dass auf einfache Weise den Austausch des Trainingsverfahrens ermöglicht. Bei überwachten Lernverfahren werden dem zu trainierenden Netz jeweils Paare von Einund Ausgabedaten präsentiert. Ein solcher Datensatz wird durch die Klasse Pattern repräsentiert. Die zentrale Klasse des Trainingsvorgangs ist die Klasse Trainer. Diese Klasse enthält verschiedene Attribute, die den Trainingsprozess beeinflussen, z.b. die Lernrate (learningrate), das Momentum (momentum) oder den Fehler, bei dessen Erreichen das Training beendet werden soll (maxerror). Weiterhin kann vorgegeben werden, ob nach dem Training Pruning durchgeführt werden soll. Es handelt sich hier allerdings nicht um "echtes" Pruning, stattdessen werden alle Gewichte, die unterhalb einer bestimmten Schwelle liegen, auf 0 gesetzt. Die Angabe des Seite 7

Validierungskoeffizienten (validationcoeff) bestimmt das Verhältnis von Validierungs und Trainingsmenge. Ein Validierungskoeffizient von 0.1 würde bei einer Patternanzahl von 200 bedeuten, dass 180 Pattern für das Training und 20 Pattern für die Validierung genutzt werden. Für den eigentlichen Trainingsvorgang nutzt der Trainer ein konkretes Lernverfahren, repräsentiert durch die abstrakte Klasse TeachingAlgorithm. Die Methode teachpatterns dieser Klasse wird zyklisch aufgerufen, sie bekommt die Trainingsmenge als Parameter. teachpatterns führt also einen Lernzyklus über der gesamten Trainingsmenge durch. Von TeachingAlgorithm ableitende Klassen können über das Attribut trainer auf die Trainingsparameter (Lernrate,...) zugreifen. Aus Zeitgründen wurde nur das Verfahren Backpropagation (http://wwwmath.uni-muenster.de/softcomputing/lehre/material/wwwnnscript/backpropindex.html) implementiert, weitere Verfahren lassen sich durch Ableiten der Klasse TeachingAlgorithm leicht hinzufügen. Die Klasse Backpropagation kann sowohl für Online- als auch für Offline-Training verwendet werden (Trainingsparameter batchsize) und implementiert außerdem die Varianten Momentum und Flatspot. Die Nutzung von Backpropagation lässt sich in den Beispielklassen BankExample und XORExample nachvollziehen, die beide im Package de.htwdd.rosenkoenig.neuro.net.examples enthalten sind. 2.2. Self Organizing Maps Der Lernalgorithmus für Kohonen Netze (http://wwwmath.uni-muenster.de/softcomputing/lehre/material/wwwnnscript/strfx/koh_algorithmus.html) wurde in der Klasse KohonenTrainer implementiert. Da es sich hierbei um unüberwachte Lernverfahren handelt, bestehen die Pattern im Gegensatz zum überwachten Lernen nur aus einem Eingabevektor. Der KohonenTrainer propagiert diesen Vektor und erhält so das Gewinner-Neuron. Die Gewichte dieses Neurons und seiner Nachbarn werden dann (abhängig von der Lernrate) an den Eingabevektor angeglichen. Welche benachbarten Neuronen wie stark angeglichen werden, hängt von der Nachbarschaftsfunktion und vom Nachbarschaftsradius ab. Um zu Beginn des Lernprozesses ein schnelles "Entfalten" der Kohonen-Karte zu verstärken, wird der Nachbarschaftsradius beim Start des Lernprozesses erhöht und nimmt mit der Zeit ab. So werden bei späteren Durchläufen nur noch "Feinjustierungen" vorgenommen. Die Nutzung des KohonenTrainer ist in der Beispielklasse AnimalExample im Package de.htwdd.rosenkoenig.neuro.net.examples verdeutlicht. Seite 8