DE112018004223T5 - Trainieren künstlicher neuronaler Netze - Google Patents

Trainieren künstlicher neuronaler Netze Download PDF

Info

Publication number
DE112018004223T5
DE112018004223T5 DE112018004223.5T DE112018004223T DE112018004223T5 DE 112018004223 T5 DE112018004223 T5 DE 112018004223T5 DE 112018004223 T DE112018004223 T DE 112018004223T DE 112018004223 T5 DE112018004223 T5 DE 112018004223T5
Authority
DE
Germany
Prior art keywords
weight
unit
digital
memristive
values
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.)
Granted
Application number
DE112018004223.5T
Other languages
English (en)
Inventor
Manuel Le-Gallo-Bourdeau
Abu Sebastian
Irem Boybat Kara
Evangelos Stavros Eleftheriou
Nandakumar Sasidharan Rajalekshmi
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 DE112018004223T5 publication Critical patent/DE112018004223T5/de
Granted 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/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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells

Landscapes

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

Abstract

Es werden Verfahren und Vorrichtungen zum Trainieren eines künstlichen neuronalen Netzes mit einer Folge von Schichten von Neuronen mit dazwischen geschalteten Schichten von Synapsen bereitgestellt. Ein Satz von Kreuzschienenanordnungen memristiver Einheiten, die zwischen Zeilen- und Spaltenleitungen geschaltet sind, implementiert die Schichten von Synapsen. Jede memristive Einheit speichert ein Gewicht Ŵ für eine Synapse, die ein entsprechendes Paar von Neuronen in aufeinanderfolgenden Neuronenschichten miteinander verbindet. Das Trainingsverfahren weist Ausführen von Vorwärtsausbreitungs-, Rückwärtsausbreitungs- und Gewichtsaktualisierungsvorgängen eines sich wiederholenden Trainingsschemas auf, indem in mindestens einem der Vorwärtsausbreitungs- und Rückwärtsausbreitungsvorgänge einer von Zeilen- und Spaltenleitungen des Satzes von Anordnungen Eingangssignale zugeführt werden, die entsprechenden Neuronen zugehörig sind, um auf der anderen der Zeilen- und Spaltenleitungen Ausgangssignale zu erhalten, und digitale Signalwerte, die den Eingangs- und Ausgangssignalen entsprechen, in einer digitalen Verarbeitungseinheit gespeichert werden, die funktionsmäßig mit dem Satz von Anordnungen verbunden ist. Der Gewichtsaktualisierungsvorgang des Schemas wird durch Berechnen von digitalen Gewichtskorrekturwerten ΔW für entsprechende memristive Einheiten in Abhängigkeit von den gespeicherten digitalen Signalwerten in der digitalen Verarbeitungseinheit und Zuführen von Programmiersignalen zu diesen Einheiten ausgeführt, um die gespeicherten Gewichte W in Abhängigkeit von den entsprechenden digitalen Gewichtskorrekturwerten ΔW zu aktualisieren.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft allgemein Trainieren künstlicher neuronaler Netze (artificial neural networks).
  • Künstliche neuronale Netze (KNNs) wurden zum Ausführen von Rechenaufgaben in einer durch biologische Architekturen des Nervensystems inspirierten Art und Weise entwickelt. Diese Netze beruhen auf einem Prinzip biologischer Systeme, wobei Neuronen über Synapsen miteinander verbunden sind, die Signale zwischen den Neuronen übermitteln. Ein biologisches Neuron verarbeitet seine Eingangssignale und erzeugt Ausgangssignale, die über entsprechende Synapsen an andere Neuronen übertragen werden. Die Stärke des von einer Synapse übertragenen Signals hängt von der Leitfähigkeit ab, auch als „synaptische Effizienz“ oder „Gewicht“ der Synapse bekannt. Das Synapsengewicht kann durch neuronale Aktivität verändert werden, und diese „Plastizität“ von Synapsen ist entscheidend für Gedächtnis und andere Gehirnfunktionen. Künstliche neuronale Netze beruhen auf einer logischen Konstruktion mit einer Folge von Schichten von Neuronen und zwischengeschalteten Schichten von Synapsen, wobei jede Synapse ein entsprechendes Paar von Neuronen in aufeinanderfolgenden Neuronenschichten miteinander verbindet. Signale, die über Synapsen übermittelt werden, werden gemäß entsprechenden Synapsengewichten gewichtet, die für die Synapsen gespeichert sind. Auf diese Weise können gewichtete Signale über aufeinanderfolgende Schichten des Netzes von einer Eingangs- zu einer Ausgangsneuronenschicht weitergeleitet werden.
  • KNNs wurden in verschiedenen komplexen Analyseaufgaben wie Sprach- und Bilderkennung, z.B. Klassifizierung handgeschriebener Ziffern auf der Grundlage des MNIST-Datensatzes (Modified National Institute of Standards and Technology, MNIST), erfolgreich angewandt. Die Funktionsweise eines KNN schließt eine Trainingsphase ein, in der die Synapsengewichte ermittelt werden. Dem Netz wird ein Satz von Trainingsdaten, z.B. Bilddaten für handgeschriebene Ziffern, in einem sich wiederholenden Trainingsschema präsentiert, wobei die Gewichte wiederholt aktualisiert werden, da das Netz aus den Trainingsdaten „lernt“. Beim überwachten Lernen von handgeschriebenen Ziffern werden beispielsweise MNIST-Daten, für die die Bezeichnungen (hier Ziffernklasse von 0 bis 9) bekannt sind, dem Netz wiederholt zugeführt. Die Ausgangssignale von der letzten Neuronenschicht werden mit der erwarteten Netzausgabe für jede Ziffer verglichen, um Fehler zu ermitteln, und die Gewichte werden wiederholt aktualisiert, um den Fehler zu verringern, bis eine Konvergenzbedingung erreicht ist. Insbesondere umfassen die Schritte des sich wiederholenden Trainingsprozesses einen Vorwärtsausbreitungsvorgang, einen Rückwärtsausbreitungsvorgang und einen Gewichtsaktualisierungsvorgang. Beim Vorwärtsausbreitungsvorgang werden aus den Trainingsdaten abgeleitete Signale von der Eingangsneuronenschicht an die Ausgangsneuronenschicht übertragen. Die sich ergebenden Fehlersignale werden sodann beim Rückwärtsausbreitungsvorgang von der Ausgangs- an die Eingangsneuronenschicht durch das Netz rückübertragen, um Fehlersignale für Neuronen in jeder Schicht mit Ausnahme der Eingangsschicht zu erhalten. Beim Gewichtsaktualisierungsvorgang werden die Synapsengewichte sodann auf der Grundlage dieser Fehlersignale und der Neuronenausgangssignale während der Rückwärtsausbreitung aktualisiert.
  • Beim Trainieren von KNNs, die mehrere (z.B. 10 oder mehr) Neuronenschichten und Millionen Synapsengewichte haben können, handelt es sich um eine rechenintensive Aufgabe, die beträchtliche Verarbeitungsressourcen und eine umfangreiche Trainingszeit erfordert. Zum Entschärfen dieser Probleme wurden analoge Trainingsverfahren auf der Grundlage von Kreuzschienenanordnungen memristiver Synapsen vorgeschlagen. Diese Verfahren nutzen die parallelen Rechenfähigkeiten von Anordnungen memristiver Einheiten, die zwischen Zeilen- und Spaltenleitungen geschaltet sind, um Signale zu den Einheiten zu führen, wobei jede Einheit eine Synapse mit einem Gewicht implementiert, das der (veränderlichen) Leitfähigkeit der Einheit entspricht. Solche Verfahren werden beschrieben in: „Experimental demonstration and tolerancing of a large-scale neural network (165 000 synapses) using phase-change memory as the synaptic weight element“, Burr et al., IEEE Transactions on Electron Devices 62(11), Seiten 3498 bis 3507, 2015; und „Acceleration of Deep Neural Network Training with Resistive Cross-Point Devices: Design Considerations“, Gokmen & Vlasov, Frontiers in Neuroscience, Band 10, 2016. Diese Systeme führen die Berechnungen für Vorwärtsausbreitung, Rückwärtsausbreitung und Gewichtsaktualisierung mit den memristiven Anordnungen durch Zuführen von Signalen zu den Zeilen- und/oder Spaltenleitungen aus, wobei gepulste Signale, die aus den Vorwärtsausbreitungssignalen und rückwärts propagierten Fehlern abgeleitet werden, für den Vorgang der Gewichtsaktualisierung gleichzeitig den Zeilen- und Spaltenleitungen einer Einheit zugeführt werden. Durch Ausnutzen der Fähigkeiten memristiver Anordnungen in dieser Weise verringern diese Verfahren die mit dem Trainieren eines KNN einhergehende rechnerische Komplexität in erheblichem Maße. Bei beiden Systemen ist jedoch eine signifikante Verringerung der Trainingsgenauigkeit im Vergleich zu einer hochpräzisen digitalen 64-Bit-Gleitkomma-Implementierung festzustellen. Das Burr-System ist hochempfindlich gegenüber Gerätefehlern, und das Gokmen-System würde eine unerreichbar hohe Anzahl von Leitfähigkeitszuständen für bestehende memristive Einheiten benötigen, um eine mit einer Gleitkomma-Implementierung vergleichbare Genauigkeit zu erhalten.
  • KURZDARSTELLUNG
  • Gemäß mindestens einer Ausführungsform der vorliegenden Erfindung wird ein Verfahren zum Trainieren eines künstlichen neuronalen Netzes mit einer Folge von Neuronenschichten und einem Satz von Kreuzschienenanordnungen memristiver Einheiten bereitgestellt, die zwischen Zeilen- und Spaltenleitungen geschaltet sind, wobei Schichten von Synapsen implementiert werden, die zwischen die Neuronenschichten geschaltet sind. Jede memristive Einheit speichert ein Gewicht W für eine Synapse, die ein entsprechendes Paar von Neuronen in aufeinanderfolgenden Neuronenschichten miteinander verbindet. Das Verfahren weist Ausführen von Vorwärtsausbreitungs-, Rückwärtsausbreitungs- und Gewichtsaktualisierungsvorgängen eines sich wiederholenden Trainingsschemas auf, indem in mindestens einem der Vorwärtsausbreitungs- und Rückwärtsausbreitungsvorgänge des Schemas Eingangssignale, die entsprechenden Neuronen zugehörig sind, einer der Zeilen- und Spaltenleitungen des Satzes von Anordnungen zugeführt werden, um auf der anderen der Zeilen- und Spaltenleitungen Ausgangssignale zu erhalten, und Speichern digitaler Signalwerte, die den Eingangs- und Ausgangssignalen entsprechen, in einer digitalen Verarbeitungseinheit, die funktionsmäßig mit dem Satz von Anordnungen verbunden ist. Der Gewichtsaktualisierungsvorgang des Schemas wird ausgeführt, indem in Abhängigkeit von den gespeicherten digitalen Signalwerten digitale Gewichtskorrekturwerte ΔW für entsprechende memristive Einheiten in der digitalen Verarbeitungseinheit berechnet und jenen Einheiten Programmiersignale zugeführt werden, um die gespeicherten Gewichte W in Abhängigkeit von den jeweiligen digitalen Gewichtskorrekturwerten ΔW zu aktualisieren.
  • Ausführungsformen der Erfindung stellen KNN-Trainingsverfahren mit gemischter Genauigkeit (mixed-precision) bereit, in denen ein Satz memristiver Anordnungen zum Berechnen (mit an sich geringer Genauigkeit) in einem oder beiden der Vorwärts- und Rückwärtsausbreitungsschritte verwendet wird, und eine digitale Verarbeitungseinheit wird zum Ausführen einer Gewichtsaktualisierungsberechnung für den Schritt der Gewichtsaktualisierung verwendet. Dies schließt Berechnen eines digitalen Gewichtskorrekturwerts ΔW ein, d.h. entsprechend einer schrittweisen Änderung eines gespeicherten Gewichts, für eine memristive Einheit als einen spezifischen Schritt der Gewichtsaktualisierungsberechnung. Diese Berechnung wird mit digitaler Genauigkeit ausgeführt, und die sich ergebenden digitalen Werte werden sodann verwendet, um die den memristiven Einheiten zugeführten Programmiersignale zum Aktualisieren der gespeicherten Gewichte festzulegen. Diese Technik bietet eine verbesserte Genauigkeit beim Gewichtsaktualisierungsvorgang, wobei Vorteile memristiver Anordnungen, d.h. Vorteile wie beträchtliche Geschwindigkeit, Leistungs- und Flächendichte, erhalten bleiben. Ausführungsformen der Erfindung bieten folglich schnelle, leistungsfähige KNN-Trainingsverfahren auf der Grundlage memristiver Anordnungen. Mit Gleitkomma-Implementierungen vergleichbare Genauigkeiten können ohne Weiteres erzielt werden, wie für im Folgenden beschriebene Ausführungsformen gezeigt wird.
  • Bevorzugte Ausführungsformen führen zumindest den Vorwärtsausbreitungsvorgang mit den memristiven Anordnungen aus, indem die Eingangssignale Zeilenleitungen des Satzes von Anordnungen zugeführt werden, um Ausgangssignale auf den Spaltenleitungen zu erhalten. Um die parallele Rechenfähigkeit von memristiven Anordnungen besser zu nutzen, wird die Rückwärtsausbreitung vorzugsweise ebenfalls mit dem Anordnungssatz ausgeführt, indem Eingangssignale Spaltenleitungen des Satzes von Anordnungen zugeführt werden, um Ausgangssignale auf den Zeilenleitungen zu erhalten.
  • In einer ersten Gewichtsaktualisierungsprozedur kann die digitale Verarbeitungseinheit jeden Gewichtskorrekturwert ΔW mit einer festgelegten Schrittweite ε runden, um einen gerundeten Korrekturwert ΔW̃ zu erzeugen. Ein einer memristiven Einheit zugeführtes Programmiersignal passt sodann das gespeicherte Gewicht Ŵ um einen Betrag in Abhängigkeit vom gerundeten Korrekturwert ΔW̃ für diese Einheit an. Dadurch wird im Gegensatz zu einem kompletten Neuprogrammieren neuer Gewichte ein schrittweises Aktualisieren der gespeicherten Gewichte ausgeführt mit dem Vorteil, dass der Satz von Gewichten nicht in der digitalen Verarbeitungseinheit gespeichert werden muss.
  • In anderen Ausführungsformen kann die digitale Verarbeitungseinheit digitale Gewichtswerte W speichern, die den durch entsprechende memristive Einheiten gespeicherten Gewichten W entsprechen. In einer zweiten Gewichtsaktualisierungsprozedur kann die digitale Verarbeitungseinheit hier neue digitale Gewichtswerte für entsprechende Einheiten aus dem für jede Einheit gespeicherten digitalen Gewichtswert und dem digitalen Gewichtskorrekturwert ΔW berechnen. Ein einer memristiven Einheit zugeführtes Programmiersignal ist dann abhängig vom neuen digitalen Gewichtswert für diese Einheit. Dies bietet eine überragende Genauigkeit, da neue Gewichtswerte mit digitaler Präzision aus den aktuell gespeicherten Gewichtswerten W berechnet werden als: neues W = aktuelles W + ΔW, wobei keine Informationen über ΔW aufgrund von Runden verlorengehen, wie es im ersten Verfahren weiter oben der Fall ist.
  • In besonders bevorzugten Ausführungsformen speichert die digitale Verarbeitungseinheit digitale Häufungswerte (accumulation values) χ für entsprechende memristive Einheiten. In einer dritten Gewichtsaktualisierungsprozedur berechnet die digitale Verarbeitungseinheit hier aktualisierte Häufungswerte für entsprechende memristive Einheiten aus dem Gewichtskorrekturwert ΔW und dem für jede Einheit gespeicherten Häufungswert χ und ermittelt einen Gewichtsanpassungsbetrag A aus dem aktualisierten Häufungswert für jede Einheit. Ein einer memristiven Einheit zugeführtes Programmiersignal passt sodann das gespeicherte Gewicht W um einen dem Gewichtsanpassungsbetrag A für diese Einheit entsprechenden Betrag an. Die digitale Verarbeitungseinheit berechnet neue digitale Häufungswerte für entsprechende Einheiten durch Subtrahieren des Gewichtsanpassungsbetrags von dem aktualisierten Häufungswert für jede Einheit. Dieses bietet eine außerordentlich genaue und leistungsfähige Funktionsweise, wobei die Genauigkeit von ΔW in den Häufungswerten χ vollständig erhalten bleibt, wie im Folgenden näher erläutert wird.
  • In der dritten Gewichtsaktualisierungsprozedur kann der Gewichtsanpassungsbetrag A ermittelt werden, indem der aktualisierte Häufungswert für jede memristive Einheit mit einer festgelegten Schrittweite ε gerundet wird, was auf eine Gewichtsänderung der Einheit in Reaktion auf Zuführen eines festgelegten Programmierimpuls hindeutet, um eine Anzahl n der Programmierimpulse zu erhalten, die der Einheit zugeführt werden müssen. Dies ermöglicht ein einfaches Implementieren von Programmiersignalen als n Impulse für jede Einheit. In anderen Ausführungsformen ermittelt die digitale Verarbeitungseinheit hier den Gewichtsanpassungsbetrag A durch Vergleichen des aktualisierten Häufungswertes für jede memristive Einheit mit einem festgelegten Schwellenwert, der von der Schrittweite ε abhängt. Wenn der aktualisierte Häufungswert diesen Schwellenwert überschreitet, wird der Einheit ein Programmierimpuls zugeführt. Dadurch wird ermöglicht, dass Programmiersignale durch einen einzigen Impuls implementiert werden, so dass pro Gewichtsaktualisierungsvorgang nur ein Impuls erforderlich ist.
  • Mindestens eine weitere Ausführungsform der Erfindung stellt eine Vorrichtung zum Implementieren eines künstlichen neuronalen Netzes bereit. Die Vorrichtung weist eine Memcomputereinheit (memcomputing unit) und eine mit der Memcomputereinheit funktionsmäßig verbundene digitale Verarbeitungseinheit auf. Die Memcomputereinheit weist auf: einen Satz von Kreuzschienenanordnungen memristiver Einheiten, die zwischen Zeilen- und Spaltenleitungen geschaltet sind, wobei jede memristive Einheit ein Gewicht W für eine entsprechende Synapse speichert, und eine Steuereinheit zum Steuern des Zuführens von Signalen zu den memristiven Einheiten über die Zeilen- und Spaltenleitungen. Die digitale Verarbeitungseinheit ist in der Lage, das Ausführen von Vorwärtsausbreitungs-, Rückwärtsausbreitungs- und Gewichtsaktualisierungsvorgängen eines sich wiederholenden Trainingsschemas durch die Vorrichtung gemäß einem oben beschriebenen Verfahren zu steuern.
  • Ausführungsformen der Erfindung werden im Folgenden ausführlicher durch veranschaulichende und nicht einschränkende Beispiele unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • Figurenliste
    • 1 ist eine schematische Darstellung eines künstlichen neuronalen Netzes;
    • 2 ist ein schematisches Blockschaltbild einer die Erfindung verkörpernden Vorrichtung zum Implementieren eines künstlichen neuronalen Netzes;
    • 3 veranschaulicht eine Struktur von memristiven Anordnungen der Vorrichtung von 2;
    • 4 ist eine schematische Darstellung einer beispielhaften memristiven Einheit zum Verwenden in einer memristiven Anordnung;
    • 5 zeigt grundlegende Schritte eines durch die Vorrichtung von 2 ausgeführten Trainingsverfahrens;
    • 6 zeigt ausführlichere Schritte eines Vorwärtsausbreitungsvorgangs;
    • 7 zeigt die Funktionsweise einer memristiven Anordnung im Vorwärtsausbreitungsvorgang;
    • 8 zeigt ausführlichere Schritte eines Rückwärtsausbreitungsvorgangs;
    • 9 zeigt die Funktionsweise einer memristiven Anordnung im Rückwärtsausbreitungsvorgang;
    • 10 zeigt Schritte eines ersten Gewichtsaktualisierungsvorgangs;
    • 11 zeigt Simulationsergebnisse für ein Trainingsverfahren, das den ersten Gewichtsaktualisierungsvorgang verwendet;
    • 12 zeigt Schritte eines zweiten Gewichtsaktualisierungsvorgangs;
    • 13 zeigt Simulationsergebnisse für ein Trainingsverfahren, das den zweiten Gewichtsaktualisierungsvorgang verwendet;
    • 14 zeigt Schritte eines zweiten Gewichtsaktualisierungsvorgangs;
    • Die 15 und 16 zeigen verschiedene Implementierungen für Schritte des Vorgangs von 14; und
    • 17 zeigt Simulationsergebnisse für ein Trainingsverfahren, das den dritten Gewichtsaktualisierungsvorgang verwendet.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 veranschaulicht die logische Struktur eines beispielhaften KNN. Das KNN 1 weist eine Folge von Neuronenschichten mit zwischengeschalteten Schichten von Synapsen auf. In dem gezeigten einfachen Beispiel hat das Netz drei Neuronenschichten: eine Schicht von Eingangsneuronen, die die Netzeingangssignale empfangen; eine Schicht von Ausgangsneuronen, die die Ausgangssignale des Netzes bereitstellen, und eine dazwischenliegende („verdeckte“) Schicht von Neuronen zwischen der Eingangs- und der Ausgangsschicht. Neuronen in der Eingangsschicht (Schicht 1) werden hier mit n1i , (1 ≤ i ≤ N1) bezeichnet, Neuronen in der verdeckten Schicht (Schicht 2) werden mit n2j (1 ≤ j ≤ N2) bezeichnet, und Neuronen in der Ausgangsschicht (Schicht 3) werden mit n3k (1 ≤ k ≤ N3) bezeichnet, wobei Nx die Anzahl von Neuronen in Schicht x ist. Die Neuronen in jeder Schicht sind wie gezeigt über Synapsen sij oder sjk mit Neuronen in der nächsten Schicht verbunden. Jede Synapse sij , sjk verbindet ein entsprechendes Paar von Neuronen in aufeinanderfolgenden Neuronenschichten. Ein von einer Synapse sij oder sjk zwischen den mit ihr verbundenen Neuronen übermitteltes Signal wird gemäß einem entsprechenden Synapsengewicht wij oder wjk gewichtet. Die Eingangsschicht und die verdeckte Neuronenschicht können ein oder mehrere Biasneuronen (in der Figur schraffiert gezeigt) enthalten, die keine Eingangssignale empfangen, sondern festgelegte Signale an die nächste Neuronenschicht übertragen. Zwar wird eine vollständig verbundene Konfiguration gezeigt, im Allgemeinen kann ein Neuron in einer beliebigen Schicht jedoch mit ein oder mehreren Neuronen in der nächsten Schicht verbunden sein, und Netze können ein oder mehrere (üblicherweise bis zu 30 oder mehr) aufeinanderfolgende Schichten von verdeckten Neuronen enthalten.
  • 2 zeigt eine die Erfindung verkörpernde Vorrichtung zum Implementieren eines KNN 1. Die Vorrichtung 2 weist eine Memcomputereinheit 3 und eine digitale Verarbeitungseinheit 4 auf, die hier über einen Systembus 5 funktionsmäßig mit der Memcomputereinheit 3 verbunden ist. Die Memcomputereinheit 3 weist einen Satz von (einer oder mehreren) memristiven Kreuzschienenanordnungen 6 und eine Steuereinheit 7 zum Steuern der Funktion der Memcomputereinheit auf. Die digitale Verarbeitungseinheit 4 weist eine Zentraleinheit (CPU) 7 und einen Speicher 8 auf. Der Speicher 8 speichert ein oder mehrere Programmmodule 9, die durch die CPU 7 ausführbare Programmanweisungen aufweisen, um Funktionsschritte von im Folgenden beschriebenen Arbeitsgängen zu implementieren.
  • 3 veranschaulicht die logische Struktur des Satzes von memristiven Anordnungen 6. In diesem Beispiel weist der Satz zwei Kreuzschienenanordnungen von memristiven Einheiten 10 auf, die zwischen Zeilen- und Spaltenleitungen der Anordnungen geschaltet sind. Die erste Anordnung α1 implementiert die Schicht von Synapsen sij zwischen der ersten und zweiten Neuronenschicht im KNN 1 von 1. Jede memristive Einheit 10 der Anordnung α1 speichert ein Gewicht Ŵij für eine entsprechende Synapse sij . Das Gewicht Ŵij entspricht der elektrischen Leitfähigkeit der Einheit und kann während des Betriebs durch Zuführen von Programmiersignalen zu der Einheit verändert werden. Die Gewichte Ŵij werden folglich schon an sich mit geringer Genauigkeit gespeichert, wie durch den Akzent ̂ angezeigt wird. Die Einheiten 10 sind in logischen Zeilen und Spalten angeordnet, wobei jede Einheit zwischen eine bestimmte Zeilenleitung und Spaltenleitung geschaltet ist, um der Einheit Signale zuzuführen. Die Zeilenleitungen ri der Anordnung α1 können als Verbindungen zwischen entsprechenden Eingangsneuronen n1i , und den Synapsen sij des KNN 1 betrachtet werden. Die Spaltenleitungen cj der Anordnung α1 können in ähnlicher Weise als Verbindungen zwischen der entsprechenden Schicht 2 von Neuronen n2j und den Synapsen sij des KNN 1 betrachtet werden. Die Zeilen- und Spaltenleitungen sind über Digital-Analog/Analog-Digital-Umsetzer (DAC/ADCs) 11 und 12 in den Zeilen und Spalten, die Ein/Ausgangs-Signale der Anordnung zwischen den digitalen und analogen Domänen umsetzen, mit der Steuereinheit der Memcomputereinheit 2 verbunden.
  • Die zweite Anordnung α2 des Anordnungssatzes 6 implementiert die Schicht von Synapsen sjk zwischen der zweiten und dritten Neuronenschicht des KNN 1. Die Struktur entspricht direkt derjenigen der Anordnung α1 . Folglich speichern Einheiten 10 der Anordnung α2 Gewichte Ŵjk für Synapsen sjk , wobei Zeilenleitungen rj Verbindungen zwischen der entsprechenden Schicht 2 von Neuronen n2j und Synapsen sjk darstellen und Spaltenleitungen ck Verbindungen zwischen entsprechenden Ausgangsschichtneuronen n3k und Synapsen sjk darstellen.
  • Die Steuereinheit 7 stellt die Steuerschaltungsanordnung zum Steuern des Zuführens von Signalen über die Zeilen- und Spaltenleitungen der Anordnungen zu den memristiven Einheiten bereit. Wie im Folgenden ausführlich erläutert wird, werden Signale in einem „Lese“-Modus in die Anordnungen eingegeben und von diesen ausgegeben, der zum Berechnen von Arbeitsgängen der Vorrichtung 2 verwendet wird, und Programmiersignale werden den memristiven Einheiten 10 in einem „Schreib-“ (Programmier-) Modus zugeführt, der für Gewichtsaktualisierungsvorgänge verwendet wird. Die Lese/Schreib-Steuerschaltungsanordnung kann auf eine allgemein bekannte Weise entsprechend der jeweiligen memristiven Synapsenimplementierung in den Einheiten 10 umgesetzt werden. Nach dem Stand der Technik ist eine Vielfalt von memristiven Synapseneinheiten bekannt, z.B. auf der Grundlage resistiver Speicherzellen wie etwa Phasenwechselspeicher- (PCM-) Zellen. Diese Einheiten weisen eine oder mehrere Speicherzellen auf, die in verschiedenen Schaltungskonfigurationen angeordnet werden können, um Informationen im programmierbaren Leitfähigkeitszustand der Zellen zu speichern. Bevorzugte Ausführungsformen verwenden hierin memristive Einheiten auf der Grundlage von einer Mehrzahl von PCM-Zellen, die eine Mehrbitspeicherung von Daten bereitstellen, wie im Folgenden ausführlicher beschrieben wird. Während des Betriebs steuert die Steuereinheit 7 außerdem die Eingabe und Ausgabe von Daten in den/aus dem Systembus 5 durch die Memcomputereinheit 3.
  • Die digitale Verarbeitungseinheit (DPU) 4 ist in der Lage, ein Ausführen von Prozessschritten eines sich wiederholenden Trainingsschemas für das KNN 1 durch die Vorrichtung 2 zu steuern. Der Trainingsprozess wird über Ausführen von Programmanweisungen, die aus Programmmodulen 9 im Speicher 8 geladen werden, durch die CPU 7 gesteuert. Der Speicher 8 speichert außerdem verschiedene Daten, die während des Betriebs von der CPU 7 verwendet werden, darunter Datenelemente, die in den verschiedenen Schritten des Trainingsprozesses der Memcomputereinheit 3 zugeführt und von dieser empfangen werden. Die CPU 7 führt die in der DPU 4 erforderlichen Berechnungen während des Trainingsprozesses aus und steuert den Ein- und Ausgang von Daten in den/aus dem Systembus 5 durch die DPU 4. Außerdem steuert die CPU 7 den Betriebsmodus der Memcomputereinheit 3 über Steuerungsanweisungen, die über den Bus 5 an die Steuereinheit 7 übertragen werden.
  • Zwar wird eine beispielhafte Ausführungsform der Vorrichtung 2 beschrieben, die DPU 4 kann jedoch eine oder mehrere CPUs (darunter GPUs (Grafikverarbeitungseinheiten)) aufweisen, die von einem oder mehreren Mikroprozessoren implementiert werden können. Der Speicher 8 kann eine oder mehrere Datenspeichereinheiten und einen Hauptspeicher aufweisen, z.B. einen DRAM (dynamic random access memory) und/oder einen anderen Speicher, der physisch von der CPU 7 getrennt ist, sowie einen Cachespeicher und/oder einen anderen in der CPU 7 befindlichen Speicher. Im Allgemeinen kann die DPU 4 durch ein oder mehrere (Universal- oder Spezial-) Computer/programmierbare Datenverarbeitungsvorrichtungen implementiert werden, und Funktionsschritte von durch die DPU 4 ausgeführten Verarbeitungsvorgängen können im Allgemeinen durch Hardware oder Software oder eine Kombination aus diesen implementiert werden. Die Steuereinheit 7 kann außerdem einen oder mehrere Prozessoren aufweisen, die durch Software-Anweisungen konfigurierbar sind, um die Memcomputereinheit 2 zu steuern, so dass sie im Folgenden beschriebene Funktionen ausführt. Bestimmte durch die Steuereinheit 7 ausgeführte Funktionsschritte können in Hardware oder Software oder einer Kombination aus diesen implementiert werden. Geeignete Software zum Implementieren von beschriebenen Funktionsschritten ist für Fachleute gleich offensichtlich.
  • In einigen Ausführungsformen können die DPU 4 und/oder die Steuereinheit 7 eine elektronische Schaltungsanordnung wie etwa eine programmierbare Logikschaltungsanordnung, vor Ort programmierbare Gatter-Anordnungen (fieldprogrammable gate arrays, FPGA) oder programmierbare Logikanordnungen (programmable logic arrays, PLA) enthalten, um Programmanweisungen zum Implementieren beschriebener Funktionen auszuführen. Wenn Ausführungsformen unter Bezugnahme auf Ablaufplandarstellungen beschrieben werden, versteht es sich von selbst, dass jeder Block der Ablaufplandarstellungen und/oder Kombinationen aus Blöcken in den Ablaufplandarstellungen von durch einen Computer ausführbaren Programmanweisungen implementiert werden können. Programmanweisungen/Programmmodule können Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Blöcke oder Kombinationen aus Blöcken in einer Ablaufplandarstellung können außerdem durch spezielle auf Hardware beruhende System implementiert werden, die die angegebenen Funktionen oder Vorgänge ausführen oder Kombinationen aus spezieller Hardware und Computeranweisungen ausführen.
  • Der Systembus 5 stellt einen oder mehrere von beliebigen verschiedenen Typen von Busstrukturen dar, darunter ein Speicherbus oder eine Speichersteuereinheit, ein peripherer Bus, ein beschleunigter Grafikanschluss und ein Prozessor oder lokaler Bus unter Verwenden einer beliebigen aus einer Vielfalt von Busarchitekturen. Zu solchen Architekturen gehören zum Beispiel und ohne Einschränkung Industry Standard Architecture- (ISA-) Bus, Micro Channel Architecture- (MCA-) Bus, Enhanced ISA- (EISA-) Bus, lokaler Video Electronics Standards Association- (VESA-) Bus und Peripheral Component Interconnect- (PCI-) Bus.
  • Im Allgemeinen können die Schichten von Synapsen sij , sjk des KNN 1 durch eine oder mehrere Kreuzschienenanordnungen von memristiven Einheiten 10 implementiert werden. Es ist klar, dass es sich bei „Zeilen“ und „Spalten“ dieser Anordnungen lediglich um logische Bezeichnungen handelt und dies keinerlei Einschränkung hinsichtlich der physischen Ausrichtung oder Anordnung von Komponenten bedeutet. In einer typischen auf PCM beruhenden Anordnung von Einheiten sind Einheiten und Zuleitungen jedoch in einer regelmäßigen Anordnung von Zeilen und Spalten angeordnet, wie in 3 schematisch dargestellt wird. Dichte Kreuzschienenanordnungen von solchen memristiven Einheiten können unter Verwenden von bereits bekannten Materialverarbeitungstechniken als integrierte nanoskalige Systeme hergestellt werden und bieten massiv parallele und in hohem Maße flächen- und energieeffiziente Implementierungen.
  • 4 zeigt eine beispielhafte Implementierung für eine memristive Einheit 10 auf der Grundlage einer Mehrzahl von PCM-Zellen. Wie nach dem Stand der Technik bereits bekannt ist, nutzen PCM-Zellen die Eigenschaften eines regelbaren Widerstands einer Menge von PCM-Material, z.B. ein Chalkogenid wie etwa GST (Germanium-Antimon-Tellur), die zwischen ein Paar von Elektroden angeordnet ist, die die Zellenanschlüsse bereitstellen. In diesem Beispiel weist die Einheit 10 vier PCM-Zellen 20 auf. Ein Anschluss jeder Zelle 20 ist mit der Spaltenleitung cj der Einheit verbunden. Der andere Anschluss jeder Zelle ist mit einer entsprechenden Komponentenleitung der Zeilenleitung ri der Einheit verbunden. Durch Zuführen von geeigneten Programmierimpulsen über die entsprechende Komponentenzeilenleitung und Spaltenleitung zu einer Zelle 20 kann die Zelle in einen hochohmigen (amorphen) oder niederohmigen (kristallinen) Zustand programmiert werden. Auf diese Weise kann jede Zelle 20 ein Bit an Informationen speichern, wobei die vier Zellen gemeinsam in Abhängigkeit von der Anzahl von Zellen, die sich jeweils im hoch- und niederohmigen Zustand befinden, Speicher für fünf verschiedene Gewichte bereitstellen. Wie gezeigt wird, ergibt dies eine 2-Bit-Genauigkeit für das gespeicherte Gewicht Ŵij unter Verwenden von vier Zellen 20, wobei 2N Zellen im Allgemeinen eine N-Bit-Genauigkeit bereitstellen. Das Programmieren der Einheit 10 durch die Steuereinheit 7 kann unter Verwenden eines auf Taktsignalen beruhenden Zuteilungsschemas ausgeführt werden, um die Reihenfolge festzulegen, in der bestimmte Zellen 20 adressiert werden, um das gespeicherte Gewicht zu erhöhen oder zu verringern. Das gespeicherte Gewicht kann durch Zuführen eines (Niederspannung-) Lesesignals zu (allen Komponenten) der Zeilenleitung n „gelesen“ werden, wobei der sich ergebende Strom auf der Spaltenleitung cj der Einheit und folglich das gesamte gespeicherte Gewicht Ŵij von der Leitfähigkeit aller vier Zellen abhängig ist.
  • In der im Folgenden ausführlich beschriebenen Ausführungsform wird die Funktionalität eines Neurons n1i , n2j , n3k des KNN 1 wirkungsvoll in der DPU 4 implementiert, indem eine festgelegte „Aktivierungs“-Funktion auf Neuroneneingangssignale angewandt wird, um die Neuronenausgangssignale zu erzeugen, die der nächsten KNN-Schicht als Eingangssignale zugeführt werden. Im Trainingsvorgang der Vorrichtung 2 werden Eingangsdaten für eine Trainingsstichprobe (z.B. Bildelementdaten für ein Bild einer handgeschriebenen Ziffer aus dem MNIST-Trainingsdatensatz) im Speicher 8 gespeichert. Die eingegebenen Datenpunkte (z.B. Bildpixel) werden gemäß einem festgelegten Abbildungsvorgang, der für einen KNN-Arbeitsgang unveränderlich bleibt, nominell auf Neuronen n1i , der Eingangsschicht abgebildet. Trainingsdaten weisen normalerweise eine hohe Anzahl von Stichproben auf (z.B. mehrere tausend Stichproben handgeschriebener Ziffern), die während des Trainingsprozesses in das Netzwerk eingegeben werden. Während dieses Prozesses implementiert die Vorrichtung 2 ein sich wiederholendes Verfahren, in dem die durch memristive Einheiten 10 gespeicherten Gewichte Ŵij, Ŵjk wiederholt aktualisiert werden. Insbesondere steuert die DPU 4 das Ausführen von Vorwärtsausbreitungs-, Rückwärtsausbreitungs- und Gewichtsaktualisierungsvorgängen eines im Folgenden beschriebenen sich wiederholenden Trainingsschemas durch die Vorrichtung 2.
  • Grundlegende Schritte des Trainingsschemas sind im Ablaufplan von 5 dargestellt. Beim Vorwärtsausbreitungsvorgang (Schritt 30) werden die Eingangsdaten für eine aktuelle Trainingsstichprobe vorwärts von der Eingangs- zur Ausgangsneuronenschicht durch das KNN 1 propagiert. Dieser Vorgang, der im Folgenden ausführlicher beschrieben wird, schließt Berechnen von mit x1i , x2j bzw. x3k bezeichneten Ausgangssignalen für Neuronen n1i , n2j und n3k in der DPU 4 und Zuführen von Eingangssignalen zu memristiven Anordnungen 6 ein, um Ausgangssignale der Anordnungen zu erhalten, die in diesen Berechnungen verwendet werden. Im anschließenden Rückwärtsausbreitungsvorgang (Schritt 31) berechnet the die DPU 4 Fehlerwerte (mit δ3k bezeichnet) für entsprechende Ausgangsneuronen n3k und leitet diese Fehlerwerte in der Rückwärtsausbreitungsrichtung von der Ausgangsneuronenschicht zur vorletzten Schicht zurück durch das KNN 1. Dies schließt Zuführen von Eingangssignalen zu memristiven Anordnungen 6 ein, um Ausgangssignale der Anordnungen zu erhalten, und Berechnen von Fehlerwerten für Neuronen in allen anderen Schichten mit Ausnahme der Eingangsneuronenschicht, in diesem Fall Fehler δ2j für die Neuronen n2j der Schicht 2. In einem anschließenden Gewichtsaktualisierungsvorgang (Schritt 32) berechnet die DPU digitale Gewichtskorrekturwerte ΔW für entsprechende memristive Einheiten 10 unter Verwenden von Werten, die in den Vorwärts- und Rückwärtsausbreitungsschritten berechnet wurden. Die DPU 4 steuert sodann die Memcomputereinheit 3, so dass sie den Einheiten Programmiersignale zuführt, um die gespeicherten Gewichte W in Abhängigkeit von den jeweiligen digitalen Gewichtskorrekturwerten ΔW zu aktualisieren. Im Entscheidungsschritt 33 ermittelt die DPU 4, ob eine festgelegte Konvergenzbedingung erzielt wurde. (Diese Bedingung kann für einen Trainingsvorgang auf verschiedene Arten definiert werden, z.B. auf der Grundlage von Fehlerwerten für die Ausgangsneuronen, einer Änderung der Fehlerwerte zwischen Wiederholungen, der Anzahl von Stichproben/Wiederholungen usw. oder in Abhängigkeit von mehr als einem solchen Parameter. Die jeweilige Konvergenzbedingung ist unerheblich für die hierin beschriebenen Funktionsprinzipien.) Ist dies nicht der Fall („Nein“ (N) bei Entscheidungsblock 33), werden die Eingangsdaten für die nächste Trainingsprobe im Schritt 34 in die CPU 7 geladen, und der Funktionsablauf kehrt zurück zu Schritt 30. Der Prozess wird auf diese Weise wiederholt, bis eine Konvergenz erzielt wird, woraufhin der Trainingsprozess endet.
  • Die in den memristiven Anordnungen 6 gespeicherten Gewichte W können auf festgelegte Werte gesetzt oder zu Beginn des Trainingsprozesses zufällig verteilt werden. Bestimmte Einschränkungen hinsichtlich der Verteilung der Gewichte beim Initialisieren können z.B. von der Netzwerkgröße und der (im Folgenden beschriebenen) Neuronenaktivierungsfunktionf für eine vorgegebene zu erzielende Konvergenzbedingung abhängen. Der Gewichtsaktualisierungsschritt 32 kann bei jeder Wiederholung oder nach einer festgelegten Anzahl von Rückwärtsausbreitungsvorgängen ausgeführt werden und kann Aktualisieren aller oder einer ausgewählten Teilgruppe der Gewichte W beinhalten, wie weiter unten beschrieben wird. In jedem Fall werden die Gewichte W während des Trainingsprozesses wiederholt aktualisiert, da das Netz aus den Trainingsdaten lernt.
  • 6 zeigt ausführlichere Schritte des Vorwärtsausbreitungsvorgangs für das KNN von 1. Im Schritt 40 werden Daten für die aktuelle Trainingsstichprobe eingegeben. Im Schritt 41 berechnet die DPU digitale Signalwerte x1i für entsprechende Neuronen n1i der Eingangsschicht durch Anwenden einer hier mit f bezeichneten Aktivierungsfunktion auf die auf dieses Neuron abgebildeten Eingangsdaten (di). Die Aktivierungsfunktion f weist normalerweise eine nichtlineare Funktion wie etwa eine Sigmoidfunktion, eine tanh-Funktion, eine ReLu-Funktion usw. auf. Im Schritt 42 werden die Signalwerte x1i für die Neuronen der Eingangsschicht im Speicher 8 gespeichert. Im Schritt 43 stellt die DPU 4 die Signalwerte x1i über den Bus 5 der Memcomputereinheit 3 bereit und setzt die Steuereinheit 7 in den Vorwärtsausbreitungsmodus. Im Schritt 44 führt die Steuereinheit 7 die Signalwerte x1i dem Zeilen-DAC 11 der memristiven Anordnung α1 zu. Entsprechende analoge Spannungssignale, die entsprechenden Neuronen n1i zugehörig sind, werden folglich entsprechenden Zeilenleitungen ri der Anordnung zugeführt, wie in 7 schematisch dargestellt ist. Die sich ergebenden Ausgangsstromsignale auf Spaltenleitungen ci entsprechen folglich gewichteten Summen der Eingangssignale entsprechend den Gewichten Ŵij von Einheiten 10 in jeder Spalte. Diese Ausgangssignale entsprechen den Signalen, die durch entsprechende Neuronen n2j der Schicht 2 des KNN 1 empfangen wurden. Die Spaltenausgangssignale werden durch den Spalten-ADC 12 in digitale Signalwerte Σiijx1i umgesetzt, und die digitalen Signalwerte werden durch die Steuereinheit 7 der DPU 4 zugeführt. Im Schritt 45 speichert die DPU 4 die empfangenen digitalen Signalwerte Σiijx1i im Speicher 8. Im Schritt 46 berechnet die DPU 4 digitale Signalwerte x2j für entsprechende Neuronen n2j der Schicht 2 als: x 2 j = f ( i W ^ i j x 1 i ) .
    Figure DE112018004223T5_0001
  • Im Schritt 47 werden die Signalwerte x2j im Speicher 8 gespeichert. Auf diese Weise implementiert die DPU die Neuronen n2j der Schicht 2 durch Anwenden der Aktivierungsfunktionf auf die digitalen Signalwerte, die den Ausgangssignalen der Anordnungen entsprechen, die aus der vorhergehenden Neuronenschicht erhalten wurden, um die digitalen Signalwerte zu erzeugen, die den Eingangssignalen der Anordnungen entsprechen, die diesen Neuronen n2j zugehörig sind.
  • Die obigen Schritte 43 bis 47 implementieren eine Vorwärtsausbreitung von Signalen zwischen den Schichten 1 und 2 des KNN 1. Die Schritte 48 bis 52 entsprechen jeweils den Schritten 43 bis 47, übertragen jedoch Signale zwischen den Schichten 2 und 3. Folglich werden im Schritt 49 den Neuronen n2j zugehörige Eingangssignale den Zeilenleitungen rj der Anordnung α2 zugeführt, um Ausgangssignale auf den Spaltenleitungen ck zu erhalten. Die entsprechenden digitalen Signalwerte Σjjkx2j werden der DPU 4 zugeführt, die die digitalen Signalwerte x3k für die Ausgangsneuronen n3k berechnet als: x 3 k = f ( j W ^ j k x 2 j ) .
    Figure DE112018004223T5_0002
  • Die Signalwerte x3k stellen die Netzausgangssignale für den Vorwärtsausbreitungsvorgang bereit.
  • 8 zeigt ausführlichere Schritte des Rückwärtsausbreitungsvorgangs für das KNN 1. Im Schritt 60 berechnet die DPU 4 für die letzte Schicht von Neuronen im Rückwärtsausbreitungsvorgang, d.h. für die Ausgangsneuronen n3k , entsprechende Fehlerwerte δ3k . Die Fehlerwerte δ3k sind abhängig von einer erwarteten Ausgabe des KNN für die aktuelle Trainingsstichprobe und den digitalen Signalwerten Σjjkx2j, die den Ausgangssignalen der Anordnung α2 entsprechen, die aus der vorhergehenden Neuronenschicht, der Schicht 2, erhalten wurden. Insbesondere wird die Ausgabe x3k = f(Σjjkx2j) von jedem Neuron n3k von der erwarteten Ausgabe für dieses Neuron subtrahiert, um den entsprechenden Fehlerwert δ3k zu erhalten. Die erwartete Ausgabe für jedes Neuron n3k kann aus der bekannten Klassifizierungsbezeichnung für die aktuelle Trainingsstichprobe ermittelt werden, z.B. eine Bezeichnung von 0 bis 9 bei MNIST-Stichproben. (Zum Beispiel kann jede Klasse 0 bis 9 durch ein entsprechendes Ausgangsneuron dargestellt werden, das erwartungsgemäß die stärkste Ausgabe hat, wenn eine Stichprobe dieser Klasse dem Netz „gezeigt“ wird. Im Idealfall sollte die Ausgabe des Neurons „1“ sein und alle anderen Ausgaben von Neuronen, die anderen Klassen entsprechen, sollten „0“ sein. Diese Einsen und Nullen, die die Probenklasse angeben, stellen die erwartete Ausgabe des Netzes bereit.) Im Schritt 61 speichert die DPU 4 die Fehlerwerte δ3k . Im Schritt 62 führt die DPU 4 die Fehlerwerte über den Bus 5 der Memcomputereinheit 3 zu und setzt die Steuereinheit 7 in den Rückwärtsausbreitungsmodus. Im Schritt 63 führt die Steuereinheit 7 die Fehlerwerte δ3k dem Spalten-DAC 12 der memristiven Anordnung α2 zu. (Die Fehlerwerte können in der DPU 4 entsprechend skaliert werden, um die vollständigen Bereich des DAC 12 zu verwenden, wenn sie als Spannungen angelegt werden (z.B. δ 2 j = δ k / m a x k | δ k |
    Figure DE112018004223T5_0003
    )). Entsprechende analoge Spannungssignale, die entsprechenden Neuronen n3k zugehörig sind, werden auf diese Weise als Eingangssignale entsprechenden Spaltenleitungen ck der Anordnung zugeführt, wie in 9 schematisch dargestellt ist. Die sich ergebenden Ausgangsstromsignale auf den Zeilenleitungen rj entsprechen folglich gewichteten Summen der Eingangssignale gemäß den Gewichten Ŵjk von Einheiten 10 in jeder Zeile. Die Zeilenausgangssignale werden durch den Zeilen-ADC 11 in digitale Signalwerte Σkjkδ3k umgesetzt, und die digitalen Signalwerte werden durch die Steuereinheit 7 der DPU 4 zugeführt. Im Schritt 64 empfängt und speichert die DPU 4 die Ausgangssignalwerte Σkjkδ3k. Im Schritt 65 berechnet die DPU 4 entsprechende Fehlerwerte δ2j für die Schicht 2 als: δ 2 j = k W ^ j k δ 3 k g ( i W ^ i j x 1 i ) .
    Figure DE112018004223T5_0004
    wobei g eine nichtlineare Funktion darstellt, die sich von der Aktivierungsfunktion f unterscheidet und die Ableitung von f in dem speziellen Fall aufweist, in dem der Trainingsalgorithmus die Zielfunktion der mittleren quadratischen Abweichung verringert. Die jeweiligen Fehlerwerte δ2j für Neuronen in der Schicht 2 beruhen folglich auf den digitalen Signalwerten Σkjkδ3k, die den Ausgangssignalen der Anordnungen entsprechen, die beim Rückwärtsausbreitungsvorgang aus der vorhergehenden Neuronenschicht (Schicht 3) erhalten wurden, und den Ausgangssignalen Σiijx1i der Anordnungen, die beim Vorwärtsausbreitungsvorgang aus der vorhergehenden Neuronenschicht (Schicht 1) erhalten wurden. Im Schritt 66 werden die Fehlerwerte δ2j im Speicher 8 gespeichert.
  • Die obigen Schritte 62 bis 66 implementieren eine Rückwärtsausbreitung von Fehlersignalen zwischen den Schichten 3 und 2 des KNN 1. Bei KNNs mit zusätzlichen verdeckten Schichten würden die Schritte 62 bis 66 für jede nachfolgende Neuronenschicht bis zur vorletzten Neuronenschicht in der Rückwärtsausbreitungsrichtung wiederholt. Da die Schicht 2 in diesem Beispiel die vorletzte Schicht ist, beendet der Schritt 66 hier den Rückwärtsausbreitungsvorgang.
  • 10 stellt Schritte des Gewichtsaktualisierungsvorgangs in einer ersten Ausführungsform dar. Der Einfachheit halber wird der Vorgang für Einheiten in der ersten Anordnung α1 beschrieben. Im Schritt 70 werden die Signalwerte x1i der Schicht 1 und die Fehlerwerte δ2j der Schicht 2 aus dem Speicher in die DPU 4 abgerufen. Im Schritt 71 berechnet die DPU die digitalen Gewichtskorrekturwerte ΔW für entsprechende Einheiten 10 in der Anordnung α1 als: Δ W i j = η x 1 i δ 2 j
    Figure DE112018004223T5_0005
    wobei η ein festgelegter Lernparameter (learning parameter) für das Netzwerk ist. Der Gewichtskorrekturwert ΔWij für eine einer Synapse sij entsprechende Einheit, die ein Paar von Neuronen n1i und n2j im KNN 1 miteinander verbindet, wird folglich berechnet in Abhängigkeit von dem Eingangssignal, das beim Vorwärtsausbreitungsvorgang vom Neuron n1 empfangen wurde, und von dem Fehlersignal, das beim Rückwärtsausbreitungsvorgang für das Neuron n2 berechnet wurde. Im Schritt 72 rundet die DPU 4 jeden Gewichtskorrekturwert ΔWij mit einer festgelegten Schrittweite ε, um einen gerundeten Korrekturwert ΔW̃ij , d.h. Δ W ˜ i j = r o u n d ( Δ W i j ε )
    Figure DE112018004223T5_0006
    zu erzeugen. Hier kann nach Belieben herkömmliches oder stochastisches Runden verwendet werden. Die Schrittweite ε gibt vorzugsweise die Gewichtsänderung einer memristiven Einheit in Reaktion auf Zuführen eines festgelegten Programmierimpulses an, d.h. eines Impulses mit einer festgelegten Amplitude und Dauer. Im Schritt 73 überträgt die DPU 4 die gerundeten Korrekturwerte ΔW̃ij für Einheiten 10 an die Memcomputereinheit 3 und setzt die Steuereinheit 7 in den Programmiermodus. Im Schritt 74 führt die Steuereinheit jeder Einheit 10 ein Programmiersignal zu, um das gespeicherte Gewicht Ŵij um einen Betrag anzupassen, der von dem gerundeten Korrekturwert ΔW̃ij für diese Einheit abhängig ist. Das Programmiersignal kann hier mehrere der zuvor erwähnten Programmierimpulse aufweisen, die dem gerundeten Korrekturwert ΔW̃ij entsprechen. Das sich ergebende gespeicherte Gewicht wird folglich aktualisiert zu Ŵij + ΔW̃ij = neues Ŵij.
  • In einigen Ausführungsformen können für alle Einheiten 10 in der Anordnung Gewichtskorrekturwerte ΔWij berechnet werden. In anderen kann ΔWij lediglich für eine Teilgruppe von Einheiten berechnet werden, z.B. eine zufällig ausgewählte Teilgruppe, oder für Einheiten, bei denen x1i und/oder δ2j einen Schwellenpegel überschreiten. Im Allgemeinen können Fehlerwerte δ2j positiv oder negativ sein, wobei Gewichte gemäß dem Vorzeichen von ΔW̃ij erhöht („verstärkt“) oder verringert („abgeschwächt“) werden können. Programmierimpulse und die Schrittweite ε können je nach Eigenschaften der memristiven Einheiten zum Verstärken und Abschwächen unterschiedlich sein. Außerdem können Aktualisierungsvorgänge nach der Rückwärtsausbreitung bei jeder Wiederholung des Trainingsschemas („Online-Training“) oder nach einer bestimmten Anzahl K von Wiederholungen („Stapel-Training“) ausgeführt werden. Im letzteren Fall können Gewichtskorrekturwerte ΔWij über K Trainingsproben in der DPU 4 kumuliert werden.
  • Gewichte Ŵjk von Einheiten in der Anordnung α2 werden in ähnlicher Weise auf der Grundlage von gerundeten Gewichtskorrekturwerten ΔW̃jk aktualisiert, die aus den digitalen Gewichtskorrekturwerten ΔWjk = ηx2jδ3k für diese Einheiten berechnet werden. Schritte des Prozesses aus 10 können für verschiedene memristive Einheiten parallel oder der Reihe nach für jede Einheit sequenziell ausgeführt werden. Ebenso können Schritte des Gewichtsaktualisierungsprozesses für bestimmte memristive Einheiten oder Teilgruppen von Einheiten in jeder Anordnung sequenziell ausgeführt werden. In einigen Ausführungsformen können auch unterschiedliche Programmierimpulse und Schrittweiten ε für Einheiten verwendet werden, die verschiedene Synapsenschichten implementieren.
  • Das obige System implementiert ein KNN-Trainingsverfahren mit gemischter Genauigkeit, in dem die memristiven Anordnungen mit geringer Genauigkeit für die Vorwärts- und Rückwärtsausbreitungsberechnungen genutzt werden, der Gewichtsaktualisierungsvorgang jedoch auf Gewichtskorrekturwerten ΔW beruht, die in der DPU 4 digital berechnet werden. Die Gewichtskorrekturwerte werden folglich mit digitaler Genauigkeit berechnet, vorzugsweise mit einer 16-Bit- (Fest- oder Gleitkomma-) Genauigkeit, und die sich ergebenden digitalen Werte werden zum Ermitteln von Programmiersignalen für die Anordnungen verwendet. Diese Technik verbessert die Genauigkeit beim Gewichtsaktualisierungsvorgang, wobei die parallelen Rechenfähigkeiten der memristiven Anordnungen mit hoher Geschwindigkeit und geringer Leistungsaufnahme genutzt werden. Die gespeicherten Gewichte werden schrittweise aktualisiert statt komplett neu programmiert, und Sätze von Gewichten für die memristiven Anordnungen müssen nicht in der DPU 4 gespeichert werden, wodurch der Speicherbedarf verringert wird.
  • Im Anschluss an das Trainieren des KNN 1 kann die Vorrichtung 2 in einem Test- (oder „Inferenz“-) Modus verwendet werden, um Eingangsdaten auf der Grundlage der trainierten Gewichte Ŵij, Ŵjk zu klassifizieren. Im Inferenzmodus werden Eingangsdaten (z.B. MNIST-Testziffern) dem Netz zugeführt, das im Vorwärtsausbreitungsmodus betrieben wird, und die Eingangsdaten werden auf der Grundlage der Netzausgabe klassifiziert (z.B. als Ziffer 0 bis 9). Ein Klassifizieren kann in der DPU 7 beispielsweise unter Verwenden einer Softmax-Funktion ausgeführt werden. 11 zeigt Simulationsergebnisse für einen Inferenzbetrieb mit MNIST-Testdaten im Anschluss an das Trainieren unter Verwenden des obigen Gewichtsaktualisierungsvorgangs mit stochastischem Runden im Schritt 72. Die Testgenauigkeit ist im Vergleich mit der Bitgenauigkeit zum Speichern von Gewichten Ŵ in Einheiten 10 dargestellt. Zum Vergleich werden auch die entsprechenden Ergebnisse gezeigt, die mit einem kompletten 64-Bit-Gleitkomma-Trainingsverfahren erhalten werden. Es ist ersichtlich, dass die Testgenauigkeit des obigen Verfahrens mit lediglich 4-Bit-Genauigkeit von gespeicherten Gewichten W nahe an Ergebnisse mit 64-Bit-Genauigkeit heran kommt. Bei einer Genauigkeit von 8 oder mehr Bit bei Gewichten Ŵ ist die Testgenauigkeit äquivalent zu der Implementierung mit 64-Bit-Genauigkeit.
  • Beim obigen ersten Gewichtsaktualisierungsverfahren kann die Klassifizierungsgenauigkeit verringert werden, wenn die Schrittweite ε groß ist oder die Gewichtsaktualisierungen auf ungenaue Weise ausgeführt werden. Der Grund hierfür besteht darin, dass genaue Informationen über ΔW nach dem Runden verloren gehen, so dass Fehler nicht präzise erfasst werden können. Im Folgenden werden bevorzugte Gewichtsaktualisierungsprozeduren beschrieben, die dieses Problem angehen.
  • 12 zeigt Schritte einer zweiten Ausführungsform der Gewichtsaktualisierungsprozedur. Bei dieser Ausführungsform speichert die DPU 4 einen Satz von (hochgenauen) digitalen Gewichtswerten W im Speicher 8, die den durch entsprechende memristive Einheiten 10 im Anordnungssatz 6 gespeicherten Gewichten W entsprechen. Die Funktionsweise wird hier wieder für Einheiten in der Anordnung α1 beschrieben. Im Schritt 80 werden Signalwerte x1i der Schicht 1 und Fehlerwerte δ2j der Schicht 2 aus dem Speicher in die DPU 4 abgerufen. Im Schritt 81 berechnet die DPU die digitalen Gewichtskorrekturwerte ΔW von Einheiten 10 wie zuvor: Δ W i j = η 1 i δ 2 j
    Figure DE112018004223T5_0007
  • Im Schritt 82 ruft die DPU 4 die digitalen Gewichtswerte W für entsprechende Einheiten 10 aus dem Speicher 8 ab. Im Schritt 83 berechnet die DPU 4 neue digitale Gewichtswerte für entsprechende Einheiten aus dem aktuellen digitalen Gewichtswert W und dem digitalen Gewichtskorrekturwert ΔW, der im Schritt 81 für jede Einheit berechnet wurde: Wij + ΔWij = neues Wij. Diese Berechnung wird folglich mit digitaler Genauigkeit ausgeführt, vorzugsweise mit hoher Genauigkeit, d.h. mindestens 16-Bit-Genauigkeit, und kann falls gewünscht z.B. mit 32- oder 64-Bit-Genauigkeit ausgeführt werden. Im Schritt 84 steuert die DPU 4 die Memcomputereinheit 3, so dass sie jeder Einheit 10 ein Programmiersignal in Abhängigkeit vom neuen digitalen Gewichtswert Wij für diese Einheit zuführt.
  • In einer Implementierung kann der Schritt 84 hier durch Lesen der durch entsprechende memristive Einheiten gespeicherten Gewichte W über eine Lesemodus-Funktion der Steuereinheit 7 und anschließendes Berechnen einer Differenz zwischen dem neuen digitalen Gewichtswert W für eine Einheit und dem gelesenen Gewicht W für diese Einheit ausgeführt werden. Anschließend wird der Einheit ein Programmiersignal zugeführt, um das gespeicherte Gewicht W um einen Betrag in Abhängigkeit von der berechneten Differenz für diese Einheiten anzupassen. Die Differenzwerte können hier gemäß einer Schrittweite ε (deterministisch oder stochastisch) gerundet werden, wodurch eine Gewichtsänderung einer Einheit in Reaktion auf Zuführen eines festgelegten Programmierimpulses angezeigt wird, und das Programmiersignal kann hier mehrere Programmierimpulse aufweisen, die dem gerundeten Differenzwert entsprechen. Die gespeicherten Gewichte Ŵij werden folglich schrittweise aktualisiert.
  • In einer anderen Implementierung von Schritt 84 können die Gewichte Ŵij anstelle von schrittweisen Aktualisierungsvorgängen komplett neu programmiert werden. In diesem Fall werden Programmiersignale zugeführt, so dass jede Einheit auf der Grundlage des neuen digitalen Gewichtswertes W für die Einheit neu programmiert wird. Dies kann zum Beispiel durch ein Schema zum Programmieren und Verifizieren ausgeführt werden, bei dem ein Gewicht wiederholt programmiert und gelesen wird, um Ŵij so nahe wie möglich an den entsprechenden digitalen Wert W heranzubringen. Eine (deterministisch oder stochastisch) gerundete Version von W kann hier ebenfalls verwendet werden.
  • Das Verfahren von 12 führt zu finalen Klassifizierungsgenauigkeiten, die sehr nahe bei einer vollständigen 64-Bit-Gleitkomma-Implementierung liegen. Dies wird in 13 für das Verfahren veranschaulicht, in dem Gewichte auf der Grundlage einer deterministisch gerundeten Version von W neu programmiert werden. Die Klassifizierungsgenauigkeit wird verbessert, da die Berechnung W + ΔW mit hoher Genauigkeit erfolgt. Infolgedessen geht keine Information über ΔW verloren, und der Prozess gleicht dementsprechend potenziell ungenaue Aktualisierungsvorgänge von Ŵij aus.
  • Das Verfahren von 12 hat einen zusätzlichen Mehraufwand aufgrund des Rücklesens von Gewichten oder des erneuten Programmierens der gesamten Anordnung bei jeder Gewichtsaktualisierung zur Folge, und dies kann bei einigen Implementierungen unpraktisch sein. 14 zeigt Schritte eines dritten, besonders bevorzugten Gewichtsaktualisierungsverfahrens, das diesen Mehraufwand vermeidet. In diesem Verfahren speichert die DPU 4 einen Satz von (hochgenauen) digitalen Häufungswerten χ im Speicher 8 für entsprechende memristive Einheiten 10 im Anordnungssatz 6. Diese Häufungswerte χ werden zu Beginn des Trainingsvorgangs auf null initialisiert. Die Schritte 90 und 91 von 14 entsprechen den Schritten 80 und 81 von 12. Im Schritt 92 ruft die DPU 4 die digitalen Häufungswerte χ für entsprechende Einheiten 10 aus dem Speicher 8 ab. Im Schritt 93 berechnet die DPU 4 aktualisierte Häufungswerte für entsprechende Einheiten aus dem Gewichtskorrekturwert ΔW und dem gespeicherten Häufungswert χ für jede Einheit: χij + ΔWij = aktualisiertes χij . Im Schritt 94 ermittelt die DPU 4 einen Gewichtsanpassungsbetrag Aij aus dem aktualisierten Häufungswert χij für jede Einheit. Ausführliche Beispiele für diesen Schritt werden im Folgenden beschrieben. Im Schritt 95 steuert die DPU 4 die Memcomputereinheit 3, so dass sie jeder Einheit 10 ein Programmiersignal zuführt, um das gespeicherte Gewicht Ŵij um einen Betrag anzupassen, der dem Gewichtsanpassungsbetrag Aij für diese Einheit entspricht. Im Schritt 96 berechnet die DPU 4 sodann neue digitale Häufungswerte für entsprechende Einheiten durch Subtrahieren des Gewichtsanpassungsbetrags von den aktualisierten Häufungswerten für jede Einheit: Xij - Aij = neues χij. Die Berechnungen der Häufungswerte werden folglich mit digitaler Genauigkeit ausgeführt, vorzugsweise mit mindestens 16-Bit-Genauigkeit, und können falls gewünscht mit höherer (z.B. 32- oder 64-Bit-) Genauigkeit ausgeführt werden.
  • Ein erstes Beispiel der Prozedur zum Berechnen des Gewichtsaktualisierungsbetrags Aij wird in 15 dargestellt. Schritte 100 bis 102 implementieren die Schritte 94 und 95 von 14. Im Schritt 100 ermittelt die DPU 4 die Gewichtsaktualisierungsbeträge Aij durch (deterministisches der stochastisches) Runden des aktualisierten Häufungswertes χij für jede Einheit mit einer festgelegten Schrittweite ε, wobei ε > 0. Wieder zeigt diese Schrittweite ε eine Gewichtsänderung einer memristiven Einheit in Reaktion auf Zuführen eines festgelegten Programmierimpulses an. Das gerundete Ergebnis ergibt eine Anzahl nij = round ( χ i j ε )
    Figure DE112018004223T5_0008
    dieser der Einheit zuzuführenden Programmierimpulse. Der Gewichtsanpassungsbetrag für jede Einheit ist hier folglich Aij = nijε. Im Allgemeinen können Häufungswerte χij und folglich der Wert von nlj positiv oder negativ sein, und Gewichte können entsprechend dem Vorzeichen von nlj verstärkt oder abgeschwächt werden. (Programmierimpulse und die Schrittweite ε können zum Verstärken und Abschwächen und auch für verschiedene KNN-Schichten unterschiedlich sein). Die DPU 4 überträgt die sich ergebenden Anzahlen nij im Schritt 101 an die Memcomputereinheit 3. Wenn nij > 0, führt die Steuereinheit 7 der Ŵij speichernden Einheit |nij| verstärkende Programmierimpulse zu. Wenn nij < 0, führt die Steuereinheit 7 der Einheit |nij| abschwächende Programmierimpulse zu. Unter Rückkehr zum Schritt 96 von 14 wird der neue Häufungswert für jede Einheit berechnet als: χij - nijε.
  • 16 zeigt ein zweites Beispiel der Prozedur zum Berechnen des Gewichtsaktualisierungsbetrags Aij . Schritte 105 bis 108 implementieren die Schritte 94 und 95 von 14. Bei dieser Prozedur vergleicht die DPU 4 den aktualisierten Häufungswert χij für jede memristive Einheit mit einem festgelegten Schwellenwert in Abhängigkeit von der Schrittweite ε, wobei ε wie zuvor definiert ist. In diesem Beispiel ist der Schwellenwert ±ε abhängig vom jeweiligen Vorzeichen von χij . Wenn χij > ε („Ja“ im Entscheidungsschritt 105), weist die DPU im Schritt 106 die Steuereinheit 7 an, der Einheit einen verstärkenden Programmierimpuls zuzuführen. Andernfalls geht die Verarbeitung weiter zum Entscheidungsschritt 107. Wenn χij < -ε, weist die DPU 4 im Schritt 108 die Steuereinheit 7 an, der Einheit einen abschwächenden Programmierimpuls zuzuführen. Bei -ε ≤ χij ≤ ε bleibt das Gewicht Ŵij unverändert. Folglich ist der Gewichtsanpassungsbetrag Aij für eine Einheit hier entweder null oder ±ε, und der neue Häufungswert wird dementsprechend im Schritt 96 von 14 berechnet.
  • Die Ausführungsform von 16 erfordert Zuführen von lediglich einem einzigen Programmierimpuls pro Gewichtsaktualisierungsvorgang, was eine einfachere Hardware-Implementierung in der Memcomputereinheit 3 ermöglicht. Falls gewünscht, können mit dieser Technik verschiedene andere Schwellenwerte auf der Grundlage der Schrittweite ε, z.B. ±ε/2, verwendet werden.
  • Gewichtsaktualisierungsverfahren auf der Grundlage von 4 vermeiden die Notwendigkeit eines komplett neuen Programmierens oder Rücklesens der Gewichte W, wobei gleichzeitig alle Informationen über ΔW in den digitalen Häufungswerten χ erhalten bleiben. Dadurch wird eine außerordentlich leistungsfähige Implementierung für ein schnelles, hochgenaues Trainieren eines KNN bereitgestellt. Die ausgezeichneten Klassifizierungsgenauigkeiten, die mit dieser Technik unter Verwenden des Verfahrens von 15 erzielt werden können, werden in 17 gezeigt.
  • Selbstverständlich können zahlreiche Änderungen und Modifikationen an den beschriebenen beispielhaften Ausführungsformen vorgenommen werden. Zum Beispiel können Ausführungsformen vorgesehen werden, in denen das Trainingsverfahren die Memcomputereinheit 3 lediglich für einen der Vorwärts- und Rückwärtsausbreitungsschritte verwendet. Zum Beispiel kann die Vorwärtsberechnung unter Verwenden des Anordnungssatzes 6 ausgeführt werden, während die Rückwärtsberechnungen in der DPU 4 erfolgen. Zwar wird die Neuronenaktivierungsfunktion f in der DPU 4 wie oben erwähnt mit hoher Genauigkeit implementiert, in anderen Ausführungsformen kann die Neuronenfunktionalität jedoch auch durch analoge Schaltungen in der Memcomputereinheit 3 implementiert werden.
  • Im Allgemeinen können memristive Einheiten 10 in jeder gewünschten Weise implementiert werden, z.B. auf der Grundlage von einer oder einer Mehrzahl von PCM-Zellen und/oder anderen memristiven Speicherelementen in verschiedenen Schaltungsanordnungen. Es kann ein beliebiger Typ von memristivem Speicherelement verwendet werden, z.B. PCM- oder andere resistive Speicherzellen wie etwa RAM- (RRAM- oder ReRAM-) Zellen, darunter Leitungsbrücken-RRAM-Zellen (conductive bridge RRAM cells), Oxid- oder Metalloxid-RRAM-Zellen, Karbon-RRAM-Zellen und magnetoresistive Direktzugriffsspeicher- (MRAM-) Elemente, ferroelektrische Direktzugriffsspeicher- (FeRAM-) Elemente, optische Speicherelemente und Schaltungseinheiten, z.B. CMOS-Schaltungen, die Transistoren, Widerstände, Kondensatoren und/oder Induktoren aufweisen, die das Verhalten memristiver Elemente emulieren.
  • In einigen Fällen können Schritte von Ablaufplänen in einer anderen Reihenfolge als der gezeigten implementiert werden, und Schritte können gegebenenfalls parallel ausgeführt werden.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden hier zur Veranschaulichung dargelegt, sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Modifikationen und Änderungen sind für Fachleute ersichtlich, ohne vom Schutzumfang und Gedanken der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt erhältlichen Technologien bestmöglich zu erläutern oder um anderen Fachleuten ein Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Burr et al., IEEE Transactions on Electron Devices 62(11), Seiten 3498 bis 3507, 2015 [0004]

