DE102016125131A1 - Effiziente Erzeugung stochastischer Spike-Muster in kernbasierten neuromorphen Systemen - Google Patents

Effiziente Erzeugung stochastischer Spike-Muster in kernbasierten neuromorphen Systemen Download PDF

Info

Publication number
DE102016125131A1
DE102016125131A1 DE102016125131.3A DE102016125131A DE102016125131A1 DE 102016125131 A1 DE102016125131 A1 DE 102016125131A1 DE 102016125131 A DE102016125131 A DE 102016125131A DE 102016125131 A1 DE102016125131 A1 DE 102016125131A1
Authority
DE
Germany
Prior art keywords
spikes
encoding
input
code
neuromorphic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102016125131.3A
Other languages
English (en)
Inventor
Amon Amir
Antonio J. Jimeno Yepes
Jianbin Tang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102016125131A1 publication Critical patent/DE102016125131A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/02Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Abstract

Gewichteter Populationscode wird in neuromorphen Systemen bereitgestellt. Gemäß einer Ausführungsform wird eine Vielzahl von Eingabewerten empfangen. Für jeden der Vielzahl von Werten wird eine Vielzahl von Spikes erzeugt. Jedem der Vielzahl von Spikes ist ein Gewicht zugeordnet. Eine Verbrauchszeit wird für jeden der Vielzahl von Spikes bestimmt. Jeder der Vielzahl von Spikes wird zum Verbrauch zu seiner Verbrauchszeit gesendet.

Description

  • 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.
  • Figure DE102016125131A1_0002
    Gleichung 1
  • 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.
  • Figure DE102016125131A1_0003
    Gleichung 2
  • 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 xmax, 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 34 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 34 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.
  • Figure DE102016125131A1_0004
    Gleichung 1
  • 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.
  • Figure DE102016125131A1_0005
    Gleichung 2
  • 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.

