DE112020005930T5 - Initialisierung von arbeitsspeicher-netzwerken - Google Patents

Initialisierung von arbeitsspeicher-netzwerken Download PDF

Info

Publication number
DE112020005930T5
DE112020005930T5 DE112020005930.8T DE112020005930T DE112020005930T5 DE 112020005930 T5 DE112020005930 T5 DE 112020005930T5 DE 112020005930 T DE112020005930 T DE 112020005930T DE 112020005930 T5 DE112020005930 T5 DE 112020005930T5
Authority
DE
Germany
Prior art keywords
weights
read
write
memory
working memory
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
DE112020005930.8T
Other languages
English (en)
Inventor
Bahman Hekmatshoartabari
Ravi Nair
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 DE112020005930T5 publication Critical patent/DE112020005930T5/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/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/04Architecture, e.g. interconnection topology
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory

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)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

Ein Arbeitsspeicher-Netzwerk kann mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lesevektor angelegt werden, wobei die Arbeitsspeicher-Schreibgewichtungen Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für die Arbeitsspeicher-Matrix parametrisieren, wobei die Arbeitsspeicher-Lesegewichtungen Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes aus der Arbeitsspeicher-Matrix parametrisieren. Mindestens eine der Schreibgewichtungen, der Lesegewichtungen oder Elemente des mindestens einen Lesevektors kann aktualisiert werden, um eine dünne Besetzung und/oder ein Abtastmuster mit niedriger Abweichung zu erhalten. Das Arbeitsspeicher-Netzwerk kann geschult werden, um eine Aufgabe durchzuführen.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Anmeldung betrifft allgemein eine Initialisierung von Arbeitsspeicher-Netzwerken und insbesondere Maschinenlernen und Maschinenlernsysteme, die mit einer Arbeitsspeicher-Komponente verbunden sind.
  • HINTERGRUND
  • Arbeitsspeicher-Netzwerke wie beispielsweise neuronale Turing-Maschinen (NTMs), Memory-Augmented Neural Networks (arbeitsspeichererweiterte neuronale Netzwerke)(MANNs), differenzierbare neuronale Computer (DNCs) und andere können ein künstliches neuronales Netzwerk mit einem externen Arbeitsspeicher verbinden. Die Verbindung kann es Arbeitsspeicher-Netzwerken ermöglichen, rekurrente neuronale Netzwerke (RNNs), wie zum Beispiel Long Short-Term Memories (LSTMs), in Aufgaben zu übertreffen, die ein Erlernen von komplizierten Datentransformationen über lange Zeiträume erfordern, z.B. Kopieren, Sortieren, assoziatives Rückruf -und Few-Shot-Erlernen. Ein Trainieren dieser Arbeitsspeicher-Netzwerke verläuft jedoch nicht geradlinig, und die vorhandenen Ansätze sind nicht zuverlässig. Zum Beispiel kann das Trainieren oft Lese- und Schreibvorgänge in einzelnen Speicherslots zusammenlegen. Ein Trainieren der Arbeitsspeicher-Netzwerke mit vorhandenen Ansätzen kann sehr langsam zu konvergieren sein.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Ein durch einen Computer umgesetztes Verfahren umfasst gemäß einem Aspekt der Erfindung ein Anlegen eines Arbeitsspeicher-Netzwerkes mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lese-Vektor. Die Arbeitsspeicher-Schreibgewichtungen parametrisieren Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für eine externe Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerks. Die Arbeitsspeicher-Lesegewichtungen parametrisieren Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes aus der externen Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerks. Das Verfahren umfasst auch ein Initialisieren von mindestens einer Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors zu initialisieren, um eine dünne Besetzung zu erhalten. Das Verfahren umfasst ferner ein Trainieren des Arbeitsspeicher-Netzwerkes mit einer Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors, die initialisiert wurden, um ein dünn besetztes Merkmal zu erhalten. Die Schulung aktualisiert die Schreibgewichtungen, die Lesegewichtungen und mindestens einen Lesevektor.
  • In einem weiteren Aspekt kann ein durch einen Computer umgesetztes Verfahren zum Trainieren eines Arbeitsspeicher-Netzwerkes ein Anlegen eines Arbeitsspeicher-Netzwerkes mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lese-Vektor umfassen. Die Arbeitsspeicher-Schreibgewichtungen parametrisieren Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für eine externe Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerks. Die Arbeitsspeicher-Lesegewichtungen parametrisieren Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes aus der externen Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerks. Das Verfahren kann auch ein Initialisieren von mindestens einer Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors auf einen konfigurierten Wert umfassen, der auf eine Sequenz mit niedriger Abweichung folgt. Das Verfahren kann auch ein Trainieren des Arbeitsspeicher-Netzwerkes mit einer Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors mit erstmalig konfigurierten Werten umfassen, die auf eine Sequenz mit niedriger Abweichung folgen. Die Schulung aktualisiert die Schreibgewichtungen, die Lesegewichtungen und mindestens einen Lesevektor.
  • Ein System zum Trainieren eines Arbeitsspeicher-Netzwerkes kann in einem Aspekt einen Hardware-Prozessor und eine Arbeitsspeichereinheit umfassen, die mit dem Hardware-Prozessor verbunden ist. Die Arbeitsspeichereinheit speichert eine Arbeitsspeicher-Matrix. Der Hardware-Prozessor kann konfiguriert werden, um ein Arbeitsspeicher-Netzwerk mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lese-Vektor anzulegen. Die Arbeitsspeicher-Schreibgewichtungen parametrisieren Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für die Arbeitsspeicher-Matrix. Die Arbeitsspeicher-Lesegewichtungen parametrisieren Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes aus der Arbeitsspeicher-Matrix. Der Hardware-Prozessor kann auch konfiguriert werden, um mindestens eine Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors zu initialisieren, um eine dünne Besetzung zu haben. Der Hardware-Prozessor kann auch konfiguriert werden, um das Arbeitsspeicher-Netzwerk mit einer Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors zu trainieren, die initialisiert wurden, um ein dünn besetztes Merkmal zu haben. Die Schulung aktualisiert die Schreibgewichtungen, die Lesegewichtungen und mindestens einen Lesevektor.
  • Auch ein durch einen Computer lesbares Speichermedium kann bereitgestellt werden, das ein Programm mit Anweisungen speichert, die von einer Maschine ausführbar sind, um ein oder mehrere hierin beschriebene Verfahren auszuführen.
  • Weitere Merkmale sowie die Struktur und Arbeitsweise von verschiedenen Ausführungsformen werden im Folgenden unter Bezugnahme auf die begleitenden Zeichnungen ausführlich beschrieben. In den Zeichnungen geben gleiche Bezugszeichen identische oder funktional ähnliche Elemente an.
  • Figurenliste
    • 1 ist eine Darstellung, die Komponenten eines Systems in einer Ausführungsform veranschaulicht.
    • 2 ist ein Verfahren zum Trainieren eines Arbeitsspeicher-Netzwerkes gemäß einer Ausführungsform.
    • 3 ist ein Ablaufplan, der ein Verfahren in einer weiteren Ausführungsform veranschaulicht.
    • 4 zeigt ein Beispiel für ein Generieren von Sobol-Sequenzen durch Verwenden eines Computerprogramms als ein beispielhaftes Verfahren zum Generieren einer Sequenz mit niedriger Abweichung in einer Ausführungsform.
    • 5 ist eine Darstellung, die Komponenten eines Systems in einer Ausführungsform darstellt, die ein Arbeitsspeicher-Netzwerk schult.
    • 6 veranschaulicht einen Schemaplan eines beispielhaften Computers oder Verarbeitungssystems, der bzw. das ein System in einer Ausführungsform umsetzen kann.
    • 7 veranschaulicht eine Cloud-Computing-Umgebung in einer Ausführungsform.
    • 8 veranschaulicht eine Gruppe von funktionalen Abstraktionsschichten, die durch eine Cloud-Computing-Umgebung in einer Ausführungsform der vorliegenden Offenbarung bereitgestellt werden.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Systeme, Verfahren und Techniken können bereitgestellt werden, die eine schnelle und zuverlässige Initialisierung der Arbeitsspeicher-Netzwerke ermöglichen. Ein System kann zum Beispiel ein Computersystem umfassen. Ein Verfahren kann zum Beispiel ein durch einen Computer umgesetztes Verfahren umfassen. Ein Arbeitsspeicher-Netzwerk kombiniert ein Maschinenlern-Modell, wie zum Beispiel ein künstliches neuronales Netzwerk, mit einer Arbeitsspeicher-Komponente, aus der gelesen und in die geschrieben werden kann. In einem Arbeitsspeicher-Netzwerk kann ein Maschinenlern-Modell so geschult werden, dass es mit der Arbeitsspeicher-Komponente arbeitet. Eine Gewichtung ist ein Parameter in einem Maschinenlern-Modell. Ein Trainieren eines Modells im Maschinenlernen umfasst ein Erlernen oder Schätzen von Gewichtungen (z.B. unter anderem Parameter), zum Beispiel durch Gradientenabstiegs-Rückpropagierung oder eine andere Technik.
  • In einer Ausführungsform initialisiert ein System Arbeitsspeicher-Schreibgewichtungen, Lesegewichtungen und/oder Lesevektoren eines derartigen Arbeitsspeicher-Netzwerkes mit dünn besetzten Werten, zum Beispiel einem oder nur ein paar Nicht-Null-Elementen anstatt z.B. kleinen pseudozufälligen Werten für viele oder alle Elemente. In einer Ausführungsform verwendet das System auch Sequenzen mit niedriger Abweichung, um derartige dünn besetzte Initialisierungen zu generieren (z.B. anstatt pseudozufälligen Sequenzen). Beispiele für Sequenzen mit niedriger Abweichung umfassen Sobol-, Halton-, Hammersley- und van der Corput-Sequenzen, sie sind aber nicht darauf beschränkt.
  • Ein künstliches neuronales Netzwerk (ANN) wird hierin auch als ein neuronales Netzwerk bezeichnet. Eine Ausführungsform einer Umsetzung eines künstlichen neuronalen Netzwerkes kann eine Abfolge von Neuronenschichten umfassen, die untereinander verbunden sind, sodass Ausgabesignale von Neuronen in einer Schicht gewichtet und zu Neuronen in der nächsten Schicht übertragen werden. Ein Neuron Ni in einer bestimmten Schicht kann mit einem oder mehreren Neuronen Nj in der nächsten Schicht verbunden sein, und verschiedene Gewichtungen wij können jeder Neuron-Neuron-Verbindung Ni bis Nj zum Gewichten von Signalen zugehörig sein, die von Ni zu Nj übertragen werden. Ein Neuron Nj generiert Ausgabesignale, die von seinen akkumulierten Eingaben abhängig sind, und gewichtete Signale können über aufeinanderfolgende Schichten des Netzwerkes von einer Eingabe- zu einer Ausgabe-Neuronenschicht propagiert werden. Ein Maschinenlernmodell eines künstlichen neuronalen Netzwerkes kann eine Schulungsphase durchlaufen, in der die Gruppen von Gewichtungen bestimmt werden, die jeweiligen Neuronenschichten zugehörig sind. Das Netzwerk wird einer Gruppe von Schulungsdaten in einem iterativen Schulungsschema ausgesetzt, in dem die Gewichtungen wiederholt aktualisiert werden, wenn das Netzwerk aus den Schulungsdaten „lernt“. Das sich daraus ergebende geschulte Modell mit den über die Schulungsoperation definierten Gewichtungen kann angewendet werden, um eine Aufgabe auf Grundlage von neuen Daten auszuführen.
  • Ein Arbeitsspeicher-Netzwerk umfasst einen Controller und eine Arbeitsspeicher-Komponente. Der Controller kann ein neuronales Netzwerk sein, zum Beispiel mit einem Zustand wie beispielweise Long Short-Term Memory (LSTM), ist aber nicht auf diesen beschränkt. Ein Controller kann auch ein weiteres Netzwerk wie beispielsweise ein Netzwerk mit Vorwärtsregelung sein. Der Controller kann auf den Arbeitsspeicher mit Lese- und Schreiboperationen zugreifen, die mit Gewichtungen parametrisiert sein können. Die Netzwerk-Ausgaben, die die Lese- und Schreiboperationen mit Gewichtungen parametrisieren, werden als Köpfe (Heads) bezeichnet. Zum Beispiel definiert eine Schreibgewichtung das Ausmaß, bis zu dem ein Schreibkopf in einen Arbeitsspeicher-Speicherort schreibt; eine Lesegewichtung definiert das Ausmaß, bis zu dem ein Lesekopf aus einem Arbeitsspeicher-Speicherort liest. Ein Lesevektor, der von einem Lesekopf zurückgegeben wird, ist eine Kombination der Arbeitsspeicher-Matrix und eines Lesegewichtungs-Vektors (z.B. eine gewichtete Summe der Arbeitsspeicher-Vektoren). Die Anzahl von Lese- und Schreibköpfen kann zum Beispiel auf Grundlage der Architektur eines Arbeitsspeicher-Netzwerkes mit mindestens einem Lesekopf und einem Schreibkopf konfiguriert werden. Ein Trainieren des Arbeitsspeicher-Netzwerkes umfasst ein Erlernen der Arbeitsspeicher-Schreibgewichtungen, Lesegewichtungen und Lesevektoren des Arbeitsspeicher-Netzwerks. Der Arbeitsspeicher-Zustand des Arbeitsspeicher-Netzwerkes kann als eine Kombination (z.B. Verkettung) der Lesegewichtungen, Schreibgewichtungen, Lesevektoren und der Arbeitsspeicher-Matrix definiert werden. Abhängig von der Architektur des Arbeitsspeicher-Netzwerkes können zusätzliche Parameter, einschließlich, aber nicht darauf beschränkt, beispielsweise Verwendungsvektoren, Prioritätsgewichtungen und eine Verknüpfungsmatrix definiert und in den Arbeitsspeicher-Zustand aufgenommen werden.
  • Mechanismen für einen Zugriff auf einen externen Arbeitsspeicher können eine Adressierung auf Grundlage von Inhalt und eine Adressierung auf Grundlage eines Speicherorts umfassen, die Arbeitsspeicher-Adressen oder -Zellen zum Speichern oder Abrufen von Informationen bereitstellen kann. Der Zustand des Controllers wie beispielsweise Lese- und Schreibgewichtungen und andere einem Zugriff auf den Arbeitsspeicher zugehörige Systemparameter sind schulbar. Ein Trainieren der Gewichtungen kann Faktoren berücksichtigen wie beispielweise die aktuelle Eingabe (z.B. Inhaltsadressierung nach Ähnlichkeit), einen vorherigen Schwerpunkt (Interpolation), eine mögliche Verschiebung des Schwerpunkts (Faltungsverschiebung) und Unschärfe (Schärfung). Ein Prozess beim Trainieren des Arbeitsspeicher-Netzwerkes initialisiert diese Gewichtungen und Vektoren, die durch den Lernprozess aktualisiert werden, bis der Fehler zum Beispiel mit einem niedrigst akzeptierten Wert oder einem anderen Kriterium zusammenfällt.
  • Die Systeme, Verfahren und Techniken in Ausführungsformen stellen eine Gewichtungs- und/oder Vektor-Initialisierungstechnik zur Verfügung, die eine effiziente und schnellere Zusammenführung und somit ein effizienteres und schnelleres Lernen des Arbeitsspeicher-Netzwerkmodells ermöglichen können.
  • Eine Ausführungsform eines hierin beschriebenen Systems initialisiert die Schreibgewichtungen, Lesegewichtungen und/oder Lesevektoren mit dünn besetzten Werten beim Trainieren eines Arbeitsspeicher-Netzwerks. Schreibgewichtungen oder Gewichtungen parametrisieren Arbeitsspeicher-Zellen, in denen Informationen gespeichert werden, Lesegewichtungen oder Gewichtungen parametrisieren Arbeitsspeicher-Zellen, aus denen Informationen gelesen werden,
  • Zum Beispiel initialisiert das System Schreibgewichtungen mit einer einzelnen zufällig ausgewählten, auf 1 initialisierten Gewichtung pro Schreibkopf, und allen anderen Gewichtungen, die auf 0 initialisiert sind. Das System initialisiert alle Lesegewichtungen, Lesevektoren und die Arbeitsspeicher-Matrix auf 0. Ein mit Simulationsparametern ausgeführter Versuch (z.B. 100 LSTM-Einheiten, 128 x 20-Arbeitsspeicher-Matrix, Schulungs-Sequenzlängen 1 bis 20, Stapelgröße 1 (Epochennummer = Sequenznummer), 1 Lesekopf und 1 Schreibkopf) zeigt, dass ungefähr 80 % von Schulungsversuchen sehr schnell konvergieren (z.B. 12 bis 30 Minuten auf der Intel® Core i7-5600U Zentraleinheit (CPU) bei 2,6 GHz mit AVX2- (SIMD) Unterstützung für TensorFlow-Software).
  • In einer Ausführungsform verwendet das System Sequenzen mit niedriger Abweichung, um derartige dünn besetzte Initialisierungen zu generieren. Eine Sequenz mit niedriger Abweichung ist eine Sequenz mit der Eigenschaft, dass ihre untergeordnete Sequenz x1, ..., xN für alle Werte von N eine niedrige Abweichung hat. Sequenzen mit niedriger Abweichung werden auch als Quasizufalls- oder untergeordnete Zufalls-Sequenzen bezeichnet. Für eine finite Anzahl von Punkten deckt eine Sequenz mit niedriger Abweichung den Raum gleichmäßiger als eine Pseudozufalls-Sequenz ab. Zum Beispiel hat eine Sequenz mit niedriger Abweichung eine gleichmäßigere Verteilung oder ein höheres Ausmaß von Gleichverteilung als eine Pseudozufalls-Sequenz. Beispiele umfassen Sobol-, Halton-, Hammersley- und van der Corput-Sequenzen, sie sind aber nicht darauf beschränkt.
  • Zum Beispiel wählt oder sucht das System in einer Ausführungsform die dünn besetzten anfänglichen Werte aus einer Sequenz mit niedriger Abweichung aus. Ein ausgeführter Simulationsversuch, in dem eine einzelne Schreibgewichtung aus einer (40, 127) Sobol-Sequenz, die auf 1 initialisiert ist, anderen auf 0 initialisierten Schreibgewichtungen, Lesegewichtungen, Lesevektoren und der Arbeitsspeicher-Matrix, die alle auf 0 initialisiert wurden, abgerufen wird, zeigt, dass alle Schulungsversuche (z.B. 15 Ausführungen) schneller konvergieren, z.B. innerhalb von 12 bis 30 Minuten, wobei beispielhafte Simulationsparameter von 100 LSTM-Einheiten, eine 127 x 20-Arbeitsspeicher-Matrix, Schulungs-Sequenzlängen 1 bis 20, eine Stapelgröße = 1 (daher Epochennummer = Sequenznummer), 1 Lesekopf und 1 Schreibkopf verwendet werden. Eine Beobachtung aus dem Versuch zeigt, dass ein Arbeitsspeicher-Netzwerk, das auf Sequenzlängen zwischen 1 und 20 geschult wird, so gut wie nie zuvor gesehene Sequenzen mit einer Länge von 40, 80 und 120 generiert.
  • Das folgende Beispiel veranschaulicht eine mögliche Art und Weise zum Umsetzen des Verfahrens in einer Ausführungsform. Dieses Beispiel soll nicht als einschränkend betrachtet werden. Es wird vielmehr nur zu Beispiel- und Veranschaulichungszwecken bereitgestellt. Der Beispielcode ist in Python geschrieben, kann aber ebenso in jeder anderen Programmiersprache geschrieben werden. Die Zeilennummern entsprechen nicht den tatsächlichen Zeilennummern in dem Code und werden nur zur leichteren Orientierung in der folgenden Beschreibung bereitgestellt.
    1 [Code-Block]
    2 seq_wrap = int(1+iterations*batch_size*write_heads/mem_words/sobol_len)
    3 mem_seed = sobol_seq.i4_sobol_generate(sobol_len, mem_words)*(1+mem_words)
    4 mem_seed = numpy.reshape(numpy.transpose(mem_seed), (1,
    mem_words*sobol_len))
    5 mem_seed = numpy.reshape(numpy.repeat(mem_seed, seq_wrap, axis=0), (1,
    mem_words*sobol_len*seq_wrap))
    6 [Code-Block]
    7 für Anzahl in Bereich(1, Wiederholungen+1):
    8 [Code-Block]
    9 write_weightings = numpy.zeros([batch_size, mem_words, write_heads], dtype=numpy.float32)
    10 for i in range(batch_size):
    11 for j in range(write_heads):
    12 write_weightings[i][int(mem_seed[0][(count-1)*batch_size*write_heads+i])-1][j] = 1
    13 read_weightings = numpy.zeros([batch_size, mem_words, read_heads], dtype=numpy.float32)
    14 memory_matrix = numpy.zeros([batch_size, mem_words, mem_width], dtype=numpy.float32)
    15 write_weightings = numpy.zeros([batch_size, mem_words, write_heads],
    dtype=numpy.float32)
    16 [Code-Block]
  • In Zeile 2 ist „seq_wrap“ eine Variable, die darstellt, wie oft die generierten Sobol-Sequenzen wiederholt werden (umlaufen), um eine längere Sequenz zu generieren. Da die Anzahl und die Länge der generierten Sobol-Sequenzen begrenzt sind, und die Gesamtlänge der verketteten Sequenz viel kleiner als die Anzahl von Wiederholungen ist, die in der Schulung der neuronalen Netzwerke verwendet werden, besteht eine mögliche Art und Weise zum Bereitstellen einer größeren Sequenz darin, die generierten Sequenzen zu wiederholen. „iterations“ (Wiederholungen) stellen die Anzahl der für eine Schulung verwendeten Wiederholungen dar. „Batch_size“ stellt die für die Schulung verwendete Stapelgröße dar. „write_heads“ stellt die Anzahl von Schreibköpfen dar. „mem_words“ stellt die Anzahl von Arbeitsspeicher-Wörtern dar (z.B. in N x M-Arbeitsspeicher-Matrix die Größe von N, wobei N die Anzahl von Arbeitsspeicher-Speicherorten darstellt). „sobol_len“ stellt die Anzahl der generierten Sobol-Sequenzen dar. Die Parameter batch_size, write_heads und mem_words sind konfigurierbare Parameter in der Architektur eines Arbeitsspeicher-Netzwerks.
  • In Zeile 3 werden Sobol-Sequenzen einer Anzahl von „sobol_len“ und einer Länge von „mem_words“ erstellt und in „mem_seed“ als ein Array mit „mem_words“-Zeilen und „sobol_len“-Spalten gespeichert. Zum Beispiel ist mem_words = 127, sobol_len = 40, und mem_seed = [[64, 96, 32, 48,..., 65, 1], [64, 32, 96, 48, ..., 21, 85], ..., [64, 32, 96, 80, ..., 43, 107]] ein 127 x 40-Array, das 40 Sobol-Sequenzen mit einer Länge von jeweils 127 darstellt (d.h. mit insgesamt 127 x 40 = 5080 Elementen).
  • In Zeile 4 wird das in „mem_seed“ gespeicherte Array zu einem Array mit 1 Zeile und „"mem words* sobol_len“-Spalten umgeformt (was einem Zeilenvektor mit einer Länge von „mem_words* sobol_len“ entspricht), und das Ergebnis wird in „mem_seed“ gespeichert. Wenn zum Beispiel mem_seed = [[64, 96, 32, 48, ..., 65, 1], [64, 32, 96, 48, ..., 21, 85], ..., [64, 32, 96, 80, ..., 43, 107]] vor der Ausführung von Zeile 4 ist, ist mem_seed = [64, 96, 32, 48, ..., 65, 1, 64, 32, 96, 48, ..., 21, 85, ..., 64, 32, 96, 80, ..., 43, 107] nach der Ausführung von Zeile 4.
  • In Zeile 5 wird das in „mem_seed“ gespeicherte Array entlang seiner ersten Achse (z.B. Zeile) „seq_wrap“-mal wiederholt, was zu einem Array mit 1 Zeile und „mem_words* sobol_len*seq_wrap“ Spalten führt, das in „mem_seed“ gespeichert wird. Wenn als veranschaulichendes Beispiel seq_wrap = 2, (zu beachten ist, dass „seq_wrap“ viel größer als 2 sein kann), und mem_seed vor der Ausführung von Zeile 5 [64, 96, 32, 48, ..., 43, 107] ist, ist mem_seed = [64, 96, 32, 48, ..., 43, 107, 64, 96, 32, 48, ..., 43, 107] nach der Ausführung von Zeile 5.
  • In Zeile 7 wird eine Schleife über Schulungswiederholungen gestartet. „Count“ (Anzahl) stellt die aktuelle Wiederholung dar (z.B. startet die aktuelle Schleifenebene ab 1).
  • In Zeile 9 ist „write_weightings“ ein dreidimensionales Array mit einer Größe von „batch_size“, „mem_words“, „write_heads“ jeweils für die erste, zweite und dritte Dimension und stellt die Schreibgewichtungen dar. Alle Elemente von „write_weightings“ werden auf Null gesetzt. „float.32“ stellt ein numerisches 32-Bit-Gleitkomma-Format dar (auch als Zahlenformat mit einfacher Genauigkeit bekannt). Andere Zahlenformate (einschließlich 16-Bit-Gleitkomma, jedoch nicht darauf beschränkt) können ebenfalls verwenden werden.
  • In Zeile 10 bis 12 werden einige Elemente der „write_weightings“ auf 1 gesetzt, wie durch die in „mem_seeds“ gespeicherte Sequenz bestimmt, wobei der Rest 0 bleibt. Wenn zum Beispiel mem_seeds = [64, 96, 32, 48, 112, 80, 16, 24, 88, 120, 56, 40, 104, 72, ..., 43, 107], ist batch_size = 3 und write_heads = 2 für die erste Schulungswiederholung (z.B. count = 1):
    • write_weightings[0][63][0] = 1
    • write_weightings[0][95][1] = 1
    • write_weightings[1][31][0] = 1
    • write_weightings[1][47][1] = 1
    • write_weightings[2][111][0] = 1
    • write_weightings[2][79][1] = 1
  • wobei andere Elemente der write_weightings Null bleiben. Desgleichen gilt für die zweite Schulungswiederholung (z.B. count = 2):
    • write_weightings[0][15][0] = 1
    • write_weightings[0][23][1] = 1
    • write_weightings[1][87][0] = 1
    • write_weightings[1][119][1] = 1
    • write_weightings[2][55][0] = 1
    • write_weightings[2][39][1] = 1
    • usw.
  • In Zeile 13 ist „read_weightings“ ein dreidimensionales Array mit einer Größe von „batch_size“, „mem_words“, „read_heads“ jeweils für die erste, zweite und dritte Dimension und stellt die Lesegewichtungen dar. Alle Elemente von „read_weightings“ werden auf Null gesetzt. „read_heads“ stellen die Anzahl von Leseköpfen dar.
  • In Zeile 14 ist „memory_matrix“ ein dreidimensionales Array mit einer Größe von „batch_size“, „mem_words“, „mem_width“ jeweils für die erste, zweite und dritte Dimension und stellt die Arbeitsspeicher-Matrix dar. Alle Elemente von „memory_matrix“ werden auf Null gesetzt. „mem_width“ stellt die Arbeitsspeicher-Breite dar (z.B. in einer N x M-Arbeitsspeicher-Matrix, die Größe von M, eine Vektorgröße an einem Arbeitsspeicher-Speicherplatz).
  • In Zeile 15: „read_vectors“ ist ein dreidimensionales Array mit einer Größe von „batch_size“, „mem_width“, „read_heads“ jeweils für die erste, zweite und dritte Dimension und stellt die Lesevektoren dar. Alle Elemente von „read_vectors“ werden auf Null gesetzt.
  • Zeile 16 stellt die folgenden Teile des Codes (nicht gezeigt) dar, in denen eine Schulung für jede Wiederholung durch Verwenden der Schreibgewichtungen, Lesegewichtungen, Arbeitsspeicher-Matrix und Lesevektoren ausgeführt wird, die wie oben beschrieben für diese Wiederholung initialisiert wurden.
  • In dem vorgenannten Beispiel werden die Schreibgewichtungen als ein dünn besetztes Array initialisiert, das wie beschrieben dem Muster einer Sequenz mit niedriger Abweichung folgt (in diesem Fall einer Sobol-Sequenz). In einer Ausführungsform können sowohl dünne Besetzung als auch niedrige Abweichung verwendet werden. In einer weiteren Ausführungsform können dünne Besetzung und niedrige Abweichung als zwei getrennte Merkmale umgesetzt werden. Wenn zum Beispiel in Zeile 9 Schreibgewichtungen als kleine Zufallszahlen anstatt Nullen initialisiert werden, und einige Elemente der Schreibgewichtungen, wie in Zeile 10 bis 12 beschrieben, auf 1 gesetzt werden, können die sich daraus ergebenen Schreibgewichtungen nicht dünn besetzt sein, aber immer noch das Merkmal einer niedrigen Abweichung aufweisen, da die Schreibgewichtungen, die auf 1 gesetzt sind, dem Muster einer Sequenz mit niedriger Abweichung folgen.
  • In einem weiteren Beispiel werden die Schreibgewichtungen wie oben in Zeile 9 auf Nullen initialisiert, aber anstatt einige Elemente der Schreibgewichtungen auf Grundlage einer Sequenz mit niedriger Abweichung wie in Zeile 10 bis 12 auf 1 zu setzen, werden die Schreibgewichtungen nach dem Zufallsprinzip auf 1 gesetzt. Die sich daraus ergebenden Schreibgewichtungen haben möglicherweise kein Merkmal einer niedrigen Abweichung, können aber immer noch dünn besetzt sein.
  • In dem oben genannten Beispiel wird in Zeile 12 genau ein Element aus einer bestimmten Gruppe von Schreibgewichtungen auf 1 gesetzt. In anderen Beispielen kann eine größere Anzahl, zum Beispiel 2 oder mehr Elemente einer bestimmten Gruppe auf 1 gesetzt werden.
  • In dem oben genannten Beispiel werden in Zeile 12 einige Elemente der Schreibgewichtungen auf 1 gesetzt. In anderen Beispielen können diese Elemente auf verschiedene Nicht-Null-Werte gesetzt werden, zum Beispiel 0,5, 2 oder 5 oder einen anderen Wert.
  • In dem vorgenannten Beispiel werden Schreibgewichtungen als dünn besetzt und Arrays mit niedriger Abweichung initialisiert, während Lesegewichtungen und Lesevektoren auf Nullen initialisiert werden. In einem weiteren Beispiel können Lesegewichtungen als dünn besetzt und Arrays mit niedriger Abweichung initialisiert werden, während Schreibgewichtungen und Lesevektoren auf Nullen initialisiert werden. Zum Beispiel können in einer Ausführungsform mindestens Schreibgewichtungen, Lesegewichtungen und/oder Lesevektoren als dünn besetzt und/oder Arrays mit niedriger Abweichung initialisiert werden.
  • In dem vorgenannten Beispiel werden die generierten Sequenzen mit niedriger Abweichung in Zeile 2 bis 5 geglättet (d.h. von einem zweidimensionalen Array in ein eindimensionales Array umgewandelt, d.h. einen Vektor) und umgebrochen (d.h. so oft wie gewünscht wiederholt). Die sich daraus ergebende Sequenz wird anschließend als eine Vorlage dafür verwendet, Elemente der Schreibgewichtungen wie oben beschrieben auf 1 zu setzen. In verschiedenen Ausführungsformen können verschiedene andere Anordnungen verwendet werden. Zum Beispiel kann eine Verkettung von Sequenzen mit niedriger Abweichung, in denen eine bestimmte Sequenz mit niedriger Abweichung beliebig oft an beliebigen Speicherorten in der verketteten Sequenz mit niedriger Abweichung mit einer gewünschten Länge auftritt, ebenfalls verwendet werden. In einem weiteren Beispiel kann ein eindimensionales Array (d.h. Vektor) von Sequenzen mit niedriger Abweichung wie dasjenige bereitgestellt werden, das in Zeile 4 generiert wurde. Danach kann zu Beginn einer Schulungswiederholung für jede der Schulungswiederholungen ein beliebiges Element des Vektors ausgewählt und als Anfangspunkt des Vektors angenommen werden. Der Vektor kann von diesem Anfangspunkt gelesen und als Vorlage verwendet werden, um die Schreibgewichtungen wie oben erläutert auf 1 zu setzen. Wenn das Ende des Vektors innerhalb dieser Schulungswiederholung erreicht wird, kann das nächste Element von dem Anfang des Vektors gelesen werden. In noch einem weiteren Beispiel kann ein zweidimensionales Array von Sequenzen mit niedriger Abweichung wie dasjenige bereitgestellt werden, das in Zeile 3 generiert wurde. Danach kann zu Beginn einer Schulungswiederholung (z.B. für jede der Schulungswiederholungen) eine beliebige Sequenz aus dem Array ausgewählt und als Vorlage verwendet werden, um die Schreibgewichtungen wie oben erläutert auf 1 zu setzen. Wenn das Ende dieser Sequenz erreicht wird, kann eine weitere beliebige Sequenz aus dem Array gewählt werden.
  • 1 ist eine Darstellung, die Komponenten eines Systems in einer Ausführungsform veranschaulicht. Die gezeigten Komponenten umfassen durch einen Computer umgesetzte Komponenten, die zum Beispiel auf einem oder mehreren Hardware-Prozessoren umgesetzt und/oder ausgeführt werden oder mit einem oder mehreren Hardware-Prozessoren verbunden sind. Ein oder mehrere Hardware-Prozessoren können zum Beispiel Komponenten wie programmierbare Logikeinheiten, Mikro-Controller, Arbeitsspeichereinheiten und/oder andere Hardware-Komponenten umfassen, die konfiguriert werden können, um jeweilige Aufgaben auszuführen, die in der vorliegenden Offenbarung beschrieben werden. Verbundene Arbeitsspeichereinheiten können konfiguriert werden, um selektiv Anweisungen zu speichern, die von einem oder mehreren Hardware-Prozessoren ausführbar sind. Ein Prozessor kann zum Beispiel eine Zentraleinheit (CPU), eine Grafikverarbeitungseinheit (GPU), ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), eine andere geeignete Verarbeitungskomponente oder -einheit oder eine oder mehrere Kombinationen davon sein. Der Prozessor kann mit einer Arbeitsspeichereinheit verbunden sein. Die Arbeitsspeichereinheit kann einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM) oder eine andere Arbeitsspeichereinheit umfassen und kann Daten und/oder Prozessoranweisungen zum Umsetzen verschiedener Funktionalitäten speichern, die den hierin beschriebenen Verfahren und/oder Systemen zugehörig sind. Der Prozessor kann Computeranweisungen ausführen, die in dem Arbeitsspeicher gespeichert sind oder von einer anderen Computereinheit oder einem anderen Medium empfangen werden.
  • Ein Arbeitsspeicher-Netzwerk kann einen Controller 102 wie beispielweise ein künstliches neuronales Netzwerk und eine Arbeitsspeicher-Komponente 104 umfassen, zum Beispiel einen außerhalb des neuronalen Netzwerkes befindlichen Arbeitsspeicher. Die Arbeitsspeicher-Komponente wird auch als eine Arbeitsspeicher-Matrix bezeichnet. Der Controller 102 kann auf den Arbeitsspeicher 104 mit Lese- und Schreiboperationen zugreifen, die mit Gewichtungen parametrisiert werden können (z.B. Schreibgewichtungen für Schreiboperationen und Lesegewichtungen für Leseoperationen). Ein Trainieren des Arbeitsspeicher-Netzwerkes kann ein Veranlassen des Arbeitsspeicher-Netzwerkes umfassen, die Arbeitsspeicher-Schreibgewichtungen zum Schreiben in selektive Speicherorte des Arbeitsspeichers 104, und die Lesegewichtungen des Arbeitsspeicher-Netzwerkes zum Lesen aus selektiven Speicherorten des Arbeitsspeichers 104 zu erlernen. Lesevektoren werden als Kombinationen von Zeilenvektoren im Arbeitsspeicher zurückgegeben, die auf Grundlage der Lesegewichtungen bestimmt wurden. Das heißt, dass für jede Dateninstanz (wie beispielweise ein Schulungsbeispiel) M Lesevektoren pro Lesekopf generiert werden, wobei M die Breite der Arbeitsspeicher-Matrix ist.
  • Ein Computer-Prozessor, der z.B. bei 106 gezeigt wird, kann ein Arbeitsspeicher-Netzwerk mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lese-Vektor anlegen. Der Computer-Prozessor 106 kann auch die Arbeitsspeicher-Matrix 104 initialisieren. Die Arbeitsspeicher-Schreibgewichtungen parametrisieren Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerks, z.B. 102, für die Arbeitsspeicher-Matrix 104. Die Arbeitsspeicher-Lesegewichtungen parametrisieren Arbeitsspeicher-Leseoperationen des neuronalen Netzwerks, z.B. 102, aus der Arbeitsspeicher-Matrix 104. Der Computer-Prozessor 106 kann mindestens eine der Schreibgewichtungen, der Lesegewichtungen oder der Lesevektoren so initialisieren, dass sie dünn besetzt sind oder eine dünne Besetzung haben. Der Computer-Prozessor 106 kann das Arbeitsspeicher-Netzwerk 108 mit mindestens einer der Schreibgewichtungen, der Lesegewichtungen oder der Lesevektoren Trainieren, die so initialisiert sind, dass sie ein dünn besetztes Merkmal haben. Die Schulung aktualisiert die Schreibgewichtungen, die Lesegewichtungen und den Lesevektor.
  • In einer Ausführungsform kann der Computer-Prozessor 106 eine Sequenz mit niedriger Abweichung verwenden, um einen dünn besetzten Satz für ein Anwenden auf mindestens die Schreibgewichtungen, die Lesegewichtungen und/oder Elemente des mindestens einen Lesevektors zu generieren. Beispiele für eine Sequenz mit niedriger Abweichung umfassen Sobol-, Halton-, Hammersley- und van der Corput-Sequenzen, sie sind aber nicht darauf beschränkt.
  • Zum Beispiel kann der Computer-Prozessor 106 in einer Ausführungsform eine dünn besetzte Anzahl der Schreibgewichtungen auf einen Nicht-Null-Wert setzen, und den Rest der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors auf einen Null-Wert setzen, um mindestens die Schreibgewichtungen, die Lesegewichtungen und/oder den Lesevektor für eine dünne Besetzung zu initialisieren. In einer Ausführungsform folgt die dünn besetzte Anzahl von Schreibgewichtungen, die auf einen Nicht-Null-Wert gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung.
  • In einem weiteren Beispiel kann der Computer-Prozessor 106 in einer Ausführungsform eine dünn besetzte Anzahl von Lesegewichtungen auf einen Nicht-Null-Wert setzen, und den Rest der Lesegewichtungen, der Schreibgewichtungen und Elemente des mindestens einen Lesevektors auf einen Null-Wert zu setzen, um mindestens die Schreibgewichtungen, die Lesegewichtungen und/oder den Lesevektor zu initialisieren, um eine dünne Besetzung zu haben. In einer Ausführungsform folgt die dünn besetzte Anzahl von Lesegewichtungen, die auf Nicht-Null gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung.
  • 2 ist ein Verfahren zum Trainieren eines Arbeitsspeicher-Netzwerkes gemäß einer Ausführungsform. Das Verfahren kann auf einem Hardware-Prozessor durchgeführt oder ausgeführt werden, zum Beispiel einem Computer-Prozessor. In einem Schritt 202 umfasst das Verfahren ein Anlegen eines Arbeitsspeicher-Netzwerkes mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lese-Vektor. In einem Aspekt parametrisieren die Arbeitsspeicher-Schreibgewichtungen Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für eine externe Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerks; die Arbeitsspeicher-Lesegewichtungen parametrisieren Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes aus der externen Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerks.
  • In einem Schritt 204 umfasst das Verfahren ein Initialisieren von mindestens einer der Schreibgewichtungen, der Lesegewichtungen oder der Lesevektoren, um eine dünne Besetzung zu haben. Zum Beispiel kann das Verfahren zwischen Schreibgewichtungen, Lesegewichtungen oder einem Lesevektor wählen. Die Auswahl wird dann so initialisiert, dass sie dünn besetzte Merkmale aufweist. Zum Beispiel können die Schreibgewichtungen, Lesegewichtungen und Elemente des Lesevektors in einer Ausführungsform auf einen ersten Wert gesetzt werden, wie zum Beispiel „0“. Danach kann eine Auswahl (z.B. Schreibgewichtungen, Lesegewichtungen oder Lesevektor) so eingerichtet werden, dass eine dünn besetzte (kleine) Anzahl ihrer Elemente auf einen zweiten Wert gesetzt wird, wie beispielweise „1“. Andere Werte als „0“ und „1“ können verwendet werden, um dünn besetzte Merkmale anzugeben. In einer Ausführungsform kann das Verfahren eine Sequenz mit niedriger Abweichung verwenden, um einen dünn besetzten Satz von Werten zu generieren.
  • Zum Beispiel kann das Verfahren eine dünn besetzte Anzahl der Schreibgewichtungen auf einen Nicht-Null-Wert setzen, und einen Rest der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors auf einen Null-Wert setzen. In einer Ausführungsform folgt eine dünn besetzte Anzahl von Schreibgewichtungen, die auf einen Nicht-Null-Wert gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung.
  • In einem weiteren Beispiel kann das Verfahren eine dünn besetzte Anzahl von Lesegewichtungen auf einen Nicht-Null-Wert setzen, und den Rest der Lesegewichtungen, der Schreibgewichtungen und Elemente des mindestens einen Lesevektors auf einen Null-Wert setzen. In einer Ausführungsform folgt die dünn besetzte Anzahl von Lesegewichtungen, die auf Nicht-Null gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung.
  • In noch einem weiteren Beispiel kann das Verfahren eine dünn besetzte Anzahl von Elementen des Lesevektors auf einen Nicht-Null-Wert setzen, und den Rest der Elemente des Lesevektors, der Lesegewichtungen und der Schreibgewichtungen auf einen Null-Wert setzen. In einer Ausführungsform folgt die dünn besetzte Anzahl von Elementen des Lesevektors, die auf Nicht-Null gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung.
  • In einer Ausführungsform ist die dünn besetzte Anzahl 1. In einer weiteren Ausführungsform ist die dünn besetzte Anzahl höher als 1 und kann kleiner als eine konfigurierbare Anzahl sein.
  • In einem Schritt 206 umfasst das Verfahren ein Trainieren des Arbeitsspeicher-Netzwerkes mit mindestens einer der Schreibgewichtungen, der Lesegewichtungen oder der Lesevektoren, die so initialisiert sind, dass sie ein dünn besetztes Merkmal haben. Die Schulung aktualisiert die Schreibgewichtungen, die Lesegewichtungen und den mindestens einen Lesevektor. Die Schreib- und Lesegewichtungen können als Verbindungsgewichtungen zwischen dem neuronalen Netzwerk und dem externen Arbeitsspeicher betrachtet werden. In einem Aspekt kann das Arbeitsspeicher-Netzwerk durch Gradientenabstieg geschult werden.
  • 3 ist ein Ablaufplan, der ein Verfahren in einer weiteren Ausführungsform veranschaulicht. Das Verfahren kann auf einem Hardware-Prozessor durchgeführt oder ausgeführt werden, zum Beispiel einem Computer-Prozessor. In einem Schritt 302 kann das Verfahren ein Anlegen eines Arbeitsspeicher-Netzwerkes mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lese-Vektor umfassen. Die Arbeitsspeicher-Schreibgewichtungen parametrisieren Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für eine externe Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerks. Die Arbeitsspeicher-Lesegewichtungen parametrisieren Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes aus der externen Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerks.
  • In einem Schritt 304 umfasst das Verfahren ein Initialisieren von mindestens einer Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und dem mindestens einen Lesevektor auf einen konfigurierten Wert, der z.B. durch ein Abtastmuster mit niedriger Abweichung initialisiert wird. Zum Beispiel umfasst das Verfahren ein Auswählen von Schreibgewichtungen, Lesegewichtungen oder einem Lesevektor. Das Verfahren kann Elemente der Auswahl auf einen konfigurierten Wert setzen, wie zum Beispiel eine „1“, wobei die Elemente auf eine Sequenz mit niedriger Abweichung folgen. Das Initialisieren kann ferner ein Setzen der Schreibgewichtungen, der Lesegewichtungen und Elemente des Lesevektors, die nicht für die Sequenz mit niedriger Abweichung ausgewählt sind, auf einen anderen Wert als den konfigurierten Wert umfassen. Zum Beispiel kann das Initialisieren ein Setzen der Schreibgewichtungen, der Lesegewichtungen und Elemente des Lesevektors, die nicht als auf die Sequenz mit niedriger Abweichung folgend ausgewählt sind, auf einen Wert von Null umfassen. Als noch weiteres Beispiel kann das Initialisieren ein Setzen der Schreibgewichtungen, der Lesegewichtungen und Elemente des Lesevektors, die nicht als auf die Sequenz mit niedriger Abweichung folgend ausgewählt sind, auf eine andere beliebige Zahl als den konfigurierten Wert umfassen.
  • In einem Schritt 306 umfasst das Verfahren ein Trainieren des Arbeitsspeicher-Netzwerkes mit den initialisierten Schreibgewichtungen, Lesegewichtungen und dem Lesevektor, von denen mindestens ein Element so eingerichtet ist, dass es konfigurierte Werte umfasst, die auf eine Sequenz mit niedriger Abweichung folgen. Die Schulung aktualisiert die Schreibgewichtungen, die Lesegewichtungen und mindestens einen Lesevektor. Die Schreib- und Lesegewichtungen können als Verbindungsgewichtungen zwischen dem neuronalen Netzwerk und dem externen Arbeitsspeicher betrachtet werden. In einem Aspekt kann das Arbeitsspeicher-Netzwerk durch Gradientenabstieg geschult werden.
  • 4 zeigt ein Beispiel für ein Generieren von Sobol-Sequenzen durch Verwenden eines Python- (eine Computerprogrammiersprache) Interpreters als ein beispielhaftes Verfahren zum Generieren einer Sequenz mit niedriger Abweichung. Ein Befehl der Sprache wird mit vorangestellten „>>>“ und danach folgender Ausgabe gezeigt, die sich aus dem ausgeführten Befehl ergibt. Der erste Befehl „import sobol_seq“ importiert ein verfügbares Sobol-Sequenz-Paket. Der zweite Befehl gibt eine Matrix von 40 Sobol-Sequenzen mit einer Länge von 27-1 = 127 aus, d.h. Sobol (40, 127). Der dritte Befehl gibt die erste Spalte der Matrix aus, die durch den zweiten Befehl ausgegeben wird.
  • 5 ist eine Darstellung, die Komponenten eines Systems in einer Ausführungsform darstellt, die ein Arbeitsspeicher-Netzwerk schult. Ein oder mehrere Hardware-Prozessoren 502, wie beispielsweise eine Zentraleinheit (CPU), eine Grafikverarbeitungseinheit (GPU) und/oder ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC) und/oder ein anderer Prozessor können mit einer Arbeitsspeichereinheit 504 verbunden werden und ein Arbeitsspeicher-Netzwerk gestalten und trainieren. Eine Arbeitsspeichereinheit 504 kann einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM) oder eine andere Arbeitsspeichereinheit umfassen und kann Daten und/oder Prozessoranweisungen zum Umsetzen verschiedener Funktionalitäten speichern, die den hierin beschriebenen Verfahren und/oder Systemen zugehörig sind. Ein oder mehrere Prozessoren 502 können Computeranweisungen ausführen, die in dem Arbeitsspeicher 604 gespeichert sind oder von einer anderen Computereinheit oder einem anderen Medium empfangen werden. Eine Arbeitsspeichereinheit 504 kann zum Beispiel Anweisungen und/oder Daten für eine Funktionsweise von einem oder mehreren Hardware-Prozessoren 502 speichern und kann ein Betriebssystem und andere Anweisungsprogramme und/oder Daten umfassen. Ein oder mehrere Hardware-Prozessoren 502 können ein Arbeitsspeicher-Netzwerk anlegen und Parameter des Arbeitsspeicher-Netzwerkes initialisieren. Zum Beispiel kann ein bzw. können mehrere Computer-Prozessoren 502 mindestens Schreibgewichtungen, Lesegewichtungen und/oder Lesevektoren so initialisieren, dass sie eine dünne Besetzung haben. In einem weiteren Aspekt kann ein bzw. können mehrere Computer-Prozessoren mindestens Schreibgewichtungen, Lesegewichtungen und/oder Lesevektoren auf einen konfigurierten Wert initialisieren, der auf eine Sequenz mit niedriger Abweichung folgt. In noch einem weiteren Aspekt kann ein bzw. können mehrere Computer-Prozessoren mindestens Schreibgewichtungen, Lesegewichtungen und/oder Lesevektoren so initialisieren, dass sie eine dünne Besetzung haben und beim Setzen der dünn besetzten Werte auf eine Sequenz mit niedriger Abweichung folgen. Eingabe- oder Schulungsdaten können in einer Speichereinheit 504 gespeichert oder über eine Netzwerkschnittstelle 508 von einer entfernt angeordneten Einheit empfangen werden und können temporär für ein Erstellen oder Generieren des geschulten Arbeitsspeicher-Netzwerkes in eine Arbeitsspeichereinheit 504 geladen werden. In einem Aspekt kann das generierte oder geschulte Arbeitsspeicher-Netzwerk auf einer Arbeitsspeicher-Einheit 504 gespeichert werden, zum Beispiel für eine Ausführung durch einen oder mehrere Hardware-Prozessoren 502 zum Ausführen einer Aufgabe. Ein oder mehrere Hardware-Prozessoren 502 können mit Schnittstelleneinheiten, wie zum Beispiel die Netzwerkschnittstelle 508, für einen Datenaustausch mit entfernt angeordneten Systemen, zum Beispiel über ein Netzwerk, und einer Eingabe/Ausgabe Schnittstelle 510 für einen Datenaustausch mit Eingabe- und/oder Ausgabeeinheiten verbunden werden, wie zum Beispiel eine Tastatur, Maus, Anzeige und/oder anderes.
  • 6 veranschaulicht einen Schemaplan eines beispielhaften Computers oder Verarbeitungssystems, der bzw. das ein System in einer Ausführungsform umsetzen kann. Das Computersystem ist nur ein Beispiel für ein geeignetes Verarbeitungssystem und soll keinerlei Einschränkung in Bezug auf den Schutzumfang der Verwendung oder die Funktionalität von Ausführungsformen der hierin beschriebenen Methodik andeuten. Das gezeigte Verarbeitungssystem kann mit zahlreichen weiteren Umgebungen oder Konfigurationen für Universal- oder Sonder-Datenverarbeitungssysteme betriebsfähig sein. Zu Beispielen für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für eine Verwendung mit dem in 6 gezeigten Verarbeitungssystem geeignet sein können, können PC-Systeme, Servercomputersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Multiprozessorsysteme, Systeme auf Grundlage von Mikroprozessoren, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen zählen, die beliebige der oben genannten Systeme oder Einheiten und dergleichen aufweisen, sie sind aber nicht darauf beschränkt.
  • Das Computersystem kann in dem allgemeinen Kontext von Anweisungen beschrieben werden, die durch ein Computersystem ausführbar sind, wie beispielsweise Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen umsetzen. Das Computersystem kann in verteilten Cloud-Computing-Umgebungen betrieben werden, wobei Aufgaben von entfernt angeordneten Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule sich sowohl in lokalen als auch entfernt angeordneten Computersystem-Speichermedien befinden, die Arbeitsspeicher-Speichereinheiten enthalten.
  • Die Komponenten des Computersystems können einen oder mehrere Prozessoren oder Verarbeitungseinheiten 12, einen Systemarbeitsspeicher 16 und einen Bus 14 enthalten, der verschiedene Systemkomponenten einschließlich eines Systemarbeitsspeichers 16 mit dem Prozessor 12 verbindet, sie sind aber nicht darauf beschränkt. Der Prozessor 12 kann ein Modul 30 enthalten, das die hierin beschriebenen Verfahren ausführt. Das Modul 30 kann in die integrierten Schaltungen des Prozessors 12 programmiert werden oder aus dem Arbeitsspeicher 16, der Speichereinheit 18 oder dem Netzwerk 24 oder Kombinationen davon geladen werden.
  • Der Bus 14 kann einen oder mehrere von mehreren beliebigen Typen von Busstrukturen darstellen, einschließlich eines Arbeitsspeicherbusses oder Arbeitsspeicher-Controllers, eines Peripheriebusses, eines Accelerated Graphics Port (beschleunigter Grafikanschluss) und eines Prozessors oder lokalen Busses unter Verwendung von einer aus einer Vielfalt von Busarchitekturen. Als Beispiel und nicht einschränkend umfassen derartige Architekturen einen Industry Standard Architecture- (ISA) Bus, Micro Channel Architecture-(MCA) Bus, Enhanced ISA- (EISA) Bus, einen lokalen Video Electronics Standards Association-(VESA) Bus und Peripheral Component Interconnect- (PCI) Bus.
  • Das Computersystem kann eine Vielfalt von Medien enthalten, die von einem Computersystem gelesen werden können. Derartige Medien können alle verfügbaren Medien sein, auf die von dem Computersystem zugegriffen werden kann, und sie können sowohl flüchtige als auch nicht flüchtige Medien, austauschbare und nicht austauschbare Medien enthalten.
  • Der Systemarbeitsspeicher 16 kann vom Computersystem lesbare Medien in der Form von flüchtigem Arbeitsspeicher enthalten wie beispielsweise einen Direktzugriffspeicher (RAM) und/oder einen Cache-Speicher oder sonstige. Das Computersystem kann ferner weitere austauschbare/nicht austauschbare, flüchtige/nicht flüchtige Computersystem-Speichermedien enthalten Nur als Beispiel kann das Speichersystem 18 zum Lesen von und Schreiben auf nicht austauschbaren, nicht flüchtigen Magnetdatenträger bereitgestellt werden (z.B. eine „Festplatte“). Obwohl nicht gezeigt, kann ein Magnetplattenlaufwerk zum Auslesen und Beschreiben einer austauschbaren, nicht flüchtigen Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk zum Auslesen oder Beschreiben einer austauschbaren, nicht flüchtigen optischen Platte wie einem CD-ROM, DVD-ROM oder andere optische Datenträger bereitgestellt werden. In solchen Fällen können alle über eine oder mehrere Datenträgerschnittstellen mit dem Bus 14 verbunden werden.
  • Das Computersystem kann auch mit einer oder mehreren externen Einheiten 26 Daten austauschen, wie zum Beispiel einer Tastatur, einer Zeigeeinheit, einer Anzeige 28 usw.; einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem 12 zu interagieren; und/oder allen Einheiten (z.B. Netzwerkkarte, Modem usw.), die es dem Computersystem 12 ermöglichen, mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten auszutauschen. Ein derartiger Datenaustausch kann über Eingabe-/Ausgabe- (E/A) Schnittstellen 20 erfolgen.
  • Weiterhin kann das Computersystem mit einem oder mehreren Netzwerken 24, wie beispielsweise einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet), über einen Netzwerkadapter 22 Daten austauschen Wie dargestellt, tauscht der Netzwerkadapter 22 mit den anderen Komponenten des Computersystems über den Bus 14 Daten aus. Es sollte klar sein, dass, obwohl nicht gezeigt, andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem verwendet werden könnten. Zu Beispielen zählen: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Speichersysteme zur Datenarchivierung usw., ohne auf diese beschränkt zu sein.
  • Es sollte von vornherein klar sein, obwohl diese Offenbarung eine Beschreibung von Cloud Computing enthalten kann, dass eine Umsetzung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jedem beliebigen Typ von jetzt bekannter oder später entwickelter Datenverarbeitungsumgebung umgesetzt werden. Cloud Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle umfassen.
  • Die Eigenschaften sind wie folgt:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter des Dienstes erforderlich ist.
  • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
  • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt, und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Ressourcennutzung kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Die Dienstmodelle sind wie folgt:
    • Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. eine auf dem Web beruhende eMail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
  • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
  • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeitung, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Die Nutzungsmodelle sind wie folgt:
    • Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb von Geschäftsräumen vorhanden sein.
  • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
  • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die eine Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt von Cloud Computing steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten enthält.
  • Unter folgender Bezugnahme auf 7 wird eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen lokale Datenverarbeitungseinheiten, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 54A, Desktop-Computer 54B, Laptop-Computer 54C und/oder Fahrzeug-Computersystem 54N, Daten austauschen können. Die Knoten 10 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein (nicht gezeigt), wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder in einer Kombination davon. Damit hat die Cloud-Computing-Umgebung 50 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sollte klar sein, dass die in 7 gezeigten Typen von Datenverarbeitungseinheiten 54A bis N nur zur Veranschaulichung dienen sollen, und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können.
  • Unter folgender Bezugnahme auf 8 wird eine Gruppe von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (7) bereitgestellt werden. Dabei sollte von Anfang an klar sein, dass die in 8 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen: Mainframes 61; Server auf Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und vernetzte Komponenten 66. In einigen Ausführungsformen enthalten Software-Komponenten Software für Netzwerkanwendungsserver 67 und Datenbank-Software 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, von der aus die folgenden beispielhaften virtuellen Entitäten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, einschließlich virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die im Folgenden beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 sorgt für eine dynamische Beschaffung von Datenverarbeitungsressourcen und weiteren Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung 82 ermöglichen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt den Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Service-Level- (Dienstgüte) Verwaltung 84 sorgt für Zuweisung und Verwaltung von Cloud-Computing-Ressourcen, sodass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) 85 stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird.
  • Eine Arbeitslastenschicht 90 stellt Beispiele für eine Funktionalität bereit, für welche die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation 91; Software-Entwicklung und Lifecycle-Management 92; Bereitstellung von virtuellen Schulungen 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und Verarbeitung der Schulung des Arbeitsspeicher-Netzwerkes 96.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen 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 CD-ROM, eine DVD, 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 des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, 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 andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete 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 Weitverkehrsnetzwerk 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 Erfindung 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 sind, 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 entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu 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, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können für einen Prozessor eines Computers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erstellen. 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, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder 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 Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass 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 Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und 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 Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich als ein Schritt erreicht werden, der gleichzeitig, im Wesentlichen gleichzeitig, in einer teilweise oder vollständig zeitlich überlappenden Weise ausgeführt wird, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die hierin verwendete Terminologie dient nur zum Zweck der Beschreibung von bestimmten Ausführungsformen und soll die Erfindung keinesfalls einschränken. Die hierin verwendeten Singularformen „ein“, „eine“ und „der/die/das“ sollen auch die Pluralformen mit einschließen, es sei denn, der Kontext gibt eindeutig anderes vor. Wie hierin verwendet, ist der Begriff „oder“ ein inklusiver Operator und kann „und/oder“ bedeuten, sofern der Kontext nicht explizit oder ausdrücklich etwas anderes angibt. Es versteht sich ferner, dass die Begriffe „aufweisen“, „weist auf“, „aufweisend“, „umfassen“, „umfasst“, „umfassend“, und/oder „mit“, wenn sie hierin verwendet werden, das Vorhandensein ausgewiesener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben können, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon aber nicht ausschließen. Wie hierin verwendet, verweist der Ausdruck „in einer Ausführungsform“ nicht notwendigerweise auf dieselbe Ausführungsform, obwohl dies möglich ist. Wie hierin verwendet, verweist der Ausdruck „bei einer Ausführungsform“ nicht notwendigerweise auf dieselbe Ausführungsform, obwohl dies möglich ist. Wie hierin verwendet, verweist der Ausdruck „in einer weiteren Ausführungsform“ nicht notwendigerweise auf eine verschiedene Ausführungsform, obwohl dies möglich ist. Ferner können Ausführungsformen und/oder Komponenten von Ausführungsformen frei miteinander kombiniert werden, es sei denn, sie schließen sich wechselseitig aus.
  • Die entsprechenden Strukturen, Materialien, Handlungen und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente, sofern vorhanden, in den nachstehenden Ansprüchen sollen alle Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, wie speziell beansprucht. Die Beschreibung der vorliegenden Erfindung wurde zum Zweck der Veranschaulichung und Beschreibung erstellt, sie soll aber keineswegs erschöpfend oder auf die offenbarte Form der Erfindung eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang der Erfindung abweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um Grundgedanken der Erfindung und die praktische Anwendung am besten zu erklären und es anderen Fachleuten zu ermöglichen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.

