Zurück zum Inhaltsverzeichnis des Manuskripts

10 Einrichten des experimentellen Netzes

Netzwerkkonfigurationsdatei

Bevor mit dem experimentellen Netz gearbeitet werden kann, muss es eingerichtet werden. Das für die Experimente entwickelte Netz folgt einem einfachen Feedforward-Mechanismus. Es ist durch die

charakterisiert. Mit diesen Zahlenwerten wird das Netz konfiguriert. Sie sind in einer Textdatei namens netzKonfig.txt im Daten-Verzeichnis festzuschreiben. Für diese Datei gilt Folgendes:

  1. Sie wird von der Funktion holeNetzKonfig des Skripts einrichten.ps1 ausgewertet.
  2. Sie muss Zeilen der Form
        <Name> = <Wert>
    enthalten, in denen ganz links und ganz rechts Wortlücken stehen dürfen, ebenso direkt neben dem Gleichheitszeichen. Alle anderen Zeilen werden ignoriert. Die Reihenfolge der Zeilen spielt keine Rolle.
  3. Als <Name> sind nur die folgenden Zeichenfolgen erlaubt: alpha, anzS, anzEN, anzHN und anzAN. Die Datei muss Zeilen mit diesen Zeichenfolgen als <Name> enthalten, und jede von ihnen darf nur genau einmal vorkommen.
  4. Als <Wert> ist in dem Fall, dass als <Name> alpha angegeben ist, ein Double-Literal in deutscher Schreibweise (Komma als Dezimaltrenner) aus dem Bereich ]0, 1[ einzusetzen. In allen anderen Fällen wird als <Wert> ein Int-Literal erwartet.

Auf eine Beschränkung von Obergrenzen ist wegen des experimentellen Charakters des Netzes verzichtet worden. Eine minimale netzKonfig.txt-Datei besteht aus genau 5 Zeilen. Soll sie ein Netz beschreiben, das aus vier Schichten besteht, mit fünf Neuronen in der Eingabeschicht, sechs in jeder versteckten Schicht und sieben in der Ausgabeschicht, dann könnte der Dateiinhalt folgendermaßen aussehen:

alpha = 0,1 anzS = 4 anzE = 5 anzHS = 6 anzA = 7

Skript einrichten.ps1

Das Einrichten des Netzes erfolgt durch Aufruf des Skripts einrichten.ps1, das die Existenz der Textdatei netzKonfig.txt im Daten-Verzeichnis erwartet. Diese Datei ist die Benutzerschnittstelle zum Konfigurieren des Netzes. Sie muss vor dem Skriptaufruf geeignet editiert und ggf. erst angelegt werden. Im Kapitel 14 (Programmauflistungen und Literaturhinweise) findet sich eine beispielhafte netzKonfig.txt-Datei im PDF-Format.

Matrizenkonfiguration

einrichten.ps1 überwacht das Einhalten der Wertgrenzen und überführt die Angaben zu den Schichten- und Neuronen-Anzahlen in ein zweidimensionales Int-Array namens matrizen, das die Dimensionen der durch die Konfiguration festgelegten Gewichtsmatrizen beschreibt. Es enthält für jede Matrix genau eine Zeile, deren erste Komponente die Zeilen- und deren zweite die Spaltenzahl dieser Matrix enthält. Für die gerade beschriebene Konfiguration (4 Schichten, 5 Neuronen in der Eingabeschicht, 6 Neuronen in jeder der beiden versteckten Schichten und 7 Neuronen in der Ausgabeschicht) sieht das Array matrizen folgendermaßen aus:


Array matrizen

Das Skript einrichten.ps1 speichert den Inhalt des matrizen-Arrays in der Datei matKonfig.kfg und legt diese im Daten-Verzeichnis ab.

Anfangsgewichte

Danach erzeugt das Skript Dateien mit Anfangsgewichten für die Matrizen und speichert sie ebenfalls im Daten-Verzeichnis. Das Skript nummeriert die Matrizen (ab 0) und nimmt die Nummern in die Dateinamen auf. So entstehen die Dateien gew0.mat.start, gew1.mat.start usw. Für die Zufallswerte der Gewichte benutzt das Skript eine Faustformel, die in der Statistik im Rahmen von Arbeiten zur Varianzstabilität entwickelt worden ist. Nach ihr bestimmt die Anzahl der Zuleitungen zur jeweiligen Eingabeschicht die untere und obere Grenze für die Anfangsgewichte. Bei m Zuleitungen sollen die Anfangswerte ungleich 0 sein und zwischen -1/√m und 1/√m liegen. Das bedeutet, dass im Prinzip jede Gewichtsmatrix etwas unterschiedliche Grenzen bei den Anfangsgewichten hat. Das Skript endet mit der Ausgabe einer Zusammenfassung der 5 Konfigurationsparameter.

Einrichtbeispiel

Soll beispielsweise bei einer Schrittweite von 0,1 für den Gradientenabstieg ein vierschichtiges Netz eingerichtet werden, bei dem die Eingabeschicht fünf, die beiden versteckten Schichten jeweils sechs und die Ausgabeschicht sieben Neuronen enthält, dann ist zunächst mit einem Texteditor die netzKonfig.txt-Datei anzulegen und im Daten-Verzeichnis zu speichern. Ihre minimale Ausprägung sieht (bis eventuell auf der Reihenfolge der Zeilen) folgendermaßen aus:

alpha = 0,1 anzS = 4 anzE = 5 anzHS = 6 anzA = 7

Danach wird das Einrichten-Skript im Version_0-Verzeichnis gestartet. Die Zeichenfolge PS7> endet mit einer Wortlücke und ist das Promptzeichen der PowerShell:

PS7> ./einrichten Schrittweite : 0.1 Schichten : 4 Neuronen Eingang: 5 Neuronen Hidden : 6 Neuronen Ausgang: 7 Das Netz ist eingerichtet PS7>

Eingebundene Funktionen

In dem Skript einrichten.ps1 werden die PowerShell-Funktionen der Skripte alphaHolen.ps1 und einrichtFktn.ps1 aus dem Tools-Verzeichnis verwendet. Der Quellcode beider Skripte findet sich jeweils als PDF-Datei im Kapitel 14 (Programmauflistungen und Literaturhinweise).



Zurück zum Inhaltsverzeichnis des Manuskripts