Claims (24)

  1. Verfahren zum Trainieren eines künstlichen neuronalen Netzes mit einer Folge von Schichten von Neuronen und einem Satz von Kreuzschienenanordnungen memristiver Einheiten, die zwischen Zeilen- und Spaltenleitungen geschaltet sind, wobei Schichten von Synapsen implementiert werden, die zwischen den Neuronenschichten angeordnet sind, wobei jede memristive Einheit ein Gewicht W für eine Synapse speichert, die ein entsprechendes Paar von Neuronen in aufeinanderfolgenden Neuronenschichten miteinander verbindet, wobei das Verfahren Ausführen von Vorwärtsausbreitungs-, Rückwärtsausbreitungs- und Gewichtsaktualisierungsvorgängen eines sich wiederholenden Trainingsschemas aufweist durch: in mindestens einem der Vorwärtsausbreitungs- und Rückwärtsausbreitungsvorgänge des Schemas Zuführen von Eingangssignalen, die entsprechenden Neuronen zugehörig sind, zu einer von Zeilen- und Spaltenleitungen des Satzes von Anordnungen, um auf der anderen der Zeilen- und Spaltenleitungen Ausgangssignale zu erhalten; Speichern von digitalen Signalwerten, die den Eingangs- und Ausgangssignalen entsprechen, in einer digitalen Verarbeitungseinheit, die funktionsmäßig mit dem Satz von Anordnungen verbunden ist; und Ausführen des Gewichtsaktualisierungsvorgangs des Schemas durch Berechnen von digitalen Gewichtskorrekturwerten ΔW in Abhängigkeit von den digitalen Signalwerten für entsprechende memristive Einheiten in der digitalen Verarbeitungseinheit, und Zuführen von Programmiersignalen zu diesen Einheiten, um die gespeicherten Gewichte W in Abhängigkeit von den jeweiligen digitalen Gewichtskorrekturwerten ΔW zu aktualisieren.
  2. Verfahren nach Anspruch 1, das im Vorwärtsausbreitungsvorgang Zuführen der Eingangssignale zu Zeilenleitungen des Satzes von Anordnungen enthält, um Ausgangssignale auf den Spaltenleitungen zu erhalten.
  3. Verfahren nach Anspruch 2, das im Rückwärtsausbreitungsvorgang Zuführen der Eingangssignale zu Spaltenleitungen des Satzes von Anordnungen enthält, um Ausgangssignale auf den Zeilenleitungen zu erhalten.
  4. Verfahren nach Anspruch 1, das Runden jedes Gewichtskorrekturwertes ΔW mit einer festgelegten Schrittweite ε in der digitalen Verarbeitungseinheit enthält, um einen gerundeten Korrekturwert ΔW̃ zu erzeugen, wobei ein einer memristiven Einheit zugeführtes Programmiersignal den gespeicherten Wert W um einen Betrag anpasst, der abhängig vom gerundeten Korrekturwert ΔW̃ für diese Einheit ist.
  5. Verfahren nach Anspruch 4, wobei die digitalen Gewichtskorrekturwerte von der digitalen Verarbeitungseinheit mit mindestens 16-Bit-Genuaigkeit berechnet werden.
  6. Verfahren nach Anspruch 1, das umfasst: Speichern digitaler Gewichtswerte, die den von entsprechenden memristiven Einheiten gespeicherten Gewichten W entsprechen, in der digitalen Verarbeitungseinheit; und Berechnen neuer digitaler Gewichtswerte für entsprechende Einheiten aus dem gespeicherten digitalen Gewichtswert und dem digitalen Gewichtskorrekturwert ΔW für jede Einheit in der digitalen Verarbeitungseinheit im Gewichtsaktualisierungsvorgang; wobei ein einer memristiven Einheit zugeführtes Programmiersignal von dem neuen digitalen Gewichtswert für diese Einheit abhängig ist.
  7. Verfahren nach Anspruch 6, das im Gewichtsaktualisierungsvorgang umfasst: Lesen der von entsprechenden memristiven Einheiten gespeicherten Gewichte W; und Berechnen einer Differenz zwischen dem neuen digitalen Gewichtswert für eine Einheit und dem gelesenen Gewicht W für diese Einheit in der digitalen Verarbeitungseinheit; wobei ein einer memristiven Einheit zugeführtes Programmiersignal das gespeicherte Gewicht W um einen Betrag anpasst, der von der Differenz für diese Einheit abhängig ist.
  8. Verfahren nach Anspruch 6, das im Gewichtsaktualisierungsvorgang Zuführen der Programmiersignale umfasst, um jede Einheit auf der Grundlage des neuen digitalen Gewichtswertes für diese Einheit neu zu programmieren.
  9. Verfahren nach Anspruch 6, wobei die digitalen Gewichtswerte von der digitalen Verarbeitungseinheit mit mindestens 16-Bit-Genauigkeit gespeichert werden.
  10. Verfahren nach Anspruch 1, das Speichern digitaler Häufungswerte für entsprechende memristive Einheiten in der digitalen Verarbeitungseinheit umfasst und im Gewichtsaktualisierungsvorgang: Berechnen aktualisierter Häufungswerte für entsprechende memristive Einheiten aus dem Gewichtskorrekturwert ΔW und einem gespeicherten Häufungswert für jede Einheit in der digitalen Verarbeitungseinheit und Ermitteln eines Gewichtsanpassungsbetrags aus dem aktualisierten Häufungswert für jede Einheit, wobei ein einer memristiven Einheit zugeführtes Programmiersignal das gespeicherte Gewicht W um einen Betrag anpasst, der dem Gewichtsanpassungsbetrag für diese Einheit entspricht; und Berechnen neuer digitaler Häufungswerte für entsprechende Einheiten in der digitalen Verarbeitungseinheit durch Subtrahieren des Gewichtsanpassungsbetrags von dem aktualisierten Häufungswert für jede Einheit.
  11. Verfahren nach Anspruch 10, das Ermitteln des Gewichtsanpassungsbetrags in der digitalen Verarbeitungseinheit durch Runden des aktualisierten Häufungswertes für jede memristive Einheit mit einer festgelegten Schrittweite ε umfasst, die eine Gewichtsänderung der Einheit in Reaktion auf Zuführen eines festgelegten Programmierimpulses anzeigt, um eine Anzahl n der der Einheit zuzuführenden Programmierimpulse zu erhalten, wobei das dieser memristiven Einheit zugeführte Programmiersignal n solcher Impulse aufweist.
  12. Verfahren nach Anspruch 10, das umfasst: Vergleichen des aktualisierten Häufungswertes für jede memristive Einheit in der digitalen Verarbeitungseinheit mit einem festgelegten Schwellenwert, der von einer Schrittweite ε abhängig ist, die eine Gewichtsänderung der Einheit in Reaktion auf Zuführen eines festgelegten Programmierimpulses anzeigt; und wenn der aktualisierte Häufungswert für eine Einheit den Schwellenwert überschreitet, Zuführen eines Programmierimpulses zu dieser Einheit als ein Programmiersignal.
  13. Verfahren nach Anspruch 10, wobei die digitalen Gewichtskorrekturwerte und die neuen digitalen Häufungswerte von der digitalen Verarbeitungseinheit mit mindestens 16-Bit-Genauigkeit berechnet werden.
  14. Verfahren nach Anspruch 2, das in der digitalen Verarbeitungseinheit Implementieren der Neuronen der Schicht im Vorwärtsausbreitungsvorgang durch Anwenden einer Aktivierungsfunktion auf die digitalen Signalwerte enthält, die den von der vorhergehenden Neuronenschicht erhaltenen Ausgangssignalen entsprechen, um die digitalen Signalwerte zu erzeugen, die den diesen Neuronen zugehörigen Eingangssignalen entsprechen.
  15. Verfahren nach Anspruch 3, das im Rückwärtsausbreitungsvorgang umfasst: Berechnen entsprechender Fehlerwerte in der digitalen Verarbeitungseinheit in Abhängigkeit von einer erwarteten Ausgabe des Netzes und den digitalen Signalwerten, die den aus der vorhergehenden Neuronenschicht erhaltenen Ausgangssignalen entsprechen, für die letzte Schicht von Neuronen im Vorwärtsausbreitungsvorgang; Zuführen von den Fehlerwerten entsprechenden Signalen als Eingangssignale, die Neuronen in der letzten Schicht zugehörig sind; und für jede nachfolgende Neuronenschicht bis zur vorletzten Neuronenschicht Berechnen entsprechender Fehlerwerte für Neuronen in dieser Schicht in der digitalen Verarbeitungseinheit auf der Grundlage der digitalen Signalwerte, die den aus der vorhergehenden Neuronenschicht im Rückwärtsausbreitungsvorgang erhaltenen Ausgangssignalen und den aus der vorhergehenden Neuronenschicht im Vorwärtsausbreitungsvorgang erhaltenen Ausgangssignalen entsprechen.
  16. Verfahren nach Anspruch 15, das Speichern digitaler Häufungswerte für entsprechende memristive Einheiten in der digitalen Verarbeitungseinheit umfasst und im Gewichtsaktualisierungsvorgang in der digitalen Verarbeitungseinheit: Berechnen des digitalen Gewichtskorrekturwertes ΔW für eine memristive Einheit, die einer Synapse entspricht, die ein Paar von Neuronen n1 und n2 miteinander verbindet, in Abhängigkeit von dem Eingangssignal, das vom Neuron n1 im Vorwärtsausbreitungsvorgang empfangen wurde, und von dem Fehlersignal, das im Rückwärtsausbreitungsvorgang für das Neuron n2 berechnet wurde; Berechnen aktualisierter Häufungswerte für entsprechende memristive Einheiten aus dem Gewichtskorrekturwert ΔW und einem gespeicherten Häufungswert für jede Einheit und Ermitteln eines Gewichtsanpassungsbetrags aus dem aktualisierten Häufungswert für jede Einheit, wobei ein einer memristiven Einheit zugeführtes Programmiersignal das gespeicherte Gewicht W um einen Betrag anpasst, der dem Gewichtsanpassungsbetrag für diese Einheit entspricht; und Berechnen neuer digitaler Häufungswerte für entsprechende Einheiten durch Subtrahieren des Gewichtsanpassungsbetrags von dem aktualisierten Häufungswert für jede Einheit.
  17. Vorrichtung zum Implementieren eines künstlichen neuronalen Netzes, das eine Folge von Schichten von Neuronen mit dazwischen geschalteten Schichten von Synapsen hat, wobei jede Synapse ein entsprechendes Paar von Neuronen in aufeinanderfolgenden Neuronenschichten miteinander verbindet, wobei die Vorrichtung aufweist eine Memcomputereinheit, die einen Satz von Kreuzschienenanordnungen memristiver Einheiten, die zwischen Zeilen- und Spaltenleitungen geschaltet sind, wobei jede memristive Einheit ein Gewicht W für eine entsprechende Synapse speichert, und eine Steuereinheit zum Steuern eines Zuführens von Signalen zu den memristiven Einheiten über die Zeilen- und Spaltenleitungen aufweist, und eine funktionsmäßig mit der Memcomputereinheit verbundene digitale Verarbeitungseinheit, die in der Lage ist, ein Ausführen von Vorwärtsausbreitungs-Rückwärtsausbreitungs- und Gewichtsaktualisierungsvorgängen eines sich wiederholenden Trainingsschemas durch die Vorrichtung zu steuern, wobei: die Steuereinheit in mindestens einem der Vorwärts- und Rückwärtsausbreitungsvorgänge des Schemas einer der Zeilen- und Spaltenleitungen des Satzes von Anordnungen Eingangssignale zuführt, die entsprechenden Neuronen zugehörig sind, um auf den anderen der Zeilen- und Spaltenleitungen Ausgangssignale zu erhalten; die digitale Verarbeitungseinheit digitale Signalwerte speichert, die den Eingangs- und Ausgangssignalen entsprechen; und die digitale Verarbeitungseinheit im Gewichtsaktualisierungsvorgang des Schemas digitale Gewichtskorrekturwerte ΔW für entsprechende memristive Einheiten in Abhängigkeit von den digitalen Signalwerten berechnet und die Steuereinheit diesen Einheiten Programmiersignale zuführt, um die gespeicherten Gewichte W in Abhängigkeit von den entsprechenden digitalen Gewichtskorrekturwerten ΔW zu aktualisieren.
  18. Vorrichtung nach Anspruch 17, wobei die Steuereinheit in der Lage ist, im Vorwärtsausbreitungsvorgang die Eingangssignale Zeilenleitungen des Satzes von Anordnungen zuzuführen, um Ausgangssignale auf den Spaltenleitungen zu erhalten, und im Rückwärtsausbreitungsvorgang die Eingangssignale Spaltenleitungen des Satzes von Anordnungen zuzuführen, um Ausgangssignale auf den Zeilenleitungen zu erhalten.
  19. Vorrichtung nach Anspruch 18, wobei die digitale Verarbeitungseinheit in der Lage ist, die Neuronen einer Schicht im Vorwärtsausbreitungsvorgang zu implementieren durch Anwenden einer Aktivierungsfunktion auf die digitalen Signalwerte, die den aus der vorhergehenden Neuronenschicht erhaltenen Ausgangssignalen entsprechen, um die digitalen Signalwerte zu erzeugen, die den diesen Neuronen zugehörigen Eingangssignalen entsprechen.
  20. Vorrichtung nach Anspruch 17, wobei: die digitale Verarbeitungseinheit in der Lage ist, jeden Gewichtskorrekturwert ΔW mit einer festgelegten Schrittweite ε zu runden, um einen gerundeten Korrekturwert ΔW̃ zu erzeugen; und die Steuereinheit in der Lage ist, einer memristiven Einheit ein Programmiersignal zuzuführen, um das gespeicherte Gewicht W um einen Betrag in Abhängigkeit von dem gerundeten Korrekturwert ΔW̃ für diese Einheit anzupassen.
  21. Vorrichtung nach Anspruch 17, wobei: die digitale Verarbeitungseinheit in der Lage ist, digitale Gewichtswerte zu speichern, die den von entsprechenden memristiven Einheiten gespeicherten Gewichten Ŵ entsprechen, und im Gewichtsaktualisierungsvorgang neue digitale Gewichtswerte für entsprechende Einheiten aus dem gespeicherten digitalen Gewichtswert und dem digitalen Gewichtskorrekturwert ΔW für jede Einheit zu berechnen; und die Vorrichtung so in der Lage ist, dass das einer memristiven Einheit zugeführte Programmiersignal von dem neuen digitalen Gewichtswert für diese Einheit abhängig ist.
  22. Vorrichtung nach Anspruch 17, wobei: die digitale Verarbeitungseinheit in der Lage ist, digitale Häufungswerte für entsprechende memristive Einheiten zu speichern; die digitale Verarbeitungseinheit in der Lage ist, im Gewichtsaktualisierungsvorgang aktualisierte Häufungswerte für entsprechende memristive Einheiten aus dem Gewichtskorrekturwert ΔW und einem gespeicherten Häufungswert für jede Einheit zu berechnen, einen Gewichtsanpassungsbetrag aus dem aktualisierten Häufungswert für jede Einheit zu ermitteln und neue digitale Häufungswerte für entsprechende Einheiten durch Subtrahieren des Gewichtsanpassungsbetrags von dem aktualisierten Häufungswert für jede Einheit zu berechnen; und die Vorrichtung so in der Lage ist, dass das einer memristiven Einheit zugeführte Programmiersignal das gespeicherte Gewicht Ŵ um einen Betrag anpasst, der dem Gewichtsanpassungsbetrag für diese Einheit entspricht.
  23. Vorrichtung nach Anspruch 22, wobei die digitale Verarbeitungseinheit in der Lage ist, die digitalen Gewichtskorrekturwerte und die neuen digitalen Häufungswerte mit mindestens 16-Bit-Genauigkeit zu berechnen.
  24. Vorrichtung nach Anspruch 17, wobei jede memristive Einheit eine Mehrzahl von memristiven Speicherelementen aufweist.
