Sensorische Systeme/ Computermodelle/ Neuronale Simulation


Simulation von Aktionspotentialen Bearbeiten

Aktionspotential Bearbeiten

Das "Aktionspotential" ist die stereotype Spannungsänderung, die zur Weiterleitung von Signalen im Nervensystem verwendet wird.

 
Aktionspotential – Propagation
 
Aktionspotential – Zeitabhängigkeit

Mit den unten beschriebenen Mechanismen kann ein eintreffender Reiz (gleich welcher Art) zu einer Änderung des Spannungspotenzials einer Nervenzelle führen. Bis zu einem bestimmten Schwellenwert ist das alles ("unterschwellige Reize" in Abb. 4). Wenn aber der Schwellenwert der spannungsabhängigen Ionenkanäle erreicht wird, kommt es zu einer Feedback-Reaktion, die die Na+-Ionenkanäle fast sofort vollständig öffnet ("Depolarisation" unten): Dabei wird ein Punkt erreicht, an dem die Permeabilität für Na+ (die im Ruhezustand etwa 1% der Permeabilität von K+ beträgt) 20 mal größer ist als die von K+. Insgesamt steigt die Spannung von etwa -60mV auf etwa +50mV an. An diesem Punkt beginnen interne Reaktionen, die Na+-Kanäle zu schließen (und zu blockieren) und die K+-Kanäle zu öffnen, um den Gleichgewichtszustand wiederherzustellen. Während dieser "Refraktärzeit" von etwa 1ms kann keine Depolarisation erneut ein Aktionspotenzial auslösen. Erst wenn der Ruhezustand erreicht ist, können neue Aktionspotenziale ausgelöst werden.

Um ein Aktionspotenzial zu simulieren, müssen wir zunächst die verschiedenen Elemente der Zellmembran definieren und wissen, wie sie analytisch beschrieben werden können.

Zellmembran Bearbeiten

Die Zellmembran besteht aus einer wasserabweisenden, nahezu undurchlässigen Doppelschicht aus Proteinen, der Zellmembran. Die eigentliche Fähigkeit bei der Verarbeitung von Signalen geht nicht von der Zellmembran aus, sondern von Ionenkanälen, die in diese Membran eingebettet sind. Ionenkanäle sind Proteine, die in die Zellmembran eingebettet sind und die selektiv für bestimmte Ionenarten geöffnet werden können. (Diese Selektivität wird durch die geometrische Anordnung der Aminosäuren, aus denen die Ionenkanäle bestehen, erreicht). Neben den oben erwähnten Na+- und K+-Ionen kommen im Nervensystem typischerweise die Kationen Ca2+, Mg2+ und die Anionen Cl- vor.

Zustand der Ionenkanäle Bearbeiten

Ionenkanäle können einen von drei Zuständen annehmen:

  • Offen (z. B. lässt ein offener Na-Kanal Na+-Ionen passieren, blockiert aber alle anderen Ionenarten).
  • Geschlossen, mit der Möglichkeit, sich zu öffnen.
  • Geschlossen, bedingungslos.

Ruhezustand Bearbeiten

Die typische Standardsituation - wenn nichts passiert - ist dadurch gekennzeichnet, dass K+ offen sind und die anderen Kanäle geschlossen sind. In diesem Fall bestimmen zwei Kräfte die Zellspannung:

  • Der (chemische) Konzentrationsunterschied zwischen der intrazellulären und der extrazellulären Konzentration von K+, der durch die oben beschriebene kontinuierliche Aktivität der Ionenpumpen entsteht.
  • Die (elektrische) Spannungsdifferenz zwischen dem Inneren und dem Äußeren der Zelle.

Das Gleichgewicht wird durch die Nernst-Gleichung beschrieben:

 

R ... Gaskonstante, T ... Temperatur, z ... Ionenvalenz, F ... Faraday-Konstante, [X] o/i … Ionenkonzentration innen/aussen. Bei 25° C beträgt RT/F 25mV, was zu einer Ruhespannung von

 

führt.

Bei typischen K+-Konzentrationen innerhalb und außerhalb von Neuronen ergibt sich daraus  . Werden die Ionenkanäle für K+, Na+ und Cl- gleichzeitig betrachtet, so ist die Gleichgewichtssituation durch die Goldman-Gleichung charakterisiert


 

wobei Pi die Permeabilität des Ions "i" und I die Konzentration bezeichnet. Bei einer typischen Ionenkonzentration hat die Zelle in ihrem Ruhezustand eine negative Polarität von etwa -60 mV.

Aktivierung der Ionenkanäle Bearbeiten

Das Besondere an den Ionenkanälen ist die Tatsache, dass ihre Durchlässigkeit verändert werden kann durch

  • einen mechanischen Reiz (mechanosensitive Ionenkanäle)
  • einen chemischen Reiz (ligandgesteuerte Ionenkanäle)
  • oder durch eine externe Spannung (spannungsgesteuerte Ionenkanäle)
  • Gelegentlich verbinden Ionenkanäle zwei Zellen direkt miteinander; in diesem Fall werden sie als Gap-Junction-Kanäle bezeichnet.

Wichtig

  • Systeme basieren im Wesentlichen auf Ionenkanälen, die durch einen mechanischen Reiz (Druck, Schall, Bewegung), einen chemischen Reiz (Geschmack, Geruch) oder einen elektromagnetischen Reiz (Licht) aktiviert werden und ein "neuronales Signal", d. h. eine Spannungsänderung in einer Nervenzelle, erzeugen.
  • Aktionspotenziale nutzen spannungsgesteuerte Ionenkanäle, um den "Zustand" des Neurons schnell und zuverlässig zu ändern.
  • Die Kommunikation zwischen Nervenzellen erfolgt überwiegend über Ionenkanäle, die durch Neurotransmitter aktiviert werden, d. h. durch chemische Stoffe, die von der vorhergehenden Nervenzelle an einer Synapse abgegeben werden. Dies ermöglicht maximale Flexibilität bei der Verarbeitung von Nervensignalen.


Modellieren eines spannungsabhängigen Ionenkanal Bearbeiten

Das Ohmsche Gesetz setzt den Widerstandswert eines Widerstands, R, in Beziehung zum Strom, den er durchlässt, I, und dem Spannungsabfall über dem Widerstand, V:

 

oder

 

wobei   der Leitwert des Widerstands ist. Wenn man nun annimmt, dass die Leitfähigkeit direkt proportional zur Wahrscheinlichkeit ist, dass sich der Kanal in der offenen Konformation befindet, dann wird diese Gleichung

 

wobei gmax die maximale Leitfähigkeit des Kanals und n die Wahrscheinlichkeit ist, dass sich der Kanal in der offenen Konformation befindet.


Beispiel: der K-Kanal

Spannungsgesteuerte Kaliumkanäle (Kv) können nur offen oder geschlossen sein. Sei α die Rate, mit der der Kanal von geschlossen zu offen übergeht, und β die Rate, mit der der Kanal von offen zu geschlossen übergeht

 

Da n die Wahrscheinlichkeit ist, dass der Kanal offen ist, muss die Wahrscheinlichkeit, dass der Kanal geschlossen ist, (1-n) sein, da alle Kanäle entweder offen oder geschlossen sind. Änderungen in der Konformation des Kanals können daher durch die folgende Formel beschrieben werden

 

Beachten Sie, dass α und β spannungsabhängig sind! Mit einer Technik, die "voltage-clamping" genannt wird, bestimmten Hodgkin und Huxley 1952 diese Raten, und sie kamen zu folgendem Ergebnis

 

Wenn Sie nur einen spannungsabhängigen Kaliumkanal modellieren wollen, sind dies die Gleichungen, mit denen Sie beginnen sollten. (Für spannungsgesteuerte Na-Kanäle sind die Gleichungen etwas schwieriger, da diese Kanäle drei mögliche Konformationen haben: offen, geschlossen und inaktiv).

Hodgkin Huxley Gleichung Bearbeiten

Aufgrund der oben erwähnten Rückkopplungsschleife der spannungsabhängigen Ionenkanäle ist es schwierig, ihr genaues Verhalten zu bestimmen. In einer ersten Annäherung kann die Form des Aktionspotenzials durch die Analyse des elektrischen Schaltkreises eines einzelnen axonalen Kompartiments eines Neurons erklärt werden, der aus den folgenden Komponenten besteht: 1) Na-Kanal, 2) K-Kanal, 3) Cl-Kanal, 4) Leckstrom, 5) Membrankapazität:


 


 
Spiking-Verhalten eines Hodgkin-Huxley-Modells.


Die endgültigen Gleichungen im ursprünglichen Hodgkin-Huxley-Modell, in dem die Ströme von Chloridionen und andere Leckströme kombiniert wurden, lauteten wie folgt:

 

