Dieses Video zur Einführung wurde mit einer Vorgänger-Version des aktuellen NeuroLab erstellt.

NeuroLab - Neuronale Netze im Computer (Teil 1)

Die folgende Bildschirmkopie des Programms NeuroLab zeigt die Erkennung des Buchstabens „A“ durch das Kohonennetzwerk nach selbständigem, d.h. “unsupervised” Lernen des gesamten Alphabets:

NeuroLab – Selbstorganisierende Karten
Wie kommt die Welt in den Kopf? Dies zu verstehen wäre eine wunderbare Erkenntnis. Leider ist unser Gehirn ein so komplexes Gebilde, dass wir diese Frage kaum hinreichend beantworten können. Aber – anhand eines vergleichsweise simplen Modells können wir doch einige Prinzipien sichtbar machen und grundlegende Prozesse ausprobieren. Genau zu diesem Zweck habe ich das Programm NeuroLab entwickelt. Den letzten Anstoß dazu gab mir das Buch Geist im Netz vom deutschen Psychiater, Psychologen, Philosophen und Gehirnforscher Prof. Dr. Manfred Spitzer.

Beachte: Für das weitere Verständnis des Textes ist es hilfreich bis notwendig, über ein grundlegendes Wissen über Nervenzellen, Sinnesorgane etc. zu verfügen.

Einleitung
Unser Gehirn enthält über 100 Milliarden Neuronen vernetzt durch Billionen von Synapsen! Ein unvorstellbar kompliziertes Netzwerk arbeitet da Tag aus Tag ein, um eine Vielfalt von Lebensvorgängen zu steuern. Natürlich reicht hier nicht der Platz, um alle Bereiche auch nur anzusprechen. Der geneigte Leser möge hierzu z.B. die Bücher von Manfred Spitzer zu Rate ziehen!

Wir wollen uns auf grundlegende Vorgänge des Lernens beschränken, deren Eigenheiten wir anhand eines Simulationsprogramms selbst studieren können. Dazu betrachten wir folgendes Problem: Die Leistungen des Gehirns werden erst dadurch ermöglicht, dass die Gehirnzellen, Neuronen genannt, in der richtigen Weise miteinander verbunden werden, denn eine Zelle allein kann nur Nervenimpulse weiterleiten oder unterdrücken. Wenn nun alle Neuronen mit allen anderen über alles „sprächen“,  würde nur ein großes Durcheinander entstehen. Die Gebiete im Gehirn – Areale genannt  – müssen sich also auf Teilaufgaben spezialisieren, die sie durch geeignete Vernetzung der enthaltenen Neuronen bearbeiten. Da gibt es Bereiche für’s Sehen, Hören, Sprechen, Tasten, usw. Berücksichtigt man nun die immense Anzahl existierender Verknüpfungen, so stellt man fest: Die Information über eine „brauchbare“ Verschaltung würde weit mehr an Speicherplatz benötigen, als unser gesamtes Genom bereitstellt. Daraus folgt: Die Neuronen im Gehirn müssen im Verlauf des Lebens richtig verknüpft werden. Aber wer überblickt denn die Aufgabenstellung und kann gezielt Verknüpfungen erstellen oder lösen? Dies ist eine typisch „menschliche“ Fragestellung, die unserer Alltagslogik entspringt. Aber wie bei der Evolution passiert hier etwas sozusagen von innen heraus: Das Gehirn erschafft sich im gewissen Sinne von selbst, in dem es die Signale der Sinnesorgane ordnet und in Beziehung zueinander setzt, kurz: indem es lernt. Diese Beschreibung ist gewiss eine starke Vereinfachung der Sachlage. Sie weist uns aber den Weg zu dem, was wir hier mit Hilfe von NeuroLab ausprobieren und demonstrieren können.

Selbst-organisierende Netzwerke
In NeuroLab wird nur eine spezielle Anordnung von Neuronen simuliert, die sogenannte Kohonen self-organizing map. Man kann hier mehrere Phänomene beobachten:

Es sei noch einmal darauf hingewiesen, dass diese Liste nur einige grundlegende Fähigkeiten unseres Gehirns darstellt! Die einzelnen Punkte sind im Folgenden etwas näher beschrieben.

> Erinnerungsvermögen
Sind Neuronen „richtig“ verschaltet, so „feuern“ bestimmte von ihnen immer dann, wenn entsprechende Erregungsmuster der Sinnesorgane anliegen. Man sagt, die Neuronen „repräsentieren“ das Muster, oder: sie „erinnern“ das Muster. Der abstrakte Begriff der Erinnerung erhält so eine materielle Grundlage. Überspitzt formuliert spricht man in der Literatur häufig vom „Großmutterneuron“, welches immer dann feuert, wenn das Bild der eigenen Großmutter gesehen wird.

