-
HINTERGRUND
-
Die vorliegende Erfindung bezieht sich im Allgemeinen auf die Informationsverarbeitung und insbesondere auf ein Verbessern der Genauigkeit einer Datenstrom-Umsetzungsfunktion für rekurrente neuronale Netzwerke (streaming recurrent neural network (RNN) transducer) für eine durchgängige (end-to-end) Spracherkennung.
-
Für ein durchgängiges Trainieren von RNN-Umsetzungsfunktions-Modellen (RNN transducer model, RNN-T-Modell) sind keine Zuordnungen auf Frame-Ebene zwischen Audio- und Ausgabesymbolen erforderlich. Infolgedessen können entsprechende Knoten in den A-posteriori-Gittern (posterior lattice), die durch die gemeinsamen Netzwerke verschiedener RNN-T-Modelle definiert sind, unterschiedliche Symbole aussenden, was eine Reihe von neuen Problemen bei der Wissensdestillation zwischen RNN-T-Modellen mit sich bringt. Insbesondere sind diese Diskrepanzen in den A-posteriori-Gittern zwischen einem Offline-RNN-T-Modell und einem Datenstrom-RNN-T-Modell ausgeprägt, da das Datenstrom-RNN-T-Modell die Symbole später aussendet als das Offline-RNN-T-Modell.
-
KURZDARSTELLUNG
-
Gemäß Aspekten der vorliegenden Erfindung wird ein auf einem Computer implementiertes Verfahren zum Trainieren von Modellen bereitgestellt. Das Verfahren umfasst Trainieren eines zweiten durchgängigen neuronalen Spracherkennungsmodells, das über eine bidirektionale Codierfunktion (encoder) verfügt, um dieselben Symbole aus einem Ausgabewahrscheinlichkeits-Gitter (output probability lattice) des zweiten durchgängigen neuronalen Spracherkennungsmodells auszugeben wie aus einem Ausgabewahrscheinlichkeits-Gitter eines trainierten ersten durchgängigen neuronalen Spracherkennungsmodells, das über eine unidirektionale Codierfunktion verfügt. Das Verfahren umfasst auch Erstellen eines dritten durchgängigen neuronalen Spracherkennungsmodells, das über eine unidirektionale Codierfunktion verfügt, indem das dritte durchgängige neuronale Spracherkennungsmodell als Schüler in einem Wissensdestillations-Verfahren unter Verwendung des trainierten zweiten durchgängigen neuronalen Spracherkennungsmodells als Lehrer trainiert wird.
-
Gemäß weiteren Aspekten der vorliegenden Erfindung wird ein Computerprogrammprodukt zum Trainieren von Modellen bereitgestellt. Das Computerprogrammprodukt umfasst ein nichtflüchtiges, durch einen Computer lesbares Speichermedium, in dem Programmanweisungen verkörpert sind, wobei die Programmanweisungen durch einen Computer ausführbar sind, um den Computer zu veranlassen, ein Verfahren durchzuführen. Das Verfahren umfasst Trainieren eines zweiten durchgängigen neuronalen Spracherkennungsmodells, das über eine bidirektionale Codierfunktion (encoder) verfügt, um dieselben Symbole aus einem Ausgabewahrscheinlichkeits-Gitter (output probability lattice) des zweiten durchgängigen neuronalen Spracherkennungsmodells auszugeben wie aus einem Ausgabewahrscheinlichkeits-Gitter eines trainierten ersten durchgängigen neuronalen Spracherkennungsmodells, das über eine unidirektionale Codierfunktion verfügt. Das Verfahren umfasst auch Erstellen eines dritten durchgängigen neuronalen Spracherkennungsmodells, das über eine unidirektionale Codierfunktion verfügt, indem das dritte durchgängige neuronale Spracherkennungsmodell als Schüler in einem Wissensdestillations-Verfahren unter Verwendung des trainierten zweiten durchgängigen neuronalen Spracherkennungsmodells als Lehrer trainiert wird.
-
Gemäß noch weiteren Aspekten der vorliegenden Erfindung wird ein Computerverarbeitungssystem zum Trainieren von Modellen bereitgestellt. Das Computerverarbeitungssystem umfasst eine Speichereinheit zum Speichern von Programmcode. Das Computerverarbeitungssystem umfasst ferner einen Hardware-Prozessor, der funktionsmäßig mit der Speichereinheit verbunden ist, um den Programmcode auszuführen, um ein zweites durchgängiges neuronales Spracherkennungsmodell zu trainieren, das über eine bidirektionale Codierfunktion verfügt, um dieselben Symbole aus einem Ausgabewahrscheinlichkeits-Gitter des zweiten durchgängigen neuronalen Spracherkennungsmodells auszugeben wie aus einem Ausgabewahrscheinlichkeits-Gitter eines trainierten ersten durchgängigen neuronalen Spracherkennungsmodells, das über eine unidirektionale Codierfunktion verfügt. Der Hardware-Prozessor führt auch den Programmcode aus, um ein drittes durchgängiges neuronales Spracherkennungsmodell zu erstellen, das über eine unidirektionale Codierfunktion verfügt, indem das dritte durchgängige neuronale Spracherkennungsmodell als Schüler in einem Wissensdestillations-Verfahren unter Verwendung des trainierten zweiten durchgängigen neuronalen Spracherkennungsmodells als Lehrer trainiert wird.
-
Diese und andere Funktionen und Vorteile werden aus der folgenden detaillierten Beschreibung veranschaulichender Ausführungsformen davon ersichtlich, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist.
-
Figurenliste
-
In der folgenden Beschreibung werden Einzelheiten der bevorzugten Ausführungsformen unter Bezugnahme auf die folgenden Figuren bereitgestellt, in denen:
- 1 ein Blockschaltbild zeigt, das eine beispielhafte Datenverarbeitungseinheit gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
- 2 bis 3 ein beispielhaftes Verfahren zum Verbessern der Genauigkeit einer Datenstrom-RNN-Umsetzungsfunktion für eine durchgängige Spracherkennung zeigen, gemäß einer Ausführungsform der vorliegenden Erfindung;
- 4 eine beispielhafte unidirektionale RNN-T-Architektur gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
- 5 eine beispielhafte bidirektionale RNN-T-Architektur gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
- 6 ein Blockschaubild zeigt, das ferner das Ausgabewahrscheinlichkeits-Gitter von 4 und 5 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
- 7 ein Blockschaubild zeigt, das die in einem Block des Verfahrens 200 von 2 enthaltenen Elemente gemäß einer Ausführungsform der vorliegenden Erfindung grafisch darstellt;
- 8 ein Blockschaubild zeigt, das die in einem anderen Block des Verfahrens 200 von 2 enthaltenen Elemente gemäß einer Ausführungsform der vorliegenden Erfindung grafisch darstellt;
- 9 ein Blockschaubild zeigt, das die in noch einem anderen Block des Verfahrens 200 von 2 enthaltenen Elemente gemäß einer Ausführungsform der vorliegenden Erfindung grafisch darstellt;
- 10 ein Blockschaubild zeigt, das ferner die in einem Block von 2 enthaltenen RNN-T-Elemente gemäß einer Ausführungsform der vorliegenden Erfindung grafisch darstellt;
- 11 ein Blockschaubild zeigt, das eine beispielhafte Cloud-Computing-Umgebung mit einem oder mehreren Cloud-Computing-Knoten darstellt, mit denen lokale, von Cloud-Nutzern verwendete Datenverarbeitungseinheiten Daten austauschen, gemäß einer Ausführungsform der vorliegenden Erfindung; und
- 12 ein Blockschaubild zeigt, das einen Satz von funktionalen Abstraktionsschichten darstellt, die von einer Cloud-Computing-Umgebung bereitgestellt werden, gemäß einer Ausführungsform der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ausführungsformen der vorliegenden Erfindung beziehen sich auf ein Verbessern der Genauigkeit einer Datenstrom-Umsetzungsfunktion für rekurrente neuronale Netzwerke (streaming recurrent neural network (RNN) transducer) für eine durchgängige Spracherkennung.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein Verfahren vorgeschlagen, um ein RNN-T-Modell so zu trainieren, dass die Knoten seines A-posteriori-Gitters die gleichen Symbole aussenden wie die entsprechenden Knoten des A-posteriori-Gitters von dem bereits trainierten RNN-T-Modell. Mit diesem Verfahren kann ein Offline-RNN-T-Modell trainiert werden, das als geeigneter Lehrer zum Trainieren eines Schüler-Datenstrom-RNN-T-Modells dienen kann.
-
Es ist zu beachten, dass in den hier dargelegten Ausführungsformen zwar in erster Linie RNN-T-Modelle beschrieben werden, dass aber auch andere Modelle möglich sind, zum Beispiel Transformator-Umsetzungsfunktionen (transformer transducer), RNN-Umsetzungsfunktionen mit zustandslosem Vorhersagenetzwerk und so weiter, ohne auf diese beschränkt zu sein.
-
1 zeigt ein Blockschaltbild, das eine beispielhafte Datenverarbeitungseinheit 100 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Die Datenverarbeitungseinheit 100 ist so konfiguriert, dass sie die Genauigkeit eines Datenstrom-RNN-Umsetzungsfunktions-Modells für eine durchgängige Spracherkennung verbessert.
-
Die Datenverarbeitungseinheit 100 kann als jede Art von Datenverarbeitungs- oder Computereinheit verkörpert werden, die geeignet ist, die hier beschriebenen Funktionen auszuführen, einschließlich, ohne auf diese beschränkt zu sein, ein Computer, ein Server, ein Rack-gestützter Server, ein Blade-Server, eine Workstation, ein Desktop-Computer, ein Laptop-Computer, ein Notebook-Computer, ein Tablet-Computer, eine mobile Datenverarbeitungseinheit, eine tragbare Datenverarbeitungseinheit, eine Netzwerkeinheit, eine Web-Einheit, ein verteiltes Datenverarbeitungssystem, ein prozessorgestütztes System und/oder eine Unterhaltungselektronikeinheit. Zusätzlich oder alternativ kann die Datenverarbeitungseinheit 100 als ein oder mehrere Datenverarbeitungsschlitten, Speicherschlitten oder andere Racks, Schlitten, Datenverarbeitungsgehäuse oder andere Komponenten einer physisch unterteilten Datenverarbeitungseinheit verkörpert werden. Wie in 1 dargestellt, umfasst die Datenverarbeitungseinheit 100 beispielhaft den Prozessor 110, ein Eingabe-/Ausgabe-Teilsystem 120, einen Speicher 130, eine Datenspeichereinheit 140 und ein Datenübertragungs-Teilsystem 150 und/oder andere Komponenten und Einheiten, die üblicherweise in einem Server oder einer ähnlichen Datenverarbeitungseinheit vorhanden sind. Es versteht sich von selbst, dass die Datenverarbeitungseinheit 100 in anderen Ausführungsformen auch andere oder zusätzliche Komponenten umfassen kann, zum Beispiel solche, die üblicherweise in einem Server-Computer vorhanden sind (z.B. verschiedene Eingabe-/Ausgabeeinheiten). Darüber hinaus können in einigen Ausführungsformen eine oder mehrere der beispielhaften Komponenten in eine andere Komponente integriert werden oder auf andere Weise einen Teil dieser Komponente bilden. Zum Beispiel kann der Speicher 130 oder Teile davon in einigen Ausführungsformen in den Prozessor 110 integriert sein.
-
Der Prozessor 110 kann als jede Art von Prozessor verkörpert sein, der die hier beschriebenen Funktionen ausführen kann. Der Prozessor 110 kann als Einzelprozessor, mehrere Prozessoren, Zentraleinheiten) (CPU(s)), Grafikverarbeitungseinheit(en) (GPU(s)), Einzel- oder Mehrkernprozessor(en), digitale(r) Signalprozessor(en), Mikrocontroller oder sonstige(r) Prozessor(en) oder Verarbeitungs-/Steuerungsschaltung(en) verkörpert sein.
-
Der Speicher 130 kann als jede Art von flüchtigem oder nichtflüchtigem Speicher oder Datenspeicher verkörpert sein, der zum Ausführen der hier beschriebenen Funktionen geeignet ist. Im Betrieb kann der Speicher 130 verschiedene Daten und Software speichern, die während des Betriebs der Datenverarbeitungseinheit 100 verwendet werden, zum Beispiel Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Der Speicher 130 ist für den Datenaustausch über das E/A-Teilsystem 120 mit dem Prozessor 110 verbunden, das in Form von Schaltungen und/oder Komponenten verkörpert sein kann, um Eingabe-/Ausgabeoperationen mit dem Prozessor 110, dem Speicher 130 und anderen Komponenten der Datenverarbeitungseinheit 100 zu ermöglichen. Zum Beispiel kann das E/A-Teilsystem 120 in Form von Speichersteuerungs-Hubs, Eingabe-/Ausgabesteuerungs-Hubs, Plattformsteuerungs-Hubs, integrierten Steuerschaltungen, Firmware-Einheiten, Datenübertragungsverbindungen (z.B. Punkt-zu-Punkt-Verbindungen, Busverbindungen, Leitungen, Kabel, Lichtwellenleiter, Leiterbahnen auf einer gedruckten Schaltung usw.) und/oder anderen Komponenten und Teilsystemen verkörpert sein oder diese umfassen, um die Eingabe-/Ausgabeoperationen zu ermöglichen. In einigen Ausführungsformen kann das E/A-Teilsystem 120 einen Teil eines Ein-Chip-Systems (system-on-a-chip, SOC) bilden und zusammen mit dem Prozessor 110, dem Speicher 130 und anderen Komponenten der Datenverarbeitungseinheit 100 auf einem einzigen integrierten Schaltungs-Chip integriert sein.
-
Die Datenspeichereinheit 140 kann als jede Art von Einheit oder Einheiten verkörpert sein, die für die kurz- oder langfristige Speicherung von Daten konfiguriert sind, wie zum Beispiel Speichereinheiten und -schaltungen, Speicherkarten, Festplattenlaufwerke, Halbleiterdatenträger oder andere Datenspeichereinheiten. Die Datenspeichereinheit 140 kann Programmcode für ein oder mehrere Datenstrom-RNN-Umsetzungsfunktions-Modelle (bzw. zum Verbessern der Genauigkeit eines Datenstrom-RNN-Umsetzungsfunktions-Modells) für eine durchgängige Spracherkennung speichern. Das Datenübertragungs-Teilsystem 150 der Datenverarbeitungseinheit 100 kann in Form einer beliebigen Netzwerk-Schnittstellensteuerung oder einer anderen Datenübertragungsschaltung, -einheit oder einer Sammlung davon verkörpert sein, die geeignet ist, Datenübertragungen zwischen der Datenverarbeitungseinheit 100 und anderen entfernt angeordneten Einheiten über ein Netzwerk zu ermöglichen. Das Datenübertragungs-Teilsystem 150 kann so konfiguriert sein, dass es eine oder mehrere Datenübertragungstechnologien (z.B. drahtgebundene oder drahtlose Datenübertragung) und zugehörige Protokolle (z.B. Ethernet, InfiniBand®, Bluetooth®, Wi-Fi®, WiMAX usw.) verwendet, um eine solche Datenübertragung durchzuführen.
-
Wie dargestellt kann die Datenverarbeitungseinheit 100 auch ein oder mehrere periphere Einheiten 160 umfassen. Zu den peripheren Einheiten 160 kann eine beliebige Anzahl von zusätzlichen Eingabe-/Ausgabeeinheiten, Schnittstelleneinheiten und/oder anderen peripheren Einheiten gehören. Zum Beispiel können zu den peripheren Einheiten 160 in einigen Ausführungsformen eine Anzeige, ein Berührungsbildschirm, Grafikschaltungen, eine Tastatur, eine Maus, ein Lautsprechersystem, ein Mikrofon, eine Netzwerkschnittstelle und/oder andere Eingabe-/Ausgabeeinheiten, Schnittstelleneinheiten und/oder periphere Einheiten gehören.
-
Natürlich kann die Datenverarbeitungseinheit 100 auch andere (nicht dargestellte) Elemente umfassen, wie sie von einem Fachmann leicht in Betracht gezogen werden können, und bestimmte Elemente können auch weggelassen werden. Zum Beispiel kann die Datenverarbeitungseinheit 100 verschiedene andere Eingabeeinheiten und/oder Ausgabeeinheiten enthalten, je nach der bestimmten Implementierung desselben, wie ein Fachmann leicht verstehen wird. Zum Beispiel können verschiedene Arten von drahtlosen und/oder drahtgebundenen Eingabeeinheiten und/oder Ausgabeeinheiten verwendet werden. Darüber hinaus können auch zusätzliche Prozessoren, Steuerungen, Speicher usw. in verschiedenen Konfigurationen eingesetzt werden. In einer anderen Ausführungsform kann ferner eine Cloud-Konfiguration verwendet werden (siehe z.B. 11 bis 12). Diese und andere Variationen des Verarbeitungssystems 100 sind für einen Fachmann in Anbetracht der hier bereitgestellten Lehren der vorliegenden Erfindung leicht in Betracht zu ziehen.
-
Der hier verwendete Begriff „Hardware-Prozessor-Teilsystem“ oder „Hardware-Prozessor“ kann sich auf einen Prozessor, einen Speicher (zum Beispiel RAM, Cache(s) usw.), Software (unter anderem Software zur Speicherverwaltung) oder Kombinationen davon beziehen, die zusammenarbeiten, um eine oder mehrere spezifische Aufgaben zu erfüllen. In geeigneten Ausführungsformen kann das Hardware-Prozessor-Teilsystem ein oder mehrere Datenverarbeitungselemente umfassen (z.B. Logikschaltungen, Verarbeitungsschaltungen, Einheiten zur Ausführung von Anweisungen usw.). Das eine oder die mehreren Datenverarbeitungselemente können in einer Zentraleinheit, einer Grafikverarbeitungseinheit und/oder einer separaten auf einem Prozessor oder Rechnerelement beruhenden Steuerung (z.B. Logikgatter usw.) enthalten sein. Das Hardware-Prozessor-Teilsystem kann einen oder mehrere auf der Platine platzierte (On-Board-) Speicher umfassen (z.B. Caches, zweckbestimmte Speicheranordnungen, Nur-Lese-Speicher usw.). In einigen Ausführungsformen kann das Hardware-Prozessor-Teilsystem einen oder mehrere Speicher umfassen, die sich auf der Platine oder außerhalb der Platine befinden können oder die speziell für die Verwendung durch das Hardware-Prozessor-Teilsystem vorgesehen sind (z.B. ROM, RAM, BIOS (basic input/output system, Basis-Eingabe-/Ausgabe-System) usw.).
-
In einigen Ausführungsformen kann das Hardware-Prozessor-Teilsystem ein oder mehrere Softwareelemente umfassen und ausführen. Das eine oder die mehreren Softwareelemente können ein Betriebssystem und/oder eine oder mehrere Anwendungen und/oder spezifischen Code umfassen, um ein bestimmtes Ergebnis zu erzielen.
-
In anderen Ausführungsformen kann das Hardware-Prozessor-Teilsystem zweckbestimmte, spezialisierte Schaltungen umfassen, die eine oder mehrere elektronische Verarbeitungsfunktionen ausführen, um ein bestimmtes Ergebnis zu erzielen. Zu solchen Schaltungen können eine oder mehrere anwendungsspezifische integrierte Schaltungen (application-specific integrated circuits, ASIC), FPGAs (field-programmable gate arrays, vor Ort programmierbare Gatter-Anordnungen) und/oder PLAs (programmable logic arrays, programmierbare Logikanordnungen) gehören.
-
Diese und andere Variationen eines Hardware-Prozessor-Teilsystems werden gemäß Ausführungsformen der vorliegenden Erfindung ebenfalls in Betracht gezogen
-
2 bis 3 zeigen ein beispielhaftes Verfahren 200 zum Verbessern der Genauigkeit einer Datenstrom-RNN-Umsetzungsfunktion für eine durchgängige Spracherkennung, gemäß einer Ausführungsform der vorliegenden Erfindung.
-
In Block 210 wird ein erstes durchgängiges neuronales Spracherkennungsmodell trainiert, das über eine unidirektionale Codierfunktion verfügt. In einer Ausführungsform kann das erste durchgängige neuronale Spracherkennungsmodell als Referenz für ein durchgängiges neuronales Spracherkennungsmodell angesehen werden.
-
In Block 220 wird ein zweites durchgängiges neuronales Spracherkennungsmodell trainiert, das über eine bidirektionale Codierfunktion verfügt, um dieselben Symbole aus einem Ausgabewahrscheinlichkeits-Gitter des zweiten durchgängigen neuronalen Spracherkennungsmodells auszugeben wie aus einem Ausgabewahrscheinlichkeits-Gitter des trainierten ersten durchgängigen neuronalen Spracherkennungsmodells. In einer Ausführungsform kann das Training in Bezug auf einen Verlust für das durchgängige neuronale Spracherkennungsmodell (RNN-T-Verlust) und einen Kreuzentropie-Verlust durchgeführt werden. In einer Ausführungsform wird der Verlust für das durchgängige neuronale Spracherkennungsmodell unter Bezugnahme auf Kennzeichnungen in den Trainingsdaten ermittelt. In einer Ausführungsform wird der Kreuzentropie-Verlust unter Verwendung der ersten besten (1-best) Ausgabesymbole des unidirektionalen Modells berechnet, das in Block 210 trainiert wurde. In einer Ausführungsform kann jeder der Knoten des Ausgabewahrscheinlichkeits-Gitters eine Softmax-Operation darstellen. In einer Ausführungsform weist das zweite durchgängige neuronale Spracherkennungsmodell eine stärkere oder komplexere Konfiguration (z.B. ein tieferes neuronales Netzwerk) auf als das erste durchgängige neuronale Spracherkennungsmodell.
-
In einer Ausführungsform kann der Block 220 einen oder mehrere der Blöcke 220A und 220B enthalten.
-
In Block 220A wird für jeden Knoten des Ausgabewahrscheinlichkeits-Gitters ein erstes bestes Symbol ermittelt. Dies wird erreicht, indem die Trainings-Audiodaten in das erste durchgängige Referenz-Spracherkennungsmodell eingegeben werden und das erste beste Symbol aus jedem Knoten des Ausgabe-A-posteriori-Gitters ausgewählt wird.
-
In Block 220B wird ein Verlust für das durchgängige neuronale Spracherkennungsmodell und auch ein Kreuzentropie-Verlust in Bezug auf die ersten besten Symbole minimiert.
-
In 220C wird der Verlust für das durchgängige neuronale Spracherkennungsmodell und der Kreuzentropie-Verlust minimiert, bis die beiden Verluste hinreichend gering sind, zum Beispiel unterhalb jeweiliger Schwellenwerte.
-
In Block 230 wird ein drittes durchgängiges neuronales Spracherkennungsmodell, das über eine unidirektionale Codierfunktion verfügt, als Schüler in einem Wissensdestillations-Verfahren unter Verwendung des trainierten zweiten durchgängigen neuronalen Spracherkennungsmodells als Lehrer trainiert. In einer Ausführungsform kann das dritte durchgängige neuronale Spracherkennungssystem so lange trainiert werden, bis die Ähnlichkeit zwischen den Ausgabewahrscheinlichkeits-Gittern des dritten und zweiten durchgängigen neuronalen Spracherkennungsmodells innerhalb eines bestimmten Ähnlichkeitsbereichs liegt.
-
In einer Ausführungsform enthält der Block 230 einen oder mehrere der Blöcke 230A, 230B, 230C und 230D.
-
In Block 230A werden Trainings-Audiodaten in das trainierte zweite durchgängige neuronale Spracherkennungsmodell eingegeben, um das entsprechende Ausgabewahrscheinlichkeits-Gitter zu ermitteln.
-
In Block 230B werden weniger wahrscheinliche Knoten des Ausgabewahrscheinlichkeits-Gitters in Bezug auf eine Mindestwahrscheinlichkeits-Schwelle ausgeblendet.
-
In Block 230C wird gemeinsam (i) der Verlust für das durchgängige neuronale Spracherkennungsmodell und (ii) eine relative Divergenz über nicht ausgeblendete Teile des Ausgabewahrscheinlichkeits-Gitters zu einem Ausgabewahrscheinlichkeits-Gitter des dritten durchgängigen Spracherkennungsmodells minimiert. Bei der relativen Divergenz kann es sich um eine Kullback-Leibler-Divergenz oder eine andere Divergenz handeln.
-
In Block 230D wird das Ausgabewahrscheinlichkeits-Gitter des dritten durchgängigen neuronalen Spracherkennungsmodells auf der Grundlage einer Ähnlichkeit mit einem Ausgabewahrscheinlichkeits-Gitter des zweiten durchgängigen Spracherkennungssystems bewertet. Zum Beispiel kann die Ähnlichkeit auf einer KL-Divergenz und/oder Ähnlichem beruhen.
-
In Block 240 wird eine Spracherkennung durchgeführt, indem eine Strahlsuche (beam search) über ein Ausgabewahrscheinlichkeits-Gitter des trainierten dritten durchgängigen neuronalen Spracherkennungsmodells durchgeführt wird.
-
In einer Ausführungsform übertragen das erste und das dritte durchgängige neuronale Spracherkennungsmodell Ausgabedaten von einer RNN-Umsetzungsfunktion in einem Datenstrom, und das zweite durchgängige neuronale Spracherkennungsmodell stellt die Ausgabedaten offline bereit.
-
Das erste durchgängige neuronale Spracherkennungsmodell kann als Referenzmodell angesehen werden. Das zweite durchgängige neuronale Spracherkennungsmodell kann als Lehrermodell angesehen werden. Das dritte durchgängige neuronale Spracherkennungsmodell kann als Schülermodell angesehen werden.
-
Beim ersten, zweiten und dritten durchgängigen neuronalen Spracherkennungsmodell wird jeweils eine RNN-T-Architektur (Recurrent Neural Network Transducer, Umsetzungsfunktion für rekurrente neuronale Netzwerke) verwendet. Bei dem ersten und dritten durchgängigen neuronalen Spracherkennungsmodell handelt es sich um unidirektionale Modelle, bei dem zweiten durchgängigen neuronalen Spracherkennungsmodell handelt es sich um ein bidirektionales Modell. Die Architekturen werden im Folgenden näher beschrieben.
-
4 zeigt eine beispielhafte unidirektionale RNN-T-Architektur 400 gemäß einer Ausführungsform der vorliegenden Erfindung.
-
Die unidirektionale RNN-T-Architektur 400 umfasst ein Vorhersagenetzwerk 410, einen unidirektionalen Codierblock 420, ein gemeinsames Netzwerk 430, einen Softmax-Block 440 und ein Ausgabewahrscheinlichkeits-Gitter 450.
-
Der unidirektionale Codierblock 420 empfängt eine Eingabesequenz von Funktionen x = (x1, ..., xT).
-
Auf der Grundlage einer Suche über ein durch P(y|t,u) definiertes Ausgabewahrscheinlichkeits-Gitter erzeugt die unidirektionale RNN-T-Architektur 400 eine Ausgabesequenz y. In einer Ausführungsform handelt es sich bei y um einen Satz möglicher Symbole, bei t um einen Zeitindex und bei u um einen Verlauf von gesendeten Symbolen.
-
Im Einzelnen empfängt der unidirektionale Codierblock 420 die Eingabesequenz von Funktionen x = (x
1, ..., x
T) und gibt eine Codierung
aus.
-
Das Vorhersagenetzwerk 410 empfängt eine vorherige Vorhersage y
u - 1 und gibt eine Vorhersage
aus.
-
Das gemeinsame Netzwerk 430 empfängt
und gibt z
t,u aus.
-
Der Softmax-Block empfängt zt,u und eine Softmax von zt,u.
-
Das durch P(y|t,u) definierte Ausgabewahrscheinlichkeits-Gitter empfängt die Softmax von zt,u und gibt die Sequenz y = (y1, ..., yu). aus.
-
5 zeigt eine beispielhafte bidirektionale RNN-T-Architektur 500 gemäß einer Ausführungsform der vorliegenden Erfindung.
-
Die RNN-T-Architektur 500 umfasst ein Vorhersagenetzwerk 510, einen bidirektionalen Codierblock 520, ein gemeinsames Netzwerk 530, einen Softmax-Block 540 und ein Ausgabewahrscheinlichkeits-Gitter 550.
-
6 zeigt ein Blockschaubild, das ferner das Ausgabewahrscheinlichkeits-Gitter von 4 und 5 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
-
Das Ausgabewahrscheinlichkeits-Gitter 450/550 kann relativ zu einer x-Achse und einer y-Achse betrachtet werden, so dass x = (x1, ..., xT) und y = (y1, ..., yU).
-
Jeder Knoten in dem Ausgabewahrscheinlichkeits-Gitter 450/550 stellt eine Softmax von zt,u dar.
-
Die Spracherkennung mit der RNN-T-Architektur 400 wird durch eine Strahlsuche über das Ausgabewahrscheinlichkeits-Gitter 450/550 ausgeführt.
-
7 zeigt ein Blockschaubild, das die in Block 210 des Verfahrens 200 von 2 enthaltenen Elemente gemäß einer Ausführungsform der vorliegenden Erfindung grafisch darstellt.
-
Bei den in Block 210 enthaltenen Elementen handelt es sich um eine Trainingsdaten-Datenbank 710 und eine unidirektionale RNN-T 720. Die unidirektionale RNN-T 720 kann so aufgebaut sein, dass sie eine ähnliche Architektur wie die RNN-T-Architektur 300 von 3 aufweist.
-
8 zeigt ein Blockschaubild, das die in Block 220 des Verfahrens 200 von 2 enthaltenen Elemente gemäß einer Ausführungsform der vorliegenden Erfindung grafisch darstellt.
-
Bei den in Block 220 enthaltenen Elementen handelt es sich um die Trainingsdaten-Datenbank 710 und die unidirektionale RNN-T 720 sowie die bidirektionale RNN-T 730. Die bidirektionale RNN-T 720 kann so aufgebaut sein, dass sie eine ähnliche Architektur wie die RNN-T-Architektur 500 von 5 aufweist.
-
Das erste beste Symbol für jeden Knoten des Ausgabewahrscheinlichkeits-Gitters wird von der unidirektionalen RNN-T 720 ausgegeben. Dies wird verwendet, um die bidirektionale RNN-T 730 zu trainieren.
-
9 zeigt ein Blockschaubild, das die in Block 230 des Verfahrens 200 von 2 enthaltenen Elemente gemäß einer Ausführungsform der vorliegenden Erfindung grafisch darstellt.
-
Bei den in Block 230 enthaltenen Elementen handelt es sich um die Trainingsdaten-Datenbank 710, die unidirektionale RNN-T 720, die bidirektionale RNN-T 730 sowie eine andere unidirektionale RNN-T 740. Die unidirektionale RNN-T 740 kann so aufgebaut sein, dass sie eine ähnliche Architektur wie die RNN-T-Architektur 300 von 3 aufweist.
-
Die Ausgabe der trainierten bidirektionalen RNN-T (730) wird verwendet, um die unidirektionale RNN-T (unten) zu trainieren. „A-posteriori“ wird für jeden Knoten des Ausgabegitters von 730 berechnet.
-
10 zeigt ein Blockschaubild, das ferner die in Block 220 von 2 enthaltenen RNN-T-Elemente gemäß einer Ausführungsform der vorliegenden Erfindung grafisch darstellt.
-
Bei den in Block 220 enthaltenen Elementen handelt es sich um die Trainingsdaten-Datenbank 1010, die unidirektionale RNN-T 1020 sowie die bidirektionale RNN-T 1030.
-
Die unidirektionale RNN-T 1020, die als Referenz-RNN-T betrachtet werden kann, umfasst ein unidirektionales Vorhersagenetzwerk 1020A, ein unidirektionales Codiernetzwerk 1020B und ein Ausgabewahrscheinlichkeits-Gitter 1020C.
-
Die bidirektionale RNN-T 1030, die als Lehrer-RNN-T betrachtet werden kann, umfasst ein tiefes Vorhersagenetzwerk 1030A, ein bidirektionales/tiefes Codiernetzwerk 1030B und ein Ausgabewahrscheinlichkeits-Gitter 1030C.
-
Die Referenznummer 1020C bezeichnet das Ausgabegitter des Referenzmodells, während es sich bei 1020D um die aus dem Ausgabegitter 1020C ausgewählten ersten besten Ausgaben handelt. Daher ist auf der rechten Seite von 10 dasselbe Modell 1020 beteiligt, nur im Wesentlichen zu unterschiedlichen Zeitschritten in Bezug auf ein Ermitteln der ersten besten Ausgaben dargestellt.
-
Es ist zu beachten, dass einige der Blöcke der Ausgabewahrscheinlichkeits-Gitter ausgeblendet werden können, auch wenn dies in 10 nicht dargestellt ist. In einer Ausführungsform werden ausgeblendete Blöcke beim Trainieren von Modellen nicht berücksichtigt. Dieses Ausblenden wird beim Trainieren des dritten Netzwerks unter Bezugnahme auf das zweite Netzwerk verwendet.
-
Im Betrieb erhalten die unidirektionale RNN-T 1020 und die bidirektionale RNN-T 1030 Trainingsstichproben aus der Trainingsdaten-Datenbank 1010. Die unidirektionale RNN-T 1020 wählt für jeden Knoten des Ausgabewahrscheinlichkeits-Gitters 1020C die ersten besten Ausgaben aus. Die Kreuzentropie wird zwischen der bidirektionalen RNN-T 1030 und der unidirektionalen RNN-T 1040 minimiert.
-
Es versteht sich, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing umfasst. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
-
Cloud-Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften umfassen, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle.
-
Bei den Eigenschaften handelt es sich um die folgenden:
- On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
- Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
- Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
- Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
- Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Nutzung von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
-
Bei den Dienstmodellen handelt es sich um die folgenden:
- Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende eMail) von verschiedenen Client-Einheiten her zugänglich. Der Benutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
- Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen der Application Hosting Environment.
- Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, das Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
-
Bei den Einsatzmodellen handelt es sich um die folgenden:
- Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
- Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann in den eigenen Räumen oder fremden Räumen stehen.
- Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt, und sie gehört einer Cloud-Dienste verkaufenden Organisation.
- Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
-
Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Herzen von Cloud-Computing liegt eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten aufweist.
-
Unter Bezugnahme auf 11 ist die veranschaulichende Cloud-Computing-Umgebung 1150 abgebildet. Wie gezeigt ist, weist die Cloud-Computing-Umgebung 1150 einen oder mehrere Cloud-Computing-Knoten 1110 auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der elektronische Assistent (PDA, personal digital assistant) oder das Mobiltelefon 1154A, der Desktop-Computer 1154B, der Laptop-Computer 1154C und/oder das Automobil-Computer-System 1154N Daten austauschen können. Die Knoten 1110 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie Private, Community, Public oder Hybrid Clouds gruppiert werden (nicht dargestellt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung 1150, Infrastruktur, Plattformen und/oder Software als Dienst anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es versteht sich, dass die Arten von in 11 gezeigten Datenverarbeitungseinheiten 1154A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 1110 und die Cloud-Computing-Umgebung 1150 über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
-
Unter Bezugnahme auf 12 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 1150 (11) bereitgestellt werden. Es versteht sich, dass die in 12 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie abgebildet ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
-
Eine Hardware- und Software-Schicht 1260 umfasst Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe-Computer 1261; auf der RISC- (Reduced Instruction Set Computer) Architektur beruhende Server 1262; Server 1263; Blade-Server 1264; Speichereinheiten 1265; und Netzwerke sowie Netzwerkkomponenten 1266. In einigen Ausführungsformen umfassen Software-Komponenten eine Netzwerk-Anwendungsserver-Software 1267 und eine Datenbank-Software 1268.
-
Die Virtualisierungsschicht 1270 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 1271; virtueller Speicher 1272; virtuelle Netzwerke 1273, darunter virtuelle private Netzwerke, virtuelle Anwendungen und Betriebssysteme 1274; und virtuelle Clients 1275.
-
In einem Beispiel kann die Verwaltungsschicht 1280 die nachfolgend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 1281 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung 1282 stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen aufweisen. Die Sicherheit stellt die Identitätsüberprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 1283 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 1284 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 1285 stellt die Anordnung vorab und die Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einem SLA bereit.
-
Eine Arbeitslastenschicht 1290 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 1291; Software-Entwicklung und Lebenszyklusverwaltung 1292; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 1293; Datenanalytikverarbeitung 1294; Transaktionsverarbeitung 1295; und Erhöhung der Genauigkeit bei einer RNN-T für durchgängige Spracherkennung 1296.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailstufe der Integration handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. ein Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie SMALLTALK, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder bzw. Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufplan-Darstellungen und/oder der Blockschaubilder bzw. Blockschaltbilder sowie Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder den Blockschaubildern bzw. Blockschaltbildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder bzw. Blockschaltbilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder bzw. Blockschaltbilder festgelegten Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder bzw. Blockschaltbilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaubilder bzw. Blockschaltbilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern bzw. Blockschaltbildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder bzw. Blockschaltbilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern bzw. Blockschaltbildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Ein Verweis in der Spezifikation auf „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ der vorliegenden Erfindung sowie andere Variationen davon bedeutet, dass eine bestimmte, in Verbindung mit der Ausführungsform beschriebene Funktion, Struktur oder Eigenschaft in mindestens einer Ausführungsform der vorliegenden Ausführungsformen enthalten ist. Daher bezieht sich das Auftreten des Ausdrucks „in einer einzelnen Ausführungsform“ oder „in einer Ausführungsform“ und jede andere Variante davon an verschiedenen Stellen in der Spezifikation nicht zwangsläufig auf dieselbe Ausführungsform.
-
Es sei darauf hingewiesen, dass die Verwendung von „/“, „und/oder“ und „mindestens eines von“, zum Beispiel im Fall von „A/B“, „A und/oder B“ bzw. „mindestens eines von A und B“, nur die Auswahl der ersten aufgeführten Option (A) oder nur die Auswahl der zweiten aufgeführten Option (B) oder die Auswahl beider Optionen (A und B) umfassen soll. Als weiteres Beispiel soll diese Formulierung im Fall von „A, B und/oder C“ bzw. „mindestens eines von A, B und C“ nur die Auswahl der ersten aufgeführten Option (A) oder nur die Auswahl der zweiten aufgeführten Option (B) oder nur die Auswahl der dritten aufgeführten Option (C) umfassen, oder nur die Auswahl der ersten und der zweiten aufgeführten Option (A und B), oder nur die Auswahl der ersten und der dritten aufgeführten Option (A und C), oder nur die Auswahl der zweiten und der dritten aufgeführten Option (B und C), oder die Auswahl aller drei Optionen (A und B und C). Dies kann, wie für einen Fachmann dieser und verwandter Techniken leicht ersichtlich ist, auf beliebig viele Punkte ausgedehnt werden.
-
Nach der Beschreibung bevorzugter Ausführungsformen eines Systems und Verfahrens (die zur Veranschaulichung dienen und nicht einschränkend sein sollen) wird darauf hingewiesen, dass Änderungen und Variationen von Fachleuten im Hinblick auf die obigen Lehren vorgenommen werden können. Es sei daher darauf hingewiesen, dass an den jeweiligen offenbarten Ausführungsformen Änderungen vorgenommen werden können, die in den Umfang der Erfindung fallen, wie er in den beigefügten Ansprüchen beschrieben ist. Nachdem somit Aspekte der Erfindung mit den von den Patentgesetzen geforderten Einzelheiten und Besonderheiten beschrieben worden sind, ist das, was beansprucht und durch die Patentschrift geschützt werden soll, in den beigefügten Ansprüchen dargelegt.