Dokumentation zu Spiking Neurons

Dokumentation: Spiking Neurons

Allgemein

In dieser Aufgabe wird ein Spiking Neuronales Netzwerk als LIF Modell visualisiert

Mit einen Doppeklick auf eines der Neuronen wird ihre Aktivierungsenergie freigesetzt

Ist diese Aktivierungsenergie größer als der threshold kommt es zu einem Spike der durch ein grünes Aufleuchten des Neurons visualisiert ist.

Beim Auftreten eines Spikes werden die verbunden Neuronen aktiviert (In Pfeilrichtung).

Die aktivierten verbunden Neuronen werden ebenfalls aktiviert, kommt es zu einen Spike wiederholt sich der Vorgang.

Ist die Aktivierungsenergie jedoch kleiner als der threshold findet keine aktivierung der verbunden Neuronen statt

Auch findet keine Aktivierung statt, wenn ein Neuron sich kürzlich aktiviert hat. (Refactory Period)

Das Modell kann durch die entsprechenden Regler/Schaltflächen angepasst werden:

Value: Einstellung von Anzahl der Neuronen

Synapse(Avg): Durchschnittliche Anzahl eines Neurons mit einen anderen Verbunden zu sein. Umso größer, umso mehr Verbindungen/Synapsen

Refresh: Erneuern des Modells

Audio Off: Ausschalten des Tons

Threshold: Schwelle in der es zu einer Aktivierung eines Neurons kommt (Spiking Potential). Umso größer der Wert, umso weniger Aktivierungen

Decayrate: Rate in der ein Neuron vom Spike zu seinen Resting Potential gelangt (Refactory Period)

Beschreibung Modell

In dem Modell stellen die blauen Kreise die Neuronen dar und die Pfeile die Synapsen.

Die Pfeile und Pfeilrichtungen visualisieren die Verbindung unter den Neuronen zueinander, umso dicker der Pfeil umso mehr Energie besitzt er zum Spiken.

Die Verbindungen (Synapsen) zwischen den Neuronen werden zufällig erzeugt.

Je nach Einstellung des Reglers besitzt ein Neuron eine bestimmte Wahrscheinlichkit mit einen anderen verbunden zu sein.

Beschreibung Graph

Da nicht alle Neuronen in einen Spannungs/Zeit Diagramm dargestellt werden kann, visualisiert der Graph beispielhaft nur 1 Neuron.

Der Graph bezieht sich immer auf das Neuron mit der ID 1.

Falls der Fall auftritt, dass das Neuron 1 keine Verbindungen zu anderen Neuronen hat, wird der Graph nicht angezeigt.

Der Graph ist so programmiert das er nach einer gewissen Zeit aufhört, um Ressourcen zu sparen, in dem Fall kann er neugestartet werden.

Wird das Neuron 1 durch einen doppelklick, oder durch die Erregung eines benachbarten Neurons aktiviert, visualisiert dies der Graph.

Die rote Linie stellt den Threshold, dar. Steigt der Graph über den Threshold findet ein Spike statt und die Neuronen im Modell färben sich grün.

Bleibt der Graph unter der roten Linie, findet kein Spike statt.

Unter dem Graphen befindet sich auch eine Übersicht, in dieser wird textuell dargestellt, welches Neuron mit welchem verbunden ist, und wie viel Spannung/Membranpotential benötigt wird um diese zu aktivieren.

Implementierung der Logik Ansatz Resultate

Die Erstellung des Projektes basiert auf dem vorhanden Projekt: Fusspot.

Für eine bessere Usability, wurde außerdem eine kontextsensitive Hilfe in Form eines Tooltips implementiert. Klickt der User auf das Fragezeichen-Symbol erscheint die Hilfe. Auch wurde eine Transparent eingefügt beim rüberhovern über die Testbilder damit der User bemerkt das hier eine Interaktion erfolgen kann.

Die Webseite läuft über einen Cloudflare-Webserver und nimmt sich die Daten aus einen erstellten GitHub Repository.

Die Erstellung erfolgt über CSS HTML Javascript und der Visual Studio Code IDE

Für die nächsten zukünftigen Einsendeaufgaben wurde außerdem, eine Navigationsleiste angelegt, diese funktionieren zum gegenwärtigen Zeitpunkt noch nicht und werden mit den nächsten ESAs verlinkt.

Experimentieren mit den Neuronen Modell Resultate

Folgender Abschnitt setzt sich mit dem Experimentieren an den erstellen Neuronenmodell auseinander.

Fall: Neuron 1 bleibt unter dem Threshold:

Bei folgenden Fall ist die Aktivierungsenergie von Neuron 1 zu Neuron 4 zu niedrig. Wie in den Graphen zu sehen bleibt es unter der Schwelle (rote Linie)

Das Neuron 1 wird somit nicht gefeuert/aktiviert und kehrt zu dem resting wert zurück

