-
Technisches Gebiet
-
Die Erfindung betrifft neuronale Netze, und insbesondere Maßnahmen zum Zwischenspeichern von Zwischenberechnungsergebnissen einzelner Neuronenschichten.
-
Technischer Hintergrund
-
Insbesondere für die Bildverarbeitung verwendete neuronale Netze müssen große Datenmengen verarbeiten. Für eine Berechnung eines neuronalen Netzes steht dafür oftmals eine Berechnungshardware zur Verfügung, die die Berechnung nur eines Teils des neuronalen Netzes ausführt, wobei durch einen Algorithmus die mehrfache Verwendung der Berechnungshardware vorgesehen wird. Die während der Berechnung des Teils des neuronalen Netzes erhaltene Berechnungsergebnisse werden dazu zwischengespeichert und bei Bedarf wieder aufgerufen.
-
So können sich beispielsweise für ein Bild mit einer Eingangsauflösung von 2048 x 1024 Pixel Berechnungsergebnisse einer einzelnen Neuronenschicht ergeben, die eine Größe von ca. 134 MB bei (Pixel-)Wortgrößen von 8 Bit aufweisen. Diese Datenmenge kann während der Berechnung des neuronalen Netzes nicht mehr in einem Cache-Speicher zwischengespeichert werden, da die Größe des Cache-Speichers in der Regel begrenzt ist.
-
Daher ist es oftmals notwendig, die Zwischenergebnisse des neuronalen Netzes in einen externen Speicher außerhalb der Berechnungshardware für das neuronale Netz zu transferieren und bei Bedarf von dort zurückzulesen. Jedoch benötigt der Zugriff auf den externen Speicher verglichen mit dem Zugriff auf (Berechnungshardware-)interne Register oder Zwischenspeicher (Caches) mehr Energie und eine höhere Zugriffszeit. Somit ist eine Berechnung in einem neuronalen Netz für hohe Datenmengen nicht durch die Rechenleistung der Berechnungshardware, sondern durch die Bandbreite der Datenübertragung zwischen der Berechnungshardware und dem externen Speicher für die Speicherung von Zwischenergebnissen limitiert.
-
Aus Y. Wang et al., „CNNpack: Packing Convolutional Neural Networks in the Frequency Domain,“ Advances in Neural Information Processing Systems 29, Barcelona, Spain, 2016 and W. Chen et al., „Compressing Convolutional Neural Networks in Frequency Domain,“ Proc. ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD), San Francisco, USA, 2016 ist bekannt, die Größe von Netzparametern, d. h. Gewichtungen und Biaswerten zu reduzieren, indem die Netzparameter in eine Frequenzdomäne überführt werden und die Parametergröße dadurch reduziert wird, dass im Frequenzraum per Clustering-Verfahren ähnliche Werte auf einen gemeinsamen Wert abgebildet werden können. Dadurch wird ein Weight-Sharing erreicht.
-
Auch aus der Druckschrift J. H. Ko et al., „Adaptive Weight Compression for Memory-Efficient Neural Networks," in Design, Automation Test in Europe Conference Exhibition (DATE), Lausanne, Switzerland, 2017 ist bekannt, die Netzparameter für die Neuronen des neuronalen Netzes zu komprimieren, wobei das Kompressionsverfahren die Kompressionsrate durch einen Quality-Faktor festlegt, der von einem Trainingsschritt abhängt. Der Kompressionsalgorithmus ist hierbei ähnlich zu einer jpeg-Bildkompression.
-
Die beiden letztgenannten Verfahren betreffen jedoch die Kompression vorab bekannter Netzparameter, die in der Regel nur geladen, aber nicht zwischengespeichert werden müssen.
-
Offenbarung der Erfindung
-
Erfindungsgemäß sind ein Verfahren zum Betreiben eines neuronalen Netzes, insbesondere eines gefalteten (convolutional) neuronalen Netzes gemäß Anspruch 1, sowie ein neuronales Netz und ein Berechnungssystem gemäß den nebengeordneten Ansprüchen vorgesehen.
-
Weitere Ausgestaltungen sind in den abhängigen Ansprüchen angegeben.
-
Gemäß einem ersten Aspekt ist ein Verfahren zum Betreiben eines Berechnungssystems mit einem neuronalen Netz, insbesondere einem gefalteten (convolutional) neuronalen Netz, vorgesehen, wobei das Berechnungssystem eine Recheneinrichtung für die sequentielle Berechnung des neuronalen Netzes und einen dazu externen Speicher zum Zwischenspeichern von Zwischenergebnissen der Berechnungen in der Recheneinrichtung aufweist, mit folgenden Schritten:
- - schrittweises Berechnen von Datenabschnitten, die jeweils eine Gruppe von Zwischenergebnissen darstellen, mithilfe eines neuronalen Netzes;
- - verlustbehaftetes Komprimieren einer oder mehrerer der Datenabschnitte, um komprimierte Zwischenergebnisse zu erhalten; und
- - Übertragen der komprimierten Zwischenergebnisse an den externen Speicher.
-
Das obige Verfahren sieht vor, Ergebnisse von Berechnungen eines neuronalen Netzes, die als Zwischenergebnisse durch das bzw. ein weiteres neuronales Netz weiterverarbeitet werden sollen, extern von der Recheneinrichtung (Berechnungshardware) zu speichern, d. h. nicht in Registern oder sonstigen Zwischenspeichern, die Bestandteil der Recheneinrichtung (Berechnungshardware) sind. Diese Zwischenergebnisse sollen in einem externen Speicher gespeichert werden und werden dazu vor der Übertragung in den externen Speicher komprimiert, um die zwischen der Recheneinrichtung und dem externen Speicher zu übertragende Datenmenge zu reduzieren. Dies wird durch Kompression und Dekompression in der Recheneinrichtung oder ggfs. in einer Stufe zwischen der Recheneinrichtung und dem externen Speicher erreicht.
-
Eine Kompression von Daten nutzt in der Regel Wiederholungen von Datenelementen, um die Größe der Daten zu reduzieren. Beispielsweise nutzt eine Run-Length-Kompression die Möglichkeit, eine Folge von gleichen Werten (z.B. in neuronalen Netzen häufig auftretenden Nullen) durch die Angabe ihrer Länge zu codieren. Erreicht man durch eine Manipulation der zu komprimierenden Daten, dass diese einen oder mehrere möglichst große Bereiche von Abfolgen von identischen Datenelementen bzw. Nullen aufweisen, ist eine derartige Run-Length-Kompression besonders effektiv.
-
Es kann vorgesehen sein, dass zum verlustbehafteten Komprimieren die Datenabschnitte jeweils in einen Frequenzbereich transformiert werden und die transformierten Datenabschnitte im Frequenzbereich elementweise gefiltert werden, um modifizierte Datenabschnitte zu erhalten.
-
Das elementweise Filtern kann eine Multiplikation von einem Teil der Elemente der transformierten Datenabschnitte mit 0 umfassen, um modifizierte Datenabschnitte mit einer Anzahl von Elementen von „0“ zu erhalten, die größer ist als die Anzahl von Elementen von „0“ in den ursprünglichen Datenabschnitten einer Eingangsmerkmalskarte.
-
„Elementweises filtern“ bezeichnet hierin eine Operation, bei der Datenelemente der transformierten Datenabschnitte auf Null gesetzt werden. Mathematisch entspricht dieses „zu-Null-Setzen“ einer elementweisen Multiplikation mit einer Kompressionsmatrix A , deren Einträge a
kl Null sein können. Im Folgenden ist mit „Filtern“ ein solches zu Null-Setzen respektive elementweise multiplizieren mit
zu verstehen.
-
Insbesondere können ein oder mehrere modifizierte Datenabschnitte, insbesondere gemeinsam, mit einem vorgegebenen Codierungsverfahren codiert werden, um die komprimierten Zwischenergebnisse zu erhalten, insbesondere mithilfe einer Run-Length-Codierung oder Entropiecodierung.
-
Gemäß dem obigen Verfahren werden die zu komprimierenden Datenabschnitte so manipuliert, dass diese durch eine Datenfolge repräsentiert werden, die einen oder mehrere möglichst große Bereiche von Abfolgen von Nullen enthalten. Diese Manipulation kann verlustbehaftet sein, so dass das verwendete Kompressionsverfahren insgesamt verlustbehaftet ist. Die Anwendung einer verlustbehafteten Kompression für die Speicherung von Zwischenergebnissen einer Berechnung eines neuronalen Netzes ist grundsätzlich zulässig, da neuronale Netze im Vergleich zu anderen Algorithmen besonders robust gegen Rauschen (Quantisierungsrauschen, Single-Event-Faults usw.) sind.
-
Vor der Kompression der Datenabschnitte werden diese so modifiziert, dass diese einen oder mehrere möglichst große Bereiche von Abfolgen von identischen Datenelementen bzw. Nullen aufweisen. Dazu kann beispielsweise eine Frequenztransformation vorgesehen sein, die eine Übertragung der zu komprimierenden Zwischenergebnisse als Eingangsdaten in einen Frequenzbereich beinhaltet. Die Frequenzbereichsdaten, d. h. die in den Frequenzbereich übertragenen Datenabschnitte, können in einfacher Weise nach Frequenzanteilen gefiltert werden, so dass sich nach dieser Filterung der Frequenzbereichsdaten größere Datenbereiche ergeben, die lediglich Nullen aufweisen. Diese können in geeigneter Weise z. B. mit Hilfe einer Run-Length-Codierung oder einer Entropie-Codierung codiert bzw. dadurch komprimiert werden.
-
Gemäß einer Ausführungsform können die transformierten Datenabschnitte zum elementweisen Filtern mit einer Kompressionsmatrix beaufschlagt werden, die insbesondere für jede Neuronen- bzw. Berechnungsschicht der sequentiellen Berechnung des neuronalen Netzwerks separat vorgegeben wird.
-
Insbesondere kann die Kompressionsmatrix so auf das Codierungsverfahren der transformierten Datenabschnitte abgestimmt sein, dass eine bessere Kompression erreicht wird als bei einer direkten Anwendung des Codierungsverfahrens auf die nicht-transformierten Datenabschnitte.
-
Die Filterung im Frequenzbereich kann beispielsweise mithilfe der Kompressionsmatrix durchgeführt werden, die es ermöglicht, die in den Frequenzbereich transformierten Frequenzbereichsdaten elementweise zu filtern, wobei ein Element der in den Frequenzbereich transformierten Datenabschnitte einem Frequenzanteil mit einer Frequenz entspricht.
-
Insbesondere kann die Kompressionsmatrix so vorgegeben werden, dass höherfrequente Anteile der transformierten Datenabschnitte gefiltert werden.
-
Alternativ kann die Kompressionsmatrix vorgegeben werden, indem während eines Trainings des neuronalen Netzes Matrixelemente akl der Kompressionsmatrix A für jede Berechnungsschicht gemeinsam mit Neuronenparametern von Neuronen des neuronalen Netzes trainiert werden, insbesondere mithilfe eines Backpropagation-Verfahrens.
-
Die Kompressionsmatrix kann in geeigneter Weise modifiziert werden, um so die Reduktion der Frequenzbereichsdaten zu adaptieren. Die Kompressionsmatrix kann dazu während des Trainings des neuronalen Netzes eingestellt werden oder nachträglich einem bereits trainierten neuronalen Netz hinzugefügt werden. Beim Hinzufügen zu einem bereits trainierten Netz kann die Lernrate der Kompressionsmatrix und der Netzparameter unterschiedlich sein oder die Netzparameter während des Lernens der Kompressionsmatrix fixiert werden. Bei einer schichtweisen Berechnung des neuronalen Netzes kann für jede der Neuronenschichten eine eigene Kompressionsmatrix bestimmt werden. Die Kompressionsmatrizen bestimmen weiterhin, wie stark Berechnungsergebnisse einzelner Neuronenschichten komprimiert werden können.
-
Die Adaption der Kompressionsmatrix während des Trainingsverfahrens des neuronalen Netzes ermöglicht es, die durch die Kompression in das neuronale Netz eingebrachten Fehler zu minimieren bzw. unter einen vorgegebenen Fehlerwert zu begrenzen. Das obige Verfahren lässt sich besonders gut auf konvolutionelle (gefaltete) neuronale Netze (convolutional neural networks; Faltungsnetzwerke; CNN) anwenden, welche durch ein herkömmliches, nichtspezialisiertes Training trainiert wurden. Die Faltungen werden während der Ausführung eines konvolutionellen neuronalen Netzes im Ortsbereich durchgeführt. Für die ggf. verlustbehaftete Kompression im Frequenzbereich werden daher die zu komprimierenden Daten in Kacheln einer kleineren und definierten Größe aufgeteilt.
-
Die Trennung der Berechnung durch das neuronale Netz und der Kompression der Berechnungsergebnisse ermöglicht, dass das erfindungsgemäße Kompressionsverfahren bei einer Entwicklung eines neuronalen Netzes nicht berücksichtigt werden muss, und es kann eine Kompressionseinheit auch separat zu der Recheneinrichtung vorgesehen werden. Zudem kann die Berechnungseinheit dynamisch ein- und ausgeschaltet werden, um eine Einstellmöglichkeit vorzusehen, die einen Trade-off zwischen Genauigkeit der Berechnung des neuronalen Netzes und der Kompressionsrate (d.h. der erforderlichen Speicherbandbreite und der Berechnungsdauer ermöglicht). Die vorgestellte verlustbehaftete Kompressionsmethode hat dabei den Vorteil, die Kompressionsrate einzustellen so dass man garantierte Aussagen über die resultierende, erforderliche Speicherbandbreite treffen kann. Dies ist insbesondere für den Einsatz in echtzeit-kritischen Systemen von Vorteil.
-
Weiterhin können für eine Berechnung mithilfe des neuronalen Netzes die komprimierten Zwischenergebnisse aus dem externen Speicher abgerufen werden, diese dekomprimiert werden und eine weitere Berechnung abhängig von den dekomprimierten Zwischenergebnissen durchgeführt werden.
-
Es kann vorgesehen sein, dass das neuronale Netz einem konvolutionellen neuronalen Netz mit mehreren Neuronenschichten entspricht, denen jeweils Neuronenparameter zugeordnet sind, wobei man ein Element einer Ausgangsmerkmalskarte jeweils durch Beaufschlagung eines Datenabschnitts einer oder mehrerer Eingangsmerkmalskarten mit den der Ausgangsmerkmalskarte zugeordneten Neuronenparameter erhalten kann.
-
Weiterhin können die komprimierten Zwischenergebnisse an den externen Speicher übertragen werden, wobei für eine weitere Berechnung mithilfe des neuronalen Netzes die komprimierten Zwischenergebnisse aus dem externen Speicher abgerufen werden und dekomprimiert werden, um dekomprimierte Datenabschnitte zu erhalten.
-
Es kann vorgesehen sein, dass nach dem Abrufen der komprimierten Zwischenergebnisse aus dem externen Speicher diese mit einem Decodierungsverfahren decodiert werden und anschließend rücktransformiert werden, um die dekomprimierten Zwischenergebnissen zu erhalten. Das Decodierverfahren ist dabei vorzugsweise komplementär zu dem Codierverfahren gewählt. Zudem entspricht die Rücktransformation einem zu der Transformation in den Frequenzbereich komplementären Prozess.
-
Gemäß einem weiteren Aspekt ist ein Berechnungssystem mit einem neuronalen Netz, insbesondere einem gefalteten (convolutional) neuronalen Netz vorgesehen, wobei das Berechnungssystem eine Recheneinrichtung für die sequentielle Berechnung des neuronalen Netzes und einen dazu externen Speicher zum Zwischenspeichern von Zwischenergebnissen der Berechnungen in der Recheneinrichtung aufweist, wobei die Recheneinrichtung ausgebildet ist, um:
- - Datenabschnitte, die jeweils eine Gruppe von Zwischenergebnissen darstellen, mithilfe eines neuronalen Netzes schrittweise zu berechnen;
- - einen oder mehrere der Datenabschnitte verlustbehaftet zu, um komprimierte Zwischenergebnisse zu erhalten;
- - die komprimierten Zwischenergebnisse an den externen Speicher zu übertragen.
-
Weiterhin kann eine Dekompressionseinheit vorgesehen sein, die ausgebildet ist, um für eine Berechnung mithilfe des neuronalen Netzes die komprimierten Zwischenergebnisse aus dem externen Speicher abzurufen, diese zu dekomprimieren und eine weitere Berechnung abhängig von den dekomprimierten Zwischenergebnissen durchzuführen.
-
Figurenliste
-
Ausführungsformen werden nachfolgend anhand der beigefügten Zeichnungen näher erläutert. Es zeigen:
- 1 eine schematische Darstellung eines Berechnungssystems zur Berechnung eines neuronalen Netzes;
- 2 ein Flussdiagramm zur Veranschaulichung eines Verfahrens zur Kompression von Zwischenergebnissen einer Berechnung in einem neuronalen Netz für die externe Speicherung;
- 3a bis 3e eine Veranschaulichung des Kompressionsverfahrens anhand eines beispielhaften Datenabschnittes;
- 4a bis 4e eine Eingangsmerkmalskarte eines konvolutionellen neuronalen Netzes, eine Eingangsmerkmalskarte in Datenkacheln aufgeteilt, eine in den Frequenzbereich transformierte Eingangsmerkmalskarte, eine in den Frequenzbereich transformierte mit einer Kompressionsmatrix beaufschlagte Eingangsmerkmalskarte, eine aus dem Frequenzbereich zurücktransformierte Merkmalskarte, die mit der Kompressionsmatrix beaufschlagt worden ist, und eine kontinuierlich dargestellte Eingangsmerkmalskarte; und
- 5a bis 5f eine Veranschaulichung des Verfahrens, wenn die Unterteilung in Datenabschnitte entlang der Kanäle vorgenommen wird; und
- 6 eine beispielhafte Darstellung der Entwicklung der Elemente der Kompressionsmatrizen für ein neuronales Netz mit 13 Neuronenschichten bei einem Training für 30 Trainingszyklen, wobei die Graustufen die Elementewerte angeben.
-
Beschreibung von Ausführungsformen
-
1 zeigt eine schematische Darstellung eines Berechnungssystems 1 mit einer Recheneinrichtung 2. Die Recheneinrichtung 2 umfasst einen Prozessor und/oder eine sonstige Hardwareeinheit, die zur Berechnung eines neuronalen Netzes ausgebildet bzw. besonders geeignet sind. Häufig ist die Recheneinrichtung 2 so vorgesehen, dass Komponenten bzw. Hardwareeinheiten für einen Berechnungsdurchgang mehrfach verwendet werden. Insbesondere sind Hardwareeinheiten üblich, die eine einzelne Neuronenschicht berechnen oder einen oder mehrere Berechnungsschritte einer schrittweisen Berechnung z. B. eines konvolutionellen neuronalen Netzes vorsehen.
-
Bei der Berechnung komplexer neuronaler Netze werden die Berechnungen durch die Recheneinrichtung 2 nacheinander schrittweise durchgeführt, wobei sich jeweils Zwischenergebnisse ergeben, die nicht bei unmittelbar darauffolgenden Berechnungen z. B. erst in einer Berechnung einer weiteren Neuronenschicht weiterverwendet werden. Diese Zwischenergebnisse können so großen Datenmengen entsprechen, dass diese nicht ohne weiteres in der Recheneinrichtung 2 zwischengespeichert werden können.
-
Daher ist vorgesehen, Zwischenergebnisse von Berechnungen der Recheneinrichtung 2 in einen externen Speicher 4 zu transferieren und von dort wieder abzurufen, wenn diese für Folgeberechnungen benötigt werden.
-
Dazu ist eine Kompressionseinheit 3 vorgesehen, um die Zwischenergebnisse der Berechnungen des neuronalen Netzes zu komprimieren. Die komprimierten Berechnungsergebnisse werden anschließend an den externen Speicher 4 übertragen und dort gespeichert.
-
Zum Weiterverarbeiten der zuvor gespeicherten Zwischenergebnisse können diese aus dem externen Speicher 4 ausgelesen werden und mithilfe einer Dekompressionseinheit 5 dekomprimiert werden, um die dekomprimierten zwischengespeicherten Zwischenergebnisse für einen nächsten Berechnungsschritt durch das neuronale Netz zu nutzen.
-
Die Kompression bzw. Dekompression von Zwischenergebnissen bei der Berechnung von neuronalen Netzwerken ist insbesondere dann sinnvoll anwendbar, wenn die Eingangsdaten bzw. die Zwischenergebnisse nach einer Berechnung einer Neuronenschicht abschnittsweise mithilfe eines neuronalen Netzes weiter verarbeitet werden. Dies ist insbesondere bei konvolutionellen neuronalen Netzen der Fall. Z. B. können solche neuronalen Netze für die Perzeption von Bildern verwendet werden, wobei die Ausgabe einer Neuronenschicht mit der Größe fox × foy × foc als foc verschiedene gefilterte 2D-Matrizen angesehen werden kann. Die einzelnen so genannten Kanäle umfassen Merkmalskarten der Größe fox × foy. Die Bearbeitung durch das konvolutionelle neuronale Netz besteht in einer oder mehrerer Faltungen der Eingangsdaten mit den in einem Trainingsprozess ermittelten Netzparametern (Netzgewichte) mithilfe in der Regel hochgradig parallelisiert in Hardware ausgebildeten Berechnungselementen (z.B. Multiply-Accumulate-Einheiten - MAC-Einheiten) der Recheneinrichtung 2. Die Netzparameter können als Filterkoeffizienten oder Filter angesehen werden.
-
Dazu werden die Eingangs- und Ausgangsmerkmalskarten in Datenabschnitte (so genannte Kacheln) der Dimension tx × ty unterteilt. Diese Kacheln werden sequenziell durch die entsprechenden Berechnungselemente der Berechnungseinheit 2 bearbeitet. Dadurch erhält man Berechnungsergebnisse für die Ausgangsmerkmalskarten, wobei die Eingangsmerkmalskarten gemäß der Einteilung in Kacheln sequentiell in Kacheln der Ausgangsmerkmalskarten überführt werden. Die Berechnungsergebnisse werden für mehrere oder alle Kacheln gesammelt und können wiederum als Zwischenergebnisse für eine Berechnung einer nächsten Schicht verwendet werden oder ggfs. den Ausgangsdaten des neuronalen Netzes entsprechen. Da in der Regel die nächste Neuronenschicht erst berechnet wird, wenn alle Kacheln einer Merkmalskarte bearbeitet worden sind, ist es notwendig, die Zwischenergebnisse zwischenzuspeichern. Dazu werden die Zwischenergebnisse kachelweise komprimiert und zu dem externen Speicher 4 übertragen. Durch die Einteilung in Kacheln, lässt sich block- bzw. kachelweise auf die Daten zugreifen.
-
Im Folgenden wird die Kompression auf die Berechnung einer Kachel beschrieben, wobei beispielhaft von einer Kachel der Dimension D von 8 × 8 ausgegangen wird.
-
In 2 ist ein Flussdiagramm zur Veranschaulichung eines Verfahrens zum Betreiben eines neuronalen Netzes basierend auf einer oder mehreren Eingangsmerkmalskarten und dazu vorgegebenen Netzparametern (Netzgewichte) für eine Berechnung einer oder mehrerer Ausgangsmerkmalskarten dargestellt. Weiterhin veranschaulichen die 3a bis 3e das Kompressionsverfahren anhand einer beispielhaften 8x8-Kachel.
-
Zunächst werden in Schritt S1 eine oder mehrere Merkmalskarten vorgegeben, auf die eine ggf. erste Neuronenschicht des neuronalen Netzes angewendet werden soll.
-
In Schritt S2 wird gemäß einer Ablaufvorschrift ein Abschnitt von benachbarten Daten, eine oder mehrere so genannte Kacheln, mit der Dimension D aus einer oder mehreren der Eingangsmerkmalskarten ausgewählt und anschließend in Schritt S3 daraus mithilfe der Netzparameter eine oder mehrere entsprechende Kacheln einer den Netzparametern zugeordneten Ausgangsmerkmalskarte berechnet.
-
Die einer Ausgangsmerkmalskarte zugeordneten Netzparameter bezeichnet man auch als Kernel. Ein solcher Kernel stellt eine parametrisierte Einheit dar, deren Parameter durch den Trainingsprozess des neuronalen Netzes für die bestimmte Merkmalskarte und die bestimmte Neuronenschicht/Berechnungsschicht vorgegeben wird. Der Kernel dient im Wesentlichen dazu, die Elemente der Ausgangsmerkmalskarte zu berechnen, indem die tx × ty Eingangswerte einer Kachel der Eingangsmerkmalskarte auf einen Ausgangswert der Ausgangsmerkmalskarte abgebildet werden.
-
In Schritt S4 wird überprüft, ob ausreichend freier lokaler Speicher für die Zwischenergebnisse einer ggf. weiteren Berechnung einer Kachel von Ausgangsmerkmalskarten in der Berechnungseinheit vorhanden ist. Ist dies nicht der Fall (Alternative: Nein), wird das Verfahren mit Schritt S5 fortgesetzt, andernfalls (Alternative: Ja) wird zu Schritt S2 zur Berechnung der nächsten Kachel der ausgewählten Ausgangsmerkmalskarte zurückgesprungen.
-
In Schritt S5 werden die so bereits erhaltenen Kacheln der Ausgangsmerkmalskarten in Kacheln insbesondere der Dimension D=tx × ty zerlegt. 3a zeigt eine Kachel mit der ursprünglichen Pixelverteilung.
-
In Schritt S6 werden die Kacheln einzeln oder in Gruppen über eine Transformation in einen Frequenzbereich umgewandelt, um Frequenzbereichsdaten der Dimension D= tx × ty zu erhalten (Frequenzbereichskachel). Dabei wird eine vorgegebene Abfolge der einzelnen Pixel der Kachel als zeitliche oder örtliche Abfolge (Zeit- bzw. Ortsbereich) angesehen, so dass eine Transformation in den Frequenzbereich möglich ist. 3b zeigt die 8×8-Kachel der 3a nach einer Transformation in den Frequenzbereich.
-
Die Transformation kann beispielsweise eine diskrete Cosinus-, diskrete Sinus-, eine Fourrier-Transformation, eine Fast-Fourrier-Transformation, eine Hadamard-Transformation oder dergleichen sein. Beispielsweise gilt für die 2D-DCT-Transformation einer Kachelmatrix X Folgendes (wobei hier beispielhaft t
x=t
y=n geschrieben wurde):
-
Nach der Transformation der Kacheln in den Frequenzbereich werden in Schritt S7 die Frequenzbereichsdaten mit einer für die betreffende Neuronenschicht bzw. Merkmalskarte vorgegebenen Kompressionsmatrix A der Größe tx × ty elementweise multipliziert, um eine gefilterte respektive mit Null-Elementen versehene Frequenzbereichskachel zu erhalten.
-
3c zeigt eine beispielhafte Kompressionsmatrix, wobei die hellen Einträge einem Wert von 1 und die dunklen Einträge einem Wert von 0 entsprechen. Diese Kompressionsmatrix ist beispielhaft, und es können auch Werte zwischen 0 und 1 angenommen werden. 3d zeigt eine mit der Kompressionsmatrix beaufschlagte Frequenzbereichskachel (transformierter Datenabschnitt).
-
Abhängig von den Einträgen der Kompressionsmatrix A ergibt sich gegebenenfalls eine Veränderung der Frequenzbereichsdaten (gefilterter Datenabschnitt).
-
In Schritt S8 wird die in den Frequenzbereich transformierte und mit der Kompressionsmatrix A beaufschlagte Kachel mithilfe eines geeigneten Kompressionsverfahrens codiert. Die mit der Kompressionsmatrix modifizierte Frequenzbereichskachel enthält eine größere Anzahl von Bereichen und längere, die aufeinanderfolgende Nullen enthalten, die in besonders effektiver Weise komprimiert werden können, wie z. B. durch das Run-Length-Codierverfahren oder durch Entropiecodierung. Dadurch lässt sich eine hohe Kompressionsrate erreichen, die lediglich zu geringen Informationsverlusten bezüglich der Anwendung und Berechnung des neuronalen Netzes führt. Die codierten Frequenzbereichskacheln werden in Schritt S9 in den externen Speicher 4 übertragen.
-
In Schritt S10 wird überprüft, ob weitere Kacheln der Merkmalskarten in entsprechender Weise berechnet werden soll. Ist dies der Fall (Alternative: Ja), wird zu Schritt S2 zurückgesprungen und das Verfahren der Schritte S2 bis S9 für weitere Kacheln der Merkmalskarten wiederholt. Anderenfalls (Alternative: Nein) wird das Verfahren mit Schritt S10 fortgesetzt.
-
In Schritt S11 wird überprüft, ob eine nächste Schicht des neuronalen Netzes basierend auf den zuvor aus den Merkmalskarten bestimmten Berechnungsergebnissen berechnet werden soll. Ist dies der Fall (Alternative: Ja), wird das Verfahren durch Rücksprung zu Schritt S1 basierend auf Merkmalskarten, die sich aus den zwischengespeicherten codierten Merkmalskarten ergeben, wiederholt. Anderenfalls (Alternative: Nein) stellen die zwischengespeicherten Ausgangsmerkmalskarten den Ausgang des neuronalen Netzes in komprimierter Form dar. Diese können zur weiteren Verwendung durch Decodierung entsprechend des verwendeten Kompressionsverfahrens decodiert werden.
-
Zur Verwendung der Frequenzbereichskacheln der Merkmalskarten aus dem externen Speicher 4 für das Durchführen einer erneuten Berechnung werden die codierten Frequenzbereichskacheln der Merkmalskarten durch Anwendung des dem Kompressionsverfahren des Schritts S8 entsprechenden (korrespondierenden) Dekompressionsverfahrens in der Dekompressionseinheit 5 berechnet und anschließend durch die inverse Frequenztransformation rücktransformiert.
-
Die aus dem externen Speicher geladenen Kacheln befinden sich aufgrund des Kompressionsverfahrens im Frequenzbereich und wurden codiert und somit komprimiert abgespeichert. Diese Kacheln werden in einem nachfolgenden Berechnungsschritt nach dem Laden aus dem externen Speicher zunächst dekodiert, d.h. aus einer RLE-Darstellung oder einer Entropie-Kodierung dekodiert und anschließend aus dem Frequenzbereich in den Ortsbereich zurücktransformiert (modifizierter Datenabschnitt), um eine modifizierte Kachel einer Eingangsmerkmalskarte der nachfolgenden Neuronenschicht zu erstellen. Erst im Anschluss wird dieser modifizierte Datenabschnitt mithilfe der Netzparameter in eine den Netzparametern zugeordneten Ausgangsmerkmalskarte überführt.
-
3e zeigt eine Kachel, die sich durch Rücktransformation der mit der Kompressionsmatrix beaufschlagten Frequenzbereichskachel ergibt. Man erkennt, dass das Bild der 3e dem Bild der 3a sehr ähnlich ist.
-
Durch die Rücktransformation ändern sich beispielsweise die ursprünglichen Daten nicht, wenn die Kompressionsmatrix A ausschließlich Einträge von „1“ enthält.
-
Die Anwendung der Kompressionsmatrix A auf die Frequenzbereichskacheln entspricht der Anwendung eines digitalen Filters. Je weiter sich die Einträge in der Kompressionsmatrix A links oben befinden, desto tieffrequentere Anteile werden beaufschlagt bzw. gefiltert. Umgekehrt, je weiter sich die Einträge in der Kompressionsmatrix A rechts unten befinden, desto höherfrequente Anteile werden beaufschlagt bzw. gefiltert. Bei einer Kompressionsmatrix, die in der unteren rechten Hälfte Einträge von „0“ aufweist, ergeben sich nach der Rücktransformation in dem Ortsbereich weniger Fluktuationen, d. h. hohe Frequenzanteile der Einträge der zurücktransformierten Ausgangsmerkmalskarte sind verringert bzw. entfernt. Dennoch bleibt die Grundstruktur der Ausgangsmerkmalskarte weiterhin vorhanden.
-
Es wurde festgestellt, dass für die Übertragung durch eine Neuronenschicht höherfrequente Frequenzanteile für den Darstellungsfehler des neuronalen Netzes weniger relevant sind als niederfrequente Frequenzanteile. Daher kann man für die Kompression von Zwischenergebnissen eines neuronalen Netzes eine Kompressionsmatrix wählen, die in den den hochfrequenten Frequenzanteilen entsprechenden Einträgen Nullen enthält.
-
In einer weiteren Variante kann sich die Datenreduktion dadurch ergeben, dass der Eintrag einer Frequenzbereichskachel vor der Codierung des Schritts S8 zu Null gesetzt wird, wenn der jeweilig entsprechende Frequenzanteil in der Kompressionsmatrix einen Grenzwert unterschreitet. Die Frequenzfilterung also in Abhängigkeit des entsprechenden Eintrags in der Kompressionsmatrix gewählt wird.
-
In den 4a bis 4f ist der gesamte Prozess angewendet auf Eingangsdaten, die durch Merkmalskarten (4a) in mehreren Kanälen gegeben sind. Man erkennt die Unterteilung jeder der Merkmalskarten in Kacheln (4b) gleicher Größen und die Verarbeitung der Kacheln durch Transformation (4c) in den Frequenzbereich und die Beaufschlagung mit der Kompressionsmatrix A ( 4d), um die modifizierten Merkmalskarten zu erhalten (4f). In einen externen Speicher werden die modifizierten Frequenzbereichskacheln (4d) gespeichert, nachdem sie mit einem geeigneten Verfahren codiert/komprimiert wurden (RLE oder Entropiekodierung). Für das Wiedereinlesen der gespeicherten Daten werden die codierten Frequenzbereichskacheln wieder abgerufen, decodiert und anschließend rücktransformiert. (4e)
-
Alternativ kann die Unterteilung der Eingangsdaten entlang der Kanäle vorgenommen werden, so dass anstatt von Kacheln der Eingangsmerkmalskarte eindimensionale Eingangsdatenvektoren x verarbeitet werden können. Für die eindimensionale Frequenztransformation gilt dann folgende Transformationsvorschrift:
-
Die Vorgehensweise ist in den 5a bis 5f schematisch entsprechend den 4a bis 4f dargestellt.
-
Es kann für jede Neuronenschicht eine separate Kompressionsmatrix vorgegeben sein. Gegebenenfalls können für jeden der Kanäle separate Kompressionsmatrizen vorgegeben werden.
-
Für jede der Kompressionsmatrizen existiert eine der Dimension D = tx × ty entsprechende Anzahl von Elementen in den Kompressionsmatrizen. Diese müssen manuell auf einen geeigneten Kompromiss zwischen Kompressionsrate und minimalen Fehler der Berechnung des neuronalen Netzes eingestellt werden. Dieser Prozess ist aufwendig. Daher wird vorgeschlagen, in einem Adaptionsverfahren die Elemente der Kompressionsmatrizen zu optimieren. Dies kann beispielsweise gemeinsam mit dem Training des neuronalen Netzes vorgenommen werden. Beispielsweise können die Elemente der Kompressionsmatrizen gemeinsam mit den Koeffizienten des neuronalen Netzes mithilfe eines an sich herkömmlichen Trainingsalgorithmus, wie z. B. eines Backpropagation-Algorithmus, optimiert werden. Das heißt, die Kompressionsmatrizen werden in gleichem Maße wie die Neuronenparameter gelernt. Dadurch entfällt die Notwendigkeit eines manuellen Optimierens der Elemente der Kompressionsmatrizen, und die Kompression der einzelnen Neuronenschichten wird unter Berücksichtigung der Kompression anderer Neuronenschichten automatisch eingestellt.
-
Im Detail wird die Optimierung während des Trainingsverfahrens durchgeführt, indem beim Training des neuronalen Netzes die der Optimierung zugrundeliegende Kostenfunktion (siehe Backpropagation-Algorithmus) mit einem weiteren Term beaufschlagt wird. Dieser Term kann eine Norm (z. B. L1-Norm) der Koeffizienten der Kompressionsmatrizen sein. Der zusätzliche Term wirkt hierbei wie eine Regularisierung. Für das gleichzeitige Training von Neuronenparametern der Neuronen des neuronalen Netzes und der Elemente der Filtermatrix kann die Regularisierung mit einem Faktor α ∈ [0, 0.001] in der Kostenfunktion gewichtet werden.
-
In 6 sind beispielhaft für ein neuronales Netz mit 13 Neuronenschichten, denen jeweils eine Kompressionsmatrix zugeordnet ist, die Entwicklung der Elementewerte der zugeordneten Kompressionsmatrizen für 30 Trainingszyklen illustriert, wobei die Graustufen die Elementewerte angeben.
-
Das obige Verfahren ist besonders effizient, wenn die Kompressionseinheit 3 in Hardware realisiert ist. Verarbeitet, komprimiert und kodiert eine solche Hardware-Kompressionseinheit 3 die Berechnungsergebnisse gemäß dem obigen Verfahren durch Pipelining in einem Streaming-Modus, so ist eine Erhöhung der effektiven Bandbreite in Richtung des externen Speichers 4 möglich. Entsprechendes gilt für die Dekompressionseinheit 5 zum Rücklesen, Rücktransformieren und Dekodieren der Frequenzbereichskacheln der Zwischenergebnisse bzw. der Merkmalskarten von dem externen Speicher 4 gemäß dem obigen Verfahren.
-
Da die Übertragung von Daten zu einem externen Speicher 4 sehr viel energieaufwendiger und zeitintensiver ist als die internen Berechnungen und Registerzugriffe, kann durch die Implementierung der Kompressionseinheit 3 und der Dekompressionseinheit 5 die Leistungsaufnahme reduziert und der Datendurchsatz pro Leistungseinheit erhöht werden.
-
Das oben beschriebene Berechnungssystem und das entsprechende Verfahren lassen sich beispielsweise für die Verarbeitung von Bilddaten von Kamerabildern in Kraftfahrzeuganwendungen einsetzen. Dabei werden durch ein Kamerasystem erfasste Bilddaten durch das neuronale Netz des Berechnungssystems verarbeitet, um beispielsweise ein Objekterkennungsverfahren, ein Segmentierungsverfahren oder sonstige Klassifizierungsverfahren für die Bilddaten zu implementieren. Die so verarbeiteten (segmentierten oder klassifizierten) Bilddaten können dann in einem Fahrerassistenzsystem oder einem System zum autonomen Betrieb des Kraftfahrzeugs in an sich bekannter Weise verwendet werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- J. H. Ko et al., „Adaptive Weight Compression for Memory-Efficient Neural Networks,“ in Design, Automation Test in Europe Conference Exhibition (DATE), Lausanne, Switzerland, 2017 [0006]