DE112018004223.5T 2017-10-24 2018-10-23 Trainieren künstlicher neuronaler Netze Granted DE112018004223T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762576081P 2017-10-24 2017-10-24
US62/576,081 2017-10-24
US16/022,950 US11348002B2 (en) 2017-10-24 2018-06-29 Training of artificial neural networks
US16/022,950 2018-06-29
PCT/IB2018/058251 WO2019082077A1 (en) 2017-10-24 2018-10-23 TRAINING ARTIFICIAL NEURAL NETWORKS

Publications (1)

Publication Number Publication Date
DE112018004223T5 true DE112018004223T5 (de) 2020-05-07

Family

ID=66171101

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018004223.5T Granted DE112018004223T5 (de) 2017-10-24 2018-10-23 Trainieren künstlicher neuronaler Netze

Country Status (6)

Country Link
US (1) US11348002B2 (de)
JP (1) JP7182835B2 (de)
CN (1) CN111279366B (de)
DE (1) DE112018004223T5 (de)
GB (1) GB2581731B (de)
WO (1) WO2019082077A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11468332B2 (en) * 2017-11-13 2022-10-11 Raytheon Company Deep neural network processor with interleaved backpropagation
US11361215B2 (en) * 2017-11-29 2022-06-14 Anaflash Inc. Neural network circuits having non-volatile synapse arrays
US11403529B2 (en) * 2018-04-05 2022-08-02 Western Digital Technologies, Inc. Noise injection training for memory-based learning
US11741362B2 (en) * 2018-05-08 2023-08-29 Microsoft Technology Licensing, Llc Training neural networks using mixed precision computations
US10432240B1 (en) 2018-05-22 2019-10-01 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise
JP7259253B2 (ja) * 2018-10-03 2023-04-18 株式会社デンソー 人工ニューラルネットワーク回路
US11133059B2 (en) * 2018-12-06 2021-09-28 Western Digital Technologies, Inc. Non-volatile memory die with deep learning neural network
DE102019106529A1 (de) 2019-03-14 2020-09-17 Infineon Technologies Ag Fmcw radar mit störsignalunterdrückung mittels künstlichem neuronalen netz
US11907829B2 (en) * 2019-03-14 2024-02-20 Infineon Technologies Ag FMCW radar with interference signal suppression using artificial neural network
US11531898B2 (en) 2019-05-16 2022-12-20 International Business Machines Corporation Training of artificial neural networks
US10763905B1 (en) 2019-06-07 2020-09-01 Micron Technology, Inc. Wireless devices and systems including examples of mismatch correction scheme
US20200410319A1 (en) * 2019-06-26 2020-12-31 Micron Technology, Inc. Stacked artificial neural networks
CN110458284A (zh) * 2019-08-13 2019-11-15 深圳小墨智能科技有限公司 一种模拟神经网芯片的设计方法及模拟神经网芯片
JP7118930B2 (ja) * 2019-08-19 2022-08-16 株式会社東芝 スパイキングニューラルネットワーク装置およびその学習方法
US11475946B2 (en) * 2020-01-16 2022-10-18 International Business Machines Corporation Synapse weight update compensation
US10972139B1 (en) 2020-04-15 2021-04-06 Micron Technology, Inc. Wireless devices and systems including examples of compensating power amplifier noise with neural networks or recurrent neural networks
CN111833278B (zh) * 2020-07-13 2022-05-17 西南大学 基于忆阻器遗忘特性的图片处理方法
US11568217B2 (en) 2020-07-15 2023-01-31 International Business Machines Corporation Sparse modifiable bit length deterministic pulse generation for updating analog crossbar arrays
US11443171B2 (en) 2020-07-15 2022-09-13 International Business Machines Corporation Pulse generation for updating crossbar arrays
US11496341B2 (en) * 2020-08-13 2022-11-08 Micron Technology, Inc. Wireless devices and systems including examples of compensating I/Q imbalance with neural networks or recurrent neural networks
US20220138579A1 (en) * 2020-11-02 2022-05-05 International Business Machines Corporation Weight repetition on rpu crossbar arrays
CN112418422B (zh) * 2020-11-20 2022-05-27 之江实验室 一种基于人脑记忆机制的深度神经网络训练数据采样方法
US20220230064A1 (en) * 2021-01-20 2022-07-21 Mediatek Singapore Pte. Ltd. Calibration of analog circuits for neural network computing
CN113517007B (zh) * 2021-04-29 2023-07-25 西安交通大学 一种流水处理方法、系统和忆阻器阵列
KR102574156B1 (ko) * 2021-07-06 2023-09-01 고려대학교 산학협력단 역전파와 음수 가중치 설정이 가능한 뉴로모픽 회로
CN113553293A (zh) * 2021-07-21 2021-10-26 清华大学 存算一体装置及其校准方法
CN113837373A (zh) * 2021-09-26 2021-12-24 清华大学 数据处理装置以及数据处理方法
CN115985380B (zh) * 2023-03-17 2023-06-20 之江实验室 一种基于数字电路控制的FeFET阵列数据校验方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3353786B2 (ja) 1990-01-24 2002-12-03 株式会社日立製作所 情報処理装置
CN103455843B (zh) 2013-08-16 2016-03-02 华中科技大学 一种反馈型人工神经网络训练方法及计算系统
US9418331B2 (en) 2013-10-28 2016-08-16 Qualcomm Incorporated Methods and apparatus for tagging classes using supervised learning
US9489618B2 (en) 2014-05-27 2016-11-08 Purdue Research Foudation Electronic comparison systems
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
CN105224986B (zh) 2015-09-29 2018-01-23 清华大学 基于忆阻器件的深度神经网络系统
US10248907B2 (en) 2015-10-20 2019-04-02 International Business Machines Corporation Resistive processing unit
CN105701541A (zh) * 2016-01-13 2016-06-22 哈尔滨工业大学深圳研究生院 一种基于忆阻器脉冲神经网络的电路结构
US9646243B1 (en) 2016-09-12 2017-05-09 International Business Machines Corporation Convolutional neural networks using resistive processing unit array
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
CN106779059B (zh) 2016-12-30 2019-03-05 华中科技大学 一种基于忆阻的巴普洛夫联想记忆的人工神经网络电路
US11429862B2 (en) * 2018-03-20 2022-08-30 Sri International Dynamic adaptation of deep neural networks
US11188825B2 (en) * 2018-10-15 2021-11-30 International Business Machines Corporation Mixed-precision deep-learning with multi-memristive devices
US11074318B2 (en) * 2018-12-14 2021-07-27 Western Digital Technologies, Inc. Hardware accelerated discretized neural network
US11373092B2 (en) * 2019-04-10 2022-06-28 International Business Machines Corporation Training of artificial neural networks
US10825536B1 (en) * 2019-08-30 2020-11-03 Qualcomm Incorporated Programmable circuits for performing machine learning operations on edge devices

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Burr et al., IEEE Transactions on Electron Devices 62(11), Seiten 3498 bis 3507, 2015

