Neuronale Netze

Ein neuronales Netz besteht aus autonomen Zellen (Neuronen), die einander auf bestimmten Wegen Zahlen übermitteln können.
Dabei werden eingehende Zahlen mit Faktoren gewichtet und dann addiert. Ist die Summe größer als ein Schwellenwert, so gibt das Neuron einen festen Zahlenwert an andere Neuronen aus. Durch Rückkopplung von Ausgängen auf Eingänge kann zeitlich komplexes Verhalten ausgelöst werden.
Die Wichtungen sind variabel, die Schwellenwerte hingegen konstant, ohne dass dadurch die Funktion des Netzes eingeschränkt wird. Um die Wichtungen zu optimieren, können die vom Netz erzeugten Zahlenmuster mit vorgegebenen Mustern verglichen werden: Je stärker ein Ausgabemuster von der zugehörigen Vorgabe abweicht, um so stärker werden die Wichtungen variiert, das Netz lernt.

Wie sich die Faktoren und Schwellenwerte mit der Zeit verändern, lässt sich i.a. nicht vorhersagen: Das Netz kann überraschende Ergebnisse liefern.

Im Unterricht konnten wir uns infolge der beschränkten Leistungsfähigkeit der Rechner nur mit einfachen Netzen beschäftigen: Vor beinahe 30 Jahren entwickelten wir ein Netz, das Buchstaben erkennen sollte. Die Buchstaben wurden dabei aus 5x5 Punkten zusammengesetzt. Damals mussten die Buchstaben dem Netz ca 500000-mal vorgegeben werden, bevor sie zuverlässig unterschieden werden konnten. Durch einen verbesserten Lernalgorithmus ließ sich diese Zahl auf ca. 3000 reduzieren mit einem Netz aus 30 Neuronen, angeordnet in zwei Ebenen zu 25 und 5 Neuronen.

Das optimierte Netzwerk inkl. Erläuterungen und Übungsmaterial kann man hier laden und für eigene Experimente nutzen: Die Neuronen lassen sich in Ebenen anordnen. Es können Rückkopplungen innerhalb der Ebenen und von der Ausgangs- zur Eingangsebene eingerichtet werden.

Ausblick auf die Tierwelt
Da die künstlichen Neuronen ein stark vereinfachtes Modell biologischer Neuronen sind, zeigt das Ergebnis, wie leistungsfähig biologische Neuronen sein müssen. Von der Ausstattung her müsste jedes Insekt Buchstaben unterscheiden können, allerdings besteht dafür keine Notwendigkeit, und so unterbleibt dies in der Natur. Es ist aber zu vermuten, dass Tiergehirne deutlich leistungsfähiger sind als bisher vermutet und viele Fähigkeiten besitzen, die wir bisher nur den Menschen zugeschrieben haben.
Wie mag ein Tier tatsächlich seine Umwelt erleben? Auf jeden Fall sind Tiere nicht die Automaten, die auf Reize immer in der gleichen Weise reagieren.

Lernalgorithmus
Wie arbeitet das hier verwendete Netz?
Die Neuronen einer Ebene beeinflussen sich gegenseitig durch eine hemmende Rückkopplung: Ist die Ausgangszahl eines Neurons besonders groß, so bremst dieses die restlichen Neuronen der Ebene aus. Dies ist ein gängiges Verfahren bei der Mustererkennung.
Beim Lernen werden die einzelnen Eingangsmuster (Buchstaben) nicht immer in der gleichen Reihenfolge eingespielt, sondern zufällig ausgewählt. Dies entspricht eher dem Verfahren, wie ein Mensch lernt. Noch besser wäre es, den Lernerfolg für jedes Muster zu kontrollieren und die Muster mit geringerem Erfolg häufiger einzukoppeln.

Für jedes Ausgangsneuron und Muster wird festgestellt, wie weit die Ausgabe von dem entsprechenden Wert des Vorgabemusters abweicht. Diese Abweichung wird an das Neuron zurückgemeldet und entsprechend die Wichtungen angepasst. Die Abweichung wird für jedes Vorgängerneuron mit dessen Ausgangswert und Wichtung verrechnet und zur Korrektur an das VorgängerNeuron gesendet. Der berechnete Wert für die Abweichung begrenzt den Bereich, in dem die Wichtungen geändert werden. Die Wichtungsänderungen sind dabei zufällig und können in seltenen Fällen die Grenzen durchbrechen. Wie oft dies geschieht, hängt von dem Abweichungswert ab: Kleine Abweichungen lassen Ausreißer nur sehr selten zu. Initialisiert werden die Wichtungen mit Zufallszahlen.

Das Verfahren realisiert das aus der Mathematik bekannte Abkühlungsschema. Es soll dazu dienen, den Lernprozess auf die einzelnen Neuronen einzugrenzen, ohne dass übergeordnete Prozesse eingreifen. Vermutlich entspricht dies eher der Arbeitsweise von natürlichen Neuronen.

Ais Ergebnis gewinnt man Ausgangsmuster, die von den vorgegebenen Mustern deutlich abweichen können, die aber die Buchstaben klar unterscheiden. Verändert man die Buchstaben, indem men Punkte verschiebt, neu hinzufügt oder weglässt, so werden die Buchstaben in vielen Fällen immer noch richtig erkannt.

Erweiterungen
Zwischen Eingangs- und Ausgangsebene können weitere Ebenen eingeschoben werden, was allerdings bei dem vorliegenden Netz keine Funktionsverbesserung ergab, dafür aber längere Laufzeiten pro Lerndurchlauf.

Wenn schon die Abweichungen von Neuron zu Neuron weiter gereicht werden, so könnten auf ähnliche Weise Daten schrittweise von der Ausgangs- zur Eingangsebene wandern, so vorgegebene oder auch zufällige Muster. Jedes Neuron bestimmt aus diesen Daten und dem selbst produzierten Ausgang die Abweichung und variiert passend die Wichtungen. Die vom Ausgang eines Neurons empfangenen Daten werden gewichtet über die Eingänge an die vorausgehenden Neuronen geschickt. Der Lernprozess wäre damit auf die einzelnen Neuronen lokalisiert, wie das wahrscheinlich auch in der Natur ist.
Zufällige Signale an den Ausgängen könnten in der Eingangsebene Muster aktivieren, die früher gelernt wurden und nun wieder zu den Ausgangsneuronen zurück wandern. Das würde ermöglichen, dass das Netz sich mit sich selbst beschäftigt, wie das bei Menschen in Träumen oder bei Denkprozessen der Fall ist, die nicht von einem äußeren Reiz ausgelöst werden. Ob sich diese Idee in einem Programm umsetzen lässt, kann ich nicht sagen.

Was heute Realität ist: Bei leistungsfähigen Rechnersystemen kann man mehrere Netze hintereinander schalten. Es entsteht ein großes Netz, das komplexe Situationen verarbeiten und auf sie angemessen reagieren kann. Beispiele: ChatGPT, Spracherkenneung und -Erzeugung, Verhalten von Avataren.

Paket neuronale Netze

[8.7.2023]