MAL-Homepage
Inhaltsverzeichnis
MAL Dokumentation: Neurale Netze
1. ALLGEMEINES
Neuronale Netze (kurz NN) sind fehlertolerante Lernsysteme, die
auf einem stark vereinfachten Modell von biologischen
Nervensystemen basieren.
Die derzeit in MAL realisierten Neuronalen Netze sind sog. Feed
Forward Netze, die mit Back-Propagation lernen. Das ist auch
der einzige Typ von Neuronalen Netzen, der hier erläutert wird.
Back-Propagation Netze werden zur Mustererkennung benutzt. Die Muster
werden in einer Lernphase den Eingängen des Netzes übergeben. Dabei
werden interne Parameter (die synaptischen Gewichte) stufenweise
angepaßt, sodaß die Ausgangswerte des Netzes einigermaßen mit
vorgegebenen Sollwerten korrespondieren.
Sämtliche Worte zum Thema NeuronalenNetze sind unter
Topic neural zu finden.
MAL-Homepage Inhaltsverzeichnis
2. LOGISCHER AUFBAU VON NN
NN sind Netzwerke von Recheneinheiten (genannt Units),
deren Funktion ursprünglich von biologischen Neuronen abgeleitet,
jedoch stark vereinfacht wurde.
MAL-Homepage Inhaltsverzeichnis
3. LERNDATENSÄTZE
Das ´Trainieren´ eines Neuralen Netzes geschieht anhand von Beispielen.
MAL-Homepage Inhaltsverzeichnis
4. NETZTOPOLOGIE
Die realisierbaren Netztopologien lassen sich durch
Unit-Anzahlen per Layer beschreiben (Feed Forward
Netze haben keine Schleifen). Diese Anzahlen sind
in einem Verbund anzugeben.
z.B.: [ 10 3 4 5 ]
bedeutet: 10 Eingänge (input units)
( Muster Sollwert) [ [ 0 1 2 1 ] [ 2 1 0 0 ] [ 3 1 1 0 ] [ 1 2 2 1 ] [ 0 2 2 1 ] [ 2 0 0 0 ] ] >> mustermenge
mustermenge [ 3 2 1 ] 0.7 create_net >> netz
netz . [ ( Untergrenze Ein/Ausgangswerte) [ -0.75 -0.5 -0.5 -0.25 ] ( Obergrenze Ein/Ausgangswerte) [ 3.75 2.5 2.5 1.25 ] [ ( synaptische Gewiche von Layer 1 auf 2) [ -0.39561 -0.400938 -0.133243 -0.377257 ] [ -0.116617 -0.228584 0.0298851 -0.245901 ] ] [ ( synaptisch Gewichte von Layer 2 auf 3) [ 0.198325 0.445397 -0.222948 ] ] ]
MAL-Homepage Inhaltsverzeichnis
5. LERNEN
Zum Trainieren des Netzes dient das Wort
back_prop.
Syntax:
[ lern1 .. lernN ] netz anz -> [ lernka lernkb ] lnetz
'anz' ist die Anzahl der Lerndurchläufe. 'lernka' und 'lernkb'
sind Realfelder mit Lernkurven, die die Abweichungen
der Istwerte von den Sollwerten im Zuge des
Lernen anzeigen (jeweils auf 100 Stützpunke normalisiert).
'lernka' ... Euklidische Fehlerdistanz.
'lernkb' ... Durchschnittliche Trefferanzahl pro Versuch.
'lnetz' ist das trainierte Netz.
Beispiel:
[ [ 0 1 2 1 ]
[ 2 1 0 0 ]
[ 3 1 1 0 ]
[ 1 2 2 1 ]
[ 0 2 2 1 ]
[ 2 0 0 0 ] ] >> mustermenge
mustermenge [ 3 2 1 ] 0.7 create_net >> netz
mustermenge netz 10000 back_prop -> netz >> lernkurven
lernkurven 1 , draw screen
MAL-Homepage Inhaltsverzeichnis
6. ABFRAGEN
Mit forward_prop
kann das Netz abgefragt werden.
Syntax:
muster lnetz -> erg
Beispiel:
[ 1 1 2 ] netz forward_prop . [ 0.78 ]Die Zahlenfolge [ 1 1 2 ] hat also eher aufsteigende Tendenz.
MAL-Homepage Inhaltsverzeichnis
7. KLASSE FÜR NEURONALE NETZE
Vor allem wenn man ein System mit mehreren Neuralen Netzen
mit einer Bedienoberfläche aufbauen will, empfiehlt es sich,
die Klasse neural_class
zu verwenden. Diese Klasse besitzt unter anderem eine
Funktion menu, die ein Menü zum Konfigurieren, Initialisieren
und Trainieren des Netzes aufruft.
Für die praktische Anwendung muss man immer ein Klasse
definieren, die von neural_class
abgeleitet ist und die
Funktion get_patterns neu definiert. Diese
Funktion ist für das Heranschaffen der Lernmuster verantwortlich.
Für Test und Übungszwecke kann aber auch die Klasse
neural_class
direkt verwendet werden, da eine Musterfunktion für
get_patterns vordefiniert ist.
Beispiel:
public \ neural >voc
interface_of neural_class >voc
create_neural_net >> testnetz
testnetz menu -> testnetz
MAL-Homepage Inhaltsverzeichnis