Claims (21)

  1. Durch einen Computer umgesetztes Verfahren zum Trainieren eines Arbeitsspeicher-Netzwerks, das aufweist: Anlegen eines Arbeitsspeicher-Netzwerkes mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lesevektor, wobei die Arbeitsspeicher-Schreibgewichtungen Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für eine externe Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerkes parametrisieren, wobei die Arbeitsspeicher-Lesegewichtungen Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes von der externen Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerkes parametrisieren; Initialisieren von mindestens einer Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors, um eine dünne Besetzung zu haben; und Trainieren des Arbeitsspeicher-Netzwerkes mit der einen Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors, die initialisiert wurden, um ein dünn besetztes Merkmal zu haben, wobei das Trainieren die Schreibgewichtungen, die Lesegewichtungen und den mindestens einen Lesevektor aktualisiert.
  2. Verfahren nach Anspruch 1, wobei das Initialisieren der einen Auswahl aus der Gruppe der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors ein Setzen einer dünn besetzten Anzahl der Schreibgewichtungen auf einen Nicht-Null-Wert und ein Setzen eines Restes der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors auf einen Null-Wert aufweist, um eine dünne Besetzung zu haben.
  3. Verfahren nach Anspruch 2, wobei die dünn besetzte Anzahl von Schreibgewichtungen, die auf einen Nicht-Null-Wert gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung folgt.
  4. Verfahren nach Anspruch 1, wobei das Initialisieren der einen Auswahl aus der Gruppe der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors ein Setzen einer dünn besetzten Anzahl von Lesegewichtungen auf einen Nicht-Null-Wert und ein Setzen eines Restes der Lesegewichtungen, der Schreibgewichtungen und Elemente des mindestens einen Lesevektors auf einen Null-Wert aufweist, um eine dünne Besetzung zu erhalten.
  5. Verfahren nach Anspruch 4, wobei die dünn besetzte Anzahl von Lesegewichtungen, die auf Nicht-Null gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung folgt.
  6. Verfahren nach Anspruch 1, wobei das Initialisieren der einen Auswahl aus der Gruppe der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors ein Setzen einer dünn besetzten Anzahl von Elementen des mindestens einen Lesevektors auf einen Nicht-Null-Wert und ein Setzen eines Restes der Elemente des mindestens einen Lesevektors, der Lesegewichtungen und der Schreibgewichtungen auf einen Null-Wert aufweist, um eine dünne Besetzung zu erhalten.
  7. Verfahren nach Anspruch 6, wobei die dünn besetzte Anzahl von Elementen des mindestens einen Lesevektors, die auf Nicht-Null gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung folgt.
  8. Verfahren nach Anspruch 1, das ferner ein Verwenden einer Sequenz mit niedriger Abweichung aufweist, um einen dünn besetzten Satz der einen Auswahl aus der Gruppe der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors zu generieren.
  9. Verfahren nach Anspruch 1, wobei die dünn besetzte Anzahl eins ist.
  10. Verfahren nach Anspruch 1, wobei die dünn besetzte Anzahl größer als eins ist.
  11. Durch einen Computer umgesetztes Verfahren zum Trainieren eines Arbeitsspeicher-Netzwerks, das aufweist: Anlegen eines Arbeitsspeicher-Netzwerkes mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lesevektor, wobei die Arbeitsspeicher-Schreibgewichtungen Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für eine externe Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerkes parametrisieren, wobei die Arbeitsspeicher-Lesegewichtungen Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes von der externen Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerkes parametrisieren; Initialisieren von mindestens einer Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors auf einen konfigurierten Wert, der auf eine Sequenz mit niedriger Abweichung folgt; und Trainieren des Arbeitsspeicher-Netzwerkes mit der einen Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors mit erstmalig konfigurierten Werten, die auf eine Sequenz mit niedriger Abweichung folgen, wobei das Trainieren die Schreibgewichtungen, die Lesegewichtungen und den mindestens einen Lesevektor aktualisiert.
  12. Verfahren nach Anspruch 11, wobei das Initialisieren ferner ein Setzen der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors, die nicht für die Sequenz mit niedriger Abweichung ausgewählt sind, auf einen anderen Wert als den konfigurierten Wert aufweist.
  13. Verfahren nach Anspruch 11, wobei das Initialisieren ferner ein Setzen der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors, die nicht als auf die Sequenz mit niedriger Abweichung folgend ausgewählt sind, auf einen Wert von Null aufweist.
  14. Verfahren nach Anspruch 10, wobei das Initialisieren ferner ein Setzen der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors, die nicht als auf die Sequenz mit niedriger Abweichung folgend ausgewählt sind, auf eine andere beliebige Zahl als den konfigurierten Wert aufweist.
  15. System zum Trainieren eines Arbeitsspeicher-Netzwerks, das aufweist: einen Hardware-Prozessor; eine Arbeitsspeichereinheit, die mit dem Hardware-Prozessor verbunden ist, wobei die Arbeitsspeichereinheit eine Arbeitsspeicher-Matrix speichert; wobei der Hardware-Prozessor konfiguriert ist, um mindestens: ein Arbeitsspeicher-Netzwerk mit mindesten Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lesevektor anzulegen, wobei die Arbeitsspeicher-Schreibgewichtungen Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für die Arbeitsspeicher-Matrix parametrisieren, wobei die Arbeitsspeicher-Lesegewichtungen Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes aus der Arbeitsspeicher-Matrix parametrisieren; mindestens eine Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors zu initialisieren, um eine dünne Besetzung zu erhalten; und das Arbeitsspeicher-Netzwerk mit der einen Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und dem mindestens einen Lesevektor zu Trainieren, die initialisiert wurden, um ein dünn besetztes Merkmal zu erhalten, wobei das Trainieren die Schreibgewichtungen, die Lesegewichtungen und den mindestens einen Lesevektor aktualisiert.
  16. System nach Anspruch 15, wobei der Hardware-Prozessor konfiguriert ist, um eine dünn besetzte Anzahl der Schreibgewichtungen auf einen Nicht-Null-Wert zu setzen, und einen Rest der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors auf einen Null-Wert zu setzen, um die eine Auswahl aus der Gruppe der Schreibgewichtungen, der Lesegewichtungen und des mindestens einen Lesevektors zu initialisieren, um dünn besetzte Merkmale zu erhalten.
  17. System nach Anspruch 16, wobei die dünn besetzte Anzahl von Schreibgewichtungen, die auf einen Nicht-Null-Wert gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung folgt.
  18. System nach Anspruch 15, wobei der Hardware-Prozessor konfiguriert ist, um eine dünn besetzte Anzahl von Lesegewichtungen auf einen Nicht-Null-Wert zu setzen, und einen Rest der Lesegewichtungen, der Schreibgewichtungen und Elemente des mindestens einen Lesevektors auf einen Null-Wert zu setzen, um die eine Auswahl aus der Gruppe der Schreibgewichtungen, der Lesegewichtungen und des mindestens einen Lesevektors zu initialisieren, um eine dünne Besetzung zu erhalten.
  19. System nach Anspruch 18, wobei die dünn besetzte Anzahl von Lesegewichtungen, die auf Nicht-Null gesetzt sind, einem Muster einer Sequenz mit niedriger Abweichung folgt.
  20. System nach Anspruch 15, wobei der Hardware-Prozessor konfiguriert ist, um eine Sequenz mit niedriger Abweichung zu verwenden, um einen dünn besetzten Satz der einen Auswahl aus der Gruppe der Schreibgewichtungen, der Lesegewichtungen und Elemente des mindestens einen Lesevektors zu generieren.
  21. System zum Trainieren eines Arbeitsspeicher-Netzwerks, das aufweist: einen Hardware-Prozessor; eine Arbeitsspeichereinheit, die mit dem Hardware-Prozessor verbunden ist, wobei die Arbeitsspeichereinheit eine Arbeitsspeicher-Matrix speichert; wobei der Hardware-Prozessor konfiguriert ist, um mindestens: ein Arbeitsspeicher-Netzwerk mit mindestens Arbeitsspeicher-Schreibgewichtungen, Arbeitsspeicher-Lesegewichtungen und mindestens einem Lesevektor anzulegen, wobei die Arbeitsspeicher-Schreibgewichtungen Arbeitsspeicher-Schreiboperationen eines neuronalen Netzwerkes für eine externe Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerkes parametrisieren, wobei die Arbeitsspeicher-Lesegewichtungen Arbeitsspeicher-Leseoperationen des neuronalen Netzwerkes aus der externen Arbeitsspeicher-Komponente des Arbeitsspeicher-Netzwerkes parametrisieren; mindestens eine Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors auf einen konfigurierten Wert zu initialisieren, der auf eine Sequenz mit niedriger Abweichung folgt; und das Arbeitsspeicher-Netzwerk mit der einen Auswahl aus der Gruppe von mindestens den Schreibgewichtungen, den Lesegewichtungen und Elementen des mindestens einen Lesevektors mit erstmalig konfigurierten Werten, die auf eine Sequenz mit niedriger Abweichung folgen, zu trainieren, wobei das Trainieren die Schreibgewichtungen, die Lesegewichtungen und den mindestens einen Lesevektor aktualisiert.