> Selbstorganisation
Wiederkehrende Erregungsmuster prägen die Vernetzung derart, dass sich nach einiger Zeit manche Neuronen auf diese Muster „spezialisieren“, diese also repräsentieren, wie oben schon erwähnt. Weil nun dieser Prozess der Spezialisierung ohne äußeren steuernden Eingriff passiert, spricht man von Selbstorganisation.

> Gruppierung anhand von Ähnlichkeiten
Wie man durch Ausprobieren feststellen kann, passiert die oben genannte Spezialisierung so, dass ähnliche Muster durch räumlich benachbarte Neuronen repräsentiert werden. Die Muster werden gleichsam sortiert. Kommt ein neues Muster nachträglich hinzu, wird es entsprechend „eingeordnet“.

> Vervollständigung von Teilinformationen
Werden nur Teile eines gelernten Musters dem Netzwerk gezeigt, so kann trotzdem die richtige Zuordnung erfolgen. Etwas lax formuliert könnte man sagen: Das Netzwerk ergänzt die fehlende Information.

> Robustheit gegenüber Ausfällen
Wie man beobachten kann, repräsentieren immer mehrere Neuronen ein Muster, d.h. falls einmal eins oder mehrere Neuronen ausfallen d.h. absterben, wird die Leistungsfähigkeit des Gehirns als Ganzes nicht betroffen. Und was schon für ein simuliertes Netzwerk mit z.B. 100 Neuronen gilt, kann für unser Gehirn mit über 100 Milliarden Neuronen allemal angenommen werden.

> Aufbau topologischer Karten
Für die Verarbeitung von Tastempfindungen an der Körperoberfläche existiert im Gehirn eine landkartenähnliche Repräsentation: Unser Körper wird sozusagen abgebildet auf verschiedene Gehirnbereiche. Dabei sind die Bereiche um so größer, je dichter die Körperregionen mit Tastsensoren besetzt sind bzw. je bedeutsamer der Tastsinn dort für uns ist. Das Gesicht ist auf dieser Karte ist also größer zu sehen als unser Rücken.
Ähnliche „Landkarten“ findet man u.a. für den Gesichts- und Gehörsinn (retinotope und tonotope Karten)

> Neuroplastizität
Die Vernetzung der Neuronen ist nicht an einem Punkt der Entwicklung des Individuums abgeschlossen: Durch gezieltes Training oder im Extremfall durch Amputation eines Körperteils ergeben sich Verschiebungen und Erweiterungen der oben genannten Karten, auch noch im Erwachsenenalter. Beachte: Es verschieben sich nicht die Neuronen als solche, sondern nur deren Zuordnung zu bestimmten Körperregionen!

Das Modell
Damit ein solch komplexes Gebilde wie das Gehirn überhaupt fassbar wird, müssen wir es dramatisch vereinfachen. Wir definieren Bausteine, deren Eigenschaften wir mit Zahlen darstellen können und verbinden diese Bausteine, in dem wir Berechnungspfade und –formeln angeben. Erst dann haben wir eine Grundlage für die Simulation auf dem Computer geschaffen.

Unsere Bausteine sind eine Art künstliche Neuronen, die wir nur durch ihre wichtigste Eigenschaft beschreiben: Sie können weniger oder mehr erregt sein, dargestellt durch eine Zahl im Intervall 0..1. Ihre Erregung wird gesteuert durch andere, verbundene Neuronen, je nach Gewicht der Verbindung. Auch dieses Verbindungsgewicht (Synapsengewicht) wird durch eine Zahl dargestellt.

Die von uns betrachteten Neuronen sind in zwei Schichten angeordnet: Einer Eingangs- und einer Kohonenschicht. Der Name „Kohonen“ bezeichnet einen bekannten Forscher auf diesem Gebiet. Die Erregung der Eingangsneuronen wirkt auf die Neuronen der Kohonenschicht.

Die Eingangsschicht dient lediglich dazu, Erregungsmuster von Sinnesorganen darzustellen, auf die die Neuronen der Kohonenschicht reagieren können. Die Neuronen der Eingangsschicht sind untereinander weder verbunden noch stehen sie in irgendeinem Nachbarschaftsverhältnis zueinander. Im Programm NeuroLab werden sie der Anschaulichkeit halber in rechteckiger Anordnung dargestellt.

