302 Neuronen benötigt ein Fadenwurm.. das ist wirklich wenig, eine Fliege hat 10.000 Neuronen, der Menschen sogar 10 Milliarden. Doch sind die Fadenwürmer im Vergleich zu den künstlichen Neuronalen Netz meiner Würmer Mensa-Kandidaten mit tiefen philosophischen Ansichten zum Leben und dem Universum .. sie kommen bisher mit 2 Duzent Neuronen aus .

Die Menge der Neuronen kann ich leider nicht beliebig vergrößern ohne das die Performance der Simulation in die Knie geht.
Die Neuronen der Natur arbeiten alle paralel, die Neuronen meiner Würmer aber sequentiell.
Die sequentielle Natur der heutigen Computer ist zwar theoretisch durch Mehrprozessor Systeme Hyperthreating & Co aufgeweicht.. praktisch aber irrelevant, da die Paralelität nicht skaliert .. bzw. sehr klein ist.

2 Prozessoren schaffen bestenfalls doppelt soviele Neuronen .. wenn aber die Skalierungsfaktor einen Unterschied in der Größenordung 100000000 ausmacht .. benötigt man ziemlich viele Prozessoren.

Natürlich schaltet ein Prozessor viel schneller als ein Gehirn, so das ein Prozessor in der Schaltzeit eines Neurons (beim Menschen) vieleicht 1000 oder 10000 Neuronenzustände sequentiell berechnen kann. Aber wenn Ihr die 11 Nullen bei der Neuronenzahl des Menschlichengehirns durch die möglichen simulierten Neuronen einer CPU pro Neuronenschaltzeit abzieht bleiben immer noch 10 Millionen CPU Cores die notwendig sind um ein menschliches Gehirn zu simulieren. Selbst wenn meine geschätzen Zahlen für eine CPU Leistung zu niedrig sind ... sagen wir mal um den Faktor 1000, sind immernoch 10.000 CPUs nötig.

302 Neuronen sind dennoch zuviel für eine in JavaScript geschriebene Simulation in der ich hunderte bis 2000 Würmer gleichzeitig simuliere.

Was ich aber leisten kann ist einen hohen Grad an Vernetzung und Flexibiltät zu garantieren um das Optimum für meine Würmer raus zuhohlen.

Was ist aber das Optimum ? - ich habe keine Ahnung, das lasse ich die Evolution entscheiden.

Bisher habe ich ein vorgefertigtes KNN (Künstliches Neuronales Netz) - vorgefertigt bedeutet das Netz hat eine fixe Struktur.
Die Struktur beinhaltet eine Gruppe von Eingabe Neuronen und eine Gruppe von Ausagabe neuronen wobei jedes Neuron der Eingabeschicht eine gewichtete Verbindung zu jedem Neuron der Ausgabeschicht hat. Ausserdem wird der Aktiverungszustand eines Ausgabeneuron im folgenden Simuluationsschrit mit einen verknüpften Eingabeneuron kopiert. Diese Rückkopplung repräsentiert ein Super-Kurzzeitgedächniss.

Üblicherweise werden KNN's in einen Schichtenmodell ohen Rückkopplung aufgebaut, dies vereinfacht die Anwendung der Lernregeln, die nicht ohne Modifikation auf Rückgekoppelten Neuronalennetzen funktioneiren.
Ich habe aber keine Lernregeln.. aus verschiedenen Gründen und habe daher eine große Freiheit beim Design meines KNN .. Sagte ich Design ? - Ich meine natürlich die Möglichkeiten der Entwicklung des Gehrins durch Selektion, Recombination und Mutation.

Bisher sorgt die Evolution nur dafür das die Gewichte des KNN optimiert werden.. nicht aber die Topologie (Die Art und Menge der Verknüpfungen und Neuronen)
Lernregeln sind dazu da ein KNN auf gewünschte Muster zu trainieren. Soll das KNN Schrifterkennung leisten dann wird das Netz auf Schriften trainiert. Dabei wird ein mathematischer Alghorithmus zur Fehlerrückführung eingesetzt.. sehr effektiv aber nicht biologisch plausibel.
Meine Situation ist anders ... es gibt keinen Lehrer der weis was Richtig und Falsch ist in der Wurmwelt, die Entscheidungen eines Wurmes sollten nicht nur deie aktuelle Situation sondern auch wenn möglich die Handlung oder Ereignisse berücksichtigen. Ein Neuronales Netz ohne Rückkopplung verhält sich bei gleicher Eingabe immer gleich .. das ist zwas bei einen KNN mit Feedback nicht anders .. jedoch ist per Definition die Rückgekoppelte Information nicht von der aktuellen Situation abhängig sondern von (theoretisch) allen Situationen & Aktionen der Vergangenheit.
So eine Rückkoplung stellt sehr schnell ein Überlebensvorteil dar ... nehmen wir ein Beispiel was ich beobachtet habe.

Es dauert eine Weile bis die KNN's der Würmer zuverlässig in der Welt agieren können und es gibt viele tötliche Fallen die ein ansonsten geschickten Wurm töten können.