wobei  ,   und   zeit- und spannungsabhängige Funktionen sind, die die Membranpermeabilität beschreiben. Für die K-Kanäle zum Beispiel gehorcht   den oben beschriebenen Gleichungen, die experimentell mittels der Voltage-Clamp-Technik bestimmt wurden. Diese Gleichungen beschreiben die Form und Ausbreitung des Aktionspotentials mit hoher Genauigkeit! Das Modell kann leicht mit Open-Source-Tools gelöst werden, z. B. mit der Python Dynamical Systems Toolbox PyDSTools. Eine einfache Lösungsdatei ist unter [1] verfügbar, und das Ergebnis ist unten dargestellt.

Links zu vollständigem Hodgkin-Huxley Model Bearbeiten

Modellierung der Erzeugung von Aktionspotenzialen: Das Fitzhugh-Nagumo-Modell Bearbeiten

 
Phasenebenen-Diagramm des Fitzhugh-Nagumo-Modells, mit (a=0,7, b=0,8, c=3,0, I=-0,4). Dargestellt sind Lösungen für vier verschiedene Ausgangsbedingungen. Die gestrichelten Linien geben die Nulllinien an, und das "o" den Fixpunkt des Modells. I=-0.2 wäre eine Stimulation unterhalb der Schwelle, die zu einem stationären Zustand führt. Und I=-1.6 würde das Neuron hyperpolarisieren, was ebenfalls zu einem - anderen - stationären Zustand führen würde.

Das Hodgkin-Huxley-Modell hat vier dynamische Variablen: die Spannung  , die Wahrscheinlichkeit, dass der K-Kanal offen ist,  , die Wahrscheinlichkeit, dass der Na-Kanal offen ist, wenn er vorher geschlossen war,  , und die Wahrscheinlichkeit, dass der Na-Kanal offen ist, wenn er vorher inaktiv war,  . Ein vereinfachtes Modell für die Erzeugung von Aktionspotenzialen in Neuronen ist das Fitzhugh-Nagumo-Modell (FN). Im Gegensatz zum Hodgkin-Huxley-Modell hat das FN-Modell nur zwei dynamische Variablen, indem es die Variablen   und   zu einer einzigen Variablen   kombiniert und die Variablen   und   zu einer einzigen Variablen  

 

Da das FN-Modell nur zwei dynamische Variablen hat, kann seine vollständige Dynamik mit Methoden der Phasenebene untersucht werden (Beispiellösung in Python hier [2])

Simulation eines einzelnen Neurons mit positiver Rückkopplung Bearbeiten

 
Systemoutput für einen Eingangsimpuls: ein “leaky Integrator”

Die folgenden zwei Beispiele sind aus [3] entnommen. Dieses Buch bietet eine fantastische Einführung in die Modellierung einfacher neuronaler Systeme und vermittelt ein gutes Verständnis für die zugrunde liegende Informationsverarbeitung.

 

Betrachten wir zunächst die Reaktion eines einzelnen Neurons mit einer Eingabe   und einer Rückkopplung auf sich selbst. Das Gewicht der Eingabe ist   und das Gewicht der Rückkopplung  . Die Antwort   des Neurons ist gegeben durch

 

Dies zeigt, wie bereits sehr einfache Simulationen die Signalverarbeitungseigenschaften echter Neuronen erfassen können.

""" Simulation des Feedbackeffekts eines einzelnen Neurons """

import numpy as np
import matplotlib.pylab as plt

# Systemkonfiguration
is_impulse = True   # 'True' für Impuls, 'False' für Step
t_start = 11        # Setze eine Startzeit für den Impuls    
n_steps = 100       
v = 1               # Inputgewicht
w = 0.95            # Feedbackgewicht

# Stimulus
x = np.zeros(n_steps)
if is_impulse:     
    x[t_start] = 1  # nun setze den Impuls an nur einem Zeitpunkt
else:               
    x[t_start:] = 1 # Step-input
    
# Antwort
y = np.zeros(n_steps)           # Lege den Outputvektor an
for t in range(1, n_steps):     # zu jedem Zeitpunkt (überspringe den ersten) 
    y[t] = w*y[t-1] + v*x[t-1]  # Berechne den Output

# Plotte das Resultat
time = np.arange(n_steps)
fig, axs = plt.subplots(2, 1, sharex=True)

axs[0].plot(time, x)
axs[0].set_ylabel('Input')
axs[0].margins(x=0)

axs[1].plot(time, y)
axs[1].set_xlabel('Time Step')
axs[1].set_ylabel('Output')

plt.show()

Simulation eines einfachen neuronalen Systems Bearbeiten

Selbst sehr einfache neuronale Systeme können erstaunlich vielseitige Verhaltensweisen zeigen. Ein Beispiel ist Wilsons Modell des zentralen Mustergenerators des Heuschreckenflugs. Hier wird das System beschrieben durch

 

W ist die Verbindungsmatrix, die die wiederkehrenden Verbindungen der Neuronen beschreibt und x stellt den Input für das System dar.

 
Eingabe x ist über Gewichte v_i mit Einheiten yi (i=1,2,3,4) verbunden, und die Einheiten y_l (l = 1,2,3,4) über Gewichte w_kl mit den Einheiten y_k (k = 1,2,3,4). Aus Gründen der Übersichtlichkeit sind die Selbstverbindungen von y2 und y3 nicht dargestellt, und die einzelnen vorwärtsgerichteten und rekurrenten Gewichte sind nicht beschriftet. Basierend auf dem ausgezeichneten Buch "Tutorial on Neural Systems Modeling" von Tom Anastasio.
 
Die Reaktion von Einheiten, die Motoneuronen in der inear-Version von Wilsons Modell des zentralen Mustergenerators (CPG) des Heuschreckenflugs darstellen: Ein einfacher Eingangsimpuls löst eine anhaltende antagonistische Oszillation in den Neuronen 2 und 3 aus.
""" 'Wiederkehrendes' Feedback in einfachem Netzwek:
lineare Version von Wilson's Flugmustergenerator der Heuschrecke (CPG) """

import numpy as np
import matplotlib.pylab as plt

# Systemkonfiguration
v = np.zeros(4)                     # Input Gewichtsmatrix (Vektor)
v[1] = 1

w1 = [  0.9,  0.2,    0,     0]     # Feedbackgewichte zur Einheit 1
w2 = [-0.95,  0.4, -0.5,     0]     # ... zur Einheit 2
w3 = [    0, -0.5,  0.4, -0.95]     # ... zur Einheit 3
w4 = [    0,    0,  0.2,  0.9 ]     # ... zur Einheit 4
W = np.vstack( [w1, w2, w3, w4] )   

n_steps = 100              

# Erster Schlag, zum Starten des Systems
x = np.zeros(n_steps)               # Null-Eingangsvektor
t_kick = 11                
x[t_kick] = 1              

# Simulation
y = np.zeros( (4,n_steps) )         # Null-Ausgangsvektor
for t in range(1,n_steps):          # für jeden Zeitschritt
    y[:,t] = W @ y[:,t-1] + v * x[t-1]  # berechne den Output

# Zeige das Resultat
time = np.arange(n_steps)     
plt.plot(time, x, '-', label='Input')
plt.plot(time, y[1,:], ls='dashed', label = 'Left Motorneuron')
plt.plot(time, y[2,:], ls='dotted', label='Right Motorneuron')

# Formattiere den Plot
plt.xlabel('Time Step')
plt.ylabel('Input and Unit Responses')
plt.gca().margins(x=0)
plt.tight_layout()
plt.legend()
plt.show()

Die Entwicklung und Theorie neuromorpher Schaltkreise Bearbeiten

Einleitung Bearbeiten

Im neuromorphen Engineering werden analoge und digitale Schaltkreise mit Hilfe von Very Large Scale Integration (VLSI) - Systemen aufgebaut, welche die neurobiologische Architektur und Verhalten nachahmen. Die meisten modernen Schaltungen verwenden hauptsächlich digitale Schaltungskomponenten, da sie schnell, präzise und unempfindlich gegen Rauschen sind. Im Gegensatz zu den biologisch relevanteren analogen Schaltkreisen benötigen digitale Schaltkreise eine höhere Energieversorgung und sind nicht in der Lage, parallel zu rechnen. Das Verhalten biologischer Neuronen, wie z. B. Membranleckagen und Schwellenwertbeschränkungen, sind Funktionen von Parametern des Materialsubstrats und erfordern analoge Systeme zur Modellierung und Feinabstimmung, die über das digitale 0/1 hinausgehen. In diesem Beitrag werden solche neuromorphen Schaltungen und die Theorie hinter ihren analogen Schaltungskomponenten kurz zusammengefasst.

Aktuelle Ereignisse im neuromorphen Engineering Bearbeiten

In den letzten 10 Jahren hat der Bereich des neuromorphen Engineerings einen rasanten Aufschwung erlebt und erhielt starke Beachtung von Presse und Wissenschaft.

Nachdem die EU-Kommission auf dieses Thema aufmerksam geworden war, wurde 2013 das Human Brain Project ins Leben gerufen, das über einen Zeitraum von zehn Jahren mit 600 Mio. Euro finanziert wurde. Das Ziel des Projekts ist es das menschliche Gehirn von der Ebene der Moleküle und Neuronen bis hin zu neuronalen Schaltkreisen zu simulieren. Im September 2023 soll es auslaufen und obwohl das Hauptziel nicht erreicht wurde, liefert es unter anderem detaillierte 3D maps von mindestens 200 Hirnregionen und Supercomputer um Funktionen wie Gedächtnis und Bewusstsein zu modellieren [4]. Ein weiteres wesentliches Ergebnis ist die 2019 gelaunchte virtuelle Plattform EBRAINS. Sie liefert eine Reihe von Werkzeugen und Bilddaten die Wissenschaftler*innen weltweit für Simulationen und digitale Experimente nutzen können.

Ebenfalls in 2013 gab das U.S. National Institute of Health die Finanzierung des BRAIN-Projekts bekannt, mit dem Ziel die Aktivität großer Neuronenpopulationen zu rekonstruieren. Es ist fortlaufend und bis 2023 sind $680 Mio. Finanzierung bereitgestellt worden.

Weitere wichtige Errungenschaften der letzten Jahre sind im Folgenden aufgeführt:

1. TrueNorth Chip (IBM, 2014): mit einer Gesamtanzahl von 268 Mio. programmierbaren Synapsen

2. Loihi Chip (Intel, 2017): basierend auf asynchronem neuronalen Spiking-Netzwerk (SNN) für adaptive, ereignisgesteuerte parallele Berechnungen. Er wurde 2021 von Loihi2 abgelöst.

3. Chip-Prototyp (IMEC, 2017): erster selbstlernender neuromorpher Chip basierend auf OxRAM-Technologie

4. Akida AI Processor Development Kits (Brainchip, 2021): 1. kommerziell verfügbarer neuromorpher Prozessor

Transistorstruktur und -physik Bearbeiten

Metall-Oxid-Halbleiter-Feldeffekttransistoren (MOSFETs) sind gängige Bestandteile moderner integrierter Schaltungen. MOSFETs werden als unipolare Bauelemente eingestuft, da jeder Transistor nur einen Ladungsträgertyp verwendet; MOFETs vom negativen Typ (nFETs) haben Elektronen als Ladungsträger und MOSFETs vom positiven Typ (pFETs) leiten durch Leerstellen.

 
Querschnitt eines n-Typ MOSFET. Transistor mit Gate (G), Körper (B), Source (S) und Drain (D). Positiver Strom fließt von der n+ Drain-Wanne zur n+ Source-Wanne. Quelle: Wikipedia

Der allgemeine MOSFET hat ein Metall-Gate (G) und zwei pn-Übergangsdioden, die als Source (S) und Drain (D) bezeichnet werden, wie in der rechten Abbildung dargestellt. Eine isolierende Oxidschicht trennt das Gate von der Siliziumkörper (B). Der Kanal, der die Ladung trägt, verläuft direkt unter dieser Oxidschicht. Der Strom ist eine Funktion der Gate-Abmessungen.

Die Source und der Drain sind symmetrisch und unterscheiden sich nur durch die an sie angelegten Vorspannungen. In einem nFET-Bauelement sind die Wannen, die die Source und den Drain bilden, vom n-Typ und sitzen in einem p-Typ-Substrat. Das Substrat wird über den p-Typ-Kontakt vorgespannt. Der positive Strom fließt unterhalb des Gates im Kanal vom Drain zur Source. Die Source wird so genannt, weil sie die Quelle der Elektronen ist. Umgekehrt befinden sich bei einem pFET-Bauelement die Source und der Drain des p-Typs in einer n-Wanne, die sich in einem p-Typ-Substrat befindet; der Strom fließt dann von der Source zum Drain.

Wenn sich die Ladungsträger aufgrund eines Konzentrationsgefälles bewegen, nennt man dies Diffusion. Werden die Ladungsträger aufgrund eines elektrischen Feldes verschoben, spricht man von Drift. Konventionell ist der nFET-Drain auf einem höheren Potenzial als die Source vorgespannt, während die Source in einem pFET höher vorgespannt ist.

Wenn in einem nFET eine positive Spannung an das Gate angelegt wird, sammelt sich am Metallkontakt eine positive Ladung an. Dadurch werden Elektronen aus dem Substrat an die Siliziumoxid-Grenzfläche gezogen, wodurch ein negativ geladener Kanal zwischen Source und Drain entsteht. Je größer die Gate-Spannung ist, desto dicker wird der Kanal, was den Innenwiderstand verringert und somit den Strom logarithmisch erhöht. Bei kleinen Gate-Spannungen, typischerweise unterhalb der Schwellenspannung,  , ist der Kanal noch nicht vollständig leitend und der Stromanstieg vom Drain zur Source steigt linear auf einer logarithmischen Skala. Dieser Zustand, wenn  , wird als Unterschwellenbereich bezeichnet. Jenseits dieser Schwellenspannung,  , ist der Kanal zwischen Source und Drain vollständig leitend und der Strom befindet sich im Überschwellenregime.

 
Transistorstrom als Funktion von   für einen festen Wert von  .

Damit Strom vom Drain zur Source fließen kann, muss zunächst ein elektrisches Feld vorhanden sein, das die Ladungsträger durch den Kanal bewegt. Die Stärke dieses elektrischen Feldes ist eine Funktion der angelegten Potenzialdifferenz zwischen der Source und dem Drain ( ), und steuert somit den Drain-Source-Strom. Bei kleinen Werten von ( ) und konstanten  -Werten steigt der Strom linear als Funktion von ( ) an. Wenn   über   ansteigt, konvergiert der Strom gegen einen Grenzwert.

pFETs verhalten sich ähnlich wie nFETs, mit dem Unterschied, dass die Ladungsträger Löcher sind und die Kontaktvorspannungen negiert sind.

In digitalen Anwendungen arbeiten die Transistoren entweder in ihrem Sättigungsbereich (on) oder sind aus (off). Dieser große Bereich an Potenzialunterschieden zwischen dem On- und dem Off-Zustand ist der Grund, warum digitale Schaltungen einen so hohen Strombedarf haben. Im Gegensatz dazu nutzen analoge Schaltungen den linearen Bereich von Transistoren, um kontinuierliche Signale mit geringerem Energiebedarf zu erzeugen. Da jedoch kleine Änderungen der Gate- oder Source-Drain-Spannungen eine große Stromänderung bewirken können, sind analoge Systeme anfällig für Rauschen.

Das Gebiet des neuromorphen Engineerings macht sich die Eigenschaft des Rauschens analoger Schaltungen zunutze, um stochastisches neuronales Verhalten zu replizieren [5] [6]. Im Gegensatz zu getakteten digitalen Schaltungen sind analoge Schaltungen in der Lage, Aktionspotenziale mit einer zeitlichen Dynamik zu erzeugen, die biologischen Zeitskalen ähnelt (ca.  ). Die Potenziale werden verlangsamt und die Feuerungsraten werden durch Verlängerung der Zeitkonstanten durch Leckströme und variable Widerstandstransistoren gesteuert. Es wurden analoge Schaltungen entwickelt, die in der Lage sind, biologische Aktionspotenziale mit unterschiedlicher zeitlicher Dynamik nachzuahmen, so dass Siliziumschaltungen neuronales spike-basiertes Lernverhalten imitieren können [7]. Während digitale Schaltungen nur binäre synaptische Gewichte [0,1] enthalten können, sind analoge Schaltungen in der Lage, synaptische Gewichte innerhalb eines kontinuierlichen Wertebereichs zu halten, was analoge Schaltungen für neuromorphische Schaltungen besonders vorteilhaft macht.

Statische Grundschaltungen Bearbeiten

Wenn man versteht, wie Transistoren funktionieren und wie sie mit einer Vorspannung beaufschlagt werden, kann man grundlegende statische analoge Schaltungen erstellen. Anschließend werden diese statischen Grundschaltungen kombiniert, um neuromorphe Schaltungen zu erstellen. In den folgenden Schaltungsbeispielen sind die Source-, Drain- und Gate-Spannungen festgelegt, und der Strom ist der Output. In der Praxis wird die Bias-Gate-Spannung auf einen Wert unterhalb der Schwelle festgelegt ( ), der Drain in Sättigung gehalten ( ) und der Source und das Substrat geerdet ( ,  ). Es werden Idealbedingungen angenommen.


 
Statische Grundschaltungen. (A) Diodengeschalteter Transistor. (B) Stromspiegel. (C) Common Drain-Verstärker. (D) Inverter. (E) Stromkonverter. (F) Differenziales Paar.

Diodengeschalteter Transistor Bearbeiten

Bei einem diodengeschaltetem nFET ist das Gate mit dem Drain verbunden. Da der potentialfreie Drain die Gate-Spannung steuert, regulieren sich die Drain-Gate-Spannungen selbst, sodass das Gerät den Eingangsstrom   immer senken wird. Bei mehr als einigen Mikrovolt geht der Transistor in die Sättigung. In ähnlicher Weise ist bei einem diodengeschalteten pFET das Gate mit der Source verbunden. Obwohl dieses einfache Gerät nur als Kurzschluss zu fungieren scheint, wird es in analogen Schaltungen häufig zum Kopieren und Regulieren von Strom verwendet. Insbesondere in neuromorphen Schaltungen werden sie zur Verlangsamung von Stromsenken verwendet, um die Zeitkonstanten von Schaltungen auf biologisch plausible Zeitbereiche zu erhöhen.

Stromspiegel Bearbeiten

Ein Stromspiegel nutzt die Fähigkeit des diodengeschalteten Transistors Strom zu senken. Wenn ein Eingangsstrom durch den als Diode geschalteten Transistor,  , erzwungen wird, werden der Drain und das Gate auf die entsprechende Spannung geregelt, die den Eingangsstrom durchlässt. Da die beiden Transistoren einen gemeinsamen Gate-Knoten haben, wird   auch auf denselbigen Strom gesenkt. Das zwingt den Output-Transistor dazu, den Eingangsstrom zu reproduzieren. Er wird den eingehenden Strom kopieren solange:

  1.  
  2.  .

Die Verstärkung des Stromspiegels kann durch Einstellung dieser beiden Parameter gesteuert werden. Bei Verwendung von Transistoren mit unterschiedlichen Abmessungen, auch bekannt als Kippspiegel, ist die Verstärkung gleich:

 

Ein pFET-Stromspiegel ist einfach ein umgedrehter nFET-Spiegel, bei dem der als Diode geschaltete pFET den Eingangsstrom spiegelt und den anderen pFET zwingt, den Ausgangsstrom zu liefern.

Stromspiegel werden in der Regel verwendet, um Ströme zu kopieren ohne den Eingangsstrom zu verbrauchen. Dies ist besonders wichtig für Rückkopplungsschleifen, z. B. für die Beschleunigung von Aktionspotenzialen und die Summierung von Eingangsströmen an einer Synapse.

Common Drain-Verstärker Bearbeiten

Ein Common Drain-Vestärker, auch Source-Follower genannt, besteht aus einem Eingangstransistor,  , der auf einen Vorspannungstransistor,  , gestapelt ist. Die fixe unterschwellige Vorspannung ( ) kontrolliert das Gate  , und zwingt es den konstanten Strom   zu senken.   ist entsprechend gezwungen auf denselben Strom zu senken ( ) unabhängig von der Eingangsspannung  .

Der Source Follower wird so genannt, weil der Output   dem Input   mit einem leichten Versatz folgt, beschrieben durch:


 
wobei   der Unterschwellen-Steigungsfaktor und in der Regel kleiner als eins ist.

Diese einfache Schaltung wird häufig als Puffer verwendet. Da kein Strom durch das Gate fließen kann, zieht diese Schaltung keinen Strom vom Eingang, eine wichtige Eigenschaft für Schaltungen mit geringem Stromverbrauch. Source-Follower können auch Schaltungen isolieren und sie vor Stromstößen oder statischer Elektrizität schützen. Ein pFET-Source-Follower unterscheidet sich von einem nFET-Source-Follower nur dadurch, dass die Masse des pFETs mit   verbunden ist.

In neuromorphen Schaltungen werden Source-Follower und dergleichen als einfache Stromintegratoren verwendet, die sich wie postsynaptische Neuronen verhalten, die Strom von vielen präsynaptischen Neuronen sammeln.

Inverter Bearbeiten

Ein Inverter besteht aus einem pFET,  , der auf einen nFET,  , gestapelt ist. Ihre Gates sind an den Input   gebunden und der Output ist an einen gemeinsamen Quellknoten   angelegt. Bei einem hohen Eingangssignal ist der pFET ausgeschaltet, während der nFET eingeschaltet ist, wodurch der Ausgangsknoten   entladen und das Signal invertiert wird. Wenn das Eingangssignal dagegen niedrig ist, ist der nFET ausgeschaltet, der pFET jedoch eingeschaltet und lädt den  -Knoten auf.

Diese einfache Schaltung ist als schneller Schalter wirksam. Der Inverter wird auch häufig als Puffer verwendet, da ein Ausgangsstrom erzeugt werden kann, ohne dass der Eingangsstrom direkt eingespeist wird, da kein Strom durch das Gate fließen kann. Wenn zwei Inverter in Reihe geschaltet werden, können sie als nichtinvertierender Verstärker verwendet werden. Dies wurde im ursprünglichen Integrate-and-Fire-Siliziumneuron von Mead et al. 1989 verwendet, um eine schnellen depolarisierenden Spike zu erzeugen, der dem eines biologischen Aktionspotenzials ähnelt [8]. Wenn das Eingangssignal jedoch zwischen hohen und niedrigen Signalen schwankt, befinden sich beide Transistoren in der Überschwellensättigung und verbrauchen Strom, so dass diese Schaltung sehr energiebedürftig ist.

Stromkonverter Bearbeiten

Der Stromkonverter ist auch als gepufferter Stromspiegel bekannt. Er besteht aus zwei Transistoren, deren Gates mit einem Knotenpunkt des anderen verbunden sind. Der Stromförderer reguliert sich selbst, so dass der Ausgangsstrom dem Eingangsstrom entspricht, ähnlich wie bei einem Stromspiegel.

Der Stromkonverter wird häufig anstelle von Stromspiegeln für große, sich seriell wiederholende Arrays verwendet. Dies liegt daran, dass der Stromspiegelstrom durch das Gate gesteuert wird, dessen Oxidkapazität zu einer verzögerten Ausgabe führt. Obwohl diese Verzögerung für einen einzelnen Ausgangsstromspiegel vernachlässigbar ist, kommt es bei langen Spiegelanordnungen zu einer erheblichen Ausgangsverzögerung. Solche Verzögerungen würden große parallele Prozesse stark beeinträchtigen, wie z.B. solche, die versuchen, die Rechenstrategien biologischer neuronaler Netze nachzuahmen.


Differenziales Paar Bearbeiten

Das differentielle Paar ist eine Vergleichsschaltung, die aus zwei Source-Followern mit einer gemeinsamen Vorspannung besteht, die den Strom des schwächeren Eingangs zum Schweigen bringt. Der Vorspannungstransistor zwingt   dazu, konstant zu bleiben, indem er den gemeinsamen Knotenpunkt,  , an eine feste Spannung bindet. Beide Eingangstransistoren wollen Strom proportional zu ihren Eingangsspannungen   bzw.   abführen. Da der gemeinsame Knotenpunkt jedoch fix bleiben muss, müssen die Drains der Eingangstransistoren proportional zu den Gate-Spannungen ansteigen. Der Transistor mit der niedrigeren Eingangsspannung wirkt wie eine Drossel und lässt weniger Strom durch seinen Drain. Bei dem Transistor mit der geringeren Spannung steigt die Source-Spannung an, so dass er aus der Sättigung fällt.

In einer neuronalen Schaltung kann das Differentialpaar als Aktivierungsschwelle eines Ionenkanals fungieren, unterhalb derer sich der spannungsgesteuerte Ionenkanal nicht öffnet und das Neuron an der Spikebildung hindert [9].

Silizium-Neuronen Bearbeiten

Winner-Take-All Bearbeiten

 
CMOS winner-take-all Schaltung mit zwei Eingängen

Die Winner-Take-All (WTA)-Schaltung, ursprünglich von Lazzaro et al. [10] entwickelt, ist eine zeitkontinuierliche, analoge Schaltung. Sie vergleicht die Ausgänge einer Reihe von Zellen und lässt nur die Zelle mit dem höchsten Ausgangsstrom zu, während alle anderen konkurrierenden Zellen gesperrt werden.


Jede Zelle umfasst einen stromgesteuerten Übertrager, empfängt Eingangsströme und gibt diese an eine gemeinsame Leitung ab, die einen Vorspannungstransistor steuert. Die Zelle mit dem größten Eingangsstrom gibt auch den größten Strom ab, wodurch sich die Spannung des gemeinsamen Knotens erhöht. Dadurch werden die schwächeren Zellen gezwungen, sich auszuschalten. Die WTA-Schaltung kann auf ein großes Netzwerk konkurrierender Zellen erweitert werden. Bei einem weichen WTA wird der Ausgangsstrom auch zum Eingang zurückgespiegelt, wodurch die Zellenverstärkung effektiv erhöht wird. Dies ist notwendig, um Rauschen und zufällige Schaltvorgänge zu reduzieren, wenn das Zellenfeld einen kleinen dynamischen Bereich hat.

WTA-Netze werden häufig als eine Form des kompetitiven Lernens in computergestützten neuronalen Netzen verwendet, die eine verteilte Entscheidungsfindung beinhalten. Insbesondere wurden WTA-Netzwerke zur Durchführung von Low Level Erkennungs- und Klassifizierungsaufgaben verwendet, die der kortikalen Aktivität während visueller Selektionsaufgaben ähnlicher sind [11].

Integrate-and-Fire-Neuron Bearbeiten

 
Schaltung eines Spike-Neurons. Der Verstärker besteht aus zwei invertierenden Verstärkern, die den charakteristischen schnellen Aufwärtsschwung eines Aktionspotentials erzeugen. Der Ausgangsspike,  , wird durch den Eingangsstrom,  , ausgelöst und die Breite wird durch   moduliert. Quelle: übernommen von Mead et al., 1989


Das allgemeinste Schema eines Integrate & Fire Neurons, auch als Axon-Hillock Neuron bekannt, ist das am häufigsten verwendete Modell eines Spiking Neurons [8]. Zu den gemeinsamen Elementen der meisten Axon-Hillock-Schaltungen gehören: ein Knoten mit einem Speicher für das Membranpotenzial  , ein Verstärker, eine positive Feedback-Schleife   und ein Mechanismus zur Rückstellung des Membranpotenzials in den Ruhezustand  .

Der Eingangsstrom   erzeugt die Spannung  , die in einem Kondensator C gespeichert ist. Dieser Kondensator entspricht der Lipid-Zellmembran, die die freie Ionendiffusion verhindert und das Membranpotenzial aus der akkumulierten Ladungsdifferenz auf beiden Seiten der Lipidmembran erzeugt. Der Eingang wird verstärkt, um eine Spannungsspitze auszugeben. Eine Änderung des Membranpotenzials wird positiv über   zu   rückgekoppelt, wodurch ein schnellerer Spike entsteht. Dies ähnelt sehr der Art und Weise, wie ein biologischer Axonhügel, der dicht mit spannungsgesteuerten Natriumkanälen besetzt ist, die summierten Potenziale verstärkt, um ein Aktionspotenzial zu erzeugen. Wenn eine Spannungsspitze erzeugt wird, beginnt die Rückstellvorspannung   den Knoten   zu speisen. Dies ist vergleichbar mit Natrium-Kalium-Kanälen, die aktiv Natrium- und Kaliumionen gegen den Konzentrationsgradienten pumpen, um das Ruhemembranpotenzial aufrechtzuerhalten.


Das ursprüngliche Axon-Hillock-Siliziumneuron wurde so angepasst, dass es eine Aktivierungsschwelle enthält, indem ein Differenzialpaar hinzugefügt wurde, das den Eingang mit einer festgelegten Schwellenvorspannung vergleicht [9]. Dieses Leitwert-basierte Siliziumneuron verwendet einen Differential-Paar-Integrator (DPI) mit einem Leck-Transistor, um den Eingang   mit dem Schwellenwert   zu vergleichen. Der Leck-Bias  , der Refraktärzeit-Bias  , der Adaptions-Bias   und positive Rückkopplungsverstärkung steuern alle unabhängig voneinander die Spike-Frequenz. Die Forschung hat sich auf die Implementierung der Spike-Frequenz-Anpassung konzentriert, um Refraktärperioden und modulierende Schwellenwerte festzulegen [12]. Adaptation ermöglicht es dem Neuron, seine Outputfeuerungsrate in Abhängigkeit von seinem Input zu modulieren. Bei einem konstanten hochfrequenten Input wird das Neuron auf den Input desensibilisiert, und der Output wird im Laufe der Zeit immer weiter verringert. Die adaptive Komponente des leitwertbasierten Neuronenschaltkreises wird durch den Kalziumfluss modelliert und speichert die Erinnerung an vergangene Aktivitäten durch den adaptiven Kondensator,  . Die Einführung der Spike-Frequenz-Anpassung ermöglichte es, dass Veränderungen auf der Neuronenebene adaptive Lernmechanismen auf der Synapsen-Ebene steuern. Dieses Modell des neuronalen Lernens ist der Biologie nachempfunden [13] und wird in Silizium-Synapsen näher erläutert.

[[File:DPI Silicon Neuron.jpg|thumb|400px|Die Schaltung des DPI-Neurons. (A) Schaltungsschemata. Der DPI-Tiefpassfilter am Eingang (gelb, ML1 - ML3) modelliert den Leckleitwert des Neurons. Ein Verstärker zur Erzeugung von Spike-Ereignissen (rot, MA1 - MA6) implementiert eine strombasierte positive Rückkopplung (modelliert beides, Natrium-Aktivierungs- und Inaktivierungsleitfähigkeit) und erzeugt Adress-Ereignisse bei extrem niedrigem Stromverbrauch. Der Reset-Block (blau, MR1 - MR6) setzt das Neuron zurück und hält es für eine Refraktärzeit, die durch die Vref-Vorspannung festgelegt wird, im Reset-Zustand. Ein zusätzlicher DPI-Filter integriert die Spikes und erzeugt einen langsamen, hyperpolarisierenden Strom Ig, der für die Anpassung der Spike-Frequenz verantwortlich ist (grün, MG1 - MG6). (B) Reaktion der DPI-Neuronenschaltung auf einen konstanten Eingangsstrom. Die gemessenen Daten wurden mit einer Funktion gefittet, die eine Exponentialfunktion ∝e-t/τK zu Beginn der Stimulation umfasst, die für alle leitwertbasierten Modelle charakteristisch ist, und eine zusätzliche Exponentialfunktion ∝e+t/τNa (charakteristisch für exponentielle I&F-Berechnungsmodelle; Brette und Gerstner, 2005) zu Beginn der Spike-Quelle ( Indiveri et al., 2010.)]
 
(A) Stromdepressionsmechanismus. (B) Adaptiver Schwellenmechanismus als Funktion von  (blau). Die Spike-Schwelle des Neurons (rot) erhöht sich mit jedem Spike, wodurch sich die Spike-Zeitkonstante erhöht (Indiveri et al., 2010)

Silizium-Synapsen Bearbeiten

Die einfachste Silizium-Synapse, die ursprünglich von Mead et al.,1989 [8], verwendet wurde, besteht einfach aus einem pFET-Source-Follower, der einen niedrigen Signalimpuls empfängt und einem unidirektionalen Strom,   [14].

 
(A) Einfache Synapsenschaltung. (B) Synapsenschaltung mit längerer Zeitkonstante. Quellen: übernommen von Mead et al., 1989, bzw. Lazzaro et al., 1993.

Die Amplitude des Spikes wird durch die Gewichtsvorspannung,  , gesteuert, und die Impulsbreite korelliert direkt mit der Breite des Eingangsimpulses, die durch   bestimmt wird. Der Kondensator in der Synapsenschaltung von Lazzaro et al. (1993) wurde hinzugefügt, um die Spike-Zeitkonstante auf einen biologisch plausiblen Wert zu erhöhen. Dies verlangsamt die Geschwindigkeit, mit der sich der Impuls hyper- und depolarisiert, und ist eine Funktion der Kapazität.

 
Grundlegende Synapsenschaltung. Quelle: übernommen aus Lazzaro et al., 1992

Bei mehreren Eingängen, die ein konkurrierendes erregendes und hemmendes Verhalten darstellen, verwendet der Log-Domain-Integrator   und  , um die Größe des Ausgangsstroms,  , als Funktion des Eingangsstroms,   gemäß

 

zu regulieren.


  steuert die Geschwindigkeit, mit der   in der Lage ist, das Gate des Ausgangstransistors aufzuladen.   regelt die Rate, mit der der Ausgang   gesenkt wird. Dieser kompetitive Charakter ist nötig, um das biologische Verhalten von Neurotransmittern zu imitieren, die die neuronale Zündung entweder fördern oder dämpfen.

Synaptische Modelle wurden auch mit linearen Integratoren erster Ordnung unter Verwendung von Filtern im logarithmischen Bereich entwickelt, die in der Lage sind, das exponentielle Abklingen des erregenden postsynaptischen Stroms (EPSC) zu modellieren [15]. Dies ist notwendig, um biologisch plausible Spike-Formen und Zeitkonstanten zu erhalten. Die Verstärkung wird auch unabhängig von der Zeitkonstante der Synapse gesteuert, was für spike-rate- und spike-timing-abhängige Lernmechanismen notwendig ist.

 
(A) EPSC-Messung ("Excitatory Post Synaptic Current") an einer Differential-Pair-Integrator-Synapse (log-domain). (B) Schemata der verwendeten Schaltung. (Basierend auf Bildern von Giacomo Indiveri)

Die erwähnten Synapsen übertragen lediglich Ströme von den präsynaptischen Quellen und verändern dabei die Form der Impulsspitze. Sie verfügen jedoch weder über ein Gedächtnis für frühere Spikes, noch sind sie in der Lage, ihr Verhalten an die zeitliche Dynamik anzupassen. Diese Fähigkeiten sind jedoch notwendig, wenn neuromorphe Schaltkreise wie biologische neuronale Netze lernen sollen.

 
Ein künstliches neuronales Netz. Es gibt   präsynaptische Neuronen ( ), und   postsynaptische Neuronen ( ).   ist ein einzelnes präsynaptisches Neuron, das an das postsynaptische Neuron   mit dem synaptischen Gewicht   synaptiert, wodurch das postsynaptische Neuron   ausgibt. Quelle: Wikipedia

Nach dem Hebb'schen Postulat wird angenommen, dass Verhaltensweisen wie Lernen und Gedächtnis auf der synaptischen Ebene stattfinden [16]. Es schreibt den Lernprozess einer langfristigen neuronalen Anpassung zu, bei der prä- und postsynaptische Beiträge durch biochemische Veränderungen verstärkt oder abgeschwächt werden. Diese Theorie wird oft in dem Sprichwort "Neurons that fire together, wire together", was auf deutsch so viel meint wie "Neuronen, die zusammen feuern, vernetzen sich auch miteinander". Künstliche neuronale Netze modellieren das Lernen durch diese biochemischen "Vernetzungs"-Modifikationen mit einem einzigen Parameter, dem synaptischen Gewicht,  . Ein synaptisches Gewicht ist eine Parameter-Zustandsvariable, die angibt, wie ein präsynaptischer Neuronenspike die Ausgabe eines postsynaptischen Neurons beeinflusst. Zwei Modelle der Hebbschen Plastizität synaptischer Gewichte sind die spike-rate-dependent plasticity (SRDP) und die spike-timing-dependent plasticity (STDP). Seit der Entwicklung dieser Theorie hat sich gezeigt, dass die Aktivität biologischer Neuronen ein Verhalten zeigt, das dem Hebb'schen Lernen sehr ähnlich ist. Ein Beispiel hierfür sind die plastischen Veränderungen an synaptischen NMDA- und AMPA-Rezeptoren, die zu einer durch Calciumfluss induzierten Anpassung führen [17].

Das Lernen und das Langzeitgedächtnis von Informationen in biologischen Neuronen wird der NMDA-Kanal-induzierten Anpassung zugeschrieben. Diese NMDA-Rezeptoren sind spannungsabhängig und kontrollieren den intrazellulären Calciumionenfluss. In Tierstudien wurde gezeigt, dass die neuronale Desensibilisierung verringert wird, wenn das extrazelluläre Calcium reduziert wird [17].

 
(A) Einfache Synapse, bestehend aus AMPA- und NMDA-Kanälen sowie Kalzium. (B) Schaltkreismodelle der einzelnen Elemente der Synapse. (C) Schaltkreisausgänge als Reaktion auf ein präsynaptisches Aktionspotential (AP) ( ). Quelle: Rachmuth et al. (2011).

Da die Calciumkonzentration exponentiell abnimmt, lässt sich dieses Verhalten mit Hilfe von Unterschwellen-Transistoren leicht in Hardware umsetzen. Ein Schaltkreismodell, das calciumabhängiges biologisches Verhalten zeigt, wird von Rachmuth et al. (2011) [18] vorgestellt.

Das Calciumsignal,  , reguliert die Aktivität der AMPA- und NMDA-Kanäle über den  -Knoten gemäß den calciumabhängigen STDP- und SRDP-Lernregeln. Das Ergebnis dieser Lernregeln ist das synaptische Gewicht, , das proportional zur Anzahl der aktiven AMPA- und NMDA-Kanäle ist. Das SRDP-Modell beschreibt das Gewicht in Form von zwei Zustandsvariablen,  , die die Updateregel steuert, und  , die die Lernrate steuert.


 

wobei   das synaptische Gewicht,   die Updateregel,   die Lernrate, und   eine Konstante ist, die es dem Gewicht erlaubt aus der Sättigung zu driften, falls kein Input vorliegt.

Der NMDA-Kanal steuert den Calciumzufluss,  . Die Spannungsabhängigkeit des NMDA-Rezeptors wird durch   modelliert, und die Kanalmechanik wird mit einem großen Kondensator gesteuert, um die Calciumzeitkonstante   zu erhöhen. Der Ausgang   wird über Stromspiegel in die  - und  -Schaltungen kopiert, um nachgelagerte Lernfunktionen auszuführen.

Die  -Schaltung vergleicht   mit den Schwellenwertvorspannungen,   und  , die die Langzeitpotenzierung bzw. die Langzeitdepression über eine Reihe von differentiellen Paarschaltungen steuern. Die Ausgabe der Differentialpaare bestimmt die Updateregel. Diese  -Schaltung weist nachweislich verschiedene Hebbsche Lernregeln auf, wie sie im Hippocampus beobachtet wurden, und Anti-Hebbsche Lernregeln, die im Kleinhirn verwendet werden.

Die  -Schaltung steuert, wann synaptisches Lernen stattfinden kann, indem sie nur Updates zulässt, wenn   über einem festgelegten Schwellenwert,   für differentielle Paare liegt. Die Lernrate (LR) wird wie folgt modelliert:


 

wobei   eine Funktion von   ist und die Lernrate kontrolliert.   ist die Kapazität der  -Schaltung und   ist die Schwellenspannung des Vergleichers. Diese Funktion zeigt, dass   vorgespannt sein muss, um ein erhöhtes   beizubehalten und somit SRDT zu simulieren. Ein Leckstrom   wurde einbezogen, um   während Inaktivität nach   abfließen zu lassen.

Die NEURON Simulationsumgebung Bearbeiten

Einleitung Bearbeiten

 
A screenshot of the Graphical User Interface of NEURON. Source: NEURON tutorial - https://www.neuron.yale.edu/neuron/static/docs/cbtut/stylized/usemodel.html

NEURON ist eine Simulationsumgebung, mit der man die Ausbreitung von Ionen und Aktionspotentialen in biologischen und künstlichen Neuronen sowie in Netzwerken von Neuronen simulieren kann [19]. In der Anwendung wird eine Modellgeometrie von der User*in spezifiziert, indem neuronale Zellbestandteile definiert und verbunden werden, die mit verschiedenen Mechanismen wie Ionenkanälen, Klammern und Synapsen ausgestattet sind. Zur Interaktion mit NEURON kann entweder die grafische Benutzeroberfläche (GUI) oder eine der Programmiersprachen hoc (eine Sprache mit einer C-ähnlichen Syntax) oder Python als Interpreter verwendet werden. Die GUI enthält eine große Auswahl der am häufigsten genutzten Funktionen. Ein Beispielscreen ist in der Abbildung rechts zu sehen. Die Programmiersprachen hingegen können genutzt werden, um dem Modell spezifischere Mechanismen hinzuzufügen und um es zu automatisieren. Darüber hinaus können benutzerdefinierte Mechanismen mit der Programmiersprache NMODL erstellt werden, die eine Erweiterung von MODL ist, einer Modellbeschreibungssprache, die von der NBSR (National Biomedical Simulation Resource) entwickelt wurde. Diese neuen Mechanismen können dann kompiliert und den Modellen über die GUI oder Interpreter hinzugefügt werden. NEURON unterstützt parallele Programmierung mithilfe des MPI-Protokolls. Seit Version 7.0 kann die Parallelisierung auch von internen Multithreading-Routinen durchgeführt werden, um Computer mit mehreren Kernen zu unterstützen.


NEURON wurde ursprünglich von John W. Moore an der Duke University in Zusammenarbeit mit Michael Hines entwickelt. Es wird derzeit in zahlreichen Instituten und Universitäten für Bildungs- und Forschungszwecke eingesetzt. Es steht eine Vielzahl von Informationen zur Verfügung, darunter die offizielle Website mit der Dokumentation, dem NEURON-Forum und verschiedenen Tutorials und Leitfäden sowie eine Datenbasis an Modellen. Darüber hinaus wurde 2006 das maßgebliche Nachschlagewerk für NEURON mit dem Titel "The NEURON Book" [20] veröffentlicht. Um die folgenden Kapitel zu lesen und mit NEURON zu arbeiten, wird ein gewisses Hintergrundwissen über die Physiologie von Neuronen empfohlen. Einige Beispiele für Informationsquellen über Neuronen sind das WikiBook-Kapitel oder die Videos in der Einleitung des Kapitels Advanced Nervous System Physiology auf Khan academy. Wir werden nicht auf spezifische Befehle oder Details zur Durchführung der hier erwähnten Aktionen mit NEURON eingehen, da dieses Dokument nicht als Tutorial gedacht ist, sondern nur einen Überblick über die Möglichkeiten und die Modellstruktur innerhalb von NEURON geben soll. Für weitere praktische Informationen zur Implementierung mit NEURON empfehle ich die unten verlinkten Tutorials und die Dokumentation auf der offiziellen Webseite [19].

Modelerstellung Bearbeiten

 
Eine schematische Darstellung eines Neurons.

Geometrie einer einzelnen Zelle Bearbeiten

Zunächst wird die Erstellung einer Modellgeometrie erörtert, die aus einem einzelnen biologischen Neuron besteht. Eine schematische Darstellung eines Neurons ist in der Abbildung rechts zu sehen. Im folgenden Listing wird ein Beispielcodeausschnitt gezeigt, in dem eine Mehrkammerzelle mit einem Soma und zwei Dendriten mit hoc spezifiziert wird.

 

load_file("nrngui.hoc")

// Erstellen eines Soma-Objekts und eines Arrays der 2 Dendrit-Objekte enthält
ndend = 2
create soma, dend[ndend]
access soma

// Initialisierung der Soma und Dendriten
soma {
  nseg = 1
  diam = 18.8
  L = 18.8
  Ra = 123.0
  insert hh
}

dend[0] {
    nseg = 5
    diam = 3.18
    L = 701.9
    Ra = 123
    insert pas
}

dend[1] {
    nseg = 5
    diam = 2.0
    L = 549.1
    Ra = 123
    insert pas
}

// Verbinden der Dendriten mit dem Soma
connect dend[0](0), soma(0)
connect dend[1](0), soma(1)

// Erstellen der Elektrode im Soma
objectvar stim
stim = new IClamp(0.5)

// Setze die Stimulationsparameter Verzögerung, Dauer und Amplitude
stim.del = 100
stim.dur = 100
stim.amp = 0.1

// Setze Endzeitpunkt der Simulation
tstop = 300

Sections Bearbeiten

Die Grundbausteine in NEURON werden als "Sections" bezeichnet. Zunächst stellt eine Section nur eine zylindrische Röhre mit individuellen Eigenschaften wie Länge und Durchmesser dar. Eine Section kann verwendet werden, um verschiedene Teile eines Neurons darzustellen, z. B. ein Soma, einen Dendriten oder ein Axon, indem sie mit den entsprechenden Mechanismen wie Ionenkanälen oder Synapsenverbindungen mit anderen Zellen oder künstlichen Reizen ausgestattet wird. Eine Neuronenzelle kann dann erstellt werden, indem die Enden der Sections nach Belieben miteinander verbunden werden, zum Beispiel in einer baumartigen Struktur, solange es keine Schleifen gibt. Das Neuron, wie es im obigen Listing angegeben ist, wird in der Abbildung rechts visualisiert.

Segments Bearbeiten

Um die Ausbreitung von Aktionspotenzialen durch die Sections genauer zu modellieren, können die Sections in kleinere Teile, so genannte "Segments", unterteilt werden. Ein Modell bei dem die Sections in mehrere Segments unterteilt sind wird als "Multi-Compartment"-Modell bezeichnet. Die Erhöhung der Anzahl der Segments kann als Erhöhung der Granularität der räumlichen Diskretisierung angesehen werden, was zu genaueren Ergebnissen führt, wenn beispielsweise die Membraneigenschaften entlang des Abschnitts nicht einheitlich sind. In der Standardeinstellung besteht eine Section aus einem Segment.

Membranmechanismen Bearbeiten

Die Standardeinstellungen eines Segments enthalten keine Ionenkanäle, aber die User*in kann sie hinzufügen [21]. Es stehen zwei Arten von eingebauten Ionenkanal-Membranmechanismen zur Verfügung, nämlich ein passives Ionenkanal-Membranmodell und ein Hodgkin-Huxley-Membranmodell, das eine Kombination aus passiven und spannungsgesteuerten Ionenkanälen darstellt. Wenn dies nicht ausreicht, kann die User*in mit Hilfe der Programmiersprache NMODL eine eigenen Membranmechanismen definieren.

Punktprozesse Bearbeiten

 
Eine schematische Darstellung einer Synapse.

Neben den Membranmechanismen, die auf Membranflächen definiert sind, gibt es auch lokale Mechanismen, die als "Punktprozesse" bezeichnet werden und zu den Abschnitten hinzugefügt werden können. Einige Beispiele sind Synapsen, wie in der Abbildung rechts dargestellt, und Spannungs- und Stromklemmen. Auch hier steht es der User*in frei, ihre eigenen Mechanismen mit der Programmiersprache NMODL zu implementieren. Ein wesentlicher Unterschied zwischen Punktprozessen und Membranmechanismen besteht darin, dass die Stelle angeben kann, an der der Punktprozess in den Abschnitt eingefügt werden soll, da es sich um einen lokalen Mechanismus handelt [21].

Output und Visualisierung Bearbeiten

Die berechneten Größen können über die Zeit verfolgt und aufgezeichnet werden, um z. B. ein Diagramm der Spannung über die Zeit innerhalb eines bestimmten Segments zu erstellen, wie im obigen GUI-Screenshot gezeigt. Es ist auch möglich, Animationen zu erstellen, um beispielsweise zu zeigen, wie sich die Spannungsverteilung innerhalb des Axons im Laufe der Zeit entwickelt. Beachten Sie, dass die Größen nur in der Mitte eines jeden Segments und an den Grenzen jedes Abschnitts berechnet werden.

Erstellen eines Zellnetzwerks Bearbeiten

Neben der Modellierung der Ionenkonzentrationen innerhalb einzelner Zellen ist es auch möglich, die Zellen zu verbinden und Netzwerke von Neuronen zu simulieren. Dazu muss die User*in Synapsen, die Punktprozesse sind, an die postsynaptischen Neuronen anbringen und dann "NetCon"-Objekte erstellen, die als Verbindung zwischen dem präsynaptischen Neuron und dem postsynaptischen Neuron fungieren. Es gibt verschiedene Arten von Synapsen, die User*in an Neuronen anbringen kann, wie z.B. AlphaSynapse, bei der der synaptische Leitwert gemäß einer Alpha-Funktion abfällt, und ExpSyn, bei der der synaptische Leitwert exponentiell abfällt. Wie bei anderen Mechanismen ist es auch hier möglich mit NMODL eigene Synapsen zu erstellen. Für das NetCon-Objekt können verschiedene Parameter wie Schwellenwert und Verzögerung angegeben werden, die die Bedingungen festlegen, die erfüllt sein müssen damit das präsynaptische Neuron ein postsynaptisches Potenzial auslöst.

Künstliche Neuronen Bearbeiten

Neben den biologischen Neuronen, die wir bisher besprochen haben, gibt es noch eine weitere Art von Neuronen, die mit NEURON simuliert werden können, nämlich "künstliche" Neuronen. Der Unterschied zwischen den biologischen und den künstlichen Neuronen in NEURON besteht darin, dass das künstliche Neuron keine räumliche Ausdehnung hat und dass seine Kinetik stark vereinfacht ist. Für die Modellierung des Verhaltens künstlicher Zellen in NEURON stehen mehrere Integratoren zur Verfügung, die sich dadurch auszeichnen, dass sie Vereinfachungen der Dynamik biologischer Neuronen darstellen [22]. Um die Rechenzeit für Modelle von künstlichen spikenden Neuronenzellen und Netzwerken zu reduzieren, haben sich die Entwickler von NEURON für die Unterstützung von ereignisgesteuerten Simulationen entschieden. Dadurch wurde der Rechenaufwand für die Simulation von spike-getriggerten synaptischen Übertragungen erheblich reduziert. Obwohl die Modellierung leitwertbasierter Neuronenzellen eine kontinuierliche Systemsimulation erfordert, kann NEURON die Vorteile ereignisgesteuerter Methoden auch für Netzwerke nutzen, die biologische und künstliche Neuronen enthalten, indem es hybride Simulationen vollständig unterstützt. Auf diese Weise kann jede beliebige Kombination von künstlichen und leitwertbasierten Neuronenzellen simuliert werden, während gleichzeitig die reduzierte Rechenzeit erreicht wird, die sich aus der ereignisgesteuerten Simulation von künstlichen Zellen ergibt [23]. Die User*in kann auch andere künstliche Neuronenklassen mit der Sprache NMODL hinzufügen.

Neuron mit Python Bearbeiten

 
Das Python-Logo

Seit 1984 stellt NEURON den hoc-Interpreter für die Erstellung und Ausführung von Simulationen zur Verfügung. Die hoc-Sprache wurde bis heute für die Verwendung mit NEURON erweitert und gepflegt. Da diese Pflege jedoch viel Zeit in Anspruch nimmt und sich die Sprache als verwaist und auf NEURON-Benutzer beschränkt erwiesen hat, wünschten sich die Entwickler von NEURON eine modernere Programmiersprache als Interpreter für NEURON. Da Python im Bereich des wissenschaftlichen Rechnens weit verbreitet ist und viele Benutzer Packages mit wiederverwendbarem Code erstellen, ist es als Interpreter attraktiver geworden als hoc [24]. Es gibt drei Möglichkeiten, NEURON mit Python zu verwenden. Die erste Möglichkeit ist, NEURON mit dem Terminal auszuführen, das interaktive Python-Befehle akzeptiert. Der zweite Modus besteht darin, NEURON mit dem Interpreter hoc auszuführen und über spezielle Befehle in hoc auf Python-Befehle zuzugreifen. Der dritte Modus besteht darin, NEURON als Erweiterungsmodul für Python zu verwenden, so dass ein NEURON-Modul in Python- oder IPython-Skripte importiert werden kann.

Installation Bearbeiten

Um den ersten und zweiten Modus zu nutzen, also NEURON mit eingebettetem Python zu verwenden, genügt die einfache Installation. Um jedoch den dritten Modus zu verwenden, d.h. NEURON als Erweiterungsmodul für Python, ist es erforderlich, NEURON aus dem Quellcode zu erstellen und die NEURON Shared Library für Python zu installieren, die in dieser Installationsanleitung erläutert wird. .

NEURON Commands in Python Bearbeiten

Da NEURON ursprünglich mit hoc als Interpreter entwickelt wurde, muss der Benutzer hoc-Funktionen und -Klassen immer noch explizit von Python aus aufrufen. Alle Funktionen und Klassen, die es für hoc gab, sind in Python über das Modul "neuron" zugänglich, sowohl bei der Verwendung von in NEURON eingebettetem Python als auch bei der Verwendung von NEURON als Erweiterungsmodul. Die NEURON-Befehle in hoc und Python unterscheiden sich nur geringfügig voneinander, so dass es für die Benutzer keine großen Komplikationen beim Wechsel von einem zum anderen geben sollte [24].

Es gibt eine Reihe von Vorteilen, NEURON mit Python anstelle von hoc zu verwenden. Einer der Hauptvorteile ist, dass Python viel mehr Funktionalität bietet, weil es eine vollständige objektorientierte Sprache ist und weil es eine umfangreiche Suite von Analysewerkzeugen für Wissenschaft und Technik gibt. Außerdem ist das Laden von benutzerdefinierten Mechanismen aus NMODL-Skripten einfacher geworden, was NEURON für die Simulation von sehr spezifischen Mechanismen attraktiver macht [24]. Weitere Details zu NEURON in Kombination mit Python finden Sie hier.

Tutorials Bearbeiten

 
Eine schematische Darstellung des neuronalen Netzes, das Sie im ersten Tutorium lernen werden zu modellieren. Der blaue Punkt stellt eine Synapse zwischen den beiden Neuronen dar.

Es gibt mehrere Online-Tutorials für den Einstieg in NEURON, von denen zwei unten aufgeführt sind.

Im ersten Tutorial lernen Sie zunächst, wie Sie eine einzelne Kompartmentzelle erstellen und anschließend ein Netzwerk von Neuronen, wie in der Abbildung rechts dargestellt, mit benutzerdefinierten Zellmechanismen erstellen. Währenddessen werden Sie durch die NEURON-Funktionen für Templates, Automatisierung, Rechenzeitoptimierung und Gewinnung der resultierenden Daten geführt. Das Tutorial verwendet hoc-Befehle, aber die Abläufe sind in Python fast identisch.

Das zweite Tutorial zeigt, wie man eine Zelle mit einer passiven Zellmembran und einem synaptischen Stimulus erstellt und wie man die Ergebnisse mit dem Python-Modul matplotlib visualisiert.

Weiterführende Literatur Bearbeiten

Neben dem, was in dieser Einführung zu NEURON erwähnt wird, gibt es noch viele weitere Lektüreoptionen, die von den Entwicklern ständig erweitert und verbessert werden. Eine ausführliche Erläuterung von NEURON findet sich in "The NEURON book" [20], dem offiziellen Referenzbuch. Darüber hinaus enthält offizielle Webseite eine Vielzahl von Informationen und Links zu anderen Quellen

Quellen Bearbeiten

Zwei weitere Quellen sind ``An adaptive silicon synapse", von Chicca et al. [25] und ``Analog VLSI: Circuits and Principles", von Liu et al. [26].

  1. T. Haslwanter: Hodgkin-Huxley Simulations [Python]. 2012 (http://work.thaslwanter.at/CSS/Code/HH_model.py).
  2. T. Haslwanter: Fitzhugh-Nagumo Model [Python]. 2012 (http://work.thaslwanter.at/CSS/Code/Fitzhugh_Nagumo.py).
  3. T. Anastasio: Tutorial on Neural systems Modeling. 2010 (http://www.sinauer.com/detail.php?id=3396).
  4. Europe spent €600 million to recreate the human brain in a computer. How did it go?. 2023 (https://www.nature.com/articles/d41586-023-02600-x).
  5. E Aydiner, AM Vural, B Ozcelik, K Kiymac, U Tan: A simple chaotic neuron model: stochastic behavior of neural networks. 2003.
  6. WM Siebert: Some implications of the stochastic behavior of primary auditory neurons. 1965.
  7. G Indiveri, F Stefanini, E Chicca: Spike-based learning with a generalized integrate and fire silicon neuron. 2010.
  8. 8,0 8,1 8,2 CA Mead: Analog VLSI and Neural Systems. 1989.
  9. 9,0 9,1 RJ Douglas, MA Mahowald: Silicon Neuron. 2003.
  10. J Lazzaro, S Ryckebusch, MA Mahowald, CA Mead: Winner-Take-All: Networks of   Complexity. 1989.
  11. M Riesenhuber, T Poggio: Hierarchical models of object recognition in cortex. 1999.
  12. E Chicca, G Indiveri, R Douglas: An event-based VLSI network of Integrate-and-Fire Neurons. 2004.
  13. G Indiveri, E Chicca, R Douglas: A VLSI reconfigurable network of integrate-and-fire neurons with spike-based learning synapses. 2004.
  14. J Lazzaro, J Wawrzynek: Low-Power Silicon Neurons, Axons, and Synapses. 1993.
  15. S Mitra, G Indiveri, RE Cummings: Synthesis of log-domain integrators for silicon synapses with global parametric control. 2010.
  16. DO Hebb: The organization of behavior. 1949.
  17. 17,0 17,1 PA Koplas, RL Rosenberg, GS Oxford: The role of calcium in the densensitization of capsaisin responses in rat dorsal root ganglion neurons. 1997.
  18. G Rachmuth, HZ Shouval, MF Bear, CS Poon: A biophysically-based neuromorphic model of spike rate-timing-dependent plasticity. 2011.
  19. 19,0 19,1 Neuron, for empirically-based simulations of neurons and networks of neurons. (http://www.neuron.yale.edu/neuron/).
  20. 20,0 20,1 Nicholas T. Carnevale, Michael L. Hines: The NEURON book. 2009.
  21. 21,0 21,1 NEURON Tutorial 1. (http://www.anc.ed.ac.uk/school/neuron/tutorial/tutA.html).
  22. M.L. Hines and N.T. Carnevale: The NEURON Simulation Environment. 2002.
  23. Romain Brette, Michelle Rudolph, Ted Carnevale, Michael Hines, David Beeman, James M. Bower, Markus Diesmann, Abigail Morrison, Philip H. Goodman, Frederick C. Harris, Jr., Milind Zirpe, Thomas Natschläger, Dejan Pecevski, Bard Ermentrout, Mikael Djurfeldt, Anders Lansner, Olivier Rochel, Thierry Vieville, Eilif Muller, Andrew P. Davison, Sami El Boustani, Alain Destexhe: Simulation of networks of spiking neurons: A review of tools and strategies. 2002.
  24. 24,0 24,1 24,2 Hines ML, Davison AP, Muller E. NEURON and Python. Frontiers in Neuroinformatics. 2009;3:1. doi:10.3389/neuro.11.001.2009 .: NEURON and Python. 2009.
  25. E Chicca, G Indiveri, R Douglas: An adaptive silicon synapse. 2003.
  26. SC Liu, J Kramer, T Delbrück, G Indiveri, R Douglas: Analog VLSI: Circuits and Principles. 2002.