GMU:Neuronale Netze - eine Einführung für Künstler/Präsentation/Neuronale Netze in Pure Data: Difference between revisions

From Medien Wiki
Line 56: Line 56:


==Benutzen des Netzes==
==Benutzen des Netzes==
Ist das Netz trainiert, muss man es wieder in den normalen Modus versetzen. Dazu muss man den Neuronalen Netz die Nachricht "run" schicken. Folgende Konsolenausgabe sollte erscheinen:
nn: running
==Netze wiederverwenden==
==Netze wiederverwenden==
==Links==
==Links==

Revision as of 18:19, 30 June 2010

Neuronale Netze in Pure Data

Puredata ANN Objekte

Neuronale Netze können in Pure Data mit Hilfe der ANN-Library realisiert werden. Die Library enthält drei Objekte:

Hier wird das Erstellen eines Neuronalen Netzes mit Hilfe des ann_mlp Objektes erklärt.

Generelles

Die Steuerung des ann_mlp Objektes geschieht durch Nachrichten. Das neuronale Netz hat als Eingabe eine Liste von float Werten. Alles was nicht aus float Werten besteht, muss erst in float Werte umgewandelt werden. Die Ausgabe des Neuronalen Netzes besteht ebenso nur aus float Werten.

Am besten ist es, Eingaben um 0 zu zentrieren, d.h. -1 bis 1 (zur Not kann man auch bei 0 beginnen) und nicht 12 bis 99.

Neuronale Netze müssen trainiert werden um zu funktionieren. Bevor man das Neuronale Netz benutzen kann, muss also erst einige Zeit darin investiert werden es zu trainieren. Tranierte Netze können gespeichert und geladen werden.

Erstellen des Netzes

Netz mit zwei Eingabeneuronen und einem Ausgabeneuron erstellen

Um ein mlp-Netz zu erstellen braucht man zuerst ein ann_mlp Objekt. Um das Netz aber auch wirklich zu erstellen, muss man dem ann_mlp Objekt eine Nachricht mit dem Wort "create" und mehreren Parametern übergeben. Folgende Parameter sind Möglich:

create <Anzahl Eingabeneuronen> <Anzahl Ausgabeneuronen>
<Anzahl der Schichten> <Anzahl versteckte Neuronen>
<Verbindungsrate> <Lernrate>

Die Anzahl der Eingabeneuronen und die Anzahl der Ausgabeneuronen müssen immer angegeben werden, die anderen Parameter sind optional.

Als Ausgabe in der Konsole sollte man jetzt folgende Ausgabe bekommen:

created ann with:
num_input = 2
num_output = 1
num_layers = 3
connection_rate = 1.000000
learning_rate = 0.700000

Trainieren des Netzes

Neuronales Netz mit "train" Nachricht

Um das Neuronale Netz zu trainieren muss man ihm die Nachricht "train" schicken. Das Netz wird damit in den Training-Modus versetzt, erkennbar an folgender Konsolenausgabe:

nn:training

Nachdem das Neuronale Netz in den Training-Modus versetzt wurde erwartet es eine Liste mit Eingaben und ihren gewünschten Ausgaben Wir werden hier als Beispiel das UND benutzen. Die Eingaben und Ausgaben dafür sind:

A B A und B
1 1 1
1 0 0
0 1 0
0 0 0
ann_mlp, rechtes Outlet ist der Fehler (MSE)

Dem Neuronalen Netz müssen diese vier Fälle beigebracht werden. Bei einem Neuronalen Netz genügt es nicht einfach alle Fälle einmal zu trainieren, sondern es muss alles so oft trainiert werden, bis der Fehler (MSE, rechtes Outlet) klein genug ist. Am besten trainiert man das neuronale Netz mit Hilfe eines Counters.

Trainieren mit einem Metronom

Sobald das Metronom angeschaltet wird, lernt das Neuronale Netz alle 10ms einen zufällig ausgewählten Fall. In den Nachrichten sind die Eingaben und Ausgaben hintereinander geschrieben. Man gibt also für jede Eingabe das gewünschte Ergebnis an. Je länger das Metronom läuft, desto kleiner sollte der Fehler werden. Ist der Fehler klein genug, kann die Lernphase abgeschlossen werden. Ab wann der Fehler klein genug ist, muss ausprobiert werden. Für ein einfaches Beispiel wie das logische UND, muss der Fehler nicht sehr klein sein um zu funktionieren.

Benutzen des Netzes

Ist das Netz trainiert, muss man es wieder in den normalen Modus versetzen. Dazu muss man den Neuronalen Netz die Nachricht "run" schicken. Folgende Konsolenausgabe sollte erscheinen:

nn: running

Netze wiederverwenden

Links