Also Published As

Publication number Publication date
JP2021500646A (ja) 2021-01-07
CN111279366A (zh) 2020-06-12
WO2019082077A1 (en) 2019-05-02
GB202006982D0 (en) 2020-06-24
CN111279366B (zh) 2023-06-27
JP7182835B2 (ja) 2022-12-05
GB2581731B (en) 2022-11-09
GB2581731A (en) 2020-08-26
US20190122105A1 (en) 2019-04-25
US11348002B2 (en) 2022-05-31

Similar Documents

Publication Publication Date Title
DE112018004223T5 (de) Trainieren künstlicher neuronaler Netze
DE112018000272T5 (de) Resistive Verarbeitungseinheit mit hysteretischen Aktualisierungen zum Trainieren neuronaler Netze
DE102019116305A1 (de) Pipelining zur verbesserung der inferenzgenauigkeit neuronaler netze
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE112019000437B4 (de) Architektur einer resistiven verarbeitungseinheit mit voneinander getrennter gewichtungsaktualisierungs- und inferenzschaltung
DE202017007641U1 (de) Training von maschinellen Lernmodellen auf mehrere maschinelle Lernaufgaben
DE102019116300A1 (de) Realisierung von binären neuronalen Netzen in Nand-Speicherarrays
DE112019000226T5 (de) Neuromorpher chip zum aktualisieren präziser synaptischer gewichtswerte
DE112018004992B4 (de) Übertragung synaptischer gewichte zwischen leitfähigkeitspaaren mitpolaritätsumkehr zum verringern fester einheitenasymmetrien
DE3501272A1 (de) Adaptives, selbstausbesserndes prozessorfeld
DE102012009502A1 (de) Verfahren zum Trainieren eines künstlichen neuronalen Netzes
DE112019005119T5 (de) Abgleichtechniken zum angleichen des symmetriepunktes als null-gewichtungspunkt in analogen kreuzungspunktanordnungen
DE112020002186T5 (de) Dnn-training mit asymmetrischen rpu-einheiten
DE112018002950T5 (de) System und Verfahren zum Aufbauen von synaptischen Gewichten für künstliche neuronale Netze aus mit Vorzeichen versehenen analogen Leitwertpaaren unterschiedlicher Wertigkeit
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE112017004156T5 (de) Speicherzellenstruktur
DE102022124292A1 (de) Analoge multiply-accumulate-einheit für speicherinterne multibit-zellenberechnung
DE112020000929T5 (de) Programmieren eines phasenwechselspeichersin einer geschlossenen schleife
DE102022100920A1 (de) Compute-in-memory-akkumulator
WO2019121206A1 (de) Verfahren zur realisierung eines neuronalen netzes
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
DE112020005613T5 (de) Neuromorphe Einheit mit Kreuzschienen-Array-Struktur
DE102022100200A1 (de) Compute-In-Memory-Speicherarray, CIM-Speicherarray
DE112021006006T5 (de) VERWENDUNG FERROELEKTRISCHER FELDEFFEKTTRANSISTOREN (FeFETs) ALS KAPAZITIVE VERARBEITUNGSEINHEITEN FÜR IN-MEMORY-COMPUTING
DE112021006459T5 (de) Dynamische konfiguration einer auslese-schaltungsanordnung für verschiedene operationen in einem analogen resistiven kreuzschienen-array

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence
R016 Response to examination communication
R018 Grant decision by examination section/examining division