-
Technisches Gebiet
-
Die Erfindung betrifft ein Verfahren zum Quantisieren eines neuronalen Netzes. Ebenso betrifft die Erfindung eine Vorrichtung und ein Computerprogramm, die jeweils eingerichtet sind, das Verfahren auszuführen.
-
Stand der Technik
-
Es ist bekannt, neuronale Netze zu quantisieren, wie beispielsweise gezeigt von Hubara et al. „Quantized neural networks: Training neural networks with low precision weights and activations.“ The Journal of Machine Learning Research 18.1 (2017): 6869-6898.
-
Zum Quantisieren von neuronalen Netzen kann eine Quantisierung von Gewichten (engl. weights) der neuronalen Netze beim Training in einer Kostenfunktion (engl. loss function) berücksichtigt werden. Dadurch können die Gewichte bereits beim Training quantisiert werden. Nach Beendigung des Trainings liegt dann ein quantisiertes neuronales Netz vor.
-
Ein Vorteil der Erfindung liegt darin, dass eine Quantisierung der Gewichte nicht in der Kostenfunktion berücksichtigt wird, wodurch die Komplexität des Trainings reduziert wird. Ein weiterer Vorteil der Erfindung ist, dass nicht direkt mit einem quantisierten neuronalen Netz trainiert wird, da es sein kann, dass das Training bei zu kleinen Gradienten festhängt, da diese Gradienten kleiner sein können als der Abstand zweier quantisierter Werte. Daher weist die Erfindung auch verbesserte Konvergenzeigenschaften beim Training auf.
-
Quantisierte neuronale Netz sind wünschenswert, da quantisierte neuronale Netze zum einen weniger Speicher beanspruchen und zum anderen beim Betreiben weniger Energie verbrauchen.
-
Offenbarung der Erfindung
-
In einem ersten Aspekt wird ein, insbesondere computerimplementiertes, Verfahren zum Quantisieren von Werten von Parametern eines neuronalen Netzes vorgestellt. Das Verfahren umfasst die folgenden Schritte:
- Zuerst wird ein vorgebbarer quantisierter Wertebereich der Parameter sowie Trainingsdaten umfassend Trainingseingangsgrößen mit jeweils zugeordneten Trainingsausgangsgrößen bereitgestellt. Daraufhin wird ein Quantisierungsfehler abhängig von dem vorgebbaren quantisierten Wertebereich und einem aktuellen Wertebereich der Parameter ermittelt. Daraufhin folgt ein Ermitteln von Ausgangsgrößen des neuronalen Netzes in Abhängigkeit einer Mehrzahl der Trainingseingangsgrößen und der Parameter, die jeweils einen Wert aus dem aktuellen Wertebereich aufweisen. Die Besonderheit des Verfahrens liegt darin, dass ermittelte Zwischengrößen des neuronalen Netzes mit zufälligen Fehlern jeweils beim Ermitteln der Ausgangsgrößen beaufschlagt werden. Insbesondere werden die Zwischengrößen mit einer Größe beaufschlagt, die den zufälligen Fehler charakterisiert. Die einzelnen zufälligen Fehler können im Mittel dem Quantisierungsfehler entsprechen und vorzugsweise mit einer vorgebbaren Abweichung um den Quantisierungsfehler schwanken. Daraufhin folgt ein Anpassen der Werte der Parameter auf einen der Werte innerhalb des aktuellen Wertebereichs abhängig von einer Differenz, insbesondere einer Kostenfunktion, die abhängig von der Differenz und den Parameter ist, der ermittelten Ausgangsgrößen und der Trainingsausgangsgrößen der Mehrzahl der Trainingseingangsgrößen, sodass die Differenz, insbesondere Kostenfunktion, optimal (z.B. minimal) hinsichtlich eines vorgebbaren Kriteriums wird. Anschließend folgt ein Abbilden der Parameter jeweils auf einen der Werte des vorgebbaren quantisierten Wertebereichs.
-
Der vorgebbare quantisiert Wertebereich wird vorzugsweise abhängig von den angepassten Parameter und/oder abhängig von den Eingangsgrößen ermittelt. Werte des vorgebbaren quantisierten Wertebereichs sind vorzugsweise so gewählt, dass zu erwartende Werte abgebildet werden können bei gleichzeitiger Minimierung der nötigen Rundung. Der Wertebereich soll vorteilhafterweise also so klein wie möglich aber so groß wie nötig gewählt werden.
-
Alternativ kann zu dem vorgebbaren quantisierten Wertebereich eine vorgebbare quantisierte Auflösung der Parameter bereitgestellt werden und der aktuelle Wertebereich wird durch eine aktuelle Auflösung beschrieben. Unter einem Quantisierungsfehler wird eine Größe verstanden, die einen Fehler charakterisiert, der bei einem Abbilden von Werte auf jeweils einen der Werte des vorgebbaren quantisierten Wertebereichs auftritt.
-
Der zufällige Fehler entspricht hierbei einem Quantisierungsrauschen und kann daher auch als ein Rauschen in dem Verfahren des ersten Aspektes implementiert sein.
-
Der Vorteil dieses Verfahrens ist, dass das neuronale Netz lernt, mit (Quantisierungs-) Rauschen, dass durch die Quantisierung der Parameter entsteht, umzugehen, also gegenüber Rauschen robust wird. Ein weiterer Vorteil dieses Verfahrens ist, dass ein einfaches Verfahren bereitgestellt wird, um neuronale Netze zu quantisieren. Ferner erlaubt das Verfahren ein neuronales Netz derart zu quantisieren, dass dieses neuronale Netz auf einer vorgebbaren Zielarchitektur oder Zielhardwareplattform betrieben werden kann. Vorteilhaft ist ferner, dass kein exakter Quantisierungsfehler bestimmt werden muss, da durch das Hinzufügen von Rauschen dieser im Training nicht exakt abgebildet werden kann. Dieses Vorgehen trägt zur Einfachheit des Verfahrens bei.
-
Denkbar ist auch, dass anstatt einer Quantisierung eine Clusterung der Parameter mit einer vorgebbaren Anzahl an Clusterzentren durchgeführt werden kann. Der Vorteil hierbei ist, dass die Clusterzentren auch eine höhere Auflösung aufweisen, jedoch durch die limitierte Anzahl an unterschiedlichen Clusterzentren Speicherplatz eingespart werden kann. Alternativ kann anstatt dem vorgebbaren quantisierten Wertebereich ein vorgebbarer diskreter Wertebreich verwendet werden.
-
Der vorgebbare quantisierte Wertebereich kann beispielsweise anhand einer Anzahl von Quantisierungsstufen oder durch eine Anzahl von Bit charakterisiert sein. Die Anzahl an Bits kann durch eine verwendete Hardware vorgegeben sein.
-
Weiterhin wird vorgeschlagen, dass der vorgebbare quantisierte Wertebereich abhängig von einem Trainingsverlauf bzw. von einem Trainingsfortschritt angepasst wird. Beispielsweise kann zu Beginn des Trainings der vorgebbare quantisierte Wertebereich mehr unterschiedliche quantisierte Werte aufweisen, als ein vorgebbarer quantisierter Wertebereich nach einem fortgeschrittenen Training des neuronalen Netzes. Denkbar ist auch, dass bei einem wiederholten Ausführen des Verfahrens, nachdem die Parameter auf den vorgebbaren quantisierten Wertebereich abgebildet wurden, der vorgebbare quantisierte Wertebereich nun der aktuelle Wertebereich ist. Bei einem wiederholten Ausführen des Verfahrens kann dann der vorgebbare quantisierte Wertebereich ein quantisierter Wertebereich sein, der nun weniger quantisierte Werte aufweist als der vorhergehende vorgebbare quantisierte Wertebereich.
-
Der Vorteil hierbei ist, dass suksesszive ein gewünschter quantisierter Wertebereich erreicht werden kann, ohne die Konvergenz des Trainings negativ zu beeinflussen.
-
Weiterhin wird vorgeschlagen, dass beim Ermitteln des Quantisierungsfehlers die Mehrzahl der Trainingseingangsgrößen durch das neuronale Netz mit den Parametern, deren Werte innerhalb des aktuellen Wertebereichs liegen und durch das neuronale Netz mit den abgebildeten Parametern, deren Werte innerhalb des vorgebbaren quantisierten Wertebereich liegen, propagiert wird. Daraufhin wird der Quantisierungsfehler abhängig von ermittelten Zwischengrößen der neuronalen Netze mit unterschiedlichen Wertebereiche der Parameter ermittelt.
-
Unter Zwischengrößen können jede beliebige, insbesondere temporale, Zwischenergebnisse des neuronalen Netzes verstanden werden.
-
Weiterhin wird vorgeschlagen, dass jeweils Ausgangsgrößen von Schichten des neuronalen Netzes mit den zufälligen Fehlern beaufschlagt werden.
-
Weiterhin wird vorgeschlagen, dass die zufälligen Fehler abhängig vom Trainingsverlauf sind, entweder abnehmen oder zunehmen, mit zunehmendem Trainingsverlauf. Der Vorteil hierbei ist eine verbessere Konvergenz des Trainings oder eine höhere Robustheit des neuronalen Netzes gegenüber Rauschen.
-
Vorzugsweise wird zumindest in den ersten Schichten des neuronalen Netzes das Rauschen hinzugefügt, da diese einen größeren Einfluss auf die Ergebnisse des neuronalen Netzes haben, da deren Ergebnisse in allen nachfolgenden Schichten verwendet werden.
-
Weiterhin wird vorgeschlagen, dass der aktuelle Wertebereich auch ein quantisierter Wertebereich ist, der mittels einer Auflösung von mindestens 32 Bit dargestellt wird, und wobei der vorgebbare quantisierte Wertebereich mittels einer Auflösung von weniger als 16 Bit, insbesondere weniger als 8 Bit, dargestellt wird.
-
Vorzugsweise wird beim Ermitteln der Ausgangsgröße mittels des Netzes mit abgebildeten Parameter auf den quantisierten Wertebereich eine Fix-Point Arithmetik verwendet. Vorzugsweise wird beim Ermitteln der Ausgangsgröße mittels des neuronalen Netzes mit Parametern, deren Werte in dem aktuellen Wertebereich liegen, auf eine Fließkomma-Arithmetik zugrückgegriffen.
-
Weiterhin wird vorgeschlagen, dass der vorgebbare quantisierte Wertebereich und/oder der Quantisierungsfehler abhängig von einer vorgebbaren Hardware ist, auf welcher das quantisierte neuronale Netz betrieben werden soll. Denkbar ist, dass unterschiedliche quantisierte Wertebereiche für unterschiedliche Schichten des neuronalen Netzes abhängig von dem jeweiligen Hardwaremodul der vorgebbaren Hardware, auf welchem die jeweilige Schicht implementiert/ausgeführt wird, gewählt werden.
-
Nachdem die Parameter auf den quantisierten Wertebereich abgebildet wurden, kann das neuronale Netz mit dem abgebildeten Parameter auf der vorgebbaren Hardware betrieben werden.
-
Es wird weiterhin vorgeschlagen, dass für unterschiedliche mathematische Operationen der jeweiligen Schichten unterschiedliche Quantisierungen der Wertebereiche vorgegeben werden. Dies hat insbesondere bei Hardwarearchitekturen mit komplexen Operationen und verschiedenen Quantisierungen der Zwischenergebnisse den Vorteil, nicht die gesamte Kette an Operationen im Trainingsframework nachbilden zu müssen. Durch die Nutzung dieser generischen Erfindung wird viel hardwarespezifischer Implementierungsaufwand eingespart.
-
In einem weiteren Aspekt der Erfindung wird vorgeschlagen, dass die Eingangsgröße des neuronalen Netzes eine Größe ist, welche mittels eines Sensors erfasst wurde. Abhängig von einer Ausgangsgröße des neuronalen Netzes kann eine Steuergröße ermittelt werden.
-
Die Steuergröße kann zum Steuern eines Aktors eines technischen Systems verwendet werden. Die Steuerung kann entsprechend der Steuergröße erfolgen. Das technische System kann zum Beispiel eine zumindest teilautonome Maschine, ein zumindest teilautonomes Fahrzeug, ein Roboter, ein Werkzeug, eine Werkmaschine oder ein Flugobjekt wie eine Drohne sein. Beispielsweise so kann eine Bewegung des Roboters oder Fahrzeugs gesteuert werden oder eine Steuerung des Aktors erfolgen.
-
In einem weiteren Aspekt wird ein Computerprogramm vorgeschlagen. Das Computerprogramm ist eingerichtet, eines der vorherigen genannten Verfahren auszuführen. Das Computerprogramm umfasst Anweisungen, die einen Computer veranlassen, eines dieser genannten Verfahren mit all seinen Schritten auszuführen, wenn das Computerprogramm auf dem Computer abläuft. Ferner wird ein maschinenlesbares Speichermodul vorgeschlagen, auf welchem das Computerprogramm gespeichert ist. Des Weiteren wird eine Vorrichtung vorgeschlagen, die eingerichtet ist eines der Verfahren auszuführen.
-
Ein Ausführungsbeispiel des oben genannten ersten Aspektes wird im nachfolgenden näher erläutert.
-
Das Verfahren zum Quantisieren des neuronalen Netzes beginnt in diesem Ausführungsbeispiel mit Schritt 1. In diesem Schritt werden Trainingsdaten mit Label bereitgestellt. Die Trainingsdaten sind typischerweise Kamerabilder, die entweder mit einer Klassifikation oder mit einer semantischen Segmentierung gelabelt sind. Ebenso wird in Schritt 1 ein vorgebbarer quantisierter Wertebereich bereitgestellt. Der vorgebbare quantisierte Wertebereich kann beispielsweise ein Wertebereich von -1 bis 1 sein, der mittels beispielsweise 8 Bit quantisiert bzw. dargestellt wird. Daraufhin wird in Schritt 1 ein Quantisierungsfehler ermittelt. Der Quantisierungsfehler mittels eines Abbildungsfehlers ermittelt, der auftritt, wenn Werte aus aktuellen Wertebereich der Parameter des tiefen neuronalen Netzes auf Werte des vorgebbaren quantisierten Wertebereichs abgebildet werden. Der aktuelle Wertebereich kann beispielsweise ebenfalls von -1 bis 1 gehen, aber mit 32 Bit quantisiert bzw. dargestellt werden.
-
Nachdem Schritt 1 beendet wurde folgt Schritt 2. In Schritt 2 werden die Trainingsdaten durch das neuronale Netz, dessen Parameter Werte aus dem aktuellen Wertebereich aufweisen, propagiert. D.h. das neuronale Netz wird beispielsweise mit einer Auflösung von 32 Bit betrieben. Beim Propagieren der Trainingsdaten durch das tiefe neuronale Netz werden zufällige Fehler in diverse ermittelte Zwischengrößen eingestreut. Die zufälligen Fehler haben dabei eine Größenordnung entsprechend dem ermittelten Quantisierungsfehler aus Schritt 1. Vorzugsweise wird der zufällige Fehler an die Positionen innerhalb des neuronalen Netzes eingestreut, an welchen anschließend eine Quantisierung durchgeführt werden soll.
-
Nachdem die Ausgangsgrößen mittels des Propagieren ermittelt wurden, wird eine Differenz zwischen den Ausgangsgrößen und dem Label der Trainingsdaten ermittelt.
-
Daraufhin folgt in dem nachfolgenden Schritt 3 eine Anpassung der Parameter. Die Anpassung erfolgt dabei derart, dass die Differenz zwischen den Ausgangsgrößen und den Label der Trainingsdaten minimiert wird. Vorzugsweise wird hierfür mittels einer Kostenfunktion die Differenz abhängig von den Parametern bestimmt, worauf die Kostenfunktion mittels eines Gradiententabstiegsverfahrens minimiert wird. Die Minimierung erfolgt bspw. durch ein Optimieren über die Parameter des neuronalen Netzes. Es sei angemerkt, dass die Parameter hierfür in dem aktuellen Wertebereich mit einer Auflösung von 32 Bit gehandhabt werden.
-
Nachdem über die Parameter optimiert wurde, folgt Schritt 4. In Schritt 4 werden die optimierten Parameter auf den quantisierten Wertebereich abgebildet. Vorzugsweise wird hier die Auflösung der Parameter von 32 Bit auf beispielsweise 8 Bit reduziert.
-
Optional kann nach Beendigung Schrittes 4 anschließend Schritt 5 ausgeführt werden. In Schritt 5 wird ein Stapel (engl. batch) von Trainingsdaten durch das neuronale Netz mit jeweils einer Auflösung von 8 bzw. 32 Bit propagiert. Daraufhin wird anhand von ermittelten Zwischengrößen beim Propagieren des Stapels von Trainingsdaten der Quantisierungsfehler ermittelt. Beispielsweise kann ein mittlerer Quantisierungsfehler bestimmt werden, in dem eine Mehrzahl von Differenzen zwischen den ermittelten Zwischengrößen des Netzes mit 8 bzw. 32 Bit ermittelt werden.
-
In einem weiteren nachfolgenden optionalen Schritt kann das neuronale Netz mit den quantisierten Parametern auf eine dedizierte Hardware aufgespielt werden und anschließend auf dieser Hardware betrieben werden.
-
In einem bevorzugten Ausführungsbeispiel wird das erhaltene quantisierte neuronale Netz gemäß dem oben beschriebenen Verfahren für ein autonomes Fahrzeug verwendet. Das autonome Fahrzeug umfasst hierfür eine Kamera und eine dedizierte Hardware auf welcher das quantisierte neuronale Netz aufgespielt wurde. Vorzugsweise umfasst das autonome Fahrzeug eine Steuereinheit, die mit einem Ausgang der dedizierten Hardware des quantisierten neuronalen Netzes verbunden ist. Wenn die Kamera ein Kamerabild erfasst hat und an die dedizierte Hardware weitergeleitet hat, kann mittels der dedizierte Hardware und des darauf aufgespielten quantisierte neuronalen Netzes beispielsweise eine Segmentierung des Kamerabildes ermittelt werden. Anschließend wird die Segmentierung an die Steuereinheit weitergeleitet, die abhängig von dieser Segmentierung eine Steuergröße ermittelt, die zur Ansteuerung des autonomen Fahrzeuges verwendet wird.
-
In einem weiteren bevorzugten Ausführungsbeispiel wird das quantisierte neuronale Netz für eine Überwachungskamera eines Gebäudeüberwachungssystems verwendet. Wie in dem Ausführungsbeispiel des Fahrzeuges, ist die dedizierte Hardware mit dem aufgespielten quantisierten neuronalen Netz mit der Überwachungskamera verbunden. Eine Kameraaufnahme der Überwachungskamera wird daraufhin mittels der dedizierte Hardware und des aufgespielten quantisierten neuronalen Netz beispielsweise segmentiert und auf einem Bildschirm ausgegeben.