Jedes Neuron der Kohonenschicht ist mit jedem Eingangsneuron verbunden, wie das rot hervorgehobene im Bild oben. Der Grad jeder einzelnen Verbindung wird durch das sogenannte Synapsengewicht (s.o.) festgelegt. Das Verhalten jedes Neurons der Kohonenschicht ist damit durch dessen Synapsengewichte bestimmt. Im Bild oben wären dies 5 Werte pro Neuron, macht zusammen 25 Gewichte für die gesamte Schicht.

Die Synapsengewichte jedes einzelnen Neurons lassen sich als Eingangsschicht darstellen, sozusagen durch die Brille dieses Neurons gesehen.

Die Gesamtheit aller Synapsengewichte aller Neuronen der Kohonenschicht legen deren Verhalten fest. Die Lernfähigkeit des Netzwerks wird im Modell durch eine Rechenvorschrift realisiert, nach der die Gewichte aller Synapsen verändert werden, wenn ein Erregungsmuster an der Eingangsschicht anliegt. Ein Trainingslauf besteht darin, dass dem Netzwerk wiederholt alle Muster aus dem Vorrat „gezeigt“ werden und dabei jeweils die Synapsengewichte angepasst werden.

Das Simulationsprogramm NeuroLab
zeigt auf seiner Bedienoberfläche 3 Seiten (Karteikarten, engl. tabulator pages), die verschiedenen Arbeitsschritten zugeordnet sind: (Vergleiche „Geist im Netz“ Seite 113)

Tab Setup, Train & Test
Auf dieser Seite werden Einstellungen für das Training vorgenommen und das Training gestartet. Zu Anfang werden alle Synapsengewichte auf zufällige Werte gesetzt.

Tab Kohonen-Map
Auf diesem Tab sieht man die Reaktion des Kohonen-Layers (in der Mitte) auf Eingabe-Muster (links) sowie die Gewichte einzelner seiner Neuronen (rechts). Im Gegensatz zum obigen Bild (nach erfolgreichem Training) wird hier die Reaktion auf das A vor Trainingsbeginn gezeigt:

Die Neuronen der Kohonen-Schicht reagieren – im wahrsten Sinne des Wortes – bunt und undifferenziert und die Gewichte des gewinnenden Neurons sehen dem A nun gar nicht ähnlich. Kein Wunder, sie sind ja auch zufällige Werte. (Die bunten Farben sind Resultat der Autoranging-Funktion. Die Erregung aller Neuronen ist ähnlich groß d.h. ca. 0,2 – 0,25)

Tab Training History
Hier kann man den Verlauf und das Ergebnis des Selbstorganisationsprozesses studieren. Nach jeweils 10 Epochen d.h. 10-maligem Darbieten der Trainingsmuster wird festgehalten, welches Muster von welchem Neuron repräsentiert wird. Erfolgt die Antwort der Kohonen-Schicht am Anfang noch recht undifferenziert, so gibt es am Ende des Trainings eine eins-zu-eins-Relation zwischen Muster und Neuron. Man beachte, dass ähnliche Buchstaben durch benachbarte Neuronen repräsentiert werden, also O-D, E-F, M-N, P-R. Dies ist ja die eigentliche Leistung des Kohonen-Netzwerks.

Der Trainingsprozess

folgt einem einfachen Schema:

  • Für jedes Muster im Input-Layer finde das am stärksten erregte Neuron in der Kohonen-Schicht, das sogenannte gewinnende Neuron.
  • Für das gewinnende Neuron und seine Nachbarn in der Kohonenschicht verschiebe deren Gewichte in Richtung des angelegten Musters.
  • Je weiter ein Nachbar vom gewinnenden Neuron entfernt ist, umso geringer fällt diese Verschiebung aus.

Dieses Schema wird vielfach – oft tausendfach – wiederholt.

Eine detaillierte Beschreibung der Rechenvorgänge findet man z.B. in Kruse, Mangold, Mechle, Penger: „Programmierung Neuronaler Netze“, Addison-Wesley 1991. Und natürlich kann man den Python-Code von NeuroLab diesbezüglich studieren.

Weiterführende Themen

  • Welche Bedeutung für die „Lebensbewältigung“ von Mensch und Tier haben die vorgestellten Leistungen des Netzwerks?
  • Wenn man das Gehirn mit einem Computer vergleicht, was sind die Gemeinsamkeiten, was die gravierenden Unterschiede?
  • Kann man das Gehirn als Videorecorder betrachten, in den ständig Bilder und andere Sinneseindrücke strömen?

Installation
Lade die Datei NeuroLab.zip auf Deinen PC und starte das Programm main.py! Die Datei alfabet_bw.txt enthält die zu trainierenden Buchstaben.

Mehr Dokumentation findet sich hier und hier.