DE102018127647A1 - Systeme und verfahren zum trainieren neuronaler netzwerke auf regression ohne referenzdaten-trainingsmuster - Google Patents

Systeme und verfahren zum trainieren neuronaler netzwerke auf regression ohne referenzdaten-trainingsmuster Download PDF

Info

Publication number
DE102018127647A1
DE102018127647A1 DE102018127647.8A DE102018127647A DE102018127647A1 DE 102018127647 A1 DE102018127647 A1 DE 102018127647A1 DE 102018127647 A DE102018127647 A DE 102018127647A DE 102018127647 A1 DE102018127647 A1 DE 102018127647A1
Authority
DE
Germany
Prior art keywords
noisy
patterns
pattern
computer
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018127647.8A
Other languages
English (en)
Inventor
Jaakko T. Lehtinen
Timo Oskari Aila
Jon Niklas Theodor Hasselgren
Carl Jakob Munkberg
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102018127647A1 publication Critical patent/DE102018127647A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/60Image enhancement or restoration using machine learning, e.g. neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Processing (AREA)

Abstract

Offenbart werden ein Verfahren, ein computerlesbares Medium und ein System zum Trainieren eines neuronalen Netzwerks. Das Verfahren beinhaltet die Schritte des Auswählens eines Eingangsmusters aus einem Satz von Trainingsdaten, der Eingangsmuster und verrauschte Zielmuster beinhaltet, wobei die Eingangsmuster und die verrauschten Zielmuster jeweils einem latenten, fehlerfreien Zielmuster entsprechen. Das Eingangsmuster wird von einem neuronalen Netzwerkmodell verarbeitet, um eine Ausgabe zu erzeugen, und ein verrauschtes Zielmuster wird aus dem Satz von Trainingsdaten ausgewählt, wobei die verrauschten Zielmuster eine Verteilung relativ zu dem latenten, fehlerfreien Zielmuster aufweisen. Das Verfahren beinhaltet darüber hinaus ein Anpassen von Parameterwerten des neuronalen Netzwerkmodells, um Unterschiede zwischen der Ausgabe und dem verrauschten Zielmuster zu reduzieren.

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft das Training neuronaler Netzwerke, und bezieht sich insbesondere auf das Training neuronaler Netzwerke auf Regression ohne Referenzdaten-Trainingsmuster.
  • HINTERGRUND
  • Viele Regressionsaufgaben beinhalten die Wiederherstellung von Daten, die durch irgendeine Form von Verschlechterung beschädigt wurden. Beispiele hierfür beinalten die Entrauschung von Fotos, Visualisierungen oder Audiosignalen. Neuronale Netzwerke und insbesondere „Entrauschen von Autoencodern mit Skip-Verbindungen“ oder U- Netzwerke, haben sich für viele solcher Aufgaben als überdurchschnittlich leistungsstark erwiesen. Das neuronale Netzwerk ist darauf trainiert, eine wiederhergestellte Version von Daten auszugeben, wenn eine beschädigte Version der Daten als Eingabe bereitgestellt wird. Das Training wird durchgeführt, indem beschädigte Eingangsdaten durch das aktuelle Netzwerk geleitet werden, die Ausgabe des neuronalen Netzwerks (d.h. die Vorhersage) mit den Referenztrainingszieldaten, die eine fehlerfreie Version der Daten sind, verglichen wird und die Parameter des neuronalen Netzwerks durch stochastischen Gradientenabstieg bzw. Gradient Descent mit Hilfe der Rückpropagierung angepasst werden.
  • Traditionell erfordert das Trainieren eines neuronalen Netzwerks eine große Sammlung von Trainingsdaten, die verschiedene Paare (X', Y) von verrauschten Eingangsmustern X' und fehlerfreien Zielmustern Y (d.h. Ground Truth bzw. Referenzdaten-Trainingsmuster) beinhaltet. In einigen Szenarien ist es jedoch schwierig oder langsam, fehlerfreie Trainingsmuster zu erhalten, während verrauschte Beispiele leicht zu erhalten sind. Ein offensichtliches Beispiel ist ein Monte-Carlo-Rendering: Ein schnelles Rendern mit nur wenigen Mustern pro Pixel ist schnell zu berechnen, aber ein konvergentes, rauschfreies Bild zu erzeugen kann Stunden dauern. Es besteht die Notwendigkeit, diese Fragen und/oder andere Fragen im Zusammenhang mit dem Stand der Technik zu behandeln.
  • KURZBESCHREIBUNG
  • Offenbart werden ein Verfahren, ein computerlesbares Medium und ein System zum Trainieren neuronaler Netzwerke. Das Verfahren beinhaltet die Schritte des Auswählens eines Eingangsmusters aus einem Satz von Trainingsdaten, der Eingangsmuster und verrauschte Zielmuster beinhaltet, wobei die Eingangsmuster und die verrauschten Zielmuster jeweils einem latenten, fehlerfreien Zielmuster entsprechen. Das Eingangsmuster wird von einem neuronalen Netzwerkmodell verarbeitet, um eine Ausgabe zu erzeugen, und ein verrauschtes Zielmuster wird aus dem Satz von Trainingsdaten ausgewählt, wobei die verrauschten Zielmuster eine Verteilung relativ zu dem latenten, fehlerfreien Zielmuster aufweisen. Das Verfahren beinhaltet darüber hinaus das Anpassen von Parameterwerten des neuronalen Netzwerkmodells, um Unterschiede zwischen der Ausgabe und dem verrauschten Zielmuster zu reduzieren.
  • Figurenliste
    • 1A veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Trainieren eines neuronalen Netzwerks gemäß einem Ausführungsbeispiel;
    • 1B veranschaulicht ein Blockdiagramm eines Systems zum Trainieren eines neuronalen Netzwerks gemäß einem Ausführungsbeispiel;
    • 1C veranschaulicht ein konzeptionelles Diagramm eines bekannten Trainings eines neuronalen Netzwerks unter Verwendung beschädigter Eingangsdaten und eines Referenzdaten-Trainingsziels;
    • 1D veranschaulicht ein konzeptionelles Diagramm eines Trainings neuronaler Netzwerke unter Verwendung beschädigter Eingangsdaten und mehrerer verrauschter Trainingsziele gemäß einem Ausführungsbeispiel;
    • Die 1E und 1F veranschaulichen verrauschte Trainingspaare zum Trainieren des neuronalen Netzwerks gemäß einem Ausführungsbeispiel;
    • 1G veranschaulicht ein beschädigtes Trainingspaar zum Trainieren des neuronalen Netzwerks und das wiederhergestellte fehlerfreie Bild gemäß einem Ausführungsbeispiel;
    • 2A veranschaulicht ein verrauschtes Bild zum Trainieren des neuronalen Netzwerks und die Anpassung der Parameterwerte gemäß einem Ausführungsbeispiel;
    • 2B veranschaulicht ein entrauschtes Bild gemäß einem Ausführungsbeispiel;
    • 2C veranschaulicht ein anderes Blockdiagramm eines Systems zum Trainieren eines neuronalen Netzwerks gemäß einem Ausführungsbeispiel;
    • 2D veranschaulicht ein Ablaufdiagramm eines anderen Verfahrens zum Trainieren eines neuronalen Netzwerks gemäß einem Ausführungsbeispiel;
    • 3 veranschaulicht eine Parallelverarbeitungseinheit gemäß einem Ausführungsbeispiel;
    • 4A veranschaulicht einen Universalverarbeitungscluster der Parallelverarbeitungseinheit von 3 gemäß einem Ausführungsbeispiel;
    • 4B veranschaulicht eine Partitionierungseinheit der Parallelverarbeitungseinheit von 3 gemäß einem Ausführungsbeispiel;
    • 5 veranschaulicht den Streaming-Multiprozessor von 4A gemäß einem Ausführungsbeispiel; und
    • 6 veranschaulicht ein beispielhaftes System, in dem die verschiedenartige Architektur und/oder Funktionalität der verschiedenen vorangehenden Ausführungsbeispiele implementiert sein kann.
  • DETAILLIERTE BESCHREIBUNG
  • Anstatt ein neuronales Netzwerk mit verrauschten Eingangsmustern und einem fehlerfreien Zielmuster zu trainieren, wird eine Technik zum Trainieren eines neuronalen Netzwerks mit verrauschten Eingangsmustern und verrauschten Zielmustern beschrieben. Das neuronale Netzwerk kann dazu trainiert werden, das fehlerfreie Zielmuster auszugeben - ohne jemals ein fehlerfreies Zielmuster Y während des Trainingsprozesses zu verwenden. Stattdessen wird ein verrauschtes Zielmuster Y' verwendet, um das neuronale Netzwerk zu trainieren.
  • Die Verwendung von verrauschten Zielmustern anstelle von fehlerfreien Zielmustern kann den Zeit- und Rechenaufwand für die Erstellung eines Trainingsdatensatzes drastisch reduzieren. Dadurch wird die Zeit, die zum Beenden des gesamten Trainingsprozesses benötigt wird, reduziert. Wichtig ist, dass das Training auch in Echtzeit durchgeführt werden kann. So kann beispielsweise ein Training durchgeführt werden, wenn verrauschte Eingangsbilder X' von einer Bildaufnahmevorrichtung empfangen oder wiedergegeben werden.
  • 1A veranschaulicht ein Ablaufdiagramm eines Verfahrens 100 zum Trainieren eines neuronalen Netzwerks gemäß einem Ausführungsbeispiel. Das Verfahren 100 wird im Kontext eines neuronalen Netzwerks beschrieben, und das Verfahren 100 kann auch durch ein Programm, eine benutzerdefinierte Schaltungsanordnung oder durch eine Kombination aus einer benutzerdefinierten Schaltungsanordnung und einem Programm durchgeführt werden. So kann beispielsweise das Verfahren 100 von einer Grafikverarbeitungseinheit (GPU), einer Zentralverarbeitungseinheit (CPU) oder einem beliebigen Prozessor ausgeführt werden, der die erforderlichen Verarbeitungsvorgänge durchführen kann. Darüber versteht sich für den Fachmann, dass jedes System, das die Methode 100 durchführt, innerhalb des Schutzbereichs und des Rahmens von Ausführungsbeispielen der Erfindung liegt.
  • In Schritt 110 wird ein Eingangsmuster X' aus einem Satz von Trainingsdaten, der Eingangsmuster X' und verrauschte Zielmuster Y' beinhaltet, ausgewählt, wobei die Eingangsmuster und die verrauschten Zielmuster jeweils einem latenten, fehlerfreien Zielmuster Y entsprechen. Während Y innerhalb der Zielmuster Y' vorhanden ist, kann Y nicht direkt beobachtet werden und ist daher „latent“. In einem Ausführungs-beispiel besteht der Satz von Trainingsdaten aus Bilddaten. In einem anderen Ausführungsbeispiel besteht der Satz von Trainingsdaten aus Audiodaten. Im Kontext der folgenden Beschreibung kann der Satz von Trainingsdaten Muster von Signalen beinhalten, die jede Art von Daten repräsentieren. Mit anderen Worten ist die Trainingstechnik, die verrauschte Zielmuster verwendet, domänenunabhängig.
  • Die Eingangsmuster können fehlerfrei (X) oder verrauscht (X') sein. Wie bereits erklärt wurde, ist es jedoch schwierig, fehlerfreie Eingangsmuster zu erhalten. Wichtig ist, dass dann, wenn die Eingangsmuster in dem Trainingsdatensatz verrauscht sind (X'=X+N1), das Rauschen N1 in den Eingangsmustern nicht mit Rauschen N2 in den verrauschten Zielmuster (Y'=Y+N2) korreliert werden darf. Mit anderen Worten ist für ein Trainingspaar (X',Y') das Rauschen N1 nicht mit dem Rauschen N2 korreliert.
  • In Schritt 120 wird das Eingangsmuster durch ein neuronales Netzwerkmodell verarbeitet, um eine Ausgabe zu erzeugen. Das neuronale Netzwerk gilt als ausreichend trainiert, wenn die für die Eingangsmuster erzeugten Ausgaben mit dem latenten, fehlerfreien Zielmuster übereinstimmen oder eine Schwellengenauigkeit für den Trainingsdatensatz erreicht ist.
  • In Schritt 130 wird ein verrauschtes Zielmuster aus dem Satz von Trainingsdaten ausgewählt, wobei die verrauschten Zielmuster eine Verteilung relativ zu dem latenten, fehlerfreien Zielmuster aufweisen. In einem Ausführungsbeispiel ist die Verteilung der verrauschten Zielmuster eine zufällige Verteilung relativ zu dem latenten, fehlerfreien Zielmuster. In der Praxis können die Eingangsmuster und die verrauschten Zielmuster aus einer Sammlung verrauschter Muster ausgewählt werden, so dass ein bestimmtes Muster als ein verrauschtes Eingangsmuster für ein erstes Trainingspaar und als ein verrauschtes Zielmuster für ein zweites Trainingspaar verwendet werden kann. Das gleiche Muster kann nicht sowohl als das verrauschte Eingangsmuster als auch als verrauschtes Zielmuster für ein bestimmtes Trainingspaar verwendet werden, da das Rauschen korreliert ist.
  • In einem Ausführungsbeispiel ist die Verteilung der verrauschten Zielmuster relativ zu dem latenten, fehlerfreien Zielmuster so, dass das latente, fehlerfreie Zielmuster ein Durchschnitt (d.h. ein Mittelwert) der verrauschten Zielmuster ist. So ist beispiels-weise für einen bestimmten Pixel eines Bilds ein Mittelwert des Farbwerts dieses Pixels für alle Bilder in den verrauschten Zielmustern ein Farbwert für denselben Pixel in dem latenten, fehlerfreien Zielmuster. In einem anderen Ausführungsbeispiel ist die Datenverteilung der verrauschten Zielmuster relativ zu dem latenten, fehlerfreien Zielmuster so, dass das latente, fehlerfreie Zielmuster eines der am häufigsten auftretenden (d.h. medianen) der verrauschten Zielmuster ist. So ist beispielsweise für einen bestimmten Pixel eines Bilds der am häufigsten auftretende Farbwert dieses Pixels für alle Bilder in den verrauschten Zielmustern der Farbwert für denselben Pixel in dem latenten, fehlerfreien Zielmuster.
  • In Schritt 140 werden Parameterwerte des neuronalen Netzwerkmodells angepasst, um Unterschiede zwischen der Ausgabe des neuronalen Netzwerks und dem verrauschten Zielmuster zu reduzieren. In einem Ausführungsbeispiel wird eine Verlustfunktion kleinster Quadrate (d.h. L2) auf die Unterschiede angewendet, um die Parameterwerte anzupassen. In einem anderen Ausführungsbeispiel wird eine Verlustfunktion geringster absoluter Abweichungen (d.h. L1) auf die Unterschiede angewendet, um die Parameterwerte anzupassen.
  • Nachstehend werden weitere veranschaulichende Informationen zu verschiedenen optionalen Architekturen und Funktionen gegeben, mit welchen das vorgenannte Rahmenwerk nach den Wünschen des Benutzers implementiert werden kann oder nicht. Es sei ausdrücklich darauf hingewiesen, dass die folgenden Informationen zur Veranschaulichung aufgeführt sind und nicht als beschränkend auszulegen sind. Ein beliebiges der folgenden Merkmale kann wahlweise mit oder ohne Ausnahme anderer beschriebener Merkmale einbezogen werden.
  • 1B veranschaulicht ein Blockdiagramm eines Systems 150 zum Trainieren eines neuronalen Netzwerks 125 gemäß einem Ausführungsbeispiel. Das System 150 beinhaltet einen Trainingsdatensatz mit Eingangsmustern 115 und verrauschten Zielmustern 145, Y'. In einem Ausführungsbeispiel sind die Eingangsmuster verrauschte Eingangsmuster X', wie in 1B dargestellt ist. In einem anderen Ausführungsbeispiel sind die Eingangsmuster 115 fehlerfreie Eingangsmuster X. Der Trainingsdatensatz kann in einem Speicher gespeichert sein. In einem Ausführungs-beispiel ist dann, wenn die Eingangsmuster 115 verrauschte Eingangsmuster sind, das den verrauschten Eingangsmustern 115 zugeordnete Rauschen nicht mit dem den verrauschten Zielmustern 145 zugeordneten Rauschen korreliert. Mit anderen Worten sind die verrauschten Eingangsmuster 115 und die verrauschten Zielmuster 145 ausschließlich. In einem Ausführungsbeispiel können die Eingangsmuster 115 und die verrauschten Zielmuster 145 aus einer Sammlung von verrauschten Mustern ausgewählt werden, so dass ein erstes Muster als ein Eingangsmuster und ein zweites Muster, das sich von dem ersten Muster unterscheidet, als ein verrauschtes Zielmuster für ein erstes Trainingspaar verwendet werden kann.
  • Ein Eingangsmuster aus den Eingangsmustern 115 und Parameterwerte (z.B. Gewichte) werden in das neuronale Netzwerk 125 eingegeben, um eine Ausgabe f(X') zu erzeugen. Eine Parametereinstelleinheit 135 empfängt die Ausgabe und ein verrauschtes Zielmuster aus den verrauschten Zielmustern 145, das mit dem Eingangsmuster gekoppelt ist, und passt die Parameterwerte basierend auf einem Vergleich zwischen dem verrauschten Zielmuster und der Ausgabe an. Nachdem das neuronale Netzwerk 125 trainiert ist, kann das neuronale Netzwerk 125 eingesetzt werden, um die angepassten Parameterwerte auf verrauschte Eingangsdaten anzuwenden und fehlerfreie Ausgangsdaten zu erzeugen.
  • In einem Ausführungsbeispiel werden die Parameterwerte nicht für jede Ausgabe angepasst, sondern für eine Charge von N Ausgaben, wobei N größer als 1 ist. Von der Parametereinstelleinheit 135 berechnete Gradienten können für die N Ausgaben gemittelt werden, bevor die Parameterwerte eingestellt werden. Die Parametereinstelleinheit 135 ist dazu konfiguriert, die Parameterwerte anzupassen, um Unterschiede zwischen der Ausgabe und den verrauschten Zielmustern zu reduzieren.
  • In einem Ausführungsbeispiel werden dann, wenn das fehlerfreie Zielmuster im Wesentlichen gleich einem Mittelwert der Datenverteilung der verrauschten Zielmuster 145 ist, die Parameterwerte unter Verwendung Regression der kleinsten Quadrate basierend auf Unterschieden zwischen den verrauschten Zielmustern 145 und den Ausgaben angepasst. In einem Ausführungsbeispiel entspricht der Mittelwert im Wesentlichen dem fehlerfreien Zielmuster Y, wenn der Mittelwert innerhalb von 5% der fehlerfreien Zielmuster liegt. Eine Verlustfunktion kann von der Parametereinstelleinheit 135 berechnet werden, um Abstände (z.B. Unterschiede oder Gradienten) zwischen den verrauschten Zielmustern 145 und den Ausgaben zu messen. In einem Ausführungsbeispiel kann das in 1A offenbarte Verfahren von dem System 150 dazu verwendet werden, das neuronale Netzwerk 125 zu trainieren, indem fehlerfreien Referenzdaten-Zielmuster Y durch die verrauschten Zielmuster Y' = Y+N ersetzt werden, wobei der Mittelwert der Verteilung von Y' dem fehlerfreien Zielmuster Y entspricht. So könnten beispielsweise die Eingangsmuster 115 X' verrauschte Monte-Carlo-Renderings sein, und besteht die entsprechende Verteilung der verrauschten Zielmuster 145 aus Y' = Y + N verschiedenen verrauschten Instanzen des gleichen (unbekannten) Referenzdatenmusters Y, beschädigt durch statistisch unabhängiges, additives Rauschen N mit einem Mittelwert von Null. Die mittelwertlose Eigenschaft des Rauschens garantiert E[Y'] = Y. In einem anderen Ausführungsbeispiel können die verrauschten Ziele durch signalabhängiges Rauschen wie beispielsweise Poisson-Rauschen (auch bekannt als Schrotrauschen) oder multiplikatives Rauschen Y' = Y*N beschädigt sein, wobei die mittelwertlosen Eigenschaften des Rauschens so sind, dass E[Y'] = Y.
  • In einem anderen Ausführungsbeispiel werden dann, wenn das fehlerfreie Zielmuster gleich einem Median der Datenverteilung der verrauschten Zielmuster ist, die Parameterwerte unter Verwendung einer Verlustfunktion geringster absoluter Abweichungen basierend auf den Unterschieden zwischen den verrauschten Zielmustern 145 und den Ausgaben angepasst. In einem Ausführungsbeispiel kann das in 1A gezeigte Verfahren 100 von dem System 150 verwendet werden, um das neuronale Netzwerk 125 zu trainieren, indem die fehlerfreien Referenzdaten-Zielmuster Y durch die verrauschten Zielmuster Y' ersetzt werden, wobei der Median der Verteilung von Y' mit dem fehlerfreien Zielmuster Y übereinstimmt. Mit anderen Worten stimmen dann, wenn das fehlerfreie Zielmuster ein Bild ist, die am häufigsten auftretenden Werte für jeden Pixel über die Verteilung der verrauschten Zielmuster 145 Y' mit dem Wert für jeden einzelnen Pixel in dem fehlerfreien Zielmuster Y überein. Die verrauschten Eingangsmuster und die verrauschten Zielmuster können beide durch rauschfreie Daten (z.B. Text) beschädigt sein, wenn der Mittelwert der Verteilung der verrauschten Zielmuster 145 Y' mit dem fehlerfreien Zielmuster Y übereinstimmt.
  • Während konventionellen Trainings repräsentieren Unterschiede zwischen den Referenzdatenmustern und Ausgaben des neuronalen Netzwerks 125 eine erste Zufallsebene. Wenn die Referenzdaten-Zielmuster durch die verrauschten Zielmuster 145 ersetzt werden, ist das Rauschen in den verrauschten Zielmustern 145 und den verrauschten Eingangsmustern 115 eine zusätzliche Zufallsebene. Die Gradienten, die von der Parametereinstelleinheit 135 berechnet und zum Einstellen der Parameterwerte verwendet werden, konvergieren jedoch im Durchschnitt auf die gleichen angepassten Parameterwerte, wenn anstelle der die Referenzdatenmuster die verrauschten Zielmuster 145 verwendet werden.
  • Während der zusätzliche Grad der Stochastik, der aus dem Rauschen resultiert, das Training des neuronalen Netzwerks 125 erschwert, welches mehr Zeit zum Konvergieren erfordert, ist die Genauigkeit des neuronalen Netzwerks 125 ähnlich zu der eines konventionell trainierten neuronalen Netzwerks, wenn das Training einmal abgeschlossen ist. Die Geschwindigkeit, mit welcher der Trainingsdatensatz, der die verrauschten Zielmuster beinhaltet, erzeugt werden kann, kann jedoch die zusätzliche Trainingszeit im Vergleich zum Erzeugen eines Trainingsdatensatzes mit den Referenzdaten-Zielmustern ausgleichen. So kann beispielsweise der Trainingsdatensatz in Echtzeit erstellt werden, was ein „Live-Training“ im Rahmen eines Walk-Through in einem interaktiven System ermöglicht. Wenn ein Benutzer beispielsweise durch eine dreidimensionale (3D-)Szene navigiert, kann ein verrauschter Trainingsdatensatz gerendert und das in einer Betrachtungsanwendung eingesetzte neuronale Netzwerk 125 dazu trainiert werden, fehlerfreie Bilder der 3D-Szene mit interaktiven Raten zu erzeugen. In einem weiteren Beispiel können Bilder einer Umgebung, wie beispielsweise die Sicht vor einem autonomen Fahrzeug, mit niedriger Auflösung aufgenommen werden, und kann das neuronale Netzwerk 125 innerhalb einer Anzeige dazu trainiert werden, fehlerfreie Bilder der Umgebung mit interaktiven Raten zu erzeugen. In einem weiteren Beispiel können Bilder einer Umgebung, wie beispielsweise der Blick vor ein autonomes Fahrzeug, bei schlechten Lichtverhältnissen und bei Nacht aufgenommen werden, welches Rauschen bei kurzen Belichtungszeiten einführt. Das neuronale Netzwerk 125 innerhalb einer Anzeige kann dazu trainiert werden, fehlerfreie Bilder der Umgebung mit interaktiven Raten zu erzeugen. In einem nochmals weiteren Beispiel könnte das Sichtfeld mit einer Tiefenmessvorrichtung, wie beispielsweise einem Time-of-Flight-Sensor oder einem LIDAR, erfasst werden, welches zu verrauschten Schätzungen der Tiefe führt. Das neuronale Netzwerk 125 würde lernen, dieses Rauschen zu entfernen. In einem weiteren Beispiel können Functional Magnetic Resonance (MRI)-Bilder bzw. Magnetresonanztomographie (MRT)-Bilder, die mit verschiedenen, randomisierten Schichten oder anderen Teilmengen der spektralen Repräsentation des abzutastenden Volumens aufgenommen wurden, als eine Sequenz zugeführt werden, um ein neuronales Netzwerk dazu trainieren, hoch qualitative volumetrische Bilder nur auf der Grundlage der begrenzten Informationsmenge, die einer kurzen Pulssequenz entspricht, zu rekonstruieren Wichtig ist, dass die Technik des Trainierens des neuronalen Netzwerks 125 mit verrauschten Zielmustern unter Verwendung des Verfahrens 100 domänenunabhängig ist.
  • 1C veranschaulicht ein konzeptionelles Diagramm eines bekannten neuronalen Netzwerktrainings unter Verwendung beschädigter Eingangsdaten und eines Referenzdatenziels. Bei einem konventionellen Trainingsdatensatz, der verrauschte Eingangsmuster und fehlerfreie (d.h. Referenzdaten-) Zielmusterpaare (X',Y) beinhaltet, wird ein neuronales Netzwerk 122 durch Bereitstellen eines verrauschten Musters X', um eine Ausgabe f(X') zu erzeugen, trainiert. Die neuronalen Netzwerkparameter werden angepasst, um eine Verlustfunktion zu reduzieren, die den Abstand zwischen f(X') und Y misst. Wie in 1C gezeigt ist, werden dann, wenn ein konventionelles neuronales Netzwerktraining zum Trainieren des neuronalen Netzwerks 122 verwendet wird, dem neuronalen Netzwerk 122 viele verrauschte Eingangsmuster X' zur Verfügung gestellt und wird jedes verrauschte Eingangsmuster X' mit demselben fehlerfreien Zielmuster Y gepaart. Bei Aufgaben wie der Entrauschung entsprechen typischerweise viele verschiedene beschädigte/verrauschte Eingänge X' einem einzelnen nicht beschädigten/fehlerfreien Ziel Y. Beispielsweise kann das gleiche Bild durch unendlich viele verschiedene Rauschmuster beschädigt sein.
  • 1D veranschaulicht ein konzeptionelles Diagramm des Trainings neuronaler Netzwerke unter Verwendung verrauschter Eingangsmuster und mehrerer verrauschter Zielmuster gemäß einem Ausführungsbeispiel. Im Gegensatz zu dem herkömmlichen neuronalen Netzwerktraining, das ein fehlerfreies Zielmuster Y verwendet, wird jedes der vielen verrauschten Eingangsmuster X' mit einem anderen verrauschten Zielmuster Y' gepaart, wobei der Mittelwert der verschiedenen verrauschten Zielmuster Y' im Wesentlichen gleich dem fehlerfreien Zielmuster Y ist. Während des Trainings lernt das neuronale Netzwerk 125, den Mittelwert der verrauschten Zielmuster Y' auszugeben, wobei der Mittelwert gleich dem fehlerfreien Zielmuster Y ist (d.h. E[Y']=Y). Wichtig ist, dass das fehlerfreie Zielmuster Y nicht explizit bekannt sein muss, solange verrauschte Zielmuster Y' aus einer Verteilung gezogen werden können, deren Mittelwert gleich Y ist. Während das fehlerfreie Zielmuster Y innerhalb der verrauschten Zielmuster Y' vorhanden ist, kann das fehlerfreie Zielmuster Y nicht direkt beobachtet werden und ist daher „latent“.
  • 1E veranschaulicht ein verrauschtes Trainingspaar zum Trainieren des neuronalen Netzwerks 125 gemäß einem Ausführungsbeispiel. Das verrauschte Trainingspaar beinhaltet ein verrauschtes Eingangsbild 160 und ein verrauschtes Zielbild 165. Ein Kreis unter jedem Bild veranschaulicht konzeptionell eine Musterposition innerhalb einer Verteilung der verrauschten Eingangsbilder und der verrauschten Zielbilder in dem verrauschten Trainingsdatensatz. Wichtig ist, dass die Musterpositionen für das verrauschte Eingangsbild 160 und das verrauschte Zielbild 165 unterschiedlich sind, so dass das Rauschen in dem verrauschten Eingangsbild 160 nicht mit dem Rauschen in dem verrauschten Zielbild 165 korreliert ist.
  • 1F veranschaulicht ein anderes verrauschtes Trainingspaar zum Trainieren des neuronalen Netzwerks 125 gemäß einem Ausführungsbeispiel. Das zweite verrauschte Trainingspaar ist in dem gleichen Trainingsdatensatz wie das in 1E dargestellte verrauschte Trainingspaar enthalten und beinhaltet ein verrauschtes Eingangsbild 170 und ein verrauschtes Zielbild 175. Die Musterpositionen für die verrauschten Eingangsbilder 160 und 170 sind unterschiedlich und die Musterpositionen für die verrauschten Zielbilder 165 und 175 sind unterschiedlich. Außerdem ist das Rauschen in dem verrauschten Eingangsbild 170 nicht mit dem Rauschen in dem verrauschten Zielbild 175 korreliert. Nachdem das Training unter Verwendung des verrauschten Trainingsdatensatzes einschließlich der in 1E und 1F dargestellten verrauschten Bildtrainingspaare abgeschlossen ist, gibt das neuronale Netzwerk 125 ein fehlerfreies Zielbild aus. In einem Ausführungsbeispiel entspricht der Mittelwert der Verteilung der verrauschten Zielbilder in dem verrauschten Trainingsdatensatz im Wesentlichen dem fehlerfreien Zielbild. Die Parametereinstelleinheit 135 kann dazu konfiguriert sein, eine L2 (kleinste Quadrate)-Regression durchzuführen, um das neuronale Netzwerk 125 durch Anpassen der Parameterwerte abzustimmen, wenn der Mittelwert der Verteilung der verrauschten Zielbilder in dem verrauschten Trainingsdatensatz mit dem fehlerfreien Zielbild übereinstimmt.
  • 1G veranschaulicht ein beschädigtes Trainingspaar zum Trainieren des neuronalen Netzwerks 125 und des wiederhergestellten fehlerfreien Bildes gemäß einem Ausführungsbeispiel. Das beschädigte Trainingspaar beinhaltet ein beschädigtes Eingangsbild 180 und ein beschädigtes Zielbild 185. Wichtig ist, dass die Beschädigung im beschädigten Eingangsbild 180 nicht mit der Beschädigung im verrauschten Zielbild 185 korreliert ist. Nachdem das Training unter Verwendung des beschädigten Trainingsdatensatzes mit dem beschädigten Eingangsbild 180 und einem beschädigten Zielbild 185 abgeschlossen ist, gibt das neuronale Netzwerk 125 ein fehlerfreies Bild 190 aus. Der Mittelwert der Verteilung von beschädigten Zielbildern, die mit farbigem Text im beschädigten Trainingsdatensatz beschädigt sind, ist ein Bild mit Text, der während des Trainings in eine graue Farbe konvergiert, und nicht das rauschfreie, fehlerfreie Bild 190. Der Mittelwert einer Farbe für ein Pixel beinhaltet die fehlerfreie Farbe und eine oder mehrere Farben aus dem korrumpierenden Text. Da die korrumpierenden Textfarben zusammen mit der fehlerfreien Farbe für ein Pixel gemittelt werden, verblasst die Farbe des Pixels zu grau.
  • Während der Mittelwert jedoch nicht das richtige Ergebnis liefert, entspricht der Median der Verteilung der verrauschten Zielbilder, die durch Text in dem verrauschten Trainingsdatensatz beschädigt sind, im Wesentlichen dem rauschfreien, fehlerfreien Bild 190. Die Parametereinstelleinheit 135 kann dazu konfiguriert sein, eine L1 (kleinste absolute Abweichungen)-Regression durchzuführen, um das neuronale Netzwerk 125 durch Anpassen der Parameterwerte abzustimmen, wenn der Mittelwert der Verteilung der verrauschten Zielbilder in dem verrauschten Trainingsdatensatz mit dem fehlerfreien Zielbild übereinstimmt.
  • Wichtig ist, dass das entrauschte, fehlerfreie Bild 190 nicht explizit bekannt sein muss, solange das beschädigte Eingangsbild 180 und das beschädigte Zielbild 185 aus einem beschädigten Trainingsdatensatz mit einer Verteilung von beschädigten Bildern stammen, deren Median das unverfälschte, fehlerfreie Bild 190 ist. Während das unverfälschte, fehlerfreie Bild 190 in dem beschädigten Trainingsdatensatz vorhanden ist, kann das unverfälschte, fehlerfreie Bild 190 nicht direkt beobachtet werden und ist daher „latent“.
  • 2A veranschaulicht ein verrauschtes Bild zum Trainieren des neuronalen Netzwerks 125 und ein Anpassen von Parameterwerten gemäß einem Ausführungsbeispiel. Das Bild in 2A ist ein astrofotografisches Bild, das als ein H-alpha, OIII, SII-Emissionsspektrum (Foto von Samuli Vuorinen) bezeichnet wird. Die Astrofotografie ist von Natur aus sehr lichtarm, und die Belichtungszeiten sind sehr lang. Die Belichtungszeiten sind so lang, dass die Bilder innerhalb eines verrauschten Trainingsdatensatzes aufgrund der Erdrotation nicht perfekt ausgerichtet sind. Darüber hinaus werden Bildbursts bzw. schnelle Bildfolgen (z.B. 100 Bilder) mit einer Belichtungszeit von T anstelle eines einzelnen Bildes mit einer Belichtungszeit von 100T erfasst, um die Entfernung von Artefakten, wie z.B. Satellitenstreifen, zu ermöglichen. Ein Beispiel für einen verrauschten Trainingsdatensatz für die Astrofotografie kann 10 verrauschte Bilder für jede von 100 einzelnen Beobachtungen beinhalten, wobei eine Beobachtung einem im Wesentlichen statischen Bereich des Himmels entspricht.
  • Wenn das verrauschte Zielbild ein Foto ist, wie beispielsweise die in 2A gezeigte Astrofotografie, ist eine Unsicherheit der unbekannten, latenten, rauschfreien Pixelwerte proportional zu den gemessenen Pixelwerten des verrauschten Zielbilds. Die beobachteten Pixelwerte in den hellsten Bereichen des verrauschten Zielbilds (z.B. Sterne in der Astrofotografie) sind somit auch die am wenigsten sicheren Werte. Es ist vorteilhaft, die Werte von Pixeln mit größerer Unsicherheit bei der Bewertung der Verlustfunktion durch Teilen der entsprechenden Pixelwerte in der Verlustfunktion durch die erwartete Unsicherheit zu verkleinern. Bedeutungswerte können berechnet und zur Skalierung von Verlustfunktionswerten verwendet werden, die zur Berechnung der Parameterwerte des neuronalen Netzwerkmodells verwendet werden, wobei ein niedrigerer Bedeutungswert einer größeren Unsicherheit entspricht. Das Herunterskalieren der Pixelwerte in den hellsten Bereichen des verrauschten Zielbilds erhöht die Robustheit und fokussiert auf die dunkleren Bereiche des Bilds. In einem Ausführungsbeispiel kann die Parametereinstelleinheit 135 dazu konfiguriert sein, Einträge der Verlustfunktion, die als Unterschiede zwischen der Ausgabe des neuronalen Netzwerks 125, f(X'), und den verrauschten Zielmustern, Y', berechnet werden, herunterzuskalieren. Bei Fehlen des unbekannten, latenten Bildes kann ein anderes, unabhängiges verrauschtes Bild, bezeichnet als Y" = Y+N3, als eine unvoreingenommene Schätzung der Unsicherheit verwendet und zur Berechnung von Bedeutungswerten verwendet werden.
  • 2B veranschaulicht ein entrauschtes Bild gemäß einem Ausführungsbeispiel. Das in 2B gezeigte entrauschte Bild wird von dem trainierten neuronalen Netzwerk 125 erzeugt, wenn die Parametereinstellungseinheit 135 eine Verlustfunktion aus berechneten Bedeutungswerten berechnet. Das neuronale Netzwerk wird unter Verwendung verrauschter Eingangsbilder und verrauschter Zielbilder trainiert, wie beispielsweise dem in 2A gezeigten Bild.
  • 2C veranschaulicht ein weiteres Blockdiagramm eines Systems 250 zum Trainieren des neuronalen Netzwerks 125 gemäß einem Ausführungsbeispiel. Das System 250 beinhaltet einen Trainingsdatensatz mit Eingabemustern 115, verrauschten Zielmustern 145, Y', und verrauschten Mustern 205, Y". In einem Ausführungsbeispiel ist dann, wenn die Eingangsmuster 115 verrauschte Eingangsmuster sind, das den verrauschten Eingangsmustern 115 zugeordnete Rauschen weder mit dem den verrauschten Zielmuster 145 zugeordneten Rauschen noch mit dem den verrauschten Mustern 205 zugeordneten Rauschen korreliert. In einem Ausführungsbeispiel können die Eingangsmuster 115, die verrauschten Zielmuster 145 und die verrauschten Muster 205 aus einer Sammlung von verrauschten Mustern ausgewählt werden, so dass ein erstes Muster als Eingangsmuster und ein zweites Muster, das sich von dem ersten Muster unterscheidet, als verrauschte Zielmuster für ein erstes Trainingspaar verwendet werden kann. Ein drittes Muster, Y", das sich entweder von dem ersten Muster oder dem zweiten Muster unterscheidet, kann als ein verrauschtes Muster zum Berechnen von Bedeutungswerten, die zum Skalieren der Verlustfunktionswerte verwendet werden, verwendet werden.
  • Ein Eingangsmuster aus den Eingangsmustern 115 und Parameterwerte (z.B. Gewichte) werden in das neuronale Netzwerk 125 eingegeben, um eine Ausgabe f(X') zu erzeugen. Eine Parametereinstellungseinheit 235 empfängt die Ausgabe und ein verrauschtes Zielmuster, das mit dem Eingangsmuster aus den verrauschten Zielmustern 145 gekoppelt ist. Die Parametereinstelleinheit 235 empfängt darüber hinaus ein zusätzliches verrauschtes Muster aus den verrauschten Mustern 205 und passt die Parameterwerte basierend auf dem zusätzlichen verrauschten Muster und einem Vergleich zwischen dem verrauschten Zielmuster und der Ausgabe an. In einem Ausführungsbeispiel sind die verrauschten Muster 205 unabhängige verrauschte Muster, Y" = Y+N3, die als eine unverzerrte Schätzung der Unsicherheit verwendet werden können. Nachdem das neuronale Netzwerk 125 trainiert ist, kann das neuronale Netzwerk 125 dazu eingesetzt werden, die angepassten Parameterwerte auf verrauschte Eingangsdaten anzuwenden und fehlerfreie Ausgangsdaten, wie beispielsweise das in 2B gezeigte rauschfreie Bild, zu erzeugen. In einem Ausführungsbeispiel ist die Parametereinstellungseinheit 235 dazu konfiguriert, Bedeutungswerte basierend auf der Ausgabe des neuronalen Netzwerks 125, f(X'), den verrauschten Zielmustern, Y' und dem zusätzlichen verrauschten Muster Y" zu berechnen. Im Rahmen der Anpassung der Parameter skaliert die Parametereinstellungseinheit 235 die Verlustfunktionswerte mittels der Bedeutungswerte.
  • In einem Ausführungsbeispiel werden die Parameterwerte nicht für jede Ausgabe, sondern für eine Charge von N Ausgaben angepasst, wobei N größer als 1 ist. Von der Parametereinstelleinheit 235 berechnete Gradienten können für die N Ausgaben gemittelt werden, bevor die Parameterwerte eingestellt werden. Die Parametereinstellungseinheit 235 ist dazu konfiguriert, die Parameterwerte anzupassen, um Unterschiede zwischen der Ausgabe und den verrauschten Zielmustern zu reduzieren.
  • In einem Ausführungsbeispiel werden dann, wenn das fehlerfreie Zielmuster im Wesentlichen gleich einem Mittelwert der Datenverteilung der verrauschten Zielmuster 145 ist, werden die Parameterwerte unter Verwendung einer Regression der kleinsten Quadrate basierend auf Unterschieden zwischen den verrauschten Zielmustern 145 und den Ausgaben angepasst. In einem weiteren Ausführungs-beispiel werden dann, wenn das fehlerfreie Zielmuster einem Median der Datenverteilung der verrauschten Zielmuster entspricht, die Parameterwerte unter Verwendung einer Regression geringster absoluter Abweichungen basierend auf den Unterschieden zwischen den verrauschten Zielmustern 145 und den Ausgaben angepasst.
  • 2D veranschaulicht ein Ablaufdiagramm eines anderen Verfahrens 200 zum Trainieren des neuronalen Netzwerks 125 gemäß einem Ausführungsbeispiel. Das Verfahren 200 wird im Kontext eines neuronalen Netzwerks beschrieben, und das Verfahren 200 kann auch durch ein Programm, eine benutzerdefinierte Schaltungsanordnung oder durch eine Kombination aus einer benutzerdefinierten Schaltungsanordnung und einem Programm durchgeführt werden. So kann beispielsweise das Verfahren 200 von einer Grafikverarbeitungseinheit (GPU), einer Zentralverarbeitungseinheit (CPU) oder einem beliebigen Prozessor ausgeführt werden, der die erforderlichen Verarbeitungsvorgänge durchführen kann. Darüber versteht sich für den Fachmann, dass jedes System, das das Verfahren 200 durchführt, innerhalb des Schutzumfangs und des Rahmens von Ausführungs-beispielen der Erfindung liegt.
  • Die Schritte 110, 120 und 130 werden wie zuvor in Verbindung mit 1A beschrieben abgeschlossen. In Schritt 235 berechnet die Einstellungseinheit für skalierte Parameter 235 Bedeutungswerte basierend auf einem zusätzlichen verrauschten Eingangsmuster. Die Bedeutungswerte können die Bedeutung von Ausgabe- bzw. Ausgangsdaten und/oder verrauschten Zielmustern mit größerer Unsicherheit vor der Bewertung der Verlustfunktion durch Dividieren der entsprechenden Parameter durch die erwartete Unsicherheit verringern. Wenn beispielsweise eine Verlustfunktion der kleinsten Quadrate verwendet wird, kann der Bedeutungswert als (Y"2 + ε), worin ε eine kleine Zahl ist, die eine nachfolgende Division durch Null verhindert. Das Quadrat der Differenz zwischen f(X') und Y' wird dann mittels des Bedeutungswerts skaliert: (f(X')-Y')2 / (Y"2 + ε). Als ein weiteres Beispiel wird dann, wenn die Verlustfunktion mit geringster absoluter Abweichungen verwendet wird, die Differenz zwischen f(X') und Y' mittels des Bedeutungswerts skaliert: |f(X') - Y'| / (Y" + ε), wobei (Y" + ε) die Bedeutung ist.
  • In Schritt 240 werden die Parameterwerte des neuronalen Netzwerkmodells durch die Einstelleinheit für skalierte Parameter 235 angepasst, um Unterschiede zwischen der Ausgabe und dem verrauschten Zielmuster zu reduzieren. Im Rahmen der Anpassung ist die Einstelleinheit für skalierte Parameter 235 darüber hinaus dazu konfiguriert, die Werte der Verlustfunktion basierend auf einem zusätzlichen verrauschten Muster der verrauschten Muster 205 zu skalieren. In einem Ausführungsbeispiel wird von der Einstelleinheit für skalierte Parameter 235 eine Verlustfunktion der kleinsten Quadrate (d.h. L2) auf die Unterschiede angewendet, um die Parameterwerte anzupassen. In einem anderen Ausführungsbeispiel wird von der Einstelleinheit für skalierte Parameter 235 eine Verlustfunktion mit geringsten absoluten Abweichungen (d.h. L1) auf die Unterschiede angewendet, um die Parameterwerte anzupassen.
  • Wichtig ist, dass keine Ground Truth (fehlerfreien) Zielmuster benötigt werden, um das neuronale Netzwerk 125 zu trainieren. Stattdessen können verrauschte Zielmuster und verrauschte Eingangsmuster verwendet werden, um das neuronale Netzwerk 125 zu trainieren, um die Eingangsdaten zu entrauschen. In einem Ausführungsbeispiel ist die Datenverteilung der verrauschten Zielmuster 145 relativ zu dem latenten, fehlerfreien Zielmuster so, dass das latente, fehlerfreie Zielmuster ein Durchschnitt (d.h. Mittelwert) der verrauschten Zielmuster 145 ist. In einem anderen Ausführungsbeispiel ist die Datenverteilung der verrauschten Zielmuster 145 relativ zu dem latenten, fehlerfreien Zielmuster so, dass das latente, fehlerfreie Zielmuster eines der am häufigsten auftretenden (d.h. medianen) der verrauschten Zielmuster 145 ist. Der verrauschte Trainingsdatensatz kann schnell erzeugt werden, viel schneller und mit weniger Berechnungen als die fehlerfreien Zielmuster. Obwohl die Trainingszeit erhöht wird, verkürzt sich daher die Dauer der Erstellung des Trainingsdatensatzes, und wird die Trainingszeit im Vergleich zu konventionellem Training, das die fehlerfreien Zielmuster erfordert, signifikant reduziert.
  • Parallelverarbeitungsarchitektur
  • 3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einem Ausführungsbeispiel. Die PPU 300 kann dazu konfiguriert sein, das Trainingssystem für neuronale Netzwerke 150 oder 250 zu implementieren.
  • In einem Ausführungsbeispiel ist die PPU 300 ein Multithread-Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 300 ist eine latenzverbergende Architektur, die entwickelt wurde, um eine große Anzahl von Threads parallel zu verarbeiten. Ein Thread (d.h. ein Thread der Ausführung) ist eine Instanziierung eines Satzes von Anweisungen, die dazu konfiguriert sind, von der PPU 300 ausgeführt zu werden. In einem Ausführungs-beispiel ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die dazu konfiguriert ist, eine Grafik-Rendering-Pipeline zum Verarbeiten von dreidimensionalen (3D) Grafikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeigevorrichtung (LCD), zu erzeugen. In anderen Ausführungsbeispielen kann die PPU 300 zum Durchführen von Universalberechnungen verwendet werden. Obwohl hierin ein beispielhafter Parallelprozessor zu veranschaulichenden Zwecken bereitgestellt ist, ist dringend darauf hinzuweisen, dass dieser Prozessor nur zu veranschaulichenden Zwecken beschrieben wird und jeder Prozessor als Ergänzung und/oder Ersatz für denselben verwendet werden kann.
  • Wie in 3 gezeigt ist, beinhaltet die PPU 300 eine Eingabe/Ausgabe- bzw. Input/Output (I/O)-Einheit 305, eine Host-Schnittstelleneinheit 310, eine Frontend-Einheit 315, eine Scheduler-Einheit 320, eine Arbeitsverteilungseinheit 325, einen Verteiler bzw. Hub 330, eine Kreuz- bzw. Querschiene (Xbar) 370, einen oder mehrere Universalverarbeitungscluster bzw. General Processing Cluster (GPCs) 350 und eine oder mehrere Partitionierungseinheiten 380. Die PPU 300 kann über einen Systembus 302 mit einem Host-Prozessor oder anderen Peripheriegeräten verbunden sein. Die PPU 300 kann darüber hinaus mit einem lokalen Speicher verbunden sein, der eine Anzahl von Speichervorrichtungen 304 umfasst. In einem Ausführungsbeispiel kann der lokale Speicher eine Anzahl von dynamischen DRAM (Dynamic Random Access Memory)-Vorrichtungen umfassen.
  • Die I/O-Einheit 305 ist dazu konfiguriert, Kommunikationen (d.h. Befehle, Daten usw.) von einem Host-Prozessor (nicht gezeigt) über den Systembus 302 zu senden und zu empfangen. Die I/O-Einheit 305 kann mit dem Host-Prozessor direkt über den Systembus 302 oder über eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einem Ausführungsbeispiel implementiert die I/O-Einheit 305 eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle zur Kommunikation über einen PCIe-Bus. In alternativen Ausführungsbeispielen kann die I/O-Einheit 305 andere Arten von gut bekannten Schnittstellen zur Kommunikation mit externen Vorrichtungen implementieren.
  • Die I/O-Einheit 305 ist mit einer Host-Schnittstelleneinheit 310 gekoppelt, die über den Systembus 302 empfangene Pakete dekodiert. In einem Ausführungsbeispiel repräsentieren die Pakete Befehle, die dazu konfiguriert sind, die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die Host-Schnittstellen-einheit 310 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, wie in den Befehlen angegeben sein kann. So können beispielsweise einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten der PPU 300, wie z.B. eine oder mehrere Kopier-Engines, ein Video-Encoder, ein Video-Decoder, eine Energie-verwaltungseinheit bzw. Power-Management-Einheit (nicht explizit dargestellt) usw. übertragen werden. Mit anderen Worten ist die Host-Schnittstelleneinheit 310 dazu konfiguriert, die Kommunikation zwischen und unter den verschiedenen logischen Einheiten der PPU 300 zu routen.
  • In einem Ausführungsbeispiel kodiert ein von dem Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der Arbeitslasten für die PPU 300 zur Verarbeitung bereitstellt. Eine Arbeitslast kann eine Reihe von Anweisungen und von diesen Anweisungen zu verarbeitende Daten umfassen. Der Puffer ist eine Region in einem Speicher, auf den sowohl von dem Host-Prozessor als auch von der PPU 300 zugegriffen (d.h. lesend/schreibend) werden kann. So kann beispielsweise die Host-Schnittstelleneinheit 310 dazu konfiguriert sein, auf den Puffer in einem mit dem Systembus 302 verbundenen Systemspeicher über Speicheranforderungen zuzugreifen, die von der I/O-Einheit 305 über den Systembus 302 übertragen werden. In einem Ausführungsbeispiel schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Beginn des Befehlsstroms an die PPU 300. Die Host-Schnittstelleneinheit 310 versorgt die Frontend-Einheit 315 mit Zeigern auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 315 verwaltet den einen oder die mehreren Streams, wobei sie Befehle aus den Streams liest und Befehle an die verschiedenen Einheiten der PPU 300 weiterleitet.
  • Die Front-End-Einheit 315 ist mit einer Scheduler-Einheit 320 gekoppelt, die die verschiedenen GPCs 350 konfiguriert, um Aufgaben zu verarbeiten, die durch den einen oder die mehreren Streams definiert sind. Die Scheduler-Einheit 320 ist dazu konfiguriert, Zustandsinformationen mit Bezug zu den verschiedenen Aufgaben nachzuverfolgen, die von der Scheduler-Einheit 320 verwaltet werden. Der Zustand kann anzeigen, welchem GPC 350 eine Aufgabe zugeordnet ist, ob die Aufgabe aktiv oder inaktiv ist, eine der Aufgabe zugeordnete Prioritätsstufe und so weiter. Die Scheduler-Einheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf dem einen oder den mehreren GPCs 350.
  • Die Scheduler-Einheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die dazu konfiguriert ist, Aufgaben zur Ausführung auf den GPCs 350 zu verteilen. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von geplanten Aufgaben nachverfolgen, die von der Scheduler-Einheit 320 empfangen wurden. In einem Ausführungsbeispiel verwaltet die Arbeitsverteilungseinheit 325 für jeden der GPCs 350 einen Pool offener Aufgaben und einen Pool aktiver Aufgaben. Der Pool offener Aufgaben kann eine Anzahl von Slots (z.B. 32 Slots) umfassen, die Aufgaben enthalten, die zugewiesen von einem bestimmten GPC 350 zu bearbeiten sind. Der Pool aktiver Aufgaben kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben umfassen, die von den GPCs 350 aktiv verarbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 350 entnommen, und wird eine der anderen Aufgaben aus dem Pool offener Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Falls eine aktive Aufgabe auf dem GPC 350 im Leerlauf war, wie beispielsweise während des Wartens auf die Auflösung einer Datenabhängigkeit, kann die aktive Aufgabe aus dem GPC 350 entnommen und in den Pool offener Aufgaben zurückgeführt werden, während eine andere Aufgabe in dem Pool offener Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert über die XBar 370 mit einem oder mehreren GPCs 350. Die XBar 370 ist ein Verbindungsnetzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. So kann beispielsweise die XBar 370 dazu konfiguriert sein, die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 zu koppeln. Obwohl nicht explizit gezeigt, sind eine oder mehrere andere Einheiten der PPU 300 mit der Host-Schnittstelleneinheit 310 gekoppelt. Die anderen Einheiten können ebenfalls über einen Hub 330 mit der XBar 370 verbunden sein.
  • Die Aufgaben werden von der Scheduler-Einheit verwaltet und von der Arbeits-verteilungseinheit 325 an einen GPC 350 gesendet. Der GPC 350 ist dazu konfiguriert, die Aufgabe zu verarbeiten und Ergebnisse zu generieren. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 übernommen, über die XBar 370 an einen anderen GPC 350 weitergeleitet oder in dem Speicher 304 gespeichert werden. Die Ergebnisse können über die Partitionierungseinheiten 380, welche eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 304 implementieren, in den Speicher 304 geschrieben werden. In einem Ausführungsbeispiel beinhaltet die PPU 300 eine Anzahl U von Partitionierungseinheiten 380, die gleich der Anzahl von separaten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Partitionierungseinheit 380 wird nachstehend in Verbindung mit 4B näher beschrieben.
  • In einem Ausführungsbeispiel führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 300 zu planen. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, die den Treiberkern veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu erzeugen. Der Treiberkern gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen verwandter Threads umfassen, die hierin als Warp bezeichnet werden. Ein Thread-Block kann sich auf eine Vielzahl von Thread-Gruppen beziehen, die Anweisungen zum Durchführen der Aufgabe beinhalten. Threads in der gleichen Gruppe von Threads können Daten über gemeinsam genutzten Speicher austauschen. In einem Ausführungsbeispiel umfasst eine Gruppe von Threads 32 verwandte Threads.
  • 4A veranschaulicht eine GPC 350 der PPU 300 aus 3 gemäß einem Ausführungsbeispiel. Wie in 4A gezeigt ist, beinhaltet jeder GPC 350 eine Anzahl von Hardwareeinheiten zum Verarbeiten von Aufgaben. In einem Ausführungsbeispiel beinhaltet jeder GPC 350 einen Pipeline-Verwalter bzw. Pipeline-Manager 410, eine Vorrasterbetriebsablaufeinheit bzw. Pre-Raster Operations Unit (PROP) 415, eine Rastermaschine bzw. Raster-Engine 425, eine Arbeitsverteilungsquerschiene bzw. Work Distribution Crossbar (WDX) 480, eine Speicherverwaltungseinheit bzw. Memory Management Unit (MMU) 490 und einen oder mehrere Texturverarbeitungscluster bzw. Texture Processing Cluster (TPCs) 420. Es ist zu beachten, dass der GPC 350 von 4A anstelle oder zusätzlich zu den in 4A dargestellten Einheiten weitere Hardwareeinheiten beinhalten kann.
  • In einem Ausführungsbeispiel wird der Betriebsablauf des GPC 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration eines oder mehrerer TPCs 420 zum Verarbeiten von Aufgaben, die dem GPC 350 zugeordnet sind. In einem Ausführungsbeispiel kann der Pipeline-Manager 410 zumindest einen der einen oder mehreren TPCs 420 dazu konfigurieren, zumindest einen Teil einer Grafik-Rendering-Pipeline zu implementieren. So kann beispielsweise ein TPC 420 dazu konfiguriert sein, ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipeline-Manager 410 kann darüber hinaus dazu konfiguriert sein, von der Arbeitsverteilungseinheit 325 empfangene Pakete an die entsprechenden logischen Einheiten innerhalb des GPC 350 weiterzuleiten. So können beispielsweise einige Pakete an Hardwareeinheiten mit fester Funktion in der PROP 415 und/oder in der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die TPCs 420 zur Verarbeitung durch die Stammfunktionsmaschine bzw. Stammfunktions-Engine 435 oder den SM 440 weitergeleitet werden können.
  • Die PROP-Einheit 415 ist dazu konfiguriert, die von der Raster-Engine 425 und den TPCs 420 erzeugten Daten an eine Rasterbetriebsablaufeinheit bzw. Raster Operations (ROP)-Einheit in der Partitionierungseinheit 380 zu routen, wie nachstehend näher beschrieben wird. Die PROP-Einheit 415 kann darüber hinaus dazu konfiguriert sein, Optimierungen zur Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressübersetzungen durchzuführen und dergleichen.
  • Die Raster-Engine 425 beinhaltet eine Reihe von Hardwareeinheiten mit fester Funktion, die dazu konfiguriert sind, verschiedene Rasteroperationen durchzuführen. In einem Ausführungsbeispiel beinhaltet die Raster-Engine 425 eine Einrichtmaschine bzw. Setup-Engine, eine Grobrasterungsmaschine bzw. Grobraster-Engine, eine Entnahmemaschine bzw. Culling Engine, eine Abschneidemaschine bzw. Clipping-Engine, eine Feinrasterungsmaschine bzw. Feinraster-Engine und eine Kachelvereinigungsmaschine bzw. Koaleszenz-Engine. Die Setup-Engine empfängt transformierte Eckpunkte bzw. Vertices und erzeugt Ebenengleichungen, die der durch die Knoten definierten geometrischen Stammfunktion zugeordnet sind. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x,y-Abdeckungsmaske für eine Kachel) für die Stammfunktion zu erzeugen. Die Ausgabe der Grobraster-Engine kann an die Culling-Engine übertragen werden, in der der Stammfunktion zugeordnete Fragmente, die einen z-Test nicht bestehen, herausgenommen und an eine Clipping-Engine übertragen werden, in der die außerhalb eines Sichtfelds liegende Fragmente abgeschnitten werden. Die Fragmente, die das Abschneiden und das Herausnehmen überleben, können an eine Feinraster-Engine übergeben werden, um Attribute für die Pixelfragmente basierend auf den von der Setup-Engine erzeugten Ebenengleichungen zu erzeugen. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die beispielsweise von einem innerhalb des TPC 420 implementierten Fragment-Shaders zu verarbeiten sind.
  • Jeder im GPC 350 enthaltene TPC 420 beinhaltet einen M-Pipe Controller (MPC) 430, eine Stammfunktions-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betriebsablauf des TPC 420 und leitet die von dem Pipeline-Manager 410 empfangenen Pakete an die geeigneten Einheiten in dem TPC 420 weiter. So können beispielsweise Pakete, die einem Vertex zugeordnet sind, an die Stammfunktions-Engine 435 weitergeleitet werden, die dazu konfiguriert ist, dem Vertex zugeordnete Vertexattribute aus dem Speicher 304 zu holen. Demgegenüber können Pakete, die einem Shader-Programm zugeordnet sind, an den SM 440 übertragen werden.
  • In einem Ausführungsbeispiel sind die Textureinheiten 445 dazu konfiguriert, Texturkarten (z.B. ein 2D-Array von Texturen) aus dem Speicher 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Shaderprogrammen zu erzeugen, die von dem SM 440 ausgeführt werden. Die Textureinheiten 445 implementieren Texturoperationen wie z.B. Filteroperationen unter Verwendung von Mip-Maps (d.h. Texturkarten mit unterschiedlichen Detaillierungsgraden). Die Textureinheit 445 wird auch als der Load/Store-Pfad für SM 440 bis MMU 490 verwendet. In einem Ausführungsbeispiel beinhaltet jeder TPC 420 zwei (2) Textureinheiten 445.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der dazu konfiguriert ist, Aufgaben zu verarbeiten, die durch eine Reihe von Threads repräsentiert werden. Jeder SM 440 ist multi-threaded und dazu konfiguriert, eine Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig auszuführen. In einem Ausführungsbeispiel implementiert der SM 440 eine SIMD (Single-Instruction, Multiple-Data)-Architektur, bei der jeder Thread in einer Gruppe von Threads (d.h. einem Warp) dazu konfiguriert ist, einen anderen Datensatz auf der Grundlage desselben Befehlssatzes zu verarbeiten. Alle Threads in der Gruppe der Threads führen dieselben Anweisungen aus. In einem anderen Ausführungsbeispiel implementiert der SM 440 eine SIMT (Single-Instruction, Multiple Thread)-Architektur, bei der jeder Thread in einer Gruppe von Threads dazu konfiguriert ist, einen anderen Datensatz auf der Grundlage desselben Befehlssatzes zu verarbeiten, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. Mit anderen Worten können dann, wenn eine Anweisung für die Gruppe von Threads zur Ausführung gesendet wird, einige Threads in der Gruppe von Threads aktiv sein, wodurch der Befehl ausgeführt wird, während andere Threads in der Gruppe von Threads inaktiv sein können, wodurch eine No-Operation (NOP) anstelle der Ausführung des Befehls ausgeführt wird. Der SM 440 kann nachstehend in Verbindung mit 5 näher beschrieben werden.
  • Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der Partitionierungseinheit 380 bereit. Die MMU 490 kann eine Übersetzung von virtuellen Adressen in physikalische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranforderungen bereitstellen. In einem Ausführungsbeispiel stellt die MMU 490 einen oder mehrere Translation Lookaside Buffer (TLBs) zur Verfügung, um eine Übersetzung von virtuellen Adressen in physikalische Adressen in dem Speicher 304 zu verbessern.
  • 4B veranschaulicht eine Speicherpartitionierungseinheit 380 der PPU 300 von 3 gemäß einem Ausführungsbeispiel. Wie in 4B dargestellt ist, beinhaltet die Speicherpartitionierungseinheit 380 eine Raster Operations (ROP)-Einheit 450, einen Level-2 (L2)-Cache 460, eine Speicherschnittstelle 470 und eine L2-Querschiene (Xbar) 465. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32, 64, 128, 1024-Bit-Datenbusse oder dergleichen zur Hochgeschwindigkeits-Datenübertragung implementieren. In einem Ausführungsbeispiel beinhaltet die PPU 300 U-Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Partitionierungseinheit 380, wobei jede Partitionierungseinheit 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. So kann die PPU 300 beispielsweise mit bis zu U Speichervorrichtungen 304, wie beispielsweise Grafikkarten mit doppelter Datenrate, Version 5, synchronen dynamischen Direktzugriffsspeichern (GDDR5 SDRAM) verbunden sein. In einem Ausführungsbeispiel implementiert die Speicherschnittstelle 470 eine DRAM-Schnittstelle und ist U gleich 8.
  • In einem Ausführungsbeispiel implementiert die PPU 300 eine mehrstufige Speicherhierarchie. Der Speicher 304 befindet sich außerhalb des Chips in SDRAM, das mit der PPU 300 gekoppelt ist. Daten aus dem Speicher 304 können abgerufen und in dem L2-Cache 460 gespeichert werden, welcher sich auf dem Chip befindet und zwischen den verschiedenen GPCs 350 geteilt wird. Wie gezeigt ist, beinhaltet jede Partitionseinheit 380 einen Teil des L2-Caches 460, der einer entsprechenden Speichervorrichtung 304 zugeordnet ist. Untergeordnete Caches können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert werden. So kann beispielsweise jeder der SMs 440 einen Level One (L1)-Cache implementieren. Der L1-Cache ist ein privater Speicher, der einem bestimmten SM 440 zugeordnet ist. Daten aus dem L2-Cache 460 können abgerufen und in jedem der L1-Caches zur Verarbeitung in den Funktionseinheiten des SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und der XBar 370 gekoppelt.
  • Die ROP-Einheit 450 beinhaltet einen ROP-Manager 455, eine Farb-ROP bzw. Color ROP (CROP)-Einheit 452 und eine Z ROP (ZROP)-Einheit 454. Die CROP-Einheit 452 führt Rasteroperationen mit Bezug zur Pixelfarbe durch, wie beispielsweise Farbkompression, Pixelblending und dergleichen. Die ZROP-Einheit 454 implementiert in Verbindung mit der Raster-Engine 425 eine Tiefenprüfung. Die ZROP-Einheit 454 empfängt eine Tiefe für einen Musterort, die einem Pixelfragment von der Culling-Engine der Raster-Engine 425 zugeordnet ist. Die ZROP-Einheit 454 testet die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für einen dem Fragment zugeordneten Musterort. Falls das Fragment den Tiefentest für den Musterort besteht, dann aktualisiert die ZROP-Einheit 454 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 425. Der ROP-Manager 455 steuert den Betriebsablauf der ROP-Einheit 450. Es versteht sich, dass die Anzahl von Partitionierungseinheiten 380 von der Anzahl der GPCs 350 verschieden sein kann und daher jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt sein kann. Daher verfolgt der ROP-Manager 455 von den verschiedenen GPCs 350 empfangene Pakete nach und ermittelt, zu welchem GPC 350 ein von der ROP-Einheit 450 erzeugtes Ergebnis weitergeleitet wird. Die CROP-Einheit 452 und die ZROP-Einheit 454 sind über eine L2-XBar 465 mit dem L2-Cache 460 gekoppelt.
  • 5 veranschaulicht den Streaming-Multiprozessor 440 von 4A gemäß einem Ausführungsbeispiel. Wie in 5 dargestellt ist, beinhaltet der SM 440 einen Anweisungs-Cache 505, eine oder mehrere Scheduler-Einheiten 510, eine Registerdatei 520, einen oder mehrere Verarbeitungskerne 550, eine oder mehrere Spezialfunktionseinheiten (SFUs) 552, eine oder mehrere Lade-/Speicher-Einheiten (LSUs) 554, ein Verbindungsnetzwerk 580 und einen gemeinsam genutzten Speicher/L1-Cache 570.
  • Wie vorstehend beschrieben wurde, versendet die Arbeitsverteilungseinheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300. Die Aufgaben sind einem bestimmten TPC 420 innerhalb eines GPC 350 zugeordnet, und, wenn die Aufgabe einem Shaderprogramm zugeordnet ist, kann die Aufgabe einem SM 440 zugeordnet sein. Die Scheduler-Einheit 510 empfängt die Aufgaben von der Arbeitsverteilungs-einheit 325 und verwaltet die Anweisungsplanung für einen oder mehrere dem SM 440 zugeordnete Gruppen von Threads (d.h. Warps). Die Scheduler-Einheit 510 plant Threads zur Ausführung in Gruppen von parallelen Threads, wobei jede Gruppe als ein Warp bezeichnet wird. In einem Ausführungsbeispiel beinhaltet jeder Warp 32 Threads. Die Scheduler-Einheit 510 kann eine Vielzahl verschiedener Warps verwalten, die Warps zur Ausführung planen und dann während jedes Taktzyklus Anweisungen aus der Vielzahl von verschiedenen Warps an die verschiedenen Funktionseinheiten (d.h. Kerne 550, SFUs 552 und LSUs 554) senden.
  • In einem Ausführungsbeispiel beinhaltet jede Scheduler-Einheit 510 eine oder mehrere Anweisungssendeeinheiten 515. Jede Sendeeinheit 515 ist dazu konfiguriert, Anweisungen an eine oder mehrere der Funktionseinheiten zu übertragen. In dem in 5 gezeigten Ausführungsbeispiel beinhaltet die Scheduler-Einheit 510 zwei Sendeeinheiten 515, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Anweisungen aus demselben Warp zu senden. In alternativen Ausführungsbeispielen kann jede Scheduler-Einheit 510 eine einzelne Sendeeinheit 515 oder zusätzliche Sendeeinheiten 515 beinhalten.
  • Jeder SM 440 beinhaltet eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einem Ausführungsbeispiel ist die Registerdatei 520 zwischen jeder der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein dedizierter Teil der Registerdatei 520 zugeordnet ist. In einem anderen Ausführungsbeispiel ist die Registerdatei 520 zwischen den verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt einen Zwischenspeicher für Operanden, die mit den Datenpfaden der Funktionseinheiten verbunden sind, bereit.
  • Jeder SM 440 umfasst L Verarbeitungskerne 550. In einem Ausführungsbeispiel beinhaltet der SM 440 eine große Anzahl (z.B. 128, etc.) verschiedener Verarbeitungskerne 550. Jeder Kern 550 kann eine vollständig gepipelinte Verarbeitungseinheit mit einfacher Genauigkeit beinhalten, die eine Gleitkomma-arithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit beinhaltet. Der Kern 550 kann darüber hinaus eine Verarbeitungseinheit mit doppelter Genauigkeit mit einer Gleitkommaarithmetik-Logikeinheit beinhalten. In einem Ausführungs-beispiel implementieren die Gleitkommaarithmetik-Logikeinheiten den Standard IEEE 754-2008 für Gleitkommaarithmetik. Jeder SM 440 umfasst darüber hinaus M SFUs 552, die spezielle Funktionen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen) ausführen, und N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 570 und der Registerdatei 520 implementieren. In einem Ausführungsbeispiel beinhaltet der SM 440 128 Kerne 550, 32 SFUs 552 und 32 LSUs 554.
  • Jeder SM 440 beinhaltet ein Verbindungsnetzwerk 580, das jede der Funktions-einheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520, dem gemeinsam genutzten Speicher/L1 Cache 570 verbindet. In einem Ausführungs-beispiel ist das Verbindungsnetzwerk 580 eine Querschiene, die dazu konfiguriert werden kann, jede beliebige der Funktionseinheiten mit einem beliebigen der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und Speicherorten in dem gemeinsam genutzten Speicher/L1-Cache 570 zu verbinden.
  • Der gemeinsam genutzte Speicher/L1 Cache 570 ist ein Feld bzw. Array von On-Chip-Speicher, das eine Datenspeicherung und Kommunikation zwischen dem SM 440 und der Stammfunktions-Engine 435 sowie zwischen den Threads in dem SM 440 ermöglicht. In einem Ausführungsbeispiel umfasst der gemeinsam genutzte Speicher/L1-Cache 570 64KB Speicherkapazität und liegt in dem Pfad von dem SM 440 zu der Partitionseinheit 380. Der gemeinsam genutzte Speicher/L1-Cache 570 kann zum Zwischenspeichern von Lese- und Schreib-Vorgängen verwendet werden.
  • Die vorstehend beschriebene PPU 300 kann dazu konfiguriert sein, hochparallele Berechnungen viel schneller als herkömmliche CPUs durchzuführen. Paralleles Rechnen hat Vorteile in der Grafikverarbeitung, der Datenkompression, der Biometrie, den Stream-Verarbeitungsalgorithmen und dergleichen.
  • Bei einer Konfiguration für universelle parallele Berechnungen kann eine einfachere Konfiguration verwendet werden. In diesem Modell werden, wie in 3 gezeigt ist, Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. In dieser Konfiguration weist die Arbeitsverteilungseinheit 325 Thread-Blöcke direkt den TPCs 420 zu und verteilt sie. Die Threads in einem Block führen das gleiche Programm aus, wobei sie eine eindeutige Thread-ID in der Berechnung verwenden, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 440 dazu verwendet wird, das Programm auszuführen und Berechnungen durchzuführen, der gemeinsam genutzte Speicher/L1-Cache 570 zwischen Threads kommuniziert und die LSU 554 dazu verwendet wird, den globalen Speicher über den partitionierten gemeinsam genutzten Speicher/L1-Cache 570 und die Partitionseinheit 380 zu lesen und zu schreiben.
  • Wenn er für universelle parallele Berechnungen konfiguriert ist, kann der SM 440 auch Befehle schreiben, die die Scheduler-Einheit 320 verwenden kann, um neue Arbeiten an den TPCs 420 zu beginnen. In einem Ausführungsbeispiel umfasst die PPU 300 eine Grafikverarbeitungseinheit (GPU). Die PPU 300 ist dazu konfiguriert, Befehle zu empfangen, die Shader-Programme zum Verarbeiten von Grafikdaten spezifizieren. Grafikdaten können als eine Reihe von Stammfunktionen, wie beispielsweise Punkte, Linien, Dreiecke, Vierecke, Dreiecksstreifen und dergleichen, definiert sein. Typischerweise beinhaltet eine Stammfunktion Daten, die eine Anzahl von Vertices für die Stammfunktion (z.B. in einem Modell-Raum-Koordinatensystem) angeben, sowie Attribute, die jedem Vertex der Stammfunktion zugeordnet sind. Die PPU 300 kann dazu konfiguriert sein, die Grafik-Stammfunktionen zu verarbeiten, um einen Rahmenpuffer (d.h. Pixeldaten für jeden der Pixel der Anzeige) zu erzeugen.
  • Eine Anwendung schreibt Modelldaten für eine Szene (d.h. eine Sammlung von Vertices und Attributen) in einen Speicher, wie beispielsweise einen Systemspeicher oder Speicher 304. Die Modelldaten definieren jedes der Objekte, die auf einer Anzeige sichtbar sein können. Die Anwendung führt dann einen API-Aufruf an den Treiberkern durch, der dazu auffordert, die Modelldaten zu rendern und anzuzeigen. Der Treiberkern liest die Modelldaten und schreibt Befehle in den einen oder die mehreren Streams, um Betriebsabläufe zur Verarbeitung der Modelldaten durchzuführen. Die Befehle können verschiedene Shader-Programme referenzieren, die auf den SMs 440 der PPU 300 zu implementieren sind, einschließlich eines oder mehrerer eines Vertex-Shaders, eines Hüllkurven-Shaders, eines Domain-Shaders, eines Geometrie-Shaders und eines Pixel-Shaders. So kann beispielsweise einer oder mehrere der SMs 440 dazu konfiguriert sein, ein Vertex-Shader-Programm auszuführen, das eine Anzahl von durch die Modelldaten definierten Knoten verarbeitet. In einem Ausführungsbeispiel können die verschiedenen SMs 440 dazu konfiguriert sein, verschiedene Shader-Programme gleichzeitig auszuführen. So kann beispielsweise eine erste Teilmenge von SMs 440 dazu konfiguriert sein, ein Vertex-Shader-Programm auszuführen, während eine zweite Teilmenge von SMs 440 dazu konfiguriert sein kann, ein Pixel-Shader-Programm auszuführen. Die erste Teilmenge der SMs 440 verarbeitet Vertex-Daten, um verarbeitete Vertex-Daten zu erzeugen, und schreibt die verarbeiteten Vertex-Daten in den L2-Cache 460 und/oder den Speicher 304. Nachdem die verarbeiteten Vertex-Daten gerastert sind (d.h. aus dreidimensionalen Daten in zweidimensionale Daten im Bildschirmraum umgewandelt wurden), um Fragmentdaten zu erzeugen, führt die zweite Teilmenge von SMs 440 einen Pixel-Shader aus, um verarbeitete Fragmentdaten zu erzeugen, welche dann mit anderen verarbeiteten Fragmentdaten vermischt und in den Einzelbild-Puffer in dem Speicher 304 geschrieben werden. Das Vertex-Shader-Programm und das Pixel-Shader-Programm können gleichzeitig ausgeführt werden und verschiedene Daten aus derselben Szene in einer Pipeline verarbeiten, bis alle Modelldaten für die Szene in den Einzelbild-Puffer übertragen wurden. Anschließend wird der Inhalt des Einzelbild-Puffers an eine Anzeigesteuereinrichtung zur Anzeige auf einer Anzeigevorrichtung übertragen.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z.B. einem drahtlosen, tragbaren Gerät), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einem tragbaren elektronischen Gerät und dergleichen enthalten sein. In einem Ausführungsbeispiel ist die PPU 300 auf einem einzigen Halbleitersubstrat ausgeführt. In einen weiteren Ausführungsbeispiel ist die PPU 300 in einem System auf einem Chip (SoC) zusammen mit einer oder mehreren anderen Logikeinheiten, wie beispielsweise einer CPU mit reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen, enthalten.
  • In einem Ausführungsbeispiel kann die PPU 300 auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen 304 wie beispielsweise GDDR5 SDRAM beinhaltet. Die Grafikkarte kann dazu konfiguriert sein, mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers zu kommunizieren, der z.B. einen Northbridge-Chipsatz und einen Southbridge-Chipsatz beinhaltet. In einem nochmals anderen Ausführungsbeispiel kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) sein, die in dem Chipsatz (z.B. Northbridge) des Motherboards enthalten ist.
  • Innerhalb der PPU 300 können verschiedene Programme ausgeführt werden, um die verschiedenen Schichten CNN, FC 135 und RNN 235 der Video-Klassifizierungs-systeme 115, 145, 200, 215 und 245 zu implementieren. So kann beispielsweise der Gerätetreiber einen Kernel auf der PPU 300 starten, um zumindest eine 2D- oder 3D-CNN-Schicht auf einem SM 440 (oder mehreren SMs 440) zu implementieren. Der Gerätetreiber (oder der anfängliche Kernel, der von der PPU 300 ausgeführt wird) kann auch andere Kerne auf der PPU 300 starten, um andere CNN-Schichten, wie beispielsweise die FC 135, RNN 235 und den Klassifikator 105, 106 oder 206 durchzuführen. Darüber hinaus können einige der CNN-Schichten auf Hardware für feste Einheiten, die innerhalb der PPU 300 implementiert ist, implementiert sein. Es versteht sich, dass Ergebnisse aus einem Kernel von einer oder mehreren dazwischenliegenden Hardwareeinheiten mit fester Funktion verarbeitet werden können, bevor sie von einem nachfolgenden Kernel auf einer SM 440 verarbeitet werden.
  • Beispielhaftes System
  • 6 veranschaulicht ein beispielhaftes System 600, in welchem die verschiedenartige Architektur und/oder die Funktionalität der verschiedenartigen vorangehenden Ausführungsbeispiele implementiert sein können. Das beispielhafte System 600 kann dazu verwendet werden, die Trainingssysteme für neuronale Netzwerke 150 und/oder 250 zu implementieren.
  • Wie gezeigt ist, ist ein System 600 bereitgestellt, das zumindest einen Zentralprozessor 601 beinhaltet, der mit einem Kommunikationsbus 602 verbunden ist. Der Kommunikationsbus 602 kann unter Verwendung jedes geeigneten Protokolls implementiert sein, wie beispielsweise PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport oder (einem) beliebigen anderen Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(en). Das System 600 beinhaltet darüber hinaus einen Hauptspeicher 604. Steuerlogik (Software) und Daten werden in dem Hauptspeicher 604 gespeichert, der als Direktzugriffsspeicher (RAM) ausgeführt sein kann.
  • Das System 600 beinhaltet darüber hinaus Input- bzw. Eingangsvorrichtungen 612, einen Grafikprozessor 608, d.h. eine konventionelle Kathodenstrahlröhre (CRT), eine Flüssigkristallanzeige (LCD), eine Leuchtdiode (LED), eine Plasmaanzeige oder dergleichen. Eine Benutzereingabe kann von den Eingangsvorrichtungen 612, beispielsweise einer Tastatur, einer Maus, einem berührungsempfindlichen Feld, einem Mikrofon und dergleichen empfangen werden. In einem Ausführungsbeispiel kann der Grafikprozessor 606 eine Vielzahl von Shader-Modulen, ein Rasterisierungs-Modul usw. beinhalten. Jedes der vorangehenden Module kann sich sogar auf einer einzigen Halbleiterplattform befinden, um eine Grafikprozessoreinheit (GPU) zu bilden.
  • In der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen Chip beziehen. Es versteht sich, dass sich der Begriff einzelne Halbleiterplattform auch auf Multi-Chip-Module mit erhöhter Konnektivität beziehen kann, welche einen On-Chip-Betriebsablauf simulieren und wesentliche Verbesserungen gegenüber der Nutzung einer herkömmlichen Zentralverarbeitungseinheit (CPU) und Bus-Implementierung vornehmen. Natürlich können die verschiedenen Module je nach Wunsch des Anwenders auch getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen platziert sein.
  • Das System 600 kann auch einen Sekundärspeicher 610 beinhalten. Der Sekundärspeicher 610 beinhaltet beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact Disc-Laufwerk, ein Digital Versatile Disc-(DVD)-Laufwerk, eine Aufzeichnungsvorrichtung, ein universeller serieller Bus-(USB)-Flashspeicher repräsentiert. Das Wechselspeicherlaufwerk liest und/oder schreibt in gut bekannter Weise von einer/auf eine Wechselspeichereinheit.
  • Computerprogramme, oder Logikalgorithmen der Computersteuerung, können in dem Hauptspeicher 604 und/oder dem Sekundärspeicher 610 gespeichert sein. Solche Computerprogramme ermöglichen es dem System 600, bei ihrer Ausführung verschiedene Funktionen auszuführen. Der Speicher 604, der Speicher 610 und/oder jeder beliebige andere Speicher sind mögliche Beispiele für computerlesbare Medien. Datenströme, die Gesten zugeordnet sind, können in dem Hauptspeicher 604 und/oder dem Sekundärspeicher 610 gespeichert sein.
  • In einem Ausführungsbeispiel können die Architektur und/oder Funktionalität der verschiedenen vorhergehenden Figuren im Zusammenhang mit dem Zentral-prozessor 601, dem Grafikprozessor 606, einer integrierten Schaltung (nicht gezeigt), die zumindest einen Teil der Fähigkeiten sowohl des Zentralprozessors 601 als auch des Grafikprozessors 606 erfüllen kann, einem Chipsatz (d.h. einer Gruppe von integrierten Schaltungen, die als Einheit zum Ausführen verwandter Funktionen ausgelegt ist und verkauft werden kann, usw.) und/oder jeder anderen integrierten Schaltung implementiert sein.
  • Dennoch kann die Architektur und/oder Funktionalität der verschiedenen vorangehenden Figuren im Kontext eines allgemeinen Computersystems, eines Platinensystems, eines Spielkonsolensystems für Unterhaltungszwecke, eines anwendungsspezifischen Systems und/oder eines anderen gewünschten Systems implementiert sein. Das System 600 kann beispielsweise in Form eines Desktop-Computers, eines Laptops, eines Servers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder einer beliebigen anderen Art von Logik implementiert sein. Dennoch kann das System 600 in Form verschiedener anderer Vorrichtungen implementiert sein, einschließlich, aber nicht beschränkt auf eine PDA-Vorrichtung (Personal Digital Assistant), eine Mobiltelefonvorrichtung, einen Fernseher usw.
  • Darüber hinaus kann das System 600, obwohl nicht gezeigt, zu Kommunikationszwecken mit einem Netzwerk (z.B. einem Telekommunikationsnetzwerk, einem lokalen Netzwerk bzw. Local Area Network (LAN), einem drahtlosen Netzwerk, einem Fernbereichsnetzwerk bzw. Wide Area Network (WAN) wie beispielsweise dem Internet, ein Peer-to-Peer- Netzwerk, ein Kabelnetzwerk oder dergleichen) gekoppelt sein.
  • Obwohl verschiedene Ausführungsbeispiele vorstehend beschrieben wurden, versteht sich, dass diese nur beispielhaft und nicht als beschränkend dargestellt worden sind. Daher sind die Breite und der Schutzumfang eines bevorzugten Ausführungsbeispiels nicht durch eine der vorstehend beschriebenen beispielhaften Ausführungsbeispiele zu beschränken, sondern ausschließlich in Übereinstimmung mit den folgenden Ansprüchen und deren Äquivalenten zu definieren.

Claims (20)

  1. Computer-implementiertes Verfahren zum Trainieren eines neuronalen Netzwerks, umfassend: Auswählen eines Eingangsmusters aus einem Satz von Trainingsdaten, der Eingangsmuster und verrauschte Zielmuster beinhaltet, wobei die Eingangsmuster und die verrauschten Zielmuster jeweils einem latenten, fehlerfreien Zielmuster entsprechen; Verarbeiten des Eingangsmusters durch ein neuronales Netzwerkmodell, um eine Ausgabe zu erzeugen; Auswählen eines verrauschten Zielmusters aus dem Satz von Trainingsdaten, wobei die verrauschten Zielmuster eine Verteilung relativ zu dem latenten, fehlerfreien Zielmuster aufweisen; und Anpassen von Parameterwerten des neuronalen Netzwerkmodells, um Unterschiede zwischen der Ausgabe und dem verrauschten Zielmuster zu reduzieren.
  2. Computer-implementiertes Verfahren nach Anspruch 1, bei dem das fehlerfreie Zielmuster einem Mittelwert der Verteilung der verrauschten Zielmuster entspricht.
  3. Computer-implementiertes Verfahren nach Anspruch 2, bei dem die Parameterwerte unter Verwendung einer Verlustfunktion der kleinsten Quadrate basierend auf den Unterschieden angepasst werden.
  4. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, bei dem das fehlerfreie Zielmuster einem Median der Verteilung der verrauschten Zielmuster entspricht.
  5. Computer-implementiertes Verfahren nach Anspruch 4, bei dem die Parameterwerte unter Verwendung einer Verlustfunktion geringster absoluter Abweichungen basierend auf den Unterschieden angepasst werden.
  6. Computer-implementiertes Verfahren nach Anspruch 4 oder 5, bei dem das Eingangsmuster durch Rauschen beschädigt ist, das weder mit dem Eingangsmuster noch mit dem verrauschten Zielmuster korreliert ist.
  7. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend: Wiederholen, für zumindest eine zusätzliche Ausgabe, des Auswählens des Eingangsmusters, des Verarbeitens des Eingangsmusters und des Auswählens des verrauschten Zielmusters; und Kombinieren der Unterschiede für die Ausgabe und zusätzlicher Unterschiede für die zumindest eine zusätzliche Ausgabe vor dem Anpassen der Parameterwerte und dann Anpassen der Parameterwerte des neuronalen Netzwerkmodells, um die kombinierten Unterschiede zu reduzieren.
  8. Computer-implementiertes Verfahren nach Anspruch 7, bei dem das Kombinieren die Unterschiede für die zumindest zwei Ausgaben mittelt.
  9. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, bei dem Rauschen in den verrauschten Zielmustern statistisch unabhängiges Rauschen mit einem Mittelwert von Null ist.
  10. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, bei dem die Eingangsmuster fehlerfreie Eingangsmuster sind.
  11. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, bei dem die Eingangsmuster verrauschte Eingangsmuster sind und das den verrauschten Eingangsmustern zugeordnete Rauschen nicht mit dem den verrauschten Zielmustern zugeordneten Rauschen korreliert ist.
  12. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend: Verarbeiten der Eingangsmuster, um zusätzliche Ausgaben zu erzeugen; Auswählen zusätzlicher verrauschter Zielmuster aus dem Satz von Trainingsdaten; und Anpassen der Parameterwerte des neuronalen Netzwerkmodells, um zusätzliche Unterschiede zwischen den zusätzlichen Ausgaben und den zusätzlichen verrauschten Zielmustern zu reduzieren.
  13. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend: Auswählen zusätzlicher Eingangsmuster aus dem Satz der Trainingsdaten; Verarbeiten der zusätzlichen Eingangsmuster, um zusätzliche Ausgaben zu erzeugen; Auswählen zusätzlicher verrauschter Zielmuster aus dem Satz von Trainingsdaten; und Anpassen der Parameterwerte des neuronalen Netzwerkmodells, um zusätzliche Unterschiede zwischen den zusätzlichen Ausgaben und den zusätzlichen verrauschten Zielmustern zu reduzieren.
  14. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend: Auswählen eines zusätzlichen verrauschten Zielmusters aus dem Satz von Trainingsdaten; Berechnen von Bedeutungswerten basierend auf der Ausgabe, dem verrauschten Zielmuster und dem zusätzlichen verrauschten Zielmuster; und Skalieren von Verlustfunktionswerten des neuronalen Netzwerkmodells mittels der Bedeutungswerte.
  15. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, bei dem das fehlerfreie Zielmuster nicht zum Berechnen der Unterschiede verwendet wird.
  16. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, bei dem sich jedes verrauschte Zielmuster von den anderen verrauschten Zielmustern in dem Satz von Trainingsdaten unterscheidet.
  17. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, bei dem die Eingangsmuster eine zweite Verteilung relativ zu dem latenten, fehlerfreien Zielmuster aufweisen, die sich verglichen mit der Verteilung unterscheidet.
  18. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, bei dem die Eingangsmuster ebenfalls die Verteilung relativ zu dem latenten, fehlerfreien Zielmuster aufweisen.
  19. System, umfassend: einen Speicher, der einen Satz von Trainingsdaten speichert, der Eingangsmuster und verrauschte Zielmuster beinhaltet, wobei die Eingangsmuster und die verrauschten Zielmuster jeweils einem latenten, fehlerfreien Zielmuster entsprechen; und eine Parallelverarbeitungseinheit, die mit dem Speicher gekoppelt und dazu konfiguriert ist, ein computerimplementiertes Verfahren nach einem der Ansprüche 1 bis 18 durchzuführen.
  20. Nichtflüchtige, computerlesbare Medien, speichernd Computeranweisungen zum Trainieren eines neuronalen Netzwerks, die, wenn sie von einem Prozessor ausgeführt werden, bewirken, dass der Prozessor ein Verfahren nach einem der Ansprüche 1 bis 18 ausführt.
DE102018127647.8A 2017-06-12 2018-11-06 Systeme und verfahren zum trainieren neuronaler netzwerke auf regression ohne referenzdaten-trainingsmuster Pending DE102018127647A1 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762518447P 2017-06-12 2017-06-12
US15/807,401 2017-11-08
US15/807,401 US10565686B2 (en) 2017-06-12 2017-11-08 Systems and methods for training neural networks for regression without ground truth training samples

Publications (1)

Publication Number Publication Date
DE102018127647A1 true DE102018127647A1 (de) 2019-05-09

Family

ID=64564219

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018127647.8A Pending DE102018127647A1 (de) 2017-06-12 2018-11-06 Systeme und verfahren zum trainieren neuronaler netzwerke auf regression ohne referenzdaten-trainingsmuster

Country Status (2)

Country Link
US (1) US10565686B2 (de)
DE (1) DE102018127647A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11176549B2 (en) * 2018-04-11 2021-11-16 Sap Se Systems and methods for matching transactional data
US10430708B1 (en) 2018-08-17 2019-10-01 Aivitae LLC System and method for noise-based training of a prediction model
US10997463B2 (en) * 2018-11-08 2021-05-04 Adobe Inc. Training text recognition systems
US10990470B2 (en) * 2018-12-11 2021-04-27 Rovi Guides, Inc. Entity resolution framework for data matching
CN109615144B (zh) * 2018-12-20 2022-11-01 中华全国供销合作总社郑州棉麻工程技术设计研究所 棉花回潮率目标值的设定方法、装置、设备及存储介质
CN109685743B (zh) * 2018-12-30 2023-01-17 陕西师范大学 基于噪声学习神经网络模型的图像混合噪声消除方法
US20200257962A1 (en) * 2019-02-12 2020-08-13 Samsung Electronics Co., Ltd. Controllable and interpretable content conversion
JP7321271B2 (ja) 2019-07-26 2023-08-04 富士フイルム株式会社 学習用画像生成装置、方法及びプログラム、並びに学習方法、装置及びプログラム
US11688045B2 (en) 2019-11-12 2023-06-27 Owen M. Dugan Methods and apparatus for removing satellite trails from images
US20210290191A1 (en) * 2020-03-18 2021-09-23 The Regents Of The University Of California Method and system for denoising ct images using a neural network
US10963792B1 (en) * 2020-03-26 2021-03-30 StradVision, Inc. Method for training deep learning network based on artificial intelligence and learning device using the same
US11806631B2 (en) * 2020-05-11 2023-11-07 Rovi Guides, Inc. Gaming content recommendation for a video game
CN111709891B (zh) 2020-06-12 2023-11-24 北京小米松果电子有限公司 图像去噪模型的训练方法、图像去噪方法、装置及介质
US11756304B2 (en) * 2020-06-29 2023-09-12 Owen M. Dugan Methods and apparatus for removing satellite trails from images and/or fitting trail wobble
CN114202796B (zh) * 2020-08-27 2023-08-04 中国电信股份有限公司 模型自适应的目标检测的方法及装置
US11461881B2 (en) * 2020-11-25 2022-10-04 United States Of America As Represented By The Secretary Of The Navy Method for restoring images and video using self-supervised learning
CN113115196B (zh) * 2021-04-22 2022-03-29 东莞市声强电子有限公司 降噪耳机的智能测试方法
US11763429B2 (en) 2021-05-19 2023-09-19 GE Precision Healthcare LLC Deep learning based medical system and method for image acquisition

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9024332D0 (en) 1990-11-08 1990-12-19 British Telecomm Method of training a neural network
US5444796A (en) * 1993-10-18 1995-08-22 Bayer Corporation Method for unsupervised neural network classification with back propagation
GB2321364A (en) 1997-01-21 1998-07-22 Northern Telecom Ltd Retraining neural network
US6108648A (en) 1997-07-18 2000-08-22 Informix Software, Inc. Optimizer with neural network estimator
US6128609A (en) 1997-10-14 2000-10-03 Ralph E. Rose Training a neural network using differential input
US7225172B2 (en) 1999-07-01 2007-05-29 Yeda Research And Development Co. Ltd. Method and apparatus for multivariable analysis of biological measurements
US7653605B1 (en) * 2005-04-15 2010-01-26 Science Applications International Corporation Method of and apparatus for automated behavior prediction
GB2464677A (en) 2008-10-20 2010-04-28 Univ Nottingham Trent A method of analysing data by using an artificial neural network to identify relationships between the data and one or more conditions.
US20120213429A1 (en) 2011-02-17 2012-08-23 Infosys Technologies Limited System and method for extracting flowchart information from digital images
US8700552B2 (en) 2011-11-28 2014-04-15 Microsoft Corporation Exploiting sparseness in training deep neural networks
US20140072242A1 (en) 2012-09-10 2014-03-13 Hao Wei Method for increasing image resolution
US20140156575A1 (en) 2012-11-30 2014-06-05 Nuance Communications, Inc. Method and Apparatus of Processing Data Using Deep Belief Networks Employing Low-Rank Matrix Factorization
US11256982B2 (en) * 2014-07-18 2022-02-22 University Of Southern California Noise-enhanced convolutional neural networks
US10410118B2 (en) 2015-03-13 2019-09-10 Deep Genomics Incorporated System and method for training neural networks
US9633306B2 (en) 2015-05-07 2017-04-25 Siemens Healthcare Gmbh Method and system for approximating deep neural networks for anatomical object detection
US20170154279A1 (en) 2015-11-30 2017-06-01 International Business Machines Corporation Characterizing subpopulations by exposure response
US10565207B2 (en) 2016-04-12 2020-02-18 Hsilin Huang Method, system and program product for mask-based compression of a sparse matrix

Also Published As

Publication number Publication date
US20180357753A1 (en) 2018-12-13
US10565686B2 (en) 2020-02-18

Similar Documents

Publication Publication Date Title
DE102018127647A1 (de) Systeme und verfahren zum trainieren neuronaler netzwerke auf regression ohne referenzdaten-trainingsmuster
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102018101030A1 (de) Filterung von Bilddaten unter Verwendung eines neutralen Netzwerks
DE102018120859A1 (de) Inline-Dateninspektion zur Arbeitslastvereinfachung
DE102013222685A1 (de) System, Verfahren und Computer-Programm-Produkt zum Abtasten einer hierarchischen Tiefe-Karte
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102018128699A1 (de) Einstellen einer Winkelabtastrate während eines Renderings unter Verwendung von Blickinformationen
DE102019101871A1 (de) Verfahren und Vorrichtung zum Gewinnen von Abtastpositionen von Textuieroperationen
DE102017109472A1 (de) Stereo-mehrfach-projektion implementiert unter verwendung einer graphikverarbeitungs-pipeline
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern
DE102020108526A1 (de) Adaptive pixelabtastreihenfolge für zeitlich dichtes rendern
DE102021104310A1 (de) Reservoir-basiertes räumlich-zeitliches resampling nach wichtigkeit unter verwendung einer globalen beleuchtungsdatenstruktur
DE102019108733A1 (de) Schnelle mehrskalige Punktwolkenregistrierung mit einer hierarchischen Gauß-Mischung
DE102019121200A1 (de) Bewegungsadaptives rendern mittels shading mit variabler rate
DE102021132992A1 (de) Messen und Detektieren von Leerlaufzeiten und Erkennen der Ursachen dafür in Cloud-basierten Streaming-Anwendungen
DE102022103358A1 (de) Training für maschinelles lernen im logarithmischen zahlensystem
DE102021111335A1 (de) Techniken zum dynamischen komprimieren von speicherregionen, die einen einheitlichen wert haben
DE102020101525A1 (de) Blind-spot-faltungsarchitekturen und bayessche bildwiederherstellung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication