-
HINTERGRUND
-
Ausführungsformen der vorliegenden Erfindung beziehen sich auf die effiziente Erzeugung stochastischer Spike-Muster in kernbasierten neuromorphen Systemen, insbesondere auf die Verwendung von neuromorphen Systemen auf Basis gewichteter Populationscodes.
-
KURZZUSAMMENFASSUNG
-
Gemäß einer Ausführungsform der vorliegenden Erfindung werden ein Verfahren und ein Computerprogrammprodukt für die Erzeugung stochastischer Spike-Muster bereitgestellt. Eine Vielzahl von Eingabewerten wird empfangen. Für jeden der Vielzahl von Werten wird eine Vielzahl von Spikes erzeugt. Jedem der Vielzahl von Spikes ist ein Gewicht zugeordnet. Für jeden der Vielzahl von Spikes wird ein Verbrauchszeitpunkt bestimmt. Jeder der Vielzahl von Spikes wird zu seinem Verbrauchszeitpunkt zum Verbrauch abgesendet.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung werden ein Verfahren und ein Computerprogrammprodukt für die Erzeugung stochastischer Spike-Muster bereitgestellt. Eine erste Vielzahl von Spikes wird an einem ersten neuromorphen System empfangen. Die erste Vielzahl von Spikes codiert einen ersten Wert gemäß einer ersten Codierung. Eine zweite Vielzahl von Spikes wird aus der ersten Vielzahl von Spikes erzeugt. Die zweite Vielzahl von Spikes codiert den ersten Wert gemäß einer zweiten Codierung. Die zweite Vielzahl von Spikes wird einem zweiten neuromorphen System bereitgestellt.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung werden ein Verfahren und ein Computerprogrammprodukt für die Erzeugung stochastischer Spike-Muster bereitgestellt. Eine erste Vielzahl von Spikes wird an einem neuromorphen System empfangen. Die erste Vielzahl von Spikes codiert einen ersten Wert gemäß einer ersten Codierung. Eine Vielzahl von Spike-Sätzen wird aus der ersten Vielzahl von Spikes erzeugt. Jede der Vielzahl von Spike-Reihen codiert den ersten Wert gemäß einer zweiten Codierung. Jede der Vielzahl von Spike-Reihen wird einem aus einer Vielzahl von Klassifikatoren in dem neuromorphen System bereitgestellt.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein System für die Erzeugung stochastischer Spike-Muster bereitgestellt. Ein neuromorphes Netzwerk wird bereitgestellt. Das neuromorphes Netzwerk weist eine Vielzahl von Eingabe-Axonen sowie eine Vielzahl von mit diesen verbundenen stochastischen Neuronen auf. Ein Codierer ist operativ mit der Vielzahl von Eingabe-Axonen gekoppelt. Der Bildcodierer ist dazu konfiguriert, eine erste Vielzahl von Spikes an die Eingabe-Axonen zu senden. Die erste Vielzahl von Spikes codiert einen ersten Wert gemäß einer ersten Codierung das neuromorphes Netzwerk ist dazu konfiguriert, aus der ersten Vielzahl von Spikes eine zweite Vielzahl von Spikes zu erzeugen. Die zweite Vielzahl von Spikes codiert den ersten Wert gemäß einer zweiten Codierung.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 stellt einen beispielhaften Ensemble-Klassifikator gemäß Ausführungsformen der vorliegenden Offenbarung dar.
-
2 stellt einen weiteren Ensemble-Klassifikator gemäß Ausführungsformen der vorliegenden Offenbarung dar.
-
3 veranschaulicht einen beispielhaften Systemverarbeitungszyklus gemäß Ausführungsformen der vorliegenden Offenbarung.
-
4 veranschaulicht einen weiteren beispielhaften Systemverarbeitungszyklus gemäß Ausführungsformen der vorliegenden Offenbarung.
-
5 stellt eine beispielhafte Kreuzschiene gemäß Ausführungsformen der vorliegenden Offenbarung dar.
-
6 stellt beispielhafte Ein- und Ausgaben eines neuromorphen Systems gemäß Ausführungsformen der vorliegenden Offenbarung dar.
-
7 veranschaulicht Bandbreitenreduzierung gemäß Ausführungsformen der vorliegenden Offenbarung.
-
8 veranschaulicht Systemgenauigkeit gemäß Ausführungsformen der vorliegenden Offenbarung.
-
9 stellt einen Rechenknoten gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
-
DETAILBESCHREIBUNG
-
In digitalen, spikebasierten, neuromorphen Systemen werden Informationen durch Spikes dargestellt und übertragen, wobei jeder Spike ein digitales Informationspaket ist, das ein oder mehrere Bits enthält. Beispielsweise ist der Chip IBM TrueNorth ein digitales, spikebasiertes, neuromorphes System, in dem jeder Spike ein einzelnes Bit an Informationen enthält (ein binärer Spike). Spikebasierte neurale Netzwerke wie TrueNorth beruhen auf der Übertragung von Informationspaketen über geschaltete Kommunikationsleitungen, wodurch die benötigte Anzahl von Leitungen signifikant reduziert wird. Das Vorliegen eines Spikes wird als Empfangen einer Eins gewertet, seine Abwesenheit stellt eine Null dar. Unter Verwendung mehrerer unterschiedlicher Spike-Codierschemas können weitere Werte in binäre Spikes codiert werden.
-
Zu derartigen Codier-Schemas gehören Ratencode, Spike-Vorlaufzeit, Populationscode und stochastischer Code. Diese Codierschemas unterscheiden sich in der Anzahl von für die Darstellung eines Wertes benötigten Spikes, der Anzahl benötigter Axon-(Eingabe-)Kanäle, sowie in der benötigten Dauer oder dem Zeitfenster für die Darstellung der Daten.
-
Für bestimmte Arten neuromorpher Berechnungen sind manche Codierschemas effizienter als andere. Daher ist das geeignete Codierschema ein wichtiges Designmerkmal für auf neurosynaptischen Architekturen eingesetzte Netzwerke. Zwei wichtige Gesichtspunkte in solchen Systemen sind ein niedriger Energiebedarf und eine hohe Informationsbandbreite. Leistung und Bandbreite unterliegen jedoch oft einem Kompromiss.
-
Ein System muss Eingabedaten empfangen, um Berechnungen durchführen zu können. Diese Eingabedaten können von Kameras, Mikrofonen, Datendateien oder beliebigen anderen Sensoren und Informationsquellen stammen. Diese Daten müssen zunächst mithilfe eines Spike-Codierschemas in Spikes umgeschlüsselt werden. Diese Spikes werden daraufhin über Kommunikationsleitungen an den neurosynaptischen Chip übertragen. Nach Durchführung der Berechnungen durch den neurosynaptischen Chip werden die Ergebnisse, wieder in Form von Spikes aus dem neurosynaptischen Chip herausgesendet und von einem Schaltkreis oder einer CPU empfangen, wo diese zurück in Werte oder eine symbolische Darstellung umgeschlüsselt werden. Somit findet die Umwandlung und Kommunikation von Spikes sowohl am Eingang als auch am Ausgang des neurosynaptischen Chips statt. Die finale Darstellung der Ausgabedaten kann von der Art der darin enthaltenen Informationen abhängen. Beispielsweise kann die Ausgabe in verschiedenen Ausführungsformen Klassenlabels, Konfidenzniveaus oder Aktionsbefehle an Aktuatoren enthalten. Die Kommunikationsbandbreiteeine bestimmten neurosynaptischen Chips wird begrenzt durch die Charakteristik des Chips und des mit diesem verbundenen Schaltkreises sowie die Charakteristik der Transcodierungs- und Decodierungskomponente. Um eine effiziente Ausnutzung der Bandbreite zu erreichen, werden die Daten so codiert, dass sie in die Bandbreite passen. Außerdem gilt allgemein, dass der Energieverbrauch zunimmt, je höher die Spikerate ist. In diesem Sinne stellt die vorliegende Offenbarung effiziente Spike-Codierschemas bereit, welche Informationen mit einer kleinen Anzahl von Spikes darstellen, somit den Energieverbrauch reduzieren, und dennoch effizientes Rechnen auf einem neurosynaptischen Chip unterstützen.
-
Ein beispielhaftes Codierschema ist die stochastische Codierung. Bei der stochastischen Codierung wird eine reelle Zahl zwischen 0,0 und 1,0 in jedem gegebenen Tick durch die Wahrscheinlichkeit eines Spikeereignisses repräsentiert. Ein anderes beispielhaftes Codierschema ist die Ratencodierung, bei der der Wert durch die Spikerate codiert wird. Bei der Ratencodierung wird angenommen, dass die Spikerate einen regelmäßigen Zeitverlauf hat. Somit liefert die Ratencodierung fast dasselbe Ergebnis wie die stochastische Codierung.
-
In neuralen Rechennetzen wie beispielsweise dem IBM-TrueNorth-System ist diese Darstellung auf verschiedene Klassifikatoren angepasst, einschließlich dem TEA-Klassifikator- und Faltungsnetzwerk, Spike-Arithmetik und Signalfilterung. Mit der stochastischen oder der Ratencodierung steht ein einfaches mathematisches Modell zur Verfügung, das die Gestaltung komplexer, nicht linearer Netzwerke ermöglicht, allerdings ist die stochastische Ratencodierung häufig ineffizient. Sie erfordert eine vergleichsweise große Zahl von Spikes, um einen Wert darzustellen. Zum Beispiel bedeutet die Darstellung des Wertes 0,5 (50%), dass ein Spike im Durchschnitt an jedem zweiten Tick gesendet werden sollte. In einem Beispielsystem mit 1000 Spikezyklen (Tick) pro Sekunde bedeutet dies eine hohe Spikerate von 500 Hertz pro Eingabe. Die Dimensionalität der Daten, wie beispielsweise die Anzahl von Pixeln in einem Eingabeframe, kann ebenfalls hoch sein – von ein paar Tausend bis hin zu Millionen von Pixeln pro Frame.
-
Multiplizieren der Dimensionszahl mit der Anzahl von Samples pro Sekunde und der Anzahl von Spikes pro Sample liefert die benötigte Gesamtbandbreite. Dem obigen Beispiel folgend würde ein Bild von 1 Megapixel bei zehn Frames pro Sekunde unter Verwendung von 100 Ticks pro Frame eine durchschnittliche Anzahl von 1.000.000·10·100·0,5 = 500 Millionen Spikes erfordern. Während ein neuromorpher Chip wie IBM-TrueNorth zum halten von Spike-Traffic mit hohen internen Geschwindigkeiten ausgelegt sein kann, sind die Ein- und Ausgabebandbreiten des Chips durch die oben erwähnten Faktoren stärker begrenzt. Folglich ist die stochastische Ratencodierung, obwohl diese für Berechnungen erstrebenswert sein kann, teuer in Bandbreite und Energieverbrauch.
-
Hierin werden mehrere Vergleiche zu stochastischer Codierung oder Ratencodierung gezogen. Es versteht sich jedoch, dass die gewichteten Populationscode-Schemata gemäß der vorliegenden Offenbarung bestimmte Vorteile gegenüber alternativen Codierungs-Schemata haben, wie beispielsweise Spike-Vorlaufzeit-Code, Burst-Längen-Code, Konvertierung zwischen Spike-Vorlaufzeit- und Burst-Längen-Code, Thermometer-Code und Konvertierung zwischen Raten- und Burst-Längen-Code. Insbesondere hat Thermometer-Code dieselbe Codierungseffizienz wie Populationscode im Hinblick auf die zur Codierung eines Wertes benötigte Anzahl von Spikes und Axonen-Leitungen. Gewichteter Populationscode gemäß der vorliegenden Offenbarung erfordert im Vergleich zu diesen alternativen Codes weniger Spikes und Ticks, um denselben Dynamikbereich darzustellen.
-
Ein andres Attribut, in dem sich Spike-Codierschemas unterscheiden, ist die Anzahl der für denselben Wert existierenden Darstellungen. Im Thermometer-Code, Burst-Längen-Code und Time-to-Spike-Code hat jeder Wert eine eindeutige Darstellung oder Codierung. In Ratencode, stochastischem Code und oft auch in gewichtetem Populationscode kann es jedoch mehrere Darstellungen für denselben Wert geben. Dem obigen Beispiel folgend, kann ein Wert von 0,5, dargestellt in Ratencode, in einem Fenster von 100 Ticks, zahlreiche verschiedene Codes besitzen (Verteilen von 50 Spikes auf 100 Ticks), und sogar noch mehr im stochastischen Code bei dem die Wahrscheinlichkeit eines Spikeereignisses in jedem Tick unabhängig von den anderen Ticks ist. Die Vielzahl der Darstellungen ist ein Leistungsfaktor stochastischer Netzwerke.
-
In bestimmten Systeme kann die Eingabe in zwei oder mehreren Kopien erfolgen, dies kann der Fall sein, wenn das Netzwerk aus mehreren Klassifikatoren aufgebaut ist, die entweder verschiedene Klassen oder dieselben Klassen berechnen (z. B. bei der Verwendung von Klassifikator-Ensembles für höhere Genauigkeit), oder wenn die Netzwerktopologie es erfordert, dass die Eingabe für jeden Kern auf mehreren Axonen eintrifft, um einen höheren Dynamikbereich in synaptischen Gewichten zu unterstützen, (erfordern mehrere Kopien, z. B. zwei bis vier Kopien in TrueNorth-Chips), oder wenn das System aus mehreren Teilsystemen aufgebaut ist, von denen jedes eine separate Kopie der Eingabe benötigt.
-
Unter Bezug auf 1 wird nun ein beispielhafter Ensemble-Klassifikator erläutert. Das Eingabebild 101 wird dem Prä-Prozessor 102 übergeben. Der Prä-Prozessor 102 behandelt das Bild vor, codiert das resultierende Bild und gibt stochastischen Code aus. Mehrfache Instanzen 103a...n des stochastischen Codes werden einer Vielzahl von Klassifikatoren 104a...n übergeben, die sich in dem neuromorphen Chip 105 befinden, welcher in manchen Ausführungsformen ein TrueNorth-Chip ist. Die gesamte Eingabebandbreite in diesem Beispiel wäre n-mal größer als im ensemblefreien Fall mit einem einzelnen Klassifikator.
-
Unter Bezugnahme auf 2 wird ein Codierschema gemäß der vorliegenden Offenbarung erläutert. Das Eingabebild 201 wird dem Prä-Prozessor 202 übergeben. Der Prä-Prozessor 202 behandelt das Bild vor, codiert das resultierende Bild gemäß dem hierin bereitgestellten gewichteten Populationscode und gibt den gewichteten Populationscode aus. Der resultierende gewichtete Populationscode wird einem stochastischen Code-Corelet 206 in den neuromorphen Chip 205 übergeben. Das stochastische Code-Corelet 206 wiederum konvertiert den gewichteten Populationscode in für die Aufnahme durch einen Klassifikator geeigneten stochastischen Code. Mehrere Instanzen 203a...n des stochastischen Codes werden von dem stochastischen Code-Corelet 206 an eine Vielzahl von Klassifikatoren 204a...n übergeben, die sich ebenfalls in dem neuromorphen Chip 205 befinden, welcher in manchen Ausführungsformen ein TrueNorth-Chip ist. Jede Instanz ist eine unabhängige Codierung desselben Eingabewerts in stochastischem Code.
-
Das Schema der 2 lädt die Daten mit einer geringeren Anzahl von Spikes in den Chip und weist ein auf dem Chip ausgeführtes Konvertierungsnetzwerk auf, dass sie zur effizienten Netzwerkberechnung in stochastischen Code umwandelt. Somit wird ein effizientes gewichtetes Populationscode-Schema für die Aufnahme von Daten in Verbindung mit einem auf dem Chip ausgeführten Konvertierungsnetzwerk bereitgestellt, das den gewichteten Populationscode für eine effizienten Netzwerkberechnung in stochastischen Code umwandelt.
-
Eine Alternative zur Verarbeitung von Ensemble-Klassifikatoren ist die Verwendung eines Verteiler-Corelets auf dem Chip. Ein Verteiler-Corelet erstellt mehrere Kopien exakt desselben Eingabe-Spikes. Ein solcher Prozess erzeugt jedoch Abhängigkeiten zwischen den Klassifikatoren oder Teilsystemen. Insbesondere wird von dem stochastischen Code erwartet, dass dieser unabhängig, identisch verteilt ist (independent, identically distributed, IID). Wenn derselbe Code an alle Klassifikatoren übergeben wird, können deren Ergebnisse ebenfalls korrelieren, was wiederum den Klassifikationsertrag von Ensembles reduziert. Gewichteter Populationscode gemäß der vorliegenden Offenbarung verbraucht dieselbe Anzahl von Kernen und hat den Vorteil einer Erzeugung von unabhängigen, identisch verteilten (IID) Eingaben an das Klassifikator-Ensemble.
-
Testergebnisse eines Systems gemäß 1, das auf einer TrueNorth NS1e-Karte implementiert war, zeigen einen Echtzeitlauf bei tausend Ticks pro Sekunde beim Erstellen von Klassifikationsergebnissen für eine Bildklassifikations-Demo bei Verwendung eines Ensembles von acht Klassifikatoren sowie eine MNIST-Zeichenerkennungs-Demo bei Verwendung eines Ensembles von sechzehn Klassifikatoren.
-
Wie weitere unter in Bezug auf mehrere Ausführungsformen beschrieben, werden für eine bestimmte Aufgabe mit gegebenem Dynamikbereich und Zeitfenster die Gewichte des gewichteten Populationscodes dazu optimiert, die erwartete Anzahl von Spikes (Eingabebandbreite) zu minimieren. In manchen Ausführungsformen ändert sich die Eingabebandbreite nicht, wenn die Anzahl der Klassifikatoren im Ensemble zunimmt. Die Eingabebandbreite ist somit unabhängig davon, wie viele Kopien der Eingabedaten von dem System benötigt werden.
-
In manchen Ausführungsformen ist die Eingabebandbreite für gewichteten Populationscode unabhängig von der Gesamtdauer der Ausgabe von stochastischem Code durch das Konvertierungsnetzwerk. Allgemein gilt, dass die Klassifikationsergebnisse genauer würden, je länger diese Ausgabe ist. Durch Einhaltung einer konstanten Anzahl von Eingabe-Spikes pro Frame reduziert ein größeres Zeitfenster tatsächlich die in der Eingabe durchschnittlich benötigte Bandbreite – ein weiterer wichtiger Vorteil gegenüber bisherigen Arbeiten.
-
In manchen Ausführungsformen werden die Eingabe-Spikes aufgenommen, noch während das Netzwerk Ausgabe-Spikes des vorherigen Frames in stochastischem Code erzeugt. Der Übergang zum nächsten Frame kann über eine minimale Anzahl von Ticks erfolgen, z. B. eins bis drei. Dies reduziert die Aufbauzeit zwischen Frames und erhöht die zeitliche Auslastung des Chips.
-
Ein gewichteter Populationscode gemäß der vorliegenden Offenbarung ist ein Spike-Codierschema, in dem ein Wert x in einem Dynamikbereich D durch Gleichung 1 dargestellt wird, wobei k die Anzahl axonaler Eingangsleitungen ist, wi das der i-ten axonalen Eingabe zugeordnete Gewicht ist, und Si(t) die i-te Folge von Eingabe-Spikes über ein Zeitfenster von n Ticks ist.
-
-
Zum Beispiel sei k = 3, w = [1, 3, 9] und n = 2. Die Werte von x können wie in Tabelle 1 gezeigt durch eine Zahl von Spikes dargestellt werden.
x | Tick 1 | Tick 2 |
| s1 = 1 | s2 = 3 | s3 = 9 | s1 = 1 | s2 = 3 | s3 = 9 |
0 | | | | | | |
1 | 1 | | | | | |
2 | 1 | | | 1 | | |
3 | | 1 | | | | |
4 | 1 | 1 | | | | |
5 | 1 | 1 | | 1 | | |
6 | | 1 | | | 1 | |
7 | 1 | 1 | | | 1 | |
8 | 1 | 1 | | 1 | 1 | |
9 | | | 1 | | | |
10 | 1 | | 1 | | | |
11 | 1 | | 1 | 1 | | |
12 | | 1 | 1 | | | |
13 | 1 | 1 | 1 | | | |
14 | 1 | 1 | 1 | 1 | | |
15 | | 1 | 1 | | 1 | |
16 | 1 | 1 | 1 | | 1 | |
17 | 1 | 1 | 1 | 1 | 1 | |
18 | | | 1 | | | 1 |
19 | 1 | | 1 | | | 1 |
20 | 1 | | 1 | 1 | | 1 |
21 | | 1 | 1 | | | 1 |
22 | 1 | 1 | 1 | | | 1 |
23 | 1 | 1 | 1 | 1 | | 1 |
24 | | 1 | 1 | | 1 | 1 |
25 | 1 | 1 | 1 | | 1 | 1 |
26 | 1 | 1 | 1 | 1 | 1 | 1 |
Tabelle 1
-
Beispielsweise wird der Wert x = 14 dadurch dargestellt, dass zwei Spikes an das erste Axon gesendet werden (Gewicht s1 = 1), ein Spike an das zweite Axon (s2 = 3), und ein Spike an das dritte Axon (Gewicht s3 = 9). Somit wird 1 + 1 + 3 + 9 = 14 durch vier Spikes dargestellt. Allgemein kann der Eingabebereich erweitert werden, indem mehrere Axonen mit gleichen oder verschieden Gewichten addiert werden und indem das Zeitfenster auf mehrere Ticks (größeres n) erweitert wird. Beides in Kombination legt den Eingabebereich fest.
-
Der Maximalwert von x ist durch Gleichung 2 gegeben.
-
-
Ein gewichteter Populationscode gemäß der vorliegenden Offenbarung stellt einen Ganzzahlwert dar. Um diesen für die Übermittlung von stochastischem Code verwenden zu können, muss der Ganzzahlwert verwendet werden, um eine Wahrscheinlichkeit zwischen 0,0 und 1,0 zu codieren. Der Dynamikbereich D ist definiert als eine Zahl zwischen 1 und x
max, z. B. D = 16. Der resultierende stochastische Code ist dann definiert als y = x/D. Wahrscheinlichkeiten sind auf D-Werte quantisiert. Wenn D nicht der höchste Wert ist, der wie in dem obigen Beispiel durch x dargestellt werden kann, dann werden höher als D liegende x-Werte ausgelassen. Der resultierende stochastische Code y ist in Tabelle 2 angegeben.
x | Tick 1 | Tick 2 | |
| s1 = 1 | s2 = 3 | s3 = 9 | s1 = 1 | s2 = 3 | s3 = 9 | y(D = 16) |
0 | | | | | | | 0,000 |
1 | 1 | | | | | | 0,063 |
2 | 1 | | | 1 | | | 0,125 |
3 | | 1 | | | | | 0,188 |
4 | 1 | 1 | | | | | 0,250 |
5 | 1 | 1 | | 1 | | | 0,313 |
6 | | 1 | | | 1 | | 0,375 |
7 | 1 | 1 | | | 1 | | 0,438 |
8 | 1 | 1 | | 1 | 1 | | 0,500 |
9 | | | 1 | | | | 0,563 |
10 | 1 | | 1 | | | | 0,625 |
11 | 1 | | 1 | 1 | | | 0,688 |
12 | | 1 | 1 | | | | 0,750 |
13 | 1 | 1 | 1 | | | | 0,813 |
14 | 1 | 1 | 1 | 1 | | | 0,875 |
15 | | 1 | 1 | | 1 | | 0,938 |
16 | 1 | 1 | 1 | | 1 | | 1,000 |
Tabelle 2
-
Der Dynamikbereich des resultierenden stochastischen Codes D muss kleiner oder gleich dem des Eingabebereichs sein. Ansonsten entstehen hohe Wahrscheinlichkeitswerte, welche nicht durch die Spikes in der Eingabe x dargestellt werden können. Also D ≤ xmax.
-
Unter Bezugnahme auf 3 wird nun ein beispielhafter Systemverarbeitungszyklus gemäß der vorliegenden Offenbarung erläutert. Ein Reset wird während der Reset-Phase 301 durchgeführt. In manchen Ausführungsformen ist die Reset-Funktion dadurch implementiert, dass Spikes mit hohen negativen Gewichten an Axonen gesendet werden, wodurch das Neuronenpotential reduziert wird. Es kann sein, dass mehrere Spikes nötig sind, um sicherzustellen, dass das Neuronenpotential vollständig auf Null zurückgesetzt wird. Dementsprechend kann die Reset-Phase 301 mehrere Ticks umfassen, beispielsweise 2, wie im Bild dargestellt.
-
Während der Setup-Phase 302 werden gewichtete Populations-Spikes gesendet. In dieser Phase bauen die Neuronen ihr Membranpotential auf den durch die Eingabedaten angegebenen Wert auf. Während der stochastischen Ausgabephase 303 geben die Neuronen zufällig, gemäß ihrer Wahrscheinlichkeiten für Spike-Ereignisse, Spikes ab. Diese Phase wird allgemein durch den Klassifikator oder die anderen Systeme bestimmt, die die Ausgabe des stochastischen Codiersystems empfangen.
-
Zusammengenommen ergeben die Reset-Phase 301, die Setup-Phase 302 und die stochastische Ausgabephase 303 einen einzelnen Verarbeitungszyklus 310, welcher sich über die gesamte für die Verarbeitung eines Eingabe-Frames benötigte Zeit erstreckt. Es können weitere Verarbeitungszyklen folgen, die eine weitere Reset-Phase 304, Setup-Phasen 305 usw. aufweisen.
-
Das Verhältnis zwischen der stochastischen Ausgabedauer 303 und der Summe der Reset- und Setup-Dauern 301, 302 ist der Auslastungsgrad des Systems. Allgemein kann es erwünscht sein, den Auslastungsgrad zu maximieren, da die Reset- und Setup-Phasen unproduktive Zeiten sind (in denen der Klassifikator keine Eingabe erhält). In 3 ist ein beispielhafter Auslastungsgrad von 16:10 gezeigt.
-
In dem obigen Beispiel ist die durchschnittliche Anzahl von Spikes pro Wert (für Werte 0:15) 2,25, bei Verwendung von nur drei Eingabeleitungen und drei Gewichten. Während dieser Wert höher ist als bei der natürlichen 4-Bit-Binärdarstellung bei der durchschnittlich 2,0 Spikes je Wert benötigt werden, kommt die hardwareimplementierte Axon-Typ-Zuordnungstabelle mit jeweils einem Axon und einem Gewicht weniger aus. Dementsprechend hat diese Kodierung große Vorteile für spikebasierte Darstellungen.
-
Die Spike-Eingaberate ist definiert als die durchschnittliche Anzahl von Spikes pro Tick am Eingang des Systems. In manchen Ausführungsformen eines zugrundeliegenden neuromorphen Systems kann die maximale Spike-Eingaberate durch praktische Systemeigenschaften begrenzt sein. Daher ist der Tick, in welchem die größte Anzahl von Spikes in das System gesendet wurde ein interessantes Merkmal.
-
In einer anderen beispielhaften Ausführungsform wird ein gewichteter Populationscode unter Verwendung von 5 Axonen bereitgestellt, wobei w = [1, 1, 3, 3, 9]. In dieser Ausführungsform kann die Zerlegung eines Werts von 14 gleich bleiben, d. h. 1 + 1 + 3 + 9 = 14. Allerdings passt der Code in einen einzigen Tick anstatt zwei. Wenn die Anzahl verfügbarer Axonen größer ist, erlaubt es dies, weniger Zeit für die Einstellung des Neurons auf das gewünschte Membranpotential zu verwenden oder den Dynamikbereich (Genauigkeit) zu vergrößern. Wenn die Anzahl stochastischer Ausgaben pro Pixel groß ist, können mehr Axonen verwendet werden, ohne die Anzahl der Kerne im System zu vergrößern oder zusätzliche Kosten zu erzeugen.
-
Wie oben ausgeführt, ist die Verarbeitungszeit eines Systems ein wichtiges Designkriterium. Allgemein ist es erstrebenswert, die Daten so schnell wie möglich mit so wenigen Ressourcen (z. B. Energie, Kerne) wie möglich zu verarbeiten. In manchen Ausführungsformen wird der Verarbeitungszyklus reduziert, in dem die Zeit für die Einstellung der Neuronen auf das gewünschte Membranpotential dadurch verkürzt wird, dass die Anzahl der der Setup-Phase zugeordneten Ticks reduziert wird. Dies könnte den Auslastungsgrad des Systems erhöhen. Dies bedeutet jedoch auch, dass alle Spikes des gewichteten Populationscodes in einem kürzeren Zeitraum gesendet werden müssen, wodurch die Kommunikationsbandbreite in diesem Zeitraum erhöht wird.
-
In manchen Ausführungsformen wird das Membranpotential eines Neurons zwischen Setup-Phasen nicht auf Null gesetzt. Dementsprechend entfällt die Reset-Phase. Um einen neuen Wert zu setzen, wird eine differentielle Codierung verwendet. Der codierte Wert in einer nachfolgenden Setup-Phase 305 ist die Differenz zwischen dem Wert der Eingabe 302 im vorhergehenden Frame und der neuen Eingabe. Durch Addieren dieser Differenz auf das aktuelle Membranpotential ändert sich dieses auf den neuen Wert. In solchen Ausführungsformen ist zumindest eines der Gewichte im Populationscode negativ.
-
Unter Bezugnahme auf 4 werden nun Verfahren gemäß der vorliegenden Offenbarung zu Bewältigung der erhöhten maximalen Spike-Eingaberate erläutert. In manchen Ausführungsformen werden manche der Spikes vor der Zeit über ein längeres Zeitfenster mit einer Verzögerung gesendet, sodass der Verbrauch jedes Spikes durch das Neuron innerhalb es Setup-Zeitfensters liegt.
-
Während der Vorladephase 401 werden die Spikes mit einer Verzögerung gesendet. Die Vorladephase und die vorherigen stochastischen Ausgabe überschneiden sich zeitlich. Nach der Reset-Phase 402 wirken sich die Spikes während der Setup-Phase 403 auf das Neuron aus. Auf diese Weise wird die Setup-Phase 403 von acht Ticks auf drei verkürzt. Während der stochastischen Ausgabe 404 erfolgt ein nachfolgendes Vorladen 405, das wiederum die Reset- und Setup-Phasen 406, 407 zur Folge hat.
-
Aus dem vorstehend Gesagten versteht es sich, dass das Schema des gewichteten Populationscodes gemäß der vorliegenden Offenbarung im Sinne von zwei Unterkomponenten betrachtet werden kann. Eine Komponente weist ein Netzwerk auf, das eine Eingabe in gewichtetem Populationscode empfängt und Ausgabe-Spikes in stochastischem Code erzeugt. Dieses Netzwerk ist konfigurierbar und kann mit einem beliebigen Satz von Gewichten sowie einer beliebigen Anzahl von Ausgabekopien je Eingabe-Pin verwendet werden. Die zweite Komponente umfasst einen Wandler für gewichteten Populationscode, der ganzzahlige Eingabedaten in eine Folge von Spikes in gewichtetem Populationscode konvertiert.
-
In manchen Ausführungsformen wird der gewichtete Populationscode gemäß der vorliegenden Offenbarung als Corelet implementiert. Das Corelet erzeugt einen stochastischen Ratencode für einen gegebenen Eingabewert für jede Informationseinheit (z. B. ein Pixel oder eine Wahrscheinlichkeit) mit Werten von 0 bis 1. Das Corelet erstellt eine oder mehrere Kopien der Informationseinheiten der Eingabe. In manchen Ausführungsformen wird jede Kopie des stochastischen Ratencodes unter Verwendung eines TrueNorth-Neurons erzeugt, bei dem der stochastische Schwellenwert gemäß der Eingabewahrscheinlichkeit gesetzt ist.
-
In beispielhaften Ausführungsformen wird das Corelet verwendet, um ein Bild in stochastischem Code an ein Tea-Klassifikator-Corelet zu übermitteln. Wie vorstehend im Hinblick auf 1 erläutert, liegt eine Vorgehensweise darin, unter Verwendung eines Prä-Prozessors, wie beispielsweise eines tn-signal-processor-Tools, mehrere Kopien eines Bildes in stochastischem Raten-Code zu erstellen. Diese Kopien werden daraufhin zur Eingabe in die Tea-Klassifikatoren an den Chip übertragen. Da diese Kopien gleichzeitig an den Chip gesendet werden, vervielfacht sich die Eingabebandbreite an den Chip, sodass diese gesättigt sein kann. Bandbreitennutzung ist von besonderer Bedeutung, wenn größere Bilder mit mehreren Kanälen verwendet werden.
-
Wie vorstehend im Hinblick auf 2 diskutiert, reduziert die Verwendung eines Zufallscode-Corelets gemäß Ausführungsformen der vorliegenden Offenbarung die Bandbreite auf diejenige einer einzigen Kopie der Daten. Die Übermittlung in das stochastische Code-Corelet erfolgt mittels gewichtetem Populationscode. Dieser Code wird einmalig über eine Anzahl von Ticks übermittelt (während der in 3–4 gezeigten Setup-Phase). Nach diesem Setup erzeugt das Corelet solange Ausgaben in Form von stochastischem Code, bis es einen Reset-Spike empfängt. In diesem Zeitraum ist keinerlei Eingabe nötig. Die durchschnittliche Eingabebandbreite ist somit die während der Setup-Phase bereitgestellte Eingabe geteilt durch die Summe der Dauern der Setup-Phase und der stochastischen Ausgabephase. Je länger die Ausgabephase dauert, desto niedriger ist die durchschnittliche Eingaberate. Dies steht in Widerspruch zu externer Übermittlung von stochastischem Code, welche während der gesamten Dauer des Ausgabefensters aktiv sein muss. Dementsprechend reduziert das Corelet die durchschnittliche Spike-Eingaberate, besonders in Fällen mit einem langen Ausgabefenster.
-
Ein Corelet gemäß Ausführungsformen der vorliegenden Offenbarung verwendet Neuronen mit einem stochastischen Schwellenwert im Reiner-Integrator-Modus (gamma = 2), um Spikes zu erzeugen. Die Operation läuft in Zyklen ab, die sich aus den drei Stufen Reset, Setup und Erzeugen zusammensetzen, wie in den 3–4 gezeigt. In manchen Ausführungsformen ist die Reset-Stufe ein oder zwei Ticks lang, während derer das Membranpotential der stochastischen Neuronen auf null gesetzt wird. Während der Setup-Stufe werden die Eingabe-Spikes in die Neuronen integriert, sodass das Membranpotential auf ein Niveau erhöht wird, das der Wahrscheinlichkeit des stochastischen Codes entspricht. Während dieser Stufe, die in manchen Ausführungsformen einen bis drei Ticks lang dauert, kann das Neuron beginnen, Spikes zu erzeugen, sobald das Membranpotential den Neuronenschwellwert (alpha) überschreitet. Es kann jedoch sein, dass die Ausgaberate noch nicht zur Eingabewahrscheinlichkeit passt. Am Ende der Setup-Stufe erzeugen die Neuronen Spikes mit den gewünschten Zufallsraten.
-
In manchen Ausführungsformen ist das Corelet über Konnektoren, die in manchen Ausführungsformen als externe Konnektoren gesetzt sind, mit anderen Corelets verbunden. Die erste Eingabe besteht aus den in Ratencode codierten Daten. Die zweite Eingabeschnittstelle besteht aus den Reset-Signalen für die Kerne im Corelet, die zum Zurücksetzen der Neuronenpotentiale verwendet werden.
-
Eine Schnittstelle kann verwendet werden, um den Status des Corelets zurückzusetzen, was in manchen Ausführungsformen am Anfang jedes Frames (z. B. eines Bildes) durchgeführt wird. Jeder Reset-Pin ist in jedem Corelet mit einem als Reset-Axon definierten Axon verbunden, welches daher nach jedem Frame zum Zurücksetzen der Neuronen reserviert werden muss. Dennoch kann der Reset-Pin, falls erforderlich, gleichermaßen zum Zurücksetzen des Corelets verwendet werden.
-
Tabelle 3 zeigt die Eingabeparameter für ein beispielhaftes Corelet mit einer Beschreibung und Beispielwerten.
Objektname | Objektbeschreibung | Beispielwert |
nInputRows | Anzahl der Eingabezeilen | 2 |
nInputCols | Anzahl der Eingabespalten | 3 |
nInputChs | Anzahl der Eingabekanäle | 2 |
inCoord | Ausgabe-Pin-Konfiguration für jede Kopie. | Siehe unten |
nCopies | Anzahl der Kopien | |
nInputTicks | Anzahl der für die Dateneingabe verwendeten Ticks. Mindestwert: 1. Die Ausgabelatenz ist (nInputTicks-1). | 4 |
nAxonPerProb | Anzahl der Axonen, die zur Konfiguration der Werte für jede Wahrscheinlichkeit verwendet werden. | 5 |
axonWeights | Ein Vektor der Länge nAxonPerProb.
Es können höchstens 3 Axon-Typen verwendet werden, da 1 Typ zum Zurücksetzen reserviert ist. | [1, 1, 2, 2, 4] |
dynamicRange | Wertebereich: (2, 4, 8, 16, 32, 64, 128).
Definieren des für die Eingabewerte nötigen Dynamikbereichs. Standardwert: 16. Ein Fehler wird generiert, wenn der gewünschte Dynamikbereich nicht mit dem vorgegebenen Code erreicht werden kann (Gewichte und nInputTicks). | 16 |
maxSpikesPerTick | Definieren der maximalen Anzahl von Eingabe-Spikes je Tick | 1000 |
Tabelle 3
-
Ein beispielhaftes Corelet basiert auf einem stochastischen Reiner-Integrator-Neuron. Alle Neuronen in dem Corelet sind auf die gleiche Weise gesetzt. Das Neuron wird mit threshold = 1 und TM gemäß dem benötigten dynamicRange-Wert gesetzt. Das Neuron wird mit gamma = 2 (kein Reset nach Spike-Erzeugung), epsilon = 0, kappa = 1 und beta = 0 gesetzt.
-
Während der Reset-Phase werden Spikes mit synaptischem Gewicht –255 an Axon 0 gesendet. Dies veranlasst das Neuron, sein Potential auf 0 abzusenken. Die Eingabedaten werden in gewichtetem Populationscode über eine Gruppe von nAxonPerProb Axonen pro Eingabe bereitgestellt, wobei die Gewichte durch den Vektor axonWeights definiert sind. Diese Spikes setzen das Membranpotential auf einen Wert v. Das Neuron beginnt mit der spontanen Erzeugung von Spikes mit einer Wahrscheinlichkeit von p = v/2TM. Das Neuron fährt mit der spontanen Erzeugung von Spikes fort, bis Reset-Spikes sein Membranpotential zurück auf null senken.
-
In manchen Ausführungsformen gibt es ein Neuron pro Ausgabe-Pin. Es kann jedoch abhängig von der Anzahl der für diese Eingabe benötigten Kopien eine Gruppe von Eingabe-Axonen verwendet werden, um ein oder mehrere Neuronen auf denselben Wert v zu konfigurieren.
-
Unter Bezugnahme auf 5 wird eine beispielhafte Kreuzschiene 501 für einen Fall mit vier Eingabe-Axonen und vier Ausgabekopien pro Pixel erläutert. Die zugeordneten Gewichte sind [1, 1, 3, 9]. Unter Bezugnahme auf 6 werden beispielhafte Ein- und Ausgaben für diese beispielhafte Kreuzschiene geliefert. Eingaben 601 werden in gewichtetem Populationscode bereitgestellt. Ausgaben 602 weisen vier Eingabekopien wie weiter oben beschrieben auf.
-
In manchen Ausführungsformen, wie zum Beispiel denen, die auf TrueNorth aufbauen, beträgt die Rate, mit der Daten an den Chip gesendet werden können, 1000 Spikes pro Sekunde. In manchen Ausführungsformen führt das Corelet einen Verifikationsschritt aus, in welchem das Corelet über alle möglichen Beispiele in dem Datensatz iteriert, um die maximale Anzahl von Spikes je Tick zu bestimmen. Falls diese größer als maxSpikesPerTick ist, erzeugt das Corelet eine Fehlermeldung.
-
Falls es nicht möglich ist, auf die Daten zuzugreifen, kann das Corelet die durchschnittliche Anzahl von Spikes gemäß der Wahrscheinlichkeitsdichtefunktion (probability density function, pdf) der Eingabedaten berechnen und die maximalen Spikes simulieren. Dem Übermittlungsbeispiel unten folgend, wird die durchschnittliche Anzahl von Spikes durch Gleichung 3 geliefert, worin pi die Wahrscheinlichkeit für jede Eingabe i ist. In diesem Beispiel kann eine gleichmäßige Verteilung angenommen werden, pi = 1 / 17. Spikei ist die Anzahl der zum Codieren der Eingabewerts i nötigen Spikes. In diesem Beispiel werden 17 mögliche Eingabewerte von 0 bis 16 angenommen.
-
-
Mit nInputTicks ist es möglich, Spikes gleichmäßig auf alle Eingabe-Ticks zu verteilen. Unter Betrachtung der Eingabedatengröße N (zum Beispiel 28·28 = 784) ist die durchschnittliche Anzahl von Spikes in jeder Eingabe durch Gleichung 4 gegeben.
-
-
In diesem Beispiel ist avgSpikesPerTick = 922,35, was auf 923 als obere Grenze gerundet werden kann.
-
Obwohl nAxonPerProb und axonWeight manuell durch den Nutzer festgelegt werden können, kann das Corelet den optimalen Wert auf intelligente Weise bestimmen, der die beste Genauigkeit und die geringste Zahl von Spikes pro Tick sowie Kerne haben kann. generateOptimalPara.m wird verwendet, um den optimierten Parametersatz zu erzeugen. resetDelay ist kein konfigurierbarer Parameter für das Corelet, aber es wird verwendet, um festzulegen, wann die effektive Eingabe nach einem Reset gestartet werden soll. In manchen Ausführungsformen des zugrundeliegenden Chips beträgt der Minimalwert 2, um sicherzustellen, dass der Reset-Vorgang vollständig ist. Falls ein höherer Dynamikbereich benötigt wird, ist es möglich, 2 Ticks zu verwenden, um einen größeren Negativwert zum Auslösen des Reset-Vorgangs zu erzeugen. Die Anzahl der Ausgabe-Pins ist durch den Parameter inCoord in der TEA-Konfiguration vorgegeben, während die Anzahl der Ausgabe-Pins für die Konfiguration Verteiler mit Variabler Länge (Variable Length Splitter, VLS) aufgrund des Vektors splitCount berechnet werden muss.
-
In der TEA-Konfiguration kann es so viele Ausgabekonnektoren wie die in nCopies angegebene Anzahl von Kopien geben. Dies bedeutet, dass sich jede TEA-Instanz mit jedem der Ausgabekonnektoren dieses Corelets verbindet. Im VLS-Fall gibt es nur einen Ausgabekonnektor.
-
In manchen Ausführungsformen hat das Corelet zwei Konfigurationen. Die erste ist dafür eingerichtet, Kopien an Instanzen der TEA-Schicht bereitzustellen. Die zweite, Variable Length Splitter-(VLS-)Corelet genannt, stellt die Funktionalität eines Verteiler-Corelets bereit, verfügt jedoch über eine flexiblere Definition. Die folgenden beiden Abschnitte stellen die Parameter vor, die zur Konfiguration des Corelets in einem diese beiden Formate benötigt werden.
-
Tabelle 4 zeigt eine beispielhafte inCoord-Definition für ein Bild. Es wird angenommen, dass das Bild Kanal für Kanal in einem Rasterverfahren durchlaufen wird. Der Index der Tabelle gibt die Nummer des Pins im Ausgabekonnektor an. In diesem Fall folgt jede von dem Corelet erzeugte Kopie der Definition der inCoord-Tabelle für die Bereitstellung der Kopien.
Ausgabe-Pin (Index) | Zeile | Spalte | Kanal |
1 | 1 | 1 | 1 |
2 | 2 | 1 | 1 |
3 | 1 | 2 | 1 |
4 | 2 | 2 | 1 |
5 | 1 | 2 | 1 |
6 | 2 | 2 | 1 |
7 | 1 | 3 | 1 |
8 | 2 | 3 | 1 |
9 | 1 | 1 | 2 |
10 | 2 | 1 | 2 |
11 | 1 | 2 | 2 |
12 | 2 | 2 | 2 |
13 | 1 | 2 | 2 |
14 | 2 | 2 | 2 |
15 | 1 | 3 | 2 |
16 | 2 | 3 | 2 |
Tabelle 4
-
Tabelle 5 zeigt beispielhafte Eingabeparameter für die VLS-Konfiguration.
Objekt Nr. | Objektname | Objektbeschreibung | Beispielwert |
1 | splitCount | Die Anzahl der Kopien für jeden Eingabe-Pin ist als Vektor gegeben, in dem der Index die Nummer des Eingabe-Pins und der Wert die Anzahl der Kopien (die null sein kann) ist. | [2, 3, 1, 0, 3, 4, 1, 7, 1] |
2 | nInputTicks | Anzahl der für die Dateneingabe verwendeten Ticks. Mindestwert: 1. Die Ausgabelatenz ist (nInputTicks-1). | 4 |
3 | nAxonPerProb | Anzahl der Axonen, die zur Konfiguration der Werte für jede Wahrscheinlichkeit verwendet werden. | 5 |
4 | axonWeights | Ein Vektor der Länge nAxonPerProb. Es können höchstens 3 Axon-Typen verwendet werden, da 1 Typ zum Zurücksetzen reserviert ist. | [1, 1, 2, 2, 4] |
5 | dynamicRange | Wertebereich: (2, 4, 8, 16, 32, 64, 128). Definieren des für die Eingabewerte nötigen Dynamikbereichs. Standardwert: 16. Ein Fehler wird generiert, wenn der gewünschte Dynamikbereich nicht mit dem vorgegebenen Code erreicht werden kann. | 16 |
6 | maxSpikesPerTick | Definieren der maximalen Anzahl von Eingabe-Spikes je Tick | 1000 |
Tabelle 5
-
In einem splitCount-Beispielvektor wird die Position des Eingabe-Pins durch den Index von splitCount festgelegt. Die Position des Ausgabe-Pins wird für jeden Eingabe-Pin wie im Vektor angegeben gemäß der Anzahl benötigter Kopien erhöht. In diesem Beispiel wird der Eingabe-Pin mit Nummer 1 zweimal in den Ausgabekonnektor kopiert, während der Eingabe-Pin mit Nummer 4 nicht kopiert wird, da sein Wert im Vektor null ist.
-
Die Daten werden in das Corelet unter Verwendung von stochastischem Code, wie in den Eingabeparametern festgelegt, eingegeben. Die Pin-Verteilung und die Anzahl der Eingabe-Pins wird aus den Eingabeparametern, wie im Eingabeparameterabschnitt angegeben, abgeleitet. generateDataSpike.m wird verwendet, um die Spikes für Daten zu erzeugen.
-
Wie vorstehend ausgeführt, werden in manchen Ausführungsformen Daten unter Verwendung von TrueNorth-Tools wie tn-signal-processor in Spikes umgewandelt. In beispielhaften Ausführungsformen wird ein Wandler bereitgestellt. Angesichts der Konfiguration des Corelets wandelt dieser eine Reihe von Bildern in Spikes um, wobei die optimale Konfiguration wie unten gezeigt ermittelt wird.
-
Unter Annahme der folgenden Parameter – axonWeight: [1, 3, 9]; Eingabebereich: 16 (Eingabedaten werden in eine Ganzzahl von 0 bis 16 umgewandelt); nInputTicks: 2 – erzeugt das Corelet wie in Tabelle 6 gezeigt eine Zuordnungstabelle für die Umwandlung der Eingabedaten.
Eingabe | Benötigte Spikes |
0 | Null |
1 | 1 (1 Spike für Axon-Typ 1) |
2 | 2 (2 Spikes für Axon-Typ 1) |
3 | 1 (1 Spike für Axon-Typ 2) |
4 | 2 (1 Spike für Axon-Typ 1, 1 für 2) |
5 | 3 (2 Spike für Axon-Typ 1, 1 für 2) |
6 | 2 (2 Spike für Axon-Typ 2) |
7 | 3 (1 Spike für Axon-Typ 1, 2 für 2) |
8 | 4 (2 Spikes für Axon-Typ 1, 2 für 2) |
9 | 1 (1 Spike für Axon-Typ 3) |
10 | 2 (1 Spike für Axon-Typ 1, 1 für 3) |
11 | 3 (2 Spike für Axon-Typ 1, 1 für 3) |
12 | 2 (1 Spike für Axon-Typ 2, 1 für 3) |
13 | 3 (1 Spike für Axon-Typ 1, 1 für 2, 1 für 3) |
14 | 4 (2 Spike für Axon-Typ 1, 1 für 2, 1 für 3) |
15 | 3 (2 Spike für Axon-Typ 2, 1 für 3) |
16 | 4 (1 Spike für Axon-Typ 1, 2 für 2, 1 für 3) |
Tabelle 6
-
Die Bandbreitenreduktionsrate ändert sich entsprechend der benötigten Anzahl von Kopien und des benötigten Eingabezeitfensters (unter Verwendung mehrfacher Ticks zur Darstellung der Eingabedaten). 7 zeigt die Verbesserung unter verschiedenen Konfigurationen für den Fall, dass die Eingabedaten gleichmäßig zwischen 0 und 1 verteilt sind sowie 64 Kopien und 16 Eingabezeitfenster benötigt werden. Die Größe Dynamikbereich ist die Genauigkeit, mit der eine Fließkommazahl dargestellt wird, z. B. bedeutet 128, dass eine feste Zahl von 0~128 zur Darstellung einer 0~1-Fließkommazahl verwendet wird. Je größer Dynamikbereich, desto genauer und desto mehr Eingabe-Spikes werden auch benötigt.
-
Corelets gemäß der vorliegenden Offenbarung unterstützen verschiedene Genauigkeiten, Ein-/Ausgabezeitfenster und Kopienanzahlen. Bei geeigneter Konfiguration erreichen diese die gleiche Systemleistung bei geringstem Bandbreitenbedarf. 8 zeigt den Vergleich mit und ohne das Corelet bei Bildklassifizierung.
-
Es versteht sich, dass die Ausführungsformen der vorliegenden Offenbarung zur Anwendung in verschiedenen neuromorphen Systemen geeignet sind. Obwohl die vorliegende Offenbarung verschiedene beispielhafte Ausführungsformen im Rahmen einer Implementierung mit IBM TrueNorth vorstellt, ist ihre Lehre auch auf andere Nicht-von-Neumann-Architekturen anwendbar. In vielen dieser Architekturen kann das neuromorphe Substrat auf VLSI-Technologie gebaut sein, wobei elektromagnetische Komponenten, Memristoren, kondensatorbasierte Systeme, analoge Geräte oder sonstige neuromorphe Geräte verwendet werden können. Einige dieser Architekturen stellen programmierbare Systeme, andere zweckbestimmte Systeme bereit. Einige dieser Architekturen stellen auf dem Chip ausgeführtes Lernen bereit, während andere chip-externes Lernen bereitstellen. Einige dieser Architekturen werden auf einem einzelnen Chip umgesetzt, andere auf mehreren Chips wie beispielsweise in Arrays oder in mehrschichtigen neuromorphen Architekturen. Einige dieser Architekturen basieren auf paketvermittelten Spikes, während andere auf einer Vielzahl sonstiger elektronischer Signale basieren.
-
Ein neurosynaptisches Programm kann beispielsweise ein neurosynaptisches Netzwerk darstellen. Ein neurosynaptisches Programm enthält Informationen in Bezug auf ein neurosynaptisches Netzwerk. Diese Informationen enthalten neuronale Eigenschaften und Dynamiken, die die Reaktion eines elektronischen Neurons auf Eingabe-Spikes bestimmen. Zu neuronalen Eigenschaften und Dynamiken zählen beispielsweise ein Schwellenwertparameter, ein Leak-Parameter, ein Verzögerungsparameter oder ein Reset-Parameter. Die neurosynaptischen Programminformationen können synaptische Verbindungen des Neurons enthalten (z. B. durch eine synaptische Kreuzschiene erzeugte synaptische Verbindungen). Die neurosynaptischen Programminformationen können Axon-Eigenschaften (z. B. Axon-Typen) enthalten. Die neurosynaptischen Programminformationen können einen oder mehrere Zielorte (z. B. Ziel-Axonen) umfassen, an die die Ausgaben des Neurons übermittelt werden sollen.
-
Ein neurosynaptisches Netzwerk stellt eine Instanziierung eines neurosynaptischen Programms dar. Ein neurosynaptisches Netzwerk kann in Hardware, als Simulation oder in beidem instanziiert sein. Aus einem neurosynaptischen Programm können beispielsweise eine oder mehrere Instanzen eines neurosynaptischen Netzwerks entstehen, wobei die Instanzen sich auf einem einzelnen Kern, mehreren Kernen oder mehreren Chips befinden können.
-
Ein Schaltkreis eines neuromorphen Kerns stellt ein Beispiel für ein von einem neurosynaptischen Programm beschriebenes neurosynaptisches Netzwerk dar.
-
Ein Corelet oder eine Corelet-Programmiersprache kann Software darstellen, die eine Abstraktion neurosynaptischer Programme bereitstellt. Eine Zusammensetzung neurosynaptischer Programme kann durch Zusammensetzen von Corelets geschaffen werden.
-
In einem Netzwerk aus neurosynaptischen Kernen können sich die Neuronen auf jedem Kern mit jedem Axon jedes weiteren synaptischen Kerns verbinden (einschließlich sich selbst). Wenn ein Neuron einen Spike erzeugt, sendet es ein Spike-Paket, das einem Ziel-Axon oder einem Empfängerkern übergeben wird. Für eine gegebene Anwendung und neurosynaptisch konfiguriert kann ein virtueller Graph G konstruiert werden, in dem jeder Knoten einen einzelnen Kern und jede Kante eine Verbindung von einem Satz von Quell-Neuronen auf einem Quellkern zu einem Satz von Empfangs-Neuronen auf einem Zielkern darstellt. Das Gewicht der Kante zwischen zwei beliebigen kernen stellt die Gesamtanzahl der zwischen den beiden Kernen kommunizierten Spikes dar. Alle Selbstkanten (zwischen einem Neuron und einem Axon auf demselben Kern) können ignoriert werden. In einer Ausführungsform eines neurosynaptischen Systems als physische Hardware kann jeder Kern eine eindeutige physikalische Adresse in einem 2D-Gitter auf einem Chip besitzen. In einem System kann eine beliebige Anzahl von Chips vorhanden sein.
-
Eine Spike-Kommunikation kann auf dem Weg von einem Quell-Neuron auf einem Quellkern an ein Ziel-Axon auf einem Empfängerkern eine bestimmte Zahl von Sprüngen über Router in einem 2D-Gitter in der Horizontalen, der Vertikalen oder einer Kombination davon durchlaufen. Jeder Sprung, den ein Spike-Paket durchläuft, kostet Leistung und Energie.
-
Unter Bezugnahme auf 9 wird nun ein schematisches Beispiel eines Rechenknotens gezeigt. Der Rechenknoten 10 ist nur ein Beispiel für einen geeigneten Rechenknoten, der nicht den Eindruck einer Einschränkung des Nutzungsumfangs oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung erwecken soll. Ungeachtet dessen ist der Rechenknoten 10 für eine Implementierung und/oder eine Ausführung einer beliebigen vorstehend beschriebenen Funktionalität geeignet.
-
In dem Rechenknoten 10 gibt es ein Computersystem/einen Server 12, der zu einem Betrieb mit zahlreichen anderen universellen oder speziellen Umgebungen oder Konfiguration von Rechensystemen fähig ist. Beispiele bekannter Rechensysteme, -umgebungen und/oder -konfigurationen, die für den Gebrauch mit Computersystem/Server 12 geeignet sind, umfassen, ohne Einschränkung auf das Genannte, Personalcomputersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Organizer oder Laptops, Mehrprozessorsysteme, mikroprozessorbasierte Systeme, Set-Top-Boxes, programmierbare Verbraucherelektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der oben genannten Systeme, Geräte oder dergleichen enthalten.
-
Das Computersystem/der Server 12 kann im allgemeinen Kontext von durch einen Computer ausführbaren Anweisungen, wie beispielsweise auf einem Computersystem ausgeführten Programmmodulen, beschrieben werden. Allgemein können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und dergleichen aufweisen, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen genutzt werden, in denen Aufgaben durch entfernte Verarbeitungsvorrichtungen durchgeführt werden, die durch ein Kommunikationsnetzwerk miteinander verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule in sowohl lokalen als auch entfernten Speichermedien, einschließlich Speichergeräten, von Computersystemen befinden.
-
In 9 ist das Computersystem/der Server 12 in Rechenknoten 10 in Form eines Universalcomputergeräts gezeigt. Die Komponenten des Computersystems/Servers 12 können, ohne Einschränkung auf das Genannte, eine(n) oder mehrere Prozessoren oder Prozessoreinheiten 16, einen Systemspeicher 28 und einen Bus 18 aufweisen, der verschiedene Systemkomponenten, einschließlich den Systemspeicher 28 und den Prozessor 16, miteinander verbindet.
-
Der Bus 18 stellt einen oder mehrere Busstrukturen beliebigen Typs dar, einschließlich einen Speicherbus oder Speichercontroller, einen Peripheriebus, einen Accelerated Graphics Port sowie einen Prozessor oder lokalen Bus, der eine beliebige aus einer Vielzahl von Busarchitekturen verwendet. Als Beispiel, und nicht zur Einschränkung, zählen zu solchen Architekturen ein Industry Standard Architecture-(ISA-)Bus, ein Micro Channel Architecture-(MCA-)Bus, ein Enhanced ISA-(EISA-)Bus, ein lokaler Video Electronics Standards Association-(VESA-)Bus sowie ein Peripheral Component Interconnect-(PCI-)Bus.
-
Das Computersystem/der Server 12 weist typischerweise eine Vielzahl von durch ein Computersystem lesbaren Medien auf. Derartige Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 12 zugreifen kann, und umfassen sowohl flüchtige als auch nichtflüchtige Medien sowie sowohl wechselbare als auch nicht wechselbare Medien. Der Systemspeicher 28 kann durch ein Computersystem lesbare Medien in Form von flüchtigem Speicher wie beispielsweise Direktzugriffsspeicher (RAM) 30 und/oder Cache-Speicher 32 aufweisen. Das Computersystem/der Server 12 kann weiterhin andere wechselbare/nicht wechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien aufweisen. Nur zum Beispiel kann das Speichersystem 34 zum Lesen von und Schreiben auf ein nicht wechselbares, nichtflüchtiges Magnetmedium (nicht gezeigt und typischerweise als „Festplatte” bezeichnet) bereitgestellt werden. Obwohl nicht gezeigt, können ein magnetisches Plattenlaufwerk zum Lesen von und Schreiben auf eine wechselbare, nichtflüchtige magnetische Diskette (z. B. eine „Floppy Disk”) sowie ein optisches Plattenlaufwerk zum Lesen von und Schreiben auf eine wechselbare, nichtflüchtige optische Disk wie beispielsweise eine CD-ROM, DVD-ROM oder andere optische Medien bereitgestellt werden. In solchen Beispielen kann jedes davon durch eine oder mehrere Datenmedien-Schnittstellen mit dem Bus 18 verbunden sein. Wie unten weiter dargestellt und beschrieben kann der Speicher 28 zumindest ein Programmprodukt aufweisen, das einen Satz von Programmmodulen (z. B. zumindest eines) aufweist, die zur Durchführung der Funktionen von Ausführungsformen der Erfindung konfiguriert sind.
-
Das Programm/Utility 40, welches einen Satz von (zumindest einem) Programmmodul(en) 42 aufweist, sowie ein Betriebssystem, ein oder mehrere Anwendungsprogramm(e), weitere Programmmodule und Programmdaten können zum Beispiel, und ohne Einschränkung, in dem Speicher 28 gespeichert sein. Jedes von dem Betriebssystem, einem oder mehreren Anwendungsprogramm(en), weiteren Programmmodulen und Programmdaten oder eine beliebige Kombination davon kann eine Implementierung einer Netzwerkumgebung aufweisen. Die Programmmodule 42 führen allgemein die Funktionen und/oder Verfahrensweisen von wie hierin beschriebenen Ausführungsformen der Erfindung aus.
-
Das Computersystem/der Server 12 kann auch mit einem oder mehreren externen Geräten 14 kommunizieren, wie beispielsweise einer Tastatur, einem Zeigegerät, einer Anzeige 24 usw.; einem oder mehreren Geräten, die es einem Nutzer ermöglichen, mit dem Computersystem/dem Server 12 umzugehen; und/oder beliebigen Geräten (z. B. Netzwerkkarte, Modem usw.), die es dem Computersystem/Server 12 ermöglichen, mit einem oder mehreren weiteren Rechnergeräten zu kommunizieren. Eine solche Kommunikation kann über Ein-/Ausgabe-(I/O-)Schnittstellen 22 stattfinden. Weiterhin kann das Computersystem/der Server 12 über den Netzwerkadapter 20 mit einem oder mehreren Netzwerken kommunizieren, wie beispielsweise einem Local Area Network (LAN), einem allgemeinen Wide Area Network (WAN) und/oder einem öffentlichem Netzwerk (z. B. dem Internet). Wie abgebildet kommuniziert der Netzwerkadapter 20 über den Bus 18 mit den anderen Komponenten des Computersystems/Servers 12. Es versteht sich, dass andere Hardware- und/oder Softwarekomponenten, obwohl nicht gezeigt, in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten. Zu Beispielen zählen ohne Einschränkung Microcode, Gerätetreiber, redundante Verarbeitungseinheiten, externe Laufwerks-Arrays, RAID-Systeme, Bandlaufwerke, Datenarchiv-Speichersysteme usw.
-
Die vorliegende Erfindung kann ein System, eine Methode und/oder ein Computerprogrammprodukt sein. Das Computerprogrammprodukt kann ein oder mehrere computerlesbare Speichermedien aufweisen, auf denen computerlesbare Programmanweisungen gespeichert sind, die dazu ausgebildet sind einen Prozessor zur Ausbildung von Aspekten der vorliegenden Erfindung zu veranlassen.
-
Das computerlesbare Speichermedium kann ein materielles Gerät sein, welches Befehle zur Ausführung durch ein zur Ausführung von Befehlen ausgebildetes Gerät aufbewahren und speichern kann. Das computerlesbare Speichermedium kann beispielweise, jedoch ohne Einschränkung hierauf, eine elektronische Speichervorrichtung, eine magnetische Speichervorrichtung, eine optische Speichervorrichtung, eine elektromagnetische Speichervorrichtung, eine Halbleiterspeichervorrichtung oder eine beliebige geeignete Kombination hiervon sein. Eine nicht erschöpfende Auflistung konkreter Beispiele für computerlesbare Speichermedien umfasst: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), ein tragbarer Compact-Disc-Festwertspeicher (CD-ROM), eine Digital Versatile Disc (DVD), ein Speicherstick, eine Floppy-Disc, ein mechanisch codiertes Gerät wie beispielsweise Lockarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, sowie eine beliebige geeignete Kombination davon. Wie hierin verwendet, ist der Begriff computerlesbares Speichermedium nicht im Sinne von vergänglichen Signalen an sich aus zulegen, wie beispielsweise Radiowellen oder andere, sich frei ausbreitende elektromagnetische Wellen, sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreitende elektromagnetische Wellen (z. B. ein faseroptisches Kabel durchlaufende Lichtpulse) oder über einen Draht übertragene elektrische Signale.
-
Hierin beschriebene computerlesbare Programmanweisungen können von einem computerlesbaren Speichermedium an entsprechende Rechner-/Datenverarbeitungsgeräte oder über ein Netzwerk wie beispielsweise das Internet, ein Local Area Network, ein Wide Area Network und/oder ein drahtloses Netzwerk, auf einen externen Computer oder ein externes Speichergerät heruntergeladen werden. Das Netzwerk kann Übertragungskabel aus Kupfer, Fasern zur optischen Übertragung, drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. In jedem Computer-/Datenverarbeitungsgerät empfängt eine Netzwerkadapterkarte oder eine Netzwerkschnittstelle computerlesbare Programmanweisungen aus dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium innerhalb des jeweiligen Rechner-/Datenverarbeitungsgeräts weiter.
-
Computerlesbare Programmanweisungen für die Durchführung von Verfahrensschritten der vorliegenden Erfindungen können Assembler-Anweisungen, Anweisungen einer Befehlssatzarchitektur (ISA), Maschinenbefehle, maschinenabhängige Befehle, Microcode, FWA, Daten zum Setzen von Zuständen oder entweder Quellcode oder Objektcode sein, der in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben ist, einschließlich einer objektorientierten Programmiersprache wie beispielsweise Small Talk, C++ oder dergleichen sowie konventioneller prozeduraler Programmiersprachen wie beispielsweise der Programmiersprache „C” oder ähnlicher Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf den Computer des Nutzers, teilweise auf dem Computer des Nutzers, als alleinstehendes Softwarepaket, teilweise auf dem Computer des Nutzers und teilweise auf einem entfernten Computer oder vollständig auf dem entfernten Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der entfernte Computer mit dem Computer des Nutzers durch ein Netzwerk beliebigen Typs verbunden sein, einschließlich eines Local Area Network (LAN) oder eines Wide Area Network (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (beispielswiese über das Internet unter Verwendung eines Internetdienstanbieters). In manchen Ausführungsformen können elektronische Schaltkreise, einschließlich beispielsweise programmierbarer logischer Schaltkreise, Field Programmable Gate Arrays (FPGA) oder programmierbarer logischer Anordnungen (PLA), die computerlesbaren Programmanweisungen unter Verwendung von Zustandsinformationen der computerlesbaren Programmanweisungen zur Personalisierung der elektronischen Schaltkreise ausführen, um Aspekte der vorliegenden Erfindung auszuführen.
-
Aspekte der vorliegenden Erfindung werfen hierin unter Bezugnahme auf Illustrationen durch Flussdiagramme und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der vorliegenden Erfindung beschrieben. Es versteht sich, dass jeder Block der Flussdiagramme und/oder Blockdiagramme sowie Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockdiagrammen durch computerlesbare Programmanweisungen implementiert werden können. Diese computerlesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine zur Verfügung gestellt werden, sodass die Anweisungen, welche durch den Prozessor des Computers und/oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Implementierung der Funktionen/Handlungen erzeugen, die in dem Block oder den Blöcken der Flussdiagramme und/oder Blockdiagramme angegeben sind. Diese computerlesbaren Programmanweisungen können auch in einem computerlesbaren Speichermedium gespeichert sind, welches einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Geräte dazu veranlassen kann, auf eine bestimmte Weise zu funktionieren, sodass das computerlesbare Speichermedium mit den darauf gespeicherten Anweisungen ein Fertigprodukt aufweist, welches Anweisungen enthält, die Aspekte der in dem Block oder den Blöcken der Flow-Charts und/oder Blockdiagramme angegebenen Funktion/Handlung implementieren.
-
Die computerlesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbaren Datenverarbeitungsvorrichtung oder ein anderes Gerät geladen werden, um eine Serie von Verfahrensschritten zu erzeugen, die auf dem Computer der anderen programmierbaren Vorrichtung oder dem anderen Gerät auszuführen sind, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer, der anderen programmierbaren Vorrichtung oder dem anderen Gerät ausgeführten Anweisungen, die in dem Block oder den Blöcken der Flussdiagramme und/oder Blockdiagramme angegebenen Funktionen/Handlungen implementieren.
-
Die in die in den Figuren gezeigten Flussdiagramme und Blockdiagramme illustrieren die Architektur, die Funktionsweise und den Betrieb möglicher Implementierungen, Verfahren und Computerprogrammprodukten gemäß vielfältiger Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Blockdiagrammen oder Flussdiagrammen ein Modul, einen Abschnitt oder einen Teil von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) aufweist. In manchen alternativen Ausführungsformen können die in dem Block angegebenen Funktionen außerhalb der in den Figuren gezeigten Reihenfolge erfolgen. Beispielsweise können zwei aufeinanderfolgende Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können manchmal, je nach Funktionalität, in umgekehrter Reihenfolge ausgeführt werden. Es versteht sich ebenfalls, dass jeder Block der Blockdiagramme und/oder Flussdiagramme sowie Kombinationen von Blöcken in den Blockdiagrammen und/oder Flussdiagrammen durch spezialisierte hardwarebasierte Systeme implementiert werden können, die die angegebenen Funktionen oder Handlungen oder Kombinationen von Anweisungen für spezialisierte Hardware und Computer ausführen.
-
Die Beschreibungen der vielfältigen Ausführungsformen der vorliegenden Erfindung wurden zu Illustrationszwecken dargelegt, es handelt sich dabei jedoch nicht um erschöpfende oder auf die offenbarten Ausführungsformen beschränkte Beschreibungen. Viele Modifikationen und Varianten sind für einen durchschnittlichen Fachmann offensichtlich, ohne den Umfang und den Geist der beschriebenen Ausführungsformen zu verlassen. Die hierin verwendete Terminologie wurde gewählt, um die Prinzipien der Ausführungsformen der praktischen Anwendung oder der technischen Verbesserung gegenüber auf dem Markt befindlichen Technologien am besten zu erläutern oder um anderen durchschnittlichen Fachleuten ein Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.