Ein Wurm geht in eine Falle in der er blockiert wird, dummerweise würde sein KNN ohne Feedback und ohne Änderung der Inputsensoren immer wieder gegen das Stückmauer laufen .. und letztlich verhungern. Ein KNN ohne Feedback erzeugt zuverlässige und reproduzierbare Ausgaben, das ist auch gut so in den meisten Fällen.
Bei einen Wurm mit Feedback kann die Situation aber anders ausgehen .. zuerst passiert ihm das selbe .. er rennt gegen die Mauer, und nochmal und nochmal ... und plötzlich dreht er links ab. Warum ?
Das Feedbacksignal hat (muss aber nicht) sich geändert.. entweder wurde bei jeder Wiederholung die Aktivierung des Feedbackneurons abgeschwächt oder verstärkt und als Folge bei Über/Unterschreitung des Aktiverungsschwellwertes eine anderen Aktiverungsstatus annimmt. Natürlich kann ein Feedbacksignal auch reines Chaos im Netz auslösen .. solche Konfigurationen haben aber keinen Bestand.. sie werden Opfer der Evolution.
Ohne minmal einen Feedbackneuron neigen die Würmern zu 'Authismus'.. sie sind den Unzulänglichkeiten ihres Gehirns ausgeliefert ohne Möglichkeit dies zu ändern (Lernen ist nicht implementiert) . Mit Feedbackneuron profitiert der Wurm von der Kontextabhängigkeit seines Gehirns, seine Handlungen sind nicht so zuverlässig, durchaus auch mal irrational wo sonnst rationale Entscheidungen getroffen werden, dafür hat er eine Chance aus Situationen zu entkommen die sein Gehirn nicht meistern kann.
Im weiteren Verlauf der Evolution kann das Feedbackneuron aber durchaus deterministisch funktional werden und den Wurm erlauben strategisch zu Handeln (Aktionen aufeinander aufbauen). Ohne Informationen über den vergangenen Zug, ohne Möglichkeit Veränderungen bzw. die eigene Existenz als zeitliches Phänomen zu erfahren ist eine KI nur eine Funktion ohne versteckten Staubsauger .. Zuverlässig und Langweilig.

Da ich wie oben beschrieben keine fixe Topologie des Netzes für eine einfache Lernregel brauche, nichtmal auf eine deterministische Ausgabe des Netzes angeweisen bin (es reicht wenn das Gehirn statistisch Zuverlässig ist ..also überweigend deterministisch reagiert) kann ich gleich zu einer generalisierten Form des NN übergehen, ein Netz mit potentiell vollständiger rekonkurenter Verknüpfung.

Solch ein Netz erlaubt Verbindungen zwischen jedem Neuron, auch sich selber ... mit der Ausnahme von Sensoren, deren Eingaben nur durch die Umweltbestimmt werden.
Damit fällt die Unterscheidung zwischen Feedback und normalen Neuronen da nun jedes Neuron eine Aktivierungsinformation eines jeden anderen Neurons erhalten kann.. das ist in der Natur durchaus auch so .. allerdings ... wenn da nicht die Paralelität wäre.

Die Verarbeitung und Auswertung der auch im Gehirn vorkommenden Zeitlich versetzen Signale können zwar gut mit den Methoden der Signalverarbeitung aus der Elektronik/Elektrotechnik beschrieben werden, aber nicht im Computer. Für den Computer benötigt es ein stark vereinfachtes Modell .. ein Modell für diskrete Zeitschritte.

Analog zum Schichtenmodell in dem Gruppen von Neuronen parallel arbeiten (können) und keine Verbindungen untereinander haben (keiner muss auf eine Information des anderen warten ) sondern nur mit Neuronen 'höherer' Schichten deren Ergebnisse bereits vorliegen .. ist bei mir jedes Neuron seine Eigene Schicht.

Das bedeutet jedes Neuron gibt seine aktuelle Ausgabe über seine Gewichte an die folgenden Neuronen weiter, wärend die dem Neuron vorgeschalteten Neuronen die gewichtete Ausgabe des Neurons von der vorherigen Runde abfragen können.

Dieses Modell ist sogar vielviel einfacher zuimplentieren als das jetzige.


Bisher lernen die NN nicht .. sie repräsentieren eher sowas wie autonome Reflexe die von Umweltbedingungen und der Genetik bestimmt werden. Allerdings habe ich dennoch ein Trieb gesteuertes Lernverfahren im Auge .. aber nicht vor Version 0.9.

Triebe werden durch Genetische Alghoritmen gesteuert.. daher nicht jeder Wurm ist im selbenmaße den selben Trieben unterworfen.
Grundlegende Triebe sind z.B. Hunger, Paarungswilligkeit, Frust und die von der Schulwissenschaft nicht anerkannte Naturkraft 'Langeweile'.
Diese Triebe werden als Zahlendargestellt die jede Runde erhöht werden .. bis das gewüschte Ergebniss eintrifft und den Trieblevel zurücksetzen.
Beispiel: Der Wurm wird immer geiler.. bis er Sex hat.

Ok .. und wie führt nun der Trieb zum Lernen ?
Ist recht einfach ..
Die Gewichte der Neuronen werden bei steigenden Trieblevel immer stärker vom Genetisch geprägten Ausgangswert (zufällig) modifiziert. Führt eine Aktion zum Erfolg, dann wird die Änderung im Gehirn gespeichert war sie ohne Erfolg wird die Änderungverworfen und im nächsten Schritt eine neue Zufällige gewichtsänderung vorgenommen.
Wird der Trieb schnell befriedigt war das Gehirn bereits Fit (keinen Grund das Kamasutra zulernen) und unterliegt damit nur geringen Veränderungen.. dauert es mit dem Sex, werden die Änderungen im Gehirn immer stärker bis der Wurm entweder zum Sex kommt oder sprichwörtlich dem Wahnsinn verfällt da seine Neuronen degenerieren.

Die Tiefe Grundlegende Frage die ich dann in der Simulation zulösen hoffe ist ..