Claims (22)

  1. Ein Verfahren, aufweisend: Empfangen einer Vielzahl von Eingabewerten; für jeden der Vielzahl von Werten, Erzeugen einer Vielzahl von Spikes, wobei jeder der Vielzahl von Spikes ein zugeordnetes Gewicht aufweist; Bestimmen einer Verbrauchszeit für jeden der Vielzahl von Spikes; Senden jedes der Vielzahl von Spikes zum Verbrauch zu seiner Verbrauchszeit.
  2. Das Verfahren aus Anspruch 1, wobei jedes der zugeordneten Gewichte aus einem vorgegebenen Satz von gewichten ausgewählt wird.
  3. Das Verfahren aus Anspruch 1, wobei die Verbrauchszeit für jeden der Vielzahl von Spikes aus einem vorgegebenen Satz von Verbrauchszeiten ausgewählt wird.
  4. Das Verfahren aus Anspruch 1, wobei das Senden jedes der Vielzahl von Spikes ein Senden einer seiner Verbrauchszeit entsprechenden Verzögerungsanweisung aufweist.
  5. Das Verfahren aus Anspruch 2, weiterhin aufweisend: Bestimmen des Satzes von Gewichten aufgrund eines Bereichs der Vielzahl von Eingabewerten.
  6. Das Verfahren aus Anspruch 5, wobei der Satz von Gewichten bestimmt wird, um eine Kardinalität der Vielzahl von Spikes zu minimieren.
  7. Das Verfahren aus Anspruch 5, wobei der Satz von Gewichten bestimmt wird, um eine Kardinalität der Vielzahl von Spikes für diejenigen aus der Vielzahl von Werten, welche innerhalb eines vorgegebenen Bereichs liegen, zu minimieren.
  8. Das Verfahren aus Anspruch 1, wobei die Verbrauchszeit der Vielzahl von Spikes innerhalb einer vorgegebenen Setup-Phase liegt.
  9. Ein Verfahren, aufweisend: Empfangen einer ersten Vielzahl von Spikes an einem ersten neuromorphen System, wobei die erste Vielzahl von Spikes einen ersten Wert gemäß einer ersten Codierung codiert; Erzeugen einer zweiten Vielzahl von Spikes aus der ersten Vielzahl von Spikes, wobei die zweite Vielzahl von Spikes den ersten Wert gemäß einer zweiten Codierung codiert; Übergeben der zweiten Vielzahl von Spikes an ein zweites neuromorphes System.
  10. Das Verfahren aus Anspruch 9, weiterhin aufweisend: Empfangen einer ersten Vielzahl von Verzögerungen an dem ersten neuromorphen System, wobei jede der Vielzahl von Verzögerungen einem der ersten Vielzahl von Spikes zugeordnet ist; Verzögern jedes der ersten Vielzahl von Spikes um seine zugeordnete Verzögerung.
  11. Das Verfahren aus Anspruch 9, wobei das Empfangen der ersten Vielzahl von Spikes aufweist: Empfangen eines ersten Teilsatzes der ersten Vielzahl von Spikes während eines ersten Zeitfensters; Empfangen eines zweiten Teilsatzes der ersten Vielzahl von Spikes während eines zweiten Zeitfensters.
  12. Das Verfahren aus Anspruch 9, wobei die erste Codierung jedem der ersten Vielzahl von Spikes ein Gewicht zuordnet.
  13. Das Verfahren aus Anspruch 12, wobei das Erzeugen der zweiten Vielzahl von Spikes aufweist: Anwenden der Gewichte der ersten Codierung auf die erste Vielzahl von Spikes.
  14. Das Verfahren aus Anspruch 9, wobei jeder der ersten Vielzahl von Spikes in einem aus einer vorgegebenen Anzahl von Zeitfenstern empfangen wird.
  15. Das Verfahren aus Anspruch 9, wobei jeder der Vielzahl von Spikes einen diskreten Wert darstellt.
  16. Das Verfahren aus Anspruch 9, wobei jeder der Vielzahl von Spikes einen kontinuierlichen Wert darstellt.
  17. Das Verfahren aus Anspruch 12, wobei das Erzeugen der zweiten Vielzahl von Spikes aufweist: Bestimmen einer Wahrscheinlichkeit aus den Gewichten der ersten Codierung und der ersten Vielzahl von Spikes.
  18. Das Verfahren aus Anspruch 9, weiterhin aufweisend: Übergeben einer Ausgabe an das zweite neuromorphe System, und gleichzeitig damit, Empfangen einer dritten Vielzahl von Spikes an dem ersten neuromorphen System, wobei die dritte Vielzahl von Spikes einen zweiten Wert gemäß der ersten Codierung codiert.
  19. Das Verfahren aus Anspruch 9, weiterhin aufweisend: Empfangen einer dritten Vielzahl von Spikes an dem ersten neuromorphen System, wobei die dritte Vielzahl von Spikes eine Differenz zwischen einem zweiten Wert und dem ersten Wert gemäß der ersten Codierung codiert; Erzeugen einer vierten Vielzahl von Spikes aus der dritten Vielzahl von Spikes, wobei die vierte Vielzahl von Spikes den zweiten Wert gemäß der zweiten Codierung codiert; Übergeben der vierten Vielzahl von Spikes an das zweite neuromorphe System.
  20. Das Verfahren aus Anspruch 9, wobei das zweite neuromorphe System einen Klassifikator aufweist.
  21. Ein Verfahren, aufweisend: Empfangen einer ersten Vielzahl von Spikes an einem neuromorphen System, wobei die erste Vielzahl von Spikes einen ersten Wert gemäß einer ersten Codierung codiert; Erzeugen einer Vielzahl von Spike-Sätzen aus der ersten Vielzahl von Spikes, wobei jeder der Vielzahl von Spike-Sätzen den ersten Wert gemäß einer zweiten Codierung codiert; Übergeben jedes der Vielzahl von Spike-Sätzen an einen aus einer Vielzahl von Klassifikatoren in dem neuromorphen System.
  22. Ein System, aufweisend: Ein neuromorphes Netzwerk, aufweisend eine Vielzahl von Eingabe-Axonen und eine Vielzahl von mit diesen verbundenen stochastischen Neuronen: Einen operativ mit der Vielzahl von Eingabe-Axonen gekoppelten Codierer, wobei der Bildcodierer zum Senden einer ersten Vielzahl von Spikes an die Eingabe-Axonen konfiguriert ist, wobei die erste Vielzahl von Spikes einen ersten Wert gemäß einer ersten Codierung codiert, wobei das neuromorphe Netzwerk zum Erzeugen einer zweiten Vielzahl von Spikes aus der ersten Vielzahl von Spikes konfiguriert ist, wobei die zweite Vielzahl von Spikes den ersten Wert gemäß einer zweiten Codierung codiert.
DE102016125131.3A 2016-01-13 2016-12-21 Effiziente Erzeugung stochastischer Spike-Muster in kernbasierten neuromorphen Systemen Pending DE102016125131A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/994,940 2016-01-13
US14/994,940 US10423879B2 (en) 2016-01-13 2016-01-13 Efficient generation of stochastic spike patterns in core-based neuromorphic systems

