Information Technology Reference
In-Depth Information
mit Daten und Fehlerwerten. Die wichtigsten Arrays sind
activations
,
weights
und
thresholds
. Sie definieren den aktuellen Zustand des Netzes. Das Array
teach
ent-
hält die erwünschten Ausgabe- oder Zielwerte. Mit den anderen Arrays werden die Fehler
und Veränderungen der Gewichte berechnet. Für die Definition eines Neuronalen Net-
zes mit Backpropagation steht die Methode
createNetwork()
zur Verfügung. Diese
Methode kommt anstelle eines Konstruktors zum Einsatz, so dass sich die Netzarchitek-
tur verändern lässt, ohne ein neues Objekt erzeugen zu müssen. Die Methode
create-
Network()
nimmt drei Parameter an: die Zahl der Eingaben, die Zahl der verdeckten
Elemente und die Zahl der Ausgabeeinheiten. Dann werden einige nützliche Elemente
berechnet, die Steuerparameter initialisiert und allen Arrays zugeordnet. Dann erfolgt der
Aufruf der Methode
reset()
, um die Netz-Arrays zu initialisieren. Für den Vorwärts-
schritt werden gleich drei Methoden verwendet. Die Methode
readlnputs()
nimmt
einen Datensatz aus der Datenmenge und kopiert die Eingabewerte in die
activati-
ons
der Eingabeeinheiten. Außerdem werden die Zielwerte in das Array
teach
kopiert.
Die Methode
computeOutputs()
führt den vollständigen Vorwärtsschritt durch das
Netz aus. Beginnend bei der ersten Schicht, bildet sie die Summe aus dem Schwellenwert
und allen Aktivierungen der Eingabeeinheiten, multipliziert mit den dazugehörigen Ge-
wichten und ruft die Methode
logistic()
auf, um den Aktivierungswert zu berechnen
und einzustellen. Die Fehlerberechnung beginnt bei der Ausgabeschicht und bewegt sich
zurück in Richtung Eingabe. Als Erstes werden die Ausgabefehler berechnet, indem die
Differenz zwischen den von
computeOutputs()
ermittelten
activations
und den
Werten von
teach
bestimmt wird. Außerdem erfolgt die Bildung der Summe des Quad-
rats der Fehlerwerte, um den mittleren quadratischen Fehler zu ermitteln. Die Differenzen
werden dann mit Hilfe der Ableitungen der Aktivierungsfunktion berechnet. Um die Ge-
wichte anzupassen, berechnet die Methode
adjustWeights()
zuerst die aktuellen Ge-
wichtsdeltas (
wDeltas
) und fügt diese dann den Gewichten hinzu. Dabei wird das Array
wDerivs
auch dazu verwendet, die gesammelten Gewichtsveränderungen zu speichern,
die auf die Gewichte angewendet werden sollen. Bei der Musteraktualisierung enthält
wDerivs
nur die Veränderungen aus dem aktuellen Muster. Nach der Anpassung der
Gewichte wird das Array
wDevis
wieder auf
null
gesetzt. Dann erfolgt die Anpassung
der Schwellengewichte aller Einheiten der verdeckten Schicht und der Ausgabeschicht.
Die Berechnungen verlaufen ähnlich wie die für die normalen Gewichte, wobei die Ein-
richtung eines speziellen Arrays für den Schwellenwert notwendig ist.
Die Implementierung eines Neuronalen Netzes mit Kohonen-Karten erfolgt in der Klas-
se namens
KmapNet
. Ihre Struktur ähnelt der für die Klasse
BackProp
. Der Hauptunter-
schied zwischen den Klassen
KmapProp
und
BackProp
besteht darin, dass das Lernen
bei der einen nach der selbstorganisierten und bei der anderen nach der überwachten Metho-
de erfolgt. Kohonen-Karten lernen durch Selbstorganisation, also gibt es keine Soll-Ausga-
be, sondern nur verschiedene Eingaben. Zur Klasse
KmapNet
gehören vier verschiedene
Mengen von Elementen oder Parametern. Die erste Gruppe wird zur Datenverwaltung ein-
gesetzt. Darin findet sich ein Verweis auf die Datenmenge
dataset
, der aktuelle Daten-
satzindex
recinx
, die Gesamtzahl der Datensätze in der Datenmenge,
numRecs
, und