DE112020005930.8T 2019-12-02 2020-11-24 Initialisierung von arbeitsspeicher-netzwerken Pending DE112020005930T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/699,814 2019-12-02
US16/699,814 US11461645B2 (en) 2019-12-02 2019-12-02 Initialization of memory networks
PCT/IB2020/061078 WO2021111245A1 (en) 2019-12-02 2020-11-24 Initialization of memory networks

Publications (1)

Publication Number Publication Date
DE112020005930T5 true DE112020005930T5 (de) 2022-09-22

Family

ID=76091029

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020005930.8T Pending DE112020005930T5 (de) 2019-12-02 2020-11-24 Initialisierung von arbeitsspeicher-netzwerken

Country Status (6)

Country Link
US (1) US11461645B2 (de)
JP (1) JP2023505141A (de)
CN (1) CN114651262A (de)
DE (1) DE112020005930T5 (de)
GB (1) GB2605089A (de)
WO (1) WO2021111245A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461645B2 (en) * 2019-12-02 2022-10-04 International Business Machines Corporation Initialization of memory networks

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8577820B2 (en) 2011-03-04 2013-11-05 Tokyo Electron Limited Accurate and fast neural network training for library-based critical dimension (CD) metrology
US9129222B2 (en) * 2011-06-22 2015-09-08 Qualcomm Incorporated Method and apparatus for a local competitive learning rule that leads to sparse connectivity
US9536190B2 (en) 2013-10-17 2017-01-03 Qualcomm Incorporated Dynamically assigning and examining synaptic delay
US20160321523A1 (en) 2015-04-30 2016-11-03 The Regents Of The University Of California Using machine learning to filter monte carlo noise from images
CN109313720B (zh) 2016-02-05 2023-07-18 渊慧科技有限公司 具有稀疏访问的外部存储器的增强神经网络
US10528864B2 (en) * 2016-08-11 2020-01-07 Nvidia Corporation Sparse convolutional neural network accelerator
US10891538B2 (en) * 2016-08-11 2021-01-12 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
US20180174042A1 (en) 2016-12-20 2018-06-21 Intel Corporation Supervised training and pattern matching techniques for neural networks
EP3367309A1 (de) 2017-02-28 2018-08-29 Fujitsu Limited Verfahren und gerät um speicherforderungen der tiefen neuronalen netze zu verteilen
KR102197247B1 (ko) 2017-06-01 2020-12-31 한국전자통신연구원 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법
US11295208B2 (en) * 2017-12-04 2022-04-05 International Business Machines Corporation Robust gradient weight compression schemes for deep learning applications
US11087204B2 (en) 2018-04-20 2021-08-10 International Business Machines Corporation Resistive processing unit with multiple weight readers
EP3748545A1 (de) * 2019-06-07 2020-12-09 Tata Consultancy Services Limited Auf spärlichkeitseinschränkungen und wissensdestillation basierendes lernen von spärlicheren und komprimierten neuralen netzen
US11461645B2 (en) * 2019-12-02 2022-10-04 International Business Machines Corporation Initialization of memory networks