Publications (1)

Publication Number Publication Date
DE102016125131A1 true DE102016125131A1 (de) 2017-07-13

Family

ID=58463888

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016125131.3A Pending DE102016125131A1 (de) 2016-01-13 2016-12-21 Effiziente Erzeugung stochastischer Spike-Muster in kernbasierten neuromorphen Systemen

Country Status (5)

Country Link
US (2) US10423879B2 (de)
JP (1) JP7037886B2 (de)
CN (1) CN107016437B (de)
DE (1) DE102016125131A1 (de)
GB (1) GB2548194B (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11222260B2 (en) * 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
WO2019147329A1 (en) * 2018-01-23 2019-08-01 Hrl Laboratories, Llc A method and system for distributed coding and learning in neuromorphic networks for pattern recognition
CN108664949A (zh) * 2018-05-21 2018-10-16 江苏信息职业技术学院 利用径向基神经网络对癫痫脑电图信号进行分类的方法
CN112740234B (zh) * 2018-06-13 2024-01-02 赫尔实验室有限公司 用于授权的用户检测的神经形态系统
US20200019839A1 (en) * 2018-07-11 2020-01-16 The Board Of Trustees Of The Leland Stanford Junior University Methods and apparatus for spiking neural network computing based on threshold accumulation
US11270191B2 (en) 2018-08-29 2022-03-08 International Business Machines Corporation On-chip Poisson spike generation
KR20200111584A (ko) 2019-03-19 2020-09-29 한국전자통신연구원 시공간 입력 신호들이 나타내는 사건을 부호화하기 위한 전자 장치 및 그것의 동작 방법
KR102453336B1 (ko) * 2019-11-12 2022-10-12 한국전자기술연구원 스파이킹 뉴럴 네트워크를 위한 하이퍼 파라미터 최적화 방법과 장치 및 이를 이용한 연산 장치
KR102637568B1 (ko) * 2020-11-23 2024-02-19 충북대학교 산학협력단 스파이킹 뉴럴 네트워크를 최적화하는 방법 및 장치
WO2023091061A1 (en) * 2021-11-17 2023-05-25 Telefonaktiebolaget Lm Ericsson (Publ) Delay encoded vector symbolic radio multiple access
CN117093364B (zh) * 2023-08-08 2024-04-02 国网湖南省电力有限公司 实时量测数据的并行处理方法及系统、电子设备、介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5420787A (en) * 1992-10-26 1995-05-30 The United States Of America As Represented By The Secretary Of The Department Of Human Services System and method for separating a multi-unit signal into single-unit signals
EP2263165A4 (de) 2008-03-14 2011-08-24 Hewlett Packard Development Co Neuromorphische schaltung
CN101860357B (zh) * 2010-06-09 2012-04-11 中国科学院半导体研究所 一种利用时间编码控制权重和信息整合的方法
US9152915B1 (en) * 2010-08-26 2015-10-06 Brain Corporation Apparatus and methods for encoding vector into pulse-code output
US8812414B2 (en) 2011-05-31 2014-08-19 International Business Machines Corporation Low-power event-driven neural computing architecture in neural networks
US9147155B2 (en) * 2011-08-16 2015-09-29 Qualcomm Incorporated Method and apparatus for neural temporal coding, learning and recognition
US8909576B2 (en) * 2011-09-16 2014-12-09 International Business Machines Corporation Neuromorphic event-driven neural computing architecture in a scalable neural network
US9092735B2 (en) * 2011-09-21 2015-07-28 Qualcomm Incorporated Method and apparatus for structural delay plasticity in spiking neural networks
US9146546B2 (en) 2012-06-04 2015-09-29 Brain Corporation Systems and apparatus for implementing task-specific learning using spiking neurons
US9367797B2 (en) * 2012-02-08 2016-06-14 Jason Frank Hunzinger Methods and apparatus for spiking neural computation
KR101963440B1 (ko) * 2012-06-08 2019-03-29 삼성전자주식회사 복수의 뉴런 회로들을 이용하여 음원의 방향을 추정하는 뉴로모픽 신호 처리 장치 및 그 장치를 이용한 방법
US9159020B2 (en) 2012-09-14 2015-10-13 International Business Machines Corporation Multiplexing physical neurons to optimize power and area
US9275326B2 (en) 2012-11-30 2016-03-01 Brain Corporation Rate stabilization through plasticity in spiking neuron network
US9373073B2 (en) * 2012-12-21 2016-06-21 International Business Machines Corporation Time-division multiplexed neurosynaptic module with implicit memory addressing for implementing a universal substrate of adaptation
US9275329B2 (en) * 2013-08-12 2016-03-01 Qualcomm Incorporated Behavioral homeostasis in artificial nervous systems using dynamical spiking neuron models
WO2015030606A2 (en) * 2013-08-26 2015-03-05 Auckland University Of Technology Improved method and system for predicting outcomes based on spatio / spectro-temporal data
US20150213356A1 (en) 2014-01-24 2015-07-30 Qualcomm Incorporated Method for converting values into spikes
US9342782B2 (en) 2014-02-21 2016-05-17 Qualcomm Incorporated Stochastic delay plasticity
US9195903B2 (en) * 2014-04-29 2015-11-24 International Business Machines Corporation Extracting salient features from video using a neurosynaptic system
US10650301B2 (en) * 2014-05-08 2020-05-12 International Business Machines Corporation Utilizing a distributed and parallel set of neurosynaptic core circuits for neuronal computation and non-neuronal computation
US9373058B2 (en) * 2014-05-29 2016-06-21 International Business Machines Corporation Scene understanding using a neurosynaptic system
US9704094B2 (en) 2015-02-19 2017-07-11 International Business Machines Corporation Mapping of algorithms to neurosynaptic hardware
US20160358075A1 (en) * 2015-06-08 2016-12-08 The Regents Of The University Of Michigan System for implementing a sparse coding algorithm

Also Published As

Publication number Publication date
GB2548194B (en) 2020-02-26
CN107016437B (zh) 2020-08-04
GB2548194A (en) 2017-09-13
CN107016437A (zh) 2017-08-04
JP7037886B2 (ja) 2022-03-17
GB201700228D0 (en) 2017-02-22
JP2017126332A (ja) 2017-07-20
US10423879B2 (en) 2019-09-24
US20170200079A1 (en) 2017-07-13
US20190370654A1 (en) 2019-12-05
US11574183B2 (en) 2023-02-07

Similar Documents

Publication Publication Date Title
DE102016125131A1 (de) Effiziente Erzeugung stochastischer Spike-Muster in kernbasierten neuromorphen Systemen
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE112018006189T5 (de) Robuste gradienten-gewichtskomprimierungsschemata für deep-learning-anwendungen
DE60004507T2 (de) Schnelle gruppierung durch spärlich bestückte datensätze
DE112019002981T5 (de) Parallelberechnungsarchitektur mit rekonfigurierbarer kernebenen- und vektorebenen-parallelität
DE112019003529T5 (de) Datendarstellung für dynamische Genauigkeit in Kernen neuronaler Netze
DE102011056563A1 (de) Datenkompressionsvorrichtungen, Betriebsverfahren dafür und Datenverarbeitungsgeräte einschließlich derselben
DE3501272A1 (de) Adaptives, selbstausbesserndes prozessorfeld
DE102021107050A1 (de) Gradientenkomprimierung für verteiltes training
DE102016220801B4 (de) Erzeugen einer dynamischen Huffman-Tabelle
DE112020004067T5 (de) Hybride daten-modell-parallelität für effizientes deep learning
DE112018004382T5 (de) Speicherbezogene Schnittstelle für Nachrichtenübergabe-Datenverarbeitungssysteme
EP2109993A1 (de) Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes
DE112020002186T5 (de) Dnn-training mit asymmetrischen rpu-einheiten
DE112020004031T5 (de) Systembezogene selektive quantisierung für in der leistungsfähigkeit optimiertes verteiltes deep learning
WO2021130340A1 (de) System und verfahren zur qualitätszusicherung von datenbasierten modellen
EP3624456A1 (de) Verfahren zur kompression und dekompression von bilddaten
DE112020004651T5 (de) Multi-tenant-etl-ressourcenaufteilung
DE102019107670A1 (de) Entspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen
DE112017002931T5 (de) Synaptischer Supercomputer mit skalierbarem Fluss für neuronale Netzwerke mit äußerstem Durchsatz
EP1038259A1 (de) Vorrichtung zur bilderfassung
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen
DE112022001059T5 (de) Verringerte bandbreiten-inanspruchnahme über generative adversarial networks
DE102022200225B3 (de) Verfahren zum Betrieb einer Bildaufnahmeeinrichtung, Bildaufnahmeeinrichtung, Computerprogramm und elektronisch lesbarer Datenträger
DE112021000317B4 (de) Teilweise computerprozessorkern-abschaltung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence