Neuronale Netze: Netzwerk

4. Netzwerk

Der Entwurf eines neuronalen Netzes hat häufig experimentellen Charakter. Das Netzwerk darf weder zu komplex sein, da dann zu viele Parameter aus den Daten zu bestimmen sind und das Netz die Fähigkeit verliert zu verallgemeinern, noch zu wenig komplex, da dann die Korrelationen der Daten durch das Netzwerk nicht erfaßt werden können. In diesem Abschnitt werden einige wichtige Punkte diskutiert, die für den Entwurf eines neuronalen Netzes wichtig sind.

4.1 Einführung

Bis die optimale Struktur eines neuronalen Netzes gefunden ist, muß man in den meisten Fällen eine Reihe von Vorentwürfen ausprobieren und schrittweise verbessern. Es ist zwar häufig möglich, das Verhalten eines gängigen neuronalen Netzes wie etwa eines Mehr-Schicht Perceptron abzuschätzen, Details müssen aber in der Regel variiert werden. Trotzdem ist damit eine gewisse Planung eines neuronalen Netzes möglich.

Wir werden sehen, daß insbesondere die korrekte Komplexität eines Netzes schon bei der Planung zu berücksichtigen ist.

4.2 Entwurf eines Mehr-Schicht Perceptrons

Das Mehr-Schicht Perceptron stellt das am meisten verwendete neuronale Netz dar. Der Entwurf eines solchen Netzes soll hier exemplarisch dargestellt werden, viele Punkte sind für andere neuronale Netze in ähnlicher Weise gültig.

Ein Mehr-Schicht Perceptron besteht aus einer Eingabeschicht, einer oder mehrerer Zwischenschichten und einer Ausgabeschicht (siehe Abbildung). Es dient meist der Vorhersage von Daten: Aus den in der Eingabeschicht eingegebenen Daten werden die Daten der Ausgabeschicht vorhergesagt. Die Verarbeitung der Daten geschieht in den Zwischenschichten. Ein wesentlicher Parameter des Netzes ist die Anzahl der Neuronen. Sie bestimmt im wesentlichen die Komplexität des Netzes. Die Anzahl der Neuronen der Ein- und Ausgabeschicht ist durch die Aufgabe des Netzes und durch die Kodierung der Daten vorgegeben. Variiert werden kann die Zahl der Zwischenschichten und die Zahl der Neuronen in den Zwischenschichten.

Ein neuronales Netz

4.3 Zwischenschichten

Die Zwischenschichten determinieren die Eigenschaften des Netzes, insbesondere die Fähigkeit zur Verallgemeinerung. Die Anzahl der Neuronen in den Zwischenschichten muß groß genug sein, um die gestellte Aufgabe zu erfüllen, sie muß klein genug sein, um eine sinnvolle Verallgemeinerung durch das Netz zu ermöglichen. Außerdem bestimmt die Anzahl der Neuronen in den Zwischenschichten die Anzahl der Verknüpfungen innerhalb des Netzes und damit die Komplexität des Netzes. In einem Netz mit einer Zwischenschicht ist die Anzahl der Verknüpfungen proportional zu der Anzahl der Neuronen in der Zwischenschicht. Für jede Verknüpfung gibt es ein Gewicht. Man benötigt eine ausreichende Zahl von Daten für das Training des Netzes, um die Gewichte hinreichend genau bestimmen zu können. Diese Bedingungen wirken unterschiedlich.

In der Praxis besteht oft ein weiteres Problem: Die Eingabedaten enthalten unter Umständen redundante Information, die auch nicht durch eine geeignete Kodierung aufgehoben werden kann. In diesem Fall sollte das Netz die redundante Information herausprojizieren können, also eine Kompression der Eingabedaten leisten können. Dazu muß die Zwischenschicht weniger Neuronen haben, als die Eingabeschicht.

Es wurden vielfach Vorschläge zu Berechnung der Größe der Zwischenschichten gemacht, diese widersprechen sich aber zum Teil und sind praktisch von geringer Bedeutung. Wie schon oben erwähnt, besteht die Entwicklung eines neuronalen Netzes zum großen Teil aus experimenteller Arbeit. Häufig startet man mit einer bestimmten Anzahl von Neuronen in einer Zwischenschicht und variiert diese solange, bis das Netz die gewünschten Eigenschaften hat. Dazu erzeugt man sich geeignete Mengen von Trainings- und Testdaten, trainiert das Netz und testet die Verallgemeinerungsfähigkeiten mit den Testdaten. Je nach Ergebnis kann man dann die Zahl der Neuronen variieren. Folgende heuristischen Regeln haben sich bewährt:

  1. Wenn der Fehler im Trainingszyklus klein ist, der Fehler beim Testen dagegen groß, verallgemeinert das Netz nicht. In der Regel bedeutet das, daß die Zahl der Gewichte und damit die Zahl der Neuronen in der Zwischenschicht zu groß ist.
  2. Wenn der Fehler im Trainingszyklus groß ist, hat das Netz eventuell zu wenig Neuronen in der Zwischenschicht.
  3. Wenn alle Gewichte von etwa der gleichen Größenordnung sind, dann hat das Netz meist zu wenig Neuronen.
  4. Man kann immer Neuronen hinzufügen, die Fehler können aber auch andere Ursachen haben! Beispielsweise kann man nicht erwarten, daß ein Netz mit einem geringen Fehler vorhersagt, wenn die Rohdaten selbst mit einem höheren statistischen oder systematischen Fehler behaftet sind.

4.4 Lernalgorithmen

Es gibt unterschiedliche Lernalgorithmen, mit denen ein neuronales Netz trainiert werden kann. Für ein Mehr-Schicht-Perceptron, wie wir es hier diskutieren, stehen Standard-Algorithmen zur Verfügung. Der einfachste Lernalgorithmus ist ein Gradientenverfahren. Dabei wird versucht, den Fehler der Ausgabedaten zu minimieren, indem man untersucht, in welche Richtung sich die Kopplungen zwischen den Neuronen ändern müssen, damit der Fehler abnimmt. Das einfache Gradientenverfahren wird heute eigentlich nicht mehr benutzt. Populär und in den meisten Fällen effizient sind weiterentwickelte Verfahren, die unter dem Stichwort error back-propagation bekannt sind. Welcher Lernalgorithmus benutzt wird, hängt häufig von den Anforderungen ab, die man hat. Benutzt man fertige Softwarepakete, so stellen diese in der Regel eine Zahl von bewährten Lernalgorithmen zur Verfügung und geben in der Dokumentation an, welche Eigenschaften die unterschiedlichen Algorithmen haben.



Mit ICRA gekennzeichnet. Valid HTML 4.0! Valid CSS!

Copyright (c) Andreas Mielke 1999-2010. Letzte Änderung: 04.03.2011. info@andreas-mielke.de