Also Published As

Publication number Publication date
JP2023505141A (ja) 2023-02-08
CN114651262A (zh) 2022-06-21
WO2021111245A1 (en) 2021-06-10
GB2605089A (en) 2022-09-21
US20210166116A1 (en) 2021-06-03
US11461645B2 (en) 2022-10-04
GB202208430D0 (en) 2022-07-27

Similar Documents

Publication Publication Date Title
DE112018006189T5 (de) Robuste gradienten-gewichtskomprimierungsschemata für deep-learning-anwendungen
DE112018005227T5 (de) Merkmalsextraktion mithilfe von multi-task-lernen
DE102013205572B4 (de) Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung
DE112017007826T5 (de) Simulieren von Quantenschaltungen
DE112020002110T5 (de) Ressourcenarme entitätsauflösung mit transfer learning
DE112020001774T5 (de) Datensatzabhängiges niedrigrang-zerlegen von neuronalen netzwerken
DE112020002042T5 (de) Erzeugen eines absichtserkennungsmodells auf grundlage von randomisierten absichtsvektornäherungen
DE112021003908T5 (de) Föderales maschinenlernen durch verwenden von ortsabhängigem hashing
DE112020000545T5 (de) Deep-forest-modell-entwicklung und -training
DE112021000810T5 (de) Optisches erkennen von zellenstrukturen unter verwendung hierarchischer neuronaler netzwerke und zellengrenzen zum strukturieren von clustern
DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen
DE112020004231T5 (de) Ausführen von skalarproduktoperationen unter verwendung einer memristiven crossbar-anordnung
DE112018004138T5 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE112021005313T5 (de) Topologiegesteuerte vervollständigung chemischer daten
DE112021005927T5 (de) Patchen von arbeitsabläufen
DE112021003680T5 (de) Deterministisch lernende videoszenenerkennung
DE112021003274T5 (de) Ressourcenzuordnung zum optimieren von hyperparametern bei umfangreichen deep-learning-arbeitslasten
DE112020005930T5 (de) Initialisierung von arbeitsspeicher-netzwerken
DE112021001974T5 (de) Proaktives durchführen von aufgaben auf der grundlage eines schätzens vonhardwarerekonfigurationszeiten
DE112019003764B4 (de) Von der lage der zellen unabhängiges, in bezug auf die gewichtung linear aktualisierbares synaptisches cmos-array
DE112020004801T5 (de) Intelligenter datenpool
DE112017001421T5 (de) Flexibel optimiertes Datenhandling in Systemen mit mehreren Speichern
DE112021001681T5 (de) Skizzieren von matrizen unter verwendung analoger kreuzschienen-architekturen
DE112021004664T5 (de) Gattergesteuerte einheit für ein gattergesteuertes rekurrentes neuronales netzwerk
DE112022001375T5 (de) Leistungs-hotspots von neuronalen netzwerken ermitteln

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, A, US

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NY, US

R084 Declaration of willingness to licence