DE102020133266A1 - Technologien zur Verfeinerung von stochastischen Ähnlichkeitssuchekandidaten - Google Patents

Technologien zur Verfeinerung von stochastischen Ähnlichkeitssuchekandidaten Download PDF

Info

Publication number
DE102020133266A1
DE102020133266A1 DE102020133266.1A DE102020133266A DE102020133266A1 DE 102020133266 A1 DE102020133266 A1 DE 102020133266A1 DE 102020133266 A DE102020133266 A DE 102020133266A DE 102020133266 A1 DE102020133266 A1 DE 102020133266A1
Authority
DE
Germany
Prior art keywords
vectors
search
binary
result set
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
DE102020133266.1A
Other languages
English (en)
Inventor
Mariano Tepper
Dipanjan Sengupta
Jawad Khan
Sourabh Dongaonkar
Chetan Chauhan
Richard Coulson
Theodore Willke
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE102020133266A1 publication Critical patent/DE102020133266A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2468Fuzzy queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/56Information retrieval; Database structures therefor; File system structures therefor of still image data having vectorial format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/53Querying
    • G06F16/532Query formulation, e.g. graphical querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Automation & Control Theory (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Technologien zum Verfeinern stochastischer Ähnlichkeitssuchekandidaten beinhalten eine Vorrichtung mit einem spaltenadressierbaren Speicher und eine mit dem Speicher verbundene Schaltungsanordnung. Die Schaltungsanordnung ist ausgelegt zum Hinzufügen eines Satzes von Eingabedatenvektoren zu dem Speicher als einen Satz binärer dimensional erweiterter Vektoren, einschließlich Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix. Die Schaltungsanordnung ist außerdem ausgelegt zum Erzeugen eines Such-Hash-Codes aus einem Suchdatenvektor, einschließlich Multiplizieren des Suchdatenvektors mit der Projektionsmatrix. Zusätzlich ist die Schaltungsanordnung ausgelegt zum Identifizieren eines Ergebnissatzes der binären dimensional erweiterten Vektoren als eine Funktion einer Hamming-Distanz jedes binären dimensional erweiterten Vektors aus dem Such-Hash-Code und Bestimmen, aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren.

Description

  • HINTERGRUND
  • Inhaltsbasierte Ähnlichkeitssuche, oder einfach Ähnlichkeitssuche, ist eine Schlüsseltechnik, die Anwendungen mit maschinellem Lernen (ML) und künstlicher Intelligenz (KI) untermauert. Bei der Durchführung einer Ähnlichkeitssuche, werden Abfragedaten, wie etwa ein Objekt (z. B. ein Bild) angebende Daten verwendet, um eine Datenbank zu durchsuchen, sodass Daten identifiziert werden, die ähnliche Objekte (z. B. ähnliche Bilder) angeben. Das reine Volumen und die reine Fülle der bei großmaßstäbigen Ähnlichkeitssuchen verwendeten Daten sind jedoch ein äußerst schwieriges Problem, das sowohl rechen- als auch speicherintensiv ist. In manchen Systemen werden Hashing-Verfahren zum schnelleren, als anderweitig möglich wäre, Durchführen stochastischer assoziativer Suchen verwendet. Hashing-Verfahren liefern jedoch typischerweise eine fehlerhafte Umwandlung von Daten von einem Raum (z. B. Domäne) zu einem anderen Raum (z. B. Domäne) und können Suchergebnisse erbringen, die im Vergleich zu Suchen unter Verwendung des ursprünglichen Raums der zu suchenden Daten verschlechtert sind (z. B. hinsichtlich der Genauigkeit).
  • Figurenliste
  • Die hierin beschriebenen Konzepte sind beispielhaft und nicht einschränkend in den beigefügten Figuren veranschaulicht. Aus Gründen der Einfachheit und Klarheit der Veranschaulichung sind Elemente, die in den Figuren veranschaulicht sind, nicht notwendigerweise maßstabsgetreu gezeichnet. Wo es als angebracht angesehen wurde, wurden Bezugszeichen zwischen den Figuren wiederholt, um entsprechende oder analoge Elemente zu kennzeichnen.
    • 1 ist ein vereinfachtes Diagramm mindestens einer Ausführungsform einer Rechenvorrichtung zum Durchführen einer Ähnlichkeitssuchebeschleunigung unter Verwendung eines spaltenlesefähigen Speichers;
    • 2 ist ein vereinfachtes Diagramm wenigstens einer Ausführungsform eines Speichermediums, das in der Rechenvorrichtung aus 1 enthalten ist;
    • 3 ist ein vereinfachtes Diagramm mindestens einer Ausführungsform des Speichermediums der Rechenvorrichtung von 1 in einem DIMM (Dual In-Line Memory Module);
    • 4 ist ein vereinfachtes Diagramm einer stochastischen assoziativen Suche (SAS), die unter Verwendung eines binären Suchschlüssels auf dem Speichermedium der 1-3 durchgeführt wird;
    • 5 ist ein vereinfachtes Diagramm mindestens einer Ausführungsform eines inhaltsbasierten Bildabrufesystems (CBIR-Systems), das unter Verwendung der Rechenvorrichtung von 1 implementiert werden kann;
    • 6 ist ein vereinfachtes Diagramm eines Deep-Learning-basierten Ähnlichkeitssuche-Arbeitsflusses für das CBIR-System von 5;
    • 7 ist ein Diagramm einer RSL(Random Sparse Lifting)-Daten- und -Steuerfluss-Ähnlichkeitssuche-Pipeline, die unter Verwendung des Speichermediums der Rechenvorrichtung von 1 implementiert werden kann;
    • 8 ist ein Diagramm einer algorithmischen Pipeline für RSL (Random Sparse Lifting) und eine mathematische Gleichung zum Durchführen von RSL, das unter Verwendung der Rechenvorrichtung von 1 implementiert werden kann;
    • 9 ist ein Diagramm einer Hardwareabbildung von Stufen der RSL-Pipeline von 8;
    • 10 ist ein Diagramm eines Flusses, der durch die Rechenvorrichtung von 1 genutzt werden kann, um POSH (Procrustean Orthogonal Sparse Hashing) durchzuführen;
    • 11 ist ein Daten- und Steuerflussdiagramm einer POSH-Ähnlichkeitssuche-Pipeline, die unter Verwendung der Rechenvorrichtung von 1 implementiert werden kann;
    • 12 ist eine algorithmische Repräsentation von POSH und entsprechender Optimierungsprobleme und Lösungen mit geschlossener Form, die unter Verwendung der Rechenvorrichtung von 1 implementiert werden kann;
    • 13 ist eine grafische Darstellung einer Verteilung gesetzter Bits in einem Hash-Code mit Länge 1024, die durch die Rechenvorrichtung von 1 erzeugt werden kann;
    • 14 ist ein Diagramm einer Pipeline zum Durchführen stochastischer assoziativer Suchen mit Kandidatenverfeinerung, die unter Verwendung der Rechenvorrichtung von 1 implementiert werden kann; und
    • 15-18 sind Flussdiagramme mindestens einer Ausführungsform eines Verfahrens zum Durchführen stochastischer Ähnlichkeitssuchen mit Kandidatenverfeinerung, das durch die Rechenvorrichtung von 1 durchgeführt werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Obwohl die Konzepte der vorliegenden Offenbarung für vielfältige Modifikationen und alternative Formen geeignet sind, wurden spezielle Ausführungsformen davon in den Zeichnungen beispielhaft gezeigt und werden hier ausführlich beschrieben. Es versteht sich jedoch, dass keine Absicht besteht, die Konzepte der vorliegenden Offenbarung auf die offenbarten speziellen Formen zu beschränken, sondern es besteht im Gegenteil die Absicht, alle Modifikationen, Äquivalente und Alternativen, die der vorliegenden Offenbarung und den angehängten Ansprüchen entsprechen, abzudecken.
  • Bezugnahmen in der Beschreibung auf „eine Ausführungsform“, „eine veranschaulichende Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik einschließen kann, jede Ausführungsform dieses bestimmte Merkmal, diese bestimmte Struktur oder diese bestimmte Charakteristik jedoch einschließen kann oder nicht unbedingt einschließt. Darüber hinaus beziehen sich derartige Formulierungen nicht notwendigerweise auf dieselbe Ausführungsform. Ferner wird, wenn ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Charakteristik in Verbindung mit einer Ausführungsform beschrieben ist, unterstellt, dass es im Kenntnisbereich eines Fachmanns liegt, ein derartiges Merkmal, eine derartige Struktur oder eine derartige Charakteristik in Verbindung mit anderen Ausführungsformen zu bewirken, ob es nun explizit beschrieben ist oder nicht. Zusätzlich versteht sich, dass Einträge in einer Liste der Form „mindestens eines von A, B und C“ Folgendes bedeuten können: (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C). Gleichermaßen können Einträge in einer Liste der Form „mindestens eines von A, B oder C“ Folgendes bedeuten: (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C).
  • Die offenbarten Ausführungsformen können in manchen Fällen in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert sein. Die offenbarten Ausführungsformen können ebenfalls als Anweisungen implementiert sein, die durch ein flüchtiges oder nichtflüchtiges maschinenlesbares (z. B. computerlesbares) Speicherungsmedium getragen oder in diesem gespeichert werden und die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Speicherungsmedium kann als eine beliebige Speicherungsvorrichtung, ein Mechanismus oder als eine andere physische Struktur zum Speichern oder Übertragen von Informationen in einer durch eine Maschine lesbaren Form (z. B. einem flüchtigen oder nicht flüchtigen Speicher, einer Medien-Disc oder einer anderen Medienvorrichtung) ausgeführt sein.
  • In den Zeichnungen sind einige Struktur- oder Verfahrensmerkmale möglicherweise in speziellen Anordnungen und/oder Abfolgen gezeigt. Es sollte jedoch anerkannt werden, dass derartige spezielle Anordnungen und/oder Abfolgen möglicherweise nicht erforderlich sind. Vielmehr können, bei manchen Ausführungsformen, derartige Merkmale in einer anderen Weise und/oder in einer anderen Reihenfolge, als in den veranschaulichenden Figuren gezeigt, angeordnet sein. Zusätzlich dazu soll das Einschließen eines Struktur- oder Verfahrensmerkmals in einer speziellen Figur nicht bedeuten, dass ein derartiges Merkmal in allen Ausführungsformen erforderlich ist, und bei manchen Ausführungsformen ist es möglicherweise nicht enthalten oder mit anderen Merkmalen kombiniert.
  • Nun unter Bezugnahme auf 1 beinhaltet eine Rechenvorrichtung 100 zum Durchführen einer Ähnlichkeitssuchebeschleunigung unter Verwendung eines spaltenlesefähigen Speichers einen Prozessor 102, einen Speicher 104, ein Eingabe/Ausgabe(E/A)-Subsystem 112, eine Datenspeicherungsvorrichtung 114, eine Kommunikationsschaltungsanordnung 122 und eine oder mehrere Beschleunigervorrichtungen 126. Natürlich kann die Rechenvorrichtung 100 bei anderen Ausführungsformen andere oder zusätzliche Komponenten aufweisen, wie etwa jene, die gewöhnlich in einem Computer gefunden werden (z. B. eine Anzeige, Peripherievorrichtungen usw.). Zusätzlich dazu können bei manchen Ausführungsformen eine oder mehrere der veranschaulichenden Komponenten in einer anderen Komponente integriert sein oder anderweitig einen Teil davon bilden. Der Begriff „Speicher“, wie hierin in Bezug auf das Durchführen einer Ähnlichkeitssuchebeschleunigung verwendet, kann sich auf den Speicher 104 und/oder die Datenspeicherungsvorrichtung 114 beziehen, insofern nicht anders spezifiziert. Wie hierin ausführlicher erläutert, kann eine Medienzugangsschaltungsanordnung 108, 118 (z. B. eine beliebige Schaltungsanordnung oder Vorrichtung, die dazu ausgelegt ist, auf Daten in den entsprechenden Speichermedien 110, 120 zuzugreifen und an diesen zu arbeiten), die mit einem entsprechenden Speichermedium 110, 120 (z. B. einer beliebigen Vorrichtung oder einem beliebigen Material, in die/das Daten geschrieben werden und aus dieser/diesem gelesen werden) verbunden ist, auf einzelne Spalten (z. B. Bits) von Vektoren zur Verwendung bei der Durchführung von Ähnlichkeitssuchen, auch als „stochastische assoziative Suchen“ (SAS) bezeichnet, zugreifen (z. B. lesen). Demnach arbeitet der Speicher als ein „stochastischer assoziativer Speicher“ (ist z. B. dazu ausgebildet, die effiziente Leistungsfähigkeit stochastischer assoziativer Suchen zu ermöglichen). Wie ausführlicher erläutert, bei der Durchführung einer stochastischen assoziativen Suche, verfeinert die Rechenvorrichtung 100 einen anfänglichen Ergebnissatz, der unter Verwendung von binären Hashing und Hamming-Distanzen erzeugt wurde, durch Analysieren eines Teilsatzes (z. B. 100 Einträge in dem anfänglichen Ergebnissatz, die die geringsten Hamming-Distanzen aufweisen) des anfänglichen Ergebnissatzes in einem anderen Raum (z. B. Gleitkomma-Raum), Bestimmen euklidischer Abstände zwischen den Einträgen und einem Suchschlüssel und Identifizieren einer Anzahl (z. B. zehn) der nächstliegenden Einträge als den verfeinerten Ergebnissatz.
  • Das Speichermedium 110 weist bei der veranschaulichenden Ausführungsform eine dreidimensionale Crosspoint-Architektur auf, die Datenzugriffscharakteristiken aufweist, die von anderen Speicherarchitekturen (z. B. dynamischem Direktzugriffsspeicher (DRAM)) abweichen, wie etwa Ermöglichen eines Zugriffs auf ein Bit pro Kachel und Erleiden von Zeitverzögerungen zwischen Lese- oder Schreibvorgängen auf dieselbe Partition oder andere Partitionen. Die Medienzugangsschaltungsanordnung 108 ist dazu ausgelegt, die Architektur des Speichermediums 110 effizient zu verwenden (z. B. hinsichtlich Leistungsnutzung und Geschwindigkeit), wie etwa durch paralleles Zugreifen auf mehrere Kacheln innerhalb einer gegebenen Partition. In manchen Ausführungsformen kann die Medienzugangsschaltungsanordnung 108 Scratch-Pads (z. B. relativ kleiner Speicher mit niedriger Latenz) nutzen, um vom Speichermedium 110 gelesene Daten temporär zu halten und an diesen zu arbeiten, und von einer Partition gelesene Daten zu anderen Teilen des Speichers 104 zu übermitteln, um innerhalb des Speichers 104 parallel durchzuführende Berechnungen (z. B. Matrixoperationen) zu ermöglichen. In der veranschaulichten Ausführungsform kann zusätzlich der Prozessor 102, anstatt Lese- oder Schreibanforderungen zu dem Speicher 104 zu senden, um auf Matrixdaten zuzugreifen, eine Anforderung höherer Ebene (z. B. eine Anforderung für eine Makrooperation, wie etwa eine Anforderung zum Herausgeben eines Satzes von N Suchergebnissen basierend auf einem Suchschlüssel) senden. Demnach können viele Rechenoperationen, wie etwa Operationen für künstliche Intelligenz (z. B. stochastische assoziative Suchen) im Speicher (z. B. im Speicher 104 oder in der Datenspeicherungsvorrichtung 114) mit minimaler Nutzung des Busses (z. B. des E/A-Untersystems 112) durchgeführt werden, um Daten zwischen Komponenten der Rechenvorrichtung 100 (z. B. zwischen dem Speicher 104 oder der Datenspeicherungsvorrichtung 114 und dem Prozessor 102) zu transferieren.
  • Bei manchen Ausführungsformen ist die Medienzugriffsschaltungsanordnung 108 in demselben Die wie das Speichermedium 110 enthalten. Bei anderen Ausführungsformen befindet sich die Medienzugriffsschaltungsanordnung 108 auf einem anderen Die, aber in demselben Gehäuse wie das Speichermedium 110. Bei noch anderen Ausführungsformen befindet sich die Medienzugriffsschaltungsanordnung 108 in einem getrennten Die und getrennten Gehäuse, aber auf demselben doppelreihigen Speichermodul (DIMM: Dual In-line Memory Module) oder derselben Platine wie das Speichermedium 110.
  • Der Prozessor 102 kann als eine beliebige Vorrichtung oder Schaltungsanordnung (z. B. Mehrfachkernprozessor(en), ein Mikrocontroller oder ein anderer Prozessor oder Verarbeitungs-/Steuerschaltkreis) ausgeführt sein, die dazu in der Lage ist, hier beschriebene Operationen durchzuführen, wie etwa das Ausführen einer Anwendung (z. B. einer Anwendung in Zusammenhang mit künstlicher Intelligenz, die stochastische assoziative Suchen nutzen kann). Bei manchen Ausführungsformen kann der Prozessor 102 als ein feldprogrammierbares Gate-Array (FPGA), eine anwendungsspezifische integrierte Schaltung (ASIC), eine rekonfigurierbare Hardware oder Hardwareschaltungsanordnung oder eine andere spezialisierte Hardware zum Ermöglichen einer Leistungsfähigkeit der hierin beschriebenen Funktionen ausgeführt sein, diese beinhalten oder mit diesen gekoppelt sein.
  • Der Speicher 104, der einen nichtflüchtigen Speicher (z. B. einen fernen Speicher in einem Speicherschema mit zwei Ebenen) beinhalten kann, beinhaltet das Speichermedium 110 und die Medienzugriffsschaltungsanordnung 108 (z.B. eine Vorrichtung oder Schaltungsanordnung, wie etwa einen Prozessor, eine anwendungsspezifische integrierte Schaltung (ASIC) oder eine andere integrierte Schaltungsanordnung, die aus komplementären Metall-Oxid-Halbleitern (CMOS) oder anderen Materialien gefertigt ist) darunter (z. B. an einer niedrigeren Stelle) und mit dem Speichermedium 110 gekoppelt. Die Medienzugriffsschaltungsanordnung 108 ist auch mit der Speichersteuerung 106 verbunden, die als eine beliebige Vorrichtung oder Schaltungsanordnung (z. B. ein Prozessor, Coprozessor, eine dedizierte Schaltungsanordnung usw.) ausgeführt sein kann, die als Reaktion auf entsprechende Anforderungen (z. B. von dem Prozessor 102, der eine Anwendung in Zusammenhang mit künstlicher Intelligenz ausführen kann, die auf stochastische assoziative Suchen angewiesen ist, um Objekte zu erkennen, Inferenzen herzustellen und/oder zugehörige Operationen mit künstlicher Intelligenz durchzuführen) dazu ausgelegt ist, selektiv aus dem Speichermedium 110 zu lesen und/oder in dieses zu schreiben. In manchen Ausführungsformen kann die Speichersteuerung 106 eine Vektorfunktionseinheit (VFU) 130 beinhalten, die als eine beliebige Vorrichtung oder Schaltungsanordnung umgesetzt sein kann (z. B. dedizierte Schaltungsanordnung, rekonfigurierbare Schaltungsanordnung, eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA) usw.), die in der Lage ist, vektorbasierte Aufgaben vom Prozessor 102 abzuladen (z. B. Vergleichen von Daten, die aus spezifischen Spalten von im Speichermedium 110 gespeicherten Vektoren gelesen werden, Bestimmen von Hamming-Distanzen zwischen den im Speichermedium 110 gespeicherten Vektoren und einem Suchschlüssel, Sortieren der Vektoren gemäß ihren Hamming-Distanzen usw.).
  • Unter kurzer Bezugnahme auf 2 beinhaltet das Speichermedium 110 bei der veranschaulichenden Ausführungsform eine Kachelarchitektur, die hierin auch als eine Crosspoint-Architektur (z. B. eine Architektur, bei der sich Speicherzellen an den Schnittpunkten von Wortleitungen und Bitleitungen befinden und einzeln adressierbar sind und bei der eine Bitspeicherung auf einer Änderung des Volumenwiderstands basiert) bezeichnet wird, bei der jede Speicherzelle (z. B. Kachel) 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240 durch einen x-Parameter und einen y-Parameter (z. B. eine Spalte und eine Zeile) adressierbar ist. Das Speichermedium 110 beinhaltet mehrere Partitionen, von denen jede die Kachelarchitektur beinhaltet. Die Partitionen können als Schichten 202, 204, 206 gestapelt sein, sodass eine dreidimensionale Crosspoint-Architektur (z. B. ein Intel-3D-XPoint™-Speicher) gebildet wird. Im Gegensatz zu typischen Speichervorrichtungen, bei denen nur Mehrfachbitdatenstrukturen mit fester Größe (z. B. Byte, Wort usw.) adressierbar sind, ist die Medienzugriffsschaltungsanordnung 108 dazu konfiguriert, einzelne Bits oder andere Einheiten von Daten aus dem Speichermedium 110 bei der Anforderung der Speichersteuerung 106 zu lesen, die die Anforderung als Reaktion auf das Empfangen einer entsprechenden Anforderung von dem Prozessor 102 produzieren kann.
  • Unter erneuter Bezugnahme auf 1 kann der Speicher 104 einen nichtflüchtigen und flüchtigen Speicher beinhalten. Der nichtflüchtige Speicher kann als ein beliebiger Typ einer Datenspeicherung ausgeführt werden, die zum Speichern von Daten auf eine persistente Weise in der Lage ist (selbst wenn eine Leistung zu dem nichtflüchtigen Speicher unterbrochen wird). Zum Beispiel kann der nichtflüchtige Speicher als eine oder mehrere nichtflüchtige Speichervorrichtungen ausgeführt werden. Die nichtflüchtigen Speichervorrichtungen können eine oder mehrere Speichervorrichtungen beinhalten, die in einer Crosspoint-Architektur konfiguriert sind, die eine Adressierbarkeit auf Bitebene (z. B. die Fähigkeit, aus einzelnen Bits von Daten anstelle von Bytes oder anderen größeren Einheiten von Daten zu lesen und/oder in diese zu schreiben) ermöglicht, und sind veranschaulichend als dreidimensionaler (3D) Crosspoint-Speicher ausgeführt. Bei manchen Ausführungsformen kann der nichtflüchtige Speicher zusätzlich andere Typen von Speicher beinhalten, einschließlich beliebiger Kombinationen von Speichervorrichtungen, die Chalkogenidphasenwechselmaterial (z. B. Chalkogenidglas), Ferroelektrischer-Transistor-Direktzugriffsspeicher (FeTRAM), nanodrahtbasierten nichtflüchtigen Speicher, Phasenwechselspeicher (PCM), Speicher, der Memristor-Technologie einbindet, magnetoresistiven Direktzugriffsspeicher (MRAM) oder Spin-Transfer-Torque(STT)-MRAM verwenden. Der flüchtige Speicher kann als ein beliebiger Typ einer Datenspeicherung ausgeführt werden, die zum Speichern von Daten in der Lage ist, während Leistung an den flüchtigen Speicher geliefert wird. Zum Beispiel kann der flüchtige Speicher als eine oder mehrere flüchtige Speichervorrichtungen ausgeführt sein und wird nachfolgend periodisch als flüchtiger Speicher bezeichnet, wobei es sich versteht, dass der flüchtige Speicher bei anderen Ausführungsformen als andere Typen einer nichtpersistenten Datenspeicherung ausgeführt sein kann. Der flüchtige Speicher kann ähnlich der oben beschriebenen Architektur eine Architektur aufweisen, die eine Adressierbarkeit auf Bitebene ermöglicht.
  • Der Prozessor 102 und der Speicher 104 sind kommunikativ über das E/A-Untersystem 112, das als eine Schaltungsanordnung und/oder Komponenten umgesetzt sein kann, mit anderen Komponenten der Rechenvorrichtung 100 gekoppelt, um Eingabe/Ausgabe-Operationen mit dem Prozessor 102 und/oder dem Hauptspeicher 104 und anderen Komponenten der Rechenvorrichtung 100 zu ermöglichen. Zum Beispiel kann das E/A-Subsystem 112 als Speichersteuerung-Hubs, Eingabe/Ausgabe-Steuerung-Hubs, integrierte Sensor-Hubs, Firmwarevorrichtungen, Kommunikations-Links (d. h. Punkt-zu-Punkt-Links, Bus-Links, Drähte, Kabel, Lichtleiter, Leiterplattenbahnen usw.) und/oder andere Komponenten und Subsysteme zum Ermöglichen von Eingabe/Ausgabe-Operationen umgesetzt sein oder diese anderweitig beinhalten. Bei manchen Ausführungsformen kann das E/A-Subsystem 112 einen Teil eines System-on-Chip (SoC) bilden und zusammen mit dem Prozessor 102, dem Hauptspeicher 104 und/oder anderen Komponenten der Rechenvorrichtung 100 in einem einzigen Chip eingebunden sein.
  • Die Datenspeichervorrichtung 114 kann als eine beliebige Art von Vorrichtung ausgeführt sein, die zu Kurz- oder Langzeitspeicherung von Daten ausgelegt ist, wie zum Beispiel Speichervorrichtungen und -schaltungen, Speicherkarten, Festplatten, Solid-State-Laufwerke oder eine andere Datenspeichervorrichtung. In der veranschaulichenden Ausführungsform beinhaltet die Datenspeicherungsvorrichtung 114 eine Speichersteuerung 116, ähnlich der Speichersteuerung 106, ein Speichermedium 120 (auch als „Speicherungsmedium“ bezeichnet), ähnlich dem Speichermedium 110, und eine Medienzugangsschaltungsanordnung 118, ähnlich der Medienzugangsschaltungsanordnung 108. Ferner kann die Speichersteuerung 116 auch eine Vektorfunktionseinheit (VFU) 132 ähnlich der Vektorfunktionseinheit (VFU) 130 beinhalten. Die Datenspeicherungsvorrichtung 114 kann eine Systempartition, die Daten und Firmwarecode für die Datenspeicherungsvorrichtung 114 speichert, und eine oder mehrere Betriebssystempartitionen, die Dateien und ausführbare Programme für Betriebssysteme speichern, beinhalten.
  • Die Kommunikationsschaltungsanordnung 122 kann als ein(e) beliebige(r) Kommunikationsschaltkreis, Vorrichtung oder Sammlung davon ausgeführt sein, der/die zum Ermöglichen von Kommunikationen über ein Netz zwischen der Rechenvorrichtung 100 und einer anderen Vorrichtung in der Lage ist. Die Kommunikationsschaltungsanordnung 122 kann dazu konfiguriert sein, eine oder mehrere beliebige Kommunikationstechnologien (z. B. drahtgebundene oder drahtlose Kommunikationen) und damit assoziierte Protokolle (z. B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX usw.) zu verwenden, um eine solche Kommunikation zu bewirken.
  • Die veranschaulichende Kommunikationsschaltungsanordnung 122 beinhaltet eine Netzwerkschnittstellensteuerung (NIC) 124, die auch als eine Host-Fabric-Schnittstelle (HFI: Host Fabric Interface) bezeichnet werden kann. Die NIC 124 kann als eine oder mehrere Erweiterungskarten, Tochterkarten, Netzwerkschnittstellenkarten, Controller-Chips, Chipsätze oder andere Vorrichtungen, die von der Rechenvorrichtung 100 verwendet werden können, ausgeführt sein, um sich mit einer anderen Rechenvorrichtung zu verbinden. Bei manchen Ausführungsformen kann die NIC 124 als Teil eines System-on-Chip (SoC) ausgeführt sein, das einen oder mehrere Prozessoren beinhaltet, oder auf einem Mehrfachchipgehäuse enthalten sein, das auch einen oder mehrere Prozessoren enthält. Bei manchen Ausführungsformen kann die NIC 124 einen lokalen Prozessor (nicht gezeigt) und/oder einen lokalen Speicher (nicht gezeigt) beinhalten, die beide lokal für die NIC 124 sind. Bei solchen Ausführungsformen kann der lokale Prozessor der NIC 124 dazu in der Lage sein, eine oder mehrere der Funktionen des Prozessors 102 durchzuführen. Zusätzlich oder alternativ dazu kann bei solchen Ausführungsformen der lokale Speicher der NIC 124 in eine oder mehrere Komponenten der Rechenvorrichtung 100 auf der Platinenebene, Sockelebene, Chipebene und/oder anderen Ebenen integriert sein. Die eine oder die mehreren Beschleunigervorrichtungen 126 können als eine oder mehrere beliebige Vorrichtungen oder eine Schaltungsanordnung umgesetzt sein, die in der Lage ist/sind, einen Satz von Operationen schneller als der Allzweckprozessor 102 durchzuführen. Beispielsweise können die eine oder die mehreren Beschleunigervorrichtungen 126 eine Grafikverarbeitungseinheit 128 beinhalten, die als eine beliebige Vorrichtung oder Schaltungsanordnung (z. B. ein Coprozessor, eine ASIC, eine rekonfigurierbare Schaltungsanordnung usw.) umgesetzt sein kann, die in der Lage ist, Grafikoperationen (z. B. Matrixoperationen) schneller als der Prozessor 102 durchzuführen.
  • Jetzt mit Bezug auf 3 kann die Rechenvorrichtung 100 in manchen Ausführungsformen eine DIMM(Dual In-Line Memory Module)-Architektur 300 nutzen. In der Architektur 300 sind mehrere Dies des Speichermediums 110 mit einem gemeinsam genutzten Befehlsadressbus 310 verbunden. Demnach werden im Betrieb Daten parallel über das mit dem gemeinsam genutzten Befehlsadressbus 310 verbundene gesamte Speichermedium 110 ausgelesen. Daten können über das Speichermedium 110 in einer Konfiguration gestaltet werden, damit das Lesen derselben Spalte über alle der verbundenen Dies des Speichermediums 110 ermöglicht wird.
  • Jetzt mit Bezug auf 4 kann die Rechenvorrichtung 100 eine stochastische assoziative Suche 400 durchführen, die eine hocheffiziente und schnelle Weise zum Durchsuchen einer großen Datenbank mit Datensätzen und Finden ähnlicher Datensätze für einen gegebenen Abfragedatensatz (Schlüssel) ist. Zur Vereinfachung und Verdeutlichung werden die stochastische assoziative Suche 400 und andere Prozesse hierin als mit dem Speicher 104 durchgeführt beschrieben. Es sollte jedoch verstanden werden, dass die Prozesse in Abhängigkeit von der speziellen Ausführungsform alternativ oder zusätzlich mit der Speicherungsvorrichtung 114 durchgeführt werden könnten. In Anbetracht dessen, dass das Speichermedium 110 sowohl zeilen- als auch spaltenweise Lesevorgänge mit ähnlicher Leselatenz gestattet, ist das Speichermedium 110 insbesondere für das Ermöglichen effizienter stochastischer assoziativer Suchen geeignet. Wie hierin ausführlicher beschrieben, schreibt die Rechenvorrichtung 100, um die Charakteristiken des Speichermediums 110 zum Durchführen effizienter (z. B. beschleunigter, unter Verwendung geringerer Leistung und Zeit, als ansonsten verbraucht werden würde) stochastischer assoziativer Suchen zu nutzen, Datenbankelemente (z. B. Datensätze, Vektoren, Zeilen usw.) in das Speichermedium 110 im Binärformat (z. B. Einsen und Nullen) als Hash-Codes (z. B. Sequenzen von Werten, die durch eine Hashing-Funktion erzeugt werden), die dünnbesetzt sind (z. B. mehr Nullen als Einsen aufweisen). Bei der Durchführung einer Suche werden anschließend einzelne Binärwerte des Suchschlüssels 410 mit den entsprechenden Binärwerten in den Datenbankelementen (z. B. Vektoren) 422, 424, 426, 428, 430, 432, 434 verglichen, die in den Blöcken des Speichermediums 110 gespeichert sind. Die Rechenvorrichtung 100 bestimmt die Anzahl von übereinstimmenden Binärwerten zwischen dem Suchschlüssel 410 und jedem Datenbankelement (z. B. Vektor), was eine Hamming-Distanz zwischen dem Suchschlüssel 410 und jedem Datenbankelement (z. B. Vektor) repräsentiert. Die Datenbankelemente (z. B. Vektoren) mit der größten Anzahl an Übereinstimmungen (z. B. geringster Hamming-Distanz) sind die ähnlichsten Ergebnisse (z. B. der Ergebnissatz) für die stochastische assoziative Suche 400. Wie hierin ausführlicher beschrieben (z. B. mit Bezug auf die 14-18), erzeugt die Rechenvorrichtung 100 auch einen verfeinerten Ergebnissatz durch das Abbilden eines Teils des Ergebnissatzes (z. B. die besten 100 Ergebnisse) und des Suchschlüssels auf einen anderen Raum (z. B. Gleitkomma-Raum) und Finden eines kleineren Satzes (z. B. die besten zehn) der Ergebnisse, die den nächstliegenden euklidischen Abstand vom Suchschlüssel aufweisen.
  • Beispielhafte Operationsflüsse können wie folgt in Abhängigkeit von der speziellen Ausführungsform verlaufen (z. B. ob die Vektorfunktionseinheit 130 vorhanden ist). Die Elemente werden im Speichermedium 110 unter Verwendung von Zeilenschreiboperationen als binäre Vektoren gespeichert. Für eine gegebene stochastische assoziative Suche formatiert die Rechenvorrichtung 100 eine Suchabfrage unter Verwendung einer Hash-Codierung, die mit der Hash-Codierung übereinstimmt, die zum Erzeugen des Binärformats der Vektoren in der Datenbank verwendet wird. In zumindest manchen Ausführungsformen, in denen die VFU 130 nicht vorhanden ist, sendet der Prozessor 102 eine Blockspaltenleseanforderung zu der Speichersteuerung 106, um spezifizierte Spalten zu lesen (z. B. die Spalten, die den gesetzten Bits (Bits mit einem Wert von Eins) im Suchschlüssel 410 entsprechen). Der Prozessor 102 stuft anschließend die am besten übereinstimmenden Zeilen (z. B. Vektoren) basierend auf der Anzahl von gesetzten Bits, die für die gelesenen Spaltendaten übereinstimmen, ein. Der Prozessor 102 identifiziert anschließend die besten N ähnlichen Zeilen für die Anwendung, die die Suchergebnisse anfordert. Bevor der Anwendung die Ergebnisse bereitgestellt werden, kann der Prozessor 102 eine Verfeinerung der Suchergebnisse durchführen, wie vorstehend kurz erwähnt und wie mit Bezug auf die 14-18 ausführlicher beschrieben. In zumindest manchen Ausführungsformen, in denen die VFU 130 vorhanden ist, kann der Prozess wie folgt verlaufen. Der Prozessor 102 kann eine Anweisung zu der Speichersteuerung 106 zum Durchführen einer Makrooperation (z. B. Herausgeben der besten N Ergebnisse basierend auf einem gegebenen Suchschlüssel 410) senden. Anschließend sendet die Speichersteuerung 106 eine Blockspaltenleseanforderung zu der Medienzugangsschaltungsanordnung 108 zum Lesen, aus dem Speichermedium 110, der Spalten, die den gesetzten Bits im Suchschlüssel 410 entsprechen. Die VFU 130 in der Speichersteuerung 106 stuft anschließend die besten N übereinstimmenden Zeilen (z. B. Vektoren) basierend auf der Anzahl gesetzter Bits, die mit den gelesenen Spaltendaten übereinstimmen, ein und sortiert diese, und die Speichersteuerung 106 sendet anschließend Daten, die die besten N übereinstimmenden Zeilen (z. B. Vektoren) angeben, als die Suchergebnisse zu dem Prozessor 102. Der Prozessor 102 kann anschließend eine Verfeinerung der Suchergebnisse durchführen, wie hierin ausführlicher beschrieben. In manchen Ausführungsformen kann die VFU 130 zumindest einen Teil der Verfeinerung der Suchergebnisse durchführen.
  • Jetzt mit Bezug auf 5 kann ein inhaltsbasiertes Bildabrufesystem 500 mit der Rechenvorrichtung 100 implementiert werden. Angesichts einer Datenbank mit hochdimensionalen Vektoren und einem Abfragevektor q (z. B. dem Suchschlüssel 410 von 4) mit den gleichen Dimensionen sucht das inhaltsbasierte Bildabrufesystem (CBIR-System) 500 nach Datenbankvektoren (z. B. den Vektoren 422, 424, 426, 428, 430, 432, 434 von 4), die q ähnlicher oder näher sind als andere, basierend auf einer Ähnlichkeitsfunktion (z. B. einer Funktion, die einen Abstand zwischen dem Abfragevektor und jedem Datenbankvektor bestimmt). Beispielsweise identifiziert das inhaltsbasierte Abrufesystem 500 ähnliche Bilder in einer Datenbank unter Verwendung eines Abfragebildes. Ein Merkmalsextraktionsschritt kann ein Deep-Learning-Modell oder einen anderen Prozesstyp einschließen, wie etwa einen menschlich entworfenen Algorithmus. 6 veranschaulicht einen Deep-Learning-basierten Ähnlichkeitssuche-Arbeitsfluss 600 für das CBIR-System 500, wobei die Vektoren die extrahierten Merkmale aus dem Inhalt von Bildern repräsentieren. In anderen Ausführungsformen können die Vektoren den Inhalt anderer Objekte (z. B. Töne, Video, Bioinformatikdaten usw.) extrahiert und zusammengefasst (z. B. über Deep Learning oder einen anderen Prozess) repräsentieren. In der veranschaulichten Ausführungsform implementiert die gegenwärtige Rechenvorrichtung 100 im Betrieb ein inhaltsbasiertes Ähnlichkeitssuchesystem (z. B. das System 500), das die Laufzeitleistungsfähigkeit (z. B. Geschwindigkeit, Leistungsnutzung usw.) und die Genauigkeit einer Suche erheblich verbessert. Insbesondere arbeitet die Rechenvorrichtung 100 an modernen, großmaßstäbigen (z. B. Größenordnung von Milliarden), komplexen und hochdimensionalen Datensätzen unter Nutzung der eindeutigen Merkmale des Speichermediums 110 (z. B. Spalten- und Zeilenadressierbarkeit).
  • Jetzt mit Bezug auf 7 kann die Rechenvorrichtung 100 eine RSL(Random Sparse Lifting)-Daten- und -Steuerfluss-Ähnlichkeitssuche-Pipeline 700 unter Verwendung des Speichermediums 110 implementieren. Auch unter Bezug auf 8 sind eine algorithmische Pipeline 800, die durch die Rechenvorrichtung 100 zum Durchführen von RSL (Random Sparse Lifting) genutzt werden kann, und eine mathematische Gleichung 840 zum Durchführen von RSL gezeigt. Bei Random Sparse Lifting nimmt die Rechenvorrichtung 100 einen Eingabevektor x (z. B. einen d-dimensionalen Gleitkomma-Vektor) und arbeitet in den folgenden drei Schritten, wie in den 7 und 8 veranschaulicht, auf eine Weise, die der des olfaktorischen Systems der Drosophila Melanogaster (der Fruchtfliege) ähnelt. In einem Schritt 710, 810 führt die Rechenvorrichtung 100 eine Datennormierung durch. Dabei normiert die Rechenvorrichtung 100 Eingabedaten so, dass spezifischen Verformungen (z. B. Translationen, Rotationen, Scherspannung usw.) Invarianz hinzugefügt wird. Beispielsweise kann die Rechenvorrichtung 100 das Mittel der Werte in Eingabedaten (z. B. in einem Eingabedatenvektor) bestimmen und das Mittel von den Werten entfernen (z. B. subtrahieren). In einem anschließenden Schritt 720, 820 führt die Rechenvorrichtung 100 eine Dimensionalitätserweiterung durch. Dabei projiziert die Rechenvorrichtung 100 zufällig die normierten Eingabedaten zu einem höherdimensionalen Raum D, wobei D größer als d ist (z. B. 20- oder 40-fache Zunahme der Dimensionalität). Die Zufallsprojektion gewährleistet, dass jedes Element in dem höherdimensionalen Projektionsvektor relativ wenige Elemente vom Eingabevektor empfängt und summiert, wie in 8 gezeigt. Die Prozedur kann als eine Matrixmultiplikation des Eingabevektors x und einer binären dünnbesetzten Projektionsmatrix W mit Dimension (Dxd) formalisiert werden. Die Rechenvorrichtung 100 speichert die zufällige dünnbesetzte Projektionsmatrix W (auch als der Modellparameter bezeichnet) im Speicher (z. B. dem Speicher 104) zur Verwendung für anschließende Abfragen. In einem anschließenden Schritt 730, 830 binarisiert die Rechenvorrichtung 100 den Projektionsvektor, um einen Hash-Code zu erzeugen, unter Verwendung einer WTA(Winner-Take-All)-Strategie, bei der nur ein kleiner Anteil der besten Einträge (z. B. größten Werte) im Projektionsvektor (z. B. 5 % von D) auf Eins gesetzt ist und der Rest auf Null gesetzt ist. Die RSL-Prozedur setzt die eindeutigen Merkmale des Speichermediums (z. B. die Fähigkeit, einzelne Spalten zu lesen) effizient wirksam ein, um eine Ähnlichkeitssuche an einer großmaßstäbigen Datenbank (z. B. Größenordnung von einer Milliarde Elemente) zu beschleunigen, ohne die Genauigkeit der Ergebnisse zu verlieren. Genauer gesagt erzeugt der Algorithmus dünnbesetzte binäre Hash-Codes und ist eine abstandsbewahrende Transformation von der Eingabe zum Hamming-Raum. Hamming-Distanzen zwischen Hash-Codes approximieren den euklidischen Abstand zwischen den Datenpunkten, die sie erzeugten. Ferner reduziert der dünnbesetzte binäre Hash-Code die Anzahl von Speicherleseoperationen, die ansonsten aufgrund der relativ wenigen Einsen im Vergleich zu Nullen im Hash-Code erforderlich sein würden, und Informationen sind nur in den gesetzten Bits (z. B. den auf Eins gesetzten Bits) im binären Hash-Code enthalten. Demnach erfüllt der binäre Hash-Code alle Anforderungen der stochastischen assoziativen Suche und kann von der durch den Speicher 104 bereitgestellten speicherinternen binären Suchbeschleunigung profitieren.
  • Jetzt mit Bezug auf 9 ist mindestens eine Ausführungsform einer Hardwareabbildung 900 der Stufen einer RSL-Pipeline (ähnlich der Pipeline 700) gezeigt. Während des Trainings wird eine zufällige dünnbesetzte Projektionsmatrix W erzeugt, mit deren Verwendung die Eingabedaten von Gleitkomma-Vektoren zu hochdimensionalen dünnbesetzten binären Hash-Codes transformiert werden. Wie in 8 gezeigt, wird die Transformation durch einen Rechen-Host (z. B. eine Zentralverarbeitungseinheit (CPU), eine Grafikverarbeitungseinheit (GPU), ein feldprogrammierbares Gate-Array (FPGA) oder eine andere Schaltungsanordnung) durchgeführt. Anschließend werden die Hash-Codes und die Projektionsmatrix W in einem stochastischen assoziativen Speicher (z. B. dem Speichermedium 110) gespeichert. Die gleiche dünnbesetzte Projektionsmatrix W wird auch während des Indizierens verwendet, um binäre Hash-Codes für neue Elemente, die der Datenbank hinzugefügt wurden, zu erzeugen. Eine Abfrageverarbeitung beinhaltet das Abrufen der gespeicherten Matrix W und Durchführen der obigen drei Schritte, um den zum Suchen zu verwendenden dünnbesetzten binären Code (z. B. den Suchschlüssel 410 von 4) zu erzeugen. Die Rechenvorrichtung 100 vergleicht den Abfrage-Hash-Code (z. B. den Suchschlüssel 410) mit den Datenbank-Hash-Codes (z. B. den Vektoren 422, 424, 426, 428, 430, 432, 434) und berechnet die paarweisen Hamming-Distanzen (z. B. basierend auf den übereinstimmenden Bits, wie vorstehend beschrieben). Der Vergleich wird in der veranschaulichenden Ausführungsform im Speicher (z. B. im Speicher 104) durchgeführt. In der veranschaulichenden Ausführungsform sortiert der Speicher 104 (z. B. die Speichersteuerung 106) ferner zumindest teilweise die Datenbankelemente (z. B. die Vektoren 422, 424, 426, 428, 430, 432, 434) basierend auf den Hamming-Distanzen und gibt die Indizes der nächstliegenden übereinstimmenden Vektoren 422, 424, 426, 428, 430, 432, 434 (z. B. die nächstliegenden übereinstimmenden N Vektoren) heraus.
  • Jetzt mit Bezug auf 10 kann die Rechenvorrichtung 100 im Betrieb ein Verfahren 1000 zum Optimieren (z. B. Anpassen) der Projektionsmatrix W ausführen, um genauere Suchergebnisse für einen gegebenen Typ von zu suchenden Daten zu erzeugen. Das Verfahren 1000 wird hierin als POSH (Procrustean Orthogonal Sparse Hashing) bezeichnet. Während das vorstehend beschriebene Random-Sparse-Lifting-Verfahren eine Beschleunigung für eine Ähnlichkeitssuche unter Verwendung des stochastischen assoziativen Speichers (z. B. des Speichermediums 110) bereitstellt, behält das Verwenden von POSH zum Anpassen (z. B. Optimieren) der Projektionsmatrix W die Vorteile von RSL, während die Genauigkeit der Suchergebnisse erhöht wird. Der Hauptnachteil des RSL-Verfahrens liegt darin, dass es Zufallswerte in der dünnbesetzten Projektionsmatrix für die Berechnung von Hash-Codes verwendet, was das maschinelle Lernmodell nicht auf die gesuchten Daten anpasst. Anders ausgedrückt lernt das RSL-Verfahren nicht von den Eingabedaten. Das POSH-Verfahren 100 nutzt im Gegensatz dazu maschinelles Lernen, um die Projektionsmatrix W anzupassen, sodass eine verbesserte (z. B. gegenüber dem RSL-Verfahren) Datentransformation für die Dimensionalitätserweiterung bereitgestellt wird.
  • Kurz mit Bezug auf 11 beinhaltet eine Pipeline 110, ähnlich der Pipeline 700 von 7, einen maschinellen Lernprozess 1110, ähnlich dem Verfahren 1000, zum Anpassen der Projektion (z. B. der Projektionsmatrix W) an Trainingsdaten. Der maschinelle Lernprozess basiert auf einem Ansatz mit abwechselnder Optimierung. Mit Bezug auf 10 und 12 verläuft der Ansatz mit abwechselnder Optimierung wie folgt. Die Rechenvorrichtung 100 initialisiert die Projektionsmatrix W als eine zufällige dünnbesetzte binäre Projektionsmatrix und berechnet einen Hash-Code h unter Verwendung des oben beschriebenen RSL-Verfahrens. Anschließend fixiert die Rechenvorrichtung 100 W und optimiert den Hash-Code h. Das Optimierungsproblem besitzt eine geschlossene Form ähnlich dem RSL-Verfahren, wie in 12 gezeigt. Das optimierte h von der vorherigen Iteration wird fixiert gehalten, und die Rechenvorrichtung 100 optimiert dann für W (z. B. die Projektionsmatrix) als ein orthogonales Procrustes-Problem, das auch eine Lösung mit geschlossener Form besitzt, wie in 12 angegeben. Die Rechenvorrichtung 100 iteriert anschließend durch die obigen zwei Schritte, bis sowohl W als auch h zu ihren entsprechenden optimalen Werten konvergieren.
  • Da jeder der Schritte in dem abwechselnden Optimierungsverfahren Lösungen mit geschlossener Form aufweist, erreicht der POSH-Prozess eine Konvergenz bei großmaßstäbigen Datensätzen (z. B. Milliarden von Einträgen) relativ schnell (z. B. nach 50 bis 100 Iterationen). Das Durchführen des POSH-Prozesses liefert genauere Suchergebnisse als das oben beschriebene RSL-Verfahren, und erfüllt gleichzeitig die Codierungseigenschaften von RSL. Daher kann der POSH-Prozess mit den oben beschriebenen beschleunigten Suchoperationen (z. B. bezüglich RSL beschrieben) kombiniert werden, um schnelle und hocheffiziente Ergebnisse für Ähnlichkeitssuchen bereitzustellen. Kurz mit Bezug auf 13 ist eine Verteilung 1300 gesetzter Bits (z. B. Bits mit einem Wert von Eins) in einem Hash-Code (z. B. einem Hash-Code h, der unter Verwendung der unter Verwendung des POSH-Verfahrens optimierten Projektionsmatrix W erzeugt wird) gezeigt. Wie in 13 angegeben, weisen die gesetzten Bits im Hash-Code h eine fast einheitliche Verteilung auf.
  • Jetzt mit Bezug auf 14 kann die Rechenvorrichtung 100 in manchen Ausführungsformen eine Pipeline 1400 ähnlich den Pipelines 700 (7) und 1100 ( 11) implementieren, in der die Rechenvorrichtung einen anfänglichen Satz von Suchergebnissen verfeinert. Genauer gesagt führt die Rechenvorrichtung die mit RSL (Random Sparse Lifting) oder POSH assoziierten stochastischen assoziativen Suchoperationen durch, wie vorstehend mit Bezug auf die Pipelines 700 und 1100 beschrieben. Anschließend führt die Rechenvorrichtung 100 eine Verfeinerung an einem erweiterten Satz ähnlicher Datenpunkte 1410 (z. B. dem Suchergebnissatz) durch. Das heißt, während die Pipelines 700, 1100 einen Ergebnissatz von beispielsweise zehn Ergebnissen aus dem Durchführen einer stochastischen assoziativen Suche basierend auf Hamming-Distanzen erhalten können, erhält die Rechenvorrichtung 100 in der Pipeline 1400 einen größeren anfänglichen Ergebnissatz (z. B. 100 Ergebnisse, anstatt zehn Ergebnisse).
  • Unter Verwendung des erweiterten Satzes ähnlicher Datenpunkte (z. B. des anfänglichen Ergebnissatzes) führt die Rechenvorrichtung 100 eine Verfeinerungstransformation 1412 an den binären Hash-Codes (z. B. den normierten, dimensional erweiterten Binärvektoren und dem ähnlichkeitstransformierten Suchschlüssel) durch, um ihre Werte zu ihrem ursprünglichen Format (z. B. ihrem Eingabeformat, wie etwa Gleitkommawerte) umzuwandeln. In der veranschaulichenden Ausführungsform wird die Verfeinerungstransformation unter Verwendung einer umgekehrten Abbildung durchgeführt, die als ein beliebiger Algorithmus und/oder eine beliebige Datenstruktur umgesetzt sein kann, der/die zum Umwandeln zwischen dem Binärraum und dem Eingaberaum (z. B. Gleitkomma-Raum) verwendet wird. In der veranschaulichenden Ausführungsform ist die umgekehrte Abbildung ein neuronales Netzwerk, das (z. B. durch die Rechenvorrichtung 100) unter Verwendung der Eingabedatenvektoren und ihren normierten binären dimensional erweiterten Versionen als Trainigsdaten trainiert wurde (um z. B. zu bestimmen, wie von der normierten binären dimensional erweiterten Form zu der ursprünglichen Form, wie etwa Gleitkomma-Vektoren, umzuwandeln ist). Ferner führt die Rechenvorrichtung 100 einen Filterungsprozess 1414 durch, in dem die Rechenvorrichtung 100 den euklidischen Abstand jedes Vektors im Eingaberaum (z. B. Gleitkomma-Raum) zu dem Suchschlüssel (z. B. im Gleitkomma-Raum) bestimmt und einen Anteil (z. B. 10 %) mit den geringsten euklidischen Abständen als den verfeinerten Ergebnissatz (z. B. als die Abfrageergebnisse 1416) auswählt. Dadurch, dass die Hash-Code- und Hamming-Distanz-Analyse zuerst durchgeführt wird, reduziert die Rechenvorrichtung 100 den Ergebnissatz erheblich, an dem die genauere Analyse mit euklidischem Abstand (z. B. die Verfeinerungstransformation und Filterung) arbeiten muss. Demnach liefert die Pipeline 1400 im Vergleich zu den Pipelines 700, 1100 potenziell genauere Suchergebnisse, während nur eine geringfügige Zunahme der Rechenkapazität (z. B. Verarbeitungszeit) auftritt.
  • Jetzt mit Bezug auf 15 kann die Rechenvorrichtung 100 im Betrieb ein Verfahren 1500 zum Durchführen von Ähnlichkeitssuchen mit Suchkandidatenverfeinerung ausführen. Das Verfahren 1500 beginnt mit Block 1502, in dem die Rechenvorrichtung 100 bestimmt, ob eine Ähnlichkeitssuche mit Kandidatenverfeinerung zu aktivieren ist. Dabei kann die Rechenvorrichtung 100 bestimmen, eine Ähnlichkeitssuche mit Kandidatenverfeinerung als Reaktion auf eine Anforderung von einer Anwendung (z. B. durch den Prozessor 102 ausgeführt), eine Suche mit Kandidatenverfeinerung zu aktivieren, als Reaktion auf eine Bestimmung, dass eine Konfigurationseinstellung (z. B. in einer Konfigurationsdatei) angibt, eine Suche mit Kandidatenverfeinerung zu aktivieren, und/oder basierend auf anderen Faktoren zu aktivieren. Ungeachtet dessen geht das Verfahren 1500 als Reaktion auf eine Bestimmung, eine Suche mit Kandidatenverfeinerung zu aktivieren, zu Block 1504 über, bei dem die Rechenvorrichtung 100 bestimmt, ob Daten hinzuzufügen sind (z. B. zu suchende Eingabedaten). Die Rechenvorrichtung 100 kann bestimmen, Daten hinzuzufügen, als Reaktion auf eine Anforderung von einer Anwendung (z. B. durch den Prozessor 102 ausgeführt), zu suchende Daten hinzuzufügen, als Reaktion auf eine Anforderung von einer anderen Rechenvorrichtung 100 (z. B. eine Anforderung, die über die Kommunikationsschaltungsanordnung 122 empfangen wird), Daten hinzuzufügen, als Reaktion auf eine Bestimmung, dass eine Quelle für Eingabedaten neue Daten beinhaltet, die noch nicht durch die Rechenvorrichtung 100 indiziert (z. B. zu binären dimensional erweiterten Vektoren im Speichermedium 100 umgewandelt) wurden, und/oder basierend auf anderen Faktoren.
  • Als Reaktion auf eine Bestimmung, Daten hinzuzufügen, geht das Verfahren 1500 zu Block 1506 über, bei dem die Rechenvorrichtung 100 einen oder mehrere Eingabedatenvektoren zu einem spaltenadressierbaren Speicher als ein oder mehrere binäre dimensional erweiterte Vektoren hinzufügt (z. B. einen binären dimensional erweiterten Vektor pro Eingabedatenvektor). Dabei, und wie in Block 1508 angegeben, fügt die Rechenvorrichtung 100 in der veranschaulichenden Ausführungsform einen oder mehrere Eingabedatenvektoren mit Datenwerten, die Merkmale von zu suchenden Objekten angeben (z. B. basierend auf einem Merkmalsextraktionsprozess), hinzu. Beispielsweise, und wie in Block 1510 angegeben, kann die Rechenvorrichtung 100 einen oder mehrere Eingabedatenvektoren mit Datenwerten hinzufügen, die Merkmale von Bildern oder Tönen angeben. In anderen Ausführungsformen können die Eingabedatenvektoren Datenwerte aufweisen, die andere Arten von zu suchenden Objekten angeben (z. B. Videos, Bioinformatikdaten wie etwa Gensequenzen usw.). Wie in Block 1512 angegeben, fügt die Rechenvorrichtung 100 in der veranschaulichenden Ausführungsform einen oder mehrere Eingabedatenvektoren mit Gleitkomma-Datenwerten zu dem Speicher (z. B. dem Speichermedium 110) als binäre dimensional erweiterte Vektoren hinzu. In der veranschaulichenden Ausführungsform führt die Rechenvorrichtung 100 eine Normierung an dem einen oder den mehreren Eingabedatenvektoren durch, wie in Block 1514 angegeben. Dabei fügt die Rechenvorrichtung 100 den Eingabedatenvektoren Invarianz hinzu, wie in Block 1516 angegeben. In manchen Ausführungsformen bestimmt die Rechenvorrichtung 100 zur Normierung des einen oder der mehreren Eingabedatenvektoren ein Mittel der Datenwerte in dem einen oder den mehreren Eingabedatenvektoren, wie in Block 1518 angegeben, und subtrahiert das Mittel von jedem Datenwert, wie in Block 1520 angegeben. Der Normierungsprozess ist auch als Schritte 710 in 7 und 810 in 8 gezeigt. Anschließend geht das Verfahren 1500 zu Block 1522 in 16 über, bei dem die Rechenvorrichtung 100 in der veranschaulichenden Ausführungsform eine Dimensionalitätserweiterung an jedem Eingabedatenvektor durchführt.
  • Jetzt mit Bezug auf 16, und wie in Block 1524 angegeben, multipliziert die Rechenvorrichtung 100 beim Durchführen der Dimensionalitätserweiterung jeden Eingabedatenvektor mit einer Projektionsmatrix (z. B. der binären dünnbesetzten Projektionsmatrix W). Wie in Block 1526 angegeben, kann die Rechenvorrichtung 100 jeden Eingabedatenvektor mit einer binären dünnbesetzten Projektionsmatrix (W) mit zufälligen Binärwerten (z. B. Random Sparse Lifting) multiplizieren. Die Dimensionalitätserweiterung unter Verwendung einer binären dünnbesetzten Projektionsmatrix mit zufälligen Binärwerten ist auch in Schritt 712 von 7 repräsentiert. In anderen Ausführungsformen kann die Rechenvorrichtung 100 alternativ jeden Eingabedatenvektor mit einer Projektionsmatrix (W) (z. B. einer dichtbesetzten Gleitkomma-Matrix) multiplizieren, die an die Eingabedatenvektoren angepasst ist (z. B. das POSH-Verfahren), um genauere Suchergebnisse als der Random-Sparse-Lifting-Ansatz bereitzustellen, wie in Block 1528 angegeben. Dabei, und wie in Block 1530 angegeben, kann die Rechenvorrichtung 100 eine Multiplikation unter Verwendung einer Projektionsmatrix (z. B. einer dichtbesetzten Gleitkomma-Matrix) durchführen, die durch abwechselndes Iterieren zwischen dem Optimieren eines Hash-Codes und dem Optimieren der Projektionsmatrix, bis der Hash-Code und die Projektionsmatrix zu entsprechenden Zielwerten konvergiert sind, optimiert wurde. Wie in Block 1532 angegeben, kann die Rechenvorrichtung 100 eine Multiplikation unter Verwendung einer Projektionsmatrix (z. B. einer dichtbesetzten Gleitkomma-Matrix) durchführen, die unter Verwendung des orthogonalen Procrustes-Problems angepasst wurde. Die Optimierung der Projektionsmatrix ist oben relativ zu 10 (z. B. das Verfahren 1000), 11 (z. B. maschineller Lernprozess 1100) und 12 beschrieben.
  • Wie in Block 1534 angegeben, führt die Rechenvorrichtung 100 in der veranschaulichenden Ausführungsform eine Binarisierung jedes dimensional erweiterten Eingabedatenvektors durch, um einen entsprechenden Hash-Code zu erzeugen. Die Binarisierungsoperation ist auch in 7 (z. B. als Schritt 714), 8 (z. B. als Schritt 814) und 11 repräsentiert. Dabei, und wie in Block 1536 angegeben, kann die Rechenvorrichtung 100 die Binarisierung unter Verwendung einer Winner-Take-All-Umwandlung durchführen. Beispielsweise, und wie in den Blöcken 1538, 1540 und 1542 angegeben, kann die Rechenvorrichtung 100, als eine Funktion der Datenwerte in einem gegebenen dimensional erweiterten Eingabevektor, einen Schwellenwert bestimmen (z. B. einen Wert, der den N-ten Anteil der im dimensional erweiterten Eingabevektor repräsentierten größten Werte repräsentiert), alle Datenwerte in dem dimensional erweiterten Eingabevektor, die den Schwellenwert erfüllen (z. B. gleich oder größer als dieser sind), auf Eins setzen und alle Datenwerte, die den Schwellenwert nicht erfüllen, auf Null setzen. Wie in Block 1544 angegeben, schreibt die Rechenvorrichtung 100 die Projektionsmatrix in den Speicher (z. B. den Speicher 104). Anschließend geht das Verfahren 1500 zu Block 1546 von 17 über, bei dem die Rechenvorrichtung 100 eine inverse Abbildung trainiert, um Hash-Codes zu einem ursprünglichen Eingabeformat umzuwandeln.
  • Jetzt mit Bezug auf 17 kann beim Trainieren einer inversen Abbildung die Rechenvorrichtung 100 eine inverse Abbildung trainieren, um binäre dimensional erweiterte Vektoren zu einem Gleitkomma-Format umzuwandeln, wie in Block 1548 angegeben. Wie in Block 1550 angegeben, kann die Rechenvorrichtung 100 die inverse Abbildung als ein neuronales Netzwerk unter Verwendung der Eingabedatenvektoren und der binären dimensional erweiterten Vektoren als Trainingsdaten trainieren (um z. B. zu bestimmen, welche Operationen durchzuführen sind, um einen binären dimensional erweiterten Vektor zu dem entsprechenden Eingabedatenvektor umzuwandeln). Anschließend, oder falls der Bestimmungsblock 1504 von 15 ergibt, keine Daten hinzuzufügen, geht das Verfahren 1500 zu Block 1552 über, bei dem die Rechenvorrichtung 100 bestimmt, ob eine Suchabfrage erhalten wurde (z. B. empfangen wurde, wie etwa von einer durch den Prozessor 102 ausgeführten Anwendung).
  • Als Reaktion auf eine Bestimmung, dass eine Suchabfrage nicht erhalten wurde, kehrt das Verfahren 1500 zu Block 1504 von 15 zurück, bei dem die Rechenvorrichtung 100 erneut bestimmt, ob Daten hinzuzufügen sind (z. B. Indizieren zusätzlicher zu suchender Daten). Ansonsten (z. B. falls eine Suchabfrage erhalten wurde) geht das Verfahren 1500 zu Block 1554 über, bei dem die Rechenvorrichtung einen Such-Hash-Code aus einem in der Suchabfrage enthaltenen Suchdatenvektor erzeugt. Das heißt, in der veranschaulichenden Ausführungsform erhält die Rechenvorrichtung 100 einen Suchdatenvektor mit Werten, die Merkmale eines Objekts (z. B. eines Bildes, Audio, eines Videos, Bioinformatikdaten usw.) angeben, die in einer Ähnlichkeitssuche (z. B. einer stochastischen Ähnlichkeitssuche) zu verwenden sind, um Daten (z. B. im Speichermedium 110) ähnlich dem Objekt zu identifizieren. Dadurch, und wie in Block 1556 angegeben, führt die Rechenvorrichtung 100 eine Normierung des Suchdatenvektors durch (z. B. ähnlich den Operationen in Block 1514 von 15). Ferner, und wie in Block 1558 angegeben, führt die Rechenvorrichtung 100 in der veranschaulichenden Ausführungsform eine Dimensionalitätserweiterung durch Multiplizieren des Suchdatenvektors mit der Projektionsmatrix, die zum Durchführen einer Dimensionalitätserweiterung an den Eingabedatenvektoren verwendet wurde (z. B. die Projektionsmatrix, die in Block 1544 von 16 in den Speicher geschrieben wurde), durch. In der veranschaulichenden Ausführungsform und wie in Block 1560 angegeben, führt die Rechenvorrichtung 100 zusätzlich eine Binarisierung an dem dimensional erweiterten Suchdatenvektor durch, um den Such-Hash-Code (z. B. den Suchschlüssel 410 von 4) zu erzeugen. Die Rechenvorrichtung 100 führt in der veranschaulichenden Ausführungsform die Binarisierung in einem Prozess durch, der dem Binarisierungsprozess von Block 1534 von 16 ähnelt. Anschließend, und wie in Block 1562 angegeben, bestimmt die Rechenvorrichtung 100 eine Hamming-Distanz zwischen dem Such-Hash-Code (z. B. dem Suchschlüssel 410) und den binären dimensional erweiterten Vektoren im Speicher (z. B. dem Speichermedium 100), wie etwa durch Bestimmen, wie viele gesetzte Bits zwischen dem Such-Hash-Code und jedem binären dimensional erweiterten Vektor übereinstimmen, wie bezüglich 4 beschrieben. Danach geht das Verfahren 1500 zu Block 1564 von 18 über, bei dem die Rechenvorrichtung 100 einen Ergebnissatz der binären dimensional erweiterten Vektoren als eine Funktion der Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code (z. B. dem Suchschlüssel 410) identifiziert.
  • Jetzt mit Bezug auf 18, bei der Bestimmung des Ergebnissatzes, und wie in Block 1566 angegeben, sortiert die Rechenvorrichtung 100 in der veranschaulichenden Ausführungsform die binären dimensional erweiterten Vektoren als eine Funktion ihrer bestimmten Hamming-Distanzen (z. B. von geringster Distanz zu größter Distanz). Ferner, und wie in Block 1568 angegeben, identifiziert die Rechenvorrichtung 100 eine vordefinierte Anzahl der dimensional erweiterten Vektoren mit den geringsten Hamming-Distanzen. Dabei, und wie in Block 1570 angegeben, kann die Rechenvorrichtung 100 einen Ergebnissatz (z. B. den erweiterten Satz ähnlicher Datenpunkte 1410 von 14) identifizieren, der zehn Mal die Zielgröße eines verfeinerten Ergebnissatzes ist (z. B. enthält der Ergebnissatz 100 Ergebnisse, und die Zielgröße für den verfeinerten Ergebnissatz beträgt zehn Ergebnisse).
  • Anschließend bestimmt die Rechenvorrichtung 100 in Block 1572 einen verfeinerten Ergebnissatz als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren. Dabei, und wie in Block 1574 angegeben, kann die Rechenvorrichtung 100 die binären dimensional erweiterten Vektoren im Ergebnissatz unter Verwendung der inversen Abbildung (z. B. vom Block 1546) zu einem ursprünglichen Datenformat umwandeln. In der veranschaulichenden Ausführungsform wandelt die Rechenvorrichtung 100 die binären dimensional erweiterten Vektoren im Ergebnissatz zu Vektoren mit Gleitkommawerten um, wie in Block 1576 angegeben. Zusätzlich wandelt die Rechenvorrichtung 100 den Such-Hash-Code unter Verwendung der inversen Abbildung zu einem ursprünglichen Datenformat um, wie in Block 1578 angegeben. In der veranschaulichenden Ausführungsform wandelt die Rechenvorrichtung 100 den Such-Hash-Code zu Gleitkommawerten um, wie in Block 1580 angegeben. Die Umwandlung in den Blöcken 1574, 1576, 1578 und 1580 entspricht der Verfeinerungstransformation 1412 in der Pipeline 1400 von 14. Zusätzlich bestimmt die Rechenvorrichtung 100 in der veranschaulichenden Ausführungsform einen euklidischen Abstand jedes umgewandelten Vektors im Ergebnissatz vom umgewandelten Such-Hash-Code, wie in Block 1582 angegeben (z. B. im Gleitkomma-Raum). In Block 1584 identifiziert die Rechenvorrichtung 100 einen Teilsatz der umgewandelten Vektoren mit der größten Ähnlichkeit im ursprünglichen Eingaberaum (z. B. Gleitkomma-Raum) als den verfeinerten Ergebnissatz. Dabei identifiziert die Rechenvorrichtung 100 in der veranschaulichenden Ausführungsform einen Teilsatz der umgewandelten Vektoren mit dem geringsten (z. B. kleinsten) euklidischen Abstand vom umgewandelten Such-Hash-Code als den verfeinerten Ergebnissatz, wie in Block 1586 angegeben. Veranschaulichend identifiziert die Rechenvorrichtung 100 als den verfeinerten Ergebnissatz einen Teilsatz, der 10 % der Größe des Ergebnissatzes beträgt, wie in Block 1588 angegeben. Die Blöcke 1582, 1584, 1586 und 1588 entsprechen der Filterungsoperation 1414 in der Pipeline 1400 von 14. Nach dem Identifizieren des verfeinerten Ergebnissatzes aus der Suche (z. B. zur Verwendung durch die anfordernde Anwendung) kehrt das Verfahren 1500 in der veranschaulichenden Ausführungsform zu Block 1504 von 15 zurück, bei dem die Rechenvorrichtung 100 bestimmt, ob zusätzliche Daten zu dem Speicher hinzuzufügen sind (z. B. Indizieren zusätzlicher suchbarer Daten).
  • BEISPIELE
  • Veranschaulichende Beispiele der hier offenbarten Technologien sind unten bereitgestellt. Eine Ausführungsform der Technologien kann ein oder mehrere der unten beschriebenen Beispiele und eine beliebige Kombination davon beinhalten.
  • Beispiel 1 beinhaltet eine Vorrichtung, die umfasst: einen spaltenadressierbaren Speicher; eine Schaltungsanordnung, die mit dem Speicher verbunden ist, wobei die Schaltungsanordnung ausgelegt ist zum Hinzufügen eines Satzes von Eingabedatenvektoren zu dem Speicher als einen Satz binärer dimensional erweiterter Vektoren, einschließlich Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix; Erzeugen eines Such-Hash-Codes aus einem Suchdatenvektor, einschließlich Multiplizieren des Suchdatenvektors mit der Projektionsmatrix; Identifizieren eines Ergebnissatzes der binären dimensional erweiterten Vektoren als eine Funktion einer Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code; und Bestimmen, aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren.
  • Beispiel 2 beinhaltet den Gegenstand von Beispiel 1, und wobei die Schaltungsanordnung ferner ausgelegt ist zum Trainieren einer inversen Abbildung, um die binären dimensional erweiterten Vektoren und den Such-Hash-Code zu einem ursprünglichen Datenformat umzuwandeln.
  • Beispiel 3 beinhaltet den Gegenstand eines der Beispiele 1 und 2, und wobei das Bestimmen eines verfeinerten Ergebnissatzes Umwandeln der binären dimensional erweiterten Vektoren im Ergebnissatz zu Vektoren mit Gleitkommawerten umfasst. 4 Die Vorrichtung nach Anspruch 2, wobei das Bestimmen eines verfeinerten Ergebnissatzes Umwandeln des Such-Hash-Codes zu einem Satz mit Gleitkommawerten umfasst.
  • Beispiel 5 beinhaltet den Gegenstand eines der Beispiele 1-4, und wobei das Bestimmen eines verfeinerten Ergebnissatzes Bestimmen eines euklidischen Abstands zwischen jedem umgewandelten Vektor und dem umgewandelten Such-Hash-Code umfasst.
  • Beispiel 6 beinhaltet den Gegenstand eines der Beispiele 1-5, und wobei das Bestimmen des verfeinerten Ergebnissatzes ferner Identifizieren eines Teilsatzes der umgewandelten Vektoren mit dem geringsten euklidischen Abstand vom umgewandelten Such-Hash-Code als den verfeinerten Ergebnissatz umfasst.
  • Beispiel 7 beinhaltet den Gegenstand eines der Beispiele 1-6, und wobei das Bestimmen, aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes Bestimmen eines verfeinerten Ergebnissatzes umfasst, der eine Größenordnung kleiner als der Ergebnissatz ist.
  • Beispiel 8 beinhaltet den Gegenstand eines der Beispiele 1-7, und wobei das Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix Multiplizieren von Eingabedatenvektoren mit Datenwerten, die aus zu suchenden Objekten extrahierte Merkmale angeben, mit der Projektionsmatrix umfasst.
  • Beispiel 9 beinhaltet den Gegenstand eines der Beispiele 1-8, und wobei das Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix Multiplizieren von Eingabedatenvektoren mit Datenwerten, die aus zu suchenden Bildern extrahierte Merkmale angeben, mit der Projektionsmatrix umfasst.
  • Beispiel 10 beinhaltet den Gegenstand eines der Beispiele 1-9, und wobei die Schaltungsanordnung ferner ausgelegt ist zum Sortieren der binären dimensional erweiterten Vektoren als eine Funktion der Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code.
  • Beispiel 11 beinhaltet den Gegenstand von einem der Beispiele 1-10, und wobei der Speicher spaltenadressierbar und zeilenadressierbar ist.
  • Beispiel 12 beinhaltet den Gegenstand eines der Beispiele 1-11, und wobei der Speicher eine dreidimensionale Crosspoint-Architektur aufweist.
  • Beispiel 13 beinhaltet ein Verfahren, das umfasst: Hinzufügen, durch eine Vorrichtung mit einem spaltenadressierbaren Speicher, eines Satzes von Eingabedatenvektoren zu dem Speicher als einen Satz binärer dimensional erweiterter Vektoren, einschließlich Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix; Erzeugen, durch die Vorrichtung, eines Such-Hash-Codes aus einem Suchdatenvektor, einschließlich Multiplizieren des Suchdatenvektors mit der Projektionsmatrix; Identifizieren, durch die Vorrichtung, eines Ergebnissatzes der binären dimensional erweiterten Vektoren als eine Funktion einer Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code; und Bestimmen, durch die Vorrichtung und aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren.
  • Beispiel 14 beinhaltet den Gegenstand von Beispiel 13, und ferner einschließlich Trainieren, durch die Vorrichtung, einer inversen Abbildung, um die binären dimensional erweiterten Vektoren und den Such-Hash-Code zu einem ursprünglichen Datenformat umzuwandeln.
  • Beispiel 15 beinhaltet ein System, das umfasst: einen Prozessor; einen spaltenadressierbaren Speicher; eine Schaltungsanordnung, die mit dem Speicher verbunden ist, wobei die Schaltungsanordnung ausgelegt ist zum Hinzufügen eines Satzes von Eingabedatenvektoren zu dem Speicher als einen Satz binärer dimensional erweiterter Vektoren, einschließlich Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix; Erzeugen eines Such-Hash-Codes aus einem Suchdatenvektor, einschließlich Multiplizieren des Suchdatenvektors mit der Projektionsmatrix; Identifizieren eines Ergebnissatzes der binären dimensional erweiterten Vektoren als eine Funktion einer Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code; und Bestimmen, aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren.
  • Beispiel 16 beinhaltet den Gegenstand des Beispiels 15, und wobei sich die Schaltungsanordnung in einer Datenspeicherungsvorrichtung befindet.
  • Beispiel 17 beinhaltet den Gegenstand eines der Beispiele 15 und 16, und wobei sich die Schaltungsanordnung in einer Speichervorrichtung befindet.
  • Beispiel 18 beinhaltet den Gegenstand eines der Beispiele 15-17, und wobei die Schaltungsanordnung ferner ausgelegt ist zum Trainieren einer inversen Abbildung, um die binären dimensional erweiterten Vektoren und den Such-Hash-Code zu einem ursprünglichen Datenformat umzuwandeln.
  • Beispiel 19 beinhaltet den Gegenstand eines der Beispiele 15-18, und wobei das Bestimmen eines verfeinerten Ergebnissatzes Umwandeln der binären dimensional erweiterten Vektoren im Ergebnissatz zu Vektoren mit Gleitkommawerten umfasst.
  • Beispiel 20 beinhaltet ein oder mehrere maschinenlesbare Speicherungsmedien, die mehrere darauf gespeicherte Anweisungen umfassen, die als Reaktion auf ihre Ausführung bewirken, dass eine Vorrichtung mit einem spaltenadressierbaren Speicher Folgendes ausführt: Hinzufügen eines Satzes von Eingabedatenvektoren zu dem Speicher als einen Satz binärer dimensional erweiterter Vektoren, einschließlich Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix; Erzeugen eines Such-Hash-Codes aus einem Suchdatenvektor, einschließlich Multiplizieren des Suchdatenvektors mit der Projektionsmatrix; Identifizieren eines Ergebnissatzes der binären dimensional erweiterten Vektoren als eine Funktion einer Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code; und Bestimmen, aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren.

