-
Hintergrund
-
Beim maschinellen Lernen (ML) handelt es sich im Allgemeinen um einen computerimplementierten Prozess, der anhand von Beispieldaten (z. B. Trainingsdaten) ein Modell erstellt, um Vorhersagen zu treffen oder Entscheidungen zu treffen, ohne explizit dafür programmiert zu werden. ML-Prozesse werden in einer Vielzahl von Anwendungen eingesetzt, vor allem dort, wo es schwierig oder undurchführbar ist, herkömmliche Algorithmen zur Ausführung verschiedener Rechenaufgaben zu entwickeln.
-
Eine besondere Art des maschinellen Lernens, das so genannte überwachte maschinelle Lernen, bietet eine hochmoderne Klassifizierung der empfangenen Daten für eine Vielzahl von Klassifizierungsaufgaben. Der Prozess zur Einrichtung des überwachten maschinellen Lernens umfasst im Allgemeinen (a) die Zentralisierung eines großen Datenspeichers, (b) die Beschaffung einer Grundwahrheit für diese Daten und (c) die Verwendung der Grundwahrheit zum Trainieren des ML-Modells für die Klassifizierungsaufgabe. Dieser Rahmen birgt jedoch erhebliche praktische Herausforderungen, einschließlich des Datenschutzes und der Sicherheit, die mit der Erstellung eines großen zentralen Datenspeichers für das Training des ML-Modells einhergehen.
-
Figurenliste
-
Die vorliegende Offenbarung wird in Übereinstimmung mit einer oder mehreren verschiedenen Ausführungsformen unter Bezugnahme auf die folgenden Figuren im Detail beschrieben. Die Figuren dienen lediglich der Veranschaulichung und stellen lediglich typische oder beispielhafte Ausführungsformen dar.
- zeigt ein Beispielsystem zur datenschutzfreundlichen und dezentralisierten Erkennung globaler Ausreißer unter Verwendung der Blockchain gemäß einer Beispielimplementierung der Offenlegung.
- 2 zeigt eine Vielzahl von Knoten, die ML-Modelle gemäß Beispielen der Offenlegung erzeugen.
- 3 zeigt einen Lernprozess zur Bestimmung globaler Ausreißer gemäß einer Beispielimplementierung der Offenlegung.
- 4 zeigt ein ML-Verfahren zur Erkennung globaler Ausreißer gemäß einer Beispielimplementierung der Offenlegung.
- ist ein illustrativer Trainings- und Vergleichsprozess, der zwischen zwei Knoten durchgeführt wird, in Übereinstimmung mit Beispielen der Offenlegung.
- 6 ist ein Beispiel für eine Computerkomponente, die zur Implementierung verschiedener Merkmale der in der vorliegenden Offenbarung beschriebenen Ausführungsformen verwendet werden kann.
- 7 zeigt ein Blockdiagramm eines beispielhaften Computersystems, in dem verschiedene der hier beschriebenen Ausführungsformen implementiert werden können.
-
Die Abbildungen sind nicht erschöpfend und beschränken die vorliegende Offenbarung nicht auf die genaue Form, die offengelegt wird.
-
Detaillierte Beschreibung
-
Netzwerkgeräte (z. B. IOT-Geräte, Switches, Hubs, virtuelle Maschinen, Rechenknoten und andere Geräte, die austauschbar verwendet werden) erzeugen Zeitseriensensordaten und/oder Telemetriedaten. Die Daten können z. B. Datenflussinformationen, Paket-Header und andere Netzwerkverhaltensweisen umfassen. Auf diesen Netzwerkgeräten können auch verschiedene Überwachungsanwendungen implementiert werden, um noch mehr Daten zu generieren, einschließlich gezielter Dienste von Drittanbietern. Die Daten können beispielsweise ein Histogramm enthalten, das die Menge der eingehenden elektronischen Nachrichten (z. B. Lese- und Schreibanforderungen an einen Datenspeicher) als relative Bildgröße im Vergleich zu anderen Bildgrößen, die andere Datentypen zeigen, visuell darstellt. In anderen Beispielen können die Daten Werte zum Systemzustand enthalten (z. B. Bandbreite, Übertragungskapazität, Verarbeitungsgeschwindigkeit oder innerhalb eines bestimmten Zeitrahmens übertragene Pakete). Diese Daten werden jedoch häufig nicht an andere Netzwerkgeräte weitergegeben oder zur Behebung von Problemen bei der Netzwerkkommunikation verwendet.
-
Bei dem Versuch, die Daten zwischen Netzgeräten auszutauschen, treten verschiedene Probleme auf. So können beispielsweise verschiedene Geräte mit unterschiedlichen Stellen korrespondieren, und diese Stellen können die gemeinsame Nutzung von Daten außerhalb ihrer Netzwerkumgebung aus Datenschutzgründen einschränken. Insbesondere im staatlichen Sektor kann sogar die Kenntnis der Aktivität, mit der die Daten korrespondieren, den Datenschutz und die Sicherheit der Netzumgebung beeinträchtigen und einen unzulässigen Zugriff auf die Netzumgebung durch Hintertüren ermöglichen.
-
Neben den Bedenken hinsichtlich des Schutzes der Privatsphäre gibt es noch weitere technische Probleme, wenn Daten zwischen Netzumgebungen ausgetauscht werden sollen. Dazu gehören das Zögern bei der Übernahme der Daten eines anderen Unternehmens, die Kosten/Zeit für die Übernahme der Daten oder die Art und Weise, wie die Daten aus einer ersten Umgebung den vorhandenen Daten in einer zweiten Umgebung zugeordnet werden. Hinzu kommen technische Beschränkungen wie physische Beschränkungen bei der Datenspeicherung extrem großer Datenmengen, Datenpipelines, Datenbereinigung und -rauschen sowie die Häufigkeit der Daten.
-
Schwarmlernen kann in diesem Zusammenhang hilfreich sein. In einigen Beispielen kann das Schwarmlernen Netzwerkumgebungen ermöglichen, vertrauliche Daten lokal und nicht gemeinsam zu nutzen, während verarbeitete Daten oder andere Informationen an Netzwerkgeräte in anderen Computerumgebungen weitergegeben werden. Die Netzwerkgeräte können die gemeinsam genutzten Daten für dezentralisiertes Lernen nutzen, wobei die Vertraulichkeit ihrer eigenen Daten gewahrt bleibt.
-
Das Schwarmlernen kann es den verteilten Netzwerkgeräten ermöglichen, ein verteiltes Training durchzuführen, indem sie gelernte Parameter austauschen, die aus der unüberwachten Modellierung des maschinellen Lernens (ML) stammen. Ein lokales unüberwachtes ML-Modell kann seine eigenen Gewichte und Verzerrungen speichern, die aus der Ausführung eines Trainingsprozesses für ein oder mehrere ML-Modelle ermittelt wurden. Sobald das ML-Modell trainiert ist, können die lokalen Telemetriedaten als Eingabe für das trainierte ML-Modell im Gerät bereitgestellt werden, um ein oder mehrere Datencluster als Ausgabe zu bestimmen, die für das Gerät spezifisch sind. Jedes Gerät kann das unüberwachte ML-Modell zur Bestimmung von Clustern von Eingabedaten und/oder zur Bestimmung eines Schwerpunkts jedes bestimmten Clusters implementieren. Der Schwerpunkt eines Clusters kann einem durchschnittlichen X-Wert jedes Mitglieds eines Clusters von Werten (z. B. einem X-Achsenwert eines aufgezeichneten Diagramms von Werten) und einem durchschnittlichen Y-Wert jedes Mitglieds des Clusters entsprechen.
-
Ein Beispiel für eine nicht überwachte ML-Modelltechnik ist K-nearest neighbors, um Eingaben (z. B. lokale Telemetrie-/Sensordaten) auf der Grundlage beobachteter Ähnlichkeiten zwischen den multivariaten Verteilungsdichten unabhängiger Variablen in einer Weise zu klassifizieren, die mit ähnlichen Sensoraktivitäten korrelieren kann. Das ML-Modell kann die ähnlichen Daten in Clustern gruppieren und einen Schwerpunkt jedes Clusters für einen gemeinsamen Punkt unter den gruppierten Daten bestimmen.
-
Die ungefähre Position des Schwerpunkts jedes Datenclusters kann an andere Netzgeräte in der lokalen Computerumgebung oder in anderen verteilten Computerumgebungen übertragen werden. Jedes Gerät kann seine Liste der Zentroide der Cluster mit anderen Netzwerkgeräten teilen (z. B. um Schwarmlernen zu implementieren). Diese verteilten Netzwerkgeräte können die empfangenen Zentroide mit Zentroiden vergleichen, die von einem lokalen ML-Modell in jedem Netzwerkgerät erzeugt wurden, und als Reaktion auf den Vergleich eine Aktion einleiten.
-
In einigen Beispielen können die Zentroide mit einem Schwellenwert verglichen werden. Wenn der Schwerpunkt einen vorbestimmten Abstand vom Schwellenwert überschreitet, kann eine ähnliche Aktion eingeleitet werden (z. B. zur Warnung vor Unterschieden, die beim Vergleich mit dem Schwellenwert festgestellt wurden). Die Abweichungen, die den Schwellenwert überschreiten, können auf eine Anomalie in der Netzumgebung hindeuten.
-
Wenn beim Vergleich der individuell erstellten Listen oder beim Vergleich des Schwerpunkts mit einem Schwellenwert eine Anomalie festgestellt wird, kann eine Aktion eingeleitet werden. Die Aktion kann beispielsweise darin bestehen, einen Systemadministrator darüber zu informieren, dass zwischen den beiden Netzwerkgeräten der Datenverarbeitungsumgebung Unterschiede bestehen, die einen Schwellenwert überschreiten. Andere Aktionen können z. B. die automatische Umleitung des Datenverkehrs, der Neustart eines Netzwerkgeräts, die Aktualisierung einer Ausreißerprotokolldatei oder andere Aktionen sein. Die Aktion kann dazu beitragen, die Anomalie zu identifizieren oder zu beheben.
-
Ein anschauliches Beispiel: Die Zeitreihendaten an einem ersten Netzwerkgerät können Betriebsparameter an dem ersten Netzwerkgerät identifizieren. Die Daten können beispielsweise die Drehzahl eines Prozessorlüfters umfassen (z. B. wurde im Laufe der Zeit festgestellt, dass die Drehzahl des Lüfters aufgrund sinkender Außentemperaturen einer Klimaanlage in einem Gebäude oder sinkender saisonaler Temperaturen stetig sinkt). Das trainierte ML-Modell im Netzwerkgerät kann die Daten dem trainierten ML-Modell zur Verfügung stellen und einen oder mehrere Zentroide erzeugen, die die geclusterten Daten des Prozessorlüfters identifizieren. Die aus verschiedenen Zeiträumen erzeugten Zentroide können intern verglichen werden (z. B. um festzustellen, dass die interne Lüfterdrehzahl im Laufe der Zeit abnimmt) oder an ein anderes Netzwerkgerät in der Computerumgebung übertragen und mit Zentroiden aus diesem Datensatz verglichen werden (z. B. um festzustellen, dass beide Lüfter im Laufe der Zeit als Reaktion auf dieselbe Umgebung abnehmen). Liegt die Abweichung über einem Schwellenwert, kann das Netzwerkgerät eine Maßnahme zur Behebung des Problems einleiten.
-
Es können auch ähnliche Beispiele zur Veranschaulichung herangezogen werden. So können die Netzwerkgeräte beispielsweise einer Vielzahl von Switches entsprechen, die Prozessoren und Speicher in derselben Netzwerkumgebung oder in verschiedenen Zweigstellen enthalten. In einem anderen Beispiel können verschiedene Netzwerkgeräte ähnliche Softwareanwendungen enthalten, bei denen die Mittelpunkte der Daten verglichen werden können, um Ähnlichkeiten und Unterschiede festzustellen. In einem weiteren Beispiel können Netzwerkgeräte, die physikalische Eingangs-/Ausgangs-Telemetrie erzeugen, analysiert und verglichen werden, um einen drohenden Geräteausfall in einer Umgebung vorherzusagen.
-
Durch die Offenlegung werden technische Verbesserungen erzielt. Beispielsweise kann das Verfahren durch die Verteilung und Kombination der Anomalieerkennung eine schnellere Erkennung von Problemen aus mehreren Blickwinkeln/Geräten ermöglichen, was zu einer schnelleren Fehlerbehebung und Identifizierung von Problemen führt, die möglicherweise nicht erkannt werden, wenn nur ein einziges Gerät Probleme erkennt. Darüber hinaus wird die Anomalieerkennung auf dem Netzwerkgerät implementiert, das näher an dem Ort ist, an dem die Daten erzeugt werden, und das potenzielle Probleme schneller und effizienter angehen kann als herkömmliche Systeme.
-
In anderen Beispielen wird kollaboratives Lernen in einer wirklich verteilten, die Privatsphäre wahrenden Weise erreicht. Diese Anwendung beschreibt die Übertragung von gelernten Daten aus lokal trainierten ML-Modellen und den Empfang anderer gelernter Daten von anderen teilnehmenden Netzwerkgeräten, anstatt die vertraulichen Daten oder ML-Modelle selbst zu übertragen. Das vorgeschlagene System identifiziert automatisch Zentren mit Hilfe von Schwarmlernen oder anderen maschinellen Lernmethoden, und wenn die ermittelten Zentren voneinander abweichen, wird eine Warnung erzeugt, um die unterschiedlichen Eigenschaften des Netzwerks schnell zu beheben.
-
1 zeigt ein Beispielsystem zur datenschutzfreundlichen und dezentralisierten Erkennung globaler Ausreißer unter Verwendung der Blockchain gemäß einer Beispielimplementierung der Offenlegung. Das illustrative System 100 umfasst ein dezentralisiertes Ausreißer-Erkennungsnetzwerk 110 mit einer Vielzahl von Netzwerkgeräten oder Knoten 10 (austauschbar verwendet) in einem Cluster oder einer Gruppe von Knoten an einem Ort (dargestellt als erster Knoten 10A, zweiter Knoten 10B, dritter Knoten 10C, vierter Knoten 10D, fünfter Knoten 10E, sechster Knoten 10F, siebter Knoten 10F).
-
Die Mehrzahl der Knoten 10 im Cluster im dezentralen Ausreißer-Erkennungsnetzwerk 110 (auch als Blockchain-Netzwerk 110 bezeichnet) kann eine beliebige Anzahl, Konfiguration und Verbindungen zwischen den Knoten 10 umfassen. Daher dient die in 1 gezeigte Anordnung der Knoten 10 nur der Veranschaulichung. Der Knoten 10 kann ein festes oder mobiles Netzwerkgerät sein. Beispiele für weitere Details des Knotens 10 werden nun beschrieben. Während in den Figuren nur einer der Knoten 10 im Detail dargestellt ist, kann jeder der Knoten 10 in der dargestellten Weise konfiguriert werden.
-
Der Knoten 10 kann einen oder mehrere Prozessoren 20 (im Folgenden der Einfachheit halber auch als Prozessoren 20, Prozessor(en) 20 oder Prozessor 20 bezeichnet), eine oder mehrere Speichervorrichtungen 40 oder andere Komponenten umfassen.
-
Das verteilte Hauptbuch 42 kann eine Reihe von Datenblöcken enthalten, die auf mindestens einen anderen Block, z. B. einen früheren Block, verweisen. Auf diese Weise können die Datenblöcke als verteiltes Hauptbuch 42 aneinandergereiht werden. In einem verteilten Währungskontext kann es beispielsweise eine Vielzahl von Börsen geben, um die Währung eines Benutzers in eine digitale oder virtuelle Währung zu übertragen. Sobald die digitale oder virtuelle Währung einer digitalen Brieftasche eines ersten Nutzers zugeordnet ist, kann der erste Nutzer den Wert der digitalen oder virtuellen Währung auf eine digitale Brieftasche eines zweiten Nutzers im Austausch für Waren oder Dienstleistungen übertragen. Das Netzwerk der digitalen oder virtuellen Währung kann durch Edge-Geräte oder Server (z. B. Miner) gesichert werden, die für die Überprüfung dieser und anderer im Netzwerk stattfindender Transaktionen mit neuer digitaler oder virtueller Währung belohnt werden . Nach der Verifizierung kann die Transaktion von der digitalen Brieftasche des ersten Benutzers zur digitalen Brieftasche des zweiten Benutzers im verteilten Hauptbuch 42 aufgezeichnet werden, wobei ein Teil des verteilten Hauptbuchs 42 auf jedem der Edge-Geräte oder -Server gespeichert sein kann.
-
In einigen Implementierungen kann das verteilte Hauptbuch 42 eine Blockchain mit einer eingebauten vollwertigen Turing-kompletten Programmiersprache bereitstellen, die zur Erstellung von „Verträgen“ verwendet werden kann, mit denen sich beliebige Zustandsübergangsfunktionen kodieren lassen. Distributed Ledger 42 kann mit einem Protokoll zur Erstellung dezentraler Anwendungen unter Verwendung einer abstrakten Basisschicht korrespondieren. Die abstrakte Basisschicht kann eine Blockchain mit einer eingebauten Turing-kompletten Programmiersprache enthalten, die es verschiedenen dezentralen Systemen ermöglicht, intelligente Verträge und dezentrale Anwendungen zu schreiben, die mit anderen dezentralen Systemen über eine ML-Modellplattform mit Schwarmlernen kommunizieren können. Jedes System kann seine eigenen Regeln für Eigentum, Transaktionsformate und Zustandsübergangsfunktionen erstellen. Intelligente Verträge oder Blöcke können einen oder mehrere Werte (z. B. einen Zustand) enthalten und verschlüsselt werden, bis sie durch Erfüllung der Bedingungen des Systemprotokolls entsperrt werden.
-
Das verteilte Hauptbuch 42 kann die Blöcke speichern, die einen Zustand des Knotens 10 in Bezug auf sein maschinelles Lernen während einer Iteration anzeigen. Somit kann das verteilte Hauptbuch 42 eine unveränderliche Aufzeichnung der Zustandsübergänge des Knotens 10 speichern. Auf diese Weise kann das verteilte Hauptbuch 42 einen aktuellen und historischen Zustand eines ML-Modells im Modelldatenspeicher 44 speichern.
-
Bei dem Modelldatenspeicher 44 kann es sich um einen Speicher (z. B. einen Datenspeicher) zum Speichern lokal trainierter ML-Modelle am Knoten 10 auf der Grundlage lokal zugänglicher Daten, wie hier beschrieben, handeln, die dann auf der Grundlage von Modellparametern aktualisiert werden, die an anderen Teilnehmerknoten 10 gelernt wurden. Wie an anderer Stelle erwähnt, hängt die Art des Modelldatenspeichers 44 von der jeweiligen Implementierung des Knotens 10 selbst ab. So kann der Modelldatenspeicher 44 beispielsweise trainierte Parameter enthalten, die sich auf selbstfahrende Fahrzeugmerkmale wie Sensorinformationen in Bezug auf die Objekterkennung, Trocknungsgeräte in Bezug auf Trocknungszeiten und -steuerungen, Netzwerkkonfigurationsmerkmale für Netzwerkkonfigurationen, Sicherheitsmerkmale in Bezug auf die Netzwerksicherheit wie die Erkennung von Eindringlingen und/oder andere kontextbasierte Modelle beziehen.
-
Regeln 46 können intelligente Verträge oder computerlesbare Regeln enthalten, die Knoten so konfigurieren, dass sie sich in Bezug auf dezentrales maschinelles Lernen auf bestimmte Weise verhalten und eine dezentrale Steuerung ermöglichen. Beispielsweise können die Regeln 46 deterministische Zustandsübergänge spezifizieren, wann und wie ein abgestimmter Anführerknoten gewählt wird, wann eine Iteration des maschinellen Lernens eingeleitet wird, ob einem Knoten erlaubt wird, sich in eine Iteration einzuschreiben, wie viele Knoten erforderlich sind, um einer Konsensentscheidung zuzustimmen, wie viel Prozent der abstimmenden Teilnehmerknoten erforderlich sind, um einer Konsensentscheidung zuzustimmen, und/oder andere Aktionen, die der Knoten 10 für das dezentralisierte maschinelle Lernen durchführen kann.
-
Das Zentroid-Ensemble 48 kann Regeln enthalten, die die Zentroide von Clustern definieren. Das Zentroid-Ensemble 48 kann beispielsweise Regeln für die Erzeugung von Clustern aus einem trainierten, nicht überwachten Modell des maschinellen Lernens (ML) (z. B. K-means), die Bestimmung von Zentroiden dieser Cluster und/oder den Vergleich von Zentroiden von Peer-Knoten enthalten, um Unterschiede zwischen den individuell bestimmten Zentroiden zu ermitteln, die von verschiedenen ML-Modellen bestimmt wurden. Jedes der Cluster oder Zentroide kann durch ein lokales ML-Modell an einem ersten Knoten bestimmt und an andere Knoten übertragen werden, so dass die anderen Knoten lokal bestimmte Cluster oder Zentroide mit den übertragenen vergleichen können. Die Regeln können Unterschiede zwischen den beiden ML-Modellausgaben während eines Schwerpunkt-Ensemble-Prozesses identifizieren. Im Ensemble-Prozess kann das System lernen, wie es die Ausgabevorhersagen von zwei oder mehr ML-Modellen am besten kombiniert und die ML-Modelle im Modelldatenspeicher 44 speichert.
-
In einigen Beispielen kann ein Schwerpunkt eines Clusters bestimmt werden. Beispielsweise kann der X-Wert jedes Mitglieds eines Werteclusters (z. B. ein X-Achsenwert eines aufgezeichneten Wertediagramms) gemittelt werden, um einen durchschnittlichen X-Wert zu bestimmen, und derselbe Prozess kann für alle Y-Werte durchgeführt werden. Mit dem durchschnittlichen X-Wert und dem Y-Wert kann das Zentroid-Ensemble 48 jeden der Clusterschwerpunkte aufzeichnen und feststellen, ob irgendwelche Punkte näher an einem Schwerpunkt eines anderen Clusters liegen als am Schwerpunkt des eigenen Clusters. Wenn Punkte näher an einem anderen Schwerpunkt liegen, kann das Zentroid-Ensemble 48 sie auf das Cluster umverteilen, das den näheren Schwerpunkt enthält. Diese Schritte können wiederholt werden, bis sich alle Datenpunkte in dem Cluster befinden, das den Schwerpunkt enthält, dem sie am nächsten sind.
-
Die Prozessoren 20 können andere Daten erhalten, auf die der Knoten 10 lokal zugreifen kann, die aber nicht unbedingt für andere Knoten 10 zugänglich sind. Solche lokal zugänglichen Daten können beispielsweise private Daten sein, die nicht mit anderen Geräten geteilt werden sollten, aber Modellparameter, die aus den privaten Daten gelernt wurden, können geteilt werden.
-
Die Prozessoren 20 können durch eine oder mehrere Computerprogrammanweisungen programmiert werden. Beispielsweise können die Prozessoren 20 so programmiert werden, dass sie die Anwendungsschicht 22, das Framework für maschinelles Lernen 24 (abgebildet und auch als ML-Framework 24 bezeichnet), die Schwerpunktschicht 26, die Schnittstellenschicht 28 oder andere Anweisungen ausführen, um verschiedene Operationen durchzuführen, von denen jede hierin ausführlicher beschrieben wird. Der Einfachheit halber werden die verschiedenen Anweisungen hier als Ausführung einer Operation beschrieben, wenn die verschiedenen Anweisungen tatsächlich die Prozessoren 20 (und damit den Knoten 10) zur Ausführung der Operation programmieren.
-
Die Anwendungsschicht 22 kann Anwendungen auf dem Knoten 10 ausführen. Beispielsweise kann die Anwendungsschicht 22 einen Blockchain-Agenten (nicht abgebildet) enthalten, der den Knoten 10 so programmiert, dass er an einem dezentralen maschinellen Lernen über das Blockchain-Netzwerk 110, wie hier beschrieben, teilnimmt. Jeder Knoten 10 kann mit demselben Blockchain-Agenten programmiert werden, wodurch sichergestellt wird, dass jeder nach demselben Satz dezentraler Modellbildungsregeln agiert, wie z. B. denjenigen, die mit den Regeln 46 kodiert sind. Zum Beispiel kann der Blockchain-Agent jeden Knoten 10 so programmieren, dass er ein ML-Modell mit lokalen Daten trainiert. Die Anwendungsschicht 22 kann das maschinelle Lernen über den ML-Rahmen 24 ausführen.
-
Die Anwendungsschicht 22 kann die Schnittstellenschicht 28 verwenden, um mit dem Blockchain-Netzwerk 110 für dezentrales maschinelles Lernen über mehrere Teilnehmerknoten 10 zu interagieren und daran teilzunehmen. Die Schnittstellenschicht 28 kann mit anderen Knoten, die Blockchain verwenden, kommunizieren, indem sie beispielsweise Blockchain-Transaktionen sendet und Blöcke auf der Grundlage dieser Transaktionen in das verteilte Hauptbuch 42 schreibt.
-
Die Anwendungsschicht 22 kann das verteilte Hauptbuch (Distributed Ledger) 42 verwenden, um die parallele Modellbildung während einer Iteration mit anderen beteiligten Knoten 10 gemäß den Regeln 46 zu koordinieren.
-
In einigen Beispielen implementiert die Anwendungsschicht 22 eine API-Bibliothek (Application Programming Interface). Der Aufruf der API kann automatisch die erforderlichen maschinenlesbaren Anweisungen für die Knoten einfügen, um am Ende jedes Modelltrainings nahtlos Parameter (z. B. Schwerpunkte oder andere Daten) auszutauschen und anschließend das Training fortzusetzen, nachdem die lokalen Modelle auf die global zusammengeführten Parameter zurückgesetzt wurden.
-
Der ML-Rahmen 24 kann ein ML-Modell auf der Grundlage von Daten trainieren, die lokal am Knoten 10 zugänglich sind. Beispielsweise kann das ML-Framework 24 Modellparameter aus Sensordaten, aus von Knoten 10 oder anderen Quellen aggregierten Daten, aus Daten, die für Quellen lizenziert sind, und/oder aus anderen Geräten oder Datenquellen, auf die der Knoten 10 Zugriff hat, erzeugen. Die Daten können private Daten enthalten, die dem jeweiligen Knoten 10 gehören und für andere Geräte nicht sichtbar sind. In einer Implementierung kann das ML-Framework 24 das TensorFlow™-Framework für maschinelles Lernen verwenden, obwohl auch andere Frameworks verwendet werden können. In einigen dieser Implementierungen kann eine Anwendungsprogrammierschnittstelle (API) eines Drittanbieters verwendet werden, um auf bestimmte Funktionen zur Modellerstellung zuzugreifen, die von dem Framework für maschinelles Lernen bereitgestellt werden. So kann der Knoten 10 beispielsweise API-Aufrufe an TensorFlow™ oder ein anderes maschinelles Lernsystem ausführen.
-
Der ML-Rahmen 24 kann ein oder mehrere ML-Modelle auf privaten Datensilos trainieren. Die Architektur des dezentralen ML-Modells wird in der US-Patentanmeldung Nr.
16/163,159 und der indischen Patentanmeldung Nr.
201841016309 näher beschrieben, deren Inhalt hier durch Bezugnahme aufgenommen wird.
-
Der ML-Rahmen 24 eines jeden Knotens 10 kann die ML-Modelle in mehreren Phasen trainieren. Jede Iteration der ML-Modellschulung (hier auch als maschinelles Lernen, Modellschulung oder Modellerstellung bezeichnet) kann mehrere Phasen umfassen, z. B. eine erste und eine zweite Phase. In der ersten Phase trainiert jeder Knoten 10 seine lokalen ML-Modelle unabhängig von anderen Knoten 10 unter Verwendung seines lokalen Trainingsdatensatzes, der lokal für den Knoten, aber nicht für andere Knoten zugänglich sein kann. So kann jeder Knoten 10 ML-Modellparameter erzeugen, die sich aus dem lokalen Trainingsdatensatz ergeben.
-
In der zweiten Phase können die Knoten 10 verarbeitete Daten, die durch das ML-Modell erzeugt wurden, mit anderen Knoten im Blockchain-Netzwerk 110 teilen. Zum Beispiel kann jeder Knoten 10 seine durch sein ML-Modell erzeugten Zentroide an eine Untergruppe von Knoten 10 weitergeben. Die Untergruppe der Knoten 10 kann die Zentroide der anderen Knoten 10 vergleichen. Die Zentroide, die den Clustern entsprechen, die sich von Knoten zu Knoten unterscheiden, können an die anderen Knoten 10 verteilt werden. Durch die Verteilung der Zentroide kann jeder Knoten die Cluster identifizieren, die mit einem Problem korrespondieren, das anhand lokaler Trainingsdaten des Knotens identifiziert wurde, auf die andere Knoten 10 im Cluster keinen Zugriff haben.
-
2 zeigt eine Vielzahl von Knoten, die ML-Modelle in Übereinstimmung mit Beispielen der Offenlegung erzeugen. In dieser Abbildung sind die Knoten 10 als erster Knoten 210 dargestellt, der ein erstes ML-Modell trainiert und erzeugt, als zweiter Knoten 220, der ein zweites ML-Modell trainiert und erzeugt, als dritter Knoten 230, der ein drittes ML-Modell trainiert und erzeugt, und als vierter Knoten 240, der ein viertes ML-Modell trainiert und erzeugt. Die ML-Modelle können verschiedenen Modelltypen entsprechen, z. B. einem ML-Modell eines neuronalen Netzes (NN), einem ML-Modell einer Support-Vektor-Maschine (SVM), einem ML-Modell der logistischen Regression (LR), einem ML-Modell des Random Forest (RF), einem ML-Modell von K-Means oder anderen nicht überwachten ML-Modellen. Die Anzahl der Knoten und die hier aufgeführten Modelle dienen nur der Veranschaulichung und sollen die Offenlegung nicht einschränken.
-
Bei diesem Aufbau erzeugt jeder Teilnehmerknoten 10 ein ML-Modell als Black-Box-Funktion für andere Knoten im Netz. Das lokal im Teilnehmerknoten durchgeführte Training wird aus den privaten Daten der einzelnen Teilnehmerknoten 10 gelernt. Jedes ML-Modell kann lokal erstellt und trainiert werden, indem ein oder mehrere lokale Datensätze an jedem Knoten verwendet werden. In einigen Beispielen dürfen sowohl die Sensor-/Telemetriedaten als auch das ML-Modell den Knoten nicht verlassen.
-
Die Knoten 10 können jeweils unterschiedliche ML-Modelle umfassen, und jedes der ML-Modelle kann dasselbe unüberwachte Lernziel haben (z. B. die Erzeugung von Clustern und/oder Zentroiden der Cluster). Mit anderen Worten, die ML-Modelle können für dasselbe maschinelle Lernproblem trainiert werden. Die Modelle können sich in der Architektur und in der Verwendung einer Schwarmlernplattform zur Implementierung des ML-Modells unterscheiden, können aber dasselbe ML-Problem lösen (z. B. durch Generierung einer Reihe von Clustern, die potenzielle Probleme in einem Netzwerk gruppieren, die analysiert werden, um die Schwerpunkte des Problems zu bestimmen).
-
Die ML-Modelle können selbst beliebig komplexe oder einfache Architekturen haben. Die beliebig komplexen Architekturen können im Gegensatz zum Stand der Technik des föderierten Lernens, bei dem nur eine Art von ML-Modell trainiert wird, jeder der Knoten 10 kann seine eigene Art von ML-Modell implementieren und der ML-Rahmen 24 kann mehrere Arten von ML-Modellen kombinieren. Ein anschauliches Beispiel: Wenn die Benutzer ein Modell zur Klassifizierung von Weinen auf der Grundlage einer Reihe von Attributen erstellen, sollten alle ML-Modelle dasselbe tun. Ein ML-Modell darf nicht ein Regressionsmodell mit einem Klassifizierungsmodell mischen. Diese Annahme ermöglicht es dem ML-Rahmen 24, ein System zu entwerfen, das ML-Modelle kombiniert, wobei die einzelnen Knoten ihre eigenen Modelle und ihr Fachwissen bei der Entwicklung ihrer lokalen Modelle in ein kollaboratives Lernsystem einbringen können.
-
Die Architektur jedes ML-Modells kann auch denselben Eingabe- und Ausgabevektor mit einem gewissen Grad an Vertrauen in die Korrektheit der vorhergesagten Ausgabe umfassen. Die Verwendung der gleichen Eingangs- und Ausgangsvektoren kann sicherstellen, dass der Knoten 10 ein gestapeltes Ensemble auf deterministische Weise zusammenstellen kann.
-
Jeder Knoten kann mit Hilfe der Schwerpunktschicht 26 eine Liste von Schwerpunkten erstellen, die er anderen Knoten mitteilt. Die Schwerpunktschicht 26 kann eine Liste von Schwerpunkten erzeugen, indem sie lokale Telemetriedaten als Eingabe für das trainierte ML-Modell (am Knoten 10) bereitstellt, um einen oder mehrere Datencluster als Ausgabe zu bestimmen. Die ungefähre Position des Schwerpunkts jedes Datenclusters kann bestimmt und an andere Rechenknoten in der lokalen Computerumgebung oder anderen verteilten Computerumgebungen übertragen werden.
-
Die Zentroid-Ebene 26 kann Zentroide von anderen Knoten empfangen und die Zentroide der anderen Knoten vergleichen. Jeder der Knoten kann ähnliche ML-Modelle und -Anwendungen ausführen, um die Daten und die Liste der Schwerpunkte zu erstellen.
-
Jedes Gerät kann seine Liste von Clustern und/oder Zentroiden der Cluster mit anderen Geräten im Netzwerk teilen (z. B. um Schwarmlernen zu implementieren). Diese verteilten Knoten können die empfangenen Zentroide mit Zentroiden vergleichen, die von einem lokalen ML-Modell an jedem Rechenknoten generiert wurden, und eine Aktion einleiten, um auf Unterschiede zwischen den beiden Knoten oder Rechenumgebungen hinzuweisen, die einen Schwellenwert überschreiten. Die Unterschiede, die den Schwellenwert überschreiten, können auf eine Anomalie in der Netzwerkumgebung hindeuten. Wenn beim Vergleich der individuell erstellten Listen eine Anomalie festgestellt wird, wird eine Aktion eingeleitet (z. B. eine Warnmeldung, eine automatische Umleitung des Datenverkehrs, ein Neustart eines Netzwerkgeräts oder andere Aktionen). Die Aktion kann dazu beitragen, die Anomalie zu identifizieren oder zu beheben.
-
Die Zentroid-Ebene 26 kann die Liste der Zentroide in einem Datenspeicher, wie dem Zentroid-Datenspeicher 48, speichern. In einigen Beispielen werden die Zentroide nach ihrer Speicherung eingefroren und können in einem Zeit-zu-Zeit-Vergleich mit historischen Zentroiden verglichen werden.
-
Ein anschauliches Beispiel für die gemeinsame Nutzung, den Vergleich und die Speicherung von Zentroiden verschiedener Knoten ist in dargestellt. Beispielsweise können die Knoten 10 in einen Abstimmungsleiter-Knoten oder eine Untergruppe von Knoten 310 kategorisiert werden, einschließlich eines oder mehrerer Teilnehmerknoten und eines oder mehrerer Abstimmungsleiter-Knoten. Die Teilnehmerknoten können Informationen an die Voted-Leader-Knoten (z. B. die Zentroide) liefern, wobei die Voted-Leader-Knoten die Ausgabe aus verschiedenen Quellen vergleichen und den Vergleich verwenden können, um die Durchführung einer Aktion einzuleiten. In einigen Beispielen können die Teilnehmerknoten auch ein Voting Leader-Knoten sein.
-
Die Untergruppe der Knoten 310 kann mit einem oder mehreren Knoten 10 korrespondieren, die als Leitknoten gewählt oder vorher bestimmt wurden, um die von den Teilnehmerknoten individuell erzeugten Zentroide unter Verwendung lokaler ML-Modelle zu empfangen und zu kombinieren. Jeder der Teilnehmerknoten 10 kann die Funktionalität haben, die Zentroide zu erzeugen und/oder zu vergleichen, und eine Untergruppe von Knoten 310 oder gewählte Leitknoten können diese Funktionalität aktivieren. In einigen Beispielen können die Teilnehmerknoten 10 diese Funktion nicht aktivieren, mit Ausnahme der Untergruppe der Knoten 310 oder der führenden Knoten.
-
Sobald eine Einigung oder ein Konsens unter den Knoten 10 bei der Bestimmung eines führenden Knoten oder einer Untergruppe von Knoten 310 erreicht ist, können die teilnehmenden Knoten 10 die Liste der Zentroide an jeden der Untergruppe von Knoten 310 übermitteln. In der Eingabephase 320 kann der abstimmende führende Knoten oder die Untergruppe der Knoten 310 die Liste der Zentroide von den teilnehmenden Knoten 10 erhalten.
-
In der Vergleichsphase 330 kann jede Untergruppe von Knoten 310 die lokal ermittelten Zentroide mit der Liste der empfangenen Zentroide vergleichen, um einen oder mehrere Zentroide zu bestimmen, die sich unterscheiden. Es ist zu beachten, dass jeder der Teilmengen von Knoten 310 selbst lokale Zentroide aus seinem lokalen Trainingsdatensatz erzeugt haben kann.
-
Wenn in der Liste der von den Teilnehmerknoten 10 empfangenen Schwerpunkte Unterschiede zu den lokal ermittelten Schwerpunkten festgestellt werden, kann in der Aktionsphase 340 eine Aktion eingeleitet werden. Die Aktion kann beispielsweise darin bestehen, eine Warnung an einen Systemadministrator zu erzeugen, dass zwischen den beiden Netzwerkgeräten der Computerumgebung Unterschiede bestehen, die einen Schwellenwert überschreiten. Andere Aktionen können z. B. die automatische Umleitung des Datenverkehrs, der Neustart eines Netzwerkgeräts, die Aktualisierung einer Ausreißerprotokolldatei oder andere Aktionen sein. Die Aktion kann dazu beitragen, die Anomalie zu identifizieren oder zu beheben. Insbesondere kann der Prozess eine schnellere Erkennung von Problemen aus mehreren Blickwinkeln/Geräten ermöglichen, was zu einer schnelleren Fehlerbehebung und Identifizierung von Problemen führt, die möglicherweise nicht erkannt werden, wenn nur ein einziges Gerät Probleme erkennt.
-
Zurück zu 1: Die Schnittstellenschicht 28 kann einen oder mehrere Parameter und Schlussfolgerungen mit den anderen Teilnehmerknoten 10 teilen. Die anderen Knoten 10 können die Parameter und Schlussfolgerungen in ihre lokalen ML-Modelle integrieren, um die ML-Modelle anhand der lokalen Daten und aktualisierten Parameter und Schlussfolgerungen neu zu trainieren.
-
Die Schnittstellenebene 28 kann eine Nachrichtenschnittstelle enthalten, die zur Kommunikation über ein Netz mit anderen Teilnehmerknoten 10 dient. Die Nachrichtenübermittlungsschnittstelle kann als Secure Hypertext Transmission Protocol („HTTPS“)-Mikroserver konfiguriert sein. Es können auch andere Arten von Nachrichtenübermittlungsschnittstellen verwendet werden. Die Schnittstellenschicht 28 kann eine Blockchain-API verwenden, um Blockchain-Funktionen auf der Grundlage einer Blockchain-Spezifikation aufzurufen. Beispiele für Blockchain-Funktionen sind unter anderem das Lesen und Schreiben von Blockchain-Transaktionen und das Lesen und Schreiben von Blockchain-Blöcken in das verteilte Hauptbuch 42.
-
4 zeigt ein Schwarmlernen zur Erkennung globaler Ausreißer gemäß einer Beispielimplementierung der Offenlegung. Beispielsweise können die Knoten 10 initialisiert und in das verteilte System eingebunden werden, ähnlich wie bei dem in 1 dargestellten System. Dies kann Aspekte wie Vereinbarungen über die gemeinsame Nutzung von Daten, Vorkehrungen zur Sicherstellung der Sichtbarkeit der Knoten über die organisatorischen Grenzen der Einheiten hinweg und einen Konsens über die erwarteten Ergebnisse des Modelltrainings umfassen. In dieser Phase können auch die Werte konfigurierbarer Parameter festgelegt werden, z. B. die Werte der Peer-Discovery-Knoten, die während des Hochfahrens zur Verfügung gestellt werden, und die Häufigkeit der Synchronisierung zwischen den Knoten.
-
In einigen Beispielen können die Knoten 10 installiert und konfiguriert werden. Sobald der Einführungsprozess abgeschlossen ist, können beispielsweise alle teilnehmenden Knoten 10 eine Schwarmlern- und ML-Modellplattform auf ihre jeweiligen Knoten herunterladen und installieren. Die Plattform kann hochfahren und die Verbindung jedes Knotens mit anderen Knoten im Netzwerk initiieren, wodurch im Wesentlichen ein Blockchain-Overlay auf der zugrunde liegenden Netzwerkverbindung zwischen den Knoten eingerichtet werden kann. In diesem Beispiel können die teilnehmenden Knoten einen Peer-Discovery-Prozess festlegen, um zuerst zu starten, gefolgt von den übrigen Knoten im Netzwerk.
-
In Block 405 kann der Prozess eine Registrierung eines oder mehrerer Knoten einleiten. Die Registrierung kann den Knoten in einen Blockchain-Smart-Contract mit anderen Knoten in der verteilten Computerumgebung einschreiben. In einigen Beispielen wird der Registrierungsprozess manuell von einem Verwaltungsbenutzer durchgeführt.
-
In Block 410 kann der Prozess einen Trainingsstapel ausführen. Der Trainingsstapel kann Anfangsdaten enthalten, um ein ML-Modell lokal am Knoten mit lokalen Daten zu trainieren.
-
In Block 415 kann der Prozess feststellen, ob es an der Zeit ist, Dateien zusammenzuführen. Die Zusammenführung von Dateien kann während der Modellbildungsphase erfolgen. In einigen Beispielen kann der Prozess der Zusammenführung von Dateien den Austausch von Zentroiden zwischen den Knoten und/oder den Vergleich der Zentroidpositionen für jeden Quellknoten umfassen. Wenn ja, kann der Prozess mit Block 420 fortfahren. Falls nein, kann der Prozess zu Block 410 zurückkehren.
-
In Block 420 kann der Prozess aktuelle Modellparameter exportieren. Das Exportieren aktueller Modellparameter kann während einer Phase der gemeinsamen Nutzung von Parametern erfolgen. In einigen Beispielen können die gelernten Parameter zwischen den Knoten 10 ausgetauscht werden, und die zur Erzeugung der Parameter verwendeten lokalen Daten können lokal und sicher im Knoten verbleiben.
-
In einigen Beispielen kann der Block 420 beginnen, sobald die Anzahl der Knoten, die für den Schritt der gemeinsamen Nutzung von Parametern bereit sind, einen bestimmten, während der Initialisierung festgelegten Mindestschwellenwert erreicht. Der Austauschprozess kann zum Beispiel mit der Wahl des Leitknotens beginnen, dessen Aufgabe es ist, die nach dem lokalen Training auf allen Teilnehmerknoten abgeleiteten Parameter zusammenzuführen. Diese Auswahl kann relativ schnell erfolgen und auf dem Höhepunkt eines jeden Epochenknotens stattfinden.
-
In Block 425 kann der Prozess exportierte Parameter an eine API eines zweiten Knotens senden. In einigen Beispielen können die exportierten Parameter zur weiteren Verarbeitung und Analyse an ein Cloud-Speichergerät übertragen werden.
-
In Block 430 kann der Prozess über seine eigene API Zusammenführungsparameter von anderen Knoten empfangen. So können beispielsweise Parameter (z. B. Schwerpunkte), die von allen Knoten gemeinsam genutzt werden, zusammengeführt werden, um ein globales Modell oder eine Vielzahl von Schwerpunkten zu erhalten. Es können ein oder mehrere Zusammenführungsalgorithmen implementiert werden, wie z. B. Mittelwert, gewichteter Mittelwert, Median usw.
-
Der Zusammenführungsprozess darf nicht von einem statischen zentralen Koordinator oder Parameterserver durchgeführt werden, sondern von einem gewählten Führungsknoten, der dynamisch unter den teilnehmenden Knoten ausgewählt wird. Die Auswahl des führenden Knotens kann vorübergehend sein und ein anderer Knoten kann für einen späteren Prozess ausgewählt werden. Der führende Knoten kann die Zusammenführung durchführen, um die Dezentralisierung des Netzes zu unterstützen. In einigen Beispielen kann die Fehlertoleranz durch den führenden Knoten größer sein als bei herkömmlichen, auf zentralen Parametern und Servern basierenden Frameworks. Mit dem globalen Modell steht den Knoten die kollektive Intelligenz des Netzes zur Verfügung, ohne dass die lokalen Daten den Knoten verlassen.
-
Bei der Auswahl des führenden Knotens können ein oder mehrere Knoten als führender Knoten gewählt werden. Der gewählte führende Knoten kann die URI-Informationen (Uniform Resource Identifier) aller Teilnehmerknoten verwenden und die Parameterdateien von jedem der Teilnehmerknoten herunterladen, um die Schritte zur Zusammenführung der Parameter zu ermöglichen.
-
Es können verschiedene Layouts oder Topologien implementiert werden. So kann z. B. eine Sterntopologie implementiert werden, bei der ein einziger Anführer die Zusammenführung durchführt. Andere Topologien, wie z. B. eine k-Wege-Zusammenführung, bei der die Zusammenführung von einer Gruppe von Knoten durchgeführt wird, sind ebenfalls möglich.
-
In Block 435 kann der Prozess sein lokales ML-Modell mit zusammengeführten Parametern aktualisieren. Unter Verwendung des in Block 430 gewählten Verschmelzungsalgorithmus kombiniert der Anführer beispielsweise die Parameterwerte aller Knoten, um eine neue Datei mit den verschmolzenen Parametern zu erstellen, und signalisiert den anderen Knoten, dass eine neue Datei verfügbar ist (z. B. die neue Vielzahl von Zentroiden, die aus den Zentroiden der einzelnen Knoten verschmolzen wurden). Jeder Knoten lädt dann die Datei vom führenden Knoten herunter und aktualisiert sein lokales Modell mit dem neuen Satz von Parameterwerten.
-
In Block 440 kann das Verfahren feststellen, ob das Abbruchkriterium erreicht ist. Wenn ja, kann der Prozess mit Block 450 fortfahren. Wenn nein, kann der Prozess zu Block 410 zurückkehren.
-
Bei der Feststellung, ob das Abbruchkriterium erreicht ist, können die teilnehmenden Knoten das Modell mit aktualisierten Parameterwerten unter Verwendung ihrer lokalen Daten bewerten, um verschiedene Validierungsmetriken zu berechnen. Die in diesem Schritt ermittelten Werte können über eine Smart-Contract-Zustandsvariable gemeinsam genutzt werden. Sobald jeder Teilnehmerknoten diesen Schritt abgeschlossen hat, signalisiert er dem Netzwerk, dass der Aktualisierungs- und Validierungsschritt abgeschlossen ist. In der Zwischenzeit kann der federführende Knoten immer wieder prüfen, ob jeder Teilnehmerknoten die Aktualisierung abgeschlossen hat. Wenn er feststellt, dass alle Merge-Teilnehmerknoten den Abschluss signalisiert haben, kann der Leader-Knoten die lokalen Validierungsmetrikzahlen zusammenführen, um die globalen Metrikzahlen zu berechnen. Der Synchronisierungsschritt wird dann als abgeschlossen markiert.
-
Wenn die bei der Initialisierung festgelegte Strategie die Monetarisierung während des Modellaufbaus unterstützt, können die den Beiträgen der einzelnen Teilnehmerknoten entsprechenden Belohnungen berechnet und an dieser Stelle ausgezahlt werden. Danach kann der aktuelle Zustand des Systems mit dem Abbruchkriterium verglichen werden, und wenn dieses erfüllt ist, wird der Prozess in Block 450 angehalten. Andernfalls werden die Schritte des lokalen Modelltrainings, der gemeinsamen Nutzung von Parametern, der Zusammenführung von Parametern und der Überprüfung des Abbruchkriteriums wiederholt, bis das Kriterium erfüllt ist.
-
In Block 450 kann der Prozess angehalten werden.
-
ist ein illustrativer Trainings- und Vergleichsprozess, der zwischen zwei Knoten durchgeführt wird, in Übereinstimmung mit Beispielen der Offenlegung. In dieser Abbildung sind ein erster Knoten und ein zweiter Knoten eines Knotenclusters dargestellt. Die dargestellten Knoten können mit den Knoten 10 in 1 übereinstimmen.
-
In Block 510 kann der erste Knoten ein erstes ML-Modell mit einem ersten lokalen Datensatz trainieren. Der erste lokale Datensatz kann lokal am ersten Knoten zugänglich sein. Der erste Knoten kann ein trainiertes erstes ML-Modell erwerben.
-
In Block 520 kann der erste Knoten Cluster mit Zentroiden als Ausgabe des trainierten ersten ML-Modells erzeugen.
-
In Block 530 kann ein zweiter Knoten die ersten Zentroide vom ersten Knoten empfangen.
-
In Block 540 kann der zweite Knoten die von einem zweiten lokal trainierten ML-Modell erzeugten Zentroide mit den vom ersten Knoten empfangenen Zentroiden vergleichen.
-
In Block 550 kann der zweite Knoten eine Aktion einleiten, wenn es Unterschiede zwischen den beiden Sätzen von Zentroiden gibt.
-
Es sollte beachtet werden, dass die Begriffe „optimieren“, „optimal“ und dergleichen, wie sie hier verwendet werden, so verwendet werden können, dass sie die Leistung so effektiv oder perfekt wie möglich machen oder erreichen. Wie jedoch ein Fachmann, der dieses Dokument liest, erkennen wird, kann Perfektion nicht immer erreicht werden. Dementsprechend können diese Begriffe auch bedeuten, die Leistung so gut oder effektiv wie unter den gegebenen Umständen möglich oder praktikabel zu machen oder zu erreichen, oder die Leistung besser zu machen oder zu erreichen als die, die mit anderen Einstellungen oder Parametern erreicht werden kann.
-
6 zeigt ein Beispiel für eine Rechnerkomponente, die zur Implementierung von Burst Preloading für die Schätzung der verfügbaren Bandbreite in Übereinstimmung mit verschiedenen Ausführungsformen verwendet werden kann. Wie in 6 dargestellt, kann die Rechnerkomponente 600 beispielsweise ein Servercomputer, ein Controller oder eine andere ähnliche Rechnerkomponente sein, die Daten verarbeiten kann. In der Beispielimplementierung von 6 umfasst die Rechnerkomponente 600 einen Hardwareprozessor 602 und ein maschinenlesbares Speichermedium 604.
-
Bei dem Hardware-Prozessor 602 kann es sich um eine oder mehrere Zentraleinheiten (CPUs), halbleiterbasierte Mikroprozessoren und/oder andere Hardwarevorrichtungen handeln, die zum Abrufen und Ausführen von Anweisungen geeignet sind, die auf dem maschinenlesbaren Speichermedium 604 gespeichert sind. Der Hardware-Prozessor 602 kann Befehle, wie die Befehle 606-612, abrufen, dekodieren und ausführen, um Prozesse oder Operationen für das Burst-Preloading zur Schätzung der verfügbaren Bandbreite zu steuern. Alternativ oder zusätzlich zum Abrufen und Ausführen von Befehlen kann der Hardware-Prozessor 602 einen oder mehrere elektronische Schaltkreise enthalten, die elektronische Komponenten zur Ausführung der Funktionalität eines oder mehrerer Befehle umfassen, wie z. B. ein Field Programmable Gate Array (FPGA), einen anwendungsspezifischen integrierten Schaltkreis (ASIC) oder andere elektronische Schaltkreise.
-
Ein maschinenlesbares Speichermedium, wie das maschinenlesbare Speichermedium 604, kann ein beliebiges elektronisches, magnetisches, optisches oder anderes physikalisches Speichergerät sein, das ausführbare Anweisungen enthält oder speichert. Bei dem maschinenlesbaren Speichermedium 604 kann es sich beispielsweise um einen Arbeitsspeicher (RAM), einen nichtflüchtigen Arbeitsspeicher (NVRAM), einen elektrisch löschbaren, programmierbaren Festspeicher (EEPROM), ein Speichergerät, eine optische Platte und dergleichen handeln. In einigen Ausführungsformen kann das maschinenlesbare Speichermedium 604 ein nichttransitorisches Speichermedium sein, wobei der Begriff „nicht-transitorisch“ nicht die transitorischen Übertragungssignale umfasst. Wie unten im Detail beschrieben, kann das maschinenlesbare Speichermedium 604 mit ausführbaren Befehlen kodiert sein, zum Beispiel mit den Befehlen 606-610.
-
Der Hardware-Prozessor 602 kann die Anweisung 606 ausführen, um einen oder mehrere Zentren unter Verwendung eines ersten ML-Modells zu bestimmen. Bei den zum Trainieren des Modells verwendeten Daten kann es sich beispielsweise um erste Sensordaten in einer Computerumgebung handeln (z. B. zur Bestimmung von Gewichten und Schlussfolgerungen), und ähnliche Sensordaten können bei der Erstellung des trainierten ML-Modells verwendet werden. Die Ausgabe des ML-Modells kann eine erste Mehrzahl von Schwerpunkten von Clustern der ersten Sensordaten bestimmen.
-
Der Hardware-Prozessor 602 kann die Anweisung 608 ausführen, um die erste Mehrzahl von Zentroiden von Clustern der ersten Sensordaten mit einer zweiten Mehrzahl von Zentroiden zu vergleichen, die von einem zweiten ML-Modell erzeugt wurden. Beispielsweise kann die zweite Vielzahl von Zentroiden von Teilnehmerknoten in einem verteilten Blockchain-Netzwerk empfangen und von einem Leitknoten zusammengeführt werden. Der Vergleich kann mit dem zusammengeführten Satz von Zentroiden durchgeführt werden.
-
Der Hardware-Prozessor 602 kann den Befehl 610 ausführen, um eine Aktion einzuleiten. Wenn zum Beispiel eine Anomalie beim Vergleich der ersten Vielzahl von Zentroiden mit der zweiten Vielzahl von Zentroiden identifiziert wird, kann der Hardware-Prozessor 602 eine mit der Anomalie verbundene Aktion einleiten. Die Aktion kann darin bestehen, eine Warnung an einen Systemadministrator zu erzeugen, dass zwischen den beiden Netzwerkgeräten der Computerumgebung Unterschiede bestehen, die einen Schwellenwert überschreiten. Andere Aktionen können z. B. die automatische Umleitung des Datenverkehrs, der Neustart eines Netzwerkgeräts, die Aktualisierung einer Ausreißerprotokolldatei oder andere Aktionen sein. Die Aktion kann dazu beitragen, die Anomalie zu identifizieren oder zu beheben.
-
7 zeigt ein Blockdiagramm eines beispielhaften Computersystems 700, in dem verschiedene der hier beschriebenen Ausführungsformen implementiert werden können. Das Computersystem 700 umfasst einen Bus 702 oder einen anderen Kommunikationsmechanismus zur Übermittlung von Informationen sowie einen oder mehrere Hardware-Prozessoren 704, die mit dem Bus 702 zur Verarbeitung von Informationen verbunden sind. Bei dem/den Hardware-Prozessor(en) 704 kann es sich zum Beispiel um einen oder mehrere Allzweck-Mikroprozessoren handeln.
-
Das Computersystem 700 umfasst auch einen Hauptspeicher 706, z. B. einen Speicher mit wahlfreiem Zugriff (RAM), einen Cache und/oder andere dynamische Speichergeräte, die mit dem Bus 702 verbunden sind, um Informationen und Anweisungen zu speichern, die vom Prozessor 704 ausgeführt werden sollen. Der Hauptspeicher 706 kann auch zum Speichern von temporären Variablen oder anderen Zwischeninformationen während der Ausführung von Befehlen verwendet werden, die vom Prozessor 704 ausgeführt werden sollen. Wenn solche Befehle in Speichermedien gespeichert werden, auf die der Prozessor 704 zugreifen kann, wird das Computersystem 700 zu einer Spezialmaschine, die so angepasst ist, dass sie die in den Befehlen angegebenen Operationen ausführen kann.
-
Das Computersystem 700 umfasst außerdem einen Festwertspeicher (ROM) 708 oder ein anderes statisches Speichergerät, das mit dem Bus 702 verbunden ist, um statische Informationen und Anweisungen für den Prozessor 704 zu speichern. Ein Speichergerät 710, z. B. eine Magnetplatte, eine optische Platte oder ein USB-Stick (Flash-Laufwerk) usw., ist vorgesehen und mit dem Bus 702 verbunden, um Informationen und Anweisungen zu speichern.
-
Das Computersystem 700 kann über den Bus 702 mit einer Anzeige 712, z. B. einer Flüssigkristallanzeige (LCD) (oder einem Berührungsbildschirm), verbunden sein, um einem Computerbenutzer Informationen anzuzeigen. Ein Eingabegerät 714, einschließlich alphanumerischer und anderer Tasten, ist mit dem Bus 702 gekoppelt, um Informationen und Befehlsauswahlen an den Prozessor 704 zu übermitteln. Eine andere Art von Benutzereingabegerät ist die Cursorsteuerung 716, wie z. B. eine Maus, ein Trackball oder Cursorrichtungstasten zur Übermittlung von Richtungsinformationen und Befehlsauswahlen an den Prozessor 704 und zur Steuerung der Cursorbewegung auf dem Display 712. In einigen Ausführungsformen können die gleichen Richtungsinformationen und Befehlsauswahlen wie bei der Cursorsteuerung über den Empfang von Berührungen auf einem Touchscreen ohne Cursor implementiert werden.
-
Das Computersystem 700 kann ein Benutzerschnittstellenmodul zur Implementierung einer grafischen Benutzeroberfläche enthalten, das in einem Massenspeichergerät als ausführbare Softwarecodes gespeichert werden kann, die von dem/den Computergerät(en) ausgeführt werden. Dieses und andere Module können beispielsweise Komponenten wie Softwarekomponenten, objektorientierte Softwarekomponenten, Klassenkomponenten und Aufgabenkomponenten, Prozesse, Funktionen, Attribute, Prozeduren, Unterprogramme, Segmente von Programmcode, Treiber, Firmware, Mikrocode, Schaltkreise, Daten, Datenbanken, Datenstrukturen, Tabellen, Arrays und Variablen umfassen.
-
Im Allgemeinen kann sich der hier verwendete Begriff „Komponente“, „Engine“, „System“, „Datenbank“, „Datenspeicher“ und dergleichen auf eine in Hardware oder Firmware verkörperte Logik oder auf eine Sammlung von Softwareanweisungen beziehen, die möglicherweise Ein- und Ausstiegspunkte haben und in einer Programmiersprache wie z. B. Java, C oder C++ geschrieben sind. Eine Softwarekomponente kann kompiliert und zu einem ausführbaren Programm verknüpft werden, in einer dynamischen Link-Bibliothek installiert werden oder in einer interpretierten Programmiersprache wie BASIC, Perl oder Python geschrieben sein. Es versteht sich von selbst, dass Softwarekomponenten von anderen Komponenten oder von sich selbst aus aufrufbar sein können und/oder als Reaktion auf erkannte Ereignisse oder Unterbrechungen aufgerufen werden können. Softwarekomponenten, die für die Ausführung auf Computergeräten konfiguriert sind, können auf einem computerlesbaren Medium, wie z. B. einer Compact Disc, einer digitalen Videodisc, einem Flash-Laufwerk, einer Magnetplatte oder einem anderen greifbaren Medium, oder als digitaler Download bereitgestellt werden (und können ursprünglich in einem komprimierten oder installierbaren Format gespeichert sein, das vor der Ausführung installiert, dekomprimiert oder entschlüsselt werden muss). Ein solcher Softwarecode kann teilweise oder vollständig in einem Speicher des ausführenden Computergeräts gespeichert werden, damit er von dem Computergerät ausgeführt werden kann. Softwareanweisungen können in Firmware, wie z. B. einem EPROM, eingebettet sein. Darüber hinaus können die Hardwarekomponenten aus verbundenen Logikeinheiten wie Gattern und Flipflops und/oder aus programmierbaren Einheiten wie programmierbaren Gatteranordnungen oder Prozessoren bestehen.
-
Das Computersystem 700 kann die hierin beschriebenen Techniken unter Verwendung von kundenspezifischer festverdrahteter Logik, einem oder mehreren ASICs oder FPGAs, Firmware und/oder Programmlogik implementieren, die in Kombination mit dem Computersystem bewirkt oder programmiert, dass das Computersystem 700 eine Spezialmaschine ist. Gemäß einer Ausführungsform werden die hierin beschriebenen Techniken vom Computersystem 700 als Reaktion auf den/die Prozessor(en) 704 ausgeführt, der/die eine oder mehrere Sequenzen von einem oder mehreren im Hauptspeicher 706 enthaltenen Befehlen ausführt/ausführen. Solche Anweisungen können in den Hauptspeicher 706 von einem anderen Speichermedium, wie z. B. dem Speichergerät 710, eingelesen werden. Die Ausführung der im Hauptspeicher 706 enthaltenen Befehlssequenzen veranlasst den/die Prozessor(en) 704, die hier beschriebenen Prozessschritte auszuführen. In alternativen Ausführungsformen können festverdrahtete Schaltungen anstelle von oder in Kombination mit Softwareanweisungen verwendet werden.
-
Der Begriff „nichtflüchtige Medien“ und ähnliche Begriffe, wie sie hier verwendet werden, beziehen sich auf alle Medien, die Daten und/oder Befehle speichern, die eine Maschine in einer bestimmten Weise arbeiten lassen. Solche nichtflüchtigen Medien können nichtflüchtige Medien und/oder flüchtige Medien umfassen. Zu den nichtflüchtigen Medien gehören beispielsweise optische oder magnetische Festplatten, wie die Speichervorrichtung 710. Zu den flüchtigen Medien gehören dynamische Speicher, wie der Hauptspeicher 706. Zu den gängigen Formen nichtflüchtiger Medien gehören beispielsweise Disketten, flexible Platten, Festplatten, Solid-State-Laufwerke, Magnetbänder oder andere magnetische Datenspeichermedien, CD-ROMs, andere optische Datenspeichermedien, physische Medien mit Lochmustern, RAM, PROM und EPROM, FLASH-EPROM, NVRAM, andere Speicherchips oder -kassetten sowie deren vernetzte Versionen.
-
Nicht-transitorische Medien unterscheiden sich von Übertragungsmedien, können aber in Verbindung mit ihnen verwendet werden. Übertragungsmedien sind an der Übertragung von Informationen zwischen nicht-transitorischen Medien beteiligt. Zu den Übertragungsmedien gehören z. B. Koaxialkabel, Kupfer- und Glasfaserkabel, einschließlich der Drähte, aus denen der Bus 702 besteht. Übertragungsmedien können auch in Form von Schall- oder Lichtwellen auftreten, wie sie bei der Datenkommunikation über Funk und Infrarot erzeugt werden.
-
Das Computersystem 700 umfasst auch eine Kommunikationsschnittstelle 718, die mit dem Bus 702 verbunden ist. Die Kommunikationsschnittstelle 718 stellt eine bidirektionale Datenkommunikationsverbindung zu einem oder mehreren Netzwerkverbindungen her, die mit einem oder mehreren lokalen Netzwerken verbunden sind. Bei der Kommunikationsschnittstelle 718 kann es sich beispielsweise um eine ISDN-Karte (Integrated Services Digital Network), ein Kabelmodem, ein Satellitenmodem oder ein Modem handeln, um eine Datenkommunikationsverbindung zu einer entsprechenden Art von Telefonleitung herzustellen. Als weiteres Beispiel kann die Kommunikationsschnittstelle 718 eine LAN-Karte (Local Area Network) sein, um eine Datenkommunikationsverbindung zu einem kompatiblen LAN (oder einer WAN-Komponente für die Kommunikation mit einem WAN) herzustellen. Es können auch drahtlose Verbindungen implementiert werden. In jeder dieser Implementierungen sendet und empfängt die Kommunikationsschnittstelle 718 elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen, die verschiedene Arten von Informationen darstellen.
-
Eine Netzverbindung ermöglicht in der Regel die Datenkommunikation über ein oder mehrere Netze zu anderen Datengeräten. Eine Netzverbindung kann beispielsweise eine Verbindung über ein lokales Netz zu einem Host-Computer oder zu Datengeräten herstellen, die von einem Internetdienstanbieter (ISP) betrieben werden. Der ISP wiederum bietet Datenkommunikationsdienste über das weltweite Paketdatenkommunikationsnetz an, das heute gemeinhin als „Internet“ bezeichnet wird. Sowohl das lokale Netz als auch das Internet verwenden elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen. Die Signale über die verschiedenen Netze und die Signale auf der Netzverbindung und über die Kommunikationsschnittstelle 718, die die digitalen Daten zum und vom Computersystem 700 übertragen, sind Beispiele für Übertragungsmedien.
-
Das Computersystem 700 kann über das/die Netzwerk(e), die Netzwerkverbindung und die Kommunikationsschnittstelle 718 Nachrichten senden und Daten, einschließlich Programmcode, empfangen. In dem Internet-Beispiel könnte ein Server einen angeforderten Code für ein Anwendungsprogramm über das Internet, den ISP, das lokale Netzwerk und die Kommunikationsschnittstelle 718 übertragen.
-
Der empfangene Code kann vom Prozessor 704 bei seinem Empfang ausgeführt und/oder in der Speichervorrichtung 710 oder einem anderen nichtflüchtigen Speicher zur späteren Ausführung gespeichert werden.
-
Jeder der in den vorangegangenen Abschnitten beschriebenen Prozesse, Methoden und Algorithmen kann in Code-Komponenten verkörpert und vollständig oder teilweise durch diese automatisiert werden, die von einem oder mehreren Computersystemen oder Computerprozessoren mit Computerhardware ausgeführt werden. Das eine oder die mehreren Computersysteme oder Computerprozessoren können auch so betrieben werden, dass sie die Ausführung der entsprechenden Vorgänge in einer „Cloud Computing“-Umgebung oder als „Software as a Service“ (SaaS) unterstützen. Die Prozesse und Algorithmen können teilweise oder vollständig in anwendungsspezifischen Schaltkreisen implementiert sein. Die verschiedenen oben beschriebenen Merkmale und Verfahren können unabhängig voneinander verwendet oder auf verschiedene Weise kombiniert werden. Verschiedene Kombinationen und Unterkombinationen sollen in den Anwendungsbereich dieser Offenbarung fallen, und bestimmte Verfahrens- oder Prozessblöcke können in einigen Implementierungen weggelassen werden. Die hier beschriebenen Methoden und Prozesse sind auch nicht auf eine bestimmte Abfolge beschränkt, und die damit verbundenen Blöcke oder Zustände können in anderen geeigneten Abfolgen, parallel oder auf andere Weise durchgeführt werden. Blöcke oder Zustände können zu den offengelegten Beispielen hinzugefügt oder aus ihnen entfernt werden. Die Ausführung bestimmter Operationen oder Prozesse kann auf Computersysteme oder Computerprozessoren verteilt werden, die sich nicht nur auf einer einzigen Maschine befinden, sondern über eine Reihe von Maschinen verteilt sind.
-
Wie hierin verwendet, kann eine Schaltung in jeder Form von Hardware, Software oder einer Kombination davon implementiert werden. Beispielsweise können ein oder mehrere Prozessoren, Controller, ASICs, PLAs, PALs, CPLDs, FPGAs, logische Komponenten, Software-Routinen oder andere Mechanismen implementiert werden, um eine Schaltung zu bilden. Bei der Implementierung können die verschiedenen hier beschriebenen Schaltungen als diskrete Schaltungen implementiert werden, oder die beschriebenen Funktionen und Merkmale können teilweise oder insgesamt auf eine oder mehrere Schaltungen aufgeteilt werden. Auch wenn verschiedene Merkmale oder Funktionselemente einzeln als separate Schaltungen beschrieben oder beansprucht werden, können diese Merkmale und Funktionen von einer oder mehreren gemeinsamen Schaltungen gemeinsam genutzt werden, und eine solche Beschreibung soll nicht voraussetzen oder implizieren, dass separate Schaltungen erforderlich sind, um diese Merkmale oder Funktionen zu implementieren. Wenn eine Schaltung ganz oder teilweise durch Software implementiert ist, kann diese Software so implementiert werden, dass sie mit einem Computer- oder Verarbeitungssystem arbeitet, das in der Lage ist, die beschriebene Funktionalität auszuführen, wie z. B. das Computersystem 700.
-
Wie hierin verwendet, kann der Begriff „oder“ sowohl im einschließenden als auch im ausschließenden Sinne verstanden werden. Darüber hinaus ist die Beschreibung von Ressourcen, Vorgängen oder Strukturen im Singular nicht so zu verstehen, dass der Plural ausgeschlossen wird. Bedingte Ausdrücke wie z. B. „kann“, „könnte“, „könnte“ oder „kann“, sofern nicht ausdrücklich anders angegeben oder im Kontext anders verstanden, sollen im Allgemeinen zum Ausdruck bringen, dass bestimmte Ausführungsformen bestimmte Merkmale, Elemente und/oder Schritte enthalten, während andere Ausführungsformen diese nicht enthalten.
-
Die in diesem Dokument verwendeten Begriffe und Ausdrücke sowie deren Abwandlungen sind, sofern nicht ausdrücklich anders angegeben, nicht einschränkend, sondern offen zu verstehen. Adjektive wie „konventionell“, „traditionell“, „normal“, „Standard“, „bekannt“ und Begriffe mit ähnlicher Bedeutung sind nicht so zu verstehen, dass sie den beschriebenen Gegenstand auf einen bestimmten Zeitraum oder auf einen zu einem bestimmten Zeitpunkt verfügbaren Gegenstand beschränken, sondern sollten so verstanden werden, dass sie konventionelle, traditionelle, normale oder Standardtechnologien umfassen, die jetzt oder zu einem beliebigen Zeitpunkt in der Zukunft verfügbar oder bekannt sein können. Das Vorhandensein erweiternder Wörter und Formulierungen wie „eine oder mehrere“, „mindestens“, „aber nicht beschränkt auf” oder ähnlicher Formulierungen in einigen Fällen ist nicht so zu verstehen, dass der engere Fall beabsichtigt oder erforderlich ist, wenn solche erweiternden Formulierungen nicht vorhanden sind.
-
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
-
- US 16/163159 [0035]
- IN 201841016309 [0035]