-
HINTERGRUND
-
Vorrichtungen und Verfahren, die mit einer oder mehreren beispielhaften Ausführungsformen übereinstimmen, betreffen ein künstliches neuronales Netzwerk, und insbesondere ein Verfahren und eine Vorrichtung zur Quantisierung eines künstlichen neuronalen Netzwerks.
-
Ein künstliches neuronales Netzwerk (KNN) kann eine Rechenvorrichtung betreffen oder ein Verfahren, das von einer Rechenvorrichtung ausgeführt wird, um miteinander verbundene Sätze künstlicher Neuronen (oder Neuronenmodellen) zu erzeugen. Künstliche Neuronen können Ausgabedaten erzeugen, indem sie einfache Operationen an den Eingabedaten ausführen, und die Ausgabedaten können an andere künstliche Neuronen übertragen werden. Ein tiefgehendes neuronales Netzwerk (bzw. Deep-Neural-Network) (DNN) oder eine tiefgehende Lernarchitektur (bzw. Deep-Learning-Architektur), als ein Beispiel für ein KNN, können eine Mehrschichtstruktur aufweisen. Schichten eines KNN können Parameter aufweisen und es können mehrere Probenverteilungen erzeugt werden, indem jede der Schichten entsprechend mehreren Proben trainiert wird.
-
ZUSAMMENFASSUNG
-
Aspekte einer oder mehreren beispielhaften Ausführungsformen sehen ein Verfahren und eine Vorrichtung zur Quantisierung eines künstlichen neuronalen Netzwerkes (KNN) vor, durch welches ein beliebiges KNN mit einer hohen Genauigkeit quantisiert wird.
-
Gemäß einem Aspekt einer beispielhaften Ausführungsform ist ein Quantisierungsverfahren für ein künstliches neuronales Netzwerk (KNN) zum Erzeugen eines Ausgabe-KNN durch Quantisieren eines Eingabe-KNN vorgesehen, wobei das KNN-Quantisierungsverfahren enthält: Erhalten zweiter Parameter durch Quantisieren erster Parametern des Eingabe-KNN; Erhalten einer Probenverteilung von einem Zwischen-KNN, in welchem die erhaltenen zweiten Parameter auf das Eingabe-KNN angewendet wurden; und Erhalten einer Fraktionallänge (bzw. Nachkommastellenlänge) für die erhaltene Probenverteilung durch Quantisieren der erhaltenen Probenverteilung.
-
Gemäß einem Aspekt einer anderen beispielhaften Ausführungsform ist eine Vorrichtung zum Erzeugen eines künstlichen neuronalen Ausgabe-Netzwerkes (bzw. Ausgabe-KNN) durch Quantisieren eines Eingabe-KNN vorgesehen, wobei die Vorrichtung enthält: einen Speicher, der computerausführbare Anweisungen speichert; und zumindest einen Prozessor, der konfiguriert ist, die gespeicherten computerausführbaren Anweisungen auszuführen: einen Parameterquantisierer, der konfiguriert ist, durch Quantisieren erster Parameter des Eingabe-KNN zweite Parameter zu erhalten; eine neuronale Netzwerkschnittstelle, die konfiguriert ist, eine Probenverteilung von einem Zwischen-KNN zu erhalten, in welchem die erhaltenen zweiten Parameter auf das Eingabe-KNN angewendet wurden; und einen Probenquantisierer, der konfiguriert ist, eine Fraktionallänge für die erhaltene Probenverteilung zu erhalten.
-
Gemäß einem Aspekt einer anderen beispielhaften Ausführungsform ist ein Verfahren zur Quantisierung eines neuronalen Gleitkomma-Netzwerkes vorgesehen, wobei das Verfahren enthält: Erhalten von quantisierten Parametern durch Quantisieren von Parametern in einer gleichen Kategorie in dem neuronalen Gleitkomma-Netzwerk; Erhalten einer Probenverteilung von einem künstlichen neuronalen Semi-Festkomma-Netzwerk (Semi-Festkomma-KNN), in welchem die erhaltenen quantisierten Parametern auf das neuronale Gleitkomma-Netzwerk angewendet wurden; und Erhalten einer Fraktionallänge für die erhaltene Probenverteilung.
-
Gemäß einem Aspekt einer anderen beispielhaften Ausführungsform ist eine Vorrichtung zur Quantisierung eines neuronalen Gleitkomma-Netzwerkes (Gleitkomma-KNN) vorgesehen, wobei die Vorrichtung enthält: einen Speicher, der computerausführbare Anweisungen speichert; und zumindest einen Prozessor, der konfiguriert ist, die gespeicherten computerausführbaren Anweisungen auszuführen; einen Parameterquantisierer, der konfiguriert ist, quantisierte Parameter zu erhalten durch Quantisieren von Parametern in einer gleichen Kategorie in dem neuronalen Gleitkomma-Netzwerk; eine neuronale Netzwerkschnittstelle, die konfiguriert ist, eine Probenverteilung von einem künstlichen neuronalen Semi-Festkomma-Netzwerk (Semi-Festkomma-KNN) zu erhalten, in welchem die erhaltenen Parameter auf das neuronale Gleitkomma-Netzwerk angewendet wurden; und einen Probenquantisierer, der konfiguriert ist, eine Fraktionallänge für die erhaltene Probenverteilung zu erhalten.
-
Figurenliste
-
Eine oder mehrere beispielhafte Ausführungsformen werden anhand der folgenden detaillierten Beschreibung in Kombination mit den begleitenden Zeichnungen besser verstanden werden, in welchen:
- 1 ein Blockschaubild eines Quantisierungssystems und eines neuronalen Netzwerksystems gemäß einer beispielhaften Ausführungsform ist;
- 2 ein Schaubild ist, das ein Beispiel eines künstlichen neuronalen Netzwerkes (KNN) zeigt, gemäß einer beispielhaften Ausführungsform;
- 3 ein Flussdiagramm eines Verfahrens zur Quantisierung eines KNN ist, gemäß einer beispielhaften Ausführungsform;
- 4 ein Flussdiagramm eines Beispiels für den Vorgang S200 von 3 ist, gemäß einer beispielhaften Ausführungsform;
- 5 ein Flussdiagramm eines Beispiels für den Vorgang S600 von 3 ist, gemäß einer beispielhaften Ausführungsform;
- 6A-6C ein Beispiel für den Vorgang S620 von 5 zeigen, gemäß einer beispielhaften Ausführungsform;
- 7 ein Flussdiagramm eines Beispiels für den Vorgang S660 von 5 ist, gemäß einer beispielhaften Ausführungsform;
- 8 ein Flussdiagramm eines Beispiels für den Vorgang S680 von 3 ist, gemäß einer beispielhaften Ausführungsform;
- 9 ein Flussdiagramm eines Beispiels für den Vorgang S682 von 8 ist, gemäß einer beispielhaften Ausführungsform;
- 10A und 10B Flussdiagramme von Beispielen für den Vorgang S684 von 8 sind, gemäß einer oder mehreren beispielhaften Ausführungsformen;
- 11 ein Blockdiagramm eines Rechensystems gemäß einer beispielhaften Ausführungsform ist; und
- 12 ein Blockdiagramm einer mobilen Rechenvorrichtung gemäß einer beispielhaften Ausführungsform ist.
-
DETAILLIERTE BESCHREIBUNG VON BEISPIELHAFTEN AUSFÜHRUNGSFORMEN
-
Im Folgenden werden eine oder mehrere beispielhafte Ausführungsformen zusammen mit den sie begleitenden Zeichnungen ausführlich beschrieben, wobei sich gleichartige Bezugszeichen durchgängig auf gleichartige Elemente beziehen. Wie hierin verwendet umfasst der Begriff „und/oder“ alle Kombinationen von einem oder mehreren der zugehörigen aufgeführten Elemente. Ebenso ändern Ausdrücke wie „zumindest eine(r) von“, wenn sie einer Liste von Elementen vorangestellt werden, die gesamte Liste von Elementen und ändern nicht die einzelnen Elemente der Liste.
-
1 ist ein Blockdiagramm eines Quantisierungssystems 100 und eines neuronalen Netzwerksystems 200 gemäß einer beispielhaften Ausführungsform. Das neuronale Netzwerksystem 200 kann ein künstliches neuronales Netzwerk (KNN) bereitstellen, und das Quantisierungssystem 100 kann das durch das neuronale Netzwerksystem 200 bereitgestellte KNN quantisieren und kann dem neuronalen Netzwerksystem 200 ein KNN bereitstellen, von welchem zumindest ein Teil quantisiert worden ist.
-
Das KNN kann ein Rechensystem betreffen, das von einem biologischen neuronalen Netzwerk, welches ein Gehirn eines Tieres bildet, inspiriert ist. Das KNN kann lernen Aufgaben auszuführen, indem es mehrere Proben (oder Beispiele) berücksichtigt, im Gegensatz zu klassischen Algorithmen, die Aufgaben gemäß vordefinierten Bedingungen ausführen, wie zum Beispiel die regelbasierte Programmierung. Das KNN kann eine Struktur aufweisen, in welcher künstliche Neuronen (oder Neuronen) miteinander verbunden sind. Die Verbindung zwischen den Neuronen kann als Synapse bezeichnet werden. Jedes von den Neuronen kann ein empfangenes Signal verarbeiten und ein verarbeitetes Signal durch die Synapse zu einem anderen Neuron übertragen. Die Ausgabe des Neurons kann als „Aktivierung“ bezeichnet werden. Das Neuron und/oder die Synapse können sich ändernde Gewichtungen aufweisen, und der Einfluss eines von dem Neuron verarbeiteten Signals kann abhängig von seiner Gewichtung zunehmen oder abnehmen. Insbesondere kann die Gewichtung, die einem Einzelneuron zugeordnet ist, als Bias bezeichnet werden.
-
Ein tiefgehendes neuronales Netzwerk (DNN) oder eine tiefgehende Lemarchitektur kann eine Schichtstruktur aufweisen, und eine Ausgabe einer bestimmten Schicht kann eine Eingabe einer darauffolgenden Schicht sein. In solch einer Mehrschichtstruktur kann jede Schicht entsprechend mehreren Proben trainiert werden. Ein KNN, wie zum Beispiel das DNN, kann durch eine Mehrzahl von Verarbeitungsknoten realisiert sein, wobei jeder einem künstlichen Neuron entspricht, und kann eine hohe Rechenkomplexität und Rechenressourcen nutzen, um gute (z.B. hochgenaue) Ergebnisse zu erzielen.
-
Um die Rechenkomplexität zu reduzieren kann ein KNN quantisiert werden. Quantisierung kann einen Prozess betreffen bei welchem Eingabewerte einer Anzahl von Werten, die kleiner als die Anzahl der Eingabewerte ist, zugeordnet werden, ähnlich wie die Zuordnung einer reellen Zahl zu einer Ganzzahl durch Rundung. Quantisierung kann in einem KNN beispielsweise auf Schichtaktivierungen, Gewichtungen, Bias, Schwellenwerte, Eingabe/Ausgabe-Verteilungen) usw. angewendet werden. Ein quantisiertes KNN kann es ermöglichen, eine verringerte Anzahl von Rechenressourcen zu verwenden.
-
Die Quantisierung eines KNN kann mit einem Prozess der Umwandlung eines neuronalen Gleitkomma-Netzwerkes in ein neuronales Festkomma-Netzwerk einhergehen. Die Umwandlung eines neuronalen Gleitkomma-Netzwerkes in ein neuronales Festkomma-Netzwerk kann ein Bestimmen (z.B. Erhalten) einer Fraktionallänge (bzw. Nachkommastellenlänge) des neuronalen Festkomma-Netzwerkes enthalten. Gleitkommazahlen können Vorzeichen, Exponenten und signifikante Stellen (oder Mantisse) enthalten, während Festkommazahlen Ganzzahlteile (bzw. Vorkommaanteile) und Bruchteile (bzw. Nachkommaanteile) enthalten können. Bei manchen Beispielen können die Ganzzahlteile der Festkommazahlen Vorzeichenbits enthalten. Ein KNN, das Gleitkommazahlen verwendet, d.h. ein neuronales Gleitkomma-Netzwerk, kann eine hohe Genauigkeit und eine hohe Rechenkomplexität aufweisen, während ein KNN, das Festkommazahlen verwendet, d.h. ein neuronales Festkomma-Netzwerk, eine geringere Genauigkeit und geringere Rechenkomplexität aufweisen kann.
-
Aufgrund einer Austauschbeziehung zwischen Ergebnisgenauigkeit und Rechenkomplexität in dem KNN kann die Quantisierung des KNN zu einer Variation der Genauigkeit führen, und die Variation der Genauigkeit kann von einem Quantisierungsverfahren abhängen. Wie im Folgenden mit Bezug auf die Zeichnungen beschrieben kann das Quantisierungssystem 100 gemäß einer beispielhaften Ausführungsform ein effizientes Mittel zur Quantisierung eines KNN bereitstellen. Entsprechend kann das Quantisierungssystem 100 eine Quantisierung bezüglich eines beliebigen KNN bereitstellen und kann ein quantisiertes KNN mit der gleichen Leistungsfähigkeit wie die Leistungsfähigkeit des beliebigen KNN bereitstellen. Aufgrund des quantisierten KNN mit hoher Genauigkeit können die Rechenressourcen zum Ausführen des KNN verringert werden, und infolgedessen kann das Anwendungsnetzwerk des KNN erheblich erweitert werden.
-
Das neuronale Netzwerksystem 200 kann ein beliebiges System sein, das ein KNN bereitstellt (oder betreibt) und kann als eine neuronale Netzwerkvorrichtung bezeichnet werden. Zum Beispiel kann das neuronale Netzwerksystem 200 ein Rechensystem sein, das zumindest einen Prozessor und einen Speicher enthält. Als nicht einschränkendes Beispiel kann das neuronale Netzwerksystem 200 sowohl ein mobiles Rechensystem sein, wie zum Beispiel ein Laptop-Computer, ein Tablet-Computer oder ein Smartphone, als auch ein stationäres Rechensystem, wie zum Beispiel ein Desktop-Computer, eine Workstations oder ein Server.
-
Gemäß einer oder mehreren beispielhaften Ausführungsformen kann das neuronale Netzwerksystem 200 ein neuronales Gleitkomma-Netzwerk betreiben und kann dem Quantisierungssystem 100 Informationen über das neuronale Gleitkomma-Netzwerk bereitstellen. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann das neuronale Netzwerksystem 200 ein KNN gemäß der von dem Quantisierungssystem 100 empfangenen Information betreiben und kann dem Quantisierungssystem 100 Information über das betriebene KNN bereitstellen. In 1 sind das neuronale Netzwerksystem 200 und das Quantisierungssystem 100 getrennte Systeme. Allerdings können bei einer oder mehreren beispielhaften Ausführungsformen das neuronale Netzwerksystem 200 und das Quantisierungssystem 100 als Einzelsystem ausgebildet sein.
-
Das Quantisierungssystem 100 kann ein beliebiges System sein, das Quantisierung gemäß einer oder mehrerer beispielhaften Ausführungsformen durchführt und kann als eine Quantisierungsvorrichtung bezeichnet werden. Das Quantisierungssystem 100 kann beispielsweise ein Rechensystem sein, das zumindest einen Prozessor und einen Speicher enthält. Das Quantisierungssystem 100 kann ein stationäres Rechensystem oder ein mobiles Rechensystem sein. Das Quantisierungssystem 100 kann ein KNN quantisieren, basierend auf der von dem neuronalen Netzwerksystem 200 bereitgestellten Information über das KNN. Hier kann ein zu quantisierendes KNN als ein Eingabe-KNN bezeichnet werden, und ein KNN, das durch Quantisieren des Eingabe-KNN erzeugt wird, kann als ein Ausgabe-KNN bezeichnet werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann das Eingabe-KNN ein neuronales Gleitkomma-Netzwerk enthalten und das Ausgabe-KNN kann ein neuronales Festkomma-Netzwerk enthalten.
-
Wie in 1 dargestellt kann das Quantisierungssystem 100 eine neuronale Netzwerkschnittstelle 120, einen Parameterquantisierer 140 und einen Probenquantisierer 160 enthalten. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann jedes von der neuronalen Netzwerkschnittstelle 120, dem Parameterquantifizierer 140 und dem Probenquantifizierer 160 mit einem durch Logiksynthese implementierten Logikblock, einem von einem Prozessor ausgeführten Softwareblock, oder einer Kombination davon implementiert werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann jedes von der neuronalen Netzwerkschnittstelle 120, dem Parameterquantisierer 140 und dem Probenquantisierer 160 eine Prozedur sein, d.h. ein Satz von Anweisungen, welche von einem Prozessor ausgeführt werden, und können in einem Speicher gespeichert werden, auf den der Prozessor zugreifen kann.
-
Die neuronale Netzwerkschnittstelle 120 kann dem Parameterquantisierer 140 und dem Probenquantisierer 160 eine Schnittstelle für das neuronale Netzwerksystem 200 bereitstellen. Die neuronale Netzwerkschnittstelle 120 kann beispielsweise die Parameter eines Eingabe-KNN, die sie von dem neuronalen Netzwerksystem 200 empfängt, dem Parameterquantisierer 140 bereitstellen, und kann quantisierte Parameter, die sie von dem Parameterquantisierer 140 empfängt, dem neuronalen Netzwerksystem 200 bereitstellen. Darüber hinaus kann die neuronale Netzwerkschnittstelle 120 eine Probenverteilung, die sie von dem neuronalen Netzwerksystem 200 empfängt, dem Probenquantisierer 160 bereitstellen und kann eine quantisierte Probenverteilung, die sie von dem Probenquantisierer 160 empfängt, oder eine Fraktionallänge (z.B. FLsam von 5) dem neuronalen Netzwerksystem 200 bereitstellen.
-
Der Parameterquantisierer 140 kann die quantisierten Parameter (im Folgenden als Ausgabe-Parameter oder zweite Parameter bezeichnet) aus den Parametern erzeugen (z.B. erhalten), die er von dem neuronale Netzwerksystem 200 über die neuronale Netzwerkschnittstelle 120 empfängt (im Folgenden als Eingabe-Parameter oder erste Parameter bezeichnet). Wie unten mit Bezug auf 2 beschrieben kann ein KNN verschiedene Parameter enthalten, und eine Quantisierung des KNN kann eine Quantisierung dieser Parameter enthalten. Der Parameterquantisierer 140 kann zumindest einige der Parameter des Eingabe-KNN quantisieren und entsprechend können die Parameter des Eingabe-KNN vor der Probenverteilung quantisiert werden. Wie im Folgenden mit Bezug auf 2 beschrieben kann eine Quantisierung der Parameter getrennt von der Quantisierung der Probenverteilungen sein, weil Parameter und Probenverteilungen in einer KNN verschiedene Merkmale haben können. Der Parameterquantisierer 140 kann über die neuronale Netzwerkschnittstelle 120 die quantisierten Parameter dem neuronalen Netzwerksystem 200 bereitstellen. Beispiele eines Vorgangs des Parameterquantisierers 140 werden im Folgenden mit Bezug auf 4 beschrieben werden.
-
Der Probenquantisierer 160 kann quantisierte Probenverteilungen (im Folgenden als Ausgabe-Probenverteilungen bezeichnet) aus den Probenverteilungen erzeugen (z.B. erhalten), die er von dem neuronalen Netzwerksystem 200 über die neuronale Netzwerkschnittstelle 120 empfängt (im Folgenden als Eingabe-Probenverteilungen bezeichnet). Die Eingabe-Probenverteilungen können eine andere Form aufweisen als die artverwandten Verteilungen, wie zum Beispiel eine Gauß-Verteilung, eine Laplace-Verteilung und eine Gamma-Verteilung. Wie im Folgenden beschrieben braucht der Probenquantisierer 160 gemäß einer oder mehreren beispielhaften Ausführungsformen nicht bezüglich der Form der Probenverteilungen beschränkt sein und kann eine Quantisierung mit einer verbesserten Genauigkeit bereitstellen, bezogen auf eine Probenverteilung mit einer beliebigen Form.
-
Gemäß einer oder mehreren beispielhaften Ausführungsformen kann der Probenquantisierer 160 Probenverteilungen empfangen, die von einem KNN erzeugt werden, das durch Anwenden der von dem Parameterquantisierer 140 erhaltenen quantisierten Parameter auf das Eingabe-KNN erhalten wird. In der vorliegenden Beschreibung kann das KNN, das durch Anwenden der von dem Parameterquantisierer 140 erhaltenen quantisierten Parameter auf das Eingabe-KNN erhalten wird, als ein Zwischen-KNN bezeichnet werden. Insbesondere kann, während ein neuronales Gleitkomma-Netzwerk in ein neuronales Festkomma-Netzwerk umgewandelt wird, ein KNN, das durch Anwenden quantisierter Parameter auf das neuronale Gleitkomma-Netzwerk erhalten wird, als ein neuronales Semi-Festkomma-Netzwerk bezeichnet werden. Der Probenquantisierer 160 quantisiert Probenverteilungen, die durch die quantisierten Parameter erzeugt werden, die auf das quantisierte KNN, nämlich das Ausgabe-KNN, angewendet werden sollen. Somit kann eine Quantisierungsgenauigkeit bezüglich den Probenverteilungen des Ausgabe-KNN verbessert werden. Anders ausgedrückt können Quantisierungsfehler in Bezug auf die Probenverteilungen verringert werden. Beispiele eines Vorgangs des Probenquantisierers 160 werden im Folgenden mit Bezug auf 5, 6A - 6C, 7 - 9 und 10A - 10B beschrieben werden.
-
2 ist ein Schaubild, das ein Beispiel eines KNN gemäß einer beispielhaften Ausführungsform zeigt. Im Detail ist 2 ein Schaubild, das die Struktur eines DNN 20, als ein Beispiel eines KNN, schematisch darstellt.
-
Wie in 2 gezeigt kann das DNN 20 eine Mehrzahl von Schichten enthalten, d.h. die ersten bis n-ten Schichten L1, L2, L3,... und Ln, und Ausgaben von jeder von den ersten bis n-ten Schichten L1, L2, L3, ... und Ln können in eine nachfolgende Schicht durch zumindest einen Kanal eingegeben werden. Zum Beispiel kann die erste Schicht L1 durch eine Mehrzahl von Kanälen CH11 bis CHlx der zweiten Schicht L2 Ausgaben bereitstellen, indem eine Probe SAM verarbeitet wird, und die zweite Schicht L2 kann durch eine Mehrzahl von Kanälen CH21 bis CH2y der dritten Schicht L3 auch Ausgaben bereitstellen. Schließlich kann die n-te Schicht Ln ein Ergebnis RES ausgeben, und das Ergebnis RES kann zumindest einen Wert enthalten, der der Probe SAM zugehörig ist. Die Anzahlen der Kanäle, durch welche die Ausgaben der ersten bis n-ten Schichten L1, L2, L3,... und Ln jeweils geliefert werden, können gleich sein oder voneinander verschieden sein. Zum Beispiel kann die Anzahl der Kanäle CH21 bis CH2y der zweiten Schicht L2 gleich der Anzahl der Kanäle CH31 bis CH3z der dritten Schicht L3 sein oder davon verschieden sein.
-
Die Probe SAM kann Eingabe-Daten entsprechen, die von dem DNN 20 verarbeitet werden. Die Probe SAM kann beispielsweise ein Bild sein, das einen von einer Person mit einem Stift geschriebenen Buchstaben enthält, und das DNN 20 kann durch Erkennen des Buchstabens aus dem Bild das Ergebnis RES ausgeben, das einen Wert enthält, der den Buchstaben repräsentiert. Das Ergebnis RES kann eine Mehrzahl von Wahrscheinlichkeiten enthalten, die verschiedenen Buchstaben entsprechen, und der wahrscheinlichste Buchstabe unter den verschiedenen Buchstaben kann einer höchsten Wahrscheinlichkeit entsprechen. Jede von den ersten bis n-ten Schichten L1, L2, L3,... und Ln des DNN 20 kann ihre eigenen Ausgaben erzeugen, durch Verarbeitung der Probe SAM oder den Ausgaben einer vorausgehenden Schicht basierend auf vordefinierten Parametern (z.B. Gewichtungen, Bias, Schwellenwerte, etc.) oder auf Parametern (z.B. Gewichtungen, Bias, Schwellenwerte, etc.), die durch Lernen einer Mehrzahl von Bildern, die Buchstaben enthalten, erzeugt werden. Wie in 2 gezeigt kann die zweite Schicht L2 beispielsweise einen Gewichtungssatz W, der eine Mehrzahl von Gewichtungen w1 ,... und wp enthält, einen Bias-Satz B, der eine Mehrzahl von Bias b1 ,..., und bq enthält, und einen Schwellenwertsatz T, der eine Mehrzahl von Schwellenwerten t1 ,..., und tr enthält, enthalten und kann ferner andere Parameter, die nicht spezifisch in 2 gezeigt werden, enthalten.
-
Gemäß einer oder mehreren beispielhaften Ausführungsformen können zumindest einige der Parameter der DNN 20 durch den Parameterquantisierer 140 von 1 quantisiert werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann der Parameterquantisierer 140 Parameter für jede von der Mehrzahl von Schichten L1, L2, L3,... und Ln unabhängig voneinander quantisieren oder kann Parameter für jeden von der Mehrzahl von Kanälen (z.B. CH 21,... und CH2y) unabhängig voneinander quantisieren. Gemäß einer oder mehreren beispielhaften Ausführungsformen können die Parameter von zumindest zwei Schichten gemeinsam quantisiert werden, und die Parameter von zumindest zwei Kanälen können gemeinsam quantisiert werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen können die Gewichtungen, die Bias und die Schwellenwerte unabhängig voneinander quantisiert werden, oder Parameter von zumindest zwei verschiedenen Arten können gemeinsam quantisiert werden. Eine oder mehrere beispielhafte Ausführungsformen werden im Folgenden unter Bezugnahme auf eine Darstellung von Quantisierungsgewichten als Parameter beschrieben, wobei davon ausgegangen wird, dass eine oder mehrere andere beispielhafte Ausführungsformen nicht darauf beschränkt sind.
-
Die DNN 20 kann eine Aktivierungsfunktion zwischen den Schichten enthalten. Die Aktivierungsfunktion kann eine Ausgabe einer vorausgehenden Schicht in eine Eingabe einer nachfolgenden Schicht umwandeln. Wie in 2 gezeigt kann beispielsweise eine Aktivierungsfunktion f2 eine nichtlineare Funktion sein, zum Beispiel eine gleichgerichtete lineare Einheit (ReLU), eine parametrisierte gleichgerichtete lineare Einheit (PReLU), ein Tangens Hyperbolicus (tanh) oder eine Sigmoidfunktion, und kann eine Ausgabe der zweiten Schicht L2 zwischen der zweiten Schicht L2 und der dritten Schicht L3 in nichtlinearer Weise umwandeln.
-
Gemäß einer oder mehreren beispielhaften Ausführungsformen kann der Probenquantisierer 160 von 1 als Probenverteilung nicht nur eine Eingabe einer Aktivierungsfunktion empfangen, nämlich einen Vor-Aktivierungswert, sondern auch eine Ausgabe der Aktivierungsfunktion, und kann Quantisierung ausführen. Darüber hinaus kann die neuronale Netzwerkschnittstelle 120 von 1 gemäß einer oder mehreren beispielhaften Ausführungsformen eine Eingabe-Verteilung in Einheiten von Schichten und/oder Kanälen des KNN (z.B. DNN 20) erhalten. Die Probenverteilungen, die von dem Probenquantisierer 160 von 1 empfangenen werden, können beispielsweise von den Ausgaben erhalten werden, die von einer Schicht durch eine Mehrzahl von Kanälen erzeugt werden, oder von einer Ausgabe, die einem Kanal entspricht.
-
3 ist ein Flussdiagramm eines Verfahrens zur Quantisierung eines KNN, gemäß einer beispielhaften Ausführungsform. Zum Beispiel kann das Verfahren von 3 von dem Quantisierungssystem 100 von 1 ausgeführt werden. Im Folgenden wird 3 mit Bezug auf 1 beschrieben werden.
-
Bezugnehmend auf 3 können bei Vorgang S200 Parameter des KNN quantisiert werden. Zum Beispiel kann der Parameterquantisierer 140 von 1 quantisierte Parameter erzeugen, die einer gegebenen Fraktionallänge entsprechen, und eine endgültige Fraktionallänge (zum Beispiel FLpar von 4) für die Parameter kann basierend auf einem Quantisierungsfehler der quantisierten Parameter bestimmt werden. Ein Beispiel des Vorgangs S200 wird im Folgenden mit Bezug auf 4 beschrieben werden.
-
Bei Vorgang S400 können von einem KNN, auf welches die quantisierten Parameter angewendet wurden, Probenverteilungen erhalten werden. Der Parameterquantisierer 140 von 1 kann beispielsweise über die neuronale Netzwerkschnittstelle 120 die quantisierten Parameter dem neuronalen Netzwerksystem 200 bereitstellen, und das neuronale Netzwerksystem 200 kann ein Zwischen-KNN betreiben, das durch Anwenden der quantisierten Parameter auf ein Eingabe-KNN erhalten wird. Die neuronale Netzwerkschnittstelle 120 kann eine Probenverteilung des Zwischen-KNN von dem neuronale Netzwerksystem 200 empfangen, und kann die empfangene Probenverteilung als eine Eingabe-Probenverteilung dem Probenquantisierer 160 bereitstellen.
-
Bei Vorgang S600 können die Probenverteilungen quantisiert werden. Der Probenquantisierer 160 von 1 kann beispielsweise die Eingabe-Probenverteilung, die eine beliebige Form aufweist, in zumindest zwei Probengruppen aufteilen, und kann jede von den Probengruppen unabhängig voneinander an eine kontinuierliche Wahrscheinlichkeitsverteilung (CPD) approximieren. Der Probenquantisierer 160 kann basierend auf der kontinuierlichen Wahrscheinlichkeitsverteilung (CPD) eine optimale Schrittweite berechnen (z.B. erhalten) und kann von der berechneten Schrittweite eine Fraktionallänge (zum Beispiel FLsam von 5) zum Quantisieren der Eingabe-Probenverteilung bestimmen (z.B. erhalten). Beispiele des Vorgangs S600 werden im Folgenden mit Bezug auf 5, 6A - 6C, 7-9 und 10A -10B beschrieben werden.
-
4 ist ein Flussdiagramm eines Beispiels des Vorgangs S200 von 3, gemäß einer beispielhaften Ausführungsform. Wie vorstehend mit Bezug auf 3 beschrieben können bei Vorgang S200' von 4 die Parameter des KNN quantisierten werden. Wie in 4 gezeigt kann Vorgang S200' eine Mehrzahl von Vorgängen S210 bis S260 enthalten. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann Vorgang S200' von 4 von dem Parameterquantisierer 140 von 1 ausgeführt werden. 4 wird nun mit Bezug auf 1 beschrieben werden.
-
Bei Vorgang S210 kann eine Initialisierung durchgeführt werden, indem eine Variable i gleich eins gesetzt wird. Die Variable i kann ein Index sein, der jede aus einer Mehrzahl von Fraktionallängen anzeigt, und Evaluierungswerte, die jeweils der Mehrzahl von Fraktionallängen entsprechen, können in darauffolgenden Vorgängen berechnet werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann die Mehrzahl von Fraktionallängen von einem System bestimmt (z.B. erhalten) werden, auf welchem ein quantisiertes KNN angebracht werden soll (z.B. 400 von 12). Zum Beispiel kann eine Mehrzahl von erhältlichen Fraktionallängen gemäß einer Bitbreite des Systems bestimmt werden. Bei dem Beispiel von 4 können, wenn k eine positive Ganzzahl ist, k Fraktionallängen FL1 , ... und FLk verwendet werden, und die Variable i kann sequentiell von 1 bis k ansteigen.
-
Bei Vorgang
S220 können die Parameter gemäß einer i-ten Fraktionallänge FLi quantisiert werden und ein Quantisierungsfehler kann berechnet werden. Wenn eine Fraktionallänge gegeben ist, können die Parameter quantisiert werden, und der Quantisierungsfehler kann aus noch nicht quantisierten Parametern (d.h. Eingabeparameter oder erste Parameter) und aus quantisierten Parametern (d.h. Ausgabeparameter oder zweite Parameter) berechnet werden. Wenn eine Gewichtung, die aus einer Gewichtung
wj gemäß der i-ten Fraktionallänge FLi quantisiert wird, beispielsweise Q(
wj ,
FLi ) ist, kann ein Quantisierungsfehler Eij durch Verwenden von [Gleichung 1] berechnet werden.
-
Bei Vorgang
S230 kann ein der i-ten Fraktionallänge FLi entsprechender Evaluierungswert berechnet werden. Der Evaluierungswert kann einen Wert anzeigen, welcher die Quantisierungsleistung repräsentiert, basierend auf dem Quantisierungsfehler von [Gleichung 1] oder einem Quantisierungsfehler, der anders als der Quantisierungsfehler von [Gleichung 1] definiert ist. Als nicht einschränkendes Beispiel kann der Evaluierungswert ein mittlerer quadratischer Fehler (MSE), ein Signal-Quantisierungsrausch-Verhältnis (SQNR) oder dergleichen sein. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann ein Evaluierungswert
Dw (
FLi ) für die in dem Gewichtungssatz W enthaltenen Gewichtungen bei der gegebenen i-ten Fraktionallänge FLi durch Verwenden von [Gleichung 2] berechnet werden.
-
Bei Vorgang S240 kann bestimmt werden, ob die Variablen i identisch zu k ist. Anders ausgedrückt kann überprüft werden, ob für alle k Fraktionallängen FL1, ... und FLk die Evaluierungswerte berechnet wurden. Wenn die Variable i nicht identisch mit k ist, kann bei Vorgang S250 die Variable i um 1 erhöht werden und dann kann Vorgang S220 ausgeführt werden. Andererseits kann, wenn die Variable i identisch mit k ist, der Vorgang S260 durchgeführt werden.
-
Bei Vorgang S260 kann eine Fraktionallänge FLpar für die Parameter bestimmt (z.B. erhalten) werden, basierend auf den Evaluierungswerten. Anders ausgedrückt können bei den Vorgängen S220 bis S240 k Evaluierungswerte berechnet werden und bei Vorgang S260 kann bestimmt werden, dass eine der k Fraktionallänge FL1, ... und FLk die Fraktionallänge FLpar für die Parameter ist. Zum Beispiel kann, wenn ein Evaluierungswert durch Verwenden von [Gleichung 2] berechnet wird, eine Fraktionallänge, die einem minimalen Evaluierungswert aus den k Evaluierungswerten entspricht, ausgewählt werden. Im Gegensatz zu den Probenverteilungen können die Parameter des Eingabe-KNN deterministische Werte sein und wie vorstehend beschrieben kann eine Fraktionallänge bestimmt werden, die einen Quantisierungsfehler minimiert. Das Verfahren von 4 ist bloß ein Beispiel des Vorgangs S200 von 3 und verschiedene Quantisierungsverfahren, die dem Verfahren von 4 ähnlich sind oder davon verschieden sind, können im technischen Umfang des erfinderischen Konzepts verwendet werden, um die Parameter zu quantisieren.
-
5 ist ein Flussdiagramm eines Beispiels des Vorgangs S600 von 3, gemäß einer beispielhaften Ausführungsform. Wie oben mit Bezug auf 3 beschrieben können bei Vorgang S600' von 6 Probenverteilungen quantisiert werden. Im Detail zeigt 5 ein Beispiel des Quantisierens einer einzelnen Probenverteilung und wie in 5 gezeigt kann Vorgang S600' eine Mehrzahl von Vorgängen S620, S640, S660 und S680 enthalten. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann Vorgang S600' von 5 von dem Probenquantisierer 160 von 1 ausgeführt werden. 5 wird nun mit Bezug auf 1 beschrieben werden.
-
Bei Vorgang S620 kann eine Probenverteilung (oder eine Eingabe-Probenverteilung) in zumindest zwei Probengruppen aufgeteilt werden. Gemäß einer beispielhaften Ausführungsform können statistische Merkmale verwendet werden, um die Probenverteilung zu quantisieren. Entsprechend kann, um die statistischen Merkmale der Probenverteilung abzuleiten, die Probenverteilung in zumindest zwei Probengruppen SG1 , SG2 , ... aufgeteilt werden und die Probengruppen SG1 , SG2 ... können unabhängig voneinander approximiert werden. Ein Beispiel für Vorgang S620 wird im Folgenden mit Bezug auf 6 beschrieben werden.
-
Bei Vorgang S640 können die Probengruppen jeweilig an kontinuierliche Wahrscheinlichkeitsverteilungs approximiert werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen können die Merkmalsgruppen SG1 , SG2 ,..., die bei Vorgang S620 erzeugt werden, jeweilig an die kontinuierliche Wahrscheinlichkeitsverteilungen (CPDs) approximiert werden, durch Schätzen zumindest eines Parameters von jeder der kontinuierlichen Wahrscheinlichkeitsverteilungen (CPDs). Zum Beispiel kann jede von den Merkmalsgruppen an eine generalisierte Gamma-Verteilung, eine Gauß-Verteilung oder eine Laplace-Verteilung approximiert werden. Um die Parameter der kontinuierliche Wahrscheinlichkeitsverteilungen (CPDs) abzuschätzen, kann als nicht einschränkendes Beispiel ein Moment-verwendendes-Verfahren, das einen Mittelwert, eine Varianz oder dergleichen, verwendet, ein Maximum-Likelihood-Verfahren, ein numerisches rechenbasiertes Verfahren oder dergleichen verwendet werden. Entsprechend können zumindest zwei kontinuierliche Wahrscheinlichkeitsverteilungen (CPDs) CPD1, CPD2,..., die Parameter mit eindeutigen Werten aufweisen, aus den zumindest zwei Probengruppen SG1 , SG2 ,... berechnet werden.
-
Gemäß einer oder mehreren beispielhaften Ausführungsformen kann jede der Probengruppen
SG1 ,
SG2 ,... an eine generalisierte Gamma-Verteilung p(x) mit vier Parametern α, β, λ und µ, wie in [Gleichung 3] gezeigt, approximiert werden.
und α und β können exponentielle Zerfallsparameter sein. Wenn α = 1 können die vier Parameter α, β, λ und µ aus einem Mittelwert
mx und einer Varianz σ
x 2 berechnet werden, entsprechend dem in [Gleichung 4] gezeigten Moment-verwendenden-Verfahren.
-
Bei Vorgang S660 können Schrittweiten, die den Probengruppen entsprechen, berechnet werden. Anders ausgedrückt können die Schrittweiten aus den Probengruppen und den aus den Probengruppen abgeleiteten kontinuierlichen Wahrscheinlichkeitsverteilungen (CPDs) berechnet werden. Zum Beispiel kann aus einer Probengruppe und einer kontinuierlichen Wahrscheinlichkeitsverteilung (CPD) ein Quantisierungsfehler berechnet werden, und eine Schrittweite mit einem niedrigen Quantisierungsfehler kann berechnet werden. Entsprechend können die jeweiligen den Probengruppen entsprechenden Schrittweiten Δ1, Δ2, ... berechnet werden. Ein Beispiel des Vorgangs S660 wird im Folgenden mit Bezug auf 7 beschrieben werden.
-
Bei Vorgang S680 kann eine Fraktionallänge für die Probenverteilung ausgewählt werden. Zum Beispiel kann zumindest eine Kandidaten-Fraktionallänge aus den in Vorgang S660 berechneten Schrittweiten berechnet werden, und eine von den zumindest einen Kandidaten-Fraktionallängen kann als eine Fraktionallänge FLsam für die Probenverteilung ausgewählt werden. Beispiele des Vorgangs S680 werden im Folgenden mit Bezug auf 8, 9,10A und 10B beschrieben werden.
-
6A-6C zeigen ein Beispiel des Vorgangs S620 von 5, gemäß einer beispielhaften Ausführungsform. Wie vorstehend mit Bezug auf 5 beschrieben kann bei Vorgang S620 eine Probenverteilung in zumindest zwei Probengruppen aufgeteilt werden. Im Detail zeigen 6A-6C ein Beispiel eines Vorgangs, bei dem eine Probenverteilung SD in zwei Probengruppen SG1 und SG2 aufgeteilt wird.
-
Bezugnehmend auf 6A kann die Probenverteilung SD von einem KNN, auf welches quantisierte Parameter angewendet wurden, bereitgestellt werden. Bezugnehmend auf 6B kann die Probenverteilung SD in zwei auf Null basierende Probengruppen SG1 und SG2 aufgeteilt werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann die Probenverteilung SD in eine erste Probengruppe SG1 , die negative Proben und Null enthält, und eine zweite Probengruppe SG2 , die positive Proben enthält, aufgeteilt werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann die Probenverteilung SD in eine erste Probengruppe SG1 , die negative Proben enthält, und eine zweite Probengruppe SG2 , die Null und positive Proben enthält, aufgeteilt werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann die Probenverteilung SD in eine erste Probengruppe SG1 , die negative Proben enthält, und eine zweite Probengruppe SG2 , die positive Proben enthält, aufgeteilt werden und die Null kann ausgenommen sein. Bezugnehmend auf 6C können die erste Probegruppe SG1 und die zweite Probengruppe SG2 unabhängig voneinander an eine erste kontinuierliche Wahrscheinlichkeitsverteilung CPD1 beziehungsweise eine zweite kontinuierliche Wahrscheinlichkeitsverteilung CPD2 approximiert werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann jede von der ersten Probengruppe SG1 und der zweiten Probengruppe SG2 an eine generalisierte Gamma-Verteilung approximiert werden, und Parameter der ersten kontinuierliche Wahrscheinlichkeitsverteilung CPD1 und der zweiten kontinuierlichen Wahrscheinlichkeitsverteilung CPD2 können durch Verwenden von [Gleichung 3] und [Gleichung 4] geschätzt werden.
-
7 ist ein Flussdiagramm eines Beispiels des Vorgang S660 von 5, gemäß einer beispielhaften Ausführungsform. Wie oben mit Bezug auf 5 beschrieben können bei Vorgang S660' von 7 Schrittweiten berechnet werden, die den Probenverteilungen entsprechen. Im Detail zeigt 7 ein Beispiel einer Schrittweitenberechnung basierend auf einer einzelnen Probengruppe SGj und einer kontinuierlichen Wahrscheinlichkeitsverteilung CPDj, an welche die Probengruppe SGj approximiert worden ist. Wie in 7 gezeigt kann Vorgang S660' den Vorgang S662 und den Vorgang S664 enthalten.
-
Bei Vorgang
S662 kann eine Überlast-Verzerrung und eine Granular-Verzerrung berechnet werden. Die Überlast-Verzerrung kann einen Fehler repräsentieren, der durch eine Eingabe verursacht wird, die von einem beschränkten Bereich abweicht, wenn die Eingabe in dem beschränkten Bereich quantisiert wird. Der Abstand zwischen den Quantisierungsergebnissen innerhalb des beschränkten Bereichs der Eingabe kann als Granularität bezeichnet werden, und die Granular-Verzerrung kann einen Fehler repräsentieren, der durch diesen Abstand verursacht wird. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann, wenn ein (-L, L)-Abschnitt gleichförmig quantisiert wird, ein Quantisierungsgrad Si wie in [Gleichung 5] dargestellt werden.
-
Entsprechend kann eine Überlast-Verzerrung
wie in [Gleichung 6] definiert werden.
-
Eine Granular-Verzerrung
kann wie in [Gleichung 7] definiert werden.
-
Entsprechend können die Überlast-Verzerrung
und die Granular-Verzerrung
die der Probengruppe
SGj und der kontinuierlichen Wahrscheinlichkeitsverteilung
CPDj entsprechen, berechnet werden.
-
Bei Vorgang
S664 kann eine Schrittweite aus der Überlast-Verzerrung und der Granular-Verzerrung berechnet werden. Zum Beispiel kann wie in [Gleichung 8] gezeigt, eine Gesamtverzerrung
Dj aus der Überlast-Verzerrung
und der Granular-Verzerrung
berechnet werden.
-
Gemäß einer oder mehreren beispielhaften Ausführungsformen kann, wenn die Überlast-Verzerrung
und die Granular-Verzerrung
durch Verwenden von [Gleichung 6] und [Gleichung 7] berechnet werden, eine Schrittweite Δ
N berechnet werden, welche die Gesamtverzerrung
Dj , welche eine Summe der Überlast-Verzerrung
und der Granular-Verzerrung
ist, minimiert. Zum Beispiel kann die Schrittweite Δ
N, welche die Gesamtverzerrung
Dj minimiert, durch Verwenden von [Gleichung 9] berechnet werden, wenn die kontinuierliche Wahrscheinlichkeitsverteilung CPDj eine generalisierte Gamma-Verteilung ist.
-
Als solches kann die Schrittweite ΔN, welche die Gesamtverzerrung Dj minimiert, basierend auf einer geschlossenen Form berechnet werden. Im Gegensatz zur vorstehenden Beschreibung kann gemäß einer oder mehreren beispielhaften Ausführungsformen, wenn sich aus der kontinuierlichen Wahrscheinlichkeitsverteilung keine geschlossene Form ergibt, zur Berechnung einer Schrittweite eine numerische Analyse verwendet werden.
-
Wie vorstehend beschrieben kann die Schrittweite Δj, die der Probengruppe SGj entspricht, bei Vorgang S660' berechnet werden. Infolgedessen können zumindest zwei Schrittweiten berechnet werden, die jeweils zumindest zwei Probengruppen entsprechen. Wenn beispielsweise die Probenverteilung SD in die erste Probengruppe SG1 und die zweite Probengruppe SG2 aufgeteilt wird, wie vorstehend unter mit Bezug auf die 6A-6C beschrieben, können die erste Schrittweite Δ1 und die zweite Schrittweite Δ2, die der ersten Probengruppe SG1 bzw. der zweiten Probengruppe SG2 entsprechen, berechnet werden. 8, 9,10A und 10B, die Beispiele des Vorgangs S680 von 5 darstellen, der nach Vorgang S660 von 5 durchgeführt wird, werden nun unter der Annahme beschrieben werden, dass die Probenverteilung SD in die erste Probengruppe SG1 und die zweite Probengruppe SG2 aufgeteilt wird und die erste Schrittweite Δ1 und die zweite Schrittweite Δ2 werden berechnet. Es versteht sich jedoch, dass eine oder mehrere andere beispielhafte Ausführungsformen nicht darauf beschränkt sind.
-
8 ist ein Flussdiagramm eines Beispiels des Vorgangs S680 von 3, gemäß einer beispielhaften Ausführungsform. Wie vorstehend mit Bezug auf 5 beschrieben kann bei Vorgang S680' von 8 die Fraktionallänge FLsam für eine Probenverteilung ausgewählt werden. Wie in 8 gezeigt kann Vorgang S680' den Vorgang S682 und den Vorgang S684 enthalten.
-
Bei Vorgang S682 können Kandidaten-Fraktionallängen berechnet werden. Ein Bereich der Kandidaten-Fraktionallängen kann beispielsweise aus der ersten Schrittweite Δ1 und der zweiten Schrittweite Δ2 bestimmt (z.B. erhalten) werden, und Fraktionallängen, die in dem Bereich enthalten sind, können als die Kandidaten-Fraktionallängen bereitgestellt werden. Entsprechend kann ein Kandidaten-Fraktionallängen-Satz FL_SET erzeugt werden, der zumindest eine Kandidaten-Fraktionallänge enthält. Ein Beispiel des Vorgangs S682 wird im Folgenden mit Bezug auf 9 beschrieben werden.
-
Bei Vorgang S684 kann eine Kandidaten-Fraktionallänge ausgewählt (z.B. erhalten oder bestimmt) werden. Eine Kandidaten-Fraktionallänge, die einen minimalen Quantisierungsfehler liefert, kann beispielsweise aus dem Kandidaten-Fraktionallängen-Satz FL_SET ausgewählt werden, und entsprechend kann die Fraktionallänge FLsam für die Probenverteilung schließlich berechnet werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann die Kandidaten-Fraktionallänge durch Verwenden verschiedener Verfahren ausgewählt werden, und einige Beispiele des Vorgangs S684 werden im Folgenden mit Bezug auf 10A und 10B beschrieben werden.
-
9 ist ein Flussdiagramm eines Beispiels des Vorgangs S682 von 8, gemäß einer beispielhaften Ausführungsform. Wie vorstehend mit Bezug auf 8 beschrieben können bei Vorgang S682' von 9 Kandidaten-Fraktionallängen erzeugt werden. Wie in 9 gezeigt kann Vorgang S682' den Vorgang S682_2 und Vorgang S682_4 enthalten.
-
Bei Vorgang S682_2 kann ein Bereich der Kandidaten-Fraktionallängen bestimmt werden. Gemäß einer oder mehreren beispielhaften Ausführungsformen können die Fraktionallängen der Schrittweiten, die an die ersten und zweiten Schrittweiten Δ
1 und Δ
2 angrenzen, berechnet werden. Zum Beispiel können vier Fraktionallängen, die den Schrittweiten entsprechen, die an die erste Schrittweite Δ
1 und die zweite Schrittweite Δ
2 angrenzen, wie in [Gleichung 10] berechnet werden.
-
In [Gleichung 10] kann „ceil ()“ eine Aufrundungsfunktion sein, und „FLOOR ()“ kann eine Abrundungsfunktion sein. Als nächstes wird der Bereich der Kandidaten-Fraktionallängen bestimmt werden, basierend auf einer maximalen Fraktionallänge und einer minimalen Fraktionallänge aus den berechneten Fraktionallängen. Der Kandidaten-Fraktionallängen-Satz SL_SET kann beispielsweise wie in [Gleichung 11] definiert werden.
-
In [Gleichung 11] können eine erste Toleranz Mmargin und eine zweite Toleranz Nmargin verwendet werden, um einen Fehler zu korrigieren, der aufgrund einer Differenz zwischen einer Eingabe-Probenverteilung und einer Probenverteilung, an welche die Eingabe-Probenverteilung approximiert wird, (d.h. eine CPD) auftreten kann. Wie in [Gleichung 11] kann eine untere Grenze der Kandidaten-Fraktionallängen als ein Wert bestimmt werden, der durch Subtraktion der ersten Toleranz Mmargin von einem Minimalwert der Parameter von [Gleichung 10] erhalten wird, und eine obere Grenze der Kandidaten-Fraktionallängen kann als ein Wert bestimmt werden, der durch Addition der zweiten Toleranz Nmargin zu einem Maximalwert der Parameter von [Gleichung 10] erhalten wird. Gemäß einer oder mehreren beispielhaften Ausführungsformen können die erste Toleranz Mmargin und die zweite Toleranz Nmargin so eingestellt werden, dass sie Maximalwerte innerhalb eines Bereichs sind, der durch eine Rechenkomplexität oder einer Leistungsfähigkeit (oder Rechenressourcen) des Quantisierungssystems 100 von 1 erlaubt ist, und dementsprechend kann der Bereich der Kandidaten-Fraktionallängen erweitert werden.
-
10A und 10B sind Flussdiagramme von Beispielen des Vorgangs S684 von 8, gemäß einer oder mehreren beispielhaften Ausführungsformen. Im Detail zeigt 10A ein Beispiel gemäß einer geschlossenen Form, und 10 B zeigt ein Beispiel gemäß eines stichprobenbasierten Verfahrens. Wie vorstehend mit Bezug auf 8 beschrieben kann bei den Vorgängen S684a und S684b von 10A und 10B eine Kandidaten-Fraktionallänge ausgewählt werden. Beschreibungen, die sich zwischen 10A und 10B überschneiden, werden nun weggelassen werden.
-
Bezugnehmend auf
10A kann Vorgang
S684a den Vorgang
S684_2a und den Vorgang
S684_4a enthalten. Bei Vorgang
S684_2a können Quantisierungsfehler gemäß den Kandidaten-Fraktionallängen berechnet werden. Die Quantisierungsfehler können berechnet werden, indem verschiedene Verfahren verwendet werden, wie zum Beispiel ein MSE und ein SQNR. Ein Quantisierungsfehler, der einer Kandidaten-Fraktionallänge FL aus den Kandidaten-Fraktionallängensatz FL_SET entspricht, der aus einer generalisierten Gamma-Verteilung wie zum Beispiel [Gleichung 3] und [Gleichung 4] berechnet wird, kann berechnet werden, indem [Gleichung 12] verwendet wird.
-
In [Gleichung 12] zu zeigt ρ einen Wert an, der Gewichtungen der ersten Probengruppe
SG1 und der zweiten Probengruppe
SG2 bestimmt und kann beispielsweise wie in [Gleichung 13] definiert werden.
-
Entsprechend können Quantisierungsfehler berechnet werden, die den Kandidaten-Fraktionallängen entsprechen, die in dem Kandidaten-Fraktionallängen-Satz FL_SET enthalten sind.
-
Bei Vorgang S684_a kann eine Kandidaten-Fraktionallängen basierend auf den Quantisierungsfehlem ausgewählt werden. Zum Beispiel kann basierend auf den wie in [Gleichung 12] berechneten Quantisierungsfehlern eine Kandidaten-Fraktionallänge, die einen minimalen Quantisierungsfehler liefert, als die Fraktionallänge
FLsam für die Probenverteilung ausgewählt werden. Anders ausgedrückt kann die Fraktionallänge
FLsam für die Probenverteilung wie in [Gleichung 14] ausgewählt werden.
-
Bezugnehmend auf 10B kann Vorgang S684b die Vorgänge S684_2b, S684_4b und S684_6b beinhalten. Bei Vorgang S684_2b können Test-Probenverteilungen gemäß den Kandidaten-Fraktionallängen erhalten werden. Zum Beispiel kann der Probenquantisierer 160 von 1 die Kandidaten-Fraktionallängen, die in dem Kandidaten-Fraktionallängensatz FL_SET enthalten sind, über die neuronale Netzwerkschnittstelle 120 dem neuronalen Netzwerksystem 200 von 1 bereitstellen, und das neuronale Netzwerksystem 200 kann Probenverteilungen erzeugen, nämlich Test-Probenverteilungen, indem die künstlichen neuronalen Netze (KNNs), auf welche die Kandidaten-Fraktionallängen jeweils angewendet wurden, betrieben werden. Entsprechend kann der Probenquantisierer 160 über die neuronale Netzwerkschnittstelle 120 Test-Probenverteilungen SDTest1 , SDTest2 , ... von dem neuronalen Netzwerksystem 200 empfangen.
-
Bei Vorgang S684_4b können Quantisierungsfehler gemäß den Test-Probenverteilungen berechnet werden. Die Quantisierungsfehler können aus den Test-Probenverteilungen und den Probenverteilungen durch Verwenden verschiedener Verfahren berechnet werden, zum Beispiel einem MSE und einem SQNR. Entsprechend können Quantisierungsfehler erzeugt werden, die den Kandidaten-Fraktionallängen entsprechen, die in dem Kandidaten-Fraktionallängen-Satz FL_SET enthalten sind.
-
Bei Vorgang S684_6b kann eine Kandidaten-Fraktionallänge basierend auf den Quantisierungsfehlern ausgewählt werden. Bei Vorgang S684_6b kann zum Beispiel eine Kandidaten-Fraktionallänge, die einen minimalen Quantisierungsfehler liefert, als die Fraktionallänge SLsam für die Probenverteilung ausgewählt werden.
-
11 ist ein Blockschaubild eines Rechensystems 300 gemäß einer beispielhaften Ausführungsform. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann das Quantisierungssystem 100 von 1 ausgeführt werden, indem das Computersystem 300 von 11 verwendet wird. Bezugnehmend auf 11 kann das Rechensystem 300 einen Systemspeicher 310, einen Prozessor 330, einen Speicher 350, Eingabe/Ausgabevorrichtungen (I/O-Vorrichtungen) 370 und Kommunikationsverbindungen 390 enthalten. Die Komponenten des Rechensystems 300 können miteinander verbunden sein, z.B. über einen Bus.
-
Der Systemspeicher 310 kann ein Programm 312 enthalten. Das Programm 312 kann es dem Prozessor 330 erlauben, ein KNN gemäß einer oder mehreren beispielhaften Ausführungsformen zu quantisieren. Das Programm 312 kann zum Beispiel eine Mehrzahl von Anweisungen enthalten, die durch den Prozessor ausführbar sind, und ein KNN kann quantisiert werden wenn die Mehrzahl von Anweisungen des Programms 312 von dem Prozessor 330 ausgeführt werden. Nicht einschränkende Beispiele des Systemspeichers 310 können einen flüchtigen Speicher enthalten, wie zum Beispiel ein statisches Random Access Memory (SRAM) und ein dynamisches Random Access Memory (DRAM), und einen nichtflüchtigen Speicher, wie zum Beispiel einen Flash-Speicher.
-
Der Prozessor 330 kann zumindest einen Kern enthalten, der in der Lage ist einen beliebigen Satz Anweisungen auszuführen (z.B. Intel Architektur-32 (IA-32), 64-Bit Extension IA-32, x86-64, PowerPC, Sparc, MIPS, ARM und IA-64). Der Prozessor 330 kann Anweisungen ausführen, die in dem Systemspeicher 310 gespeichert sind, und kann durch Ausführen des Programms 312 ein KNN quantisieren.
-
Der Speicher 350 darf keine gespeicherten Daten verlieren, selbst wenn eine den Rechensystem 300 zugeführte Leistung unterbrochen wird. Der Speicher 350 kann zum Beispiel ein nichtflüchtiger Speicher sein, wie zum Beispiel ein elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM), ein Flash-Speicher, ein Phase-change Random Access Memory (PRAM), ein Resistive Random Access Memory (PRAM), ein Nano-Floating-Gate-Speicher (NFGM), ein Polymer Random Access Memory (PoRAM), ein Magnetic Random Access Memory (MRAM), ein Ferroelectric Random Access Memory (FRAM), oder ein Speichermedium, wie beispielsweise ein Magnetband, eine optische Disk oder eine magnetische Disk. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann der Speicher 350 abnehmbar an den Rechensystem angebracht sein.
-
Gemäß einer oder mehreren beispielhaften Ausführungsformen kann der Speicher 350 ein Programm 312 zur Quantisierung eines KNN gemäß einer beispielhaften Ausführungsform enthalten, und das Programm 312 oder zumindest ein Teil davon kann aus dem Speicher 350 in den Systemspeicher 310 geladen werden bevor das Programm 312 von dem Prozessor 330 ausgeführt wird. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann der Speicher eine Datei, die in einer Programmiersprache geschrieben ist, speichern, und ein von einem Compiler oder dergleichen erzeugtes Programm 312 oder zumindest ein Teil des Programms 312 kann aus der Datei in den Systemspeicher 310 geladen werden.
-
Gemäß einer oder mehreren beispielhaften Ausführungsformen kann der Speicher 350 Daten speichern, die vom Prozessor 330 zu verarbeiten sind, und/oder vom Prozessor 350 verarbeitet wurden. Der Speicher 350 kann zum Beispiel die Parameter und die Probenverteilung von 2 speichern, kann die quantisierten Parameter und die Probenverteilung speichern, und kann Daten speichern, die während der Quantisierung eines Parameters oder einer Probenverteilung erzeugt werden, zum Beispiel eine Schrittweite und eine Fraktionallänge.
-
Die I/O-Vorrichtungen 370 können eine Eingabevorrichtung enthalten, wie zum Beispiel eine Tastatur oder eine Zeigevorrichtung, und eine Ausgabevorrichtung, wie zum Beispiel einen Drucker oder eine Anzeige. Ein Benutzer kann zum Beispiel die Ausführung des Programms 312 durch den Prozessor 330 mittels den I/O-Vorrichtungen 370 auslösen, kann einen Parameter und eine Probenverteilung eingeben, und kann einen quantisierten Parameter, eine quantisierte Probenverteilung und/oder eine Fehlernachricht überprüfen.
-
Die Kommunikationsverbindungen 390 können einen Zugriff auf ein Netzwerk außerhalb des Rechensystems 300 bereitstellen. Das Netzwerk kann zum Beispiel mehrere Rechensysteme und Kommunikationsverbindungen enthalten, und die Kommunikationsverbindungen können Drahtverbindungen, optische Verbindungen, drahtlose Verbindungen oder eine beliebige andere Art von Verbindungen enthalten.
-
12 ist ein Blockschaubild einer mobilen Rechenvorrichtung 400 gemäß einer beispielhaften Ausführungsform des erfinderischen Konzepts. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann ein neuronales Festkomma-Netzwerk, das gemäß einer beispielhaften Ausführungsform quantisierten ist, in der mobilen Rechenvorrichtung implementiert sein. Als ein nicht einschränkendes Beispiel kann die mobile Rechenvorrichtung 400 eine beliebige elektronische Vorrichtung sein, zum Beispiel ein Mobiltelefon, ein Tablet-PC, eine tragbare Vorrichtung und eine Internet-der-Dinge-Vorrichtung, welche von einer Batterie, einer externen Leistungsversorgung oder durch Eigenstromerzeugung versorgt wird.
-
Bezugnehmend auf 12 kann die mobile Rechenvorrichtung 400 ein Speichersubsystem 410, I/O-Vorrichtungen 430, eine Verarbeitungseinheit 450 und eine Netzwerkschnittstelle 470 enthalten. Das Speichersubsystem 410, die I/O-Vorrichtungen 430, die Verarbeitungseinheit 450 und die Netzwerkschnittstelle 470 können über einen Bus 490 miteinander kommunizieren. Gemäß einer oder mehreren beispielhaften Ausführungsformen können zumindest zwei von dem Speichersubsystem 410, den I/O-Vorrichtungen 430, der Verarbeitungseinheit 450 und der Netzwerkschnittstelle 470 als Ein-Chip-System (SoC) in einem Paket beinhalten enthalten sein.
-
Das Speichersubsystem 410 kann einen RAM 412 und einen Speicher 414 enthalten. Der RAM 412 und/oder der Speicher 414 können Anweisungen speichern, die von der Verarbeitungseinheit 450 ausgeführt werden, und Daten, die von der Verarbeitungseinheit 450 verarbeitet werden. Der RAM 412 und/oder der Speicher 414 können Variablen speichern, wie zum Beispiel Signale, Gewichtungen, Bias und Schwellenwerte eines KNN und können auch Parameter eines künstlichen Neurons (oder Rechenknotens) eines KNN speichern. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann der Speicher 414 einen nichtflüchtigen Speicher beinhalten.
-
Die Verarbeitungseinheit 450 kann zumindest eine von einer Zentralverarbeitungseinheit (bzw. Prozessor) (CPU) 452, einer Grafikverarbeitungseinheit (bzw. Graphikprozessor) (GPU) 454, einem digitalen Signalprozessor (DSP) 456 und einer neuronalen Verarbeitungseinheit (NPU) 458 enthalten. Gemäß einer oder mehreren beispielhaften Ausführungsformen kann die Verarbeitungseinheit 450 beispielsweise eine oder nur einige von der CPU 452, der GPU 454, der DSP 456 und der NPU 458 enthalten.
-
Die CPU 452 kann den gesamten Betrieb der mobilen Rechenvorrichtung 400 steuern. Die CPU 452 kann zum Beispiel infolge einer externen Eingabe, die über die I/O-Vorrichtungen 430 empfangen wird, eine bestimmte Aufgabe direkt ausführen, oder kann andere Komponenten der Verarbeitungseinheit 450 anweisen eine Aufgabe auszuführen. Die GPU 454 kann Daten für ein Bild erzeugen, das durch eine Anzeige ausgegeben wird, die in den I/O-Vorrichtungen 430 enthalten ist, und kann Daten codieren, die sie von einer Kamera empfängt, die in den I/O Vorrichtungen 430 enthalten ist. Der DSP 456 kann nützliche Daten erzeugen, indem ein digitales Signal verarbeitet wird, zum Beispiel ein digitales Signal, das von der Netzwerkschnittstelle 470 bereitgestellt wird.
-
Die NPU 458, welche eine dedizierte Hardware für ein KNN ist, kann eine Mehrzahl von Rechenknoten enthalten, die zumindest einigen künstlichen Neuronen, die das KNN bilden, entsprechen, und zumindest einige von der Mehrzahl von Rechenknoten können ein Signal parallel verarbeiten. Ein KNN, das gemäß einer beispielhaften Ausführungsform quantisiert ist, zum Beispiel ein DNN, weist eine niedrige Rechenkomplexität und eine hohe Genauigkeit auf, und kann somit leicht in der mobilen Rechenvorrichtung 400 von 12 betrieben werden, kann eine hohe Verarbeitungsgeschwindigkeit aufweisen, und kann zum Beispiel auch von einer einfachen und kleinen NPU 458 ausgeführt werden.
-
Die I/O Vorrichtungen 430 können Eingabevorrichtungen, zum Beispiel eine Berührungseingabevorrichtung, eine Schalleingabevorrichtung und eine Kamera, enthalten sowie Ausgabevorrichtungen, wie zum Beispiel eine Anzeige und eine Schallausgabevorrichtung. Wenn beispielsweise die Stimme eines Benutzers über die Schalleingabevorrichtung eingegeben wird, kann die Sprache von einem in der mobilen Rechenvorrichtung 400 implementierten DNN erkannt werden, und ein entsprechender Vorgang kann ausgelöst werden. Darüber hinaus kann, wenn ein Bild durch die Kamera eingegeben wird, ein Objekt in dem Bild von dem in der mobilen Rechenvorrichtung 400 implementierten DNN erkannt werden, und eine Ausgabe, wie zum Beispiel eine virtuelle Realität, kann dem Benutzer bereitgestellt werden. Die Netzwerkschnittstelle 470 kann der mobilen Rechenvorrichtung 400 Zugang zu einem mobilen Kommunikationsnetzwerk, wie zum Beispiel Long Term Evolution (LTE) oder 5G, gewähren, und Zugang zu einem lokalen Netzwerk, wie zum Beispiel WiFi, gewähren.
-
Eine oder mehrere beispielhafte Ausführungsform wurden im Detail gezeigt und vorstehend mit Bezug auf die Zeichnungen beschrieben. Die hier verwendete Terminologie dient nur zur Beschreibung beispielhafter Ausführungsformen und soll keine Einschränkung des erfinderischen Konzepts sein. Daher wird von Fachleuten verstanden, dass verschiedene Form und-und Detailänderungen vorgenommen werden können, ohne vom Umfang des erfinderischen Konzepts, wie es in den beigefügten Ansprüchen definiert ist, abzuweichen.