Claims (20)

  1. Vorrichtung, die Folgendes umfasst: einen spaltenadressierbaren Speicher; eine Schaltungsanordnung, die mit dem Speicher verbunden ist, wobei die Schaltungsanordnung ausgelegt ist zum: Hinzufügen eines Satzes von Eingabedatenvektoren zu dem Speicher als einen Satz binärer dimensional erweiterter Vektoren, einschließlich Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix; Erzeugen eines Such-Hash-Codes aus einem Suchdatenvektor, einschließlich Multiplizieren des Suchdatenvektors mit der Projektionsmatrix; Identifizieren eines Ergebnissatzes der binären dimensional erweiterten Vektoren als eine Funktion einer Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code; und Bestimmen, aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren.
  2. Vorrichtung nach Anspruch 1, wobei die Schaltungsanordnung ferner ausgelegt ist zum Trainieren einer inversen Abbildung, um die binären dimensional erweiterten Vektoren und den Such-Hash-Code zu einem ursprünglichen Datenformat umzuwandeln.
  3. Vorrichtung nach Anspruch 2, wobei das Bestimmen eines verfeinerten Ergebnissatzes Umwandeln der binären dimensional erweiterten Vektoren im Ergebnissatz zu Vektoren mit Gleitkommawerten umfasst.
  4. Vorrichtung nach Anspruch 2, wobei das Bestimmen eines verfeinerten Ergebnissatzes Umwandeln des Such-Hash-Codes zu einem Satz mit Gleitkommawerten umfasst.
  5. Vorrichtung nach Anspruch 2, wobei das Bestimmen eines verfeinerten Ergebnissatzes Bestimmen eines euklidischen Abstands zwischen jedem umgewandelten Vektor und dem umgewandelten Such-Hash-Code umfasst.
  6. Vorrichtung nach Anspruch 5, wobei das Bestimmen des verfeinerten Ergebnissatzes ferner Identifizieren eines Teilsatzes der umgewandelten Vektoren mit dem geringsten euklidischen Abstand vom umgewandelten Such-Hash-Code als den verfeinerten Ergebnissatz umfasst.
  7. Vorrichtung nach Anspruch 1, wobei das Bestimmen, aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes Bestimmen eines verfeinerten Ergebnissatzes umfasst, der eine Größenordnung kleiner als der Ergebnissatz ist.
  8. Vorrichtung nach Anspruch 1, wobei das Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix Multiplizieren von Eingabedatenvektoren mit Datenwerten, die aus zu suchenden Objekten extrahierte Merkmale angeben, mit der Projektionsmatrix umfasst.
  9. Vorrichtung nach Anspruch 8, wobei das Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix Multiplizieren von Eingabedatenvektoren mit Datenwerten, die aus zu suchenden Bildern extrahierte Merkmale angeben, mit der Projektionsmatrix umfasst.
  10. Vorrichtung nach Anspruch 1, wobei die Schaltungsanordnung ferner ausgelegt ist zum Sortieren der binären dimensional erweiterten Vektoren als eine Funktion der Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code.
  11. Vorrichtung nach Anspruch 1, wobei der Speicher spaltenadressierbar und zeilenadressierbar ist.
  12. Vorrichtung nach Anspruch 1, wobei der Speicher eine dreidimensionale Crosspoint-Architektur aufweist.
  13. Verfahren, das Folgendes umfasst: Hinzufügen, durch eine Vorrichtung mit einem spaltenadressierbaren Speicher, eines Satzes von Eingabedatenvektoren zu dem Speicher als einen Satz binärer dimensional erweiterter Vektoren, einschließlich Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix; Erzeugen, durch die Vorrichtung, eines Such-Hash-Codes aus einem Suchdatenvektor, einschließlich Multiplizieren des Suchdatenvektors mit der Projektionsmatrix; Identifizieren, durch die Vorrichtung, eines Ergebnissatzes der binären dimensional erweiterten Vektoren als eine Funktion einer Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code; und Bestimmen, durch die Vorrichtung und aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren.
  14. Verfahren nach Anspruch 13, ferner umfassend Trainieren, durch die Vorrichtung, einer inversen Abbildung, um die binären dimensional erweiterten Vektoren und den Such-Hash-Code zu einem ursprünglichen Datenformat umzuwandeln.
  15. System, das Folgendes umfasst: einen Prozessor; einen spaltenadressierbaren Speicher; eine Schaltungsanordnung, die mit dem Speicher verbunden ist, wobei die Schaltungsanordnung ausgelegt ist zum: Hinzufügen eines Satzes von Eingabedatenvektoren zu dem Speicher als einen Satz binärer dimensional erweiterter Vektoren, einschließlich Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix; Erzeugen eines Such-Hash-Codes aus einem Suchdatenvektor, einschließlich Multiplizieren des Suchdatenvektors mit der Projektionsmatrix; Identifizieren eines Ergebnissatzes der binären dimensional erweiterten Vektoren als eine Funktion einer Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code; und Bestimmen, aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren.
  16. System nach Anspruch 15, wobei sich die Schaltungsanordnung in einer Datenspeicherungsvorrichtung befindet.
  17. System nach Anspruch 15, wobei sich die Schaltungsanordnung in einer Speichervorrichtung befindet.
  18. System nach Anspruch 15, wobei die Schaltungsanordnung ferner ausgelegt ist zum Trainieren einer inversen Abbildung, um die binären dimensional erweiterten Vektoren und den Such-Hash-Code zu einem ursprünglichen Datenformat umzuwandeln.
  19. System nach Anspruch 18, wobei das Bestimmen eines verfeinerten Ergebnissatzes Umwandeln der binären dimensional erweiterten Vektoren im Ergebnissatz zu Vektoren mit Gleitkommawerten umfasst.
  20. Maschinenlesbares Speicherungsmedium oder maschinenlesbare Speicherungsmedien, die mehrere darauf gespeicherte Anweisungen umfassen, die als Reaktion auf ihre Ausführung bewirken, dass eine Vorrichtung mit einem spaltenadressierbaren Speicher Folgendes ausführt: Hinzufügen eines Satzes von Eingabedatenvektoren zu dem Speicher als einen Satz binärer dimensional erweiterter Vektoren, einschließlich Multiplizieren jedes Eingabedatenvektors mit einer Projektionsmatrix; Erzeugen eines Such-Hash-Codes aus einem Suchdatenvektor, einschließlich Multiplizieren des Suchdatenvektors mit der Projektionsmatrix; Identifizieren eines Ergebnissatzes der binären dimensional erweiterten Vektoren als eine Funktion einer Hamming-Distanz jedes binären dimensional erweiterten Vektors vom Such-Hash-Code; und Bestimmen, aus dem Ergebnissatz, eines verfeinerten Ergebnissatzes als eine Funktion eines Ähnlichkeitsmaßes in einem ursprünglichen Eingaberaum der Eingabedatenvektoren.
DE102020133266.1A 2020-05-06 2020-12-14 Technologien zur Verfeinerung von stochastischen Ähnlichkeitssuchekandidaten Pending DE102020133266A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/868,069 US11829376B2 (en) 2020-05-06 2020-05-06 Technologies for refining stochastic similarity search candidates
US16/868,069 2020-05-06

Publications (1)

Publication Number Publication Date
DE102020133266A1 true DE102020133266A1 (de) 2021-11-11

Family

ID=72042119

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020133266.1A Pending DE102020133266A1 (de) 2020-05-06 2020-12-14 Technologien zur Verfeinerung von stochastischen Ähnlichkeitssuchekandidaten

Country Status (3)

Country Link
US (1) US11829376B2 (de)
KR (1) KR20210135920A (de)
DE (1) DE102020133266A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11029871B2 (en) * 2019-05-15 2021-06-08 EMC IP Holding Company LLC Deduplication using nearest neighbor cluster
US10934964B1 (en) * 2020-02-03 2021-03-02 Ford Global Technologies, Llc Methods and system for storing and activating a calibration for a vehicle
US20230305709A1 (en) * 2020-09-15 2023-09-28 Intel Corporation Facilitating improved use of stochastic associative memory
US20230153338A1 (en) * 2021-11-15 2023-05-18 Adobe Inc. Sparse embedding index for search

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7154848B2 (en) * 2002-05-29 2006-12-26 General Dynamics Corporation Methods and apparatus for generating a multiplexed communication signal
US20050249292A1 (en) * 2004-05-07 2005-11-10 Ping Zhu System and method for enhancing the performance of variable length coding
DE102005028221B4 (de) * 2005-06-17 2007-10-11 Infineon Technologies Ag Vorrichtung und Verfahren zum Schutz der Integrität von Daten
US8059905B1 (en) * 2005-06-21 2011-11-15 Picture Code Method and system for thresholding
US7840060B2 (en) * 2006-06-12 2010-11-23 D&S Consultants, Inc. System and method for machine learning using a similarity inverse matrix
JP4252624B2 (ja) * 2007-06-01 2009-04-08 パナソニック株式会社 抵抗変化型記憶装置
US8290918B1 (en) * 2009-09-29 2012-10-16 Google Inc. Robust hashing of digital media data
US8548986B2 (en) * 2010-03-19 2013-10-01 Microsoft Corporation Adaptive row-batch processing of database data
DE102010039652A1 (de) * 2010-08-23 2012-02-23 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Mosaikaufnahmeerzeugung
US20150142787A1 (en) * 2013-11-19 2015-05-21 Kurt L. Kimmerling Method and system for search refinement
JP6156126B2 (ja) * 2013-12-19 2017-07-05 富士通株式会社 検索方法、検索プログラムおよび検索装置
US10262715B2 (en) * 2017-03-27 2019-04-16 Micron Technology, Inc. Multiple plate line architecture for multideck memory array
US20200143032A1 (en) * 2017-07-13 2020-05-07 Ramona Optics Inc. System and method to optically authenticate physical objects
US10685702B2 (en) * 2017-08-28 2020-06-16 Micron Technology, Inc. Memory array reset read operation
WO2019050771A1 (en) * 2017-09-05 2019-03-14 Panasonic Intellectual Property Corporation Of America EXECUTION METHOD, EXECUTION DEVICE, LEARNING METHOD, LEARNING DEVICE, AND PROGRAM FOR DEEP NEURAL NETWORK
US20190171665A1 (en) * 2017-12-05 2019-06-06 Salk Institute For Biological Studies Image similarity search via hashes with expanded dimensionality and sparsification
CN117914457A (zh) * 2019-03-27 2024-04-19 联想(新加坡)私人有限公司 用于多发送和接收点传输的下行链路资源分配的方法和装置
US11720789B2 (en) * 2019-06-07 2023-08-08 Apple Inc. Fast nearest neighbor search for output generation of convolutional neural networks
US11436071B2 (en) * 2019-08-28 2022-09-06 Micron Technology, Inc. Error control for content-addressable memory

