-
ALLGEMEINER STAND DER TECHNIK
-
Diese Spezifikation bezieht sich auf Verarbeitungseingaben durch die Schichten von neuronalen Netzwerken, um Ausgaben zu erzeugen.
-
Neuronale Netzwerke sind Maschinenlernmodelle, bei denen eine oder mehrere Schichten von nichtlinearen Einheiten zum Prognostizieren einer Ausgabe für eine empfangene Eingabe verwendet werden. Einige neuronale Netzwerke umfassen zusätzlich zu einer Ausgabeschicht eine oder mehrere verborgene Schichten. Die Ausgabe jeder verborgenen Schicht wird innerhalb des Netzwerks als Eingabe in die nächste Schicht, d. h., in die nächste verborgene Schicht oder Ausgabeschicht, verwendet. Jede Schicht des Netzwerks erzeugt in Übereinstimmung mit aktuellen Werten eines jeweiligen Satzes von Parametern eine Ausgabe von einer empfangenen Eingabe.
-
KURZDARSTELLUNG
-
Im Allgemeinen kann ein innovativer Aspekt des in dieser Spezifikation beschriebenen Gegenstandes in einem neuronalen Netzwerksystem ausgeführt werden, das durch einen oder mehrere Computer implementiert ist, die eine Batch-Normalisierungsschicht zwischen einer ersten neuronalen Netzwerkschicht und einer zweiten neuronalen Netzwerkschicht umfassen, wobei die erste neuronale Netzwerkschicht erste Schichtausgänge mit einer Vielzahl von Komponenten erzeugt, wobei die Batch-Normalisierungsschicht während des Trainings des neuronalen Netzwerksystems auf einem Batch von Trainingsbeispielen konfiguriert ist zum: Empfangen einer jeweiligen ersten Schichtausgabe für jedes Trainingsbeispiel in dem Batch; Berechnen einer Vielzahl von Normalisierungsstatistiken für das Batch aus den Ausgaben der ersten Schicht; Normalisieren jeder Komponente jeder ersten Schichtausgabe unter Verwendung der Normalisierungsstatistik, um eine jeweilige normalisierte Schichtausgabe für jedes Trainingsbeispiel in dem Batch zu erzeugen; Erzeugen einer jeweiligen Batch-Normalisierungsschicht-Ausgabe für jedes der Trainingsbeispiele aus den normalisierten Schichtausgaben; und Bereitstellen der Batch-Normalisierungsschicht als Eingabe für die zweite neuronale Netzwerkschicht.
-
Ein zur Ausführung bestimmter Operationen oder Aktionen konfiguriertes System aus einem oder mehreren Computern bedeutet, dass dieses mithilfe von im System installierter und ausgeführter Software, Firmware, Hardware oder einer Kombination hiervon Operationen und Aktionen durchführt. Ein oder mehrere zur Ausführung bestimmter Operationen oder Aktionen konfigurierte Computerprogramme bedeutet, dass dieses eine oder die mehreren Programme Anweisungen beinhalten, die bei Ausführung durch die Datenverarbeitungsvorrichtung bewirken, dass die Vorrichtung die Operationen oder Aktionen durchführt.
-
Bestimmte Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können so implementiert werden, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Ein neuronales Netzwerksystem, das eine oder mehrere Batch-Normalisierungsschichten umfasst, kann schneller trainiert werden als ein ansonsten identisches neuronales Netzwerk, das keine Batch-Normalisierungsschichten enthält. Zum Beispiel können durch die Einbeziehung einer oder mehrerer Batch-Normalisierungsschichten in das neuronale Netzwerksystem Probleme, die durch die Verteilung der Eingaben einer gegebenen Schicht während des Trainings verursacht werden, gemildert werden. Dies kann dazu führen, dass höhere Lernraten während des Trainings effektiv genutzt werden und die Auswirkungen der Initialisierung der Parameter auf den Trainingsprozess verringern können. Zusätzlich können während des Trainings die Batch-Normalisierungsschichten als ein Regulator verwendet werden und können die Notwendigkeit für andere Regularisierungstechniken, z.B. Dropout, während des Trainings verwenden, verringern. Einmal trainiert, kann das neuronale Netzwerksystem, das eine Normalisierungsschicht enthält, neuronale Netzwerkausgaben erzeugen, die genauso genau, wenn nicht genauer sind als die neuronalen Netzwerkausgaben, die durch das ansonsten identische neuronale Netzwerksystem erzeugt werden.
-
Die Details einer oder mehrerer Ausführungsformen des Gegenstands dieser Spezifikation sind in den begleitenden Zeichnungen und der nachstehenden Beschreibung veranschaulicht. Weitere Merkmale, Aspekte und Vorteile des Gegenstands werden anhand der Beschreibung, der Zeichnungen und der Patentansprüche ersichtlich.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt ein Beispiel eines neuronalen Netzwerksystems.
-
2 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Verarbeiten einer Eingabe unter Verwendung einer Batch-Normalisierungsschicht während des Trainings des neuronalen Netzwerksystems.
-
3 ist ein Flussdiagramm eines beispielhaften Verfahrens zum Verarbeiten einer Eingabe unter Verwendung einer Batch-Normalisierung, nachdem das neuronale Netzwerksystem trainiert worden ist.
-
In den unterschiedlichen Zeichnungen werden gleiche Bezugszeichen und Bezeichnungen für gleiche Elemente verwendet.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Diese Spezifikation beschreibt ein neuronales Netzwerksystem, das als Computerprogramme auf einem oder mehreren Computern an einer oder mehreren Stellen implementiert ist, die eine Batch-Normalisierungsschicht enthalten.
-
1 zeigt ein Beispiel eines neuronalen Netzwerksystems 100. Das neuronale Netzwerksystem 100 ist ein Beispiel für ein System, das in Form von Computerprogrammen auf einem oder mehreren Computern an einem oder mehreren Standorten implementiert ist, in denen die nachfolgend beschriebenen Systeme, Komponenten und Techniken implementiert sind.
-
Das neuronale Netzwerksystem 100 beinhaltet mehrere neuronale Netzwerkschichten, die in einer Sequenz von einer untersten Schicht in der Sequenz zu einer höchsten Schicht in der Sequenz angeordnet sind. Das neuronale Netzwerksystem erzeugt neuronale Netzwerkausgänge von neuronalen Netzeingängen durch Verarbeiten der neuronalen Netzwerkeingaben durch jede der Schichten in der Sequenz.
-
Das neuronale Netzwerksystem 100 kann so konfiguriert werden, dass es jede Art von digitaler Dateneingabe empfängt und jede Art von Punktzahl oder Klassifikationsausgabe basierend auf der Eingabe erzeugt.
-
Sind beispielsweise Eingaben in das neuronale Netzwerksystem 100 Bilder oder aus Bildern extrahierte Merkmale, kann die durch das neuronale Netzwerksystem 100 für ein gegebenes Bild erzeugte Ausgabe jeweils eine Punktzahl für jede einer Gruppe von Objektkategorien sein, wobei jede Punktzahl eine geschätzte Wahrscheinlichkeit darstellt, dass das Bild ein Bild eines zu der Kategorie gehörenden Objektes enthält.
-
Ein weiteres Beispiel: Sind Eingaben in das neuronale Netzwerksystem 100 Internet-Ressourcen (z. B. Webseiten), Dokumente oder Teile von Dokumenten oder aus Internet-Ressourcen, Dokumenten oder Teile von aus Dokumenten extrahierte Merkmale, kann die durch das neuronale Netzwerksystem 100 erzeugte Ausgabe für eine gegebene Internet-Ressource, ein Dokument oder einen Teil eines Dokuments eine Punktzahl für jede einer Gruppe von Themen sein, wobei jede Punktzahl eine geschätzte Wahrscheinlichkeit darstellt, mit der die Internet-Ressource, das Dokument oder der Dokumentenabschnitt von dem Thema handelt.
-
Als weiteres Beispiel, wenn die Eingaben in das neuronale Netzwerksystem 100 Merkmale eines Impressionskontexts für eine bestimmte Werbung sind, kann die von dem neuronalen Netzwerksystem 100 erzeugte Ausgabe eine Punktzahl sein, die eine geschätzte Wahrscheinlichkeit darstellt, dass die jeweilige Anzeige angeklickt wird.
-
Als ein anderes Beispiel: Sind die Eingaben in das neuronale Netzwerksystem 100 Merkmale einer personalisierten Empfehlung für einen Benutzer, z. B. Merkmale, die den Kontext für die Empfehlung charakterisieren, z. B. Merkmale, die vom Benutzer ergriffene vorherige Handlungen kennzeichnen, kann die von dem neuronalen Netzwerksystem 100 erzeugte Ausgabe eine Punktzahl für jeden Satz von Inhaltselementen sein, wobei jede Punktzahl eine geschätzte Wahrscheinlichkeit darstellt, mit der der Benutzer positiv auf den Empfang der Empfehlung des Inhaltselementes reagiert.
-
Als noch ein weiteres Beispiel: Ist die Eingabe in das neuronale Netzwerksystem 100 Text in einer Sprache, kann die von dem neuronalen Netzwerksystem 100 erzeugte Ausgabe eine Punktzahl für jeden eines Satzes von in eine andere Sprache übersetzten Textteilen sein, wobei jede Punktzahl eine geschätzte Wahrscheinlichkeit darstellt, mit der angegeben wird, in wieweit der eingegebene Textteil in einer Sprache eine korrekte Übersetzung des Textes in eine andere Sprache ist.
-
Als wieder ein anderes Beispiel: Enthält die Eingabe in das neuronale Netzwerksystem 100 Merkmale einer gesprochenen Äußerung, eine Folge von gesprochenen Äußerungen oder von einem oder den zwei abgeleiteten Merkmalen kann die von dem neuronalen Netzwerksystem 100 erzeugte Ausgabe eine Punktzahl für jeden eines Satzes von Textteilen sein, wobei jede Punktzahl eine geschätzte Wahrscheinlichkeit darstellt, mit der der Textteil die richtige Transkription für die Äußerung oder die Folge von Äußerungen darstellt.
-
Als weiteres Beispiel kann das neuronale Netzwerksystem 100 Teil eines Autovervollständigungssystems oder eines Teils eines Textverarbeitungssystems sein.
-
Als weiteres Beispiel kann das neuronale Netzwerksystem 100 Teil eines Verstärkungslernsystems sein und kann Ausgaben erzeugen, die zum Auswählen von Aktionen verwendet werden, die von einem Agenten durchgeführt werden, der mit einer Umgebung zusammenwirkt.
-
Insbesondere ist jede der Schichten des neuronalen Netzes so konfiguriert, dass sie eine Eingabe empfängt und eine Ausgabe von der Eingabe erzeugt und die neuronalen Netzwerkschichten kollektiv neuronale Netzwerkeingaben verarbeiten, die von dem neuronalen Netzwerksystem 100 empfangen werden, um jeweils eine jeweilige neuronale Netzwerkausgabe für jede empfangene neuronale Netzwerkeingabe zu erzeugen. Einige oder alle der neuronalen Netzwerkschichten in der Sequenz erzeugen Ausgänge von Eingaben in Übereinstimmung mit aktuellen Werten eines Satzes von Parametern für die neuronale Netzwerkschicht. Zum Beispiel können einige Schichten die empfangene Eingabe durch eine Matrix von aktuellen Parameterwerten als Teil des Erzeugens einer Ausgabe von der empfangenen Eingabe multiplizieren.
-
Das neuronale Netzwerksystem 100 beinhaltet auch eine Batch-Normalisierungsschicht 108 zwischen einer neuronalen Netzwerkschicht A 104 und einer neuronalen Netzwerkschicht B 112 in der Sequenz von neuronalen Netzwerkschichten. Die Batch-Normalisierungsschicht 108 ist so konfiguriert, dass sie einen Satz von Operationen an Eingaben ausführt, die von der neuronalen Netzwerkschicht A 104 während des Trainings des neuronalen Netzwerksystems 100 empfangen werden, und einen weiteren Satz von Operationen an Eingaben, die von der neuronalen Netzwerkschicht A 104 empfangen werden, nachdem das neuronale Netzwerksystem 100 trainiert wurde.
-
Insbesondere kann das neuronale Netzwerksystem 100 auf mehreren Batches von Trainingsbeispielen trainiert werden, um trainierte Werte der Parameter der neuronalen Netzwerkschichten zu bestimmen. Eine Reihe von Trainingsbeispielen ist ein Satz von mehreren Trainingsbeispielen. Zum Beispiel kann während des Trainings das neuronale Netzwerksystem 100 ein Batch von Trainingsbeispielen 102 verarbeiten und eine jeweilige neuronale Netzwerkausgabe für jedes Trainingsbeispiel in Batch 102 erzeugen. Die neuronalen Netzwerkausgänge können dann verwendet werden, um die Werte der Parameter der neuronalen Netzwerkschichten in der Sequenz einzustellen, z. B. durch herkömmliche Gradientenabstoß- und Backpropagation-Neuronalnetz-Trainingstechniken.
-
Während des Trainings des neuronalen Netzwerksystems 100 auf einem gegebenen Batch von Trainingsbeispielen ist die Batch-Normalisierungsschicht 108 so konfiguriert, dass sie die von der neuronalen Netzwerkschicht A 104 erzeugten Schicht A-Ausgaben 106 für die Trainingsbeispiele im Batch empfängt, die Ausgänge 106 der Schicht A verarbeitet, um eine jeweilige Batch-Normalisierungsschicht-Ausgabe 110 für jedes Trainingsbeispiel in dem Batch zu erzeugen und dann die Batch-Normalisierungsschicht-Ausgaben 110 als eine Eingabe für die neuronale Netzwerkschicht B 112 bereitzustellen. Die Ausgänge 106 der Schicht A umfassen jeweils eine von der neuronalen Netzwerkschicht A 104 erzeugte Ausgabe für jedes Trainingsbeispiel in dem Batch. Ähnlich enthalten die Batch-Normalisierungsschicht-Ausgaben 110 eine jeweilige Ausgabe, die von der Batch-Normalisierungsschicht 108 für jedes Trainingsbeispiel in dem Batch erzeugt wird.
-
Im Allgemeinen berechnet die Batch-Normalisierungsschicht 108 einen Satz von Normalisierungsstatistiken für den Batch aus den Schicht A-Ausgaben 106, normalisiert die Schicht A-Ausgaben 106, um eine jeweilige normalisierte Ausgabe für jedes Trainingsbeispiel in dem Batch zu erzeugen und formt gegebenfalls jede der normalisierten Ausgaben um, bevor die Ausgaben als Eingabe an die neuronale Netzwerkschicht B 112 bereitgestellt werden.
-
Die durch die Batch-Normalisierungsschicht 108 berechnete Normalisierungsstatistik und die Art und Weise, in der die Batch-Normalisierungsschicht 108 die Schicht A-Ausgaben 106 während des Trainings normalisiert, hängt von der Art der neuronalen Netzwerkschicht A 104 ab, die die Schicht A-Ausgaben 106 erzeugt.
-
In einigen Fällen ist die neuronale Netzwerkschicht A 104 eine Schicht, die eine Ausgabe erzeugt, die mehrere Komponenten enthält, die durch Dimension indiziert sind. Beispielsweise kann die neuronale Netzwerkschicht A 104 eine vollständig verbundene neuronale Netzwerkschicht sein. In einigen anderen Fällen ist jedoch die neuronale Netzwerkschicht A 104 eine Faltungsschicht oder eine andere Art von neuronaler Netzwerkschicht, die eine Ausgabe erzeugt, die mehrere Komponenten beinhaltet, die jeweils durch einen Merkmalsindex und einen räumlichen Standortindex indiziert sind. Das Erzeugen der Batch-Normalisierungsschichtausgabe während des Trainings des neuronalen Netzwerksystems 100 in jedem dieser beiden Fälle wird nachfolgend bezugnehmend auf 2 näher beschrieben.
-
Sobald das neuronale Netzwerksystem 100 trainiert worden ist, kann das neuronale Netzwerksystem 100 eine neue neuronale Netzwerkeingabe empfangen, um die neuronale Netzwerkeingabe durch die neuronalen Netzwerkschichten zu verarbeiten, um eine neue neuronale Netzwerkausgabe für die Eingabe entsprechend den trainierten Werten der Parameter der Komponenten des neuronalen Netzwerksystems 100 zu erzeugen. Die Operationen, die durch die Batch-Normalisierungsschicht 108 während der Verarbeitung der neuen neuronalen Netzwerkeingabe durchgeführt werden, hängen auch von der Art der neuronalen Netzwerkschicht A 104 ab. Die Verarbeitung einer neuen neuronalen Netzwerkeingabe, nachdem das neuronale Netzwerksystem 100 trainiert worden ist, wird nachfolgend unter Bezugnahme auf 3 näher beschrieben.
-
Die Batch-Normalisierungsschicht 108 kann an verschiedenen Stellen in der Sequenz von neuronalen Netzwerkschichten beinhaltet sein und in einigen Ausführungen können mehrere Batch-Normalisierungsschichten in der Sequenz beinhalten sein.
-
Wie in 1 gezeigt, erzeugt die neuronale Netzwerkschicht A 104 in einigen Ausführungen Ausgaben durch Modifizieren von Eingaben an die Schicht in Übereinstimmung mit den gegenwärtigen Werten eines Satzes von Parametern für die erste neuronale Netzwerkschicht, z. B. durch Multiplizieren der Eingabe an die Schicht durch eine Matrix der aktuellen Parameterwerte. Bei diesen Ausführungen kann die neuronale Netzwerkschicht B 112 eine Ausgabe von der Batch-Normalisierungsschicht 108 empfangen und eine Ausgabe erzeugen, indem eine nichtlineare Operation, d. h. eine nichtlineare Aktivierungsfunktion, an die Batch-Normalisierungsschicht ausgegeben wird. Somit wird bei diesen Ausführungen die Batch-Normalisierungsschicht 108 in eine herkömmliche neuronale Netzwerkschicht eingeführt und die Operationen der herkömmlichen neuronalen Netzwerkschicht werden zwischen der neuronalen Netzwerkschicht A 104 und der neuronalen Netzwerkschicht B 112 aufgeteilt.
-
In einigen anderen Ausführungen erzeugt die neuronale Netzwerkschicht A 104 die Ausgaben durch Modifizieren von Schichteingaben in Übereinstimmung mit aktuellen Werten eines Satzes von Parametern, um eine modifizierte erste Schicht-Eingabe zu erzeugen und dann eine nichtlineare Operation an die modifizierten ersten Schichteingaben vor dem Bereitstellen der Ausgabe an die Batch-Normalisierungsschicht 108 anzuwenden. Somit wird bei diesen Ausführungen die Batch-Normalisierungsschicht 108 nach einer herkömmlichen neuronalen Netzwerkschicht in der Sequenz eingefügt.
-
2 ist ein Flussdiagramm eines beispielhaften Verfahrens 200 zum Erzeugen einer Batch-Normalisierungsschichtausgabe während des Trainings eines neuronalen Netzwerks auf einem Batchs von Trainingsbeispielen. Der Einfachheit halber wird der Prozess 200 als etwas beschrieben, dass durch ein System von einem oder mehreren Computern ausgeführt wird, die sich an einem oder mehreren Standorten befinden. Beispielsweise kann eine Batch-Normalisierungsschicht, die in einem neuronalen Netzwerksystem beinhaltet ist, z. B. die Batch-Normalisierungsschicht 108, die in dem neuronalen Netzwerksystem 100 von 1 beinhaltet ist, geeignet programmiert, das Verfahren 200 durchführen.
-
Die Batch-Normalisierungsschicht empfängt Unterschicht-Ausgaben für das Batch von Trainingsbeispielen (Schritt 202). Die Unterschicht-Ausgaben beinhalten jeweils eine Ausgabe, die für jedes Trainingsbeispiel in dem Batch erzeugt wird, durch die Schicht unterhalb der Batch-Normalisierungsschicht in der Sequenz von neuronalen Netzwerkschichten.
-
Die Batch-Normalisierungsschicht erzeugt für jedes Trainingsbeispiel in dem Batch jeweils eine normalisierte Ausgabe (Schritt 204). Das heißt, die Batch-Normalisierungsschicht erzeugt jeweils eine normalisierte Ausgabe von jeder empfangenen Unterschicht-Ausgabe.
-
In einigen Fällen ist die Schicht unterhalb der Batch-Normalisierungsschicht eine Schicht, die eine Ausgabe erzeugt, die mehrere Komponenten umfasst, die durch Dimension indiziert sind.
-
In diesen Fällen berechnet die Batch-Normalisierungsschicht für jede Dimension den Mittelwert und die Standardabweichung der Komponenten der Unterschicht-Ausgaben, die der Dimension entsprechen. Die Batch-Normalisierungsschicht normalisiert dann jede Komponente jeder der Unterschicht-Ausgaben unter Verwendung der Mittelwerte und Standardabweichungen, um jeweils eine normalisierte Ausgabe für jedes der Trainingsbeispiele in dem Batch zu erzeugen. Insbesondere normalisiert die Batch-Normalisierungsschicht für eine gegebene Komponente einer gegebenen Ausgabe die Komponente unter Verwendung des Mittelwerts und der Standardabweichung, die für die dem Bauteil entsprechende Dimension berechnet wird. Beispielsweise erfüllt in einigen Ausführungen die normalisierte Ausgabe x ˆ
k,i für eine Komponente x
k,i entsprechend der k-ten Dimension der i-ten Unterschicht-Ausgabe eines Batchs β:
wobei μ
B der Mittelwert der Komponenten entsprechend der k-ten Dimension der Unterschicht-Ausgaben in Batch β und σ
B die Standardabweichung der Komponenten entsprechend der k-ten Dimension der Unterschicht-Ausgaben in Batch β sind. In einigen Ausführungen ist die Standardabweichung eine numerisch stabile Standardabweichung, die gleich (σ
B 2 + ε)
1/2 ist, wobei ε ein konstanter Wert ist und σ
B 2 die Abweichung der
-
Komponenten entsprechend der k-ten Dimension der Unterschicht-Ausgaben in Batch β sind.
-
In einigen anderen Fällen ist jedoch die neuronale Netzwerkschicht unterhalb der Batch-Normalisierungsschicht eine Faltungsschicht oder eine andere Art von neuronaler Netzwerkschicht, die eine Ausgabe erzeugt, die mehrere Komponenten beinhaltet, die jeweils durch einen Merkmalsindex und einen räumlichen Standortindex indiziert sind.
-
In einigen dieser Fälle berechnet die Batch-Normalisierungsschicht für jede mögliche Merkmalsindex- und räumliche Ortsindexkombination den Mittelwert und die Abweichung der Komponenten der Unterschicht-Ausgaben, die diesen Merkmalsindex und den räumlichen Standortindex aufweisen. Die Batch-Normalisierungsschicht berechnet dann für jeden Merkmalsindex den Mittelwert der Mittelwerte für den Merkmalsindex und die räumlichen Standortindexkombinationen, die den Merkmalsindex beinhalten. Die Batch-Normalisierungsschicht berechnet auch für jeden Merkmalsindex den Mittelwert der Abweichungen für den Merkmalsindex und die räumlichen Standortindexkombinationen, die den Merkmalsindex beinhalten. Somit hat die Batch-Normalisierungsschicht nach der Berechnung der Mittelwerte eine mittlere Statistik für jedes Merkmal über alle räumlichen Orte und eine Abweichungstatistik für jedes Merkmal über alle räumlichen Orte berechnet.
-
Die Batch-Normalisierungsschicht normalisiert dann jede Komponente jede der Unterschicht-Ausgaben unter Verwendung der durchschnittlichen Mittelwerte und der durchschnittlichen Abweichungen, um eine jeweilige normalisierte Ausgabe für jedes der Trainingsbeispiele in der Charge zu erzeugen. Insbesondere normalisiert die Batch-Normalisierungsschicht für eine gegebene Komponente einer gegebenen Ausgabe die Komponente unter Verwendung des mittleren Mittelwerts und der durchschnittlichen Abweichung für den Merkmalsindex, die der Komponente entspricht, z. B. in der gleichen Weise wie oben beschrieben, wenn die Schicht unterhalb der Batch-Normalisierungsschicht Ausgaben erzeugt, die durch Dimension indiziert sind.
-
In anderen dieser Fälle berechnet die Batch-Normalisierungsschicht für jeden Merkmalsindex den Mittelwert und die Abweichung der Komponenten der Unterschicht-Ausgaben, die dem Merkmalsindex entsprechen, d.h. die den Merkmalsindex aufweisen.
-
Die Batch-Normalisierungsschicht normalisiert dann jede Komponente jeder der untergeordneten Ausgaben unter Verwendung der Mittelwerte und der Abweichungen für die Merkmalsindizes, um eine jeweilige normalisierte Ausgabe für jedes der Trainingsbeispiele in dem Batch zu erzeugen. Insbesondere normalisiert die Batch-Normalisierungsschicht für eine gegebene Komponente einer gegebenen Ausgabe die Komponente unter Verwendung des Mittelwerts und der Abweichung für den Merkmalsindex, die der Komponente entspricht, z. B. in der gleichen Weise wie oben beschrieben, wenn die Schicht unterhalb der Batch-Normalisierungsschicht Ausgaben erzeugt, die durch Dimension indiziert sind.
-
Gegebenenfalls wandelt die Batch-Normalisierungsschicht jede Komponente jeder normalisierten Ausgabe um (Schritt 206).
-
In Fällen, in denen die Schicht unterhalb der Batch-Normalisierungsschicht eine Schicht ist, die eine Ausgabe erzeugt, die mehrere nach Dimensionen indizierte Komponenten enthält, transformiert die Batch-Normalisierungsschicht für jede Dimension die Komponente jeder normalisierten Ausgabe in der Dimension in Übereinstimmung mit den aktuellen Werten eines Satzes von Parametern für die Dimension. Das heißt, die Batch-Normalisierungsschicht behält einen jeweiligen Satz von Parametern für jede Dimension bei und verwendet diese Parameter, um eine Transformation auf die Komponenten der normalisierten Ausgaben in der Dimension anzuwenden. Die Werte der Parametersätze werden im Rahmen des Trainings des neuronalen Netzwerksystems angepasst. In einigen Ausführungen erfüllt beispielsweise die umgeformte normalisierte Ausgabe yk,i, die von der normalisierten Ausgabe x ˆk,i erzeugt wurde: yk,i = γkx ˆk,i + Ak, wobei γk und Ak Parameter für die k-te Dimension sind.
-
In Fällen, in denen die Schicht unterhalb der Batch-Normalisierungsschicht eine Faltungsschicht ist, transformiert die Batch-Normalisierungsschicht für jede Komponente jeder der normalisierten Ausgaben die Komponente in Übereinstimmung mit den aktuellen Werten eines Satzes von Parametern für den Merkmalsindex entsprechend der Komponente. Das heißt, die Batch-Normalisierungsschicht behält einen jeweiligen Satz von Parametern für jeden Merkmalsindex bei und verwendet diese Parameter, um eine Transformation auf die Komponenten der normalisierten Ausgaben anzuwenden, die den Merkmalsindex aufweisen, z. B. in der gleichen Weise wie oben beschrieben, wenn die Schicht unterhalb der Batch-Normalisierungsschicht Ausgaben erzeugt, die durch Dimension indiziert sind. Die Werte der Parametersätze werden im Rahmen des Trainings des neuronalen Netzwerksystems angepasst.
-
Die Batch-Normalisierungsschicht liefert die normalisierten Ausgaben oder die transformierten normierten Ausgaben als Eingabe an eine Schicht oberhalb der Batch-Normalisierungsschicht in der Sequenz (Schritt 208).
-
Nachdem das neuronale Netzwerk die neuronalen Netzwerk-Ausgaben für die Trainingsbeispiele in dem Batch erzeugt hat, werden die Normalisierungsstatistiken als Teil der Anpassung der Werte der Parameter des neuronalen Netzwerks, d.h. als Teil der Durchführung der Backpropagations-Trainingstechnik weiterverbreitet.
-
3 ist ein Flussdiagramm eines beispielhaften Verfahrenes 300 zum Erzeugen einer Batch-Normalisierungsschichtausgabe für eine neue neuronale Netzwerkeingabe, nachdem das neuronale Netzwerk trainiert worden ist. Der Einfachheit halber wird der Prozess 300 als etwas beschrieben, dass durch ein System von einem oder mehreren Computern ausgeführt wird, die sich an einem oder mehreren Standorten befinden. Beispielsweise kann eine Batch-Normalisierungsschicht, die in einem neuronalen Netzwerksystem beinhaltet ist, z. B. die Batch-Normalisierungsschicht 108, die in dem neuronalen Netzwerksystem 100 von 1 beinhaltet ist, geeignet programmiert, das Verfahren 300 durchführen.
-
Die Batch-Normalisierungsschicht empfängt eine Unterschicht-Ausgabe für die neue neuronale Netzwerkeingabe (Schritt 302). Die Unterschicht-Ausgabeng ist eine Ausgabe, die für das neue neuronale Netzwerk erzeugt wird, das durch die Schicht unterhalb der Batch-Normalisierungsschicht in der Sequenz von neuronalen Netzwerkschichten eingegeben wird.
-
Die Batch-Normalisierungsschicht erzeugt eine normalisierte Ausgabe für die neue neuronale Netzeingabe (Schritt 304).
-
Wenn die Ausgaben, die von der Schicht unterhalb der Batch-Normalisierungsschicht erzeugt werden, durch Dimension indiziert werden, normalisiert die Batch-Normalisierungsschicht jede Komponente der Unterschichtausgabe unter Verwendung von vorberechneten Mittelwerten und Standardabweichungen für jede der Dimensionen, um eine normalisierte Ausgabe zu erzeugen. In einigen Fällen werden die Mittelwerte und Standardabweichungen für eine gegebene Dimension aus den Komponenten in der Dimension aller erzeugten Ausgaben berechnet, die von der Schicht unterhalb der Batch-Normalisierungsschicht während des Trainings des neuronalen Netzwerksystems erzeugt werden.
-
In einigen anderen Fällen werden jedoch die Mittelwerte und Standardabweichungen für eine gegebene Dimension aus den Komponenten in der Dimension der Unterschichtausgaben berechnet, die von der Schicht unterhalb der Batch-Normalisierungsschicht nach dem Training erzeugt wurden, z. B. aus den Unterschichtausgaben, die während eines aktuellen Zeitfensters mit angegebener Dauer oder aus einer bestimmten Anzahl von Unterschichtausgaben erzeugt wurden, die zeitnah von der Schicht unterhalb der Batch-Normalisierungsschicht erzeugt wurden.
-
Insbesondere kann in einigen Fällen die Verteilung der Netzeingaben und damit die Verteilung der Unetrschichtausgaben zwischen den Trainingsbeispielen, die während des Trainings verwendet werden, und den neuen neuronalen Netzwerkeingaben, die nach dem Trainieren des neuronalen Netzwerksystems verwendet werden, wechseln, z. B. wenn die neuen neuronalen Netzwerkeingaben verschiedene Arten von Eingaben aus den Trainingsbeispielen sind. Zum Beispiel kann das neuronale Netzwerksystem auf Benutzerbildern trainiert worden sein und kann nun verwendet werden, um Videobilder zu verarbeiten. Die Benutzerbilder und die Videobilder haben wahrscheinlich unterschiedliche Verteilungen in Bezug auf die dargestellten Klassen, Bildeigenschaften, Komposition und so weiter. Daher kann die Normalisierung der Unterschicht-Eingaben unter Verwendung von Statistiken aus dem Training die Statistik der Unterschichtausgaben, die für die neuen Eingaben erzeugt werden, nicht genau erfassen. Somit kann in diesen Fällen die Batch-Normalisierungsschicht Normalisierungsstatistiken verwenden, die aus Unterschichtausgaben berechnet werden, die durch die Schicht unterhalb der Batch-Normalisierungsschicht nach dem Training erzeugt werden.
-
Wenn die von der Schicht unterhalb der Batch-Normalisierungsschicht erzeugten Ausgaben durch den Merkmalsindex und den räumlichen Ortsindex indiziert sind, normalisiert die Batch-Normalisierungsschicht jede Komponente der Unterschichtausgabe unter Verwendung von vorberechneten durchschnittlichen Mittelwerte und durchschnittlichen Abweichungen für jeden der Merkmalsindizes, um eine normalisierte Ausgabe zu erzeugen. In einigen Fällen werden, wie oben beschrieben, die durchschnittlichen Mittelwerte und die durchschnittlichen Abweichungen für einen gegebenen Merkmalsindex aus den Ausgaben berechnet, die von der Schicht unterhalb der Batch-Normalisierungsschicht für alle während des Trainings verwendeten Trainingsbeispiele erzeugt werden. In einigen anderen Fällen werden, wie oben beschrieben, die Mittelwerte und Standardabweichungen für einen gegebenen Merkmalsindex aus den Unterschichtausgaben berechnet, die von der Schicht unterhalb der Batch-Normalisierungsschicht nach dem Training erzeugt werden.
-
Optional formt die Batch-Normalisierungsschicht jede Komponente der normalisierten Ausgabe um (Schritt 306).
-
Wenn die Ausgaben, die von der Schicht unterhalb der Batch-Normalisierungsschicht erzeugt werden, durch Dimension indiziert werden, formt die Batch-Normalisierungsschicht für jede Dimension die Komponente der normalisierten Ausgabe in der Dimension in Übereinstimmung mit trainierten Werten des Satzes von Parametern für die Dimension um. Wenn die von der Schicht unterhalb der Batch-Normalisierungsschicht erzeugten Ausgaben durch den Merkmalsindex und den räumlichen Ortsindex indiziert werden, formt die Batch-Normalisierungsschicht jede Komponente der normalisierten Ausgabe entsprechend den trainierten Werten des Satzes von Parametern für den Merkmalsindex entsprechend der Komponente um. Die Batch-Normalisierungsschicht liefert die normalisierte Ausgabe oder die umgeformte normierte Ausgabe als Eingabe an die Schicht oberhalb der Batch-Normalisierungsschicht in der Sequenz (Schritt 308).
-
Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen funktionalen Tätigkeiten können in digitalen elektronischen Schaltungen oder in einer konkret darin verkörperten Computer-Software, Firmware in die Hardware implementiert werden, einschließlich der in dieser Spezifikation offenbarten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehrerer von ihnen. Die in dieser Spezifikation beschriebenen Ausführungsformen des Gegenstandes können als ein oder mehrere Computerprogramme implementiert werden, d. h. als ein oder mehrere Module mit Computerprogrammanweisungen, die auf einem materiellen, nicht-flüchtigen Programmträger kodiert sind, um dann von einem Datenverarbeitungsgerät ausgeführt zu werden bzw. den Betrieb desselben zu steuern. Alternativ oder ergänzend dazu können die Programmbefehle auf einem künstlich erzeugten, sich ausbreitenden Signal, wie beispielsweise einem maschinenerzeugten elektrischen, optischen oder elektromagnetischen Signal codiert werden, das erzeugt wird, um Informationen zur Übertragung an ein geeignetes Empfängergerät zu codieren, die dann von einem Datenverarbeitungsgerät ausgeführt werden. Bei dem Computer-Speichermedium kann es sich um ein maschinenlesbares Speichergerät, ein maschinenlesbares Speichersubstrat, einen frei adressierbaren oder seriellen Zugriffsspeicher oder eine Kombination aus einem oder mehreren derselben handeln.
-
Der Begriff „Datenverarbeitungsvorrichtung“ umfasst alle Vorrichtungen, Geräte und Maschinen zum Verarbeiten von Daten, einschließlich beispielsweise eines programmierbaren Prozessors, eines Computers oder mehrerer Prozessoren oder Computer. Das Gerät kann eine Special Purpose Logic Circuitry wie z. B. ein FPGA (Field Programmable Gate Array) oder ein ASIC (Application Specific Integrated Circuit) beinhalten. Das Gerät kann neben der Hardware auch einen Code umfassen, der eine Ausführungsumgebung für das betreffende Computerprogramm bildet, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem oder eine Kombination einer oder mehrerer der genannten darstellt.
-
Ein Computerprogramm (auf das sich auch bezogen oder als Programm, Software, Softwareanwendung, Modul, Softwaremodul, Script oder Code beschrieben wird) kann in einer beliebigen Programmiersprachenform geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt werden, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss jedoch nicht einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält, wie z. B. eine oder mehrere Scripts, die in Markup-Sprache in einem Dokument, in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien, z. B. Dateien gespeichert sind, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern. Ein Computerprogramm kann auf einem Computer oder auf mehreren Computern bereitgestellt und ausgeführt werden, die sich an einem Standort oder auf mehrere Standorte verteilt befinden und über ein Kommunikationsnetzwerk miteinander verbunden sind.
-
Die in dieser Spezifikation beschriebenen Prozesse und Logikabläufe können von einem oder mehreren programmierbaren Prozessoren durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen durch das Verarbeiten von Eingabedaten und das Erzeugen von Ausgaben auszuführen. Die Prozesse und Logikabläufe können auch durch eine vorhabensgebundene Logikschaltung, wie z. B. einen FPGA (Universalschaltkreis) oder eine ASIC (anwendungsspezifische integrierte Schaltung) ausgeführt, und das Gerät in Form derselben implementiert werden.
-
Computer, die zur Ausführung eines Datenverarbeitungsprogramms geeignet sind, können beispielsweise allgemeine oder spezielle Mikroprozessoren oder beides oder jede andere Art von Zentraleinheit beinhalten. Ganz allgemein nimmt eine zentrale Recheneinheit Befehle und Daten von einem Nur-Lese-Speicher oder einem Direktzugriffsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind eine zentrale Recheneinheit zum Durchführen bzw. Ausführen von Befehlen und ein oder mehrere Speichergeräte zum Speichern von Befehlen und Daten.
-
Ganz allgemein gehören zu einem Computer auch ein oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, wie z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu senden, oder ist ein Computer operativ an eine solche Speichervorrichtung gekoppelt. Jedoch muss ein Computer nicht über solche Geräte verfügen. Des Weiteren kann ein Computer in einem anderen Gerät, unter anderem z. B. in einem Mobiltelefon, einem Personal Digital Assistant (PDA), einem mobilen Audio- oder Videoplayer, einer Spielkonsole, einem globalen Positionsbestimmungssystem (GPS) oder einem tragbaren Speichergerät, z. B. in einem USB-Stick, integriert sein. Computerlesbare Medien, die zum Speichern von Computerprogrammanweisungen und Daten geeignet sind, umfassen alle Formen von nicht flüchtigem Speicher, Medien und Speichervorrichtungen einschließlich beispielsweise Halbleiterspeichervorrichtungen wie z. B. EPROM, EEPROM und Flash-Speichervorrichtungen, Magnetplatten wie z. B. eingebaute Festplattenlaufwerke oder Wechselplatten, magneto-optische Platten sowie CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch eine vorhabensgebundene Logikschaltung ergänzt oder in dieselbe integriert werden.
-
Um die Interaktion mit einem Benutzer zu ermöglichen, können in dieser Spezifikation beschriebene Ausführungsformen des Gegenstands auf einem Computer mit einem Anzeigegerät implementiert werden, z. B. einem CRT- (Kathodenstrahlröhre) oder LCD- (Flüssigkristallanzeige) Monitor, mit welchem dem Benutzer Informationen angezeigt werden, sowie einer Tastatur und einem Anzeigegerät, z. B. einer Maus oder einem Trackball, mit denen der Benutzer Eingaben in den Computer vornehmen kann. Darüber hinaus können andere Geräte verwendet werden, um die Interaktion mit einem Benutzer zu ermöglichen; zum Beispiel kann es sich bei der Rückmeldung an den Benutzer um jegliche Art von sensorischer Rückmeldung, wie z. B. visuelle, akustische oder taktile Rückmeldungen, handeln; auch die Eingaben des Benutzers können in beliebiger Form, d. h. auch akustisch, sprachlich oder taktil, empfangen werden. Darüber hinaus kann ein Computer über das Senden von Dokumenten an und das Empfangen von Dokumenten von einer Einrichtung, die vom Benutzer verwendet wird, mit einem Benutzer interagieren, beispielsweise über das Senden von Web-Seiten an einen Web-Browser auf dem Client-Gerät des Benutzers als Antwort auf die vom Web-Browser empfangenen Aufforderungen.
-
Die in dieser Spezifikation beschriebenen Ausführungsformen des Gegenstandes können in einem Computersystem implementiert werden, das eine Backend-Komponente wie z. B. einen Datenserver oder eine Middleware-Komponente wie z. B. einen Anwendungsserver oder eine Frontend-Komponente wie z. B. einen Client-Computer mit einer grafischen Benutzeroberfläche oder eine beliebige Kombination einer oder mehrerer der besagten Backend-, Middleware- oder Frontend-Komponenten oder einen Web-Browser beinhaltet, durch den ein Benutzer mit einer in dieser Beschreibung beschriebenen Ausführung des Gegenstandes interagieren kann. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation, wie z. B. ein Kommunikationsnetzwerk, miteinander verbunden sein. So beinhalten beispielsweise Kommunikationsnetzwerke ein lokales Netzwerk („LAN“), ein Fernnetz („WAN“), z. B. das Internet.
-
Das Rechensystem kann Client und Server beinhalten. Ein Client und Server befinden sich im Allgemeinen entfernt voneinander und interagieren typischerweise über ein Kommunikationsnetzwerk. Die Beziehung von Client und Server ergibt sich durch Computerprogramme, die auf den jeweiligen Computern ausgeführt werden und in einer Client-Server-Beziehung zueinander stehen.
-
Zwar enthält diese Spezifikation viele spezifische Ausführungsdetails, jedoch sollten diese nicht als Einschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder geeigneten Unterkombination implementiert werden. Außerdem können, auch wenn die Merkmale weiter oben ggf. als in bestimmten Kombinationen wirkend beschrieben und zunächst auch als solche beansprucht werden, in einigen Fällen ein oder mehrere Merkmale einer beanspruchten Kombination aus der Kombination herausgenommen und die beanspruchte Kombination auf eine Teilkombination oder eine Variante einer Teilkombination gerichtet werden.
-
Gleichermaßen soll dies, obwohl die Operationen in den Zeichnungen in einer bestimmten Reihenfolge dargestellt sind, nicht so verstanden werden, dass die besagten Operationen in der dargestellten Reihenfolge oder in fortlaufender Reihenfolge durchgeführt werden müssen bzw. alle veranschaulichten Operationen durchgeführt werden müssen, um die erwünschten Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und Parallelverarbeitung von Vorteil sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den vorstehend beschriebenen Ausführungsformen nicht als in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder in mehrere Softwareprodukte aufgeteilt werden können.
-
Es wurden bestimmte Ausführungsformen des Gegenstands beschrieben. Weitere Ausführungsformen liegen innerhalb des Schutzumfangs der folgenden Ansprüche. Die in den Ansprüchen ausgeführten Vorgänge können beispielsweise in einer anderen Reihenfolge ausgeführt werden und dennoch wünschenswerte Ergebnisse erzielen. Die in den beigefügten Figuren dargestellten Verfahren erfordern beispielsweise nicht notwendigerweise die gezeigte Reihenfolge oder sequenzielle Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Multitasking und eine Parallelverarbeitung vorteilhaft sein.