Information Technology Reference
In-Depth Information
Zahl der diskreten Werte entspricht. „Ja“ würde dann also 1 0 0 ergeben, „nein“ wäre 0
1 0 und „vielleicht“ entspräche 0 0 1 . Ein Eingabedatensatz mit zehn diskreten Variab-
lenfeldern, von denen jedes drei mögliche Werte annehmen kann, würde auf diesem Wege
für die Eingabe in ein Neuronales Netz zu einem Array von 30 Elementen expandieren.
Eine weitere Konvertierung, die vorgenommen werden muss, ist die Skalierung der konti-
nuierlichen Daten, die nicht im Bereich 0,0 bis 1,0 liegen. Auch hierzu wird eine einfache
lineare Skalierung durchgeführt. Mit der Methode getNormalizedRecordSize()
wird die Expansion berechnet, die während des Normalisierungsvorgangs auftritt. Die Me-
thode normalizeData() übernimmt das eigentliche Skalieren und die Übersetzung in
Eins-aus-N-Codes. rawData sind die Daten, die aus der Datei eingelesen werden. Das
Resultat der Vorverarbeitung ist das Doubles-Array NormNumRec . Wenn diese Vorgänge
abgeschlossen sind, enthält der Vektor normalizedData einen vollständigen Daten-
satz, der dem Original entspricht und im Neuronalen Netz eingesetzt werden kann. Die
Methoden getClassField() werden verwendet, um nach einem Übungsdurchgang
im Neuronalen Netz die Ergebnisse darzustellen. Die erste Methode nimmt den Index des
Datensatzes und gibt den ursprünglichen „Klassenfeld“-Wert zurück. Die zweite Methode
nimmt ein Array mit Gleitkommazahlen und den Startindex der Ausgabeeinheit. Mit der
Methode DiscreteVariable.getDecodedValue() wird das Element mit dem
höchsten Wert im Array ausgewählt, in den Index einer diskreten Variable konvertiert
und dann mit dem entsprechenden Stringwert abgerufen. Das sind im Grunde dieselben
Schritte in umgekehrter Reihenfolge wie bei normalizeData() , wo ein diskreter Wert
in einen Eins-aus-N-Code konvertiert wird.
Die Klasse BackPropagation besitzt vier verschiedene Gruppen von Elementen
oder Parametern. Der erste Satz ist für die Datenverwaltung zuständig: Er enthält einen
Verweis auf dataset , einem Objekt von DataSet , den Vektor data , in dem die Daten
zur Übung enthalten sind, recinx , den Index des aktuellen Datensatzes, numRecs , die
Gesamtzahl von Datensätzen in der Datenmenge sowie fieldsPerRec , die Anzahl der
Felder pro Datensatz. Der nächste Satz enthält eine Reihe von Netzparametern, darunter
numInputs , numHidl und numOutputs , mit denen die Zahl der Einheiten in jeder
der drei Netzschichten definiert wird. Manche Problemstellungen erfordern mehrere ver-
deckte Schichten, insofern kann diese Implementierungsvariante leicht erweitert werden,
um dies zu ermöglichen. numUnits ist die Summe der drei Schichten und numWeights
die Gesamtzahl aller Gewichte im Netz. In der Implementierungsvariante sind die fol-
genden Parameter enthalten: mode , lernRate , momentum und toleranz . Wenn der
Parameter mode den Wert 0 hat, befindet sich das Netz im Trainingsmodus und die Ver-
bindungsgewichte werden entsprechend angepasst. Steht mode auf 1, sind die Netzge-
wichte gesperrt. Mit den Parametern lernRate und momentum wird das Ausmaß der
Gewichtsaktualisierungen gesteuert, wie zuvor beschrieben. Mit dem Parameter tole-
ranz wird festgelegt, wie nah der erwartete Ausgabewert dem erwünschten Wert kom-
men muss, bevor das Fehlersignal als 0 angenommen wird. Wenn toleranz zum Bei-
spiel auf 0,1 steht und der erwünschte Ausgabewert 1,0 beträgt, würden alle Ausgabewer-
te, die größer sind als 0,9 keine Fehlermeldung auslösen. Der nächste Satz enthält Arrays
Search WWH ::




Custom Search