Fall: Neuron 1 ist über dem Threshold:

Durch Aktivieren des Neuron 1 kommt es über die Schwelle und ein Spike findet statt, das Neuron leuchtet grün auf und aktiviert Neuron 4, dieses aktiviert Neuron 3 was wiederum Neuron 0 aktiviert.

Neuron 2 wird bei diesen Vorgang nicht aktviert da die Gewichtung zu 2 zu gering ist um die Schwelle zu erreichen. Nachdem das Neuron 0 aktiviert ist versucht es die Synapsen zu Neuron 1 und Neuron 4 zu aktiviern.

Jedoch werden beide nicht erregt da sich beide Neuronen in der Refactory Period befinden und für eine bestimmte Zeit nicht erregt werden können.

Im folgenden Fall wird der Value regler hochgestellt beim Modell und der Threshold regler herabgesetzt.

Neuron 2 wird zuerst aktiviert. Neuron 2 löst Neuron 6 und 8 aus welche wiederum andere auslöst was letzendlich zu einer Kettenreaktion führt und alle verbunden Neuronen aktiviert.

Durch den geringen Threshold und der viele Neuronen aktivieren sich viele Neuronen gleichzeitig.

Fall: Synapsen Verbindungen erhöht

Durch die Vielen Verbindungen zwischen den Neuronen aktivieren sich alle Neuronen in dem System, falls eine Verbindung nicht genügend Energie für den Threshold aufbringt gibt es noch andere Verbindungen die genug Threshold haben bei diesem Beispiel.

Fall: Neuronen führen zu einer Kettenreaktion

Fall: Threshold erhöht

Durch die Erhöhung der Schwelle/Threshold aktiviert/feuert keines der Neuronen. Egal wie viele Neuronen und Synapse zueinader gesetzt sind.

Implementierung des Codes

Die Erstellung des Projektes basiert auf dem vorhandenen Projekt "Fusspot".

Erstellung eines Neurons:

Der Code erstellt ein Neuron durch einen Array und stellt die Synapsen und die Position des Neurons zufällig ein.

Die display Methode, erstellt das Modell um es letzendlich durch die vis.js Bibliothek darzustellen.

In der display Methode werden die Darstellung der edges und nodes eingestellt und ein DataSet erzeugt das in der untersten Zeile, dann ins vis.js Netzwerk übertragen wird.

Jedes Neuron und seine Verbindungen werden somit ins vis.js Network gepusht.

Um den Graph zu visualiseren wurde durch die Plotly.js Bibliothek das Diagramm erstellt.

Der folgende Code überprüft in einen bestimmten Zeitraum das aktuelle Membranpotential von Neuron 1 und stellt dieses dar.

Bei einen Doppelklick auf eines der Neuronen wird dieses Neuron aktiviert.

Bei den Neuron wird für jede vorhanden Synapse geprüft ob diese Verbindung den Threshold übersteigt (Zeile 293).

Ist dies der Fall findet ein Spike statt und das Membranpotential wird auf 1 gesetzt aktiviert/gefeuert durch die fire2() Methode.

Nach dem Feuern wird der Abfall (Refactory Period) des Neurons simuliert solange bis es die resting value erreicht hat.

Übersteigt das Neuron nicht dem Threshold findet kein Feuern statt und das Membranpotential fällt hierbei auch ab, bis es die resting wert erreicht hat.

Die Methode fire2() ist für das Aktivieren/Feuern der Neuronen zuständig.

Falls ein ein Neuron aktiviert wird durch doppelklick oder durch ein benachbartes Neuron und das Membranpotential über den Threshold liegt färbt sich das Neuron Grün für eine bestimmte Zeit und ein Ton wird abgespielt.

Nach einer gewissen Zeit färben sich die Neuronen wieder auf ihre ursprüngliche Farbe zurück.

Je nach Gewicht (= synapse.w) des Neurons werden die Verbindungen schneller oder langsamer abgefeuert.

Verwendete Werkzeuge Quellen

Frameworks und Bibliotheken

Layout - Gestaltung der Webseite: W3.CSS

Für den Graphen wurde die Plotly.js Bibliothek verwendet.

Für die Visualisierung des Neuronen Modells wurde die vis.js Bibliothek verwendet um ein Netzwerk darzustellen.

Stylesheets

W3Schools Stylesheet

Projektvorlage

Das Projekt basiert auf den vohandenen Fusspot Projekt von sdesalas.

Weitere Hinweise

Das dargestellt Projekt und der jeweilige Graph, stellen kein mathematisches korrektes LIF-Neuron, dar.

Die Refactory Period der Neuronen wurde beispielsweise nur grob durch eine vereinfachte Formel dargestellt und stellt keinen echten Abfall dar.


Dokumentationen

Bilderkennung mit ml5

Spiking Neurons