Biologisch motiviertes Training neuronaler Netze

Schon vor längerer Zeit habe ich mir Gedanken darüber gemacht, wie man neuronale Netze ,,biologischer“ trainiert.

Gegeben sei dazu ein neuronales Netz mit folgender Topologie:

Biologisch trainiertes NetzwerkEs gibt mehrere Schichten, die untereinander vollverknüpft sind, genau wie bei einem Multilayer Perceptron (blaue Verknüpfungen). Jedes Neuron übergibt während jedem Simulationsschritt seine Aktivierung — über eine gewichtete Verbindung (rot) — an jedes Gewicht weiter (aus Gründen der Übersicht habe ich das linke Gewicht mit seinen Verknüpfungen ausgelassen).

Während jedem Zeitschritt werden dann die einkommenden Aktivierungen in jedem Gewicht verarbeitet, indem alle Aktivierungen aufsummiert werden und dem Gewicht aufaddiert werden (es folgt daraus, dass die roten Verbindungen sehr schwach sein müssen, damit die Gewichtsveränderungen in den blauen Verbindungen nicht zu hoch sind).

Das Netz mit den roten Verbindungen ist also das ,,Lehrernetz“, das Netz mit den blauen Verbindungen ist das ,,Schülernetz“. Die beiden Netze teilen sich die Neuronen, haben aber eigene Verknüpfungen. Die Gewichte des Lehrernetzes müssen jetzt nur noch so verändert werden, dass sie in der Lage sind das Schülernetz zu trainieren. Das könnte mit einem evolutionären Algorithmus herbeiführen.
Jeweils ein Organismus besteht aus einem Lehrer- und einem Schülernetz. Zur Berechnung der Fitness werden zunächst die Gewichte des Schülernetzes zufällig initialisiert. Die Aufgabe des Lehrernetzes ist es dann dem Schülernetz ausgewählte Probleme beizubringen. Je nachdem wie gut das Schülernetz nach einer bestimmten Zeit oder Anzahl von Simulationsschritten im Lösen der Aufgabe ist, wird der Organismus bewertet. Die zu lehrenden Probleme müssen natürlich zunächst einfach sein und dürfen nicht zu ,,spezifisch“ oder zu ,,schwer“ werden.

Eine mögliche Erweiterung könnte sein, zwischen jedes Neuron des Schülernetzes und jedes Gewicht des Schülernetzes (die ja durch das Lehrernetz verbunden sind), ein Neuron zu platzieren, dass allein dem Lehrernetz vorbehalten ist. Dadurch ist das Lehrernetz ,,schlauer“.

Hier gibt es eine ausführlichere Version der obigen Grafik.

Anlass für diesen Artikel war übrigens dieser Thread im Board von David Kriesel

Labyrinth Bots — Zielsetzung

Nachdem ich meine Arbeit zum Thema neuronale Netze abgeschlossen hatte, wollte ich mich näher mit evolutionären Verfahren in Kombination mit neuronalen Netzen beschäftigen. Als erstes „kleineres“ Ziel habe ich mir gesetzt einen Roboter in einer physikalisch einigermaßen korrekten, dreidimensionalen Umgebung dazu zu bringen, dass er sich in einem Labyrinth zurechtfindet, nicht gegen die Wände läuft und zumindest versucht einen Ausgang zu finden (den Anspruch auf die Erfolgreiche Befreiung aus dem Labyrinth lasse ich zunächst in Klammern).

Labyrinth BotDer Einfachheit halber ist der Roboter rund und hat 20 Entfernungssensoren mit einer Reichweite von 1,5 Metern.

Als „Gehirn“ ist ein vollverknüpftes neuronales Netz vorgesehen. Es gibt 22 Eingabeneuronen; 20 für die Entfernungssensoren und 2 für einen Beschleunigungssensor jeweils in X und Z Richtung. Dazu gibt es 2 Ausgabeneuronen, jedes für eins der Antriebsräder. Die Anzahl der restlichen Neuronen soll im Verlauf der Evolution variieren können.