DE112021002939T5 - Effiziente kachel-zuordnung für zeilenweise zuordnung in neuronalen faltungsnetzen zur analogen inferenz in künstliche-intelligenz-netzen - Google Patents

Effiziente kachel-zuordnung für zeilenweise zuordnung in neuronalen faltungsnetzen zur analogen inferenz in künstliche-intelligenz-netzen Download PDF

Info

Publication number
DE112021002939T5
DE112021002939T5 DE112021002939.8T DE112021002939T DE112021002939T5 DE 112021002939 T5 DE112021002939 T5 DE 112021002939T5 DE 112021002939 T DE112021002939 T DE 112021002939T DE 112021002939 T5 DE112021002939 T5 DE 112021002939T5
Authority
DE
Germany
Prior art keywords
crosspoint
cnn
integrators
array
input data
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
DE112021002939.8T
Other languages
English (en)
Inventor
Hsinyu Tsai
Geoffrey Burr
Pritish Narayanan
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 DE112021002939T5 publication Critical patent/DE112021002939T5/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/044Recurrent networks, e.g. Hopfield 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/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/0464Convolutional networks [CNN, ConvNet]
    • 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/048Activation functions
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Feedback Control In General (AREA)
  • Complex Calculations (AREA)

Abstract

Das Umsetzen eines faltenden neuronalen Netzes (CNN) umfasst ein Konfigurieren eines Kreuzpunkt-Array zum Umsetzen einer Faltungsschicht in dem CNN. Faltungskerne der Schicht werden in Kreuzpunkteinheiten des Array gespeichert. Berechnungen für das CNN werden ausgeführt, indem ein Satz von Operationen eine vorbestimmte Anzahl von Malen wiederholt wird. Die Operationen umfassen ein Übertragen von Spannungsimpulsen, die einem Teilbereich eines Vektors von Eingabedaten entsprechen, an das Kreuzpunkt-Array. Die Spannungsimpulse erzeugen elektrische Ströme, die einem Ausführen von Multiplikationsoperationen an der Kreuzpunkteinheit auf Grundlage von Gewichtswerten entsprechen, die an den Kreuzpunkteinheiten gespeichert werden. Ein Satz von Integratoren akkumuliert eine elektrische Ladung auf Grundlage der ausgegebenen elektrischen Ströme von den jeweiligen Kreuzpunkteinheiten. Das Kreuzpunkt-Array gibt die akkumulierte Ladung nach Iteration für die vorbestimmte Anzahl von Malen aus. Die akkumulierte Ladung entspricht einem Multiplikations-Additions-Ergebnis des Vektors von Eingabedaten und des einen oder der mehreren Faltungskerne.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft allgemein Computertechnologie und insbesondere künstliche neuronale Netze (KNNs). Genauer gesagt betreffen Ausführungsformen der vorliegenden Erfindung das Zuordnen eines faltenden neuronalen Netzes („Convolutional Neural Network“, CNN) zu Kreuzpunkteinheiten in Kreuzpunkt-Arrays, etwa in Analogspeicher-gestützter Hardware zum Bereitstellen einer Ausgabe eines trainierten CNN während einer Vorwärtsinferenzphase.
  • Es ist bekannt, dass technische Aufgabenstellungen wie Zeichenerkennung und Bilderkennung durch einen Computer gut durch Techniken des maschinellen Lernens gemeistert werden. „Maschinelles Lernen“ wird so verwendet, dass es allgemein eine primäre Aufgabe elektronischer Systeme beschreibt, die aus Daten lernen. Beim maschinellen Lernen und in der Kognitionswissenschaft sind neuronale Netze eine Familie statistischer Lernmodelle, die von den biologischen neuronalen Netzwerken von Tieren und insbesondere dem Gehirn beeinflusst sind. Neuronale Netze können verwendet werden, um Systeme und Funktionen zu schätzen bzw. zu nähern, die von einer großen Anzahl von Eingaben abhängen und im Allgemeinen unbekannt sind. Neuronale Netze verwenden eine Klasse von Algorithmen, die auf einem Konzept miteinander verbundener „Neuronen“ beruhen. In einem typischen neuronalen Netz haben Neuronen eine bestimmte Aktivierungsfunktion, die die Eingaben verarbeitet. Durch die Bestimmung geeigneter Verbindungsgewichte (ein Prozess, der auch als „Training“ bezeichnet wird) erreicht ein neuronales Netz eine wirksame Erkennung der gewünschten Strukturen, beispielsweise von Bildern und Zeichen. Oft werden diese Neuronen in „Schichten“ gruppiert, um Verbindungen zwischen Gruppen deutlicher zu machen und das Berechnungsverfahren zu organisieren. Mit diesen korrekten Verbindungsgewichten können auch andere Strukturen von Interesse, die das Netz während des Trainings noch nie erfasst hatte, korrekt erkannt werden, ein Vorgang, der als „Vorwärtsinferenz“ bekannt ist.
  • KURZDARSTELLUNG
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird ein von einem Computer umgesetztes Verfahren zum Umsetzen eines faltenden neuronalen Netzes (CNN) unter Verwendung eines Kreuzpunkt-Array beschrieben. Das Verfahren umfasst ein Konfigurieren des Kreuzpunkt-Array, das eine Faltungsschicht im CNN umsetzt. Das Konfigurieren wird ausgeführt, indem ein oder mehrere Faltungskerne der Faltungsschicht in einer oder mehreren Kreuzpunkteinheiten des Kreuzpunkt-Array gespeichert werden. Das Verfahren umfasst ferner ein Ausführen von Berechnungen für das CNN über das Kreuzpunkt-Array durch Iterieren eines Satzes von Operationen für eine vorbestimmte Anzahl von Malen. Der Satz von Operationen umfasst ein Übertragen von Spannungsimpulsen, die einem Teilbereich eines Vektors von Eingabedaten der Faltungsschicht entsprechen, an das Kreuzpunkt-Array. Der Satz von Operationen umfasst ferner ein Ausgeben elektrischer Ströme, die einem Ausführen von Multiplikationsoperationen an der einen oder den mehreren Kreuzpunkteinheiten in dem Kreuzpunkt-Array entsprechen, wobei die elektrischen Ströme auf Gewichtswerten, die von den Kreuzpunkteinheiten gespeichert sind, und den Spannungsimpulsen von den Eingabedaten beruhen. Der Satz von Operationen umfasst auch ein Akkumulieren einer elektrischen Ladung durch einen Satz von Integratoren auf Grundlage der ausgegebenen elektrischen Ströme von den Kreuzpunkteinheiten. Das Verfahren umfasst ferner ein Ausgeben der akkumulierten Ladung durch den Satz von Integratoren nach dem Iterieren für die vorbestimmte Anzahl von Malen, wobei die akkumulierte Ladung einem Multiplikations-Additions-Ergebnis des Vektors von Eingabedaten und des einen oder der mehreren Faltungskerne entspricht.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung umfasst das Ausgeben der akkumulierten Ladung in dem Satz von Integratoren ein Pooling (Sammeln) der akkumulierten Ladung. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung ist der Teilbereich jedes der Vektoren von Eingabedaten dem Satz von Integratoren zugeordnet.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung umfasst das Kreuzpunkt-Array mehrere Kreuzpunkt-Arrays, wobei ein erster Teilbereich des Vektors von Eingabedaten zu einem ersten Kreuzpunkt-Array übertragen wird und ein zweiter Teilbereich des Vektors von Eingabedaten zu einem zweiten Kreuzpunkt-Array übertragen wird. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung umfasst das Akkumulieren der elektrischen Ladung durch den Satz von Integratoren ein Akkumulieren, durch den Satz von Integratoren des ersten Kreuzpunkt-Array, der elektrischen Ladungen, die von dem Satz von Integratoren des zweiten Kreuzpunkt-Array akkumuliert wurden.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung sind die Kreuzpunkteinheiten so angeordnet, dass sie eine oder mehrere Spalten eines Faltungskerns einer gegebenen Schicht des CNN umsetzen, wobei der Vektor von Eingabedaten Neuronenerregungen an der gegebenen Schicht des CNN entspricht, die zeilenweise aus den Eingabedaten eingegeben werden. Die von einem Integrator des Satzes von Integratoren akkumulierte elektrische Ladung stellt eine Ausgangserregung gemäß der gegebenen Schicht des CNN dar, wobei die Ausgangserregung erst umgewandelt und übertragen wird, nachdem alle Zeilen des Faltungskerns integriert sind.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung sind die Kreuzpunkteinheiten so angeordnet, dass sie eine oder mehrere Zeilen eines Faltungskerns einer gegebenen Schicht des CNN umsetzen, wobei die Eingabedaten Neuronenerregungen darstellen, die spaltenweise in die Schicht des CNN eingegeben werden. Die von einem Integrator des Satzes von Integratoren akkumulierte elektrische Ladung entspricht einer Ausgangserregung gemäß der gegebenen Schicht des CNN, wobei die Ausgangserregung erst umgewandelt und übertragen wird, nachdem alle Spalten des Faltungskerns integriert wurden.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird eine elektronische Schaltung zum Ausführen von Berechnungen eines trainierten faltenden neuronalen Netzes (CNN) beschrieben. Die elektronische Schaltung enthält ein Kreuzpunkt-Array und eine Ausgangsschaltung, die wiederum einen oder mehrere Integratoren enthält. Das Verfahren umfasst ferner ein Bereitstellen des Kreuzpunkt-Array und ein Bereitstellen der Ausgangsschaltung. Das Verfahren umfasst ferner ein Konfigurieren des Kreuzpunkt-Array gemäß einer Faltungsschicht in dem CNN durch Speichern eines oder mehrerer Faltungskerne der Faltungsschicht in einer oder mehreren Kreuzpunkteinheiten des Kreuzpunkt-Array. Das Verfahren umfasst ferner ein Iterieren eines Satzes von Operationen für eine vorbestimmte Anzahl von Malen. Das Training des CNN wird unter Verwendung des oben beschriebenen Verfahrens ausgeführt.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird eine elektronische Schaltung beschrieben, die ein Array von resistiven Speicherelementen enthält. Das Array gibt einen Vektor von Stromausgaben aus, der einem analogen Vektor-Matrix-Produkt (i) eines Vektors von Spannungseingaben in das Array, der einen Vektor von analogen Eingabewerten codiert, und (ii) einer Matrix von analogen Widerstandsgewichten in dem Array entspricht. Die elektronische Schaltung enthält ferner Akkumulationsdrähte und -schaltungen, die einen Strom von einer dedizierten Teilmenge der resistiven Speicherelemente aggregieren. Die elektronische Schaltung enthält ferner Integrationskondensatoren, wobei jeder der Integrationskondensatoren elektrisch so schaltbar ist, dass er während eines einzelnen Integrationsschritts Strom von einem einer Mehrzahl von Akkumulationsdrähten aggregiert. Die elektronische Schaltung enthält ferner eine Datenausgabeschaltung, um zu ermöglichen, dass eine integrierte Ladung von einer Teilmenge der Integrationskondensatoren, die über mehrere Integrationsschritte akkumuliert wurde, geeignet umgewandelt und entweder als analoge Zeitspanne oder als digitale Darstellung unter Verwendung von Binärziffern übertragen wird, wobei die resistiven Speicherelemente so angeordnet sind, dass sie Vektoren synaptischer Gewichtskerne einer gegebenen Schicht eines faltenden neuronalen Netzes umsetzen.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung verwendet ein Verfahren die elektronische Schaltung, um eine Akkumulation über mehrere Integrationsschritte auszuführen, die Multiplikations-Akkumulations-Operationen über mehrere Teilvektoren der Gewichtskerne hinweg umsetzt. Die Akkumulation umfasst ein Ausführen von Berechnungen durch die resistiven Speicherelemente des Kreuzpunkt-Array durch Iterieren eines Satzes von Operationen für eine vorbestimmte Anzahl von Malen. Der Satz von Operationen umfasst ein Aufteilen jedes der Vektoren von analogen Eingabewerten in die mehreren Teilvektoren. Der Satz von Operationen umfasst auch ein Akkumulieren von Ausgangs-Teilerregungen, die jedem der mehreren Teilvektoren entsprechen, in einem analogen Speicher. Der Satz von Operationen umfasst auch ein Zusammenführen der Ausgangs-Teilerregungen durch Leiten der Ausgangs-Teilerregungen zu einem Integrationskondensator, der eine integrierte Ladung akkumuliert. Ferner umfasst die Akkumulation ferner ein Leiten der integrierten Ladung auf die Integrationskondensatoren, die Ausgangserregungen entsprechen.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird die integrierte Ladung auf den Integrationskondensatoren lokal gepoolt, bevor die integrierte Ladung weitergeleitet wird. Bei einer oder mehreren Ausführungsformen der vorliegenden Erfindung sind die resistiven Speicherelemente nichtflüchtige Speichereinheiten. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung entspricht die Teilmenge der resistiven Speicherelemente einer oder mehreren Spalten des Array. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung entspricht die Teilmenge der resistiven Speicherelemente einer oder mehreren Zeilen des Array.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung sind die Kreuzpunkteinheiten so angeordnet, dass sie eine oder mehrere Zeilen der Faltungskerne einer gegebenen Schicht des faltenden neuronalen Netzes umsetzen, wobei die Eingabedaten Neuronenerregungen an die Schicht des faltenden neuronalen Netzes entsprechen, die spaltenweise eingegeben werden.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung sind die Kreuzpunkteinheiten so angeordnet, dass sie eine oder mehrere Spalten der Faltungskerne einer gegebenen Schicht des faltenden neuronalen Netzes umsetzen, wobei der Vektor von Eingabedaten Neuronenerregungen an der gegebenen Schicht des faltenden neuronalen Netzes entspricht, die zeilenweise aus den Eingabedaten eingegeben werden.
  • Es versteht sich, dass die technischen Lösungen nicht auf die Konstruktionsdetails und die Anordnung der Komponenten beschränkt sind, die in der folgenden Beschreibung dargelegt oder in den Zeichnungen gezeigt sind. Die technischen Lösungen können zusätzliche Ausführungsformen zu den beschriebenen aufweisen, die auf verschiedene Weise praktiziert und ausgeführt werden können. Es versteht sich auch, dass die hier verwendete Begrifflichkeit und Terminologie sowie die Zusammenfassung dem Zweck der Beschreibung dient und nicht als einschränkend angesehen werden sollte. Als solches werden Fachleute erkennen, dass die Konzeption, auf der diese Offenbarung beruht, leicht als Grundlage für die Konstruktion weiterer Strukturen, Verfahren und Systeme zum Ausführen der verschiedenen Zwecke der vorliegend beschriebenen technischen Lösungen verwendet werden kann.
  • Figurenliste
  • Die im gesamten vorliegenden Dokument beschriebenen Beispiele werden in Bezug auf die folgenden Zeichnungen und die Beschreibung besser verständlich. Die Komponenten in den Figuren sind nicht notwendigerweise maßstabsgetreu gezeigt. Darüber hinaus bezeichnen in den Figuren in den verschiedenen Ansichten gleiche Bezugszeichen entsprechende Teile.
    • 1 zeigt eine vereinfachte Darstellung von Eingangs- und Ausgangsverbindungen eines mathematischen Neurons;
    • 2 zeigt ein vereinfachtes Modell des in 1 gezeigten mathematischen Neurons;
    • 3 zeigt ein vereinfachtes Modell eines KNN, das das in 2 gezeigte mathematische Neuronenmodell verwendet;
    • 4 zeigt ein vereinfachtes Blockschema eines beispielhaften CNN, das eine beispielhafte Eingabekarte interpretiert;
    • 5 zeigt eine beispielhafte Faltungsschicht in einem CNN, das unter Verwendung von Trainingsdaten, die Eingabekarten und Faltungskerne umfassen, trainiert wird;
    • 6 zeigt ein System zum Ausführen einer Matrix-Matrix-Multiplikation unter Verwendung eines Kreuzpunkt-Array gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung;
    • 7 zeigt ein zweidimensionales (2D-) Kreuzschienensystem, das eine Vorwärts-Matrixmultiplikation, eine Rückwärts-Matrixmultiplikation und Gewichtsaktualisierungen gemäß der vorliegenden Beschreibung ausführt;
    • 8 zeigt eine erweiterte Ansicht des Kreuzpunkt-Array gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung;
    • 9 zeigt eine typische Ausgangsschaltung in einem Kreuzschienensystem;
    • 10 zeigt bestehende Operationen zum Ausführen von Vorwärtsinferenzoperationen unter Verwendung eines Kreuzpunkt-Array;
    • 11 zeigt ein Ausführen von Vorwärtsinferenzoperationen gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung unter Verwendung einer Teil-Akkumulation, wobei die Teil-Akkumulation auf einer Zeitpartitionierung beruht;
    • 12 zeigt ein Ausführen von Vorwärtsinferenzoperationen gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung unter Verwendung einer Teil-Akkumulation über mehrere Kreuzpunkt-Arrays hinweg; und
    • 13 zeigt ein Ausführen von Vorwärtsinferenzoperationen gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung unter Verwendung einer Teil-Akkumulation, wobei die Teil-Akkumulation auf einer Raumpartitionierung beruht.
  • DETAILLIERTE BESCHREIBUNG
  • Die hierin beschriebenen technischen Lösungen erleichtern die Umsetzung von Deep-Learning-Techniken, die faltende neuronale Netze effizienter als bestehende Techniken verwenden. Deep-Learning-Techniken werden häufig bei maschinengestützten Mustererkennungsproblemen wie der Bild- und Spracherkennung eingesetzt. Deep Learning nutzt von Natur aus die Verfügbarkeit großer Trainingsdatensätze (die durch die Verwendung von Big Data immer besser werden) und von Rechenleistung (die gemäß dem Moore'schen Gesetz voraussichtlich zunehmen wird).
  • Ausführungsformen der vorliegenden Erfindung ermöglichen eine effiziente Arbeitslastzuordnung von faltenden neuronalen Netzen (CNNs) in analoge Arrays, wenn ein analoges System für künstliche Intelligenz umgesetzt wird, etwa ein künstliches neuronales Netz (KNN), das Kreuzpunkt-Arrays verwendet. Bestehende Techniken beschreiben eine „zeilenweise“ Zuordnung von Gewichten für die CNN-Inferenzarbeitslast, damit Aktivierungen durch jede Schicht des CNN effizient genutzt und optimiert werden, um den Speicherbedarf zu begrenzen. Bei den bestehenden Techniken besteht jedoch eine technische Herausforderung darin, dass die Ausnutzung der Fläche des analogen Array bei einer solchen „zeilenweisen“ Zuordnungstechnik niedrig ist und die Skalierbarkeit solcher Techniken beeinträchtigt. Zum Beispiel kann die Zuordnung eines großen CNN (wie ResNet-50) eine große Anzahl von analogen Arrays erfordern, um das CNN umzusetzen, was die Umsetzung ineffizient, unhandlich und manchmal unmöglich machen kann.
  • Ausführungsformen der vorliegenden Erfindung lösen solche technischen Probleme während der Umsetzung eines KNN, insbesondere eines CNN, indem sie ein flexibles Routing-Schema zwischen Arrays bereitstellen, das eine kompakte Zuordnung von CNN-Schichten für die zeilenweise Zuordnungstechnik ermöglicht. Eine oder mehrere Ausführungsformen der vorliegenden Erfindung vergleichen die Anzahl der benötigten analogen Arrays (Kacheln) mit bestehenden zeilenweisen Zuordnungstechniken, die eine generische Zuordnungstechnik verwenden, bei der Aktivierungen nicht optimiert oder wiederverwendet werden. Dementsprechend ermöglichen Ausführungsformen der vorliegenden Erfindung eine Array-Nutzung, die für einen weiten Bereich von CNNs vergleichbar ist, während sie die Vorteile einer optimierten Aktivierung für eine zeilenweise Zuordnung erhalten.
  • Es versteht sich von vornherein, dass, obwohl eine oder mehrere Ausführungsformen im Zusammenhang mit biologischen neuronalen Netzen mit besonderem Schwerpunkt auf der Modellierung von Gehirnstrukturen und -funktionen beschrieben werden, die Umsetzung der hierin beschriebenen Lehren nicht auf die Modellierung einer bestimmten Umgebung beschränkt ist. Vielmehr können Ausführungsformen der vorliegenden Erfindung jede Art von Umgebung modellieren, darunter beispielsweise Wetterstrukturen, beliebige Daten, die aus dem Internet gesammelt werden, und dergleichen, solange die verschiedenen Eingaben der Umgebung in einen Vektor umgewandelt werden können.
  • KNNs sind oft als sogenannte „neuromorphe“ Systeme miteinander verbundener Prozessorelemente ausgeführt, die als simulierte „Neuronen“ fungieren und untereinander „Nachrichten“ in Form von elektronischen Signalen austauschen. Ähnlich der sogenannten „Plastizität“ von synaptischen Neurotransmitterverbindungen, die Nachrichten zwischen biologischen Neuronen transportieren, werden die Verbindungen in KNNs, die elektronische Nachrichten zwischen simulierten Neuronen transportieren, mit numerischen Gewichten versehen, die der Stärke oder Schwäche einer bestimmten Verbindung entsprechen. Die Gewichte können auf Grundlage von Erfahrung angepasst und abgestimmt werden, wodurch KNNs sich durch Eingaben anpassen können und lernfähig sind. Beispielsweise wird ein KNN für die Handschrifterkennung durch einen Satz von Eingangsneuronen definiert, die durch die Pixel eines Eingabebildes aktiviert werden können. Nachdem die Aktivierungen dieser Eingangsneuronen durch eine vom Netzkonstrukteur festgelegte Funktion gewichtet und transformiert wurden, werden sie an andere nachgelagerte Neuronen weitergeleitet, die oft auch als „versteckte“ Neuronen bezeichnet werden. Dieser Vorgang wird wiederholt, bis ein Ausgangsneuron aktiviert wird. Das aktivierte Ausgangsneuron bestimmt, welches Zeichen gelesen wurde.
  • Kreuzschienenarrays, auch als Kreuzpunkt-Arrays, Kreuzdrahtarrays oder RPU-Arrays (Arrays resistiver Verarbeitungseinheiten) bekannt, sind kostengünstige Schaltungsarchitekturen mit hoher Dichte, die zur Ausbildung einer Vielfalt von elektronischen Schaltungen und Einheiten verwendet werden, beispielsweise KNN-Architekturen, neuromorphen Mikrochips und von nichtflüchtigem Speicher extrem hoher Dichte. Eine grundlegende Kreuzpunkt-Array-Konfiguration enthält einen Satz leitfähiger Zeilendrähte und einen Satz leitfähiger Spaltendrähte, die so ausgebildet sind, dass sie den Satz leitfähiger Zeilendrähte schneiden. Die Schnittpunkte zwischen den beiden Drahtsätzen sind durch so genannte Kreuzpunkteinheiten getrennt, die aus Dünnschichtmaterial ausgebildet sein können.
  • Die Kreuzpunkteinheiten dienen im Endeffekt als die gewichteten Verbindungen des KNN zwischen Neuronen. Zweipolige Bauelemente auf Nanoebene, beispielsweise Memristoren mit „idealen“ Schalteigenschaften des Leitfähigkeitszustands, werden häufig als Kreuzpunkteinheiten verwendet, um eine synaptische Plastizität mit hoher Energieeffizienz zu emulieren. Der Leitfähigkeitszustand (z.B. Widerstand) des idealen Memristormaterials kann geändert werden, indem die zwischen einzelnen Drähten der Zeilen- und Spaltendrähte angelegte Spannung gesteuert wird. Digitale Daten können gespeichert werden, indem der Leitfähigkeitszustand des Memristormaterials am Schnittpunkt geändert wird, um einen Zustand hoher Leitfähigkeit oder einen Zustand niedriger Leitfähigkeit zu erreichen. Das Memristormaterial kann auch so programmiert werden, dass es zwei oder mehr unterschiedliche Leitfähigkeitszustände hält, indem der Leitfähigkeitszustand des Materials selektiv eingestellt wird. Der Leitfähigkeitszustand des Memristormaterials kann ausgelesen werden, indem eine Spannung an das Material angelegt und der Strom gemessen wird, der durch die Ziel-Kreuzungspunkteinheit fließt.
  • Um den Stromverbrauch zu begrenzen, sind die Kreuzpunkteinheiten von KNN-Chiparchitekturen häufig so ausgelegt, dass sie Offline-Lerntechniken verwenden, bei denen sich die Näherung der Zielfunktion nicht mehr ändert, nachdem die anfängliche Trainingsphase abgeschlossen ist. Offline-Lernen ermöglicht es, die Kreuzpunkteinheiten von Kreuzschienen-artigen KNN-Architekturen so zu vereinfachen, dass sie sehr wenig Strom verbrauchen.
  • Die Bereitstellung einfacher Kreuzpunkteinheiten, die eine Vorwärtsinferenz von zuvor trainierten KNN-Netzwerken mit geringem Stromverbrauch, hohem Rechendurchsatz und geringer Latenz umsetzen können, würde die KNN-Gesamtleistung verbessern und eine breitere Palette von KNN-Anwendungen ermöglichen.
  • Obwohl die vorliegende Erfindung sich auf ein elektronisches System bezieht, werden zur leichteren Bezugnahme und Erklärung verschiedene Aspekte des beschriebenen elektronischen Systems unter Verwendung neurologischer Begrifflichkeit wie Neuronen, Plastizität und Synapsen beschrieben. Es versteht sich, dass für jede Beschreibung oder Darstellung eines elektronischen Systems hierin die Verwendung neurologischer Begrifflichkeit oder neurologischer Stichwörter der leichteren Bezugnahme dient und das eine oder die mehreren neuromorphen KNN-Äquivalente der beschriebenen neurologischen Funktion oder Komponente abdecken soll.
  • KNNs, auch bekannt als neuromorphe oder synaptronische Systeme, sind Computersysteme, die andere Funktionen oder Systeme schätzen bzw. nähern können, darunter zum Beispiel biologische neuronale Systeme, das menschliche Gehirn sowie Gehirnbezogene Funktionen wie Bilderkennung, Spracherkennung und dergleichen. KNNs vereinigen Wissen aus einer Vielfalt von Disziplinen, darunter Neurophysiologie, Kognitionswissenschaft/Psychologie, Physik (statistische Mechanik), Steuerungstheorie, Informatik, künstliche Intelligenz, Statistik/Mathematik, Mustererkennung, Computer Vision, Parallelverarbeitung und (z.B. digitale/analoge/VLSI-/optische) Hardware.
  • Anstatt das traditionelle digitale Modell der Manipulation von Nullen und Einsen zu verwenden, erzeugen KNNs Verbindungen zwischen Verarbeitungselementen, die im Wesentlichen das funktionale Äquivalent der Kern-Systemfunktionalität sind, die geschätzt oder genähert wird. Beispielsweise versucht ein Computerchip, der die zentrale Komponente einer elektronischen neuromorphen Maschine ist, eine ähnliche Form, Funktion und Architektur wie das Säugetiergehirn bereitzustellen. Obwohl der Computerchip die gleichen grundlegenden Transistorkomponenten wie herkömmliche Computerchips verwendet, sind seine Transistoren so konfiguriert, dass sie das Verhalten von Neuronen und ihren Synapsenverbindungen nachahmen. Der Computerchip verarbeitet Informationen mithilfe eines Netzes aus etwas mehr als einer Million simulierter „Neuronen“, die über elektrische Spitzen miteinander Daten austauschen, ähnlich dem synaptischen Informationsaustausch zwischen biologischen Neuronen. Die Architektur eines solchen Computerchips umfasst eine Konfiguration von Recheneinheiten (d.h. simulierten „Neuronen“), die einen Speicher (d.h. eine simulierte „Synapse“) lesen und einfache Operationen ausführen. Die Datenübertragung (die Wege) zwischen diesen Recheneinheiten, die sich üblicherweise in unterschiedlichen Kernen befinden, wird von On-Chip-Netzwerk-Routern durchgeführt.
  • Als Hintergrund wird nun eine allgemeine Beschreibung der Funktionsweise eines typischen KNN in Bezug auf die 1, 2 und 3 gegeben. Wie zuvor hierin erwähnt, ist ein typisches KNN ein mathematisches Modell, das vom menschlichen Gehirn inspiriert ist, das etwa hundert Milliarden miteinander verbundener Zellen, Neuronen genannt, enthält. 1 zeigt eine vereinfachte Darstellung eines mathematischen Neurons 102 mit Wegen 104, 106, 108, 110, die es mit vorgelagerten Eingängen 112, 114, nachgelagerten Ausgängen 116 und nachgelagerten „anderen“ Neuronen 118 verbinden, die wie gezeigt konfiguriert und angeordnet sind. Jedes mathematische Neuron 102 sendet und empfängt über die Wege 104, 106, 108, 110 elektrische Impulse. Die Art dieser elektrischen Impulse und wie sie in biologischen Neuronen (nicht gezeigt) verarbeitet werden, sind in erster Linie für die Gesamtfunktion des Gehirns verantwortlich. Das Nachahmen dieser Funktionalität ist die Absicht eines mathematischen KNN, das aus mathematischen Neuronen 102 aufgebaut ist, die in einem Netzwerk organisiert sind. So wie die Wegverbindungen zwischen biologischen Neuronen stark oder schwach sein können, so können es auch die Wegverbindungen zwischen mathematischen Neuronen sein. Wenn ein bestimmtes Neuron Eingangsimpulse empfängt, verarbeitet das Neuron die Eingabe gemäß der Funktion des Neurons und sendet das Ergebnis der Funktion an nachgelagerte Ausgänge und/oder nachgelagerte „andere“ Neuronen.
  • Das mathematische Neuron 102 ist in 2 als Knoten 202 mit einer mathematischen Funktion f(x) modelliert, die durch die in 2 gezeigte Gleichung beschrieben ist. Der Knoten 202 nimmt elektrische Signale von den Eingängen 212, 214 an, multipliziert jeden Eingang 212, 214 mit der Stärke seines jeweiligen Verbindungswegs 204, 206, bildet eine Summe der Eingänge, wendet auf die Summe eine Funktion f(x) an und erzeugt ein Ergebnis 216, das eine endgültige Ausgabe oder eine Eingabe an einen anderen Knoten oder beides darstellen kann. In der vorliegenden Beschreibung wird ein Stern (*) verwendet, um eine Multiplikation zu bezeichnen, die eine Matrixmultiplikation sein kann. Beispielsweise kann die Matrixmultiplikation verwendet werden, um Faltungsoperationen zwischen Eingabedaten und einem oder mehreren Faltungskernen auszuführen, um Ausgabekarten zu erzeugen. Schwache Eingangssignale werden mit einer sehr kleinen Verbindungsstärkegröße multipliziert, sodass die Auswirkung eines schwachen Eingangssignals auf die Funktion sehr gering ist. In ähnlicher Weise werden starke Eingangssignale mit einer höheren Verbindungsstärkegröße multipliziert, so dass die Auswirkung eines starken Eingangssignals auf die Funktion größer ist. Die Funktion f(x) ist eine Entwurfsoption, und eine Vielfalt von Funktionen kann verwendet werden. Eine typische Entwurfsoption für f(x) ist die hyperbolische Tangens-Funktion, die die Ausgabe der vorherigen Summe aufnimmt und eine Zahl zwischen minus eins und plus eins ausgibt. Eine alternative Entwurfsoption von f(x) ist eine gleichgerichtete Lineareinheit (ReLU), eine Funktion, bei der die Ausgabe für positive Eingaben mit der Eingabe übereinstimmt und ansonsten null ist.
  • 3 zeigt ein vereinfachtes KNN-Modell 300, das als gewichteter gerichteter Graph organisiert ist, wobei die künstlichen Neuronen Knoten sind (z.B. 302, 308, 316) und wobei gewichtete gerichtete Kanten (z.B. m1 bis m20) die Knoten verbinden. Das KNN-Modell 300 ist so organisiert, dass die Knoten 302, 304, 306 Knoten der Eingangsschicht sind, die Knoten 308, 310, 312, 314 Knoten der verborgenen Schicht sind und die Knoten 316, 318 Knoten der Ausgangsschicht sind. Jeder Knoten ist mit jedem Knoten in der angrenzenden Schicht durch Verbindungswege verbunden, die in 3 als Richtungspfeile mit Verbindungsstärken m1 bis m20 gezeigt sind. Obwohl nur eine Eingangsschicht, eine verborgene Schicht und eine Ausgangsschicht gezeigt sind, können in der Praxis mehrere Eingangsschichten, verborgene Schichten und Ausgangsschichten vorgesehen sein.
  • Bei diesem Versuch, die Funktionalität eines menschlichen Gehirns nachzuahmen, empfängt jeder Eingangsschichtknoten 302, 304, 306 des KNN 300 Eingaben x1, x2, x3 direkt von einer Quelle (nicht gezeigt) ohne eine Anpassung der Verbindungsstärke und ohne Knotensummierung. Dementsprechend ist y1 = f(x1), y2 = f(x2) und y3 = f(x3), wie durch die unten in 3 aufgeführten Gleichungen gezeigt. Jeder Knoten 308, 310, 312, 314 der verborgenen Schicht empfängt seine Eingaben von allen Knoten 302, 304, 306 der Eingangsschicht gemäß den Verbindungsstärken, die zu den jeweiligen Verbindungswegen gehören. Somit ist in dem Knoten 308 der verborgenen Schicht y4 = f(m1*y1 + m5*y2 + m9*y3), wobei * für eine Multiplikation steht. In einem oder mehreren Beispielen kann die Multiplikation eine Matrixmultiplikation sein, die zum Ausführen einer Faltungsoperation verwendet wird. Ähnliche Multiplikationen mit der Verbindungsstärke und Knotensummierung werden für die Knoten 310, 312, 314 der verborgenen Schicht und die Knoten 316, 318 der Ausgangsschicht ausgeführt, wie durch die Gleichungen gezeigt ist, die die Funktionen y5 bis y9 definieren, die unten in 3 gezeigt sind.
  • Das KNN-Modell 300 verarbeitet Datensätze einzeln und „lernt“, indem es eine anfänglich willkürliche Klassifizierung des Datensatzes mit der bekannten tatsächlichen Klassifizierung des Datensatzes vergleicht. Unter Verwendung einer Trainingsmethode, die als „Backpropagation“ (d.h. „Rückführung von Fehlern“) bekannt ist, werden die Fehler aus der anfänglichen Klassifizierung des ersten Datensatzes in das Netz zurück gespeist und verwendet, um die gewichteten Verbindungen des Netzwerks für den zweiten Durchlauf zu ändern, und dieses Rückkopplungsverfahren wird über mehrere Iterationen fortgesetzt. In der Trainingsphase eines KNN ist die korrekte Klassifikation für jeden Datensatz bekannt, und den Ausgangsknoten können daher „richtige“ Werte zugeordnet werden, beispielsweise ein Knotenwert von „1“ (oder 0,9) für den Knoten, der der korrekten Klasse entspricht, und einen Knotenwert von „0“ (oder 0,1) für die übrigen. Es ist somit möglich, die berechneten Werte des Netzwerks für die Ausgangsknoten mit diesen „korrekten“ Werten zu vergleichen und einen Fehlerterm für jeden Knoten (d.h. über die „Delta-Regel“) zu berechnen. Diese Fehlerterme werden dann verwendet, um die Gewichte in den verborgenen Schichten so anzupassen, dass die Ausgangswerte in der nächsten Iteration näher an den „korrekten“ Werten liegen.
  • Es gibt viele Arten von neuronalen Netzen, aber die zwei breitesten Kategorien sind vorwärtsgerichtete und Rückkopplungs-/rekurrente Netze. Das KNN-Modell 300 ist ein nicht-rekurrentes vorwärtsgerichtetes Netz mit Eingängen, Ausgängen und verborgenen Schichten. Die Signale können nur in eine Richtung laufen. Eingabedaten werden an eine Schicht von Verarbeitungselementen weitergeleitet, die Berechnungen ausführen. Jedes Verarbeitungselement führt seine Berechnung auf Grundlage einer gewichteten Summe seiner Eingaben aus. Die neu berechneten Werte werden dann zu den neuen Eingabewerten, die in die nächste Schicht eingespeist werden. Dieser Prozess setzt sich fort, bis er alle Schichten durchlaufen und die Ausgabe festgelegt hat. Eine Schwellenwert-Übertragungsfunktion wird manchmal verwendet, um die Ausgabe eines Neurons in der Ausgangsschicht zu quantifizieren.
  • Ein Rückkopplungs-/rekurrentes Netz enthält Rückkopplungswege, was bedeutet, dass sich die Signale unter Verwendung von Schleifen in beide Richtungen bewegen können. Alle möglichen Verbindungen zwischen Knoten sind zulässig. Da in dieser Art von Netz Schleifen vorhanden sind, kann es bei bestimmten Operationen zu einem nichtlinearen dynamischen System werden, das sich ständig ändert, bis es einen Gleichgewichtszustand erreicht. Rückkopplungsnetze werden häufig bei Assoziativspeicher und Optimierungsproblemen verwendet, bei denen das Netz nach der besten Anordnung miteinander verbundener Faktoren sucht.
  • Die Geschwindigkeit und Effizienz des maschinellen Lernens in vorwärtsgerichteten und rekurrenten KNN-Architekturen hängen davon ab, wie effektiv die Kreuzpunkteinheiten des KNN-Kreuzpunkt-Array die Kernoperationen typischer Algorithmen für das maschinelle Lernen ausführen. Obwohl eine genaue Definition für maschinelles Lernen schwierig zu fassen ist, kann ein Lernprozess im KNN-Kontext als dasjenige Problem angesehen werden, die Verbindungsgewichte der Kreuzpunkteinheiten so zu aktualisieren, dass ein Netz eine bestimmte Aufgabe effizient ausführen kann. Die Kreuzpunkteinheiten lernen üblicherweise die notwendigen Verbindungsgewichte aus verfügbaren Trainingsmustern. Die Leistung wird im Laufe der Zeit verbessert, indem die Gewichte im Netz iterativ aktualisiert werden. Anstatt einem Satz von Regeln zu folgen, der von menschlichen Experten festgelegt wurde, „lernen“ KNNs die zugrundeliegenden Regeln (wie Eingangs-Ausgangs-Beziehungen) aus dem vorgegebenen Satz typischer Beispiele. Dementsprechend kann ein Lernalgorithmus allgemein als dasjenige Verfahren definiert werden, durch das Lernregeln zum Aktualisieren und/oder Anpassen der relevanten Gewichte verwendet werden.
  • Die drei Hauptparadigmen sind überwachte, nicht überwachte und hybride Lernalgorithmen. Beim überwachten Lernen oder Lernen mit einem „Lehrer“ wird das Netz für jedes Eingangsmuster mit einer richtigen Antwort (Ausgabe) versehen. Es werden Gewichte festgelegt, um es dem Netzwerk zu ermöglichen, Antworten zu erzeugen, die den bekannten richtigen Antworten so nahe wie möglich kommen. Reinforcement Learning (verstärkendes Lernen) ist eine Variante des überwachten Lernens, bei der dem Netzwerk nur eine Kritik an der Korrektheit der Netzausgabe zur Verfügung gestellt wird, nicht die richtigen Antworten selbst. Im Gegensatz dazu erfordert nicht überwachtes Lernen oder Lernen ohne Lehrer keine richtige Antwort, die jedem Eingangsmuster im Trainingsdatensatz zugeordnet ist. Es untersucht die zugrunde liegende Struktur der Daten oder Korrelationen zwischen Mustern in den Daten und organisiert Muster in Kategorien aus diesen Korrelationen. Hybrides Lernen kombiniert überwachtes und nicht überwachtes Lernen. Teile der Gewichte werden in der Regel durch überwachtes Lernen bestimmt, während die übrigen durch nicht überwachtes Lernen bestimmt werden. Weitere Einzelheiten von KNNs und Lernregeln sind in „Artificial Neural Networks: A Tutorial“ von Anil K. Jain, Jianchang Mao und KM Mohiuddin, IEEE März 1996 beschrieben, dessen gesamte Beschreibung hierin durch Bezugnahme aufgenommen ist.
  • Über die Anwendung von Trainings-KNNs hinaus umfasst die Vorwärtsinferenz von bereits trainierten Netzen Anwendungen, die von Umsetzungen von Cloud-gestützten Diensten, die auf KNNs aufbauen, bis hin zu Smartphones, Internet der Dinge (IOT) und anderen batteriebetriebenen Anwendungen reichen, die einen extrem stromsparenden Betrieb erfordern. Während das Training im Allgemeinen eine Anwendung ist, die einen hohen Durchsatz (zum Lernen aus vielen Trainingsbeispielen) erfordert, ist die Vorwärtsinferenz eine Anwendung, die eine kurze Latenz erfordert (damit jedes gegebene neue Testbeispiel so schnell wie möglich klassifiziert, erkannt, oder anderweitig verarbeitet werden kann).
  • In einem CNN falten Kerne überlappende Bereiche, wie z.B. diejenigen in einem Gesichtsfeld, und betonen dementsprechend die Bedeutung des räumlichen Ortes bei der Merkmalserkennung. Die Berechnung der Faltungsschichten des CNN nimmt in der Regel mehr als 90 % der Rechenzeit beim Training und der Inferenz neuronaler Netze in Anspruch. Das Zuordnen von CNNs in analoge Arrays und das Sicherstellen einer effizienten Nutzung von elektrischer Energie, die verwendet wird, während die mathematischen Operationen der Faltungsschichten ausgeführt werden, bei minimaler externer Datenbewegung oder Berechnung, ist eine technische Herausforderung. Die technische Herausforderung besteht darin, das CNN für eine Inferenz zuzuordnen sowie die Skalierbarkeit einer solchen Zuordnung zu erhalten, so dass sogar große CNNs wie das ResNet-50 umgesetzt werden können. Während bestehende Lösungen, die eine zeilenweise Zuordnung verwenden, bestimmte Beschränkungen bei den Routing-Schaltungen zwischen Arrays voraussetzen, erleichtern eine oder mehrere Ausführungsformen der vorliegenden Erfindung ein flexibles Routing von Daten zwischen Arrays, das eine kompakte Zuordnung von CNN-Schichten zu Kreuzpunkt-Arrays für die zeilenweise Technik ermöglicht.
  • Die technischen Lösungen, die durch Ausführungsformen der vorliegenden Erfindung umgesetzt werden, lösen solche technischen Probleme, indem sie eine Array-Nutzung vorsehen, die für einen breiten Bereich von CNN-Netzen sehr vergleichbar ist, während sie die Vorteile einer optimierten Aktivierung für die zeilenweise Zuordnung beibehalten.
  • 4 zeigt ein vereinfachtes Blockschema eines CNN. In dem gezeigten Beispiel wird ein CNN zum Interpretieren einer Beispiel-Eingabekarte 400 verwendet und verwendet in diesem speziellen Beispiel einen handgeschriebenen Buchstaben „w“ als Eingabekarte. Es versteht sich jedoch, dass andere Arten von Eingabekarten möglich sind und dass die hierin beschriebenen technischen Lösungen auch auf ein CNN anwendbar sind, das andere Operationen ausführt, wie etwa andere Arten von Merkmalserkennung. In dem gezeigten Beispiel wird die Eingabekarte 400 verwendet, um einen Satz von Werten für die Eingangsschicht 410 oder „Schicht 1“ zu erstellen. Beispielsweise kann Schicht 1 durch direktes Zuordnen eines Pixels der beispielhaften Eingabekarte 400 zu einem bestimmten Neuron in Schicht 1 erzeugt werden, so dass das Neuron eine 1 oder eine 0 anzeigt, abhängig davon, ob das Pixel ein bestimmtes Attribut aufweist. Ein weiteres beispielhaftes Verfahren zum Zuweisen von Werten zu Neuronen wird unten in Bezug auf faltende neuronale Netze beschrieben. Abhängig von den Eigenheiten des neuronalen Netzes und dem Problem, das es lösen soll, kann jede Schicht des Netzes eine unterschiedliche Anzahl von Neuronen aufweisen, und diese können, müssen aber nicht mit bestimmten Eigenschaften der Eingabedaten in Verbindung stehen.
  • Unter Bezugnahme auf 4 sind Neuronen in Schicht 1410 mit Neuronen in einer nächsten Schicht, Schicht 2 420, verbunden, wie zuvor beschrieben wurde (siehe 3). Die Neuronen in 4 gleichen den in Bezug auf 1 beschriebenen. Ein Neuron in Schicht 2 420 empfängt folglich einen Eingabewert von jedem der Neuronen in Schicht 1 410. Die Eingabewerte werden dann summiert und diese Summe mit einem Bias (Schwellenwert) verglichen. Wenn der Wert den Bias für ein bestimmtes Neuron überschreitet, hält dieses Neuron einen Wert, der als Eingabe für Neuronen in der nächsten Schicht von Neuronen verwendet werden kann. Diese Berechnung setzt sich durch die verschiedenen Schichten 430 bis 450 des CNN fort, die mindestens eine vollständig verbundene Schicht 450 umfassen, bis sie eine letzte Schicht 460 erreicht, die in 4 als „Ausgang“ bezeichnet wird. In manchen CNN-Netzen können „Rest-Ergebnisse“ früherer Schichten mit den Ergebnissen späterer Schichten zusammengeführt werden, wobei die dazwischen liegenden Schichten übersprungen werden. In einem Beispiel eines CNN, das zur Zeichenerkennung verwendet wird, wird jeder Wert in der Schicht einem bestimmten Zeichen zugeordnet. Bei der Auslegung für Klassifizierungsaufgaben ist das Netz so konfiguriert, dass am Ende die Ausgangsschicht nur in einem Neuron einen hohen positiven Wert aufweist, der dann anzeigt, welches Zeichen das Netz als das wahrscheinlichste handgeschriebene Eingabezeichen berechnet hat. In anderen Szenarien kann das Netz so ausgelegt sein, dass Ausgangsneuronenwerte verwendet werden können, um Wahrscheinlichkeiten (Likelihoods), Konfidenzintervalle oder andere interessierende Metriken zu schätzen.
  • Die Datenwerte für jede Schicht im CNN werden üblicherweise unter Verwendung von Matrizen (oder Tensoren in manchen Beispielen) dargestellt, und Berechnungen werden als Matrixberechnungen ausgeführt. Die Indizes (und/oder Größen) der Matrizen schwanken von Schicht zu Schicht und von Netz zu Netz, wie in 4 gezeigt. Andere Umsetzungen orientieren die Matrizen anders oder ordnen die Matrizen dem Computerspeicher anders zu. Unter Bezugnahme auf 4 ist in dem gezeigten beispielhaften CNN jede Ebene ein Tensor von Neuronenwerten, wie durch Matrixgrößen für jede Schicht des neuronalen Netzes gezeigt ist. Am Eingang des CNN könnten beispielsweise mehrere „Eingabe-Ebenen“ liegen, von denen jede ein zweidimensionales Bild darstellt. Beispielsweise kann es eine rote Ebene, eine grüne Ebene und eine blaue Ebene geben, die von einem Vollfarbbild stammen. Tiefer im CNN können Schichten Zwischendaten in Form vieler „Ebenen“ aufnehmen und für die nächste Schicht eine große Anzahl von Ausgabeebenen erzeugen. Die Werte in einem Eingabetensor an einer Ebene werden mit Verbindungsstärken multipliziert, die in einem als Filter bezeichneten Transformationstensor enthalten sind. Diese Matrixmultiplikation skaliert jeden Wert in der vorherigen Schicht gemäß den Verbindungsstärken, wobei der Gesamtwert dieser Beiträge dann aufsummiert wird. Diese grundlegende Operation ist als Multiplikations-Akkumulations-Operation bekannt. Eine Bias-Matrix kann dann zu der resultierenden Produktmatrix addiert werden, so dass der Schwellenwert jedes Neurons in der nächsten Ebene erreicht wird. Ferner wird auf jeden resultierenden Wert eine Aktivierungsfunktion angewendet, und die resultierenden Werte werden in den Ausgabetensor angeordnet, der auf die nächste Schicht angewendet wird. In einem Beispiel kann die Aktivierungsfunktion aus gleichgerichteten Lineareinheiten, einem Sigmoid oder tanh() bestehen. Wie 4 gezeigt, können die Verbindungen zwischen jeder Schicht, und somit ein ganzes Netz, als eine Reihe von Matrizen dargestellt werden. Das Training des CNN umfasst ein Finden geeigneter Werte für diese Matrizen.
  • Während vollständig verbundene neuronale Netze, wenn sie richtig trainiert sind, in der Lage sind, Eingabemuster wie Handschriften oder Fotos von Haustieren usw. zu erkennen, weisen sie keine Verschiebungsinvarianz auf. Damit das Netz die Schnurrhaare einer Katze erkennen kann, muss es mit Katzenbildern versorgt werden, bei denen sich die Schnurrhaare an zahlreichen verschiedenen 2-D-Orten innerhalb des Bildes befinden. Jeder unterschiedliche Bildort führt zu Neuronenwerten, die in einem solchen vollständig verbundenen Netz mit unterschiedlichen Gewichten interagieren. Im Gegensatz dazu sind beim CNN die Verbindungsstärken Faltungskerne. Die Faltungsoperation führt zu einer Verschiebungsinvarianz. Wenn somit mehrere Bilder mit Katzen mit Schnurrhaaren angezeigt werden, spielt der 2-D-Ort innerhalb des Bildes keine Rolle mehr, solange Maßstab, Farbe und Drehung der Schnurrhaare von Bild zu Bild unverändert bleiben. Somit wirken während des Trainings alle Beispiele ähnlicher Merkmale zusammen, um dazu beizutragen, dieses Merkmal zu lernen, unabhängig vom Ort des Merkmals innerhalb des 2-D-Bildes. Nach dem Training reicht ein einziger Filter oder ein viel kleinerer Satz von Filtern aus, um solche Bildmerkmale zu erkennen, so dass eine Bank von vielen Filtern (was eine CNN-Schicht ist) viele verschiedene Merkmale erkennen kann, die für die Unterscheidung von Bildern nützlich sind (Hunde von Katzen, oder sogar Feinheiten, die für verschiedene Katzenrassen charakteristisch sind).
  • 5 zeigt eine beispielhafte Faltungsschicht 500 in einem CNN, die unter Verwendung von Trainingsdaten, die Eingabekarten 510 umfassen, und Faltungskernen 520 trainiert wird. Der Einfachheit halber zeigt 5 keine Bias-Matrizen 525. Die Eingabekarten 510 (auch als Eingabeebenen bezeichnet) können mehrere Eingabemuster enthalten, beispielsweise D Eingabekarten. Jede Eingabekarte ist eine Matrix, etwa eine Matrix der Größe NxM. Dementsprechend ist in diesem Fall eine Gesamtzahl der Eingangsneuronen N x M x D. Die Eingabekarten werden wie gezeigt mit F Faltungskernen 520 der Größe k x k gefaltet, um zugehörige Ausgabekarten 530 zu erzeugen. Jede Ausgabekarte kann eine Abmessung von N' x M' haben. Falls die Eingabekarten quadratische Matrizen der Größe n sind, haben die Ausgabekarten die Größe n-k + 1 x n-k + 1. Jede Faltung ist eine 3D-Faltung mit den D Eingabekarten. Ein CNN kann mehrere solcher Schichten enthalten, wobei die Ausgabekarten 530 von einer vorherigen Schicht als Eingabekarten 510 für eine nachfolgende Schicht verwendet werden. Der Backpropagation-Algorithmus kann verwendet werden, um die k x k x D x F Gewichtswerte der Filter zu erlernen.
  • Beispielsweise werden die Eingabekarten 510 mit jeder Filterbank gefaltet, um eine entsprechende Ausgabekarte zu erzeugen. Falls das CNN zum Beispiel darauf trainiert wird, Handschrift zu erkennen, werden die Eingabekarten 510 mit einer Filterbank verwendet, die Faltungskerne enthält, die eine vertikale Linie darstellen. Die resultierende Ausgabekarte erkennt vertikale Linien, die in den Eingabekarten 510 vorhanden sind. Ferner kann eine weitere Filterbank Faltungskerne enthalten, die eine diagonale Linie darstellen, die z.B. nach oben rechts verläuft. Eine Ausgabekarte, die aus einer Faltung der Eingabekarten 510 mit der zweiten Filterbank resultiert, erkennt Proben der Trainingsdaten, die diagonale Linien enthalten. Die beiden Ausgabekarten zeigen unterschiedliche Informationen für das Zeichen, während Pixelnachbarschaft erhalten wird. Dies kann zu einer effizienteren Zeichenerkennung führen.
  • 6 zeigt ein System 600 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung, in dem das Kreuzpunkt-Array 700 unter Verwendung eines Controllers 610 zum Ausführen der einen oder mehreren Matrix-Matrix-Multiplikationen, neben anderen Operationen, gesteuert wird. Beispielsweise sendet der Controller 610 die Eingabedaten 510, die von dem Kreuzpunkt-Array 700 multipliziert werden sollen. In einem oder mehreren Beispielen speichert der Controller 610 die Gewichtswerte, etwa von den Faltungskernen 520, in dem Kreuzpunkt-Array 700 und sendet die Eingabevektoren. In einem oder mehreren Beispielen sind der Controller 610 und das Kreuzpunkt-Array 700 drahtgebunden oder drahtlos oder in einer Kombination dieser verbunden. Der Controller 610 sendet ferner eine Anweisung/einen Befehl an das Kreuzpunkt-Array 700, um die Operationen für eine oder mehrere Schichten in dem CNN einzuleiten. Der Controller 610 kann ferner die Ausgabedaten 530 aus dem Kreuzpunkt-Array 700 lesen, nachdem er eine Benachrichtigung erhalten hat, dass die Berechnungen ausgeführt wurden. Der Controller 610 kann eine Verarbeitungseinheit oder ein Computersystem sein, etwa ein Server, ein Desktop-Computer, ein Tablet-Computer, ein Telefon und dergleichen. Der Controller 610 kann eine Speichereinheit enthalten, auf der durch einen Computer ausführbare Anweisungen gespeichert sind, wobei die Anweisungen, wenn sie von dem Controller ausgeführt werden, die Matrix-Matrix-Berechnung bewirken.
  • Wendet man sich nun einem Überblick über die vorliegende Beschreibung zu, betreffen eine oder mehrere Ausführungsformen ein Kreuzpunkt-Array mit Kreuzpunkteinheiten an jeder Kreuzung der Kreuzschienendrähte, wobei das Kreuzpunkt-Array zum Umsetzen des CNN verwendet wird. Ein Beispiel einer Kreuzpunkteinheit ist eine programmierbare resistive Kreuzpunktkomponente mit zwei Anschlüssen, die hierin als resistive Verarbeitungseinheit (RPU) bezeichnet wird, die lokale Datenspeicherfunktionalität und lokale Datenverarbeitungsfunktionalität bereitstellt. Beim Ausführen einer Datenverarbeitung wird der gewichtete Beitrag, der jeder Kreuzpunkteinheit entspricht, zu einer stark parallelen Multiplikations-Akkumulations-Operation hinzugefügt, die an der Speicherstelle der Daten ausgeführt wird. Dies beseitigt die Notwendigkeit, relevante Daten in eine Recheneinheit und ein getrenntes Speicherelement und aus ihnen heraus zu verschieben. Dementsprechend ermöglicht die Umsetzung einer CNN-Architektur für maschinelles Lernen mit der beschriebenen Kreuzpunkteinheit das Umsetzen von Online-Fähigkeiten des maschinellen Lernens, die ein Trainieren des CNN erleichtern, und ein nachfolgendes Ausführen von Inferenz unter Verwendung der trainierten CNN-Modelle. Die beschriebene Kreuzpunkteinheit und die daraus resultierende CNN-Architektur verbessern die CNN-Gesamtleistung und ermöglichen einen breiteren Bereich praktischer CNN-Anwendungen.
  • Die beschriebene Kreuzpunkteinheit kann als resistive Kreuzpunkteinheit mit zwei Anschlüssen umgesetzt werden. Beispielsweise kann die beschriebene Kreuzpunkteinheit mit resistivem Direktzugriffsspeicher (RRAM), Phasenänderungsspeicher (PCM), Speicher mit programmierbarer Metallisierungszelle (PMC), nichtlinearen Memristorsystemen oder jeder anderen Einheit umgesetzt werden, die einen weiten Bereich analog anpassbarer nichtflüchtiger resistiver Speicherzustände bietet, die über die Zeit hinweg ausreichend stabil sind.
  • 7 zeigt ein zweidimensionales (2D-) Kreuzschienensystem 700, das Vorwärtsinferenz gemäß der vorliegenden Beschreibung ausführt. Das Kreuzschienensystem 700 kann verwendet werden, um eine einfache Matrixmultiplikation, eine Rückwärts-Matrixmultiplikation und sogar In-situ-Gewichtsaktualisierung gemäß dem Backpropagation-Algorithmus umzusetzen. Das Kreuzschienensystem 700 enthält neben anderen Komponenten ein Kreuzpunkt-Array 705, eine Eingangsschaltung 710 und eine Ausgangsschaltung 720. Die Eingangsschaltung 710 und die Ausgangsschaltung 720 können zusammen als periphere Schaltung bezeichnet werden. Das Kreuzschienensystem 700 kann in einem oder mehreren Beispielen ein Computerchip sein.
  • 8 zeigt eine erweiterte Ansicht des Kreuzpunkt-Array 705 gemäß einer oder mehreren Ausführungsformen. Das Kreuzpunkt-Array 705 ist aus einem Satz leitfähiger Zeilendrähte 802, 804, 806 und einem Satz leitfähiger Spaltendrähte 808, 810, 812, 814 ausgebildet, die den Satz leitfähiger Zeilendrähte 802, 804, 806 kreuzen. Die Schnittpunkte zwischen dem Satz von Zeilendrähten und dem Satz von Spaltendrähten werden durch Kreuzpunkteinheiten getrennt, die in 8 als Widerstandselemente gezeigt sind, die jeweils ihr eigenes einstellbares/aktualisierbares Widerstandsgewicht haben, das entsprechend als σ11, σ21, σ31, σ41, σ12, σ22, σ32, σ42, σ13, σ23, σ33 und σ43 gezeigt ist. Zur Vereinfachung der Darstellung ist nur eine Kreuzpunkteinheit 820 in 8 mit einem Bezugszeichen gekennzeichnet. Bei der Vorwärts-Matrixmultiplikation kann der Leitfähigkeitszustand (d.h. die gespeicherten Gewichte) der Kreuzpunkteinheit gelesen werden, indem eine Spannung an die Kreuzpunkteinheit angelegt wird und der Strom gemessen wird, der durch die Kreuzpunkteinheit fließt.
  • Eingangsspannungen V1, V2, V3 werden jeweils an die Zeilendrähte 802, 804, 806 angelegt. Jeder Spaltendraht 808, 810, 812, 814 summiert die Ströme I1, I2, I3, I4, die durch jede Kreuzpunkteinheit entlang der jeweiligen Spaltenleitung erzeugt werden, unter Verwendung eines Integrators, etwa eines Kondensators. Wie in 8 gezeigt, ist beispielsweise der Strom I4, der durch den Spaltendraht 814 erzeugt wird, durch die Gleichung I4 = V1σ41 + V2σ42 + V3σ43 gegeben. Somit berechnet das Array 705 die Vorwärts-Matrixmultiplikation durch Multiplizieren der in den Kreuzpunkteinheiten gespeicherten Werte mit den Zeilenleitungseingaben, die durch die Spannungen V1, V2, V3 definiert sind.
  • Unter Bezugnahme auf 7 enthält die Eingangsschaltung 710 in einem oder mehreren Beispielen mindestens eine Hilfsschaltung 712, eine geteilte Schaltung 714 und eine Zeilenschaltung 716. Die Zeilenschaltung enthält Hardwarekomponenten, die zu jedem der Zeilendrähte 802, 804 und 806 gehören. Die Eingangsschaltung 710 erleichtert es, das Kreuzpunkt-Array 705 mit den Eingangsspannungen zu versorgen.
  • 9 zeigt eine typische Ausgangsschaltung 720. Die Ausgangsschaltung enthält Integratoren 908, 910, 912 und 914, die den Spaltendrähten 808, 810, 812 und 814 zugeordnet sind. Die Integratoren 908, 910, 912 und 914 sind in einem oder mehreren Beispielen Kondensatoren. Die Ausgangsströme entlang jeder Spaltenleitung werden in den Integratoren akkumuliert und an die nächste Schicht des CNN weitergeleitet. Wie zuvor beschrieben, macht eine solche Anordnung der Integratoren die Berechnungen der FC-(vollständig verbundenen) Schichten sehr effizient. Für die Faltungsoperationen bedeutet die Verwendung einer solchen Anordnung der Integratoren jedoch einen erheblichen zusätzlichen Mehraufwand in Bezug auf Datentransport, Speicherung, Organisation und nachfolgenden Datentransport. Solche Operationen erfordern zusätzliche Ressourcen wie Zeit, Energie und zusätzliche Schaltungsfläche, wodurch das Gesamtsystem ineffizient wird.
  • 10 zeigt bestehende Operationen zum Ausführen von Vorwärtsinferenzoperationen unter Verwendung des Kreuzpunkt-Array. Wie in 10 gezeigt, wird eine Bildzeile (512, 514 und 516) aller Eingabeebenen 510 gleichzeitig als Spalte von Eingaben in die Arrayzeilen (802, 804 und 806) des Kreuzpunkt-Array 705 des Kreuzschienensystems 700 eingegeben. Die Kreuzpunkteinheiten 820 an jedem Kreuzpunkt enthalten Gewichtselemente von den Filtern 525, die nach dem Ohm'schen Gesetz (Spannung mal elektrischem Leitwert gleich Stromstärke) jeweils zu einer Multiplikation der Array-Zeilenerregung xi und dem gespeicherten Gewicht Wij führen. Die Integration aller solcher Lesestrombeiträge wird entlang jeder Arrayspalte summiert und in den entsprechenden Integratoren (908, 910, 912 und 914) der Arrayspalten (808, 810, 812 und 814) gespeichert. Die Berechnung kann so ausgedrückt werden, dass Strom I1 in Spalte #1 (808) auf dem Kondensator C1 (908), I2 auf dem Kondensator C2, I3 auf C3 gespeichert wird usw. Bei den bestehenden technischen Lösungen, die solche Kreuzpunkt-Arrays 705 verwenden, wird die integrierte Ladung auf den Kondensatoren (908, 910, 912 und 914) als Ausgabe der Multiplikation-Akkumulation behandelt und entweder in eine digitale Zahl oder in eine Impulsdauer für den Transport zu einem nächsten Array 705 umgewandelt.
  • Auf diese Weise werden bei jedem Zeitschritt (d.h. bei jeder vom Array 705 ausgeführten Berechnung) über alle Eingabeebenen 510 Werte integriert, wodurch eine Ausgabe für alle Ausgabeebenen 530 erzeugt wird.
  • Weiterhin muss jede Ausgabe von der Faltungsschicht i im Zuge des Pooling mit Ausgaben aus anderen Faltungsschichten zusammengeführt werden. Die anderen Faltungsschichten, deren Ausgaben gepoolt werden sollen, hängen von der Anzahl der Elemente in den Filterkernen 520 ab. Alternativ oder zusätzlich muss für die Faltungsschicht i + 1 jede Ausgabe von Schicht i an anderen Stellen in den Eingabeebenen 510 angeordnet werden. Eine solche Organisation der Ausgangswerte zum Zwecke des Pooling kann auch zusätzliche Rechenressourcen erfordern, etwa Lese-/Schreibzugriff, Energie und dergleichen.
  • Dementsprechend integriert das System 700 in bestehenden Systemen zum Zeitschritt 1 die Ergebnisse in die Kondensatoren 908, 910, 912 und 914, sendet das Ergebnis jedoch nicht sofort an die nächste Schicht. Das liegt daran, dass das System 700 Lesestrom von mehreren unterschiedlichen Spalten auf den einen oder die mehreren Integrationskondensatoren 908, 910, 912 und 914 leiten muss. Das System 700 führt eine solche Leitung der Ergebnisse von anderen Spalten in nachfolgenden Zeitschritten aus. Auf die gleiche Weise verwendet das System 700 k Zeitschritte, um die jede k-te Ausgabezeile zu berechnen. Dementsprechend führen bestehende Techniken, die eine zeilenweise Zuordnung verwenden, dazu, dass jede Ausgabezeile k Zeitschritte zum Erzeugen benötigt.
  • 10 zeigt die Operationen, die von dem Array 705 während der Vorwärtsinferenz gemäß bestehenden Techniken ausgeführt werden. In 10 sind die Zeitschritte 1, 2 und 3 gezeigt. In jedem Zeitschritt wird die Eingabe einer Zeile im Kreuzpunkt-Array 705 zugeordnet. In jedem Zeitschritt empfängt jeder der Integratoren (908, 910, 912 und 914) Beiträge von k*p multipliziert-akkumulierten Termen, wobei p die Anzahl der Eingabeebenen 510 ist. Nach k solchen Zeitschritten enthält die Gesamtladung auf einem Integrator alle k*k*p Terme und ist bereit, an die nächste Faltungsschicht ausgegeben zu werden. Außer während der ersten k oder letzten k Zeitschritte erreicht nach jedem Integrationsschritt jeder k-te Integrator der Ausgangsschaltung 720 diesen Zustand und ist dementsprechend bereit, alle Ausgabepixel einer Bildzeile (512-A, 514-A und 516-A) der Faltungsschichtausgabe zu erzeugen. Alle anderen j-ten Integratoren haben in ihrer jeweiligen Integrationsphase je nach Wert von j eine abweichende Phase.
  • Wie beispielsweise in 10 gezeigt, werden im Zeitschritt 1 der Vorwärtsübertragung die ersten Zeilen jeder Eingabeebene 512-A, 514-A, 516-A in die Faltungsschicht eingegeben. Wie gezeigt werden die Kreuzpunkteinheiten 820 des Kreuzpunkt-Array 705 mit den Filtern 520 beladen. Insbesondere werden die Filterkerne 522-A und 522-B in die Kreuzpunkteinheiten 820 geladen, um eine Faltung mit den ersten Zeilen der ersten Eingabeebene 516-A auszuführen. In ähnlicher Weise werden die Filterkerne 524-A und 524-B von einer zweiten Bank von Filterkernen 520 mit der ersten Zeile einer zweiten Eingabeebene 514-A gefaltet und so weiter. Die Ergebnisse der jeweiligen Faltungen werden von der Ausgangsschaltung 720 durch einen Ausgabe-Controller 1110 an einen oder mehrere der Integratoren (908, 910, 912, 914) weitergeleitet.
  • Der Ausgabe-Controller 1110 kann Teil der Ausgangsschaltung 720 oder ein externer Controller sein, der mit der Ausgangsschaltung 720 verbunden ist. Der Ausgabe-Controller 1110 leitet die Ausgabe der Multiplikations-Akkumulations-Operationen von jeder Spalte in dem Array 705 zu einem bestimmten Integrator in der Ausgabeschaltung 720. In einem oder mehreren Beispielen empfängt der Ausgabe-Controller 1110 ein Modussignal, das in jedem Zeitschritt eine Auswahl der Integratoren für jede Spalte bereitstellt. Alternativ wird dem Ausgabe-Controller 1110 ein Modussignal bereitgestellt, das die Auswahl des Integrators für jede Spalte anzeigt, bis alle Faltungsschichten ausgeführt sind. Das Modussignal kann in einem oder mehreren Beispielen ein Bitmuster sein, das die ausgewählten Integratoren für jede Spalte anzeigt.
  • Im Beispiel von 10 werden im Zeitschritt 1 die Ausgaben von den Spalten 808 und 814 in den Integratoren 908 bzw. 912 gespeichert. Im Zeitschritt 2 werden die zweiten Zeilen 512-B, 514-B und 516-B von den Eingabeebenen 510 als Eingabe in dem Kreuzpunkt-Array 705 verwendet. Die Kreuzpunkteinheiten 820 sind wie in Zeitschritt 1 immer noch mit den Kernel-Filtern 520 geladen (10). Im Zeitschritt 2 wählt der Ausgabe-Controller 1110 die gleichen Integratoren 908 und 912 für die Ausgaben der Spalten 810 und 816 (andere Spalten als im Zeitschritt 1) aus. Dementsprechend empfangen die Integratoren 908 und 912 (und andere) in diesem Fall in anderen Zeitschritten Ausgaben von anderen Spalten.
  • In Zeitschritt 3 werden auf ähnliche Weise wie in den ersten beiden Zeitschritten dritte Zeilen 512-C, 514-C und 516-C von den Eingabeebenen 510 als Eingabe in das Kreuzpunkt-Array 705 verwendet. Im Zeitschritt 3 wählt der Ausgabe-Controller 1110 dieselben Integratoren 908 und 912 für die Ausgaben der Spalten 812 und 818 (andere Spalten als in den Zeitschritten 1, 2) aus. Dementsprechend empfangen die Integratoren 908 und 912 (und andere) in diesem Fall in anderen Zeitschritten Ausgaben von anderen Spalten. Auf diese Weise wird im Allgemeinen nach k Zeitschritten eine ganze Zeile in den Ausgabeebenen 530 berechnet.
  • Während oben nur die Berechnungen der ersten beiden Einträge (A und B) aus der ersten Ausgabezeile in der Ausgabeebene 530 beschrieben wurden, sei darauf hingewiesen, dass die anderen Abschnitte der Ausgabeebenen 530 auf ähnliche Weise parallel durch andere Teile des Kreuzpunkt-Array 705 berechnet werden. Noch weiter kann das Kreuzpunkt-Array 705 für weitere Ausgabezeilen (C und D) bei jedem Zeitschritt unter Verwendung der weiteren Integratoren (910, 914, 916 und 918) akkumulieren, wie in 10 gezeigt.
  • Als Ergebnis dessen, dass der Ausgabe-Controller 1110 die Ausgabe des Kreuzpunkt-Array 705 steuert, liegt dementsprechend die gesamte Eingabe in Form einer vollständigen und zusammenhängenden Bildzeile über alle Eingabeebenen vor. Weiter wird nach den ersten kZeitschritten, in denen noch keine Ausgabe verfügbar ist, also vom k + 1-ten Zeitschritt an, bei jedem Zeitschritt eine vollständige und zusammenhängende Bildzeile über alle Ausgabeebenen erzeugt. Dementsprechend können die durch solche Operationen erzeugten Ausgabekarten 530 ohne jegliche Zwischenspeicherung der Neuronenerregungen zu einer nachfolgenden Faltungsschicht geleitet werden. Da Pooling-Operationen wie Summe, Mittelwert und Maximum inkrementell an Daten ausgeführt werden können, wenn sie ankommen, erfordert jede Pooling-Operation nur eine vorübergehende Speicherung, die für die Ausgabebildzeile ausreicht. Diese Zwischenergebnisse werden gespeichert und aktualisiert, wenn jeder Satz von Neuronenerregungen ankommt, bis die RxR-Pooling-Operation abgeschlossen ist, an welchem Punkt der Puffer der Zwischenergebnisse tatsächlich die Ausgabe der Pooling-Schicht ist.
  • Wie bereits erwähnt, besteht eine technische Herausforderung bei bestehenden Techniken darin, dass die Anzahl der Kreuzpunkt-Arrays, die zum Umsetzen eines CNN erforderlich sind, mit einer Anzahl der Eingabedatensätze wie Bildern oder durch die Art des umgesetzten Netzes zunehmen kann. Ausführungsformen der vorliegenden Erfindung erleichtern das zeilenweise Zuordnen, wobei die Anzahl der Gewichtskopien über die CNN-Tiefe hinweg verringert wird. Dementsprechend erleichtern Ausführungsformen der vorliegenden Erfindung den Lastausgleich, um eine Änderung des CNN-Gewichts-Wiederverwendungsfaktors zu berücksichtigen. Ferner erleichtern Ausführungsformen der vorliegenden Erfindung eine zeilenweise Zuordnung mit einer kompakteren Gewichtszuordnung unter Verwendung eines flexiblen Routing von Daten von der Eingangsschaltung 710 zu und durch das Kreuzpunkt-Array 705 und zu der Ausgangsschaltung 720.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung lösen die hierin beschriebenen technischen Lösungen solche technischen Probleme bei den bestehenden technischen Lösungen, indem sie eine zeilenweise Faltung mit Teil-Zeileneingabe ermöglichen, wobei die Eingabedaten zeitlich aufgeteilt werden. In weiteren Ausführungsformen der vorliegenden Erfindung wird eine zeilenweise Faltung durch Teil-Zeileneingabe erleichtert, wobei die Eingabedaten räumlich (in Kreuzpunkt-Arrays) aufgeteilt werden.
  • 11 zeigt eine zeilenweise Faltungszuordnung mit Teil-Zeileneingabe gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung, wobei die Eingabedaten zeitlich aufgeteilt werden. Hier werden die Teilsummen von verschiedenen Eingangszeilensegmenten auf getrennten Sätzen von Kondensatoren gespeichert. In dem gezeigten Beispiel wird eine erste Teilmenge 1210 von Eingabedaten aus einer ersten Zeile einer ersten Menge von Kondensatoren (oder Integratoren) 1230 zugeordnet; und eine zweite Teilmenge 1220 der Eingabedaten aus der ersten Zeile wird einer zweiten Menge von Kondensatoren 1240 zugeordnet. Für eine solche Zuordnung werden die Partitionen mit einer Formel bestimmt: L = D*(Eingabebildbreite/N + k - Schrittweite). Hier ist N eine Anzahl der Kopien der Kondensatoren, die verwendet werden, um die Wiederverwendung des Kreuzpunkt-Array 705 für die Berechnungen für die Vorwärtsinferenz zu erleichtern. N kann auf Grundlage der Bildbreite vorbestimmt werden. Zum Beispiel kann N erhöht werden, wenn die Bildgröße abnimmt, um die Anzahl der Gewichtskopien zu verringern und den Wiederverwendungsfaktor gleich zu halten. In einem faltenden neuronalen Netz (CNN) werden Gewichtskerne über Eingabebilder gefaltet, d.h. dieselben Gewichte werden mehrere Male mit unterschiedlichen Abschnitten der Eingabebilder wiederverwendet, um die Ausgabe zu erzeugen. Die Häufigkeit, mit der die Gewichte wiederverwendet werden, wird als Wiederverwendungsfaktor bezeichnet.
  • Ferner ist die Schrittweite ein vorbestimmter Parameter, der definiert, wie viel Überlappung innerhalb der Teilmengen der ersten Zeile existiert. Überlappung = (k - Schrittweite), wobei k die Kern-Größe ist. In dem gezeigten Beispiel können die zwei Sätze von Kondensatoren 1230 und 1240 die Gewichte wiederverwenden, die in dem Kreuzpunkt-Array 705 gespeichert sind. Damit die Wiederverwendung funktioniert, werden die Eingabedaten so zugeordnet, dass sie eine zeilenweise Faltung aufweisen, die von den Kreuzpunkteinheiten 820 berechnet wird. Für eine solche Zuordnung ist das berechnete L die Anzahl von Eingabedatenelementen, die in das Kreuzpunkt-Array 705 eingegeben werden, wobei jedes sequentielle Datenelement von einer sequentiellen Eingabeebene stammt. Zum Beispiel ist L1 = D1(1,1), L2 = D2(1,1), L3 = D3(1,1) im gezeigten Beispielszenario mit D = 3 Eingabeebenen und L = 15, k = 3, Schrittweite = 1 und N = 2. Hier bezeichnet die Notation D1(1,1) das Element aus der ersten Zeile und ersten Spalte in D1. Auf die gleiche Weise gilt L4 = D1(1,2), L5 = D2(1,2) und L6 = D3(1,2). Das Kreuzpunkt-Array 705 ist mit N = 2 Kopien der Gewichte von den Kernen 520 konfiguriert, wobei die Kopien um D*Schrittweite Zeilen (oder Spalten) voneinander versetzt sind.
  • Nachdem die Datenelemente wie hierin beschrieben eingegeben wurden, führen die Kreuzpunkteinheiten 820 speicherinterne Berechnungen durch, um Teilsummen der Produkte der gespeicherten Gewichte und der Datenelemente zu bestimmen. Die Berechnungen werden im Speicher auf analoge Weise ausgeführt. Die resultierenden Teilsummen werden in den Kondensatoren in den Sätzen 1230, 1240 gespeichert.
  • Die Anzahl der Kondensatoren in jedem der Sätze von Kondensatoren 2130, 2140 nimmt zu, wenn die Anzahl der Kopien der Gewichte verringert wird. Bei einer oder mehreren Ausführungsformen der vorliegenden Erfindung werden zur Verbesserung der Effizienz der Kondensatorfläche in der Ausgangsschaltung 720 die Teilsummen an den Zielkondensator (Eingangsseite des Kreuzpunkt-Array 705 der nächsten Schicht) übertragen. Obwohl die Überlappung zu redundanter Berechnung führt, führt die durch die Wiederverwendung erzielte Verbesserung der Effizienz des Kreuzpunkt-Array 705 zu einer verringerten Anzahl von Kreuzpunkt-Arrays 705, die zum Umsetzen des CNN erforderlich sind.
  • 12 zeigt eine zeilenweise Faltungszuordnung mit vollständiger oder Teil-Zeileneingabe gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung, wobei die Eingabedaten zeitlich aufgeteilt werden. Das gezeigte Zuordnungsschema erleichtert eine noch kompaktere Zuordnung durch Verwendung mehrerer wiederverwendeter Gewichtskopien, die sich über mehrere Kreuzpunkt-Arrays 705 erstrecken. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung ist die Anzahl der Ausgangsbildkanäle F, und die Anzahl der Eingangsbildkanäle ist D. Hier hat jede Gruppe von Gewichten eine Schrittweite mit einem Versatz von (D*Schrittweite) derart, dass sie die Abmessung (Eingabebildbreite*D) überspannt. Nach jedem Satz solcher (Ausgabebildbreite) Kopien von Gewichten wird der nächste Satz ohne Versatz (D*Schrittweite) konfiguriert. Der Versatz wird innerhalb jeder Gruppe verwendet, um die Kopien der Gewichte in dieser Gruppe zu trennen. Eine Gruppe solcher Gewichtskopien kann getrennte Kreuzpunkt-Arrays 705A und 705B überspannen. In dem gezeigten Beispiel in 12 weist eine Gruppe 1280 zwei Kopien von Gewichten 1282 und 1284, die in einem ersten Kreuzpunkt-Array 705A gespeichert sind, und die dritte Kopie von Gewichten 1286 auf, die in einem zweiten Kreuzpunkt-Array 705B gespeichert ist.
  • Es versteht sich, dass die Abmessungen in den Figuren und in den hierin beschriebenen Beispielen in einer oder mehreren Ausführungsformen der vorliegenden Erfindung schwanken können. Ferner kann die Anzahl der Kreuzpunkt-Arrays 705 in einer oder mehreren Ausführungsformen der vorliegenden Erfindung auch von jener in den hierin beschriebenen Beispielen abweichen.
  • 13 zeigt eine weitere zeilenweise Faltungszuordnung mit Teil-Zeileneingabe gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung, wobei die Eingabedaten räumlich aufgeteilt werden. Hier wird ein einzelner Satz von Kondensatoren 1320 verwendet, um resultierende Teilsummen auf Grundlage der Kerngewichte zu berechnen, die in dem Kreuzpunkt-Array 705 gespeichert sind. Die Eingabedatenelemente werden so aufgeteilt, dass Teilmengen einer einzelnen Zeile an getrennte Kreuzpunkt-Arrays 705 gesendet werden, die eine gegebene CNN-Schicht umsetzen. Die auf den Kondensatoren 1320 akkumulierte Ladung, die der Teilsumme entspricht, wird an eine Eingangsschaltung 710 eines Systems 700 gesendet, das eine nächste Schicht des CNN umsetzt.
  • Die Eingangsschaltung 710 führt die Teilsummen zusammen und organisiert diese Eingabedaten für die Gewichte, die in den getrennten Kreuzpunkt-Arrays 705 für die nächste Schicht gespeichert sind. Zum Beispiel leitet die Eingangsschaltung 710 die Ausgaben, die zu den Eingabedatenelementen 1310 gehören, zu denselben Kerngewichten in der nächsten Schicht wie die Ausgaben, die zu den Eingabedatenelementen 1320 gehören.
  • Wenn (Bildgröße)*(Anzahl der Eingabekanäle) im Vergleich zu der Menge der Kerngewichte (Kerngröße * Anzahl der Eingabekanäle) groß ist, kann gezeigt werden, dass das durch die Eingabeschaltung 710 bereitgestellte flexible Routing wie oben beschrieben es erleichtert, dass Gewichte für unterschiedliche Ausgangskanäle im Vergleich zu bestehenden Lösungen kompakter zugeordnet werden. Die Kosten für das Speichern und Neuordnen der Ausgaben von einer Schicht während der Eingabe in die nächste Schicht sind niedriger als bei den bestehenden zeilenweisen Zuordnungstechniken. Dementsprechend erleichtern eine oder mehrere Ausführungsformen der vorliegenden Erfindung das Konfigurieren eines flexiblen Signal-Routing-Schemas, so dass die Skalierbarkeit der bestehenden zeilenweisen Zuordnungstechniken verbessert wird. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung kann das CNN entsprechend den besonderen Betriebsdetails jedes Netzes feinabgestimmt werden. Beispielsweise kann eine CNN-Kerngröße oder eine Anzahl der CNN-Kerne angepasst werden, um die Zuordnung in analoge Kreuzpunkt-Arrays weiter zu optimieren.
  • Es sollte beachtet werden, dass die Größen der in den Figuren hierin gezeigten Matrizen nur Beispiele sind und in einem oder mehreren Beispielen andere Größen verwendet werden können. Ferner sollte beachtet werden, dass das CNN während der Vorwärtsinferenzoperationen bereits trainiert ist und dass die Ausführungsformen der vorliegenden Erfindung unabhängig von Techniken anwendbar sind, die zum Trainieren des CNN verwendet werden.
  • Auf diese Weise ermöglichen Ausführungsformen der vorliegenden Erfindung eine zeilenweise Zuordnung für Vorwärtsinferenzoperationen eines trainierten CNN, wobei die Zuordnung kompakt so ausgeführt werden kann, dass Kreuzpunkt-Arrays und Hilfsschaltungen wiederverwendet werden, um die Umsetzung eines CNN jeder Größenordnung zu erleichtern.
  • Bei einer oder mehreren Ausführungsformen der vorliegenden Erfindung werden die beschriebenen technischen Lösungen durch eine elektronische Schaltung umgesetzt, die ein Kreuzpunkt-Array aus resistiven Speicherelementen enthält. Das Array gibt einen Vektor von Stromausgaben aus, der einem analogen Vektor-Matrix-Produkt (i) eines Vektors von Spannungseingaben in das Array, der einen Vektor von analogen Eingabewerten codiert, und (ii) einer Matrix von analogen Widerstandsgewichten in dem Array entspricht. Die elektronische Schaltung 700 enthält ferner Hilfsschaltungen 712, 722 und Eingangsschaltungen 710 und Ausgangsschaltungen 720, die gemeinsam Akkumulationsdrähte und -schaltungen enthalten, die einen Strom von einer dedizierten Teilmenge der resistiven Speicherelemente aggregieren. Die Hilfsschaltung 722 enthält Integrationskondensatoren, wobei jeder der Integrationskondensatoren elektrisch schaltbar ist, um Strom von einem der Akkumulationsdrähte während eines einzelnen Integrationsschritts zu aggregieren. Die Ausgangsschaltung 720 wandelt in geeigneter Weise eine integrierte Ladung von einer Teilmenge der Integrationskondensatoren, die über eine vorbestimmte Anzahl von Integrationsschritten akkumuliert wurde, entweder als analoge Zeitspanne oder als digitale Darstellung mit Binärziffern um und leitet diese weiter. Die resistiven Speicherelemente sind so angeordnet, dass sie Spalten (Zeilen) von synaptischen Gewichtskernen einer gegebenen Schicht eines faltenden neuronalen Netzes umsetzen.
  • Die Akkumulation über die vorbestimmte Anzahl von Integrationsschritten setzt Multiplikations-Akkumulations-Operationen über mehrere Teilzeilen (-spalten) der Gewichtskerne um, während die Eingangsneuronenerregungen an die Schicht des faltenden neuronalen Netzes bei jeder Iteration der Integration zeilenweise (spaltenweise) eingegeben werden. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung werden die Eingabe-Neuronenerregungen der ersten Schicht immer jeweils für eine volle Zeile (Spalte) eingegeben, während nachfolgende Schichten von Eingabe-Neuronenerregungen in mehrere Teilzeilen (-spalten) aufgeteilt und teilweise in einem lokalen analogen Speicher (z.B. Kondensatoren) gespeichert werden können, um in Kreuzpunkt-Arrays über mehrere Integrationszyklen verarbeitet zu werden.
  • Die integrierte Ladung, die eine vollständige und/oder Teil-Ausgangserregung wiedergibt, wird geeignet umgewandelt und erst übertragen, nachdem alle Zeilen (Spalten) des Gewichtskerns vollständig integriert wurden. Teilsummen von mehreren Kreuzschienenarrays werden flexibel so geroutet, dass sie in einem der Integrationskondensatoren zusammengeführt, nachfolgend in die volle Ausgangserregung umgewandelt und dann übertragen werden, nachdem alle Teilsummen vollständig integriert wurden. Die integrierte Ladung auf den Integrationskondensatoren entspricht Ausgangserregungen, die geeignet umgewandelt werden. Ferner wird ein geeignet gepooltes Ergebnis (z.B. das Maximum, die Summe oder der Durchschnitt der Ausgangserregungen) lokal berechnet und erst übertragen, nachdem alle relevanten Gewichtskerne vollständig integriert wurden.
  • Bei den vorliegenden technischen Lösungen kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Integrationsstufe handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden technischen Lösungen auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden technischen Lösungen kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der fern angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden technischen Lösungen durchzuführen.
  • Aspekte der vorliegenden technischen Lösungen sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der technischen Lösungen beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden technischen Lösungen. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen zeigen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in den Blöcken angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Ein zweiter Vorgang kann „als Reaktion auf“ einen ersten Vorgang bezeichnet werden, unabhängig davon, ob der zweite Vorgang direkt oder indirekt aus dem ersten Vorgang resultiert. Der zweite Vorgang kann zu einem wesentlich späteren Zeitpunkt als der erste Vorgang erfolgen und immer noch als Reaktion auf den ersten Vorgang erfolgen. In ähnlicher Weise kann der zweite Vorgang als Reaktion auf den ersten Vorgang bezeichnet werden, selbst wenn dazwischenliegende Vorgänge zwischen dem ersten Vorgang und dem zweiten Vorgang stattfinden, und selbst wenn eine oder mehrere der dazwischenliegenden Vorgänge direkt bewirken, dass der zweite Vorgang ausgeführt wird. Beispielsweise kann ein zweiter Vorgang eine Reaktion auf einen ersten Vorgang sein, wenn der erste Vorgang eine Flag setzt, und ein dritter Vorgang später den zweiten Vorgang einleitet, wenn die Flag gesetzt ist.
  • Als Erklärung der Verwendungsweise und als öffentliche Bekanntgabe sind die Ausdrücke "mindestens eines von <A>, <B>, ... und <N>„ oder „mindestens eines von <A>, <B>, ... und <N> oder Kombinationen davon“ oder „<A>, <B>, ... und/oder <N>„ im weitesten Sinne auszulegen, was alle anderen impliziten Definitionen im Vorangehenden oder Folgenden ersetzt, sofern nicht ausdrücklich das Gegenteil behauptet wird, und bedeuten ein oder mehrere Elemente, die aus der Gruppe ausgewählt sind, die A, B, ... und N aufweist. Mit anderen Worten bezeichnen die Ausdrücke jede Kombination aus einem oder mehreren der Elemente A, B, ... oder N, einschließlich eines Elements allein oder des einen Elements in Kombination mit einem oder mehreren der anderen Elemente, was als Zusammenschluss auch zusätzliche, nicht aufgeführte Elemente enthalten kann.
  • Es versteht sich auch, dass alle Module, Einheiten, Komponenten, Server, Computer, Terminals oder Einheiten, die hierin beispielhaft beschrieben sind und die Anweisungen ausführen, von einem Computer lesbare Medien wie (austauschbare und/oder nicht austauschbare) Speichermedien, Computerspeichermedien oder Datenspeichereinheiten wie zum Beispiel Magnetplatten, optische Platten oder Bänder umfassen können oder darauf Zugriff haben. Computerspeichermedien können flüchtige und nichtflüchtige, austauschbare und nicht austauschbare Medien umfassen, die in einem beliebigen Verfahren oder einer beliebigen Technologie zum Speichern von Informationen umgesetzt sind, wie beispielsweise von einem Computer lesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten. Solche Computerspeichermedien können Teil der Einheit oder daraus zugänglich oder damit verbindbar sein. Jede hierin beschriebene Anwendung oder jedes Modul kann unter Verwendung von von einem Computer lesbaren/ausführbaren Anweisungen umgesetzt sein, die von solchen von einem Computer lesbaren Medien gespeichert oder anderweitig gehalten werden können.
  • Die Beschreibungen der verschiedenen Ausführungsformen der technischen Merkmale hierin wurden zu Zwecken der Veranschaulichung angegeben, sind aber nicht als erschöpfend oder auf die offenbarten Ausführungsformen beschränkt anzusehen. Viele Modifikationen und Varianten sind für Fachleute offensichtlich, ohne vom Umfang der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde ausgewählt, um die Grundsätze der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber Technologien, die am Markt vorhanden sind, am besten zu beschreiben oder anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.
  • In einer hierin beschriebenen bevorzugten Ausführungsform der vorliegenden Erfindung ist eine elektronische Schaltung vorgesehen, aufweisend: ein Array von resistiven Speicherelementen, wobei das Array einen Vektor von Stromausgaben bereitstellt, der gleich einem analogen Vektor-Matrix-Produkt (i) eines Vektors von Spannungseingaben in das Array, die einen Vektor von analogen Eingabewerten codieren und (ii) einer Matrix von analogen Widerstandsgewichten in dem Array ist; Integrationskondensatoren, wobei jeder der Integrationskondensatoren elektrisch so schaltbar ist, dass er während eines einzigen Integrationsschritts Strom von einem einer Mehrzahl von Akkumulationsdrähten aggregiert; Akkumulationsdrähten und -schaltungen, die einen Strom von einer dedizierten Teilmenge der resistiven Speicherelemente aggregieren, indem Teil-Ausgangserregungen zu einem Integrationskondensator geleitet werden, der eine integrierte Ladung akkumuliert; und eine Datenausgabeschaltung, die ermöglicht, dass eine integrierte Ladung von einer Teilmenge der Integrationskondensatoren, die über eine Mehrzahl von Integrationsschritten akkumuliert wurde, geeignet entweder als analoge Zeitspanne oder als digitale Darstellung unter Verwendung von Binärziffern umgewandelt und übertragen wird, wobei die resistiven Speicherelemente so angeordnet sind, dass sie Vektoren synaptischer Gewichtskerne einer gegebenen Schicht eines faltenden neuronalen Netzes umsetzen. Die resistiven Speicherelemente sind vorzugsweise nichtflüchtige Speichereinheiten. Die Teilmenge der resistiven Speicherelemente kann einer oder mehreren Spalten des Array entsprechen. Die Teilmenge der resistiven Speicherelemente kann einer oder mehreren Zeilen des Array entsprechen. In einer hierin beschriebenen Ausführungsform der vorliegenden Erfindung ist ein Verfahren zum Ausführen von Berechnungen eines trainierten faltenden neuronalen Netzes (CNN) unter Verwendung der Schaltung vorgesehen, wie hierin zuvor in diesem Abschnitt beschrieben, wobei das Verfahren aufweist: Ausführen von Berechnungen durch die resistiven Speicherelemente des Kreuzpunkt-Array durch Iterieren eines Satzes von Operationen für eine vorbestimmte Anzahl von Malen, aufweisend: Aufteilen, in die mehreren Teilvektoren, jedes der Vektoren von analogen Eingabewerten; Akkumulieren, in einem analogen Speicher, von Ausgangs-Teilerregungen, die jedem der mehreren Teilvektoren entsprechen; und Zusammenführen der Ausgangs-Teilerregungen durch Leiten der Ausgangs-Teilerregungen zu einem Integrationskondensator, der eine integrierte Ladung akkumuliert; und Übertragen der integrierten Ladung auf die Mehrzahl von Integrationskondensatoren, die einer Mehrzahl von Ausgangserregungen entsprechen. Die integrierte Ladung auf der Mehrzahl von Integrationskondensatoren wird vorzugsweise vor dem Übertragen der integrierten Ladung lokal gepoolt. Die Kreuzpunkteinheiten können so angeordnet sein, dass sie eine oder mehrere Zeilen der Faltungskerne einer gegebenen Schicht des faltenden neuronalen Netzes umsetzen, wobei die Eingabedaten Neuronenerregungen an die Schicht des faltenden neuronalen Netzes entsprechen, die spaltenweise eingegeben werden. Die Kreuzpunkteinheiten können so angeordnet sein, dass sie eine oder mehrere Spalten der Faltungskerne einer gegebenen Schicht des faltenden neuronalen Netzes umsetzen, und wobei der Vektor von Eingabedaten Neuronenerregungen an die gegebene Schicht des faltenden neuronalen Netzes entspricht, die zeilenweise aus den Eingabedaten eingegeben werden.

Claims (18)

  1. Von einem Computer umgesetztes Verfahren zum Umsetzen eines faltenden neuronalen Netzes (CNN) unter Verwendung eines Kreuzpunkt-Array, das Verfahren aufweisend: Konfigurieren des Kreuzpunkt-Array, wobei das Kreuzpunkt-Array einer Faltungsschicht in dem CNN entspricht, durch Speichern eines oder mehrerer Faltungskerne der Faltungsschicht in einer oder mehreren Kreuzpunkteinheiten des Kreuzpunkt-Array; Ausführen von Berechnungen für das CNN über das Kreuzpunkt-Array durch Iterieren eines Satzes von Operationen für eine vorbestimmte Anzahl von Malen, aufweisend: Übertragen von Spannungsimpulsen, die einem Teilbereich eines Vektors von Eingabedaten der Faltungsschicht entsprechen, an das Kreuzpunkt-Array; Ausgeben von elektrischen Strömen, die einem Ausführen von Multiplikationsoperationen an der einen oder den mehreren Kreuzpunkteinheiten in dem Kreuzpunkt-Array entsprechen, wobei die elektrischen Ströme auf Gewichtswerten, die von den Kreuzpunkteinheiten gespeichert werden, und den Spannungsimpulsen aus den Eingabedaten beruhen; und Akkumulieren, durch einen Satz von Integratoren, einer elektrischen Ladung auf Grundlage des ausgegebenen elektrischen Stroms von den Kreuzpunkteinheiten; und Ausgeben, durch den Satz von Integratoren, der akkumulierten Ladung nach dem Iterieren für die vorbestimmte Anzahl von Malen, wobei die akkumulierte Ladung einem Multiplikations-Additions-Ergebnis des Vektors von Eingabedaten und des einen oder der mehreren Faltungskerne entspricht.
  2. Verfahren nach Anspruch 1, wobei das Ausgeben der akkumulierten Ladung in dem Satz von Integratoren ein Pooling der akkumulierten Ladung aufweist.
  3. Verfahren nach Anspruch 1, wobei der Teilbereich jedes der Vektoren von Eingabedaten dem Satz von Integratoren zugeordnet wird.
  4. Verfahren nach Anspruch 1, wobei das Kreuzpunkt-Array aus einer Mehrzahl von Kreuzpunkt-Arrays besteht, und wobei ein erster Teilbereich des Vektors von Eingabedaten zu einem ersten Kreuzpunkt-Array übertragen wird und ein zweiter Teilbereich des Vektors von Eingabedaten zu einem zweiten Kreuzpunkt-Array übertragen wird.
  5. Verfahren nach Anspruch 4, wobei das Akkumulieren der elektrischen Ladung durch den Satz von Integratoren aufweist: Akkumulieren, durch den Satz von Integratoren des ersten Kreuzpunkt-Array, der elektrischen Ladungen, die durch den Satz von Integratoren des zweiten Kreuzpunkt-Array akkumuliert wurden.
  6. Verfahren nach Anspruch 1, wobei die Kreuzpunkteinheiten so angeordnet sind, dass sie eine oder mehrere Spalten eines Faltungskerns einer gegebenen Schicht des CNN umsetzen, und wobei der Vektor von Eingabedaten Neuronenerregungen an die gegebene Schicht des CNN entspricht, die zeilenweise aus den Eingabedaten eingegeben werden.
  7. Verfahren nach Anspruch 6, wobei die von einem Integrator aus dem Satz von Integratoren akkumulierte elektrische Ladung einer Ausgangserregung gemäß der gegebenen Schicht des CNN entspricht, wobei die Ausgangserregung erst umgewandelt und übertragen wird, nachdem alle Zeilen des Faltungskerns integriert wurden.
  8. Verfahren nach Anspruch 1, wobei die Kreuzpunkteinheiten so angeordnet sind, dass sie eine oder mehrere Zeilen eines Faltungskerns einer gegebenen Schicht des CNN umsetzen, und wobei die Eingabedaten Neuronenerregungen an die Schicht des CNN entsprechen, die spaltenweise eingegeben werden.
  9. Verfahren nach Anspruch 8, wobei die von einem Integrator aus dem Satz von Integratoren akkumulierte elektrische Ladung einer Ausgangserregung gemäß der gegebenen Schicht des CNN entspricht, wobei die Ausgangserregung erst umgewandelt und übertragen wird, nachdem alle Spalten des Faltungskerns integriert wurden.
  10. Elektronische Schaltung zum Ausführen von Berechnungen eines trainierten faltenden neuronalen Netzes (CNN), die Schaltung aufweisend: ein Kreuzpunkt-Array; eine Ausgangsschaltung, die einen Satz von Integratoren aufweist; Schaltungen, die das Kreuzpunkt-Array entsprechend einer Faltungsschicht in dem CNN konfigurieren, indem sie einen oder mehrere Faltungskerne der Faltungsschicht in einer oder mehreren Kreuzpunkteinheiten des Kreuzpunkt-Array speichern; und, Schaltung, die für eine vorbestimmte Anzahl von Malen einen Satz von Operationen iteriert, aufweisend: Übertragen von Spannungsimpulsen, die einem Teilbereich eines Vektors von Eingabedaten der Faltungsschicht entsprechen, an das Kreuzpunkt-Array; Ausgeben von elektrischen Strömen, die einem Ausführen von Multiplikationsoperationen an der einen oder den mehreren Kreuzpunkteinheiten in dem Kreuzpunkt-Array entsprechen, wobei der elektrische Strom auf Gewichtswerten, die von den Kreuzpunkteinheiten gespeichert werden, und den Spannungsimpulsen aus den Eingabedaten beruht; und Akkumulieren, durch den Satz von Integratoren, einer elektrischen Ladung auf Grundlage des ausgegebenen elektrischen Stroms von den Kreuzpunkteinheiten; und Ausgeben, durch den Satz von Integratoren, der akkumulierten Ladung nach dem Iterieren für die vorbestimmte Anzahl von Malen, wobei die akkumulierte Ladung einem Multiplikations-Additions-Ergebnis des Vektors von Eingabedaten und des einen oder der mehreren Faltungskerne entspricht.
  11. Schaltung nach Anspruch 10, wobei das Ausgeben der akkumulierten Ladung in dem Satz von Integratoren ein Pooling der akkumulierten Ladung aufweist.
  12. Schaltung nach Anspruch 10, wobei der Teilbereich eines jeden Vektors von Eingabedaten dem Satz von Integratoren zugeordnet ist.
  13. Schaltung nach Anspruch 10, wobei das Kreuzpunkt-Array aus einer Mehrzahl von Kreuzpunkt-Arrays besteht, und wobei ein erster Teilbereich des Vektors von Eingabedaten zu einem ersten Kreuzpunkt-Array übertragen wird und ein zweiter Teilbereich des Vektors von Eingabedaten zu einem zweiten Kreuzpunkt-Array übertragen wird.
  14. Schaltung nach Anspruch 13, wobei das Akkumulieren der elektrischen Ladung durch den Satz von Integratoren ein Akkumulieren, durch den Satz von Integratoren des ersten Kreuzpunkt-Array, der elektrischen Ladungen aufweist, die durch den Satz von Integratoren des zweiten Kreuzpunkt-Array akkumuliert wurden.
  15. Schaltung nach Anspruch 10, wobei die Kreuzpunkteinheiten so angeordnet sind, dass sie eine oder mehrere Spalten eines Faltungskerns einer gegebenen Schicht des CNN umsetzen, und wobei der Vektor von Eingabedaten Neuronenerregungen an die gegebene Schicht des CNN entspricht, die zeilenweise aus den Eingabedaten eingegeben werden.
  16. Schaltung nach Anspruch 15, wobei die von einem Integrator aus dem Satz von Integratoren akkumulierte elektrische Ladung einer Ausgangserregung gemäß der gegebenen Schicht des CNN entspricht, wobei die Ausgangserregung erst umgewandelt und übertragen wird, nachdem alle Zeilen des Faltungskerns integriert wurden.
  17. Schaltung nach Anspruch 10, wobei die Kreuzpunkteinheiten so angeordnet sind, dass sie eine oder mehrere Zeilen eines Faltungskerns einer gegebenen Schicht des CNN umsetzen, und wobei die Eingabedaten Neuronenerregungen an die Schicht des CNN entsprechen, die spaltenweise eingegeben werden.
  18. Schaltung nach Anspruch 17, wobei die von einem Integrator aus dem Satz von Integratoren akkumulierte elektrische Ladung einer Ausgangserregung gemäß der gegebenen Schicht des CNN entspricht, wobei die Ausgangserregung erst umgewandelt und übertragen wird, nachdem alle Spalten des Faltungskerns integriert wurden.
DE112021002939.8T 2020-05-27 2021-05-13 Effiziente kachel-zuordnung für zeilenweise zuordnung in neuronalen faltungsnetzen zur analogen inferenz in künstliche-intelligenz-netzen Pending DE112021002939T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/884,128 2020-05-27
US16/884,128 US11562240B2 (en) 2020-05-27 2020-05-27 Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference
PCT/IB2021/054105 WO2021240286A1 (en) 2020-05-27 2021-05-13 Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference

Publications (1)

Publication Number Publication Date
DE112021002939T5 true DE112021002939T5 (de) 2023-03-16

Family

ID=78706397

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021002939.8T Pending DE112021002939T5 (de) 2020-05-27 2021-05-13 Effiziente kachel-zuordnung für zeilenweise zuordnung in neuronalen faltungsnetzen zur analogen inferenz in künstliche-intelligenz-netzen

Country Status (10)

Country Link
US (2) US11562240B2 (de)
JP (1) JP2023526915A (de)
KR (1) KR20230005309A (de)
CN (1) CN115699028A (de)
AU (1) AU2021281628B2 (de)
CA (1) CA3178030A1 (de)
DE (1) DE112021002939T5 (de)
GB (1) GB2610774A (de)
IL (1) IL297331A (de)
WO (1) WO2021240286A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11562240B2 (en) 2020-05-27 2023-01-24 International Business Machines Corporation Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7016529B2 (en) 2002-03-15 2006-03-21 Microsoft Corporation System and method facilitating pattern recognition
FR3025344B1 (fr) 2014-08-28 2017-11-24 Commissariat Energie Atomique Reseau de neurones convolutionnels
US10885429B2 (en) 2015-07-06 2021-01-05 University Of Dayton On-chip training of memristor crossbar neuromorphic processing systems
US10332004B2 (en) 2015-07-13 2019-06-25 Denso Corporation Memristive neuromorphic circuit and method for training the memristive neuromorphic circuit
US11475269B2 (en) 2015-12-15 2022-10-18 Analog Devices, Inc. Convolutional neural network
US10216703B2 (en) 2016-02-08 2019-02-26 Spero Devices, Inc. Analog co-processor
US10528864B2 (en) 2016-08-11 2020-01-07 Nvidia Corporation Sparse convolutional neural network accelerator
US9646243B1 (en) * 2016-09-12 2017-05-09 International Business Machines Corporation Convolutional neural networks using resistive processing unit array
IL281321B (en) 2016-10-04 2022-07-01 Magic Leap Inc Efficient data layouts for convolutional neural networks
KR101735366B1 (ko) 2016-11-14 2017-05-15 호성숙 꿀 성분이 함유된 가공인삼 제조방법
CN108304922B (zh) * 2017-01-13 2020-12-15 华为技术有限公司 用于神经网络计算的计算设备和计算方法
US11315009B2 (en) * 2017-03-03 2022-04-26 Hewlett Packard Enterprise Development Lp Analog multiplier-accumulators
US10452744B2 (en) 2017-03-27 2019-10-22 Oracle International Corporation Memory management for sparse matrix multiplication
TWI680409B (zh) 2017-07-08 2019-12-21 英屬開曼群島商意騰科技股份有限公司 適用於人工神經網路之矩陣及向量相乘的方法
CN107424647B (zh) 2017-08-03 2020-08-04 电子科技大学 一种基于忆阻器的语音存储与分类系统
US11263522B2 (en) 2017-09-08 2022-03-01 Analog Devices, Inc. Analog switched-capacitor neural network
WO2019133829A1 (en) 2017-12-29 2019-07-04 Spero Devices, Inc. Digital architecture supporting analog co-processor
CN108182471B (zh) 2018-01-24 2022-02-15 上海岳芯电子科技有限公司 一种卷积神经网络推理加速器及方法
US10692570B2 (en) * 2018-07-11 2020-06-23 Sandisk Technologies Llc Neural network matrix multiplication in memory cells
JP2020035502A (ja) 2018-08-28 2020-03-05 キオクシア株式会社 半導体集積回路
US11410025B2 (en) * 2018-09-07 2022-08-09 Tetramem Inc. Implementing a multi-layer neural network using crossbar array
CN109460817B (zh) 2018-09-11 2021-08-03 华中科技大学 一种基于非易失存储器的卷积神经网络片上学习系统
US10642922B2 (en) 2018-09-28 2020-05-05 Intel Corporation Binary, ternary and bit serial compute-in-memory circuits
US10825509B2 (en) 2018-09-28 2020-11-03 Intel Corporation Full-rail digital read compute-in-memory circuit
US20200117986A1 (en) 2018-10-12 2020-04-16 International Business Machines Corporation Efficient processing of convolutional neural network layers using analog-memory-based hardware
CN109524039B (zh) 2018-11-21 2020-10-09 复旦大学 一种忆阻器阻态数目扩展的结构及相关方法
US11562240B2 (en) 2020-05-27 2023-01-24 International Business Machines Corporation Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference

Also Published As

Publication number Publication date
US11868893B2 (en) 2024-01-09
WO2021240286A1 (en) 2021-12-02
GB202218705D0 (en) 2023-01-25
JP2023526915A (ja) 2023-06-26
US20230100139A1 (en) 2023-03-30
KR20230005309A (ko) 2023-01-09
GB2610774A (en) 2023-03-15
CA3178030A1 (en) 2021-12-02
AU2021281628B2 (en) 2023-04-27
CN115699028A (zh) 2023-02-03
US11562240B2 (en) 2023-01-24
US20210374514A1 (en) 2021-12-02
IL297331A (en) 2022-12-01
AU2021281628A1 (en) 2022-11-10

Similar Documents

Publication Publication Date Title
DE112018005726B4 (de) Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke
DE112016003245T5 (de) Resistive Verarbeitungseinheit
US11861489B2 (en) Convolutional neural network on-chip learning system based on non-volatile memory
DE112018000272T5 (de) Resistive Verarbeitungseinheit mit hysteretischen Aktualisierungen zum Trainieren neuronaler Netze
US10740671B2 (en) Convolutional neural networks using resistive processing unit array
US10956815B2 (en) Killing asymmetric resistive processing units for neural network training
DE102019116305A1 (de) Pipelining zur verbesserung der inferenzgenauigkeit neuronaler netze
US20200117986A1 (en) Efficient processing of convolutional neural network layers using analog-memory-based hardware
DE112020003498T5 (de) Erzeugung von trainings- und validierungsdaten für maschinelles lernen
DE112018004223T5 (de) Trainieren künstlicher neuronaler Netze
DE102018129424A1 (de) System und verfahren zum lernen der struktur von tiefen neuronalen netzwerken
DE112019000226T5 (de) Neuromorpher chip zum aktualisieren präziser synaptischer gewichtswerte
US11087204B2 (en) Resistive processing unit with multiple weight readers
DE112018004992B4 (de) Übertragung synaptischer gewichte zwischen leitfähigkeitspaaren mitpolaritätsumkehr zum verringern fester einheitenasymmetrien
US20210374546A1 (en) Row-by-row convolutional neural network mapping for analog artificial intelligence network training
DE112019005119T5 (de) Abgleichtechniken zum angleichen des symmetriepunktes als null-gewichtungspunkt in analogen kreuzungspunktanordnungen
DE112020002186T5 (de) Dnn-training mit asymmetrischen rpu-einheiten
Ji et al. Adaptive sparse coding based on memristive neural network with applications
DE112020000929T5 (de) Programmieren eines phasenwechselspeichersin einer geschlossenen schleife
DE112020002693T5 (de) Verringerung der berechnung in neuralen netzwerken mit selbstmodifizierendem code
DE112020003055T5 (de) Neuanordnen der operationen eines neuronalen netzwerks für parallele ausführung
DE112021002939T5 (de) Effiziente kachel-zuordnung für zeilenweise zuordnung in neuronalen faltungsnetzen zur analogen inferenz in künstliche-intelligenz-netzen
DE102021108823A1 (de) System für eine flexible leitwerttraverse
DE102020106867A1 (de) Vektor-matrix-multiplikation mit 3d-nand
DE112020005613T5 (de) Neuromorphe Einheit mit Kreuzschienen-Array-Struktur

Legal Events

Date Code Title Description
R012 Request for examination validly filed