DE112018004693T5 - Verbessern der effizienz eines neuronalen netzes - Google Patents

Verbessern der effizienz eines neuronalen netzes Download PDF

Info

Publication number
DE112018004693T5
DE112018004693T5 DE112018004693.1T DE112018004693T DE112018004693T5 DE 112018004693 T5 DE112018004693 T5 DE 112018004693T5 DE 112018004693 T DE112018004693 T DE 112018004693T DE 112018004693 T5 DE112018004693 T5 DE 112018004693T5
Authority
DE
Germany
Prior art keywords
activation function
value
computer
training
output limit
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
DE112018004693.1T
Other languages
English (en)
Inventor
Zhuo Wang
Jungwook CHOI
Kailash Gopalakrishnan
Swagath Venkataramani
Charbel Sakr
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018004693T5 publication Critical patent/DE112018004693T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Feedback Control In General (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Analysis (AREA)

Abstract

Es werden Techniken beschrieben, die ein Verbessern einer Effizienz eines neuronalen Netzes erleichtern. Bei einer Ausführungsform wird ein System bereitgestellt, das einen Speicher, der durch einen Computer ausführbare Komponenten speichert, und einen Prozessor aufweist, der in dem Speicher gespeicherte, durch einen Computer ausführbare Komponenten ausführt. Bei einer Implementierung weisen die durch einen Computer ausführbaren Komponenten eine Initialisierungskomponente auf, die einen Anfangswert eines Ausgabegrenzwerts auswählt, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes angibt. Die durch einen Computer ausführbaren Komponenten weisen des Weiteren eine Trainings-Komponente auf, die den Anfangswert des Ausgabegrenzwerts während eines Trainings in einen zweiten Wert des Ausgabegrenzwerts modifiziert, wobei der zweite Wert des Ausgabegrenzwerts der Aktivierungsfunktion als Parameter bereitgestellt wird. Die durch einen Computer ausführbaren Komponenten weisen des Weiteren eine Aktivierungsfunktionskomponente auf, die die Ausgabe der Aktivierungsfunktion auf Grundlage des zweiten Werts des Ausgabegrenzwerts als Parameter ermittelt.

Description

  • TECHNISCHES GEBIET
  • Der Gegenstand der Erfindung bezieht sich allgemein auf ein Erleichtern einer Effizienz innerhalb eines neuronalen Netzes.
  • HINTERGRUND
  • Bei einem neuronalen Netz (das bisweilen als künstliches neuronales Netz oder als tiefes neuronales Netz bezeichnet wird) handelt es sich allgemein um ein Computersystem, das sich darum bemüht, ein Gehirn nachzuahmen. Ein neuronales Netz kann in vielfältiger Weise verwendet werden, zum Beispiel indem es dazu trainiert wird, das Vorhandensein menschlicher Gesichter in Bildern zu erkennen oder gesprochene Sprache von einer ersten Sprache in eine zweite Sprache zu übersetzen.
  • KURZDARSTELLUNG
  • Im Folgenden wird eine Kurzdarstellung bereitgestellt, um ein grundlegendes Verständnis einer oder mehrerer Ausführungsformen der Erfindung zu ermöglichen. Diese Kurzdarstellung soll keine wesentlichen oder entscheidenden Elemente benennen oder einen Umfang der jeweiligen Ausführungsformen oder einen Umfang der Ansprüche skizzieren. Ihr einziger Zweck besteht darin, Konzepte in einer vereinfachten Form als Einleitung der im Folgenden dargestellten ausführlicheren Beschreibung anhand von einer oder mehreren Ausführungsformen, Systemen, auf einem Computer implementierte Verfahren, Vorrichtungen und/oder Computerprogrammprodukte, die eine Effizienz von neuronalen Netzen erleichtern, darzulegen.
  • Gemäß einer Ausführungsform wird ein System bereitgestellt, das einen Speicher, der durch einen Computer ausführbare Komponenten speichert, und einen Prozessor aufweisen kann, der in dem Speicher gespeicherte, durch einen Computer ausführbare Komponenten ausführt. Bei einer oder mehreren Implementierungen weisen die durch einen Computer ausführbaren Komponenten eine Initialisierungskomponente auf, die einen Anfangswert eines Ausgabegrenzwerts auswählt, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes angibt. Die durch einen Computer ausführbaren Komponenten weisen des Weiteren eine Trainings-Komponente auf, die den Anfangswert des Ausgabegrenzwerts während eines Trainings in einen zweiten Wert des Ausgabegrenzwerts modifiziert, wobei der zweite Wert des Ausgabegrenzwerts der Aktivierungsfunktion als Parameter bereitgestellt wird. Die durch einen Computer ausführbaren Komponenten weisen des Weiteren eine Aktivierungsfunktionskomponente auf, die die Ausgabe der Aktivierungsfunktion auf Grundlage des zweiten Werts des Ausgabegrenzwerts als Eingabe ermittelt.
  • Bei einer weiteren Ausführungsform wird ein auf einem Computer implementiertes Verfahren bereitgestellt. In einem Beispiel weist das auf einem Computer implementierte Verfahren ein Initialisieren eines Werts für einen Ausgabegrenzwert durch ein System auf, das mit einem Prozessor in Wirkverbindung steht, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes aufweist, wobei der Wert für den Ausgabegrenzwert durch Training ermittelt wird. Das auf einem Computer implementierte Verfahren kann des Weiteren ein Ermitteln der Ausgabe der Aktivierungsfunktion mit gegebenem Wert des Ausgabegrenzwerts als Parameter für die Aktivierungsfunktion durch das System aufweisen.
  • Bei einer weiteren Ausführungsform wird ein Computerprogrammprodukt bereitgestellt, das ein Training von quantisierten Aktivierungen für eine effiziente Implementierung von tiefgehendem Lernen bereitstellt, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, in dem Programmanweisungen verkörpert sind. Die durch einen Prozessor ausführbaren Programmanweisungen können bewirken, dass der Prozessor zumindest einen Wert für einen Ausgabegrenzwert initialisiert, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes aufweist, wobei der Wert für den Ausgabegrenzwert durch Training ermittelt wird. Die durch einen Prozessor ausführbaren Programmanweisungen können des Weiteren bewirken, dass der Prozessor zumindest die Ausgabe der Aktivierungsfunktion mit gegebenem Wert des Ausgabegrenzwerts als Parameter für die Aktivierungsfunktion ermittelt.
  • Bei einer weiteren Ausführungsform wird ein System bereitgestellt, das einen Speicher, der durch einen Computer ausführbare Komponenten speichert, und einen Prozessor aufweisen kann, der in dem Speicher gespeicherte, durch einen Computer ausführbare Komponenten ausführt. Bei einer oder mehreren Implementierungen weisen die durch einen Computer ausführbaren Komponenten eine Initialisierungskomponente auf, die einen Wert für einen Ausgabegrenzwert auswählt, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes aufweist, wobei der Wert für den Ausgabegrenzwert durch Training ermittelt wird. Die durch einen Computer ausführbaren Komponenten können darüber hinaus eine Aktivierungsfunktionskomponente aufweisen, die die Ausgabe der Aktivierungsfunktion mit gegebenem Wert des Ausgabegrenzwerts als Parameter für die Aktivierungsfunktion ermittelt.
  • Bei einer weiteren Ausführungsform wird ein auf einem Computer implementiertes Verfahren bereitgestellt. In einem Beispiel weist das auf einem Computer implementierte Verfahren ein Initialisieren eines Anfangswerts eines Ausgabegrenzwerts durch ein System auf, das mit einem Prozessor in Wirkverbindung steht, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes aufweist. Das auf einem Computer implementierte Verfahren kann des Weiteren ein Modifizieren des Anfangswerts des Ausgabegrenzwerts während eines Trainings in einen zweiten Wert des Ausgabegrenzwerts durch das System aufweisen, wobei der zweite Wert des Ausgabegrenzwerts der Aktivierungsfunktion als Parameter bereitgestellt wird. Das auf einem Computer implementierte Verfahren kann des Weiteren ein Ermitteln der Ausgabe der Aktivierungsfunktion mit dem gegebenen zweiten Wert des Ausgabegrenzwerts als Parameter durch das System aufweisen.
  • Figurenliste
    • 1 veranschaulicht ein beispielhaftes nichtbeschränkendes neuronales Netzsystem, für das eine Effizienz gemäß einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert werden kann.
    • 2A veranschaulicht ein Blockschaubild eines beispielhaften nichtbeschränkenden Systems, das eine Effizienz in einem neuronalen Netz gemäß einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert.
    • 2B veranschaulicht ein weiteres Blockschaubild eines beispielhaften nichtbeschränkenden Systems, das eine Effizienz in einem neuronalen Netz mit einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert.
    • 3 veranschaulicht eine beispielhafte nichtbeschränkende graphische Darstellung einer Ausgabe einer Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen.
    • 4 veranschaulicht eine weitere beispielhafte nichtbeschränkende graphische Darstellung einer Ausgabe einer Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen.
    • 5 veranschaulicht eine graphische Darstellung, die darstellt, wie ein Bereich einer Aktivierungsfunktion durch Training gemäß einer oder mehreren hierin beschriebenen Ausführungsformen abnehmen kann.
    • 6 veranschaulicht eine beispielhafte graphische Darstellung, die darstellt, wie eine Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen quantisiert werden kann.
    • 7A veranschaulicht eine graphische Darstellung, die zeigt, wie sich ein Variieren eines Bereichs von Aktivierungsfunktionen innerhalb eines neuronalen Netzes auf eine Fehlerquote des neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt.
    • 7B veranschaulicht eine weitere graphische Darstellung, die zeigt, wie sich ein Variieren eines Bereichs von Aktivierungsfunktionen innerhalb eines neuronalen Netzes auf eine Fehlerquote des neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt.
    • 8 veranschaulicht eine graphische Darstellung, die zeigt, wie sich ein Verwenden unterschiedlicher Regulierer bei gleichzeitigem Variieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes auf eine Fehlerquote des neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt.
    • 9 veranschaulicht eine weitere graphische Darstellung, die zeigt, wie sich ein Verwenden unterschiedlicher Regulierer bei gleichzeitigem Variieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes auf eine Fehlerquote des neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt.
    • 10 veranschaulicht eine graphische Darstellung, die zeigt, wie sich ein Variieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes auf eine zugehörige Kreuzentropie-Kostenfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt.
    • 11 veranschaulicht eine graphische Darstellung, die zeigt, wie sich ein Variieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes auf eine zugehörige Kreuzentropie-Kostenfunktion auswirkt, wobei der Bereich und eine oder mehrere Eingaben in die Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen quantisiert werden.
    • 12 veranschaulicht eine graphische Darstellung, die zeigt, wie sich ein Regularisieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes während eines Trainings auf eine zugehörige Trainings-Kostenfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt.
    • 13 veranschaulicht drei graphische Darstellungen, die zeigen, wie eine Clipping(Abschneide)-Aktivierungsfunktion eines neuronalen Netzes trainiert werden kann, damit sie zu einer binären Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen wird.
    • 14 veranschaulicht eine graphische Darstellung, die eine binäre Aktivierungsfunktion eines neuronalen Netzes im Vergleich mit einer Aktivierungsfunktion im Hinblick auf einen Testfehler gemäß einer oder mehreren hierin beschriebenen Ausführungsformen darstellt.
    • 15 veranschaulicht eine weitere graphische Darstellung, die eine binäre Aktivierungsfunktion eines neuronalen Netzes im Vergleich mit einer Aktivierungsfunktion im Hinblick auf einen Testfehler gemäß einer oder mehreren hierin beschriebenen Ausführungsformen darstellt.
    • 16 veranschaulicht eine graphische Darstellung, die darstellt, wie eine Komprimierungsrate eines Bereichs einer Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen einem zugehörigen Testfehler entspricht.
    • 17 veranschaulicht einen Ablaufplan eines beispielhaften nichtbeschränkenden, auf einem Computer implementierten Verfahrens, das ein Verbessern einer Effizienz eines neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert.
    • 18 veranschaulicht einen Ablaufplan eines weiteren beispielhaften nichtbeschränkenden, auf einem Computer implementierten Verfahrens, das ein Verbessern einer Effizienz eines neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert.
    • 19 veranschaulicht ein Blockschaubild einer beispielhaften nichtbeschränkenden Betriebsumgebung, in der eine oder mehrere hierin beschriebene Ausführungsformen erleichtert werden können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende ausführliche Beschreibung dient lediglich der Veranschaulichung und soll Ausführungsformen und/oder eine Anwendung oder Nutzungen von Ausführungsformen nicht einschränken. Darüber hinaus besteht keine Absicht, an jegliche ausdrückliche oder implizite Informationen gebunden zu sein, die in den vorhergehenden Hintergrund- und Kurzdarstellungsabschnitten oder im Abschnitt der ausführlichen Beschreibung dargestellt werden.
  • Ein neuronales Netz enthält im Allgemeinen eine Mehrzahl von Neuronen und Verbindungen zwischen diesen Neuronen. Bei einem Neuron handelt es sich im Allgemeinen um einen Teil eines Computersystems eines neuronalen Netzes, das eine Ausgabe auf Grundlage einer oder mehreren Eingaben (die gewichtet werden können) ermittelt, und das Neuron kann diese Ausgabe auf Grundlage der Ermittlung der Ausgabe einer Aktivierungsfunktion mit den ggf. gewichteten Eingaben ermitteln. Zu Beispielen für Aktivierungsfunktionen zählen eine Rectifier(ReLU)-Aktivierungsfunktion, die eine Ausgabe erzeugt, die in einem Bereich zwischen 0 und einschließlich unendlich liegt; Tanh, die eine Ausgabe erzeugt, die in einem Bereich zwischen -1 und einschließlich 1 liegt; und Sigmoid, die eine Ausgabe erzeugt, die in einem Bereich zwischen 0 und einschließlich 1 liegt. Wenngleich mehrere der hierin beschriebenen nicht beschränkenden Beispiele eine Rectifier(ReLU)-Aktivierungsfunktion betreffen, ist ersichtlich, dass diese Techniken auf sonstige Aktivierungsfunktionen angewendet werden können. Beispielsweise können diese Techniken angewendet werden, um eine geeignete Auflösung der Ausgabe einer Tanh-Aktivierungsfunktion oder einer Sigmoid-Aktivierungsfunktion zu ermitteln.
  • Die Neuronen eines neuronalen Netzes können so verbunden sein, dass die Ausgabe eines Neurons als Eingabe in ein weiteres Neuron dienen kann. Neuronen innerhalb eines neuronalen Netzes können in Schichten organisiert sein, wie in 1 dargestellt. Die erste Schicht eines neuronalen Netzes kann als Eingabeschicht bezeichnet werden, die letzte Schicht eines neuronalen Netzes kann als Ausgabeschicht bezeichnet werden, und jegliche dazwischen liegende Schichten eines neuronalen Netzes können als verdeckte Schicht bezeichnet werden.
  • Die Genauigkeit eines Ergebnisses kann in einem neuronalen Netz insofern von Bedeutung sein, als die Genauigkeit eines neuronalen Netzes sich auf die Korrektheit eines Ergebnisses auswirken kann, das durch das neuronale Netz erzeugt wird (z.B. eine Korrektheit einer Erkennung, ob ein Bild ein menschliches Gesicht darstellt). Genauigkeit kann jedoch kostspielig sein (z.B. im Hinblick auf Verarbeitungs-Ressourcen, eine zum Ermitteln eines Ergebnisses benötigte Zeit oder zum Erstellen eines geeigneten neuronalen Netzes erforderliches Geld, um einen bestimmten Grad an Genauigkeit zu erzielen). Um die Leistungsfähigkeit eines neuronalen Netzes zu verbessern und dessen Kosten zu senken, können Verarbeitungseinheiten mit einer geringeren Genauigkeit einbezogen werden (z.B. 8-, 4- oder 2-Bit-Verarbeitungseinheiten im Gegensatz zu 64- oder 32-Bit-Verarbeitungseinheiten).
  • Wenn ein neuronales Netz trainiert wird, während es mit geringer Genauigkeit quantisiert wird, kann jedoch Korrektheit aufgrund von durch Quantisierung eingebrachtem Rauschen verloren gehen. Diese verringerte Korrektheit kann die Leistungsfähigkeit des neuronalen Netzes verringern, da die Fähigkeit des neuronalen Netzes zu erkennen, was zu erkennen es trainiert wird, verringert sein kann. Der vorliegende Gegenstand sieht eine Verringerung der Genauigkeit in einem neuronalen Netz durch Quantisierung vor, so dass Kosteneinsparungen erzielt werden können, während ein Verlust an Korrektheit bei der Leistungsfähigkeit des neuronalen Netzes verringert wird.
  • Eine oder mehrere Ausführungsformen werden im Folgenden unter Bezugnahme auf die Zeichnungen beschrieben, in denen überall gleiche Bezugszeichen verwendet werden, um auf gleiche Elemente zu verweisen. In der folgenden Beschreibung werden zur Erläuterung zahlreiche spezifische Einzelheiten dargelegt, um ein umfassenderes Verständnis der einen oder mehreren Ausführungsformen zu ermöglichen. Es ist jedoch ersichtlich, dass in verschiedenen Fällen die eine oder mehreren Ausführungsformen ohne diese spezifischen Einzelheiten umgesetzt werden können.
  • 1 veranschaulicht ein beispielhaftes nichtbeschränkendes neuronales Netzsystem, für das eine Effizienz gemäß einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert werden kann. Aspekte von Systemen (z.B. eines Systems 100 und dergleichen), Vorrichtungen oder Prozessen, die in dieser Offenbarung erläutert werden, können eine oder mehrere durch eine Maschine ausführbare Komponenten bilden, die innerhalb einer oder mehrerer Maschinen verkörpert sind, z.B. in einem oder mehreren, einer oder mehreren Maschinen zugehörigen, durch einen Computer lesbaren Medien verkörpert sind. (Eine) solche Komponente(n) kann/können bei Ausführung durch die eine oder die mehreren Maschinen, z.B. (einen) Computer, (eine) Datenverarbeitungseinheit(en), (eine) virtuelle Maschine(n) usw. bewirken, dass die Maschine(n) die oben beschriebenen Vorgänge durchführen. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • Das System 100 und/oder die Komponenten des Systems 100 können eingesetzt werden, um Hardware und/oder Software zu verwenden, um Probleme hochtechnischer Natur zu lösen, die nicht abstrakt sind und die nicht als eine Reihe von geistigen Handlungen durch einen Menschen durchgeführt werden können. Beispielsweise können das System 100 und/oder die Komponenten des Systems 100 eingesetzt werden, um Hardware und/oder Software dazu zu verwenden, Vorgänge einschließlich eines Erleichterns einer Effizienz innerhalb eines neuronalen Netzes durchzuführen.
  • Des Weiteren können einige der durchgeführten Prozesse durch Spezialcomputer durchgeführt werden, um definierte Aufgaben im Zusammenhang mit einem Erleichtern einer Effizienz innerhalb eines neuronalen Netzes auszuführen. Das System 100 und/oder Komponenten des Systems 100 können eingesetzt werden, um neue Probleme zu lösen, die durch Weiterentwicklungen in Technologie, Computernetzwerken, dem Internet und dergleichen entstehen. Das System 100 kann des Weiteren technische Verbesserungen an Live- und auf dem Internet beruhenden Lernsystemen durch Verbessern einer Verarbeitungseffizienz von Verarbeitungskomponenten bereitstellen, die einem Erleichtern einer Effizienz innerhalb eines neuronalen Netzes zugehörig sind.
  • Wie dargestellt, handelt es sich bei dem System 100 um ein neuronales Netz, das fünf Neuronen aufweist - ein Neuron 102, ein Neuron 104, ein Neuron 106, ein Neuron 108 und ein Neuron 110. Die Eingabeschicht 124 dieses neuronalen Netzes besteht aus dem Neuron 102 und dem Neuron 104. Die verdeckte Schicht 126 dieses neuronalen Netzes besteht aus dem Neuron 106 und dem Neuron 108. Die Ausgabeschicht 128 dieses neuronalen Netzes besteht aus dem Neuron 110. Jedes der Neuronen der Eingabeschicht 124 ist mit jedem der Neuronen der verdeckten Schicht 126 verbunden. Das heißt, die ggf. gewichtete Ausgabe jedes Neurons der Eingabeschicht 124 wird als Eingabe in jedes Neuron der verdeckten Schicht 126 verwendet. Darüber hinaus ist jedes der Neuronen der verdeckten Schicht 126 mit jedem der Neuronen (hier mit einem Neuron) der Ausgabeschicht 128 verbunden.
  • Das neuronale Netz des Systems 100 stellt ein vereinfachtes Beispiel dar, so dass bestimmte Merkmale der Deutlichkeit halber hervorgehoben werden können. Es ist ersichtlich, dass die vorliegenden Techniken auf sonstige neuronale Netze angewendet werden können, darunter auf solche, die erheblich komplexer als das neuronale Netz des Systems 100 sind.
  • Angesichts des Kontextes des neuronalen Netzes des Systems 100 von 1 veranschaulichen die graphischen Darstellungen von 3 bis 16 verschiedene Möglichkeiten, wie eine Effizienz eines neuronalen Netzes, zum Beispiel des neuronalen Netzes des Systems 100, erleichtert werden kann; veranschaulichen die Ablaufpläne von 17 bis 18 auf einem Computer implementierte Verfahren, die implementiert werden können, um eine Effizienz eines neuronalen Netzes wie zum Beispiel des neuronalen Netzes des Systems 100 zu erhöhen; und veranschaulicht das Blockschaubild von 19 eine Betriebsumgebung, in der ein neuronales Netz wie zum Beispiel das neuronale Netz des Systems 100 implementiert werden kann.
  • 2A veranschaulicht ein Blockschaubild eines beispielhaften nichtbeschränkenden Systems 200, das eine Effizienz in einem neuronalen Netz gemäß einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert. Das System 200 kann dieselben oder ähnliche Merkmale und Funktionalitäten wie die Systeme 100 und 250 und umgekehrt enthalten. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • Wie in 2A dargestellt, kann das System 200 eine Komponente 218 eines neuronalen Netzes enthalten. Die Komponente 218 des neuronalen Netzes kann verschiedene durch einen Computer ausführbare Komponenten enthalten, darunter eine Initialisierungskomponente 202, eine Trainings-Komponente 204, eine Aktivierungsfunktionskomponente 206, eine Clipping-Komponente 208, eine Rückwärtspropagierungskomponente 210 und eine Aktivierungsfunktions-Auswahlkomponente 220, ohne darauf beschränkt zu sein. Die Komponente 218 des neuronalen Netzes kann darüber hinaus zumindest einen Speicher 212 enthalten oder diesem auf andere Weise zugehörig sein, der durch einen Computer ausführbare Komponenten (z.B. die Initialisierungskomponente 202, die Trainings-Komponente 204, die Aktivierungsfunktionskomponente 206, die Clipping-Komponente 208, die Rückwärtspropagierungskomponente 210 und die Aktivierungsfunktions-Auswahlkomponente 220) speichert. Die Komponente 218 des neuronalen Netzes kann darüber hinaus zumindest einen Prozessor 214 enthalten oder diesem auf andere Weise zugehörig sein, der die in dem Speicher 212 gespeicherten, durch einen Computer ausführbaren Anweisungen ausführt. Die Komponente 218 des neuronalen Netzes kann des Weiteren einen Systembus 216 enthalten, der die verschiedenen Komponenten, darunter die Initialisierungskomponente 202, die Trainings-Komponente 204, die Aktivierungsfunktionskomponente 206, die Clipping-Komponente 208, die Rückwärtspropagierungskomponente 210, die Aktivierungsfunktions-Auswahlkomponente 220, den Speicher 212 und/oder den Prozessor 214, ohne darauf beschränkt zu sein, verbinden kann.
  • Um eine Effizienz eines neuronalen Netzes zu erleichtern, kann die Komponente 218 des neuronalen Netzes die Initialisierungskomponente 202 enthalten. Bei einigen Implementierungen kann die Initialisierungskomponente 202 einen Anfangswert eines Ausgabegrenzwerts auswählen, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes angibt. Die Komponente 218 des neuronalen Netzes kann darüber hinaus die Trainings-Komponente 204 enthalten. Bei einigen Implementierungen kann die Trainings-Komponente 204 den Anfangswert des Ausgabegrenzwerts während eines Trainings in einen zweiten Wert des Ausgabegrenzwerts modifizieren, wobei der zweite Wert des Ausgabegrenzwerts der Aktivierungsfunktion als Parameter bereitgestellt wird. Die Komponente 218 des neuronalen Netzes kann darüber hinaus die Aktivierungsfunktionskomponente 206 enthalten. Bei einigen Implementierungen kann die Aktivierungsfunktionskomponente 206 die Ausgabe der Aktivierungsfunktion auf Grundlage eines Verwendens des zweiten Werts des Ausgabegrenzwerts als Parameter ermitteln.
  • Die Komponente 218 des neuronalen Netzes kann darüber hinaus die Clipping-Komponente 208 enthalten. Bei einigen Implementierungen kann die Clipping-Komponente 208 während eines Trainings mit der Trainings-Komponente ein Clipping durchführen, um eine Verschlechterung der Korrektheit aufgrund einer Quantisierung zu verringern. Die Komponente 218 des neuronalen Netzes kann darüber hinaus die Rückwärtspropagierungskomponente 210 enthalten. Bei einigen Implementierungen kann die Rückwärtspropagierungskomponente 210 während eines Trainings mit der Trainings-Komponente eine Rückwärtspropagierung durchführen. Die Komponente 218 des neuronalen Netzes kann darüber hinaus die Aktivierungsfunktions-Auswahlkomponente 220 enthalten. Bei einigen Implementierungen kann die Aktivierungsfunktions-Auswahlkomponente 220 ermitteln, dass eine Rectifier Linear Unit als Aktivierungsfunktion in einem Fall vollständiger Genauigkeit zu verwenden ist, und wobei ein Kreuzentropieverlust konvergiert, wenn der Ausgabegrenzwert steigt; und ermitteln, dass mit steigendem Ausgabegrenzwert auch eine Verlustfunktion bei einer Quantisierung zunimmt, und sie ermittelt, dass ein Aktivierungsfunktionstyp der Aktivierungsfunktion zu verwenden ist, bei dem es sich um einen anderen als eine Rectifier Linear Unit handelt.
  • Es versteht sich, dass die Architektur des Systems 200 variieren kann. Wenngleich zum Beispiel verschiedene Komponenten des Systems 200 als innerhalb der Komponente 218 des neuronalen Netzes enthalten dargestellt werden, versteht es sich, dass diese Anordnung eher logisch als ein Hinweis darauf ist, dass die verschiedenen Komponenten innerhalb einer Einheit enthalten sind. Das heißt, die verschiedenen Komponenten können auf verschiedene Datenverarbeitungseinheiten in einer vernetzten oder verteilten Datenverarbeitungsumgebung verteilt sein. Es versteht sich darüber hinaus, dass sonstige geeignete Architekturen vorhanden sein können, die mehr oder weniger Komponenten einsetzen, als in dem System 200 dargestellt werden. Beispielsweise kann ein weiteres System vorhanden sein, in dem die Aktivierungsfunktions-Auswahlkomponente 220 nicht enthalten ist.
  • 2B veranschaulicht ein weiteres Blockschaubild eines beispielhaften nichtbeschränkenden Systems 250, das eine Effizienz in einem neuronalen Netz mit einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert. Das System 250 kann dieselben oder ähnliche Merkmale und Funktionalitäten wie die Systeme 100 und 200 und umgekehrt enthalten. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • Wie in 2B dargestellt, kann das System 250 eine Komponente 256 eines neuronalen Netzes enthalten. Die Komponente 256 des neuronalen Netzes kann verschiedene durch einen Computer ausführbare Komponenten enthalten, darunter eine Initialisierungskomponente 252 und eine Aktivierungsfunktionskomponente 254, ohne darauf beschränkt zu sein. Die Komponente 256 des neuronalen Netzes kann darüber hinaus zumindest einen Speicher 212 enthalten oder diesem auf andere Weise zugehörig sein, der durch einen Computer ausführbare Komponenten (z.B. die Initialisierungskomponente 252 und die Aktivierungsfunktionskomponente 254) speichert. Die Komponente 256 des neuronalen Netzes kann darüber hinaus zumindest einen Prozessor 214 enthalten oder diesem auf andere Weise zugehörig sein, der die in dem Speicher 212 gespeicherten, durch einen Computer ausführbaren Anweisungen ausführt. Die Komponente 256 des neuronalen Netzes kann des Weiteren einen Systembus 216 enthalten, der die verschiedenen Komponenten, darunter die Initialisierungskomponente 252, die Aktivierungsfunktionskomponente 254, den Speicher 212 und/oder den Prozessor 214, ohne darauf beschränkt zu sein, verbinden kann.
  • Um eine Effizienz eines neuronalen Netzes zu erleichtern, kann die Komponente 256 des neuronalen Netzes die Initialisierungskomponente 252 enthalten. Bei einigen Implementierungen kann die Initialisierungskomponente 252 einen Wert für einen Ausgabegrenzwert auswählen, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes aufweist, wobei der Wert für den Ausgabegrenzwert durch Training ermittelt wird. Die Komponente 256 des neuronalen Netzes kann darüber hinaus die Aktivierungsfunktionskomponente 254 enthalten. Bei einigen Implementierungen kann die Aktivierungsfunktionskomponente 254 die Ausgabe der Aktivierungsfunktion mit gegebenem Wert des Ausgabegrenzwerts als Parameter für die Aktivierungsfunktion ermitteln.
  • Es versteht sich, dass die Architektur des Systems 250 variieren kann. Wenngleich zum Beispiel verschiedene Komponenten des Systems 250 als innerhalb der Komponente 256 des neuronalen Netzes enthalten dargestellt werden, versteht es sich, dass diese Anordnung eher logisch als ein Hinweis darauf ist, dass die verschiedenen Komponenten innerhalb einer Einheit enthalten sind. Das heißt, die verschiedenen Komponenten können auf verschiedene Datenverarbeitungseinheiten in einer vernetzten oder verteilten Datenverarbeitungsumgebung verteilt sein. Es versteht sich darüber hinaus, dass sonstige geeignete Architekturen vorhanden sein können, die mehr oder weniger Komponenten einsetzen, als in dem System 250 dargestellt werden.
  • 3 veranschaulicht eine beispielhafte nichtbeschränkende graphische Darstellung 300 einer Ausgabe einer Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen. In einigen Beispielen kann es sich bei der in 3 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 300 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • Einigen neuronalen Netzen können zwei Datenstrukturen zugehörig sein - die Gewichtung des Netzes (ein Ausmaß eines Einflusses, den die Ausgabe einer Aktivierungsfunktion des neuronalen Netzes auf die Ausgabe einer weiteren Aktivierungsfunktion des neuronalen Netzes aufweist) und die Merkmale des neuronalen Netzes (eine Ausgabe jeder Aktivierungsfunktion des neuronalen Netzes).
  • Bei einer Darstellung einer Datenstruktur eines neuronalen Netzes kann eine Quantisierung verwendet werden. Bei einer Quantisierung handelt es sich allgemein um einen Prozess zum Einschränken eines Satzes von Zahlen auf einen kleineren, diskreten Satz von Zahlen, zum Beispiel ein Einschränken aller reellen Zahlen auf Ganzzahlen. Bei einer Quantisierung können zwei Überlegungen angestellt werden: (a) ein Bereich von darzustellenden Zahlen (z.B. von 0 bis einschließlich 100); und (b) eine Auflösung der dargestellten Zahlen (z.B. zwischen 0 und 100 werden Zahlen in Schritten von 0,1 dargestellt, so dass die folgenden Zahlen dargestellt würden: 0,0, 0,1, 0,2, ... 100,0). Wenn der Bereich und die Auflösung jeweils getrennt mit einer Anzahl von binären Bits dargestellt werden können, kann die Anzahl von Bits insgesamt, die zum Darstellen eines Satzes von Zahlen in einem bestimmten Bereich und mit einer bestimmten Auflösung verwendet wird, eine Summe der Anzahl von Bits, die zum Darstellen des Bereichs verwendet wird, und einer Anzahl von Bits sein, die zum Darstellen der Auflösung verwendet wird.
  • Eine Aktivierungsfunktion berechnet im Allgemeinen ein Skalarprodukt innerhalb eines Neurons eines neuronalen Netzes. Eine Aktivierungsfunktion wie zum Beispiel ReLU kann einen unendlichen Bereich und eine unendliche Auflösung aufweisen. Es kann versucht werden, den Bereich und/oder die Auflösung einer Aktivierungsfunktion zu quantisieren, um die Effizienz zu erhöhen, zum Beispiel indem eine Ausgabe der Aktivierungsfunktion schneller berechnet wird oder zugelassen wird, dass die Aktivierungsfunktion auf preiswerterer oder weniger leistungsfähiger Hardware berechnet wird.
  • Ein Trainings-Prozess kann implementiert werden, um ein Ausmaß einer Quantisierung für die Ausgabe einer Aktivierungsfunktion zu ermitteln. Durch Training können zwei neue Parameter in ein neuronales Netz (oder einen Teil eines neuronalen Netzes wie zum Beispiel eine Schicht oder ein Neuron des neuronalen Netzes) eingebracht werden. Diese beiden neuen Parameter können als Alpha, das den Bereich einer Ausgabe einer Aktivierungsfunktion definiert, und Beta (β) ausgedrückt werden, das eine Auflösung einer Ausgabe einer Aktivierungsfunktion definiert. Man betrachte ein Beispiel für ein Verringern des Bereichs und der Auflösung von unendlich auf einen Bereich und eine Auflösung, die zusammen mit vier Bits ausgedrückt werden können. Wenn dem Bereich zwei Bits zugewiesen sind, kann der Bereich z.B. 0 bis einschließlich 3 abdecken. Wenn die sonstigen beiden Bits der vier Bits der Auflösung zugewiesen sind, kann die Auflösung 0,25 betragen (z.B. können der Bereich und die Auflösung zusammen die Zahlen 0,0, 0,25, 0,50, ... 3,0 abdecken). Bei einem Training kann es sich bei einem Ausgangspunkt um ReLU handeln, bei der Alpha und Beta unendlich sind. Dann kann der Trainings-Prozess verwendet werden, um Alpha und Beta auf einen endlichen Betrag zu verringern.
  • Die graphische Darstellung 300 zeigt eine graphische Darstellung der Ausgabe einer Aktivierungsfunktion an, wobei sowohl Alpha als auch Beta für die Ausgabe angezeigt werden. Darüber hinaus werden zwei zusätzliche Parameter dargestellt - eine Unterauflösung (Y) und eine Auflösungssteigung (1/m). Unterauflösung und Auflösungssteigung können zusätzliche Parameter sein, die in einigen Typen von Alpha- und Beta-Training verwendet werden. In der graphischen Darstellung 300 werden Alpha 302, Beta 304, Unterauflösung 306 und Auflösungssteigung 308 veranschaulicht. In einigen Beispielen ist die Auflösungssteigung 308 als 1/m definiert, wobei m ein Parameter ist, der mithilfe eines Prozesses eines stochastischen Gradientenabstiegs zum Annähern an oder Erreichen von null trainiert wird. Da die Auflösungssteigung hier als 1/m definiert ist, nähert sich die Auflösungssteigung unendlich an (wobei es sich um die Steigung in einer binären Aktivierungsfunktion handelt), wenn sich m null annähert.
  • In einer Situation, in der zum Beispiel Trainings-Hardware mehr Verarbeitungs-Ressourcen bietet als die Hardware, auf der das neuronale Netz schließlich arbeiten wird (z.B. verwendet die Trainings-Hardware 64-Bit-Prozessoren, wohingegen das neuronale Netz schließlich auf 2-Bit-Prozessoren ausgeführt wird), können diese Parameter der Unterauflösung und Auflösungssteigung verwendet werden, um eine quantisierte Aktivierungsfunktion zu ermitteln, die korrekter ist, als wenn die Parameter der Unterauflösung und der Auflösungssteigung nicht verwendet würden.
  • 4 veranschaulicht eine weitere beispielhafte nichtbeschränkende graphische Darstellung 400 einer Ausgabe einer Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen. In einigen Beispielen kann es sich bei der in 4 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 400 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • Wie dargestellt, wird die Aktivierungsfunktion mit dieser Gleichung ausgedrückt: y = 0.5 ( | x | | x α | + α ) = { α , x [ α , + ) x , x [ 0, α ) 0, x ( ,0 )
    Figure DE112018004693T5_0001
  • In der obigen Gleichung stellen x und y die horizontale Achse 402 bzw. die vertikale Achse 404 der graphischen Darstellung 400 dar. Alpha stellt einen Bereich einer Ausgabe der Aktivierungsfunktion dar. Es ist zu beachten, dass Alpha, wie dargestellt, sowohl auf der horizontalen Achse als auch auf der vertikalen Achse der graphischen Darstellung 400 gekennzeichnet ist. In der obigen Gleichung und wie in der graphischen Darstellung 400 dargestellt, nimmt die Ausgabe 406 der Aktivierungsfunktion y den Wert 0 an, wenn x kleiner als null ist, nimmt den Wert x an, wenn x über null liegt und kleiner als Alpha ist, und nimmt den Wert Alpha an, wenn x mindestens gleich Alpha ist.
  • Anschließend kann Alpha durch Training gemäß der folgenden Gleichung ermittelt werden: d y d α = { 1, x [ α , + ) 0,      s o n s t .
    Figure DE112018004693T5_0002
  • In dieser Gleichung ist die Ableitung von y in Bezug auf Alpha gleich 1, wobei x mindestens gleich Alpha ist, und ansonsten 0. In dem Prozess eines Trainierens von Alpha mit dieser Gleichung kann ein Ansatz eines stochastischen Gradientenabstiegs verwendet werden. Wenn jede Iteration eines stochastischen Gradientenabstiegs verwendet wird, kann eine Rückwärtspropagierung auf die Aktivierungsfunktion angewendet werden, die obige Ableitung kann berechnet werden, und Alpha kann für die nächste Iteration des stochastischen Gradientenabstiegs entsprechend aktualisiert werden.
  • Bei einem Ansatz eines stochastischen Gradientenabstiegs kann Alpha so initialisiert werden, dass es im Vergleich mit der Ausgabe einer Aktivierung einen großen Wert aufweist. Beispielsweise kann Alpha auf einen Höchstwert initialisiert werden, den ein Gleitkomma-Datentyp darstellen kann. Bei einem 32-Bit-Gleitkomma-Datentyp kann dieser Höchstwert 3,4*1038 betragen. Bei einem 64-Bit-Gleitkomma-Datentyp kann dieser Höchstwert 1,7*10308 betragen. Mithilfe des Ansatzes eines stochastischen Gradientenabstiegs nimmt dieser Wert für Alpha im Allgemeinen über Iterationen hinweg ab.
  • In dem Prozess eines Trainierens von Alpha kann ein Rectifier eingesetzt werden. In einigen Beispielen kann ein L2-Rectifier eingesetzt werden, bei dem bei einem höheren Verlust die Parameter stärker geändert werden. In dem Prozess des Trainierens kann auch jeder sonstige geeignete Rectifier eingesetzt werden. Darüber hinaus kann als Ergebnis eines Anwendens eines L2-Rectifier während eines Trainings ein Clipping auf Alpha angewendet werden, wobei ein Wert von Alpha so begrenzt wird, dass er nicht größer als ein vorgegebener Grenzwert wird.
  • 5 veranschaulicht eine graphische Darstellung 500, die darstellt, wie ein Bereich einer Aktivierungsfunktion durch Training gemäß einer oder mehreren hierin beschriebenen Ausführungsformen abnehmen kann. In einigen Beispielen kann es sich bei der in 5 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 500 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In der obigen graphischen Darstellung stellt Lambda (λα) ein Ausmaß einer Regularisierung dar, die an Alpha durchgeführt wird. In der dargestellten graphischen Darstellung 500 ist Lambda gleich 0,01. Im Allgemeinen gibt ein größerer Lambda-Wert an, dass eine stärkere Regularisierung durchgeführt wird, wobei ein Lambda-Wert 0 angibt, dass keine Regularisierung durchgeführt wird. Eine Anzahl von Trainings-Epochen 504 ist entlang der x-Achse der graphischen Darstellung 500 aufgetragen, und ein entsprechender Alpha-Wert 502 ist entlang der y-Achse der graphischen Darstellung 500 aufgetragen.
  • Die graphische Darstellung 500 zeigt, wie Alpha in einem neuronalen ResNet-Netz des Canadian Institute for Advanced Research (CIFAR) über Trainings-Epochen hinweg mithilfe der offenbarten Techniken abnimmt. Alpha wird zunächst auf einen großen Wert festgelegt, um eine Rectifier(ReLU)-Aktivierungsfunktion nachzuahmen, und anschließend konvergieren die Alpha-Werte für verschiedene Schichten des neuronalen CIFAR-ResNet-Netzes während der Trainings-Epochen. Ein optimales Alpha zum Minimieren einer Kostenfunktion wird durch Training erzielt.
  • Aufgrund von Regularisierung wird Alpha in späteren Epochen kleiner, wodurch ein Clipping durchgeführt wird, um eine Verschlechterung der Genauigkeit zu verringern, die durch Quantisierung auftreten kann.
  • 6 veranschaulicht eine graphische Darstellung 600, die darstellt, wie eine Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen quantisiert werden kann. In einigen Beispielen kann es sich bei der in 6 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 600 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • Wie durch die graphische Darstellung 600 dargestellt, wird die zugehörige verwendete Quantisierungsgleichung als xq = Rundung(x/α·(2b-1))·α·1/(2b-1) dargestellt. In dieser Gleichung stellt xq ein berechnetes Ausmaß der Quantisierung dar, stellt b eine Anzahl von Bits dar, die für das jeweilige Ausmaß der Quantisierung verwendet wird (in dem Beispiel der graphischen Darstellung 600 gilt b = 2), und stellt Rundung() eine Funktion dar, die ihre Eingabe auf eine nächste Ganzzahl rundet. Nach einem Durchlaufen eines parametrisierten Clippings werden Werte so eingeschränkt, dass sie zwischen 0 und Alpha liegen. Die Ausgabewerte der zugehörigen Quantisierungsgleichung sind in der graphischen Darstellung 600 aufgetragen, wobei ein Auftreten 602 entlang der y-Achse aufgetragen ist und eine abgeschnittene Aktivierung 604 entlang der x-Achse aufgetragen ist.
  • 7A veranschaulicht eine graphische Darstellung 700, die zeigt, wie sich ein Variieren eines Bereichs von Aktivierungsfunktionen innerhalb eines neuronalen Netzes auf eine Fehlerquote des neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt. In einigen Beispielen kann es sich bei der in 7A beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 700 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In der graphischen Darstellung 700 ist ein Trainings-Fehler 702 entlang der y-Achse aufgetragen und ist eine Epoche 704 entlang der x-Achse aufgetragen. Die graphische Darstellung 700 beruht auf einem neuronalen CIFAR-ResNet-Netz. Ein Ausmaß eines Trainings-Fehlers in jeder Trainings-Epoche wird für jeden von vier verschiedenen Typen eines gemeinsamen Alpha graphisch dargestellt - ReLU (wobei Alpha vollständig weggelassen wird), Parameter-Clipping je Neuron (z.B. weist jedes Neuron eines neuronalen Netzes seinen eigenen Alpha-Wert auf), Parameter-Clipping je Schicht und Parameter-Clipping je Kanal. Alpha wird auf 1,0 initialisiert, und in diesem Beispiel wird keine Regularisierung für Alpha durchgeführt. Wie in der graphischen Darstellung 700 zu sehen ist, erzeugt ein Verwenden von Parameter-Clipping je Schicht den geringsten Trainings-Fehler in dieser Untersuchung.
  • 7B veranschaulicht eine weitere graphische Darstellung 750, die zeigt, wie sich ein Variieren eines Bereichs von Aktivierungsfunktionen innerhalb eines neuronalen Netzes auf eine Fehlerquote des neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt. In einigen Beispielen kann es sich bei der in 7B beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 750 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In der graphischen Darstellung 750 ist ein Überprüfungsfehler 752 entlang der y-Achse aufgetragen und ist eine Epoche 754 entlang der x-Achse aufgetragen. Wie bei der graphischen Darstellung 700 von 7A beruht die graphische Darstellung 750 auf einem neuronalen CIFAR-ResNet-Netz. Wenngleich die graphische Darstellung 700 ein Ausmaß eines Trainings-Fehlers in jeder Trainings-Epoche darstellt, stellt die graphische Darstellung 750 ein Ausmaß eines Überprüfungsfehlers in jeder Trainings-Epoche für jeden von vier verschiedenen Typen eines gemeinsamen Alpha dar - ReLU (wobei Alpha vollständig weggelassen wird), Parameter-Clipping je Neuron (z.B. weist jedes Neuron eines neuronalen Netzes seinen eigenen Alpha-Wert auf), Parameter-Clipping je Schicht und Parameter-Clipping je Kanal. Wie bei der graphischen Darstellung 700 wird Alpha auf 1,0 initialisiert, und in diesem Beispiel wird keine Regularisierung für Alpha durchgeführt. Wie in der graphischen Darstellung 750 zu sehen ist, erzeugt ReLU den geringsten Überprüfungsfehler für diese Untersuchung, gefolgt von der Verwendung von Parameter-Clipping je Schicht.
  • 8 veranschaulicht eine graphische Darstellung 800, die zeigt, wie sich ein Verwenden unterschiedlicher Regulierer bei gleichzeitigem Variieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes auf eine Fehlerquote des neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt. In einigen Beispielen kann es sich bei der in 8 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 800 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In der graphischen Darstellung 800 ist ein Trainings-Fehler 802 entlang der y-Achse aufgetragen und ist eine Epoche 804 entlang der x-Achse aufgetragen. In der graphischen Darstellung 800 stellt Lambdaalpha das Ausmaß der Regularisierung dar, die in jeder Trainings-Epoche verwendet wird, wobei Lambdaalpha auf 0 festgelegt wird, was angibt, dass keine Regularisierung verwendet wird. Wie in der graphischen Darstellung 800 zu sehen ist, funktionieren die vorliegenden Techniken zum Ermitteln eines geeigneten Alpha zuverlässig über einen großen Bereich von Lambda-Werten. Wie dargestellt, erzeugen Lambdaalpha-Werte zwischen 0,00001 und 0,1 ungefähr ähnliche Trainings-Fehler für eine jeweilige Trainings-Epoche. Die graphische Darstellung 800 zeigt einen Trainings-Fehler für verschiedene Trainings-Epochen mithilfe einer CIFAR-ResNet-Aktivierungsfunktion.
  • 9 veranschaulicht eine weitere graphische Darstellung 900, die zeigt, wie sich ein Verwenden unterschiedlicher Regulierer bei gleichzeitigem Variieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes auf eine Fehlerquote des neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt. In einigen Beispielen kann es sich bei der in 9 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 900 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In der graphischen Darstellung 900 ist ein Überprüfungsfehler 902 entlang der y-Achse aufgetragen und ist eine Epoche 904 entlang der x-Achse aufgetragen. Darüber hinaus wird in der graphischen Darstellung 900 eine Vielfalt von Regularisierungswerten für eine Aktivierungsfunktion sowie eine graphische Darstellung mit vollständiger Genauigkeit mit ReLU angewendet. Im Allgemeinen führt ein größeres Alpha zu einem geringeren Überprüfungsfehler.
  • 10 veranschaulicht eine graphische Darstellung 1000, die zeigt, wie sich ein Variieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes auf eine zugehörige Kreuzentropie-Kostenfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt. In einigen Beispielen kann es sich bei der in 10 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 1000 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • 10 (und 11 und 12) kann verwendet werden, um zu veranschaulichen, was geschieht, wenn Alpha trainiert wird. Um zu veranschaulichen, wie der offenbarte Gegenstand zum Erhöhen einer Effizienz eines neuronalen Netzes funktionieren kann, kann ein Trainings-Verlust (eine Kombination aus Kreuzentropieverlust und Gesamtverlust einschließlich Regularisierung) gegen Alpha für einen Datensatz von Hausnummern aus Street View (Street View House Numbers, SVHN) aufgetragen werden. Für die graphische Darstellung 1000 (sowie für eine graphische Darstellung 1100 und eine graphische Darstellung 1200) wird ein trainiertes Modell mit einem bestimmten Quantisierungsschema genutzt und dann das optimale Alpha einer bestimmten Schicht eines neuronalen Netzes, während sonstige Variablen (wie zum Beispiel eine Gewichtung, eine Anzahl von verwendeten Bits und Beta) festgelegt werden, um eine Verlustfunktion zu berechnen. Hier wird in der graphischen Darstellung 1000 die Verlustfunktion für eine vollständige Genauigkeit gegen Alpha berechnet.
  • In der graphischen Darstellung 1000 ist eine Kreuzentropie-Kostenfunktion 1002 entlang der y-Achse aufgetragen und ist Alpha 1004 entlang der x-Achse aufgetragen. Wie in der graphischen Darstellung 1000 gezeigt, konvergiert der Kreuzentropieverlust bei vollständiger Genauigkeit mit zunehmendem Alpha auf einen relativ kleinen Wert. Diese Konvergenz des Kreuzentropieverlusts auf einen relativ kleinen Wert mit zunehmendem Alpha gibt an, dass ReLU mit einem relativ geringen Ausmaß eines Kreuzentropieverlusts verwendet werden kann, wenn keine Quantisierung eingesetzt wird. Wenn vollständige Genauigkeit verwendet wird, kann ein Trainieren eines Clippings von Alpha darüber hinaus Trainings-Kosten einiger Schichten eines neuronalen Netzes reduzieren helfen (hier in der graphischen Darstellung 1000 als act0 und act6 dargestellt).
  • 11 veranschaulicht eine graphische Darstellung 1100, die zeigt, wie sich ein Variieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes auf eine zugehörige Kreuzentropie-Kostenfunktion auswirkt, wobei der Bereich und eine oder mehrere Eingaben in die Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen quantisiert werden. In einigen Beispielen kann es sich bei der in 11 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 1100 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In der graphischen Darstellung 1100 ist eine Kreuzentropie-Kostenfunktion 1102 entlang der y-Achse aufgetragen und ist Alpha 1104 entlang der x-Achse aufgetragen. Die graphische Darstellung 1100 zeigt einen Kreuzentropieverlust, der berechnet wird, wenn sowohl eine Gewichtung als auch Alpha quantisiert werden. Wie in der graphischen Darstellung 1100 zu sehen ist, nimmt bei einer Quantisierung mit zunehmendem Alpha auch die Verlustfunktion zu, was darauf hinweisen kann, dass in dem zugehörigen neuronalen Netz ein anderer Ansatz als ReLU zu verwenden ist. Wie ebenfalls in der graphischen Darstellung 1100 zu sehen ist, unterscheidet sich ein Alpha-Wert, der eine minimierte Kreuzentropie-Kostenfunktion bietet, für verschiedene Schichten. Folglich kann Training dazu genutzt werden, diese unterschiedlichen Alpha-Werte für verschiedene Schichten zu ermitteln.
  • Darüber hinaus besteht ein Plateau für bestimmte Bereiche von Alpha (z.B. ein Alpha-Wert oberhalb von etwa 8,75 für die Schicht act2, über dem die zugehörige Kreuzentropie-Verlustfunktion annähernd statisch ist). Diese Plateaus für bestimmte Bereiche von Alpha können die Verwendung eines Lernens mit Gradientenabstieg behindern. Die in der graphischen Darstellung 1100 gezeigte graphische Darstellung der Schicht act6 kann mehr Probleme für eine Verwendung eines Lernens mit Gradientenabstieg darstellen als die anderen in der graphischen Darstellung 1100 gezeigten Schichten.
  • 12 veranschaulicht eine graphische Darstellung 1200, die zeigt, wie sich ein Regularisieren eines Bereichs einer Aktivierungsfunktion innerhalb eines neuronalen Netzes während eines Trainings auf eine zugehörige Trainings-Kostenfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen auswirkt. In einigen Beispielen kann es sich bei der in 12 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 1200 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • Im Gegensatz zu der graphischen Darstellung 1100 von 11 wird in der graphischen Darstellung 1200 angegeben, wie eine Regularisierung verwendet werden kann, um eine Gesamtverlustfunktion (berechnet, wenn Gewicht und Aktivierung quantisiert werden) zu minimieren. In der graphischen Darstellung 1200 ist eine Trainings-Kostenfunktion 1202 entlang der y-Achse aufgetragen und ist Alpha entlang der x-Achse aufgetragen. Wie in der graphischen Darstellung 1200 zu sehen ist, verringert eine Regularisierung Plateauwirkungen, was eine Verwendung eines Lernens mit Gradientenabstieg im Hinblick auf eine schnellere und korrektere Konvergenz eines Werts erleichtert. Wie in der graphischen Darstellung 1200 gezeigt, kann ein Rectifier ausgewählt werden, um sowohl die Wirkung eines Plateaus abzuschwächen als auch einen globalen Minimalpunkt nicht wesentlich zu stören.
  • Die durchgezogenen Kreise, die jeder Linie der graphischen Darstellung 1200 zugehörig sind, geben einen Wert für Alpha an, der aus dem Trainings-Modell extrahiert wird, was angibt, dass das Training in diesen Fällen wirkungsvoll ist. Anders ausgedrückt, im Vergleich der Kurven der graphischen Darstellung 1200 und der graphischen Darstellung 1100 ist zu erkennen, wie ein Ansatz eines stochastischen Gradientenabstiegs in der graphischen Darstellung 1200 verwendet werden kann, weil ein Gradient vorhanden ist. Das heißt, jede in der graphischen Darstellung 1200 graphisch dargestellte Linie kann so betrachtet werden, dass sie einen bestimmten Punkt aufweist, dessen Wert für einen Ansatz eines stochastischen Gradientenabstiegs leicht zu ermitteln ist. Ein Wert, der für einen Ansatz eines stochastischen Gradientenabstiegs leicht zu ermitteln ist, kann bedeuten, dass weniger Verarbeitungs-Ressourcen verwendet werden können, um diesen bestimmten Punkt zu ermitteln, als ansonsten verwendet würden.
  • Die drei graphischen Darstellungen von 10 bis 12 - die graphische Darstellung 1000, die graphische Darstellung 1100 bzw. die graphische Darstellung 1200 - können wie folgt verglichen und einander gegenübergestellt werden. Die graphische Darstellung 1000 zeigt im Allgemeinen, dass ein größeres Alpha ohne vollständige Genauigkeit einen geringeren Verlust ergibt. Die graphische Darstellung 1100 stellt eine Quantisierung dar und zeigt, dass sich bei Anwendung von Quantisierung die Form der graphisch dargestellten Kurven ändert. In der graphischen Darstellung 1100 ergibt ein größeres Alpha einen größeren Verlust, so dass eine Auswahl eines Alpha-Werts, der den Verlust minimiert, eher in der Mitte einer Kurve als bei einem Extremwert zu finden ist. Die graphische Darstellung 1200 stellt eine Regularisierung dar, und die Form der graphisch dargestellten Kurven ändert sich erneut. Jede Kurve weist im Allgemeinen einen einzelnen Mindestwert auf. Durch Regularisierung kann ein Alpha-Wert leichter ermittelt werden, wenn ein Ansatz eines stochastischen Gradientenabstiegs verwendet wird.
  • 13 veranschaulicht drei graphische Darstellungen 1300, die zeigen, wie eine Clipping-Aktivierungsfunktion eines neuronalen Netzes trainiert werden kann, damit sie zu einer binären Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen wird. In einigen Beispielen kann es sich bei der in 13 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 1300 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • Wie in 13 dargestellt, werden zusätzlich zu den Parametern Alpha und Beta die Parameter Unterauflösung und Unterauflösungssteigung (wie in Bezug auf 2 oben beschrieben) verwendet. Im Allgemeinen ändert sich die Steigung der Ausgabe einer Aktivierungsfunktion von einer flacheren Steigung über eine vertikalere Steigung bis zu einer noch vertikaleren Steigung. Während die Steigung vertikaler wird, nähert sich die Ausgabe der zugehörigen Aktivierungsfunktion der Ausgabe einer binarisierten Aktivierungsfunktion (d.h., einer Aktivierungsfunktion, die zwei mögliche Werte aufweist, die sie ausgeben kann) an. Während sich die Ausgabe der zugehörigen Aktivierungsfunktion der Ausgabe einer binarisierten Aktivierungsfunktion ausreichend annähert, kann die Aktivierungsfunktion durch eine entsprechende binarisierte Aktivierungsfunktion ersetzt werden, um die Ausgabe mit relativ geringem Verlust an Korrektheit der Aktivierungsfunktion zu quantisieren.
  • Wie dargestellt, kann eine Aktivierungsfunktion ausgedrückt werden als: actFn(x)=Clip(x/m+α/2,0,α), wobei sich actFn() auf eine Aktivierungsfunktion bezieht, Clip() sich auf eine Clipping-Funktion bezieht und es sich bei m um die Steigung der Aktivierung handelt (wobei ein kleiner Wert m eine steilere Steigung angibt). Durch wiederholte Trainings-Epochen nähert sich die Clipping-Aktivierungsfunktion der Binarisierung an. Das heißt, während m durch wiederholte Trainings-Epochen abnimmt, wird die Steigung steiler, und die Aktivierungsfunktion nähert sich einer Binarisierungsfunktion an.
  • Die drei graphischen Darstellungen 1300 bestehen aus einer graphischen Darstellung 1302, einer graphischen Darstellung 1304 und einer graphischen Darstellung 1306. Diese drei graphischen Darstellungen 1300 zeigen drei Punkte in einem Trainings-Prozess, die in einer zeitlichen Reihenfolge der graphischen Darstellung 1302, der graphischen Darstellung 1304 und der graphischen Darstellung 1306 auftreten. In der graphischen Darstellung 1302 werden eine trainierte Aktivierungsfunktion 1308 und eine binarisierte Aktivierungsfunktion 1310 dargestellt. In der graphischen Darstellung 1304 wird eine trainierte Aktivierungsfunktion 1312 gezeigt, wobei es sich um einen späteren Punkt im Training als die trainierte Aktivierungsfunktion 1308 handelt. In der graphischen Darstellung 1306 wird eine trainierte Aktivierungsfunktion 1314 gezeigt, wobei es sich um einen späteren Punkt im Training als die trainierte Aktivierungsfunktion 1312 handelt. Es ist zu beachten, dass der Wert m von der trainierten Aktivierungsfunktion 1308 über die trainierte Aktivierungsfunktion 1312 bis zu der trainierten Aktivierungsfunktion 1314 abnimmt, während die Steigung dieser graphisch dargestellten Funktionen steiler wird und sich einer vertikalen Steigung annähert, wie mit der binarisierten Aktivierungsfunktion 1310 dargestellt.
  • 14 veranschaulicht eine graphische Darstellung 1400, die eine binäre Aktivierungsfunktion eines neuronalen Netzes im Vergleich mit einer Aktivierungsfunktion im Hinblick auf einen Testfehler gemäß einer oder mehreren hierin beschriebenen Ausführungsformen darstellt. In einigen Beispielen kann es sich bei der in 14 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 1400 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In der graphischen Darstellung 1400 ist ein Testfehler 1402 entlang der y-Achse aufgetragen und ist eine Epoche entlang der x-Achse aufgetragen. In 14 ist ein Testfehler für Trainings-Epochen für zwei Typen von neuronalen Netzen aufgetragen - (a) ein neuronales Netz entsprechend einem Mixed National Institute of Standards and Technology Deep Neural Network (MNIST-DNN), das eine Aktivierungsfunktion mit vollständiger Auflösung verwendet; und (2) ein neuronales MNIST-DNN-Netz, das eine binäre Aktivierungsfunktion verwendet. Die graphische Darstellung 1400 zeigt, dass nach einer ausreichenden Anzahl von Trainings-Epochen (d.h., nach etwa 250 Trainings-Epochen) der Testfehler für das neuronale MNIST-DNN-Netz, das eine Aktivierungsfunktion mit voller Auflösung verwendet, sowie für das neuronale MNIST-DNN-Netz, das eine binäre Aktivierungsfunktion verwendet, nahezu übereinstimmt.
  • Im Besonderen werden diese beiden Typen von neuronalen Netzen als neuronales MNIST-Netz mit mehrschichtiger Wahrnehmung (Multilayer Perceptron, MLP) mit einer Architektur aus 784 - 2048 - 2048 - 2048 - 10 Neuronen implementiert. Für alle drei Schichten wird eine L2-Regularisierung mit λ=1 verwendet. Die erste Schicht wird über 200 Epochen trainiert, die nächsten beiden Schichten werden über 100 Epochen trainiert, und anschließend wird die äußere Schicht über 100 Epochen trainiert.
  • 15 veranschaulicht eine weitere graphische Darstellung 1500, die eine binäre Aktivierungsfunktion eines neuronalen Netzes im Vergleich mit einer Aktivierungsfunktion im Hinblick auf einen Testfehler gemäß einer oder mehreren hierin beschriebenen Ausführungsformen darstellt. In einigen Beispielen kann es sich bei der in 15 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 1500 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In der graphischen Darstellung 1500 ist ein Testfehler 1502 entlang der y-Achse aufgetragen und ist eine Epoche 1504 entlang der x-Achse aufgetragen. Ähnlich wie in 14 ist in 15 ein Testfehler für Trainings-Epochen für zwei Typen von neuronalen Netzen aufgetragen - (a) ein neuronales MNIST-DNN-Netz, das eine Aktivierungsfunktion mit vollständiger Auflösung verwendet; und (2) ein neuronales MNIST-DNN-Netz, das eine binäre Aktivierungsfunktion verwendet. Die graphische Darstellung 1500 zeigt, dass nach einer ausreichenden Anzahl von Trainings-Epochen (d.h., nach etwa 300 Trainings-Epochen) der Testfehler für das neuronale MNIST-DNN-Netz, das eine Aktivierungsfunktion mit voller Auflösung verwendet, sowie für das neuronale MNIST-DNN-Netz, das eine binäre Aktivierungsfunktion verwendet, nahezu übereinstimmt.
  • Im Besonderen werden diese beiden Typen von neuronalen Netzen als neuronales CIFAR-Visual-Geometry-Group(VGG)-Netz mit einer Architektur aus 128C3 - 128C3 - MP2 - 256C3 - 256C3 - MP2 - 512C3 - 512C3 - MP2 - 1024FC - 1024FC - 10 Neuronen implementiert. L2- sowie L1-Regularisierung werden mit λtype1=0,1; λtype2=0,01; und λtype3=0,001 für die jeweiligen Schicht wiederverwendet. Jede Schicht wird über 50 Epochen trainiert.
  • 16 veranschaulicht eine graphische Darstellung, die darstellt, wie eine Komprimierungsrate eines Bereichs einer Aktivierungsfunktion gemäß einer oder mehreren hierin beschriebenen Ausführungsformen einem zugehörigen Testfehler entspricht. In einigen Beispielen kann es sich bei der in 16 beschriebenen Aktivierungsfunktion um eine Aktivierungsfunktion des neuronalen Netzes des Systems 100 von 1 handeln. In einigen Beispielen können die der graphischen Darstellung 1600 zugehörigen Vorgänge durch das System 100, die Trainings-Komponente 204 des Systems 200 oder die Initialisierungskomponente 252 des Systems 250 durchgeführt werden. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In der graphischen Darstellung 1600 sind ein Testfehler 1602 (der einer graphisch dargestellten Linie 1610 entspricht) und ein Kompressionsverhältnis 1604 (das einer graphisch dargestellten Linie 1608 entspricht) entlang der y-Achse aufgetragen, und eine Anzahl von komprimierten Schichten 1606 ist entlang der x-Achse aufgetragen. Grob gesagt, wenn mehr Schichten eines neuronalen Netzes binarisiert werden, kommt es zu einer höheren Komprimierungsrate sowie zu einem höheren Verlust an Korrektheit. Wie dargestellt, kann ein Binarisieren von 4 Schichten als Ausgleich zwischen einer Komprimierungsrate und einem Testfehler dienen, wobei eine Komprimierungsrate etwa 77,2 % und ein Testfehler etwa 9,28 % beträgt.
  • Die individuellen Eigenschaften jedes neuronalen Netzes können sich darauf auswirken, wo ein angemessenes Ausmaß an Binarisierung von Schichten festgestellt wird. Im Allgemeinen kann ein Ausmaß einer Binarisierung von Schichten gewählt werden, bei dem eine Komprimierungsrate relativ groß sowie ein Testfehler relativ klein ist.
  • 17 veranschaulicht einen Ablaufplan eines beispielhaften nichtbeschränkenden, auf einem Computer implementierten Verfahrens, das ein Verbessern einer Effizienz eines neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert. Eine wiederholte Beschreibung gleicher Elemente, die in sonstigen hierin beschriebenen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In 1702 kann eine Einheit, die mit einem Prozessor in Wirkverbindung steht (z.B. das neuronale Netz des Systems 100 oder die Initialisierungskomponente 202) einen Anfangswert eines Ausgabegrenzwerts auswählen, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes angibt. Beispielsweise kann die Einheit einen Anfangswert für den Ausgabegrenzwert festlegen, der Alpha sein kann, wie an anderer Stelle beschrieben, und der trainiert werden soll, um einen Wert von Alpha zu ermitteln, der für eine Aktivierungsfunktion eines neuronalen Netzes verwendet werden soll. Bei einigen Ausführungsformen kann der Anfangswert von Alpha als relativ großer Wert ausgewählt werden, zum Beispiel der Höchstwert eines 32-Bit- oder 64-Bit-Gleitkomma-Datentyps.
  • In 1704 kann die Einheit (z.B. das neuronale Netz des Systems 100 oder eine Trainings-Komponente) den Anfangswert des Ausgabegrenzwerts während eines Trainings in einen zweiten Wert des Ausgabegrenzwerts modifizieren, wobei der zweite Wert des Ausgabegrenzwerts als Parameter der Aktivierungsfunktion bereitgestellt wird. Beispielsweise können mehrere Trainings-Epochen mit einem Ansatz eines stochastischen Gradientenabstiegs durchgeführt werden, um einen zu verwendenden Wert von Alpha zu ermitteln, der eine Verringerung der Genauigkeit mit einer Verringerung einer Fehlerquote ausgleicht, die sich aus einer verringerten Genauigkeit ergibt.
  • Bei einigen Ausführungsformen kann der Vorgang 1704 durch eine Trainings-Komponente implementiert werden. Die Trainings-Komponente kann eine größere Genauigkeit als eine Genauigkeit der Aktivierungsfunktionskomponente verwenden. Beispielsweise kann ein Training des neuronalen Netzes auf einer Hardware mit 32-Bit-Prozessoren erfolgen, und anschließend kann das trainierte neuronale Netz auf einer Hardware mit 2-Bit-Prozessoren arbeiten. Bei einigen Ausführungsformen kann die Trainings-Komponente einen Parameter einer Auflösung verwenden, der eine größere Genauigkeit als die Genauigkeitskomponente aufweist, und wobei die Trainings-Komponente einen Parameter einer Auflösungssteigung verwendet, der eine Steigung innerhalb eines Unterauflösungsbereichs angibt. Dieser Parameter der Unterauflösung und der Parameter der Auflösungssteigung werden in der Beschreibung der graphischen Darstellung 300 von 3 ausführlicher beschrieben (wo sie als Unterauflösung bzw. Auflösungssteigung bezeichnet werden).
  • Bei einigen Ausführungsformen erhöht die Trainings-Komponente einen Wert des Parameters der Auflösungssteigung während eines Trainings gegen unendlich. Das Erhöhen eines Wertes des Parameters der Auflösungssteigung während eines Trainings gegen unendlich kann auf ähnliche Weise durchgeführt werden, wie durch die graphische Darstellung 300 von 3 dargestellt.
  • Bei einigen Ausführungsformen kann während eines Trainings mit der Trainings-Komponente ein Clipping durchgeführt werden, um eine Verschlechterung der Korrektheit aufgrund einer Quantisierung zu verringern. Beispiele für ein Durchführen von Clipping während des Trainings sind zumindest in der graphischen Darstellung 400 von 4, in der graphischen Darstellung 500 von 5 und in der graphischen Darstellung 1300 von 13 zu finden.
  • Bei einigen Ausführungsformen kann während eines Trainings mit der Trainings-Komponente eine Rückwärtspropagierung durchgeführt werden. Eine Rückwärtspropagierung wird im Allgemeinen verwendet, um einen Fehlerbeitrag eines oder mehrerer Neuronen in einem neuronalen Netz zu berechnen, nachdem eine Trainings-Epoche durchgeführt worden ist. Auf Grundlage der Rückwärtspropagierung kann eine Gewichtung eines oder mehrerer Neuronen für die nächste Trainings-Epoche angepasst werden. Eine Rückwärtspropagierung kann in Verbindung mit einem Ansatz eines Gradientenabstiegs verwendet werden, wobei die Rückwärtspropagierung verwendet werden kann, um einen Gradienten einer Verlustfunktion zu ermitteln.
  • Bei einigen Ausführungsformen kann die Trainings-Komponente eine Aktivierungsfunktions-Auswahlkomponente enthalten, die ermittelt, dass eine Rectifier Linear Unit als Aktivierungsfunktion in einem Fall vollständiger Genauigkeit zu verwenden ist, wobei ein Kreuzentropieverlust mit steigendem Ausgabegrenzwert konvergiert. Unter Bezugnahme auf die graphische Darstellung 1000 von 10 kann in einigen Situationen, in denen vollständige Genauigkeit verwendet wird, ein Kreuzentropieverlust mit zunehmendem Alpha auf einen kleinen Wert konvergieren. Diese Konvergenz eines Kreuzentropieverlusts auf einen kleinen Wert kann darauf hinweisen, dass ReLU als Aktivierungsfunktion verwendet werden kann, um eine Effizienz in einem neuronalen Netz zu erhöhen, in dem keine Quantisierung verwendet wird.
  • Bei einigen Ausführungsformen kann die Trainings-Komponente eine Aktivierungsfunktions-Auswahlkomponente enthalten, die ermittelt, dass mit steigendem Ausgabegrenzwert auch eine Verlustfunktion bei einer Quantisierung zunimmt, und ermittelt, dass ein Aktivierungsfunktionstyp der Aktivierungsfunktion zu verwenden ist, bei dem es sich um einen anderen als eine Rectifier Linear Unit handelt. Unter Bezugnahme auf die graphische Darstellung 1100 von 11 kann bei einer Quantisierung mit zunehmendem Alpha auch eine entsprechende Verlustfunktion zunehmen, was darauf hinweist, dass eine andere Aktivierungsfunktion als ReLU verwendet werden kann, um die Effizienz in einem neuronalen Netz zu erhöhen.
  • In 1706 kann die Einheit (z.B. das neuronale Netz des Systems 100 oder die Aktivierungsfunktionskomponente 206) die Ausgabe der Aktivierungsfunktion auf Grundlage eines Verwendens des zweiten Werts des Ausgabegrenzwerts als Parameter ermitteln. Nachdem zum Beispiel ein neuronales Netz trainiert worden ist, um einen oder mehrere Alpha-Werte zu ermitteln, die mit einer oder mehreren Aktivierungsfunktionen verwendet werden sollen, kann dieses trainierte neuronale Netz mit diesem/diesen Alpha-Wert(en) betrieben werden, so dass das neuronale Netz mit geringerer Genauigkeit arbeiten und daher effizienter arbeiten kann.
  • 18 veranschaulicht einen Ablaufplan eines weiteren beispielhaften nichtbeschränkenden, auf einem Computer implementierten Verfahrens, das ein Verbessern einer Effizienz eines neuronalen Netzes gemäß einer oder mehreren hierin beschriebenen Ausführungsformen erleichtert. Eine wiederholte Beschreibung gleicher Elemente, die in sonstigen hierin beschriebenen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen. Eine wiederholte Beschreibung gleicher Elemente, die in den jeweiligen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • In 1802 kann eine Einheit (z.B. das neuronale Netz des Systems 100 oder die Initialisierungskomponente 252), die mit einem Prozessor in Wirkverbindung steht, einen Wert für einen Ausgabegrenzwert initialisieren, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes aufweist, wobei der Wert für den Ausgabegrenzwert durch Training ermittelt wird. Beispielsweise kann ein neuronales Netz trainiert werden, um einen Wert für den Ausgabegrenzwert, bei dem es sich um Alpha handeln kann, wie an anderer Stelle beschrieben, für zumindest eine Aktivierungsfunktion des neuronalen Netzes zu ermitteln, die eine verringerte Genauigkeit (wie durch diesen Alpha-Wert angegeben) durch Minimieren einer Fehlerquote des neuronalen Netzes ausgleicht. Das neuronale Netz kann trainiert werden, indem Alpha mit einem relativ großen Wert (wie zum Beispiel einem Höchstwert, der durch einen 32-Bit- oder 64-Bit-Datentyp ausgedrückt wird) initialisiert wird und dann ein Ansatz eines stochastischen Gradientenabstiegs implementiert wird, um den Wert von Alpha zu ermitteln, der beim Betrieb des neuronalen Netzes verwendet werden soll.
  • In einigen Beispielen kann das System während des Trainings einen Ansatz eines stochastischen Gradientenabstiegs anwenden. Ein Ansatz eines stochastischen Gradientenabstiegs zum Ermitteln eines Werts für Alpha wird unter Bezugnahme auf zumindest die graphische Darstellung 1000 von 10, die graphische Darstellung 1100 von 11 und die graphische Darstellung 1200 von 12 beschrieben.
  • In einigen Beispielen kann das System den Wert für den Ausgabegrenzwert auf Grundlage einer Durchführung des Trainings mit einem Anfangswert des Ausgabegrenzwerts ermitteln. Beispielsweise kann das System einen Wert für Alpha als Höchstwert initialisieren, der durch einen 32-Bit- oder 64-Bit-Gleitkomma-Datentyp dargestellt wird, und diesen Wert anschließend während eines Trainings verringern (zum Beispiel über einen Ansatz eines stochastischen Gradientenabstiegs), um einen Wert von Alpha zu ermitteln, der für die entsprechende Aktivierungsfunktion verwendet werden soll.
  • In einigen Beispielen kann das System den Ausgabegrenzwert während eines Trainings regularisieren. Diese Regularisierung wird unter Bezugnahme auf zumindest die graphische Darstellung 1100 von 11 und die graphische Darstellung 1200 von 12 beschrieben.
  • In einigen Beispielen kann das System während des Trainings ein Clipping durchführen, um eine Verschlechterung der Korrektheit aufgrund einer Quantisierung zu verringern. Beispiele für ein Durchführen von Clipping während des Trainings sind zumindest in der graphischen Darstellung 300 von 3, in der graphischen Darstellung 400 von 3 und in der graphischen Darstellung 1300 von 13 zu finden.
  • In einigen Beispielen kann das System eine Rückwärtspropagierung während des Trainings einsetzen. In einigen Beispielen kann das System im Laufe eines Trainings ermitteln, dass eine Rectifier Linear Unit als Aktivierungsfunktion in einem Fall vollständiger Genauigkeit zu verwenden ist, und wobei ein Kreuzentropieverlust mit steigendem Ausgabegrenzwert konvergiert. In einigen Beispielen kann das System im Laufe eines Trainings ermitteln, dass mit steigendem Ausgabegrenzwert auch eine Verlustfunktion bei einer Quantisierung zunimmt, und ermitteln, dass ein Aktivierungsfunktionstyp der Aktivierungsfunktion zu verwenden ist, bei dem es sich um einen anderen als eine Rectifier Linear Unit handelt. In einigen Beispielen kann das System den Ausgabegrenzwert während des Trainings regularisieren.
  • In einigen Beispielen ist der Wert des Ausgabegrenzwerts größer als ein zweiter Wert des Ausgabegrenzwerts, und ein Training weist ein Festlegen des Ausgabegrenzwerts auf eine Mehrzahl von aufeinanderfolgenden Werten auf, die kleiner als der Anfangswert des Ausgabegrenzwerts und größer als der zweite Wert des Ausgabegrenzwerts sind. In solchen Beispielen kann bei einem Training ein Ansatz eines stochastischen Gradientenabstiegs verwendet werden. Es ist möglich, dass zwischen dem Wert des Ausgabegrenzwerts und dem zweiten Wert des Ausgabegrenzwerts einige Zwischenwerte liegen und diese Zwischenwerte während eines Trainings von dem Ausgabegrenzwert auf den zweiten Ausgabegrenzwert sinken. Wenn zum Beispiel der Ausgabegrenzwert 10 beträgt und der zweite Ausgabegrenzwert 2 beträgt, können Zwischenwerte 9, 6 und 4 vorhanden sein. In einigen Beispielen kann auch ein Zwischenwert vorhanden sein, der größer als der vorhergehende Zwischenwert ist, obwohl die Zwischenwerte im Laufe des Trainings tendenziell abnehmen.
  • In einigen Beispielen kann das System ermitteln, dass mit steigendem Ausgabegrenzwert auch eine Verlustfunktion bei einer Quantisierung zunimmt, und ermitteln, dass ein Aktivierungsfunktionstyp der Aktivierungsfunktion zu verwenden ist, bei dem es sich um einen anderen als eine Rectifier Linear Unit handelt. In einigen Beispielen kann das System während des Trainings ein Clipping durchführen, um eine Verschlechterung der Korrektheit aufgrund einer Quantisierung zu verringern.
  • In 1804 kann die Einheit (z.B. das neuronale Netz des Systems 100 oder die Aktivierungsfunktionskomponente 254) die Ausgabe der Aktivierungsfunktion mit gegebenem Wert des Ausgabegrenzwerts als Parameter für die Aktivierungsfunktion ermitteln. Beispielsweise kann ein Wert des Ausgabegrenzwerts angeben, dass die entsprechende Aktivierungsfunktion darauf beschränkt ist, ein Ergebnis auszugeben, das zwischen 0 und 1 einschließlich variiert. Wenn die Aktivierungsfunktion ausgeführt wird, um eine Ausgabe für die Aktivierungsfunktion zu ermitteln, kann diese Ausgabe der Aktivierungsfunktion auf 0 bis einschließlich 1 begrenzt werden, wie durch den Ausgabegrenzwert angegeben.
  • In einigen Beispielen wird die Aktivierungsfunktion mit Gleichungen ausgedrückt, die aufweisen: y = 0.5 ( | x | | x α | + α ) = { α , x [ α , + ) x , x [ 0, α ) 0, x ( ,0 )
    Figure DE112018004693T5_0003
    und d y d α = { 1, x [ α , + )   0,     s o n s t .
    Figure DE112018004693T5_0004
  • In den obigen Gleichungen stellen x und y die horizontale Achse bzw. die vertikale Achse einer zugehörigen graphischen Darstellung dar. Die Variable Alpha stellt einen Bereich einer Ausgabe der Aktivierungsfunktion dar. Bei der zweiten graphischen Darstellung ist die Ableitung von y in Bezug auf Alpha gleich 1, wobei x mindestens gleich Alpha ist, und ansonsten 0.
  • In einigen Beispielen liegt die Ausgabe der Aktivierungsfunktion in einem Bereich zwischen null und einschließlich dem Ausgabegrenzwert, und bei der Ausgabe der Aktivierungsfunktion handelt es sich um eine lineare Funktion, die darauf beruht, dass die Ausgabe der Aktivierungsfunktion zwischen null und dem Ausgabegrenzwert liegt. Solche Beispiele werden in Bezug auf zumindest die graphische Darstellung 300 von 3 und die graphische Darstellung 1300 von 13 dargestellt.
  • Um einen Kontext für die verschiedenen Aspekte des offenbarten Gegenstands bereitzustellen, sollen 19 sowie die folgende Erörterung eine allgemeine Beschreibung einer geeigneten Umgebung bereitstellen, in der die verschiedenen Aspekte des offenbarten Gegenstands implementiert werden können. 19 veranschaulicht ein Blockschaubild einer beispielhaften nichtbeschränkenden Betriebsumgebung, in der eine oder mehrere hierin beschriebene Ausführungsformen erleichtert werden können. Eine wiederholte Beschreibung gleicher Elemente, die in sonstigen hierin beschriebenen Ausführungsformen eingesetzt werden, wird der Kürze halber weggelassen.
  • Unter Bezugnahme auf 19 kann eine geeignete Betriebsumgebung 1901 zum Implementieren verschiedener Aspekte dieser Offenbarung auch einen Computer 1912 enthalten. Bei verschiedenen Ausführungsformen können das System 100 und jedes der Neuronen 102 bis 110 ein(e) oder mehrere Komponenten, Merkmale und Funktionalitäten des Computers 1912 sein oder enthalten. Der Computer 1912 kann darüber hinaus eine Verarbeitungseinheit 1914, einen Systemspeicher 1916 und einen Systembus 1918 enthalten. Der Systembus 1918 verbindet Systemkomponenten, darunter den Systemspeicher 1916, ohne darauf beschränkt zu sein, mit der Verarbeitungseinheit 1914. Bei der Verarbeitungseinheit 1914 kann es sich um einen beliebigen von verschiedenen verfügbaren Prozessoren handeln. Duale Mikroprozessoren und sonstige Multiprozessorarchitekturen können ebenfalls als Verarbeitungseinheit 1914 eingesetzt werden. Bei dem Systembus 1121 kann es sich um einen von mehreren Typen von Busstrukturen einschließlich eines Speicherbusses oder einer Speichersteuereinheit, eines peripheren Busses oder eines externen Busses und/oder eines lokalen Busses unter Verwendung einer beliebigen Vielfalt von verfügbaren Busarchitekturen handeln, darunter Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Card Bus, Universal Serial Bus (USB), Advanced Graphics Port (AGP), Firewire (IEEE 1094) und Small Computer Systems Interface (SCSI), ohne darauf beschränkt zu sein. Der Systemspeicher 1916 kann darüber hinaus einen flüchtigen Speicher 1920 und einen nichtflüchtigen Speicher 1922 enthalten. Das grundlegende Eingabe-/Ausgabesystem (basic input/output system - BIOS), das grundlegende Routinen enthält, um Daten zwischen Elementen innerhalb des Computers 1912 zu übertragen, wie zum Beispiel während des Starts, wird in dem nichtflüchtigen Speicher 1922 gespeichert. Zur Veranschaulichung und nicht als Beschränkung kann der nichtflüchtige Speicher 1922 einen Festwertspeicher (read only memory, ROM), einen programmierbaren ROM (PROM), einen elektrisch programmierbaren ROM (EPROM), einen elektrisch löschbaren, programmierbaren ROM (EEPROM), einen Flash-Speicher oder einen nichtflüchtigen Direktzugriffsspeicher (random access memory, RAM) (z.B. einen ferroelektrischen RAM (FeRAM) enthalten. Der flüchtige Speicher 1920 kann darüber hinaus einen Direktzugriffsspeicher (RAM) enthalten, der als externer Cache-Speicher fungiert. Zur Veranschaulichung und nicht als Beschränkung ist ein RAM in zahlreichen Formen verfügbar, zum Beispiel als statischer RAM (SRAM), dynamischer RAM (DRAM), synchroner DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR SDRAM), erweiterter SDRAM (ESDRAM), Synchlink-DRAM (SLDRAM), direkter Rambus-RAM (DRRAM), direkter dynamischer Rambus-RAM (DRDRAM) und dynamischer Rambus-RAM.
  • Der Computer 1912 kann darüber hinaus austauschbare/nicht austauschbare, flüchtige/nichtflüchtige Computerspeichermedien enthalten. 19 veranschaulicht zum Beispiel einen Plattenspeicher 1924. Zu dem Plattenspeicher 1924 können auch Einheiten wie ein Magnetplattenlaufwerk, ein Diskettenlaufwerk, ein Bandlaufwerk, ein Jaz-Laufwerk, ein Zip-Laufwerk, ein LS-100-Laufwerk, eine Flash-Speicherkarte oder ein Speicher-Stick zählen, ohne darauf beschränkt zu sein. Zu dem Plattenspeicher 1924 können auch Speichermedien getrennt oder in Kombination mit sonstigen Speichermedien zählen, darunter ein optisches Plattenlaufwerk wie zum Beispiel eine Compact-Disk-ROM-Einheit (CD-ROM), ein Laufwerk für beschreibbare CDs (CD-R-Laufwerk), ein Laufwerk für wiederbeschreibbare CDs (CD-RW-Laufwerk) oder ein ROM-Laufwerk für digitale vielseitige Platten (DVD-ROM), ohne darauf beschränkt zu sein. Um eine Verbindung des Plattenspeichers 1924 mit dem Systembus 1918 zu erleichtern, wird typischerweise eine austauschbare oder nicht austauschbare Schnittstelle wie zum Beispiel eine Schnittstelle 1926 verwendet. 19 stellt darüber hinaus eine Software dar, die als Vermittler zwischen Benutzern und den in der geeigneten Betriebsumgebung 1901 beschriebenen grundlegenden Computer-Ressourcen fungiert. Eine solche Software kann darüber hinaus zum Beispiel ein Betriebssystem 1928 enthalten. Das Betriebssystem 1928, das auf dem Plattenspeicher 1924 gespeichert sein kann, dient zum Steuern und Zuweisen von Ressourcen des Computers 1912. Systemanwendungen 1930 nutzen die Verwaltung von Ressourcen durch das Betriebssystem 1928 durch Programmmodule 1932 und Programmdaten 1934, die z.B. entweder in dem Systemspeicher 1916 oder in dem Plattenspeicher 1924 gespeichert sind. Es versteht sich, dass diese Offenbarung mit verschiedenen Betriebssystemen oder Kombinationen von Betriebssystemen implementiert werden kann. Ein Benutzer gibt Befehle oder Daten durch (eine) Eingabeeinheit(en) 1936 in den Computer 1912 ein. Zu den Eingabeeinheiten 1936 zählen eine Zeigeeinheit wie zum Beispiel eine Maus, ein Trackball, ein Stift, ein Berührungsfeld, eine Tastatur, ein Mikrofon, ein Joystick, ein Gamepad, eine Satellitenschüssel, ein Scanner, eine TV-Tunerkarte, eine Digitalkamera, eine digitale Videokamera, eine Web-Kamera und dergleichen, ohne darauf beschränkt zu sein. Diese und sonstige Eingabeeinheiten sind durch den Systembus 1918 über einen oder mehrere Schnittstellenanschlüsse 1938 mit der Verarbeitungseinheit 1914 verbunden. Zu dem einen oder den mehreren Schnittstellenanschlüssen 1938 zählen zum Beispiel ein serieller Anschluss, ein paralleler Anschluss, ein Spieleanschluss und ein universeller serieller Bus (USB). Eine oder mehrere Ausgabeeinheiten 1940 verwenden einige derselben Anschlusstypen wie die Eingabeeinheit(en) 1936. Auf diese Weise kann zum Beispiel ein USB-Anschluss verwendet werden, um eine Eingabe in den Computer 1912 bereitzustellen und Daten aus dem Computer 1912 an eine Ausgabeeinheit 1940 auszugeben. Ein Ausgabeadapter 1942 wird bereitgestellt, um zu veranschaulichen, dass unter sonstigen Ausgabeeinheiten 1940 einige Ausgabeeinheiten 1940 wie Monitore, Lautsprecher und Drucker vorhanden sind, die spezielle Adapter erfordern. Zu den Ausgabeadaptern 1942 zählen, zur Veranschaulichung und nicht als Beschränkung, Video- und Sound-Karten, die ein Mittel zum Verbinden zwischen der Ausgangseinheit 1940 und dem Systembus 1918 bereitstellen. Es ist zu beachten, dass sonstige Einheiten und/oder Systeme von Einheiten sowohl Eingabe- als auch Ausgabemöglichkeiten wie z.B. einen oder mehrere entfernt angeordnete(n) Computer 1944 bereitstellen.
  • Der Computer 1912 kann mithilfe von logischen Verbindungen mit einem oder mehreren entfernt angeordneten Computern wie zum Beispiel dem/den entfernt angeordneten Computer(n) 1944 in einer vernetzten Umgebung arbeiten. Bei dem/den entfernt angeordneten Computer(n) 1944 kann es sich um einen Computer, einen Server, einen Router, einen Netzwerk-PC, einen Arbeitsplatzrechner, eine Einrichtung auf Grundlage eines Mikroprozessors, eine Peer-Einheit oder ein sonstiges gemeinsames Netzwerkneuron und dergleichen handeln und kann es sich typischerweise auch um zahlreiche oder sämtliche der in Bezug auf den Computer 1912 beschriebenen Elemente handeln. Der Kürze halber ist nur eine Speichereinheit 1946 mit einem oder mehreren entfernt angeordneten Computer(n) 1944 veranschaulicht. Der/Die entfernt angeordnete(n) Computer 1944 ist/sind durch eine Netzwerkschnittstelle 1948 logisch und dann über eine Datenübertragungsverbindung 1950 physisch mit dem Computer 1912 verbunden. Die Netzwerkschnittstelle 1948 umfasst drahtgebundene und/oder drahtlose Datenübertragungs-Netzwerke wie zum Beispiel lokale Netzwerke (Local Area Networks, LAN), Weitverkehrs-Netzwerke (Wide Area Networks, WAN), Mobilfunknetze usw. Zu den LAN-Technologien zählen Fibre Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token-Ring und dergleichen. Zu WAN-Technologien zählen Punkt-zu-Punkt-Verbindungen, Leitungsvermittlungsnetzwerke wie Integrated Services Digital Networks (ISDN) und Varianten davon, Paketvermittlungsnetzwerke und Digital Subscriber Lines (DSL), ohne darauf beschränkt zu sein. Eine oder mehrere Datenübertragungsverbindungen 1950 beziehen sich auf die Hardware/Software, die zum Verbinden der Netzwerkschnittstelle 1948 mit dem Systembus 1918 eingesetzt wird. Wenngleich die Datenübertragungsverbindung 1950 zur Veranschaulichung innerhalb des Computers 1912 dargestellt wird, kann sie sich auch außerhalb des Computers 1912 befinden. Die Hardware/Software zum Verbinden mit der Netzwerkschnittstelle 1948 kann auch, nur als Beispiel, interne und externe Technologien enthalten, zum Beispiel Modems einschließlich normaler Telefonmodems, Kabelmodems und DSL-Modems, ISDN-Adapter und Ethernet-Karten.
  • Bei Ausführungsformen der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt mit einem beliebigen Integrationsgrad technischer Details handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen. Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums können darüber hinaus die Folgenden zählen: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter. Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten verschiedener Aspekte der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instructions-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltkreise oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gate-Arrays (FPGA) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können. Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen. Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Wenngleich der Gegenstand oben im allgemeinen Kontext von durch einen Computer ausführbaren Anweisungen eines Computerprogrammprodukts beschrieben worden ist, das auf einem Computer und/oder Computern ausgeführt wird, ist Fachleuten ersichtlich, dass diese Offenbarung auch in Kombination mit sonstigen Programmmodulen implementiert werden kann. Im Allgemeinen enthalten Programmmodule Routinen, Programme, Komponenten, Datenstrukturen usw., die bestimmte Aufgaben ausführen und/oder bestimmte abstrakte Datentypen implementieren. Darüber hinaus ist für den Fachmann ersichtlich, dass die erfinderischen auf einem Computer implementierten Verfahren mit sonstigen Konfigurationen von Computersystemen umgesetzt werden können, darunter mit Einzelprozessor- oder Multiprozessor-Computersystemen, Mini-Computereinheiten, Großrechnern sowie Computern, Handdatenverarbeitungseinheiten (z.B. PDA, Telefon), auf Mikroprozessoren beruhender oder programmierbarer Unterhaltungs- oder Industrieelektronik und dergleichen. Die veranschaulichten Aspekte können auch in verteilten Datenverarbeitungsumgebungen umgesetzt werden, in denen Aufgaben durch entfernt angeordnete Verarbeitungseinheiten durchgeführt werden, die durch ein Datenübertragungsnetzwerk miteinander verbunden sind. Jedoch können einige, wenn nicht alle Aspekte dieser Offenbarung auf eigenständigen Computern umgesetzt werden. Bei einer verteilten Datenverarbeitungsumgebung können sich Programmmodule sowohl in lokalen als auch in entfernt angeordneten Speichereinheiten befinden.
  • So, wie sie in dieser Anwendung verwendet werden, können sich die Begriffe „Komponente“, „System“, „Plattform“, „Schnittstelle“ und dergleichen auf eine auf einen Computer bezogene Entität oder eine Entität beziehen, die sich auf eine betriebsbereite Maschine mit einer oder mehreren spezifischen Funktionalitäten bezieht, und/oder diese enthalten. Bei den hierin offenbarten Entitäten kann es sich entweder um Hardware, eine Kombination aus Hardware und Software, Software oder Software in Ausführung handeln. Beispielsweise kann es sich bei einer Komponente um einen Prozess, der auf einem Prozessor ausgeführt wird, einen Prozessor, ein Objekt, eine ausführbare Datei, einen Ausführungs-Thread, ein Programm und/oder einen Computer handeln, ohne darauf beschränkt zu sein. Zur Veranschaulichung kann sowohl eine auf einem Server ausgeführte Anwendung als auch der Server eine Komponente sein. Eine oder mehrere Komponenten können sich innerhalb eines Prozesses und/oder eines Threads einer Ausführung befinden, und eine Komponente kann sich auf einem Computer befinden und/oder auf zwei oder mehr Computer verteilt sein. In einem weiteren Beispiel können jeweilige Komponenten von verschiedenen durch einen Computer lesbaren Medien ausgeführt werden, auf denen verschiedene Datenstrukturen gespeichert sind. Die Komponenten können Daten über lokale und/oder entfernt angeordnete Prozesse austauschen, zum Beispiel in Übereinstimmung mit einem Signal, das ein oder mehrere Datenpakete aufweist (z.B. Daten von einer Komponente, die mit einer weiteren Komponente in einem lokalen System, einem verteilten System und/oder über ein Netzwerk wie zum Beispiel das Internet mit sonstigen Systemen über das Signal interagiert). Als weiteres Beispiel kann es sich bei einer Komponente um eine Vorrichtung mit spezifischer Funktionalität handeln, die durch mechanische Teile bereitgestellt wird, die durch elektrische oder elektronische Schaltungen betrieben werden, die durch eine Software- oder Firmware-Anwendung betrieben werden, die durch einen Prozessor ausgeführt wird. In einem solchen Fall kann sich der Prozessor innerhalb oder außerhalb der Vorrichtung befinden und kann zumindest einen Teil der Software- oder Firmware-Anwendung ausführen. Als noch weiteres Beispiel kann es sich bei einer Komponente um eine Vorrichtung handeln, die durch elektronische Komponenten ohne mechanische Teile eine spezifische Funktionalität bereitstellt, wobei die elektronischen Komponenten einen Prozessor oder sonstige Mittel zum Ausführen von Software oder Firmware enthalten können, die zumindest zum Teil die Funktionalität der elektronischen Komponenten verleiht. In einem Aspekt kann eine Komponente eine elektronische Komponente über eine virtuelle Maschine emulieren, z.B. innerhalb eines Cloud-Computing-Systems.
  • Darüber hinaus soll der Begriff „oder“ eher ein inklusives „oder“ als ein exklusives „oder“ bedeuten. Das heißt, sofern nichts anderes angegeben ist oder aus dem Kontext ersichtlich wird, soll „X setzt A oder B ein“ eine beliebige der natürlichen inklusiven Umsetzung bedeuten. Das heißt, wenn X A einsetzt; X B einsetzt; oder X sowohl A als auch B einsetzt, ist „X setzt A oder B ein“ in einem beliebigen der obigen Fälle erfüllt. Darüber hinaus sollten die Artikel „ein“ und „eine“, wie sie in der Beschreibung des Gegenstandes und in den beigefügten Zeichnungen verwendet werden, im Allgemeinen so ausgelegt werden, dass sie „ein(e) oder mehrere“ bedeuten, sofern nichts anderes angegeben ist oder aus dem Kontext ersichtlich wird, dass eine Singularform gilt. So, wie sie hierin verwendet werden, werden die Begriffe „Beispiel“ und/oder „beispielhaft“ in der Bedeutung als Exempel, Beispiel oder Veranschaulichung dienend verwendet. Um Zweifel auszuschließen, wird der hierin offenbarte Gegenstand nicht durch solche Beispiele beschränkt. Darüber hinaus ist jeglicher Aspekt oder Entwurf, der hierin als „Beispiel“ und/oder „beispielhaft“ beschrieben wird, weder zwingend als bevorzugt oder vorteilhaft gegenüber sonstigen Aspekten oder Entwürfen auszulegen, noch soll er gleichwertige beispielhafte Strukturen und Techniken ausschließen, die Fachleuten bekannt sind.
  • So, wie er in der Beschreibung des Gegenstands eingesetzt wird, kann sich der Begriff „Prozessor“ im Wesentlichen auf jede Datenverarbeitungseinheit oder -vorrichtung beziehen, die Einzelkernprozessoren; Einzelprozessoren mit Software-Multithread-Ausführungsfunktion; Mehrkernprozessoren; Mehrkernprozessoren mit Software-Multithread-Ausführungsfunktion; Mehrkernprozessoren mit Hardware-Multithread-Technologie; parallele Plattformen; und parallele Plattformen mit verteiltem, gemeinsam genutztem Speicher aufweist, ohne darauf beschränkt zu sein. Darüber hinaus kann sich ein Prozessor auf eine integrierte Schaltung, eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit, ASIC), einen digitalen Signalprozessor (DSP), ein feldprogrammierbares Gate-Array (FPGA), eine programmierbare Logiksteuerung (programmable logic controller, PLC), eine komplexe programmierbare Logikeinheit (complex programmable logic device, CPLD), eine diskrete Gate- oder Transistorlogik, diskrete Hardware-Komponenten oder eine beliebige Kombination von diesen beziehen, die dazu vorgesehen sind, die hierin beschriebenen Funktionen durchzuführen. Darüber hinaus können Prozessoren Architekturen im Nanomaßstab wie zum Beispiel molekulare oder auf Quantenpunkten beruhende Transistoren, Schalter und Gates nutzen, ohne darauf beschränkt zu sein, um die Raumausnutzung zu optimieren oder die Leistungsfähigkeit von Benutzergeräten zu verbessern. Ein Prozessor kann darüber hinaus als Kombination von Datenverarbeitungseinheiten implementiert sein. In dieser Offenbarung werden Begriffe wie „Speichern“, „Speicherung“, „Datenspeicher“, „Datenspeicherung“, „Datenbank“ und im Wesentlichen jede beliebige sonstige Datenspeicherungskomponente, die für den Betrieb und die Funktionalität einer Komponente relevant ist, so verwendet, dass sie sich auf „Speicherkomponenten“, in einem „Speicher“ verkörperte Entitäten oder auf Komponenten beziehen, die einen Speicher aufweisen. Es versteht sich, dass es sich bei dem/den hierin beschriebenen Speicher und/oder Speicherkomponenten um einen flüchtigen Speicher oder um einen nichtflüchtigen Speicher handeln kann oder er/sie sowohl einen flüchtigen als auch einen nichtflüchtigen Speicher enthalten kann/können. Zur Veranschaulichung und nicht als Beschränkung kann der nichtflüchtige Speicher einen Festwertspeicher (ROM), einen programmierbaren ROM (PROM), einen elektrisch programmierbaren ROM (EPROM), einen elektrisch löschbaren ROM (EEPROM), einen Flash-Speicher oder einen nichtflüchtigen Direktzugriffsspeicher (RAM) (z.B. einen ferroelektrischen RAM (FeRAM)) enthalten. Der flüchtige Speicher kann einen RAM enthalten, der zum Beispiel als externer Cache-Speicher fungieren kann. Zur Veranschaulichung und nicht als Beschränkung ist ein RAM in zahlreichen Formen verfügbar, zum Beispiel als synchroner RAM (SRAM), dynamischer RAM (DRAM), synchroner DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR SDRAM), erweiterter SDRAM (ESDRAM), Synchlink-DRAM (SLDRAM), direkter Rambus-RAM (DRRAM), direkter dynamischer Rambus-RAM (DRDRAM) und dynamischer Rambus-RAM (RDRAM). Darüber hinaus sollen die offenbarten Speicherkomponenten von Systemen oder auf einem Computer implementierten Verfahren hierin diese und beliebige sonstige geeignete Speichertypen enthalten, ohne auf das Enthalten beschränkt zu sein.
  • Was oben beschrieben wurde, enthält bloße Beispiele von Systemen und auf einem Computer implementierten Verfahren. Es ist natürlich nicht möglich, jede denkbare Kombination von Komponenten oder auf einem Computer implementierten Verfahren zum Zweck der Beschreibung dieser Offenbarung zu beschreiben, ein Fachmann kann jedoch erkennen, dass viele weitere Kombinationen und Umsetzungen dieser Offenbarung möglich sind. Des Weiteren sollen in dem Maße, in dem die Begriffe „enthält“, „weist auf“, „besitzt“ und dergleichen in der ausführlichen Beschreibung, den Ansprüchen, Anhängen und Zeichnungen verwendet werden, solche Begriffe in ähnlicher Weise inklusiv sein, wie der Begriff „aufweisend“ als „aufweisend“ ausgelegt wird, wenn sie als Übergangswort in einem Anspruch eingesetzt werden. Die Beschreibungen der verschiedenen Ausführungsformen erfolgten zur Veranschaulichung, sind jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt gemeint. Zahlreiche Modifizierungen und Varianten sind für Fachleute ersichtlich, ohne vom Umfang der Ansprüche abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber auf dem Markt erhältlichen Technologien am besten zu erläutern oder um anderen Fachleuten zu ermöglichen, die hierin offenbarten Ausführungsformen zu verstehen.

Claims (21)

  1. System, das aufweist: einen Speicher, der durch einen Computer ausführbare Komponenten speichert; und einen Prozessor, der die in dem Speicher gespeicherten, durch einen Computer ausführbaren Komponenten ausführt, wobei die durch einen Computer ausführbaren Komponenten aufweisen: eine Initialisierungskomponente, die einen Wert für einen Ausgabegrenzwert auswählt, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes aufweist, wobei der Wert für den Ausgabegrenzwert durch Training ermittelt wird; und eine Aktivierungsfunktionskomponente, die die Ausgabe der Aktivierungsfunktion mit gegebenem Wert des Ausgabegrenzwerts als Parameter für die Aktivierungsfunktion ermittelt.
  2. System nach Anspruch 1, wobei: die Initialisierungskomponente einen Anfangswert eines Ausgabegrenzwertes auswählt, wobei die durch einen Computer ausführbaren Komponenten des Weiteren aufweisen: eine Trainings-Komponente, die den Anfangswert des Ausgabegrenzwertes während eines Trainings in einen zweiten Wert des Ausgabegrenzwertes modifiziert, wobei der zweite Wert des Ausgabegrenzwertes der Aktivierungsfunktion als Parameter bereitgestellt wird.
  3. System nach Anspruch 1, wobei die Ausgabe der Aktivierungsfunktion in einem Bereich zwischen Null und einschließlich dem Ausgabegrenzwert liegt, und wobei es sich bei der Ausgabe der Aktivierungsfunktion um eine lineare Funktion handelt, die darauf beruht, dass die Ausgabe der Aktivierungsfunktion zwischen Null und dem Ausgabegrenzwert liegt.
  4. System nach Anspruch 2, wobei die Trainings-Komponente eine größere Genauigkeit als eine Genauigkeit der Aktivierungsfunktionskomponente verwendet.
  5. System nach Anspruch 4, wobei die Trainings-Komponente einen Parameter einer Auflösung verwendet, der eine größere Genauigkeit als die Genauigkeit der Aktivierungsfunktionskomponente aufweist, und wobei die Trainings-Komponente einen Parameter einer Auflösungssteigung verwendet, der eine Steigung innerhalb eines Unterauflösungsbereichs angibt.
  6. System nach Anspruch 5, wobei die Trainings-Komponente einen Wert des Parameters der Auflösungssteigung während eines Trainings gegen unendlich erhöht.
  7. System nach Anspruch 2, wobei die durch einen Computer ausführbaren Komponenten des Weiteren aufweisen: eine Clipping-Komponente, die während eines Trainings mit der Trainings-Komponente ein Clipping durchführt, um eine Verschlechterung einer Korrektheit aufgrund einer Quantisierung zu verringern.
  8. System nach Anspruch 2, wobei die durch einen Computer ausführbaren Komponenten des Weiteren aufweisen: eine Rückwärtspropagierungskomponente, die während eines Trainings mit der Trainings-Komponente eine Rückwärtspropagierung durchführt.
  9. System nach Anspruch 2, wobei die durch einen Computer ausführbaren Komponenten des Weiteren aufweisen: eine Aktivierungsfunktions-Auswahlkomponente, die ermittelt, dass eine Rectifier Linear Unit als Aktivierungsfunktion in einem Fall vollständiger Genauigkeit zu verwenden ist, und wobei ein Kreuzentropieverlust mit steigendem Ausgabegrenzwert konvergiert.
  10. System nach Anspruch 2, wobei die durch einen Computer ausführbaren Komponenten des Weiteren aufweisen: eine Aktivierungsfunktions-Auswahlkomponente, die ermittelt, dass mit steigendem Ausgabegrenzwert auch eine Verlustfunktion bei einer Quantisierung zunimmt, und ermittelt, dass ein Aktivierungsfunktionstyp der Aktivierungsfunktion zu verwenden ist, bei dem es sich um einen anderen als eine Rectifier Linear Unit handelt.
  11. Auf einem Computer implementiertes Verfahren, das aufweist: Initialisieren eines Werts für einen Ausgabegrenzwert durch ein System, das mit einem Prozessor in Wirkverbindung steht, wobei der Ausgabegrenzwert einen Bereich für eine Ausgabe einer Aktivierungsfunktion eines neuronalen Netzes aufweist, wobei der Wert für den Ausgabegrenzwert durch Training ermittelt wird; und Ermitteln der Ausgabe der Aktivierungsfunktion mit gegebenem Wert des Ausgabegrenzwerts als Parameter für die Aktivierungsfunktion durch das System.
  12. Auf einem Computer implementiertes Verfahren nach Anspruch 11, das des Weiteren aufweist: Anwenden eines Ansatzes eines stochastischen Gradientenabstiegs während des Trainings durch das System.
  13. Auf einem Computer implementiertes Verfahren nach Anspruch 11, das des Weiteren aufweist: Ermitteln des Wertes für den Ausgabegrenzwert auf Grundlage einer Durchführung des Trainings mit einem Anfangswert des Ausgabegrenzwertes durch das System.
  14. Auf einem Computer implementiertes Verfahren nach Anspruch 11, das des Weiteren aufweist: Regularisieren des Ausgabegrenzwerts während des Trainings durch das System.
  15. Auf einem Computer implementiertes Verfahren nach Anspruch 11, das des Weiteren aufweist: Clipping während des Trainings durch das System, um eine Verschlechterung der Korrektheit aufgrund einer Quantisierung zu verringern.
  16. Auf einem Computer implementiertes Verfahren nach Anspruch 11, das des Weiteren aufweist: Einsetzen einer Rückwärtspropagierung während des Trainings durch das System.
  17. Auf einem Computer implementiertes Verfahren nach Anspruch 11, das des Weiteren aufweist: Ermitteln durch das System, dass eine Rectifier Linear Unit als Aktivierungsfunktion in einem Fall vollständiger Genauigkeit zu verwenden ist, und wobei ein Kreuzentropieverlust mit steigendem Ausgabegrenzwert konvergiert.
  18. Verfahren nach Anspruch 11, das des Weiteren aufweist: Ermitteln durch das System, dass mit steigendem Ausgabegrenzwert auch eine Verlustfunktion bei einer Quantisierung zunimmt, und Ermitteln, dass ein Aktivierungsfunktionstyp der Aktivierungsfunktion zu verwenden ist, bei dem es sich um einen anderen als eine Rectifier Linear Unit handelt.
  19. Computerprogrammprodukt, das ein Training von quantisierten Aktivierungen für eine effiziente Implementierung von tiefgehendem Lernen bereitstellt, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, in dem Programmanweisungen verkörpert sind, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um zu bewirken, dass der Prozessor zumindest das Verfahren nach einem der Ansprüche 11 bis 18 durchführt.
  20. Computerprogrammprodukt nach Anspruch 19, wobei der Ausgabegrenzwert als α ausgedrückt wird, und wobei die Aktivierungsfunktion mit Gleichungen ausgedrückt wird, die aufweisen: y = 0.5 ( | x | | x α | + α ) = { α , x [ α , + ) x , x [ 0, α ) 0, x ( ,0 )
    Figure DE112018004693T5_0005
    und d y d α = { 1, x [ α , + ) 0,     s o n s t .
    Figure DE112018004693T5_0006
  21. Computerprogrammprodukt nach Anspruch 19, wobei der Wert des Ausgabegrenzwertes größer als ein zweiter Wert des Ausgabegrenzwertes ist, und wobei ein Training ein Festlegen des Ausgabegrenzwertes auf eine Mehrzahl von aufeinanderfolgenden Werten aufweist, die kleiner als der Wert des Ausgabegrenzwertes und größer als der zweite Wert des Ausgabegrenzwertes sind.
DE112018004693.1T 2017-10-24 2018-10-04 Verbessern der effizienz eines neuronalen netzes Pending DE112018004693T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/792,733 US11195096B2 (en) 2017-10-24 2017-10-24 Facilitating neural network efficiency
US15/792,733 2017-10-24
PCT/IB2018/057712 WO2019082005A1 (en) 2017-10-24 2018-10-04 FACILITATING THE EFFECTIVENESS OF ARTIFICIAL NEURONIC NETWORK

Publications (1)

Publication Number Publication Date
DE112018004693T5 true DE112018004693T5 (de) 2020-06-18

Family

ID=66169344

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018004693.1T Pending DE112018004693T5 (de) 2017-10-24 2018-10-04 Verbessern der effizienz eines neuronalen netzes

Country Status (6)

Country Link
US (1) US11195096B2 (de)
JP (1) JP7163381B2 (de)
CN (1) CN111226233A (de)
DE (1) DE112018004693T5 (de)
GB (1) GB2581728A (de)
WO (1) WO2019082005A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11195096B2 (en) * 2017-10-24 2021-12-07 International Business Machines Corporation Facilitating neural network efficiency
WO2019118639A1 (en) * 2017-12-12 2019-06-20 The Regents Of The University Of California Residual binary neural network
WO2019220755A1 (ja) * 2018-05-14 2019-11-21 ソニー株式会社 情報処理装置および情報処理方法
US11763133B2 (en) * 2018-08-31 2023-09-19 Servicenow Canada Inc. Data point suitability determination from edge device neural networks
KR102621118B1 (ko) * 2018-11-01 2024-01-04 삼성전자주식회사 영상 적응적 양자화 테이블을 이용한 영상의 부호화 장치 및 방법
US20200302276A1 (en) * 2019-03-20 2020-09-24 Gyrfalcon Technology Inc. Artificial intelligence semiconductor chip having weights of variable compression ratio
WO2021053363A1 (en) * 2019-09-19 2021-03-25 Intel Corporation Techniques to tune scale parameter for activations in binary neural networks
JP7419035B2 (ja) 2019-11-22 2024-01-22 キヤノン株式会社 学習モデル管理システム、学習モデル管理方法、およびプログラム
US11935271B2 (en) * 2020-01-10 2024-03-19 Tencent America LLC Neural network model compression with selective structured weight unification
US11823054B2 (en) 2020-02-20 2023-11-21 International Business Machines Corporation Learned step size quantization
EP3921781A1 (de) * 2020-04-14 2021-12-15 Google LLC Effiziente binäre darstellungen von neuronalen netzen
CN113762452B (zh) * 2020-06-04 2024-01-02 合肥君正科技有限公司 一种量化prelu激活函数的方法
CN112749803B (zh) * 2021-03-05 2023-05-30 成都启英泰伦科技有限公司 一种神经网络的激活函数计算量化方法
JP2023031367A (ja) 2021-08-25 2023-03-09 富士通株式会社 閾値決定プログラム及び閾値決定方法
KR102650510B1 (ko) * 2022-10-28 2024-03-22 한국전자기술연구원 영상의 노이즈 제거 방법 및 장치

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950012359B1 (ko) * 1992-08-28 1995-10-17 엘지전자주식회사 신경회로망 구조와 학습방법
JPH1063633A (ja) * 1996-08-26 1998-03-06 Denso Corp ニューラルネットワークの演算装置及び車両用空調装置
US7149262B1 (en) * 2000-07-06 2006-12-12 The Trustees Of Columbia University In The City Of New York Method and apparatus for enhancing data resolution
HUP0301368A3 (en) * 2003-05-20 2005-09-28 Amt Advanced Multimedia Techno Method and equipment for compressing motion picture data
US20150120627A1 (en) 2013-10-29 2015-04-30 Qualcomm Incorporated Causal saliency time inference
US20150269480A1 (en) 2014-03-21 2015-09-24 Qualcomm Incorporated Implementing a neural-network processor
US10417525B2 (en) * 2014-09-22 2019-09-17 Samsung Electronics Co., Ltd. Object recognition with reduced neural network weight precision
US10373050B2 (en) * 2015-05-08 2019-08-06 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization
US20170032247A1 (en) * 2015-07-31 2017-02-02 Qualcomm Incorporated Media classification
US11029949B2 (en) * 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
KR102565273B1 (ko) 2016-01-26 2023-08-09 삼성전자주식회사 뉴럴 네트워크에 기초한 인식 장치 및 뉴럴 네트워크의 학습 방법
US10831444B2 (en) * 2016-04-04 2020-11-10 Technion Research & Development Foundation Limited Quantized neural network training and inference
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
US10373049B2 (en) * 2016-12-20 2019-08-06 Google Llc Generating an output for a neural network output layer
KR102457463B1 (ko) * 2017-01-16 2022-10-21 한국전자통신연구원 희소 파라미터를 사용하는 압축 신경망 시스템 및 그것의 설계 방법
CN107122825A (zh) * 2017-03-09 2017-09-01 华南理工大学 一种神经网络模型的激活函数生成方法
US10127495B1 (en) * 2017-04-14 2018-11-13 Rohan Bopardikar Reducing the size of a neural network through reduction of the weight matrices
CN107229942B (zh) 2017-04-16 2021-03-30 北京工业大学 一种基于多个分类器的卷积神经网络分类方法
US20180336469A1 (en) * 2017-05-18 2018-11-22 Qualcomm Incorporated Sigma-delta position derivative networks
EP3637325A4 (de) * 2017-05-23 2020-05-27 Shanghai Cambricon Information Technology Co., Ltd Verarbeitungsverfahren und beschleuniger
KR102526650B1 (ko) * 2017-05-25 2023-04-27 삼성전자주식회사 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
US10878273B2 (en) * 2017-07-06 2020-12-29 Texas Instruments Incorporated Dynamic quantization for deep neural network inference system and method
US10728553B2 (en) * 2017-07-11 2020-07-28 Sony Corporation Visual quality preserving quantization parameter prediction with deep neural network
KR102601604B1 (ko) * 2017-08-04 2023-11-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
US10839286B2 (en) * 2017-09-14 2020-11-17 Xilinx, Inc. System and method for implementing neural networks in integrated circuits
KR20190034985A (ko) * 2017-09-25 2019-04-03 삼성전자주식회사 인공 신경망의 양자화 방법 및 장치
US11195096B2 (en) * 2017-10-24 2021-12-07 International Business Machines Corporation Facilitating neural network efficiency
US11132605B2 (en) * 2017-11-20 2021-09-28 International Business Machines Corporation Cardinal sine as an activation function for universal classifier training data
US11295208B2 (en) * 2017-12-04 2022-04-05 International Business Machines Corporation Robust gradient weight compression schemes for deep learning applications
US11551077B2 (en) * 2018-06-13 2023-01-10 International Business Machines Corporation Statistics-aware weight quantization
US20200226459A1 (en) * 2019-01-11 2020-07-16 International Business Machines Corporation Adversarial input identification using reduced precision deep neural networks
US11551054B2 (en) * 2019-08-27 2023-01-10 International Business Machines Corporation System-aware selective quantization for performance optimized distributed deep learning
US20210064985A1 (en) * 2019-09-03 2021-03-04 International Business Machines Corporation Machine learning hardware having reduced precision parameter components for efficient parameter update
US20210125063A1 (en) * 2019-10-23 2021-04-29 Electronics And Telecommunications Research Institute Apparatus and method for generating binary neural network

Also Published As

Publication number Publication date
US20190122116A1 (en) 2019-04-25
WO2019082005A1 (en) 2019-05-02
GB202006969D0 (en) 2020-06-24
US11195096B2 (en) 2021-12-07
GB2581728A (en) 2020-08-26
JP7163381B2 (ja) 2022-10-31
JP2021500654A (ja) 2021-01-07
CN111226233A (zh) 2020-06-02

Similar Documents

Publication Publication Date Title
DE112018004693T5 (de) Verbessern der effizienz eines neuronalen netzes
DE112018006047T5 (de) Deformation von aufwandsfunktionen bei der quanten-näherungsoptimierung
DE112018005227T5 (de) Merkmalsextraktion mithilfe von multi-task-lernen
DE112018006189T5 (de) Robuste gradienten-gewichtskomprimierungsschemata für deep-learning-anwendungen
DE102018111905A1 (de) Domänenspezifische Sprache zur Erzeugung rekurrenter neuronaler Netzarchitekturen
DE102017122240A1 (de) Kommunikationseffizientes gemeinschaftliches Lernen
DE112022000106T5 (de) Verfahren zur Getriebefehlerdiagnose und Signalerfassung, eine Vorrichtung und ein elektronisches Gerät
DE102020125207A1 (de) Unbeaufsichtigtes training von neuronalem netz zur bildkompression mit hohem dynamikumfang
DE212020000731U1 (de) Kontrastives Vortraining für Sprachaufgaben
DE102019207238A1 (de) Bereitstellen eines Ergebnisbilddatensatzes
DE112018005205T5 (de) Komprimierung von vollständig verbundenen / wiederkehrenden Schichten von einem oder mehreren tiefen Netzen durch Durchsetzen von räumlicher Lokalität für Gewichtsmatrizen und erwirken von Frequenzkomprimierung
DE102014116177A1 (de) Patientenrisiko-Stratifizierung durch Verknüpfen von wissengesteuerten und datengesteuerten Erkenntnissen
DE102018121757A1 (de) Durchführen von vektorvergleichsoperationen in einervollhomomorphen verschlüsselung
DE112018000723T5 (de) Aktualisierungsverwaltung für eine RPU-Anordnung
DE112021001566T5 (de) Ermitteln von abhängigkeiten multivariater zeitreihendaten
DE112018006377T5 (de) Verschmelzen spärlich besetzter kernels zur approximation eines vollen kernels eines neuronalen faltungsnetzes
DE112020001774T5 (de) Datensatzabhängiges niedrigrang-zerlegen von neuronalen netzwerken
DE112020004471T5 (de) Folgerungsvorrichtung, Trainingsvorrichtung, Folgerungsverfahren und Trainingsverfahren
DE112020004031T5 (de) Systembezogene selektive quantisierung für in der leistungsfähigkeit optimiertes verteiltes deep learning
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE112021002866T5 (de) Modelltreueüberwachung und -neuerstellung zur entscheidungsunterstützung eines fertigungsverfahrens
CH696749A5 (de) System zum Ausführen einer Risikoanalyse.
DE112020000545T5 (de) Deep-forest-modell-entwicklung und -training
DE112020005732T5 (de) Erzeugen von trainingsdaten zur objekterkennung
DE102022113243A1 (de) Score-basierte generative Modellierung im latenten Raum

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence