-
HINTERGRUND
-
Diese Beschreibung betrifft neuronale Netzarchitekturen und komprimierende neuronale Netze.
-
Neuronale Netze sind Maschinenlernmodelle, die eine oder mehrere Schichten von nichtlinearen Einheiten verwenden, um eine Ausgabe für eine empfangene Eingabe vorauszusagen. Einige neuronale Netze enthalten eine oder mehrere versteckte Schichten zusätzlich zu einer Ausgabeschicht. Die Ausgabe jeder versteckten Schicht wird als Eingabe zur nächsten Schicht im Netz, d. h. zur nächsten versteckten Schicht oder zur Ausgabeschicht, verwendet. Jede Schicht des Netzes erzeugt eine Ausgabe aus einer empfangenen Eingabe gemäß aktuellen Werten einer jeweiligen Gruppe von Parametern. Einige neuronale Netze, z. B. diejenigen, die für zeitserielle Probleme oder ein Sequenz-zu-Sequenz-Lernen konzipiert sind (rekurrente neuronale Netze (RNN)), enthalten rekurrente Schleifen, die einem Speicher in der Form einer versteckten Zustandsvariablen erlauben, innerhalb einer Schicht zwischen Dateneingaben persistent bzw. bestehen zu bleiben. Eine Variation von RNNs, nämlich neuronale Netze mit langem Kurzzeitgedächtnis (LSTM = Long Short-Term Memory), enthalten mehrere Gatter innerhalb jeder Schicht, um die Persistenz von Daten zwischen Dateneingaben zu steuern. Einige neuronale Netze, z. B. diejenigen, die für zeitserielle Probleme oder ein Sequenz-zu-Sequenz-Lernen konzipiert sind, enthalten rekurrente Schleifen, die einem Speicher in der Form einer versteckten Zustandsvariablen erlauben, innerhalb einer Schicht zwischen Dateneingaben persistent bleiben. Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
-
ZUSAMMENFASSUNG
-
Diese Beschreibung beschreibt Technologien, die rekurrente neuronale Netzarchitekturen betreffen. Im Allgemeinen enthält ein rekurrentes neuronales Netz wenigstens eine Schicht mit langem Kurzzeitgedächtnis (LSTM), die komprimiert ist. Die LSTM-Schicht hat wenigstens ein Gatter, das eine komprimierte Parametermatrix hat. Die LSTM-Schicht kann entweder durch Ersetzen von einer oder mehreren der Gatterparametermatrizen in der LSTM-Schicht durch eine Toeplitz-artig strukturierte Matrix oder durch neues Definieren der Gatterparametermatrix durch eine komprimierte Parametermatrix und eine Projektionsmatrix komprimiert werden. Optional kann eine LSTM-Schicht durch Ersetzen von einer der Gatterparametermatrizen in der LSTM-Schicht durch eine Toeplitz-artig strukturierte Matrix komprimiert werden und kann eine andere LSTM-Schicht durch Ersetzen von einer der Gatterparametermatrizen in der anderen LSTM-Schicht durch neues Definieren der Gatterparametermatrix durch eine komprimierte Parametermatrix und eine Projektionsmatrix komprimiert werden.
-
Ein System aus einem oder mehreren Computern, um konfiguiert zu sein, bestimmte Operation und Aktionen durchzuführen, bedeutet, dass das System auf ihnen Software, Firmware, Hardware oder eine Kombination aus diesen installiert hat, die im Betrieb veranlassen, dass das System die Operationen oder Aktionen durchführt. Ein oder mehrere Computerprogramme, um konfiguriert zu sein, bestimmte Operationen oder Aktionen durchzuführen, bedeutet, dass das eine oder die mehreren Computerprogramme Anweisungen enthalten, die dann, wenn sie durch eine Datenverarbeitungsvorrichtung ausgeführt werden, veranlassen, dass die Vorrichtung die Operationen oder Aktionen durchführt.
-
Der in dieser Beschreibung beschriebene Gegenstand kann in bestimmten Ausführungsformen implementiert sein, um einen oder mehrere der folgenden Vorteile zu realisieren. Die Leistungsfähigkeit eines rekurrenten neuronalen Netzes kann dadurch verbessert werden, dass eine komprimierte LSTM-Schicht in dem rekurrenten neuronalen Netz enthalten ist. Insbesondere dadurch, dass die komprimierte LSTM-Schicht in dem rekurrenten neuronalen Netz enthalten ist, ist das rekurrente neuronale Netz konfiguriert, um dazu fähig zu sein, Daten effizienter zu verarbeiten und weniger Datenspeicher zu verwenden. Ein rekurrentes neuronales Netz mit einer komprimierten LSTM-Schicht kann effektiv trainiert werden, um Wortfehlerraten zu erreichen, die mit unverkleinerten, z. B. unkomprimierten, rekurrenten neuronalen Netzen vergleichbar sind.
-
Details einer oder mehrerer Ausführungsformen des Gegenstands dieser Beschreibung sind in den begleitenden Zeichnungen und der nachfolgenden Beschreibung dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen offensichtlich werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt ein beispielhaftes neuronales Netzsystem.
-
2A und 2B zeigen beispielhafte strukturierte Matrizen.
-
3 ist ein Ablaufdiagramm eines beispielhaften Prozesses zum Verarbeiten einer aktuellen Schichteneingabe, um eine nächste Schichtenausgabe zu erzeugen.
-
4 ist ein Ablaufdiagramm eines beispielhaften Prozesses zum Anwenden eines Gatters auf einen Gattereingabevektor, um einen Gatterausgabevektor zu erzeugen.
-
5 ist ein Ablaufdiagramm eines beispielhaften Prozesses zum Trainieren eines rekurrenten neuronalen Netzes, das eine Sättigungs-LSTM-Schicht enthält.
-
Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
-
DETAILLIERTE BESCHREIBUNG
-
1 zeigt ein beispielhaftes neuronales Netzsystem 100. Das neuronale Netzsystem 100 ist ein Beispiel eines Systems, das als Computerprogramme auf einem oder mehreren Computern an einem oder mehreren Orten implementiert ist, in welchen die Systeme, Komponenten und Techniken, die nachfolgend beschrieben sind, implementiert sind.
-
Das neuronale Netzsystem 100 ist ein Maschinenlernsystem, das eine jeweilige Eingabe des neuronalen Netzes bei jedem von mehreren Zeitschritten empfängt und eine jeweilige Ausgabe des neuronalen Netzes bei jedem der Zeitschritte erzeugt. Das bedeutet, dass das neuronale Netzsystem 100 bei jedem der mehreren Zeitschritte eine Eingabe des neuronalen Netzes empfängt und die Eingabe des neuronalen Netzes verarbeitet, um eine Ausgabe des neuronalen Netzes zu erzeugen. Beispielsweise kann das neuronale Netzsystem 100 bei einem gegebenen Zeitschritt eine Eingabe 102 des neuronalen Netzes empfangen und eine Ausgabe 132 des neuronalen Netzes erzeugen.
-
Das neuronale Netzsystem 100 kann die erzeugten Ausgaben des neuronalen Netzes in einem Ausgabedatenspeicher bzw. -depot speichern oder die Ausgaben des neuronalen Netzes zur Verwendung zu irgendeinem anderen sofortigen Zweck zur Verfügung stellen.
-
Das neuronale Netzsystem 100 kann konfiguriert sein, um irgendeine Art von digitaler Dateneingabe zu empfangen und um basierend auf der Eingabe irgendeine Art von Punktwert- oder Klassifikationsausgabe zu erzeugen.
-
Beispielsweise kann, wenn die Eingaben zum neuronalen Netzsystem 100 Bilder oder Eigenschaften sind, die aus Bildern extrahiert worden sind, die durch das neuronale Netzsystem 100 erzeugte Ausgabe für ein gegebenes Bild Punktwerte bzw. Nutzwerte für jede einer Gruppe von Objektkategorien sein, wobei jeder Punktwert eine geschätze Wahrscheinlichkeit darstellt, dass das Bild ein Bild eines Objekts enthält, das zu der Kategorie gehört.
-
Als ein weiteres Beispiel kann, wenn die Eingaben zum neuronalen Netzsystem 100 Internetressourcen (z. B. Webseiten), Dokumente oder Teilbereiche von Dokumenten oder aus Internetressourcen, Dokumenten oder Teilbereichen von Dokumenten extrahierte Eigenschaften sind, die durch das neuronale Netzsystem 100 für eine gegebene Internetressource, ein gegebenes Dokument oder einen gegebenen Teilbereich eines Dokuments erzeugte Ausgabe ein Punktwert für jedes einer Gruppe von Themen sein, wobei jeder Punktwert eine geschätzte Wahrscheinlichkeit darstellt, dass die Internetressource, das Dokument oder der Teilbereich des Dokuments über das Thema ist.
-
Als ein weiteres Beispiel kann, wenn die Eingaben zum neuronalen Netzsystem 100 Eigenschaften einer personalisierten Empfehlung für eine Anwender sind, z. B. Eigenschaften, die den Kontext für die Empfehlung charakterisieren, die durch das neuronale Netzsystem 100 erzeugte Ausgabe ein Punktwert für jedes einer Gruppe von Inhaltselementen sein, wobei jeder Punktwert eine geschätzte Wahrscheinlichkeit darstellt, dass der Anwender positiv darauf reagieren wird, dass ihm das Inhaltselement empfohlen ist. Bei einigen dieser Beispiele ist das neuronale Netzsystem 100 ein Teil eines Verstärkungslernsystems, das Anwendern Inhaltsempfehlungen zur Verfügung stellt.
-
Als ein weiteres Beispiel kann, wenn die Eingabe zum neuronalen Netzsystem 100 Text in einer Sprache ist, die durch das neuronale Netzsystem 100 erzeugte Ausgabe ein Punktwert für jedes einer Gruppe von Stücken von Text in einer anderen Sprache sein, wobei jeder Punktwert eine geschätzte Wahrscheinlichkeit ist, dass das Stück von Text in der anderen Sprache eine geeignete Übersetzung des eigegebenen Textes in die andere Sprache ist.
-
Als ein weiteres Beispiel kann, wenn die Eingabe zum neuronalen Netzsystem 100 eine gesprochene Äußerung ist, die durch das neuronale Netzsystem 100 erzeugte Ausgabe ein Punktwert für jedes einer Gruppe von Stücken von Text sein, wobei der Punktwert eine geschätzte Wahrschinlichkeit darstellt, dass das Stück von Text die korrekte Transkription bzw. Abschrift für die Äußerung ist.
-
Als ein weiteres Beispiel kann, wenn die Eingaben zum neuronalen Netzsystem 100 Bilder sind, die durch das neuronale Netzsystem 100 erzeugte Ausgabe ein Punktwert für jedes einer Gruppe von Stücken von Text sein, wobei der Punktwert eine geschätzte Wahrscheinlichkeit darstellt, dass das Stück von Text Text ist, der im eingegebenen Bild vorhanden ist.
-
Insbesondere enthält das neuronale Netzsystem 100 ein rekurrentes neuronales Netz 110, das wiederum eine komprimierte Schicht mit langem Kurzzeitgedächtnis (LSTM-Schicht) 120 enthält. Das rekurrente neuronale Netz 110 ist konfiguriert, um bei jedem der Zeitschritte die Eingabe des neuronalen Netze zu empfangen und die Eingabe des neuronalen Netzes zu vberarbeiten, um die Ausgabe des neuronalen Netzes bei dem Zeitschritt zu erzeugen.
-
Zusätzlich zu der LSTM-Schicht 120 kann das rekurrente neuronale Netz 110 eine oder mehrere andere Komponenten enthalten, wie z. B. andere komprimierte LSTM-Schichten, herkömmliche LSTM-Schichten, andere rekurrente neuronale Netzschichten, andere nichtrekurrente neuronale Netzschichten, und so weiter.
-
Beispielsweise kann das rekurrente neuronale Netz 100 ein tiefes LSTM-Netz sein, das eine Eingabeschicht, mehrere LSTM-Schichten, mit der komprimierten LSTM-Schicht 120 in einem geordneten Stapel eine über der anderen angeordnet, und eine Ausgabeschicht, die bei jedem Zeitschritt die Schichtenausgabe von der höchsten LSTM-Schicht im Stapel und, optional, anderen LSTM-Schichten im Stapel empfängt und die Schichtenausgabe verarbeitet, um die Ausgabe des neuronalen Netzes 132 bei dem Zeitschritt zu erzeugen, enthält.
-
Die komprimierte LSTM-Schicht 120 ist konfiguriert, um bei jedem der Zeitschritte eine aktuelle Schichteneingabe 122 zu empfangen und die aktuelle Schichteneingabe 122, einen aktuellen Schichtenzustand, und eine aktuelle Schichtenausgabe zu verarbeiten, um eine neue Schichtenausgabe 126 zu erzeugen und den aktuellen Schichtenzustand einem Updaten zu unterziehen, um einen neuen Schichtenzustand 124 zu erzeugen.
-
In Abhängigkeit von der Konfiguration des rekurrenten neuronalen Netzes 110 kann die aktuelle Schichteneingabe 122 die Eingabe des neuronalen Netzes 102 oder eine durch eine andere Komponente des rekurrenten neuronalen Netzes 110 erzeugte Ausgabe sein.
-
Zusätzlich ist für jeden Zeitschritt nach dem ersten Schritt der aktuelle Schichtenzustand der bei dem vorangehenden Zeitschritt erzeugte neue Schichtenzustand und ist die aktuelle Schichtenausgabe die neue Schichtenausgabe aus dem vorangehenden Zeitschritt. Für den ersten Zeitschritt kann der aktuelle Schichtenzustand ein vorbestimmter anfänglicher Schichtenzustand sein und kann die aktuelle Schichtenausgabe eine vorbestimmte anfängliche Schichtenausgabe sein.
-
In Abhängigkeit von der Konfiguration des rekurrenten neuronalen Netzes 110 kann die neue Schichtenausgabe 126 als Eingabe zu einer anderen LSTM-Schicht im rekurrenten neuronalen Netz 110, als Eingabe zu einem anderen Typ von neuronaler Netzkomponente, z. B. zu einer Ausgabeschicht oder einem anderen Typ von neuronaler Netzschicht, zur Verfügung gestellt werden oder kann als die Ausgabe des neuronalen Netzes 132 des rekurrenten neuronalen Netzes 110 zur Verfügung gestellt werden.
-
Insbesondere wendet die komprimierte LSTM-Schicht 120 mehrere Gatter auf die aktuelle Schichteneingabe 122, den aktuellen Schichtenzustand und die aktuelle Schichtenausgabe an, um die neue Schichtenausgabe 126 zu erzeugen und den aktuellen Schichtenzustand einem Updaten zu unterziehen, um den neuen Schichtenzustand 124 zu erzeugen, wobei wenigstens eines der Gatter eine komprimierte Gewichtungsmatrix enthält. Beispielsweise kann wenigstens eine Schicht des Schichtenstapels durch Ersetzen von einer oder mehreren Gatterparametermatrizen in der Schicht durch eine strukturierte Matrix („strukturierte Matrixkompression”) oder durch neues Definieren der Gatterparametermatrizen durch eine komprimierte Parametermatrix und eine Projektionsmatrix („Projektionskompression”) komprimiert werden. Die Gatter können z. B. ein Eingabe-Gatter, ein Vergessen-Gatter, ein Zellenzustands-Gatter oder ein Ausgabe-Gatter sein, sind aber nicht darauf beschränkt. Zusätzlich kann jedes Gatter sowohl eine Zwischenschicht als auch rekurrente Parametermatrizen enthalten.
-
Eine strukturierte Matrix ist eine m×n-Matrix, die in weniger als mn Parametern beschrieben werden kann.
2A stellt Beispiele von strukturierten Matrizen dar. Beispielsweise enthalten strukturierte Matrizen die folgenden allgemeinen Klassen: Toeplitz-Matrizen
200, Vandermonde-Matrizen
202 und Cauchy-Matrizen
204. Insbesondere ist eine Toeplitz-Matrix
200 eine, in welcher die Parameter entlang Diagonalen verbunden sind. Das bedeutet, dass Toeplitz-Matrizen konstante Werte entlang jeder ihrer Diagonalen haben. Wenn dieselbe Eigenschaft für Antidiagonale gilt, werden die Matrizen
200 Hankel-Matrizen genannt. Eine Vandermonde-Matrix
202 ist eine, in welcher Matrixeinträge von der dritten bis zur n-ten Spalte dadurch definiert sind, dass man elementeweise Potenzen von Einträgen in der zweiten Spalte der Matrix nimmt. Gleichermaßen ist eine Cauchy-Matrix
204 eine, die durch zwei Vekltoren (U und V) vollständig definiert sein kann. Jedes Element a
ij der Cauchy-Matrix
204 ist durch
definiert.
-
Die Verwendung von solchen strukturierten Matrizen zum Darstellen von Gattermatrizen in komprimierten LSTM-Schichten kann die Speichererfordernisse für LSTM-Netze reduzieren, weil sie durch weniger als mn Parameter vollständig beschrieben werden können. Zusätzlich können strukturierte Matrizen das Training und die Verarbeitung von LSTM-Netzen beschleunigen, weil sie zulassen, dass Matrixprodukt- und Gradientenberechnungen schneller durchgeführt werden.
-
Die obigen allgemeinen Klassen von strukturierten Matrizen können in eine strukturiert-artige Matrix zu Verwendung in einer komprimierten LSTM-Schicht 120 modifiziert werden. Beispielsweise sind Toeplitz-artige Matrizen Verallgemeinerungen der Toeplitz-Struktur, die Produkte und Inverse von Toeplitz-Matrizen und ihre linearen Kombinationen enthalten. Toeplitz-artige Matrizen können, wie es in 2B gezeigt ist, als eine Summe über Produkte von r zirkulanten und schlefzirkulanten Matrizen parameterisiert werden.
-
Nimmt man wieder Bezug auf 1, wird der Annehmlichkeit halber die Verwendung strukturierter Matrizen in einer komprimierten LSTM-Schicht 120 eines rekurrenten Netzes 110 unter Verwendung von Toeplitz-artigen Matrizen als Beispiel diskutiert werden. Die Komplexität von Toeplitz-artigen Matrizen kann unter Verwendung des Verschiebungsrangs gesteuert werden, d. h. der Anzahl von Produkten, die miteinander summiert werden, wie es in der Summe der zirkulanten und schiefzirkulanten Matrizen in 2B gezeigt ist. Ein niedriger Verschiebungsrang entspricht stark strukturierten Matrizen, wie beispielsweise zirkulanten und Toeplitz-Matrizen und ihren Inversen. Matrizen mit hohem Verschiebungsrang können verwendet werden, um zunehmend unstrukturierte Matrizen zu modellieren. Bei einigen Beispielen kann der Verschiebungsrang verwendet werden, um die Berechnugskomplexität, Speichererfordernisse und eine Modellierungsfähigkeit davon für ein Kompressionsschema zu steuern. Bei einigen Beispielen kann der Verschiebungsrang basierend auf Anwendungserfordernissen abgestimmt werden.
-
Bei einigen Implementierungen wird die Toeplitz-artige Matrizstruktur auf rekurrente und Zwischenschichtparametermatrizen für alle der Gatter in einer bestimmten komprimierten LSTM-Schicht 120 angewendet. Bei einigen Implementierungen wird die Toeplitz-artige Matrizstruktur auf eine Schicht (Schichten) niedrigerer Ordnung in einem Schichtenstapel (z. B. Schichten 1 und 2) angewendet.
-
Bei einem Projektionskompressionsmodell für eine rekurrente neuronale Netzschicht wird eine komprimierte LSTM-Schicht 120 durch Ersetzen einer unkomprimierten rekurrenten Parametermatrix der Größe m×n von einer bestimmten Schicht (z. B. Schicht 1) durch eine komprimierte rekurrente Parametermatrix der Größe m×r und eine Projektionsmatrix r×n erzeugt. Zusätzlich wird eine entsprechende Zwischenschichtparametermatrix, ebenso mit der Größe m×n, von einer LSTM-Schicht einer nächsthöheren Ordnung (z. B. Schich I + 1) durch eine komprimierte Zwischenschichtmatrix der Größe m×r und dieselbe Projektionsmatrix ersetzt. Weiterhin sind die Ränge der komprimierten rekurrenten und Zwischenschichtmatrizen und der Projektionsmatrix niedriger als die Ränge der entsprechenden rekurrenten und Zwischenschichtparametermatrizen. Die Nieder-Rang-Projektionsmatrix wird über die zwei entsprechenden Schichten gemeinsam genutzt. Das Projektionskompressionsmodell kann auf eines oder mehrere unterschiedliche Gatter angewendet werden. Bei einigen Implementierungen wird das Projektionskompressionsmodell auf eine Schicht (Schichten) höherer Ordnung in einem Schichtenstapel (z. B. Schichten 2 – N) angewendet.
-
Bei einigen Implementierungen kann eine Schicht oder eine Gruppe von Schichten durch die Verwendung von strukturierten Matrizen (oder strukturiert-artigen Matrizen) komprimiert werden und eine Schicht oder eine Gruppe von Schichten kann unter Verwendung von Projektionsmatrizen komprimiert werden. Beispielsweie kann eine Schicht oder eine Gruppe von Schichten niedrigerer Ordnung (z. B. Schichten 1 und 2) eines rekurrenten neuronalen Netzes 110 durch Ersetzen von Gatterparametermatrizen durch Toeplitz-artige Matrizen komprimiert werden und eine Schicht oder eine Gruppe von Schichten höherer Ordnung (z. B. Schichten 2 – N) kann unter Verwendung von Projektionsmatrizen komprimiert werden.
-
Bei einigen Implementierungen können die oben beschriebenen Kompressionstechniken in wenigstens einer Reduktion von 75% in Bezug auf Parameter eines neuronalen LSTM-Netzes resultieren. Bei einigen Implementierungen, bei welchen das System ein Spracherkennungsmodell ist, können die oben beschriebenen Kompressionstechniken in wenigstens einer Kompression von 75% des neuronalen LSTM-Netzes resultieren, während eine Wortfehlerrate, die innerhalb von 0,3% einer Wortfehlerrate (WER) einer unkomprimierten Version des Systems ist, beibehalten wird. Bei einigen Beispielen können die oben beschriebenen Techniken in einer Kompression eines neuronalen LSTM-Netzes resultieren, die von 75%–83% mit einer entsprechenden WER von 0,3%–2,3% reicht.
-
Um das rekurrente neuronale Netz 110 zu konfigurieren, um Ausgaben des neuronalen Netzes zu erzeugen, trainiert das neuronale Netzsystem 100 das rekurrente neuronale Netz 110, um trainierte Werte der Parameter des rekurrenten neuronalen Netzes 110 zu bestimmen, einschließlich eines Bestimmens von trainierten Werten der Parameter der Sättigungs-LSTM-Schicht 120. Ein Trainieren des rekurrenten neuronalen Netzes wird unten unter Bezugnahme auf 5 detaillierter beschrieben.
-
3 ist ein Ablaufdiagramm eines beispielhaften Prozesses 300 zum Verarbeiten einer aktuellen Schichteneingabe, um eine nächste Schichtenausgabe zu erzeugen. Der Annehmlichkeit halber wird der Prozess derart beschrieben werden, dass er durch eine Sättigungs-LSTM-Schicht durchgeführt wird, die durch ein System aus einem oder mehreren Computern implementiert ist, die an einem oder mehreren Orten lokalisiert sind. Beispielsweise kann eine Sättigungs-LSTM-Schicht in einem neuronalen Netzsystem, z. B. die komprimierte LSTM-Schicht 120 des neuronalen Netzsystems 100 der 1, geeignet programmiert gemäß dieser Beschreibung, den Prozess 300 durchführen.
-
Die LSTM-Schicht wendet ein Vergessen-Gatter auf einen Gattereingabevektor an, um einen Vergessen-Gatterausgabevektor zu erzeugen (Schritt 302). Ein Anwenden eines Gatters auf einen Gattereingabevektor wird unten unter Bezugnahme auf 4 detaillierter bechrieben werden.
-
Bei einigen Implementierungen erzeugt die LSTM-Schicht den Gattereingabevektor durch Verketten der aktuellen Schichteneingabe und der aktuellen Schichtenausgabe. Bei einigen anderen Implementierungen ist die LSTM-Schicht eine Guckloch-LSTM-Schicht, die den Gattereingabevektor durch Verketten der aktuellen Schichteneingabe, der aktuellen Schichtenausgabe und des aktuellen Schichtenzustands erzeugt.
-
Die LSTM-Schicht wendet ein Eingabe-Gatter auf den Gattereingabevektor an, um einen Eingabe-Gatterausgabevektor zu erzeugen (Schritt 304). Ein Anwenden eines Gatters auf einen Gattereingabevektor wird unten unter Bezugnahme auf 4 detaillierter beschrieben werden. Bei einigen Implementierungen enthält das Eingabe-Gatter eine strukturierte Parametermatrix, z. B. eine Toeplitz-artig strukturierte Parametermatrix. Bei einigen Implementierungen enthält das Eingabe-Gatter eine komprimierte rekurrente oder Zwischenschicht-Matrix und eine entsprechende Projektionsmatrix.
-
Bei einigen Implementierungen verwendet das System anstelle eines Anwendens des Eingabe-Gatters, um den Eingabe-Gatterausgabevektor zu erzeugen, den Vergessen-Gatterausgabevektor als den Eingabe-Gatterausgabevektor. Das bedeutet, dass das Eingabe-Gatter bei einigen Implementierungen dasselbe wie das Vergessen-Gatter ist.
-
Die LSTM-Schicht wendet ein Ausgabe-Gatter auf den Gattereingabevektor an, um einen Ausgabe-Gatterausgabevektor zu erzeugen (Schritt 306). Ein Anwenden eines Gatters auf einen Gattereingabevektor wird unten unter Bezugnahme auf 4 detaillierter beschrieben werden. Bei einigen Implementierungen enthält das Ausgabe-Gatter eine strukturierte Parametermatrix, z. B. eine Toeplitz-artig strukturiere Parametermatrix. Bei einigen Implementierungen enthält das Ausgabe-Gatter eine komprimierte rekurrente oder Zwischenschicht-Matrix und eine eintsprechende Projektionsmatrix.
-
Die LSTM-Schicht erzeugt einen Zwischenzellenzustand-Updatevektor aus der aktuellen Schichteneingabe und der aktuellen Schichtenausgabe (Schritt 308). Insbesondere verarbeitet die LSTM-Schicht die aktuelle Schichteneingabe und die aktuelle Schichtenausgabe unter Verwendung einer neuronalen Netzschicht mit einer Aktivierungsfunktion, die eine Quetschfunktion ist, um den Zwischenzellenzustands-Updatevektor zu erzeugen.
-
Allgemein ist eine Quetschfunktion eine Funktion, die empfangene Eingaben auf einen Bereich von –1 bis 1, ausschließlich, abbildet. Beispielsweise kann die Quetschfunktion die Hyperbeltangensfunktion sein.
-
Die LSTM-Schicht kombiniert den Zwischenzellenzustand-Updatevektor und den Eingabe-Gatterausgabevektor, um einen Endzellenzustand-Updatevektor zu erzeugen (Schritt 310). Insbesondere berechnet die LSTM-Schicht eine punktweise Multiplikation zwischen dem Zwischenzellenzustand-Updatevektor und dem Eingabe-Gatterausgabevektor, um den Endzellenzustand-Updatevektor zu erzeugen.
-
Die LSTM-Schicht kombiniert den aktuellen Zellenzustand und den Vergessen-Gatterausgabevektor, um einen dazwischenliegenden neuen Zellenzustand zu erzeugen (Schritt 312). Insbesondere berechnet die LSTM-Schicht eine punktweise Multipliaktion zwischen dem aktuellen Zellenzustand und dem Vergessen-Ausgabevektor, um den dazwischenliegenden neuen Zellenzustand zu erzeugen. Bei einigen Implementierungen enthält das Vergessen-Gatter eine strukturierte Parametermatrix, z. B. eine Toeplitz-artig strukturierte Parametermatrix. Bei einigen Implementierungen enthält das Vergessen-Gatter eine komprimierte rekurrente oder Zwischenschicht-Matrix und eine entsprechende Projektionsmatrix.
-
Die LSTM-Schicht kombiniert, z. B. summiert, den dazwischenliegenden neuen Zellenzustand und den Endzellen-Updatevektor, um einen schließlichen neuen Zellenzustand zu erzeugen (Schritt 314).
-
Die LSTM-Schicht erzeugt eine neue Schichtenausgabe aus dem schließlichen neuen Zellenzustand (Schritt 316). Um die neue Schichtenausgabe zu erzeugen, wendet die LSTM-Schicht eine Quetschfunktion auf jede Komponente des schließlichen neuen Zellenzustands an, um eine dazwischenliegende neue Schichtenausgabe zu erzeugen.
-
Dann kombiniert die LSTM-Schicht den Ausgabe-Gatterausgabevektor und die dazwischenliegende neue Schichtenausgabe, um die neue Schichtenausgabe zu erzeugen. Insbesondere führt die LSTM-Schicht eine punktweise Multiplikation zwischen dem Ausgabe-Gatterausgabevektor und der dazwischenliegenden neuen Schichtenausgabe durch, um die neue Schichtenausgabe zu erzeugen.
-
Zusätzlich zu einem Verwenden des schließlichen neuen Schichtenzustands behält die LSTM-Schicht beim Erzeugen der neuen Schichtenausgabe den schließlichen neuen Zellenzustand zusammen mit der neuen Schichtenausgabe zur Verwendung bei einem nachfolgenden Zeitschritt bei.
-
4 ist ein Ablaufdiagramm eines beispielhaften Prozesses 400 zum Anwenden eines Gatters auf einen Gattereingabevektor, um einen Gatterausgabevektor zu erzeugen. Der Annehmlichkeit halber wird der Prozess 400 derart beschrieben werden, das er durch einen Sättigungs-LSTM-Schicht durchgeführt wird, die durch ein System aus einem oder mehreren Computern implementiert ist, die an einem oder mehreren Orten lokalisiert sind. Beispielsweise kann eine komprimierte LSTM-Schicht in einem neuronalen Netzsystem, z. B. die LSTM-Schicht 120 des neuronalen Netzsystems 100 der 1, geeignet programmiert gemäß dieser Beschreibung, den Prozess 400 durchführen.
-
Die LSTM-Schicht bestimmt den Gattereingabevektor (Schritt 402).
-
Die LSTM-Schicht erzeugt einen jeweiligen Zwischen-Gatterausgabevektor aus dem Gattereingabevektor gemäß einer Gruppe von Parametern (Schritt 404). Bei einigen Implementierungen führt die LSTM-Schicht eine Matrixmultiplikation zwischen einer Parametermatrix und dem Gattereingabevektor durch und addiert dann einen Vorspasnnungsvektor bzw. Biasvektor zu der Ausgabe der Matrixmultiplikation, um den Zwischen-Gatteraungabevektor zu erzeugen, wobei jedes der Gatter unterschiedliche Parametermatrizen und Biasvektoren hat. Das bedeutet, dass bei Implementierungen, bei welchen die LSTM-Schicht ein eigenes bzw. individuelles Eingabe-Gatter, Vergessen-Gatter und Ausgabe-Gatter hat, jedes dieser Gatter unterschiedliche Parametermatrizen und Biasvektoren von jedem anderen Gatter haben wird.
-
Die LSTM-Schicht wendet eine Gating-Funktion auf jede Komponente des jeweiligen Zwischen-Gatterausgabevektors an, um einen End-Gatterausgabevektor zu erzeugen (Schritt 406).
-
Allgemein ist eine Gating-Funktion eine Funktion, die empfangene Eingaben auf einen Bereich von 0 bis 1, ausschließlich, abbildet. Beispielsweise kann eine Gating-Funktion die Sigmoidfunktion sein.
-
Für wenigstens eines der Gatter der LSTM-Schicht ist jedoch die Parametermatrix, auf die im Schritt 404 Bezug genommen ist, eine komprimierte Parametermatrix. Eine unkomprimierte Parametermatrix wird durch eine komprimierte Parametermatrix ersetzt. Die LSTM-Schicht führt dann eine Matrixmultiplikation zwischen der komprimierten Parametermatrix und dem Gattereingabevektor durch. Beispielsweise kann die komprimierte Matrix eine Parametermatrix in irgendeinem eines Eingabe-Gatters, eines Vergessen-Gatters, eines Zellenzustands oder eines Ausgabe-Gatters ersetzen. Bei einigen Implementierungen werden komprimierte Parametermatrizen auf mehrere Gatter in einer LSTM-Schicht angewendet. Beispielsweise können komprimierte Parametermatrizen auf sowohl ein Eingabe- als auch ein Ausgabe-Gatter angewendet werden. Als ein weiteres Beispiel können komprimierte Parametermatrizen auf ein Eingabe-, ein Ausgabe-Gatter und ein Vergessen-Gatter angewendet werden.
-
Bei einigen Implementierungen ist die komprimierte Parametermatrix eine strukturiert-artige Matrix, z. B. eine Toeplitz-artig strukturierte Matrix. Bei einigen Implementierungen wird eine unkomprimierte Parametermatrix durch eine komprimierte Parametermatrix und eine entsprechende Projektionsmatrix neu defineirt.
-
5 ist ein Ablaufdiagramm eines beispielhaften Prozesses 500 zum Trainieren eines rekurrenten neuronalen Netzes, das eine komprimierte LSTM-Schicht enthält. Der Annehmlichkeit halber wird der Prozess 500 derart beschrieben werden, dass er durch ein System aus einem oder mehreren Computern durchgeführt wird, die an einem oder mehreren Orten lokalisiert sind. Beispielsweise kann ein neuronales Netzsystem, z. B. das neuronale Netzsystem 100 der 1, geeignet programmiert gemäß dieser Beschreibung, den Prozess 500 durchführen.
-
Das System erhält Trainingsdaten zum Trainieren des rekurrenten neuronalen Netzes (Schritt 502). Die Trainingsdaten enthalten mehrere Trainingsbeispielspaare, wobei jedes Trainingsbeispielspaar eine Trainingseingabe des neuronalen Netzes und eine Sollausgabe des neuronalen Netzes für die Trainingseingabe des neuronalen Netzes enthält.
-
Das System trainiert das rekurrente neuronale Netz an den Trainingsdaten, um trainierte Werte der Parameter des rekurrenten neuronalen Netzes aus Anfangswerten der Parameter zu bestimmen, durch Optimieren, d. h. entweder Maximieren oder Minimieren, einer Zielfunktion (Schritt 504). Während des Trainings erlegt das System den Werten der komprimierten Matrix oder Matrizen Beschränkungen auf, so dass sie fortgesetzt die Anforderungen für die komprimierte Matrix erfüllen. Beispielsweise kann das System für Toeplitz-artig strukturierte Matrizen Beschränkungen so auferlegen, dass die Einträge jeder komprimierten Matrix immer Toeplitz-artig sind, oder kann das System für die komprimierten Matrizen des Projektionsmodells eher die Werte der Projektionsmatrix und der komprimierten Parametermatrix einstellen als die Werte der Parametermatrix direkt einstellen.
-
Das System trainiert das rekurrente neuronale Netz durch Oprimieren der Zielfunktion unter Verwendung einer herkömmlichen Maschinenlerntrainingstechnik, z. B. eines stochastischen Gradientenabstiegs mit einer Rückwärtspropagierung durch eine Zeittrainingstechnik. Das bedeutet, dass das System mehrere Iterationen der Trainingstechnik durchführen kann, um die Zielfunktion durch Einstellen der Werte der Parameter des rekurrenten neurionalen Netzes zu optimieren.
-
Ausführungsformen des Gegenstands und der funktionellen Operationen, die in dieser Beschreibung beschrieben sind, können in einer digitalen elektronischen Schaltung, in konkret verkörperter Computersoftware oder -firmware, in Computerhardware, einschließlich der Strukturen, die in dieser Beschreibung offenbart sind, und ihrer strukturellen Äquivalente, oder in Kombinationen von einem oder mehreren von ihnen implementiert sein. Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands können als ein oder mehrere Computerprogramme implementiert sein, d. h. ein oder mehrere Module von Computerprogrammanweisungen, die auf einem konkreten nichtflüchtigen Programmträger zur Ausführung durch eine Datenverarbeitungsvorrichtung codiert sind, oder um den Betrieb von dieser zu steuern. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten ausgebreiteten Signal codiert sein, z. B. einem maschinenerzeugten elektrischen, optischen oder elektromagnetischen Signal, das erzeugt wird, um Information zur Übertragung zu einer geeigneten Empfängervorrichtung zur Ausführung durch eine Datenverarbeitungsvorrichtung zu codieren. Das Computerspeichermedium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Direktzugriffsspeichervorrichtung oder einer Speichervorrichtung für seriellen Zugriff oder eine Kombination aus einer oder mehreren von ihnen sein.
-
Der Ausdruck „Datenverarbeitungsvorrichtung” bezieht sich auf Datenverarbeitungshardware und umfasst alle Arten von Geräten, Vorrichtungen und Maschinen zum Verarbeiten von Daten, die anhand eines Beispiels einen programmierbaren Prozessor, ein Computer oder mehrere Prozessoren oder Computer enthalten. Die Vorrichtung kann auch eine Sonderzweck-Logikschaltung sein oder weiterhin enthalten, wie z. B. eine FPGA (field programmable gate array = im Feld (also vor Ort, beim Kunden) programmierbare (Logik-)Gatter-Anordnung) oder eine ASIC (application-specific integrated circuit = anwendungsspezifische integrierte Schaltung). Die Vorrichtung kann optional, zusätzlich zur Hardware, einen Code enthalten, der eine Ausführungsumgebung für Computerprogramme erzeugt, wie z. B. einen Code, der Prozessorfirmware, einen Protokollstapel, ein Datenmanagementsystem, ein Betriebssystem oder eine Kombination von einem oder mehreren von ihnen bildet.
-
Ein Computerprogramm (auf das auch als Programm, Software, eine Softwareanwendung, ein Modul, ein Softwaremodul, ein Skript oder ein Code Bezug genommen werden kann oder das als solches beschrieben werden kann) kann in irgendeiner Form einer Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprache oder deklarativer oder Prozedursprache, und es kann in irgendeiner Form eingesetzt bzw. genutzt werden, einschließlich als ein alleinstehendes Programm oder als ein Modul, eine Komponente, ein Unterprogramm oder eine andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateiensystem entsprechen. Ein Programm kann in einem Teilbereich einer Datei gespeichert sein, die andere Programme oder Daten hält, z. B. ein oder mehrere Skripts, die in einem Auszeichnungssprachendokument gespeichert sind, in einer einzelnen Datei, die für das in Frage stehende Programm bestimmt ist, oder in mehreren koordinierten Dateien, z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teilbereiche eines Codes speichern. Ein Computerprogramm kann genutzt werden, um auf einem Computer oder auf mehreren Computern, die an einem Ort lokalisiert sind oder über mehrere Orte verteilt sind und durch ein Kommunikationsnetzwerk miteinander verbunden sind, ausgeführt zu werden.
-
Die Prozesse und logischen Abläufe, die in dieser Beschreibung beschrieben sind, können durch einen oder mehrere Computer durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen durch Arbeiten an Eingangsdaten und Erzeugen einer Ausgabe durchzuführen. Die Prozesse und logischen Abläufe können auch durch eine Sonderzweck-Logikschaltung durchgeführt werden und die Vorrichtung kann auch als diese implementiert sein, wie z. B. eine FPGA (field programmable gate array = im Feld (also vor Ort, beim Kunden) programmierbare (Logik-)Gatter-Anordnung) oder eine ASIC (application-specific integrated circuit = anwendungsspezifische integrierte Schaltung).
-
Computer, die für die Ausführung eines enthaltenen Computerprogramms geeignet sind, können, anhand eines Beispiels auf allgemeinen oder Sonderzweck-Mikroprozessoren oder beiden oder irgendeiner anderen Art von zentraler Verarbeitungseinheit basieren. Allgemein wird eine zentrale Verarbeitungseinheit Anweisungen und Daten von einem Nurlesespeicher oder einem Direktzugriffsspeicher oder beiden empfangen. Die wesentlichen Elemente eines Computers sind eine zentrale Verarbeitungseinheit zum Durchführen oder Ausführen von Anweisungen und eine oder mehrere Speichervorrichtungen zum Speichern von Anweisungen und Daten. Allgemein wird ein Computer auch einen oder mehrere Massenspeichervorrichtungen zum Speichern von Anweisungen oder Daten enthalten oder operativ gekoppelt sein, um Daten von diesen zu empfangen oder Daten zu diesen zu transferieren, oder beides, wie z. B. magnetische, magneto-optische Platten oder optische Platten. Jedoch muss ein Computer solche Vorichtungen nicht haben. Darüberhinaus kann ein Computer in einer anderen Vorrichtung eingebettet sein, wie z. B. einem Mobiltelefon, einem persönlichen digitalen Assistenten (PDA), einem mobilen Audio- oder Videoabspielgerät, einer Spielkonsole, einem Empfänger mit globalem Positioniersystems (GPS-Empfänger), einer transportablen Speichervorrichtung, z. B. einem Flash-Laufwerk mit universellen seriellen Bus (USB), um nur einige zu nennen.
-
Computerlesbare Medien, die geeignet zum Speichern von Computerprogrammanweisungen und Daten sind, enthalten alle Formen eines nichtflüchtigen Speichers, Medien- und Speichervorrichtungen, einschließlich, anhand eines Beispiels, Halbleiterspeichervorrichtungen, z. B. EPROM, EEPROM und Flash-Speichervorrichtungen; Magnetplatten, z. B. interne Festplatten oder entfernbare Platten; magneto-optische Platten; und CD-ROM- und DVD-ROM-Platten. Der Prozessor und der Speicher können durch eine Sonderzweck-Logikschaltung ergänzt oder in dieser enthalten sein.
-
Um für eine Interaktion mit einem Anwender zu sorgen, können Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands auf einem Computer mit einer Anzeigevorrichtung, z. B. einer CRT (cathode ray tube = Kathodenstrahlröhre) oder einem LCD-(liquid crystal display = Flüssigkristallanzeige)-Monitor, zum Anzeigen von Information zum Anwender und einer Tastatur und einer Zeigevorrichtung, z. B. einer Maus oder einem Trackball (= Rollkugel), durch welche der Anwender eine Eingabe zum Computer liefern kann, implementiert sein. Andere Arten von Vorrichtungen können ebenso gut verwendet werden, um für eine Interaktion mit einem Anwender zu sorgen; beispielsweise kann eine zum Anwender gelieferte Rückmeldung irgendeine Form von sensorischer Rückmeldung sein, wie z. B. eine visuelle Rückmeldung, eine auditive Rückmeldung oder eine fühlbare Rückmeldung; und eine Eingabe vom Anwender kann in irgendeiner Form empfangen werden, einschließlich einer akustischen, sprachlichen oder fühlbaren Eingabe. Zusätzlich kann ein Computer mit einem Anwender durch Senden von Dokumenten zu und Empfangen von Dokumenten von einer Vorrichtung interagieren, die durch den Anwender verwendet wird; Beispielsweise durch Senden von Webseiten zu einem Web-Browser auf einer Clientvorrichtung eines Anwenders in Reaktion auf Anfragen, die vom Web-Browser empfangen sind.
-
Ausführungsformen des in dieser Beschreibung beschriebenen Gegenstands können in einem Computersystem implementiert sein, das eine Backend-Komponente enthält, wie z. B. als einen Datenserver, oder das eine Middleware-Komponente enthält, wie z. B. einen Anwendungsserver, oder das eine Frontend-Komponente enthält, wie z. B. einen Clientcomputer mit einer in Beziehung stehenden grafischen Anwenderschnittstelle oder einem Web-Browser, wodurch ein Anwender mit einer Implementierung des in dieser Beschreibung beschriebenen Gegenstands interagieren kann, oder irgendeine Kombination von einer oder mehreren von solchen Backend-, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch irgendeine Form oder irgendein Medium einer digitalen Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetzwerk. Beispiele von Kommunikationsnetzwerken enthalten ein Lokales Netz („LAN”), ein Weitverkehrsnetz („WAN”), z. B. das Internet.
-
Das Computersystem kann Clients und Server enthalten. Ein Client und ein Server sind allgemein entfernt voneinander und interagieren typischerweise über ein Kommunikationsnetzwerk. Die Beziehung von Client und Server entsteht mittels Computerprogrammen, die auf den jeweiligen Computern laufen und eine Client-Server-Beziehung zueinander haben.
-
Während diese Beschreibung viele spezifische Implementierungsdetails enthält, sollten diese nicht als Beschränkungen für den Schutzumfang von irgendeiner Erfindung oder von dem, was beansprucht sein kann, ausgelegt werden, sondern vielmehr als Beschreibungen von Merkmalen, die spezifisch für bestimmte Ausführungsformen von bestimmten Erfindungen sein können. Gewisse bzw. bestimmte Merkmale, die in dieser Beschreibung im Zusammenhang mit separaten Ausführungsformen beschrieben sind, können auch in Kombination in einer einzigen Ausführungsform implementiert sein. Gegensätzlich dazu können verschiedene Merkmale, die im Zusammenhang mit einer einzigen Ausführungsform beschrieben sind, auch in mehreren Ausführungsformen separat oder in irgendeiner geeigneten Unterkombination implementiert sein. Darüber hinaus können, obwohl Merkmale oben derart beschrieben sein können, dass sie in bestimmten Kombination wirken und sogar anfänglich als solches beansprucht sind, ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgenommen werden, und die beanspruchte Kombination kann auf eine Unterkombination oder eine Variation einer Unterkombination gerichtet sein.
-
Gleichermaßen sollte, während Operationen in den Zeichnungen in einer bestimmten Reihenfolge gezeigt sind, dies nicht derart verstanden werden, dass es erforderlich ist, dass solche Operationen in der bestimmten Reihenfolge, die gezeigt ist, oder in einer sequentiellen Reihenfolge durchgeführt werden, oder dass alle dargestellten Operationen durchgeführt werden, um erwünschte Ergebnisse zu erreichen. In bestimmten Fällen können Multitasking bzw. ein Mehrprozessbetrieb und eine Parallelverarbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung von verschiedenen Systemmodulen und -komponenten bei den oben beschriebenen Ausführungsformen nicht derart verstanden werden, dass eine solche Trennung bei allen Ausführungsformen erforderlich ist, und es sollte verstanden werden, dass die beschriebenen Programmkomponenten und Systeme allgemein zusammen in einem einzigen Softwareprodukt integriert oder in mehrere Softwareprodukte gepackt werden können.
-
Bstimmte Ausführungsformen des Gegenstands sind beschrieben worden. Andere Ausführungsformen sind innerhalb des Schutzumfangs der folgenden Ansprüche. Beispielsweise können die in den Ansprüchen vorgetragenen Aktionen in einer anderen Reihenfolge durchgeführt werden und noch erwünschte Ergebnisse erreichen. Als ein Beispiel erfordern die in den beigefügten Figuren gezeigten Prozesse nicht notwendigerweise die bestimmte Reihenfolge, die gezeigt ist, oder eine sequentielle Reihenfolge, um erwünschte Ergebnisse zu erreichen. Bei bestimmten Implementierungen können Multitasking und eine Parallelverarbeitung vorteilhaft sein.