-
INFORMATION BEZÜGLICH ZUGEHÖRIGER ANMELDUNGEN
-
Diese Anmeldung beansprucht die Priorität der vorläufigen Anmeldungen Nr. 62/892,039, eingereicht am 27. August 2019, Nr. 62/895,549, eingereicht am 4. September 2019, und der am 26. August 2020 eingereichten US-Patentanmeldung Nr.
17/002,960 , die hierin durch Bezugnahme in ihrer Gesamtheit enthalten sind.
-
HINTERGRUND
-
Technisches Gebiet
-
Die vorliegende Erfindung betrifft künstliche Intelligenz und maschinelles Lernen und insbesondere ein Überwachen eines Zustands bzw. Status eines Computersystems durch Implementieren eines Netzwerks für tiefes, unüberwachtes binäres Codieren.
-
Beschreibung des zugehörigen Standes der Technik
-
Multivariate Zeitreihendaten werden bei verschiedenen realen Anwendungen, wie beispielsweise Smart-City-Systemen, Kraftwerksüberwachungssystemen, tragbaren Geräten etc. immer allgegenwärtiger. In Anbetracht historischer multivariater Zeitreihendaten (z.B. von Sensormesswerten eines Kraftwerkssystems) ohne irgendeine Statusbezeichnung vor einer Zeit T und ein aktuelles multivariates Zeitreihensegment kann es herausfordernd sein, ähnliche Muster in den historischen Daten auf effiziente Weise abzurufen und diese ähnlichen Muster zu verwenden, um den Status eines aktuellen Segments zu interpretieren. Zum Beispiel kann es schwierig sein, kompakte Darstellungen der historischen multivariaten Zeitreihendaten zu erhalten, die verborgene Struktur und zeitliche Information der rohen Zeitreihendaten zu verwenden, um eine Darstellung zu erzeugen, und/oder eine Darstellung mit besserer Verallgemeinerungsfähigkeit zu erzeugen.
-
Unüberwachtes Hashing kann in eine Vielzahl von Typen kategorisiert werden, einschließlich randomisiertem Hashing (z.B. lokalitätssensitives Hashing (LSH)), unüberwachten Methoden, die eine Datenverteilung berücksichtigen (z.B. spektrales Hashing (SH) und iterative Quantisierung (ITQ) und Ansätze eines tiefen unüberwachten Hashings, die tiefes Lernen bzw. Deep Learning verwenden, um eine sinnvolle bzw. aussagekräftige Darstellung der Eingabe zu erhalten (z.B. DeepBit und DeepHash). Diese Methoden sind jedoch wenigstens aus den folgenden Gründen eingeschränkt: (1) sie können die zugrundeliegenden Cluster-/Strukturinformationen der eingegebenen Daten nicht erfassen; (2) sie berücksichtigen die zeitliche Information der eingegebenen Daten nicht; und (3) sie konzentrieren sich nicht auf ein Herstellen einer Darstellung mit besserer Verallgemeinerungsfähigkeit.
-
ZUSAMMENFASSUNG
-
Gemäß einem Aspekt der vorliegenden Erfindung wird ein Verfahren zum Überwachen eines Zustands bzw. Status eines Computersystems durch Implementieren eines Netzwerks für ein tiefes unüberwachtes binäres Codieren bereitgestellt. Das Verfahren enthält ein Empfangen multivariater Zeitreihendaten von einem oder mehreren Sensoren, die mit einem System assoziiert sind, und ein Implementieren eines Codierer-Decodierer-Frameworks mit langem Kurzzeitgedächtnis (LSTM (= Long Short-Term Memory)), um zeitliche Information von unterschiedlichen Zeitschritten innerhalb der multivariaten Zeitreihendaten zu erfassen und eine binäre Codierung durchzuführen. Das LSTM-Codierer-Decodierer-Framework enthält einen zeitlichen bzw. temporalen Codierungsmechanismus, einen Cluster-Verlust und einen gegnerischen Verlust. Ein Implementieren des LSTM-Codierer-Decodierer-Frameworks enthält weiterhin ein Erzeugen von einem oder mehreren Zeitreihensegmenten basierend auf den multivariaten Zeitreihendaten unter Verwendung eines LSTM-Codierers, um die zeitliche Codierung und das Erzeugen eines Binärcodes für jedes von dem einen oder den mehreren Zeitreihensegmente basierend auf einem Merkmalsvektor durchzuführen. Das Verfahren enthält weiterhin ein Berechnen eines minimalen Abstands vom Binärcode zu historischen Daten und ein Erhalten einer Statusbestimmung des Systems basierend auf einer Analyse für ähnliche Muster unter Verwendung des minimalen Abstands.
-
Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein System zum Überwachen eines Zustands bzw. Status eines Computersystems durch Implementieren eines Netzwerks für tiefes unüberwachtes binäres Codieren bereitgestellt. Das System enthält eine Speichervorrichtung, die einen Programmcode speichert, und wenigstens eine Prozessorvorrichtung, die operativ mit der Speichervorrichtung gekoppelt ist. Die wenigstens eine Prozessorvorrichtung ist konfiguriert, um einen auf der Speichervorrichtung gespeicherten Programmcode auszuführen, um multivariate Zeitreihendaten von einem oder mehreren Sensoren zu empfangen, die mit einem System assoziiert sind, und ein Codierer-Decodierer-Framework mit langem Kurzzeitgedächtnis (LSTM (= Long Short-Term Memory)) zu implementieren, um zeitliche Information von unterschiedlichen Zeitschritten innerhalb der multivariaten Zeitreihendaten zu erfassen und eine binäre Codierung durchzuführen. Das LSTM-Codierer-Decodierer-Framework enthält einen zeitlichen bzw. temporalen Codierungsmechanismus, einen Cluster-Verlust und einen gegnerischen Verlust. Die wenigstens eine Prozessorvorrichtung ist weiterhin konfiguriert, um das LSTM-Codierer-Decodierer-Framework zu implementieren, indem ein oder mehrere Zeitreihensegmente basierend auf den multivariaten Zeitreihendaten unter Verwendung eines LSTM-Codierers erzeugt wird oder werden, um die zeitliche Codierung durchzuführen, und indem ein Binärcode für jedes von dem einen oder den mehreren Zeitreihensegmenten basierend auf einem Merkmalsvektor erzeugt wird. Die wenigstens eine Prozessorvorrichtung ist konfiguriert, um einen auf der Speichervorrichtung gespeicherten Programmcode auszuführen, um einen minimalen Abstand vom Binärcode zu historischen Daten zu berechnen und eine Statusbestimmung des Systems basierend auf einer Analyse für ähnliche Muster unter Verwendung des minimalen Abstands zu erhalten.
-
Diese und weitere Merkmale und Vorteile werden aus der folgenden detaillierten Beschreibung illustrativer Ausführungsformen davon offensichtlich werden, die im Zusammenhang mit den beigefügten Zeichnungen zu lesen ist.
-
Figurenliste
-
Die Offenbarung wird Details in der folgenden Beschreibung bevorzugter Ausführungsformen unter Bezugnahme auf die folgenden Figuren bereitstellen, wobei:
- 1 ein Block-/Ablaufdiagramm, das einen Überblick auf hoher Ebene über ein Framework einschließlich eines Systems zum Überwachen eines Status eines Computersystems durch Implementieren eines Netzwerks für tiefes unüberwachtes binäres Codieren darstellt, gemäß einer Ausführungsform der vorliegenden Erfindung ist;
- 2 ein Block-/Ablaufdiagramm, das ein Framework für tiefes unüberwachtes binäres Codieren darstellt, gemäß einer Ausführungsform der vorliegenden Erfindung ist;
- 3 ein Diagramm, das eine Modellierung einer zeitlichen Abhängigkeit durch zeitliches Codieren an verborgenen Merkmalen darstellt, gemäß einer Ausführungsform der vorliegenden Erfindung ist;
- 4 ein Block-/Ablaufdiagramm, das ein System/Verfahren zum Überwachen eines Status eines Computersystems durch Implementieren eines Netzwerks für tiefes unüberwachtes binäres Codieren darstellt, gemäß einer Ausführungsform der vorliegenden Erfindung ist; und
- 5 ein Block-/Ablaufdiagramm, das ein Computersystem darstellt, gemäß einer Ausführungsform der vorliegenden Erfindung ist.
-
DETAILLIERTE BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGSFORMEN
-
Gemäß Ausführungsformen der vorliegenden Erfindung werden Systeme und Verfahren bereitgestellt, um ein Framework für eine tiefes überwachtes binäres Codieren Ende-zu-Ende (z.B. Hashing) für einen Abruf multivariater Zeitreihen zu implementieren. Das hierin beschriebene Framework kann verwendet werden, um kompakte Darstellungen der historischen multivariaten Zeitreihendaten zu erhalten, die verborgene Struktur und zeitliche Information der rohen Zeitreihendaten zu verwenden, um eine Darstellung zu erzeugen, und/oder eine Darstellung mit besserer Verallgemeinerungsfähigkeit zu erzeugen. Spezifischer wird ein Codierer-Decodierer-Framework mit langem Kurzzeitgedächtnis (LSTM (= Long Short-Term Memory)) bereitgestellt, um die wesentlichen zeitlichen Informationen von Schritten unterschiedlichen Typs innerhalb des eingegebenen Segments zu erfassen und den Binärcode zu lernen, und zwar basierend auf Wiederherstellungs- bzw. Rekonstruktionsfehlern. Das LSTM-Codierer-Decodierer-Framework kann: (1) einen Cluster-Verlust auf dem verborgenen Merkmalsraum verwenden, um die nichtlineare verborgene Merkmalsstruktur der rohen Eingangsdaten zu erfassen und die unterschiedliche Eigenschaft erzeugter Binärcodes zu verbessern; (2) einen zeitlichen Codierungsmechanismus verwenden, um die zeitliche Reihenfolge unterschiedlicher Segmente innerhalb eines Mini-Stapels bzw. -Batchs zu codieren, um aufeinanderfolgenden Segmente mit hoher Ähnlichkeit genügend Aufmerksamkeit zu schenken; (3) einen gegnerischen Verlust zu verwenden, um die Verallgemeinerungsfähigkeit der erzeugten Binärcodes zu verbessern (z.B. einen bedingten gegnerischen Regularisierer basierend auf bedingten allgemeinen gegnerischen Netzwerken (cGANs) aufzuerlegen).
-
Die hierin beschriebenen Ausführungsformen können zugrundeliegende Anwendungen wie beispielsweise Systemstatusidentifikation, Anomalieerkennung etc. innerhalb einer Vielzahl von realen Systemen, die multivariate Zeitreihendaten sammeln, erleichtern. Solche reale Systeme enthalten, sind aber nicht darauf beschränkt, Smart-City-Systeme, Kraftwerksüberwachungssysteme, tragbare Geräte etc. Zum Beispiel können innerhalb eines Kraftwerksüberwachungssystems mehrere Sensoren eingesetzt werden, um den Betriebsstatus in Echtzeit oder nahezu in Echtzeit zu überwachen. Als weiteres Beispiel kann mit einem tragbaren Gerät wie beispielsweise einem Fitness-Tracker eine zeitliche Sequenz von Aktionen (z.B. Gehen für 5 Minuten, Laufen für 1 Stunde und Sitzen für 15 Minuten) mit entsprechenden Sensoren aufgezeichnet und erkannt werden.
-
Die hierin beschriebenen Ausführungsformen können vollständig Hardware, vollständig Software oder sowohl Hardware- als auch Softwareelemente sein. Bei einer bevorzugten Ausführungsform ist die vorliegende Erfindung in Software implementiert, die Firmware, residente Software, einen Microcode etc. enthält, ist aber nicht darauf beschränkt.
-
Ausführungsformen können ein Computerprogrammprodukt enthalten, auf das von einem computerverwendbaren oder computerlesbaren Medium aus zugegriffen werden kann, das einen Programmcode zur Verwendung durch einen oder in Verbindung mit einem Computer, oder irgendein oder irgendeinem Anweisungsausführungssystem, bereitstellt. Ein computerverwendbares oder computerlesbares Medium kann irgendeine Vorrichtung enthalten, die das Programm zur Verwendung durch das Befehlsausführungssystem, die Vorrichtung oder das Gerät, oder in Verbindung damit, speichert, kommuniziert, aus- bzw. verbreitet oder transportiert. Das Medium kann ein magnetisches, optisches, elektronisches, elektromagnetisches, infrarotes oder Halbleitersystem (oder eine Vorrichtung oder ein Gerät) oder ein Ausbreitungsmedium sein. Das Medium kann ein computerlesbares Speichermedium enthalten, wie beispielsweise einen Halbleiter- oder Festkörperspeicher, ein Magnetband, eine Wechsel-Computerdiskette, einen Direktzugriffsspeicher (RAM), einen Nurlesespeicher (ROM), eine feste bzw. starre Magnetplatte und eine optische Scheibe etc.
-
Jedes Computerprogramm kann konkret bzw. materiell in einem maschinenlesbaren Speichermedium oder einer -vorrichtung (z.B. Programmspeicher oder Magnetplatte) gespeichert sein, das oder die durch einem allgemeinen oder speziellen programmierbaren Computer lesbar ist, zum Konfigurieren und Steuern eines Betriebs eines Computers, wenn das Speichermedium bzw. die Speichermedien oder die Vorrichtung durch den Computer gelesen wird bzw. werden, um die hierin beschriebenen Prozeduren durchzuführen. Das erfinderische System kann auch als in einem computerlesbaren Speichermedium verkörpert angesehen werden, das mit einem Computerprogramm konfiguriert ist, wobei das Speichermedium so konfiguriert ist, dass es veranlasst, dass ein Computer auf eine spezifische und vordefinierte Weise arbeitet, um die hierin beschriebenen Funktionen durchzuführen.
-
Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen eines Programmcodes geeignet ist, kann wenigstens einen Prozessor enthalten, der direkt oder indirekt über einen Systembus mit Speicherelementen gekoppelt ist. Die Speicherelemente können einen lokalen Speicher enthalten, der während einer tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Cachespeicher, die eine temporäre Speicherung von wenigstens etwas von einem Programmcode zur Verfügung zu stellen, um die Anzahl von Malen zu reduzieren, für welche der Code während einer Ausführung aus einem Massenspeicher abgerufen wird. Eingabe-/Ausgabe- oder I/O-Vorrichtungen (einschließlich, aber nicht darauf beschränkt, von Tastaturen, Anzeigen, Zeigevorrichtungen etc.) können entweder direkt oder über dazwischenliegende I/O-Steuerungen mit dem System gekoppelt sein.
-
Netzwerkadapter können auch mit dem System gekoppelt sein, um zu ermöglichen, dass das Datenverarbeitungssystem über dazwischenliegende private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen oder entfernten bzw. Remote-Druckern oder Speichervorrichtungen gekoppelt werden. Modems, ein Kabelmodem und Ethernet-Karten sind nur einige wenige der derzeit verfügbaren Typen von Netzwerkadaptern.
-
Wie er hierin verwendet wird, kann sich der Begriff „Hardwareprozessor-Untersystem“ oder „Hardwareprozessor“ auf einen Prozessor, einen Speicher (einschließlich RAM, Cache(s) und so weiter), Software (einschließlich Speichermanagementsoftware) oder Kombinationen davon beziehen, die zusammenarbeiten, um eine oder mehrere spezifische Aufgaben durchzuführen. Bei nützlichen Ausführungsformen kann das Hardwareprozessor-Untersystem ein oder mehrere Datenverarbeitungselemente (z.B. Logikschaltungen, Verarbeitungsschaltungen, Anweisungsausführungsvorrichtungen etc.) enthalten. Das eine oder die mehreren Datenverarbeitungselemente kann oder können in einer zentralen Verarbeitungseinheit, einer Grafikverarbeitungseinheit und/oder einer separaten prozessor- oder computerelementbasierten Steuerung (z.B. Logikgatter etc.) enthalten sein. Das Hardwareprozessor-Untersystem kann einen oder mehrere integrierte Speicher bzw. Onboard-Speicher (z.B. Caches, bestimmte bzw. dedizierte Speicherarrays, einen Nurlesespeicher etc.) enthalten. Bei einigen Ausführungsformen kann das Hardwareprozessor-Untersystem einen oder mehrere Speicher enthalten, die onboard oder offboard sein können oder die zur Verwendung durch das Hardwareprozessor-Untersystem bestimmt bzw. dediziert sein können (z.B. ROM, RAM, BIOS (Basic Input/Output System (= Grundlegendes Eingabe-/Ausgabe-System)) etc.).
-
Bei einigen Ausführungsformen kann das Hardwareprozessor-Untersystem ein oder mehrere Softwareelemente umfassen und ausführen. Das eine oder die mehreren Softwareelemente kann oder können ein Betriebssystem und/oder eine oder mehrere Anwendungen und/oder einen spezifischen Code enthalten, um ein spezifiziertes bzw. bestimmtes Ergebnis zu erzielen.
-
Bei anderen Ausführungsformen kann das Hardwareprozessor-Untersystem eine dedizierte, spezialisierte Schaltung enthalten, die eine oder mehrere elektronische Verarbeitungsfunktionen durchführt, um ein bestimmtes Ergebnis zu erzielen. Eine solche Schaltung kann eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs), FPGAs und/oder PLAs enthalten.
-
Diese und andere Variationen eines Hardwareprozessor-Untersystems werden gemäß Ausführungsformen der vorliegenden Erfindung auch in Betracht gezogen.
-
Nimmt man nun detailliert Bezug auf die Figuren, in denen gleiche Bezugszeichen die gleichen oder ähnliche Elemente darstellen, und zunächst auf 1, ist gemäß einer Ausführungsform der vorliegenden Erfindung ein Überblick auf hoher Ebene über ein Framework 100 zum Überwachen eines Status eines Computersystems durch Implementieren eines Netzwerks für tiefes unüberwachtes binäres Codieren dargestellt.
-
Wie es gezeigt ist, enthält das Framework 100 ein System 110. Spezifischer ist das System 110 bei diesem illustrativen Beispiel ein Kraftwerkssystem 110 mit einer Vielzahl von Sensoren, einschließlich der Sensoren 112-1 und 112-2, die konfiguriert sind, um den Status des Kraftwerkssystems 110 zu überwachen und multivariate Zeitreihendaten bei unterschiedlichen Zeitschritten zu erzeugen. Obwohl das System 110 bei dieser illustrativen Ausführungsform ein Kraftwerkssystem 110 ist, kann das System 100 irgendein geeignetes System enthalten, das konfiguriert ist, um multivariate Zeitreihendaten gemäß den hierin beschriebenen Ausführungsformen zu erzeugen (z.B. Systeme von tragbaren Geräten bzw. Vorrichtungen, Smart-City-Systeme).
-
Wie es weiterhin gezeigt ist, enthält das Framework 100 weiterhin wenigstens eine Verarbeitungsvorrichtung 120. Die Verarbeitungsvorrichtung 120 ist konfiguriert, um eine Architekturkomponente eines Netzwerks für tiefes unüberwachtes binäres Codieren (DUBCN (= Deep Unsupervised Binary Coding Network)) 122, eine Komponente für eine Suche nach ähnlichen Mustern 124 und eine Systemstatuskomponente 126 zu implementieren. Obwohl gezeigt ist, dass die Komponenten 122-126 durch eine einzelne Verarbeitungsvorrichtung implementiert sind, kann eine oder können mehrere der Komponenten 122-126 durch eine oder mehrere zusätzliche Verarbeitungsvorrichtungen implementiert werden.
-
Die von der Vielzahl von Sensoren erzeugten multivariaten Zeitreihendaten werden empfangen oder gesammelt und in die DUBCN-Architekturkomponente 122 eingegeben, um einen Abruf multivariater Zeitreihen unter Verwendung einer DUBCN-Architektur durchzuführen. Spezifischer ist, wie es hierin nachstehend in weiterem Detail beschrieben ist, die DUBCN-Architekturkomponente 122 konfiguriert, um ein oder mehrere Zeitreihensegmente basierend auf den multivariaten Zeitreihendaten zu erzeugen und einen Binärcode (z.B. einen Hashcode) für jedes von dem einen oder den mehreren Zeitreihensegmenten zu erzeugen. Das eine oder die mehreren Zeitreihensegmente kann oder können eine feste Fenstergröße haben.
-
Die Komponente für eine Suche nach ähnlichen Mustern 124 ist konfiguriert, um basierend auf dem einen oder den mehreren Binärcodes zu bestimmen, ob in den historischen Daten irgendwelche ähnlichen Muster (Segmente) vorhanden sind. Spezifischer ist die Komponente für eine Suche nach ähnlichen Mustern 124 konfiguriert, um einen minimalen Abstand zu berechnen und ähnliche Muster in den historischen Daten basierend auf dem Abstand abzurufen. Bei einer Ausführungsform ist der minimale Abstand ein minimaler Hamming-Abstand.
-
Die Systemstatuskomponente 126 ist konfiguriert, um basierend auf den Ergebnissen der Komponente für eine Suche nach ähnlichen Mustern 124 einen aktuellen Status des Systems 110 zu bestimmen. Wenn zum Beispiel ein ähnliches Muster in den historischen Daten vorhanden ist, kann das ähnliche Muster verwendet werden, um den aktuellen Systemstatus zu interpretieren. Andernfalls könnte der aktuelle Systemstatus einem abnormalen oder anomalen Fall entsprechen.
-
Wie es nachstehend detaillierter unter Bezugnahme auf 2 beschrieben werden wird, kann die DUBCN-Architekturkomponente 122 ein Codierer-Decodierer-Framework mit langem Kurzzeitgedächtnis (LSTM (= Long Short-Term Memory)) implementieren, um zeitliche Information von unterschiedlichen Zeitschritten innerhalb der multivariaten Zeitreihendaten zu erfassen und eine binäre Codierung durchzuführen. Spezifischer enthält das LSTM-Codierer-Decodierer-Framework einen zeitlichen bzw. temporalen Codierungsmechanismus, um die zeitliche Reihenfolge unterschiedlicher Segmente innerhalb eines Mini-Stapels bzw. Batchs zu codieren, einen Cluster-Verlust auf dem verborgenen Merkmalsraum, um die nichtlineare Struktur verborgener Merkmale zu verbessern, und einen gegnerischen Verlust basierend auf bedingten allgemeinen gegnerischen Netzwerken (cGANs), um die Verallgemeinerungsfähigkeit der erzeugten Binärcodes zu verbessern.
-
Zum Beispiel kann in Anbetracht eines multivariaten Zeitreihensegments
wobei t der Zeitschrittindex und w die Länge einer Fenstergröße ist, die k-te Zeitreihe der Länge w dargestellt werden durch:
und bezeichnet
einen Vektor von n eingegebenen Reihen zum Zeitpunkt t. Zusätzlich bezeichnet || · ||
F die Frobenius-Norm von Matrizen und stellt ||x||
H die Hamming-Norm eines Vektors
dar, die als die Anzahl von Einträgen ungleich Null in
(L
0-Norm) definiert ist. ||x||
1 stellt die L
2-Norm des Vektors
dar, die als die Summe von absoluten Werten der Einträge in
definiert ist.
-
Bei einem multivariaten Abfragezeitreihensegment
(einem Schnitt von n Zeitreihen, der w Zeitschritte dauert) ist es ein Ziel gemäß den hierin beschriebenen Ausführungsformen, die ähnlichsten Zeitreihensegmente in den historischen Daten (oder einer Datenbank) zu finden. Zum Beispiel erwarten wir ein Erhalten von:
wobei
eine Sammlung von Segmenten ist, p den Zeitindex für das p-te Segment (∀1 + w ≤ p ≤ T) bezeichnet, T die Gesamtlänge der Zeitreihe bezeichnet und S(·) eine Ähnlichkeitsmessfunktion darstellt.
-
Das LSTM-Codierer-Decodierer-Framework enthält einen LSTM-Codierer, um das eingegebene Zeitreihensegment durch Codieren der zeitlichen Information innerhalb eines multivariaten Zeitreihensegments darzustellen. Spezifischer kann der LSTM-Codierer angesichts der oben beschriebenen eingegebenen Sequenz
angewendet werden, um eine Abbildung von
zu
(zu einer Zeit t) zu lernen, mit:
wobei
der verborgene Zustand des LSTM-Codierers zum Zeitpunkt t ist, m die Größe des verborgenen Zustands ist und LSTM
enc eine LSTM-Codierereinheit ist. Jede LSTM-Codierereinheit hat eine Speicherzelle mit dem Zustand
zum Zeitpunkt t. Ein Zugriff auf die Speicherzelle kann durch die folgenden drei Sigmoid-Gatter gesteuert werden: Vergessen-Gatter
Eingabe-Gatter
und Ausgabe-Gatter
Das Update einer LSTM-Codierereinheit kann wie folgt zusammengefasst werden:
wobei
eine Verkettung des vorherigen verborgenen Zustands
und der aktuellen Eingabe
ist,
und
Parameter sind, um zu lernen, σ eine logistische Sigmoidfunktion ist und ⊗ der elementweisen Multiplikation oder dem Hadamard-Produkt entspricht. Der Hauptgrund für eine Verwendung der LSTM-Codierereinheit besteht darin, dass der Zellzustand Aktivitäten im Laufe der Zeit summiert, was das Problem von verschwindenden Gradienten überwinden und langfristige Abhängigkeiten von Zeitreihen besser erfassen kann.
-
Weitere Details bezüglich einer Struktur des LSTM-Codierers werden nachstehend unter Bezugnahme auf 2 beschrieben werden.
-
Obwohl der LSTM-Codierer die zeitlichen Information innerhalb jedes Segments modelliert, wird die zeitliche Reihenfolge von unterschiedlichen Segmenten möglicherweise nicht explizit erfasst. Basierend auf der Intuition, dass zwei aufeinanderfolgende (oder sehr nahe) Segmente eher ähnliche Binärcodes haben, kann der oben angegebene temporale Codierungsmechanismus explizit eine zeitliche Reihenfolge von unterschiedlichen Segmenten codieren. Spezifischer kann für jeden Stapel bzw. Batch von 2N Segmenten die Hälfte des Stapels zufällig abgetastet werden und kann die andere Hälfte sequenziell abgetastet werden. Zufällig abgetastete Segmente werden verwendet, um instabile Gradienten zu vermeiden und eine Verallgemeinerungsfähigkeit zu verbessern. Für diese Segmente kann ein zweidimensionaler (2D) Vektor mit Einträgen von Null mit dem ursprünglichen verborgenen Merkmalsvektor
verkettet werden. Für sequenziell abgetastete Segmente kann ein zeitlicher Codierungsvektor
verwendet werden, um die relative zeitliche Position verschiedener Segmente zu codieren, wobei N ≥ i ≥ 0. Daher kann für jeden Stapel von Segmenten der zeitliche Codierungsvektor (C, S) bezeichnet werden als:
-
Demgemäß konzentriert sich der zeitliche bzw. temporale Codierungsvektor auf die Erfassung der zeitlichen bzw. temporalen Reihenfolge unterschiedlicher Segmente, im Gegensatz zu einer Codierung der zeitlichen Information innerhalb eines Segments.
-
Weitere Details bezüglich des temporalen Codierungsmechanismus werden nachstehend unter Bezugnahme auf 2 beschrieben werden. Eine visuelle Darstellung von (C,S) wird nun nachstehend unter Bezugnahme auf 3 beschrieben werden.
-
Nimmt man nun Bezug auf 3 wird ein Diagramm 300 bereitgestellt, das eine temporale Codierung innerhalb eines Stapels für einen zeitlichen Codierungsvektor darstellt. Wie es gezeigt ist, enthält das Diagramm 300 wenigstens einen Punkt 310 und eine Vielzahl von Punkten 320-1 bis 320-9. Der Punkt 310 stellt den zeitlichen Codierungsvektor (0,0) für den zufällig abgetasteten halben Stapel dar und die Vielzahl von Punkten 320-1 bis 320-9 stellt zeitliche Codierungsvektoren (C,S) für den sequenziell abgetasteten halben Stapel dar.
-
Nimmt man wieder Bezug auf
1, kann nach der zeitlichen Codierung eine vollständig verbundene Schicht verwendet werden, um einen Merkmalsvektor
zu erhalten. Dann kann die hyperbolische Tangensfunktion tanh(·) verwendet werden, um einen angenäherten Binärcode
zu erzeugen. Eine weitere vollständig verbundene Schicht kann verwendet werden, um den Merkmalsvektor
zu erhalten, der als Eingabe für den LSTM-Decodierer dienen wird. Eine detailliertere Prozedur wird nachstehend unter Bezugnahme auf
2 in weiterem Detail beschrieben werden.
-
In Bezug auf den Cluster-Verlust ist es mit der Intuition, dass multivariate Zeitsegmente unterschiedliche Eigenschaften zeigen können (z.B. Aufwärtstrend, Abwärtstrend etc.), vernünftig, die nichtlineare verborgene Merkmalsstruktur der eingegebenen Zeitreihensegmente zu erforschen und diejenigen Segmente, die in dasselbe Cluster fallen, zu ermutigen, ähnlichere Merkmale zu haben als diejenigen Segmente, die in unterschiedliche Cluster fallen. Auf diese Weise kann der erzeugte Binärcode auch die unterschiedlichen Informationen zwischen Clustern erhalten. Zu diesem Zweck kann unter der Annahme, dass die anfänglichen Clusterzentroide
im verborgenen Raum verfügbar sind, eine weiche Zuordnung zwischen den verborgenen Merkmalspunkten
und den Clusterzentroiden illustrativ berechnet werden kann als:
wobei
das verborgene Merkmal ist, das nach einer vollständig verbundenen Schicht basierend auf einer zeitlichen Codierung erhalten ist, α die Freiheitsgrade für eine t-Verteilung sind und q
ij die Wahrscheinlichkeit darstellen, ein Segment i einem Cluster j zuzuordnen. Bei einer Ausführungsform gilt α = 1. Bei praktischen Anwendungen können die anfänglichen Clusterzentroide
basierend auf Schwerpunkten im Rohraum mit einem k-Means-Algorithmus erhalten werden.
-
Ein Cluster-Ziel, ℓ
cluster, kann basierend auf einem KL-Divergenz-Verlust zwischen den weichen Zuordnungen q
i und einer Hilfs-Zielverteilung wie folgt angenommen werden:
wobei z
j = Σ
i q
ij weiche Clusterzahlen bezeichnet. Da erwartet wird, dass die Zielverteilung eine Clusterreinheit verbessert, können Segmente mehr hervorgehoben werden, die mit hoher Zuverlässigkeit zugewiesen sind, und können große Cluster daran gehindert werden, den verborgenen Merkmalsraum zu verzerren.
-
Weitere Details bezüglich des Cluster-Verlusts werden nachstehend unter Bezugnahme auf 2 beschrieben werden.
-
In Bezug auf den gegnerischen Verlust ist bei einer Erforschung bzw. Untersuchung eines Clusterns im verborgenen Merkmalsraum von DUBCNs ein potenzielles Problem eine Überanpassung aufgrund dessen, dass das Trainieren über die Batch-Ebene leitend ist und möglicherweise abgetastete Segmente in jedem Batch bzw. Stapel verzerrte bzw. vorspannte. Um dieses Problem zu überwinden, kann ein gegnerischer Verlust, ℓ
adv, eingesetzt werden, um die Verallgemeinerungsfähigkeit von DUBCNs zu verbessern, wie z.B.:
wobei E eine Erwartung bezeichnet,
eine Abtastung
gezogen aus einer Datenverteilung p
data() bezeichnet,
eine Abtastung
aus der Datenverteilung p
data() bezeichnet, G(·) einen Generator bezeichnet, der konfiguriert ist, um einen Merkmalsvektor zu erzeugen, der den Merkmalsvektoren aus den rohen eingegebenen Segmenten ähnelt, und D(·) einen Diskriminator bezeichnet, der konfiguriert ist, um zwischen den erzeugten Abtastungen G(·) und dem realen Merkmalsvektor
zu unterscheiden. Der Vektor
ist ein Vektor eines Zufallsrauschens der Dimension m, der aus einer Normalverteilung gezogen werden kann. Anstatt eines Verwendens eines Generators, der rein auf
basiert, wird hier die Summe
verwendet und wird die Clustermitgliedschaft
verkettet, um dabei zu helfen, die verborgenen Merkmale innerhalb eines bestimmten Clusters zu verallgemeinern. Spezifischer kann G(·) zwei vollständig verbundene Schichten (jeweils mit einer Ausgabedimension von m) enthalten und kann auch D(·) zwei vollständig verbundene Schichten (jeweils mit einer Ausgangsdimension von m bzw. 1) enthalten.
-
Weitere Details bezüglich des gegnerischen Verlusts werden nachstehend unter Bezugnahme auf 2 beschrieben werden.
-
Das LSTM-Codierer-Decodierer-Framework enthält einen LSTM-Decodierer. Der LSTM-Decodierer kann definiert werden als:
wobei
wie folgt aktualisiert bzw. upgedated werden kann:
wobei
eine Verkettung des vorherigen verborgenen Zustands
ist und die Decodierereingabe
und
Parameter sind, um zu lernen, σ eine logistische Sigmoidfunktion ist und ⊗ einer elementweisen Multiplikation oder dem Hadamard-Produkt entspricht. Der Merkmalsvektor
kann als Kontext-Merkmalsvektor für den LSTM-Decodierer zum Zeitpunkt 0 dienen
-
Die wiederhergestellt bzw. rekonstruierte Eingabe bei jedem Zeitschritt kann illustrativ erzeugt werden durch:
-
wobei
und
. Weitere Details bezüglich des LSTM-Decodierers werden nachstehend unter Bezugnahme auf
2 beschrieben werden.
-
Ein Verlust eines mittleren quadratischen Fehlers (MSE (= Mean Squared Error)) ℓ
MSE kann als das Ziel für den LSTM-Codierer-Decodierer verwendet werden, um die zeitlichen Informationen des eingegebenen Segments zu codieren. Zum Beispiel:
wobei i der Index für ein Segment und N die Anzahl von Segmenten in einem Batch bzw. Stapel ist.
-
Weitere Details zum MSE-Verlust werden nachstehend unter Bezugnahme auf
2 beschrieben werden. Das vollständige Ziel der DUBCN-Architektur, ℓ
DUBCN, kann als lineare Kombination von ℓ
MSE, ℓ
cluster und ℓ
adv erhalten werden. Zum Beispiel kann ℓ
DUBCN wie folgt berechnet werden:
wobei λ
1 ≥ 0 und λ
2 ≥ 0 Hyperparameter sind, um die Wichtigkeit von Cluster-Verlust und/oder gegnerischem Verlust zu steuern. Um ℓ
DUBCN zu optimieren, kann das folgende illustrative Zwei-Spieler-Minimax-Spiel gelöst werden:
um den Generator G(·) und den Diskriminator D(·) iterativ zu optimieren. Spezifisch müssen wir uns bei einer Optimierung von D(·) nur auf die zwei vollständig verbundenen Schichten von D(·) zu konzentrieren, während beim Optimieren von G(-) die Netzwerkparameter über ℓ
MSE und ℓ
adv aktualisiert werden.
-
Nimmt man nun Bezug auf 2, ist eine beispielhafte Netzwerkarchitektur für tiefes unüberwachtes binäres Codieren (DUCBN (= Deep Unsupervised Binary Coding)) 200 gemäß einer Ausführungsform der vorliegenden Erfindung illustrativ gezeigt. Die Architektur 200 kann durch die oben unter Bezugnahme auf 1 beschriebene DUBCN-Architekturkomponente 122 zum Überwachen eines Computersystemstatus implementiert werden.
-
Wie es gezeigt ist, enthält die Architektur 200 Eingangsdaten 210. Die Eingangsdaten 210 entsprechen einem Abschnitt oder Schnitt multivariater Zeitreihendaten 205. Bei diesem illustrativen Beispiel entsprechen die Eingangsdaten 210 zum Beispiel einem Abschnitt oder Schnitt von Daten (x1, ..., xt).
-
Die Eingangsdaten werden in eine Gruppe von Eingangssegmenten 220 umgewandelt. Zum Beispiel kann die Gruppe von Eingangssegmenten 220 ein Eingangssegment 222-1 entsprechend x1, ein Eingangssegment 222-2 entsprechend x2, ... und ein Eingangssegment 222-t entsprechend xt enthalten.
-
Wie es weiterhin gezeigt ist, enthält die Architektur 200 einen LSTM-Codierer 230 mit langem Kurzzeitgedächtnis (LSTM (= Long Short-Term Memory)). Jedes Eingangssegment 222-1 bis 222-t der Gruppe von Eingangssegmenten 220 wird in ein jeweiliges von mehreren LSTMs 232-1 bis 232-t eingespeist. Darüber hinaus wird die Eingabe von jedem einzelnen einer Vielzahl von LSTMS in das nachfolgende LSTM eingespeist. Zum Beispiel wird die Eingabe vom LSTM 232-1 in das LSTM 232-2 eingespeist und so weiter. Die Ausgabe der LSTM-Codiererschicht 230 ist ein verborgener Zustand, ht, 234. Weitere Details bezüglich des LSTM-Codierers 220 sind oben unter Bezugnahme auf 1 beschrieben.
-
Eine temporale Codierung wird basierend auf dem verborgenen Zustand 234 durchgeführt, um einen Vektor einer temporalen Codierung bzw. einen temporalen Codierungsvektor 236 auszubilden, der verwendet wird, um die relative temporale bzw. zeitliche Position der unterschiedlichen Segmente zu codieren.
-
Spezifischer ist der temporale Codierungsvektor 236 eine Verkettung eines 2-dimensionalen Vektors von Null-Einträgen (bezeichnet als „C“ und „S“) mit dem verborgenen Zustand 234. Weitere Details bezüglich einer temporalen Codierung sind oben unter Bezugnahme auf die 1 und 3 beschrieben.
-
Nach der temporalen bzw. zeitlichen Codierung wird ein Merkmalsvektor, g, 238 erhalten. Spezifischer kann eine vollständig verbundene Schicht verwendet werden, um den Merkmalsvektor 238 basierend auf dem verborgenen Zustand 234 zu erhalten. Dann wird ein angenäherter Binärcode (ABC) 240 basierend auf dem Merkmalsvektor 238 erhalten. Zum Beispiel kann der ABC 240 erhalten werden durch Anwenden der hyperbolischen Tangensfunktion auf den Merkmalsvektor 238 (tanh(g)). Dann wird ein Merkmalsvektor, h't, 242 erhalten. Spezifischer kann eine weitere vollständig verbundene Schicht verwendet werden, um den Merkmalsvektor 242 basierend auf dem ABC 240 zu erhalten. Weitere Details bezüglich eines Erhaltens von Komponenten 238 bis 242 sind oben unter Bezugnahme auf 1 beschrieben.
-
Wie es weiterhin gezeigt ist, enthält die Architektur 200 weiterhin einen LSTM-Decodierer 250 mit einer Vielzahl von LSTMs 252-1 bis 252-t. Der Merkmalsvektor 242 dient als Eingabe in das LSTM 252-1. Darüber hinaus wird die Eingabe von jedem der Vielzahl von LSTMS in das nachfolgende LSTM eingespeist. Zum Beispiel wird die Eingabe vom LSTM 252-1 in das LSTM 252-2 eingespeist und so weiter. Weitere Details zum LSTM-Decodierer 230 sind oben unter Bezugnahme auf 1 beschrieben.
-
Wie es weiterhin gezeigt ist, enthält die Ausgabe des LSTM-Decodierers 230 eine Gruppe von Ausgangssegmenten 260 entsprechend der rekonstruierten bzw. wiederhergestellten Eingabe. Spezifischer kann die Gruppe von Ausgangssegmenten 260 ein durch das LSTM 252-1 ausgegebenes Eingangssegment 262-1, ein durch das LSTM 252-2 ausgegebenes Ausgangssegment 262-2, ... und ein durch das LSTM 252-t ausgegebenes Ausgangssegment 262-t enthalten. Dann wird ein Verlust eines mittleren quadratischen Fehlers (MSE (= mean square error)) 270 zur Verwendung als das Ziel/der Verlust für den LSTM-Codierer-Decodierer basierend auf der Gruppe von Ausgangssegmenten 260 erhalten. Weitere Details bezüglich der Gruppe von Ausgangssegmenten 260 entsprechend der rekonstruierten bzw. wiederhergestellten Eingabe und dem MSE-Verlust 270 sind oben unter Bezugnahme auf 1 beschrieben.
-
Wie es weiterhin gezeigt ist, enthält die Architektur 280 eine Komponente für Cluster-Verlust 280. Spezifischer wird der Merkmalsvektor 238 in eine Komponente für weiche Zuordnung 282 eingespeist, die konfiguriert ist, um weiche Zuordnungen zwischen verborgenen Merkmalspunkten und anfänglichen Clusterzentroiden bzw. -schwerpunkten zu berechnen. Dann wird ein Cluster-Verlust (CL) 284 basierend auf den weichen Zuordnungen und einer Hilfs-Zielverteilung berechnet. Weitere Details bezüglich der Komponente für Cluster-Verlust 280 sind oben unter Bezugnahme auf 1 beschrieben.
-
Wie es weiterhin gezeigt ist, enthält die Architektur 280 eine Komponente für gegnerischen Verlust 290, einschließlich eines Verkettungselements 292, eines Generators 294 und eines Diskriminators 296.
-
Die Komponente für weiche Zuordnung 282 ist konfiguriert, um eine Cluster-Mitgliedschaft 285 auszugeben, und das Verkettungselement 292 ist konfiguriert, um die Cluster-Mitgliedschaft 285 mit einer Summe aus dem Merkmalsvektor 238 und einem Zufallsrauschvektor (RN (= Random Noise Vector)) 291 zu verketten. RN 291 kann aus einer Normalverteilung gezogen werden. Eine solche Verkettung hilft, um die verborgenen Merkmale innerhalb eines spezifischen Clusters zu verallgemeinern.
-
Die Ausgabe des Verkettungselements 292 wird in den Generator 294 eingespeist, um einen Abtast-Merkmalsvektor, g', 295 zu erzeugen. Zum Beispiel kann der Generator 294 zwei vollständig verbundene Schichten mit der Ausgabedimension m enthalten. Der Diskriminator 296 zielt darauf ab, zwischen dem Abtast-Merkmalsvektor 295 und dem Merkmalsvektor 238 zu unterscheiden. Zum Beispiel kann der Diskriminator 296 zwei vollständig verbundene Schichten mit der Ausgabedimension 1 enthalten. Ein gegnerischer Verlust (AL (= adversarial loss)) 298 wird basierend auf Ausgaben des Generators 294 und des Diskriminators 296 berechnet. Weitere Details zur Komponente für gegnerischen Verlust 290 sind oben unter Bezugnahme auf 1 beschrieben.
-
Nimmt man nun Bezug auf 4, wird ein Block-/Ablaufdiagramm bereitgestellt, das ein System/Verfahren 400 zum Überwachen eines Computersystemstatus durch Implementieren eines Netzwerks für eine tiefe unüberwachte binäre Codierung darstellt.
-
Bei einem Block 410 werden multivariate Zeitreihendaten von einem oder mehreren Sensoren empfangen, die mit einem System assoziiert sind. Der eine oder die mehreren Sensoren kann oder können mit jedem geeigneten System assoziiert sein. Zum Beispiel kann der eine oder können die mehreren Sensoren mit einem Kraftwerkssystem, einem tragbaren Gerätesystem, einem Smart-City-System etc. assoziiert sein.
-
Bei einem Block 420 ist ein Codierer-Decodierer-Framework mit langem Kurzzeitgedächtnis (LSTM (= Long Short-Term Memory)) implementiert, um temporale bzw. zeitliche Information unterschiedlicher Zeitschritte innerhalb der multivariaten Zeitreihendaten zu erfassen und eine binäre Codierung durchzuführen, wobei das LSTM-Codierer-Decodierer-Framework einen zeitlichen bzw. temporalen Codierungsmechanismus, einen Cluster-Verlust und einen gegnerischen Verlust enthält. Der temporale Codierungsmechanismus codiert die zeitliche Reihenfolge von unterschiedlichen Segmenten innerhalb eines Mini-Batchs bzw. -Stapels, der Cluster-Verlust verbessert die nichtlineare Struktur verborgener Merkmale und der gegnerische Verlust verbessert eine Verallgemeinerungsfähigkeit eines während der binären Codierung erzeugten Binärcodes. Der gegnerische Verlust kann auf bedingten allgemeinen gegnerischen Netzwerken (cGANs (= conditional General Adversarial Networks)) basieren.
-
Spezifischer kann bei einem Block 422 ein Implementieren des LSTM-Codierer-Decodierer-Frameworks ein Erzeugen von einem oder mehreren Zeitreihensegmenten basierend auf den multivariaten Zeitreihendaten unter Verwendung eines LSTM-Codierers enthalten, um eine temporale Codierung durchzuführen. Das eine oder die mehreren Zeitreihensegmente kann oder können von einer festen Fenstergröße sein.
-
Bei einem Block 424 kann ein Implementieren des LSTM-Codierer-Decodierer-Frameworks ein Erzeugen eines Binärcodes für jedes von dem einen oder den mehreren Zeitreihensegmenten basierend auf einem Merkmalsvektor enthalten. Spezifischer kann der Merkmalsvektor durch Verwenden einer vollständig verbundenen Schicht erhalten werden und kann der Binärcode durch Anwenden der hyperbolischen Tangensfunktion auf den Merkmalsvektor erzeugt werden. Bei einer Ausführungsform enthält der Binärcode einen Hashcode.
-
Bei einem Block 430 wird ein minimaler Abstand vom Binärcode zu historischen Daten berechnet. Bei einer Ausführungsform ist der minimale Abstand ein minimaler Hamming-Abstand.
-
Bei einem Block 440 wird eine Zustands- bzw. Statusbestimmung des Systems basierend auf einer Analyse für ähnliche Muster unter Verwendung des minimalen Abstands erhalten.
-
Zum Beispiel kann bei einem Block 442 ein Erhalten der Statusbestimmung des Systems ein Bestimmen basierend auf dem minimalen Abstand enthalten, ob irgendwelche ähnlichen Muster in den historischen Data existieren bzw. vorhanden sind.
-
Wenn beim Block 442 bestimmt wird, dass ein oder mehrere ähnliche Muster in den historischen Daten vorhanden ist oder sind, kann das eine oder können die mehreren ähnlichen Muster bei einem Block 444 verwendet werden, um einen aktuellen Status des Systems zu interpretieren. Andernfalls wird bei einem Block 446 ein aktueller Status des Systems als anormal identifiziert.
-
Weitere Details bezüglich des Blocks 410-446 sind oben unter Bezugnahme auf die 1-3 beschrieben.
-
Nimmt man nun Bezug auf 5, ist ein beispielhaftes Computersystem 500, das einen Server oder eine Netzwerkvorrichtung darstellen kann, gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das Computersystem 500 enthält wenigstens einen Prozessor (CPU) 505, der über einen Systembus 502 operativ mit anderen Komponenten gekoppelt ist. Ein Cache 506, ein Nurlesespeicher (ROM) 508, ein Direktzugriffsspeicher (RAM) 510, ein Eingabe/Ausgabe-(I/O-) Adapter 520, ein Klangadapter 530, ein Netzwerkadapter 590, ein Benutzerschnittstellenadapter 550 und ein Anzeigeadapter 560 sind operativ mit dem Systembus 502 gekoppelt.
-
Eine erste Speichervorrichtung 522 und eine zweite Speichervorrichtung 529 sind durch den I/O-Adapter 520 operativ mit dem Systembus 502 gekoppelt. Die Speichervorrichtungen 522 und 529 können irgendetwas von einer Plattenspeichervorrichtung (z.B. einer magnetischen oder optischen Plattenspeichervorrichtung), einer magnetischen Festkörpervorrichtung und so weiter sein. Die Speichervorrichtungen 522 und 529 können derselbe Typ von Speichervorrichtung oder unterschiedliche Typen von Speichervorrichtungen sein.
-
Ein Lautsprecher 532 kann durch den Klangadapter 530 operativ mit dem Systembus 502 gekoppelt sein. Ein Transceiver 595 ist durch den Netzwerkadapter 590 operativ mit dem Systembus 502 gekoppelt. Eine Anzeigevorrichtung 562 ist durch einen Anzeigeadapter 560 operativ mit dem Systembus 502 gekoppelt.
-
Eine erste Benutzereingabevorrichtung 552, eine zweite Benutzereingabevorrichtung 559 und eine dritte Benutzereingabevorrichtung 556 sind durch einen Benutzerschnittstellenadapter 550 operativ mit dem Systembus 502 gekoppelt. Die Benutzereingabevorrichtungen 552, 559 und 556 können irgendetwas von einem Sensor, einer Tastatur, einer Maus, einer kleinen Tastatur, einem Joystick, einer Bilderfassungsvorrichtung, einer Bewegungserfassungsvorrichtung, einer Leistungsmessvorrichtung, einem Mikrofon, einer Vorrichtung, die die Funktionalität von wenigstens zwei der vorherigen Vorrichtungen enthält, und so weiter sein. Natürlich können auch andere Typen von Eingabevorrichtungen verwendet werden, während der Sinngehalt der vorliegenden Erfindung beibehalten wird. Die Benutzereingabevorrichtungen 552, 559 und 556 können derselbe Typ von Benutzereingabevorrichtungen oder unterschiedliche Typen von Benutzereingabevorrichtungen sein. Die Benutzereingabevorrichtungen 552, 559 und 556 werden dazu verwendet, Informationen zu dem System 500 einzugeben und aus diesem auszugeben.
-
Die Komponente eines Netzwerks für tiefes unüberwachtes binäres Codieren (DUBCN (= Deep Unsupervised Binary Coding Network) 570 kann operativ mit dem Systembus 502 gekoppelt sein. Die DUBCN-Komponente 570 ist konfiguriert, um eine oder mehrere der oben beschriebenen Operationen durchzuführen. Die DUBCN-Komponente 570 kann als eigenständige spezielle Hardwarevorrichtung oder als auf einer Speichervorrichtung gespeicherte Software implementiert werden. Bei der Ausführungsform, bei welcher die DUBCN-Komponente 570 softwareimplementiert ist, obwohl sie als separate Komponente des Computersystems 500 dargestellt ist, kann die DUBCN-Komponente 570 auf z.B. der ersten Speichervorrichtung 522 und/oder der zweiten Speichervorrichtung 529 gespeichert sein. Alternativ kann die DUBCN-Komponente 570 auf einer separaten Speichervorrichtung gespeichert werden (nicht gezeigt).
-
Natürlich kann das Computersystem 500 auch andere Elemente (die nicht gezeigt sind) enthalten, wie es von einem Fachmann auf dem Gebiet ohne weiteres in Erwägung gezogen wird, sowie bestimmte Elemente weglassen. Zum Beispiel können verschiedene andere Eingabevorrichtungen und/oder Ausgabevorrichtungen im Computersystem 500 enthalten sein, abhängig von der besonderen Implementierung desselben, wie es von einem Fachmann auf dem Gebiet ohne weiteres verstanden wird. Zum Beispiel können verschiedene Typen von drahtlosen und/oder verdrahteten Eingabe- und/oder Ausgabevorrichtungen verwendet werden. Darüber hinaus können auch zusätzliche Prozessoren, Steuerungen, Speicher und so weiter bei verschiedenen Konfigurationen verwendet werden, wie es von einem Fachmann auf dem Gebiet ohne weiteres eingesehen wird. Diese und andere Variationen des Computersystems 500 werden von einem Fachmann auf dem Gebiet angesichts der hierin zur Verfügung gestellten Lehren der vorliegenden Erfindung, ohne weiteres in Erwägung gezogen.
-
Eine Bezugnahme in der Spezifikation auf „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ der vorliegenden Erfindung sowie andere Variationen davon bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur, eine bestimmte Charakteristik und so weiter, das oder die in Verbindung mit der Ausführungsform beschrieben wird, bei wenigstens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit beziehen sich die Erscheinungen der Formulierung „bei einer einzelnen Ausführungsform“ oder „bei einer Ausführungsform“ sowie irgendwelche anderen Variationen, die an verschiedenen Stellen in der gesamten Spezifikation erscheinen, nicht notwendigerweise alle auf dieselbe Ausführungsform. Es ist jedoch einzusehen, dass Merkmale von einer oder von mehreren Ausführungsformen bei den hierin zur Verfügung gestellten gegebenen Lehren der vorliegenden Erfindung kombiniert werden können.
-
Es ist einzusehen, dass die Verwendung von irgendetwas von dem folgendem „/“, „und/oder“ und „wenigstens eines von“, wie zum Beispiel in den Fällen von „A/B“, „A und/oder B“ und „wenigstens eines von A und B“, nur die Auswahl der ersten aufgelisteten Option (A) oder die Auswahl der zweiten aufgelisteten Option (B) oder die Auswahl von beiden Optionen (A und B) umfassen soll. Als ein weiteres Beispiel soll eine solche Formulierung in den Fällen „A, B und/oder C“ und „wenigstens eines von A, B und C“ nur die Auswahl der ersten aufgelisteten Option (A) oder nur die Auswahl der zweiten aufgelisteten Option (B) oder nur die Auswahl der dritten aufgelisteten Option (C) oder nur die Auswahl der ersten und zweiten aufgelisteten Optionen (A und B) oder nur die Auswahl der ersten und dritten aufgelisteten Optionen (A und C) oder nur die Auswahl der zweiten und dritten aufgelisteten Optionen (B und C) oder die Auswahl aller drei Optionen (A und B und C) umfassen. Dies kann für so viele Elemente ausgeweitet werden, wie sie aufgelistet sind.
-
Das Vorstehende ist in jeder Hinsicht als illustrativ und beispielhaft, aber nicht als einschränkend, zu verstehen, und der Schutzumfang der hierin offenbarten Erfindung ist nicht aus der detaillierten Beschreibung zu bestimmen, sondern aus den Ansprüchen, wie sie gemäß der vollständigen Breite interpretiert werden, die durch die Patentgesetze zulässig ist. Es ist zu verstehen, dass die hierin gezeigten und beschriebenen Ausführungsformen nur illustrativ für die vorliegende Erfindung sind und dass Fachleute auf dem Gebiet verschiedene Modifikationen implementieren können, ohne vom Schutzumfang und Sinngehalt der Erfindung abzuweichen. Fachleute auf dem Gebiet könnten verschiedene andere Merkmalskombinationen implementieren, ohne vom Schutzumfang und Sinngehalt der Erfindung abzuweichen. Nachdem somit Aspekte der Erfindung mit den von den Patentgesetzen geforderten Details und Besonderheiten beschrieben sind, wird das, was beansprucht und durch das Patent geschützt erwünscht wird, in den beigefügten Ansprüchen dargelegt.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-