Also Published As

Publication number Publication date
US11829376B2 (en) 2023-11-28
KR20210135920A (ko) 2021-11-16
US20200265045A1 (en) 2020-08-20

Similar Documents

Publication Publication Date Title
DE102020133266A1 (de) Technologien zur Verfeinerung von stochastischen Ähnlichkeitssuchekandidaten
Neyshabur et al. The power of asymmetry in binary hashing
US20140143251A1 (en) Massive clustering of discrete distributions
DE112020003128T5 (de) Dilatierte faltung mit systolischem array
DE102005033274B4 (de) Mustervergleichsarchitektur
DE102014204827A1 (de) Auflösen ähnlicher Entitäten aus einer Transaktionsdatenbank
CN111897975A (zh) 一种面向知识图谱表示学习训练的局部训练方法
DE102020106199A1 (de) Technologien für effiziente stochastische assoziative suchoperationen
DE10035043A1 (de) Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen
DE102013221125A1 (de) System, Verfahren und Computer-Programm-Produkt zum Durchführen einer Zeichenkette-Suche
CN111859983B (zh) 基于人工智能的自然语言标注方法及相关设备
DE102020106200A1 (de) Technologien für effiziente assoziative stochastische suchvorgänge mit fehlerkorrekturcode
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE102020133268A1 (de) Technologien zum Durchführen eines Kodierens von Datenzeichen für Spaltenlesevorgänge
DE102020133878A1 (de) Technologien für spaltenbasierte datenlayouts für geclusterte datensysteme
DE102022121773A1 (de) In-memory-assoziativverarbeitungssystem
Malekipirbazari et al. Performance comparison of feature selection and extraction methods with random instance selection
DE112020002892T5 (de) Aktives lernen für den datenabgleich
DE102022121767A1 (de) In-memory-assoziativverarbeitung für vektoren
DE112020003105T5 (de) Schicht für schicht-debugging von neuronalen netzwerken
DE112016007411T5 (de) Fuzzy-eingabe für autoencoder
US20150078655A1 (en) Devices, systems, and methods for large-scale linear discriminant analysis of images
Mithun et al. Generating diverse image datasets with limited labeling
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen
DE102020134196A1 (de) Grossmassstäbliche Ähnlichkeitssuche mit chipinternem Zwischenspeicher