Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR REALIZING A NEURAL NETWORK
Document Type and Number:
WIPO Patent Application WO/2019/121206
Kind Code:
A1
Abstract:
The invention relates to a method for realizing an artificial neural network by means of an electronic integrated circuit (SE), for example by means of an FPGA. The artificial neural network is constructed of artificial neurons. The artificial neurons are grouped into different layers (ES, VS, AS) and are linked to each other. For each neuron of the artificial neural network, a functional description is created, taking into account a specifiable starting weighting (101). A synthesis is performed for each neuron on the basis of the associated functional description with the associated specified starting weighting (102). A network list is determined as the synthesis result (103), in which network list at least a base element (BE1, BE2) and a starting configuration belonging to the base element (BE1, BE2) are stored for each neuron. A base element (BE1, BE2) is formed by what is referred to as a lookup table unit or LUT unit (LUT1, LUT2) and an associated dynamic configuration cell (KON1, KON2), in which a current configuration for the LUT unit (LUT1, LUT2) or for the base element (BE1, BE2) is stored. The network list is then implemented as the starting configuration of the artificial neural network in the electronic integrated circuit (SE) (104).

Inventors:
HINTERSTOISSER THOMAS (AT)
MATSCHNIG MARTIN (AT)
TAUCHER HERBERT (AT)
Application Number:
PCT/EP2018/084487
Publication Date:
June 27, 2019
Filing Date:
December 12, 2018
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SIEMENS AG (DE)
International Classes:
G06N3/063; G06F17/50
Foreign References:
CN101246508A2008-08-20
EP0595889B11997-10-15
Other References:
ELDREDGE J G ET AL: "RUN-TIME RECONFIGURATION: A METHOD FOR ENHANCING THE FUNCTIONAL DENSITY OF SRAM-BASED FPGAS", JOURNAL OF VLSI SIGNAL PROCESSING SYSTEMS FOR SIGNAL, IMAGE, AND VIDEO TECHNOLOGY, SPRINGER, NEW YORK, NY, US, vol. 12, no. 1, 1 January 1996 (1996-01-01), pages 67 - 85, XP000552005, ISSN: 0922-5773, DOI: 10.1007/BF00936947
ALEXANDER GOMPERTS ET AL: "Development and Implementation of Parameterized FPGA-Based General Purpose Neural Networks for Online Applications", IEEE TRANSACTIONS ON INDUSTRIAL INFORMATICS, IEEE SERVICE CENTER, NEW YORK, NY, US, vol. 7, no. 1, 1 February 2011 (2011-02-01), pages 78 - 89, XP011334339, ISSN: 1551-3203, DOI: 10.1109/TII.2010.2085006
MAREK GORGON ET AL: "Neural Network Implementation in Reprogrammable FPGA Devices - An Example for MLP", 1 January 2006, ARTIFICIAL INTELLIGENCE AND SOFT COMPUTING - ICAISC 2006 LECTURE NOTES IN COMPUTER SCIENCE;LECTURE NOTES IN ARTIFICIAL INTELLIG ENCE;LNCS, SPRINGER, BERLIN, DE, PAGE(S) 19 - 28, ISBN: 978-3-540-35748-3, XP019035725
JASON CONG ET AL: "High-Level Synthesis for FPGAs: From Prototyping to Deployment", IEEE TRANSACTIONS ON COMPUTER AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 30, no. 4, 1 April 2011 (2011-04-01), pages 473 - 491, XP011478900, ISSN: 0278-0070, DOI: 10.1109/TCAD.2011.2110592
NURVIADHI, E.: "Accelerating Binarized Neural Networks: Comparison of FPGA, CPU, GPU and ASIC", 2016, IEEE
HARUYOSHI YONEKAWA; HIROKI NAKAHARA: "On-chip Memory Based Binarized Convolutional Deep Neural Network Applying Batch Normalization Free Technique on an FPGA", 2017, IEEE, pages: 98 - 105
REY, GÜNTER DANIEL; WENDER, KARL F.: "Neuronale Netze - Eine Einführung in die Grundlagen, Anwendungen und Datenauswertung", 2010, HUBER VERLAG
SCHRIFT MUTHURAMALINGAM, A ET AL.: "Neural Network Implemen-tation Using FPGA: Issues and Application", INTERNATIONAL JOURNAL OF ELECTRICAL AND COMPUTER ENGINEERING, vol. 2, no. 12, 2008
MUTHURAMALINGAM, A ET AL.: "Neural Network Implemen-tation Using FPGA: Issues and Application", INTERNATIONAL JOURNAL OF ELECTRICAL AND COMPUTER ENGINEERING, vol. 2, no. 12, 2008
Attorney, Agent or Firm:
MAIER, Daniel (DE)
Download PDF:
Claims:
Patentansprüche

1. Verfahren zur Realisierung eines künstlichen, neuronalen Netzes mittels einer elektronischen, integrierten Schal tung (SE) , insbesondere einem sogenannten Field Program- mable Gate Array oder FPGA, wobei das künstliche, neuro nale Netz aus künstlichen Neuronen aufgebaut wird, welche in unterschiedlichen Schichten (ES, VS, AS) gruppiert und miteinander vernetzt werden, mit folgenden Schritten:

a. Erstellen einer funktionalen Beschreibung unter Einbeziehung einer vorgebbaren Startgewichtung für jedes Neuron (101) ;

b. Durchführen einer Synthese auf Basis der jeweiligen funktionalen Beschreibung mit der jeweils zugehöri gen, vorgebbaren Startgewichtung für das jeweilige Neuron ( 102 ) ;

c. Erstellen einer Netzliste als Syntheseergebnis, in welcher für jedes Neuron zumindest ein Basiselement (BEI, BE2) sowie eine zum Basiselement (BEI, BE2) gehörende Startkonfiguration hinterlegt wird, wobei das Basiselement (BEI, BE2) von einer sogenannten Lookup-Table- bzw. LUT-Einheit (LUT1, LUT2) und ei ner zugeordneten, dynamischen Konfigurationszelle (KONI, KON2) gebildet wird, in welcher eine jeweils aktuelle Konfiguration für die zugehörige LUT- Einheit (LUT1, LUT2) abgelegt wird (103); d. Implementieren der Netzliste als Startkonfiguration des neuronalen Netzes in der elektronischen, inte grierten Schaltung (SE) (104) .

2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass beim Erstellen der funktionalen Beschreibung unter Einbe ziehung der vorgebbaren Startgewichtung des jeweiligen Neurons die Funktionalität des jeweiligen Neurons derart reduziert wird, dass das jeweilige Neuron auf ein Basis element (BEI, BE2) abgebildet wird.

3. Verfahren nach einem der Ansprüche 1 bis 2, dadurch ge kennzeichnet, dass ausgehend von der in der elektroni schen, integrierten Schaltung implementierten Startkonfi guration des künstlichen, neuronalen Netzes eine Trai ningsphase durchlaufen wird, bei welcher die Startkonfi guration und/oder eine jeweils aktuelle Konfiguration von zumindest einem Basiselement (BEI, BE2) und/oder von zu mindest einem Neuron verändert wird.

4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass in der Trainingsphase des künstlichen, neuronalen Netzes fix vorgegebene Testdaten und/oder Testmuster herangezo gen werden, dass mit den Testdaten und/oder dem Testmus ter erzielte Ausgabedaten mit vorgegebenen Referenzdaten verglichen werden, und dass eine Veränderung der jeweils aktuellen Konfiguration von zumindest einer Basiseinheit (BEI, BE2) und/oder von zumindest einem Neuron iterativ durchgeführt wird, bis die mit den Testdaten und/oder dem vorgegebenen Testmuster erzielten Ausgabedaten den vorge gebenen Referenzdaten bis auf eine vorgebbare Toleranz entsprechen .

5. Verfahren nach einem der Ansprüche 3 bis 4, dadurch ge kennzeichnet, dass während der Trainingsphase des künst lichen, neuronalen Netzes zum Einspielen einer Verände rung der Startkonfiguration und/oder der jeweils aktuel len Konfiguration des zumindest einen Basiselements (BEI, BE2) und/oder Neurons eine speziell vorgegebene Schnitt stelle der elektronischen, integrierten Schaltung (SE) genutzt wird.

6. Verfahren nach einem der vorangegangenen Ansprüche, da durch gekennzeichnet, dass als Konfigurationszelle (KONI, KON2) zum Abspeichern der jeweils aktuellen Konfiguration des jeweiligen Basiselements eine Speichereinheit eines Konfigurationsspeichers der elektronischen, integrierten Schaltung (SE) verwendet wird.

7. Verfahren nach einem der vorangegangenen Ansprüche, da durch gekennzeichnet, dass die Konfigurationszelle (KONI, KOn2) zum Abspeichern der jeweils aktuellen Konfiguration des jeweiligen Basiselements sogenanntes Static RAM aus- geführt wird.

8. Verfahren nach einem der vorangegangenen Ansprüche, da durch gekennzeichnet, dass die funktionale Beschreibung des jeweiligen Neurons in einer Hardwarebeschreibungs- spräche, insbesondere einer sogenannten Hardware Descrip- tion Language oder HDL, erstellt wird (101) .

Description:
Be s ehr e ibung

Verfahren zur Realisierung eines neuronalen Netzes

Technisches Gebiet

Die gegenständliche Erfindung betrifft allgemein das Gebiet der künstlichen, neuronalen Netze. Insbesondere bezieht sich die vorliegende Erfindung auf ein Verfahren zur Realisierung eines künstlichen, neuronalen Netzes mittels einer elektroni schen, integrierten Schaltung, insbesondere mittels eines so genannten Field Programmable Gate Arrays oder FPGAs . Dabei ist das künstliche, neuronale Netz aus künstlichen Neuronen aufgebaut, welche in unterschiedliche Schichten gruppiert und miteinander vernetzt werden.

Stand der Technik

Heutzutage werden künstliche, neuronale Netz häufig bei An wendungen eingesetzt, bei welchen kein oder nur geringes, ex plizites systematisches Wissen über das zu lösende Problem vorliegt bzw. für welche es schwierig ist, einen passenden, durch einen Rechner ausführbaren Algorithmus herzuleiten. Derartige Anwendungen liegen z.B. in Bereichen wie der Text-, Bild- und Mustererkennung, der schnelle Entscheidungsfindun gen und/oder der Klassifikationsaufgaben.

Ein künstliches, neuronales Netz stellt im Prinzip eine Nach bildung von biologischen Nervensystemen mit ihrer assoziati ven Arbeitsweise dar. Die herausragende Eigenschaft des künstlichen, neuronales Netzes besteht insbesondere in der Lernfähigkeit - d.h. gestellte Probleme wie z.B. Text-, Bild oder Mustererkennungen, rasche Entscheidungsfindungen, etc. werden auf Basis von trainiertem Wissen gelöst. Ein künstli ches, neuronales Netz besteht aus einer Vielzahl von künstli chen Neuronen, welche beispielsweise menschlichen Gehirnzel len nachempfunden sind. Die Neuronen werden im neuronalen Netz in unterschiedlichen Schichten gruppiert und sind durch einen hohen Vernetzungsgrad gekennzeichnet. Als Schichten sind beispielsweise zumindest eine Eingangsschicht zur Auf nahme von Rohdaten, und eine Ausgangsschicht, von welcher der Abschluss bzw. das vom neuronalen Netz ermittelte Ergebnis bereitgestellt wird, vorgesehen. Dazwischen können eine oder mehrere „versteckte" Schichten vorgesehen sein, von welchen Zwischenergebnisse ermittelt und bereitgestellt werden. Ein beispielhaftes neuronales Netz sowie eine beispielhafte An wendungen aus dem Bereich der Muster- bzw. Spracherkennung sind z.B. aus der Schrift EP 0 595 889 Bl bekannt.

Um für eine vorgegebene Aufgabe (z.B. Text-, Bild- oder Mus tererkennung, Entscheidungsfindung oder Klassifizierungsauf gabe, etc.) einsetzbar zu sein, muss das neuronale Netz wäh rend einer Trainingsphase trainiert werden. Während dieser Trainingsphase wird das neuronale Netz anhand z.B. vorgegebe ner Trainingsdaten und/oder -mustern trainiert, eine im Bezug auf die Aufgabe richtige Antwort zu liefern. Dabei werden ausgehend von z.B. vorgebbaren oder zufällig gewählten Werten für eine Startgewichtung bzw. für Startgewichtungsfaktoren, welche den Neuronen zugeschrieben werden, Gewichtung bzw. Ge wichtungsfaktor und gegebenenfalls ein Biaswert für das je weilige Neuron je Trainingszyklus modifiziert. Die im jewei ligen Trainingszyklus erhaltenen Ergebnisse des neuronalen Netzes werden dann z.B. mit Referenzdaten/-muster verglichen, bis eine gewünschte Ergebnisqualität erzielt worden ist.

Aufgrund der parallelen Verarbeitungsstruktur ist eine reine Software-Realisierung von neuronalen Netzen, welche durch ei nen CPU oder GPU ausgeführt wird, oft wenig praktikabel, ins besondere da die Trainingsphase für das neuronale Netz meist relativ rechenintensiv ist. Nicht selten ist dafür eine hohe Rechenleistung erforderlich, wobei die Verarbeitung meist eher langsam abläuft. Bei einer Realisierung von neuronalen Netzen, welche direkt auf einer Hardware-Plattform ausgeführt werden, kommen heutzutage vermehrt integrierten, elektroni schen Schaltungen zum Einsatz. Vor allem sogenannte Field Programmable Gate Arrays oder FPGAs eigenen sich besonders für die Realisierung künstlicher, neuronaler Netze, da von FPGAs aufgrund ihrer Struktur und Flexibilität eine flexible und parallele Umsetzung erlaubt wird.

FPGAs werden durch Definitionen von Funktionsstrukturen und durch Vorgabe von Strukturvorschriften programmiert. Das be deutet, die Schaltungsstrukturen eines FPGAs können nach der Herstellung durch in das FPGA geladene Daten (z.B. Struktur vorschriften, Schaltpläne, etc.) festgelegt und/oder verän dert werden. FPGAs sind daher flexibel einsetzbar und mittels Programmierung können unterschiedliche Schaltungen und Funk tionen realisiert bzw. implementiert werden.

Für eine Implementierung eines neuronalen Netzes mittels ei ner integrierten, elektronischen Schaltung - vor allem mit tels FPGA - wird z.B. in einer Designphase ein Entwurf der Neuronen sowie deren Vernetzung und damit einer Struktur für das zu realisierende, neuronale Netz erstellt. Dabei werden beispielsweise die einzelnen Neuronen mit Hilfe einer Hard warebeschreibungssprache (z.B. HDL, VHDL, Verilog, etc.) nachmodelliert. Mittels Synthese wird dieser Entwurf der je weiligen Neuronen auf die Ressourcen der integrierten, elekt ronischen Schaltung abgebildet. D.h. es wird auf Basis einer mittels einer Hardwarebeschreibungssprache erstellten Be schreibung der jeweiligen Neuronen eine sogenannte Netzliste erzeugt, durch welche die jeweiligen Neuronen auf verfügbare Ressourcen der integrierten, elektronischen Schaltung bzw. des FPGAs abgebildet werden. Üblicherweise wird für die hard waremäßige Umsetzung eines neuronalen Netzes bzw. der einzel nen Neuronen eine relativ große Zahl an Ressourcen (wie z.B. Lookup-Tables , digitale Signalprozessoren (DSPs), Gatter, Schieberegister, Speicherblöcke, etc.) benötigt. Implementie rungen von künstlichen, neuronalen Netzen mittels FPGAs sind beispielswiese aus den Schriften: Nurviadhi, E. et. al . :

Accelerating Binarized Neural Networks: Comparison of FPGA, CPU, GPU and ASIC, 2016, IEEE; oder Haruyoshi Yonekawa und Hiroki Nakahara: On-chip Memory Based Binarized Convolutional Deep Neural Network Applying Batch Normalization Free

Technique on an FPGA, 2017, IEEE p. 98-105.

Das Training des neuronalen Netzes mit allen Schichten und dazugehörenden Neuronen kann beispielsweise direkt auf der Hardware-Plattform der integrierten, elektronischen Schaltung bzw. dem FPGA durchgeführt werden. Dazu wird beispielsweise die aus der Synthese erhaltene Netzliste der Neuronen bzw. des neuronalen Netzes auf die Hardware-Plattform bzw. die in tegrierte, elektronische Schaltung (z.B. FPGA) übertragen. D.h. die Neuronen werden durch die in der Netzliste angegebe nen Ressourcen (z.B. Lookup-Tables , digitale Signalprozesso ren (DSPs), Gatter, Schieberegister, Speicherblöcke, etc.) nachgebildet. Die entsprechenden, im jeweiligen Trainingszyk lus aktuellen Gewichtungen/Gewichtungsfaktoren der künstli chen Neuronen sind dabei z.B. in zugehörigen Speicherblöcken (z.B. Block-RAMs) der integrierten, elektronischen Schaltung bzw. des FPGAs abgelegt. Für jeden neuen Trainingszyklus müs sen z.B. die jeweils aktuellen bzw. die aufgrund des vorheri gen Trainingsergebnisses adaptierten Gewichtungen direkt in die entsprechenden Speicherblöcke geladen werden, bis für die vorgegebene Aufgabenstellung optimale Gewichtungen bzw. opti male Gewichtungsfaktoren gefunden sind. Diese werden dann für den laufenden Betrieb als Fixwerte in den Speicherblöcken der hardwaremäßigen Umsetzung der jeweiligen Neuronen beibehal ten .

Alternativ kann das Training des künstlichen, neuronalen Net zes auch mittels eines Softwaremodells erfolgen, welches bei spielsweise auf Basis der Netzliste erstellt und im Prinzip der hardwaremäßigen Realisierung in der integrierten, elekt ronischen Schaltung ident ist. Mit Hilfe von Trainingsdaten und/oder -mustern werden mit dem Softwaremodell die optimalen Gewichtungen bzw. Gewichtungsfaktoren für die Neuronen - z.B. ausgehend von einer vorgebbaren oder zufälligen Startgewich tung - ermittelt. Nach Ermittlung der optimalen Gewichtungen wird das trainierte, neuronale Netz auf die Hardware- Plattform der integrierten, elektronischen Schaltung übertra- gen. Die Gewichtungen der jeweiligen Neuronen werden dann z.B. als Fixwerte in den Speicherblöcken der hardwaremäßigen Umsetzung der jeweiligen Neuronen abgelegt.

Bei beiden, beispielhaften Trainingsmethoden für ein in einer integrierten, elektronischen Schaltung implementiertes neuro nales Netz sind die Verbindungen der Neuronen üblicherweise fix. Nur die Speicherblöcke, in welchen die Gewichtungen ab gelegt sind, können z.B. während der Trainingsphase dynamisch nachgeladen werden. Wird beispielsweise während der Trai ningsphase festgestellt, dass eine Veränderung der Verbindung der Neuronen notwendig ist, so kann diese Veränderung nur durch eine neuerliche Synthese erreicht werden. D.h. Änderun gen in der Struktur des neuronalen Netzes bzw. in der Verbin dung der Neuronen sind mit relativ großem Aufwand verbunden.

Weiterhin führt das Ablegen der Gewichtungen in eigenen Spei cherblöcken bei der hardwaremäßigen Umsetzung der jeweiligen Neuronen dazu, dass für eine Berechnung der sogenannten Ge wichtsmatrix des jeweiligen Neurons beispielsweise einige Taktzyklen benötigt werden (z.B. Auslesen der gespeicherten Gewichtung, Berechnen der Gewichtsmatrix, etc.) . Dies hat insbesondere eine nachteilige Auswirkung auf die Verarbei tungsgeschwindigkeit - sowohl in der Trainingsphase als auch im laufenden Einsatz des neuronalen Netzes.

Darstellung der Erfindung

Der Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren zur Realisierung eines künstlichen, neuronalen Netzes mittels einer elektronischen, integrierten Schaltung, insbesondere mittels eines Field Programmable Gate Arrays (FPGA) , anzuge ben, durch welches ohne großen Aufwand ein geringerer Res sourcenverbrauch sowie eine höhere Verarbeitungsgeschwindig keit erzielt wird und eine flexiblere Handhabung während der Trainingsphase ermöglicht wird. Diese Aufgabe wird durch ein Verfahren der eingangs genannten Art mit den Merkmalen gemäß dem unabhängigen Patentanspruch gelöst. Vorteilhafte Ausführungsformen der vorliegenden Er findung sind in den abhängigen Ansprüchen beschrieben.

Erfindungsgemäß erfolgt die Lösung der Aufgabe durch ein Ver fahren der eingangs angeführten Art zur Realisierung eines künstlichen, neuronalen Netzes mittels einer integrierten, elektronischen Schaltung, insbesondere mittels eines Field Programmable Gate Arrays oder FPGAs, wobei das Verfahren fol gende Schritte umfasst. Zuerst wird eine funktionale Be schreibung unter Einbeziehung einer vorgebbaren Startgewich tung für jedes Neuron des künstlichen, neuronalen Netzes er stellt. Dann wird eine Synthese auf Basis der jeweiligen funktionalen Beschreibung mit der jeweils zugehörigen, vor gebbaren Startgewichtung für das jeweilige Neuron durchge führt. Als Syntheseergebnis wird eine Netzliste erstellt, in welcher für jedes Neuron zumindest ein Basiselement sowie ei ne zum zumindest einen Basiselement gehörende Ausgangskonfi guration hinterlegt wird. Das Basiselement wird dabei von ei ner sogenannten Lookup-Table- oder LUT-Einheit und einer zu geordneten, dynamischen Konfigurationszelle der integrierten, elektronischen Schaltung gebildet, wobei in der Konfigurati onszelle eine jeweils aktuelle Konfiguration für die zugehö rige LUT-Einheit abgelegt wird. Dann wird die Netzliste als Startkonfiguration des künstlichen, neuronalen Netzes in die elektronische, integrierte Schaltung, insbesondere ins FPGA, geladen und implementiert.

Der Hauptaspekt der gegenständlichen Erfindung besteht darin, dass bereits beim Design bzw. bei der funktionalen Beschrei bung eine Startgewichtung für die jeweiligen Neuronen mitbe rücksichtigt wird. Dabei kann als Startgewichtung beispiels weise ein maximal möglicher Wert für die Gewichtung bzw. Ge wichtungsfaktoren des jeweiligen Neurons herangezogen werden. Durch die Abbildung der jeweiligen Neuronen auf zumindest ei ne Basiseinheit wird weiterhin der Bedarf an Hardware- Ressourcen der elektronischen, integrierten Schaltung je Neu- ron erheblich reduziert. Insbesondere ist kein zusätzlicher Speicherblock, wie z.B. ein Block-RAM, zum Ablegen der aktu ellen Gewichtung des jeweiligen Neurons notwendig. Die Ge wichtung ist bereits in der funktionalen Beschreibung des je weiligen Neurons bzw. in der jeweiligen Konfiguration für die zumindest einen Basiseinheit, auf welche das Neuron abgebil det wird, berücksichtigt bzw. integriert. Die Konfiguration für das jeweilige Basiselement ist dabei in einer dynami schen, zum Basiselement gehörenden Konfigurationszelle abge legt, welche zum Konfigurationsspeicher der elektronischen, integrierten Schaltung gehört und deren Inhalt beim Hochlau fen der elektronischen, integrierten Schaltung in die LUT- Einheit des Basiselements geladen wird. Eine LUT-Einheit ist dabei in der digitalen Schaltungstechnik bzw. bei elektroni schen, integrierten Schaltungen eine Logikeinheit, mit wel cher durch Laden einer entsprechenden, zugehörigen Konfigura tion, insbesondere in Form einer Logiktabelle, aus der zuge hörigen Konfigurationsspeicherzelle beim Hochlaufen der Schaltung eine gewünschte Funktion (z.B. AND, OR, NOR, XOR oder auch komplexere Funktionen) realisiert werden kann.

Weiterhin wird durch den Entfall zusätzlicher Speicherblöcke (wie z.B. Block-RAMs) für die Gewichtungen der Neuronen, wel che während des Betriebs des neuronalen Netzwerks ausgelesen werden müssen, und durch den Wegfall einer Berechnung einer Gewichtungsmatrix für das jeweilige Neuron wird außerdem die Verarbeitungsgeschwindigkeit des neuronalen Netzes erhöht.

Eine bevorzugte Ausgestaltung des erfindungsgemäßen Verfah rens sieht vor, dass beim Erstellen der funktionalen Be schreibung unter Einbeziehung der vorgebbaren Startgewichtung des jeweiligen Neurons eine Funktionalität des jeweiligen Neurons derart reduziert wird, dass das jeweilige Neuron auf ein Basiselement abgebildet wird. Auf diese Weise kann der Ressourcenbedarf eines Neurons wesentlich reduziert werden. Die Funktion des Neurons wird dabei idealerweise mit der da zugehörenden Gewichtung als Gesamtfunktion in der LUT-Einheit des Basiselements über die Konfigurationszelle - beim Hoch- laufen der elektronischen, integrierten Schaltung bzw. des FPGAs - konfiguriert bzw. abgebildet.

Eine zweckmäßige Weiterbildung des erfindungsgemäßen Verfah rens sieht vor, dass ausgehend von der in der elektronischen, integrierten Schaltung implementierten Startkonfiguration des künstlichen, neuronalen Netzes eine Trainingsphase durchlau fen wird, bei welcher die Startkonfiguration und/oder eine jeweils aktuelle Konfiguration von zumindest einem Basisele ment und/oder von zumindest einem Neuron verändert wird.

Durch den Einsatz der Basiselemente bestehend aus einer LUT- Einheit und einer zugehörigen, dynamischen Konfigurationszel le können während der Trainingsphase sehr einfach und flexi bel Änderungen vorgenommen werden. Eine funktionale Ausge staltung und/oder eine Gewichtung von zumindest einem Neuron, welche als funktionaler Inhalt in der LUT-Einheit während des Betriebs der elektronischen, integrierten Schaltung abgelegt ist, kann sehr einfach über die Konfigurationszelle variiert werden. Die Konfigurationszelle wird damit während der Trai ningsphase des künstlichen, neuronalen Netzes als Trainings speicher für das jeweilige Neuron bzw. Basiselemente genutzt. Idealerweise wird die Trainingsphase des künstlichen, neuro nalen Netzes direkt auf der Schaltung bzw. im laufenden Be trieb der Schaltung durchgeführt. Ist die optimale Konfigura tion des neuronalen Netzes zum Lösen der jeweiligen Aufgabe (z.B. Text-, Bild- oder Mustererkennung, Entscheidungsaufga be, etc.) gefunden, kann beispielsweise die jeweilige Konfi guration in den Konfigurationszellen der Basiselemente fi xiert werden .

Dabei ist es von Vorteil, wenn in der Trainingsphase des künstlichen, neuronalen Netzes fix vorgegebene Testdaten und/oder Testmuster herangezogen werden. Mit den Testdaten und/oder dem Testmuster erzielte Ausgabedaten des künstli chen, neuronalen Netzes werden mit vorgegebenen Referenzdaten verglichen. Eine Veränderung der jeweils aktuellen Konfigura tion von zumindest einer Basiseinheit und/oder zumindest ei nem Neuron wird iterativ durchgeführt, bis die mit den Test- daten und/oder dem Testmuster erzielten Ausgabedaten des künstlichen, neuronalen Netzes den vorgegebenen Referenzdaten bis auf eine vorgebbare Toleranz entsprechen. Während der Trainingsphase kann durch die Veränderung von einem oder meh reren Neuronen eine iterative Annäherung erzielt werden, bis eine optimale Lösung der Aufgabe erreicht worden ist.

Weiterhin wird idealerweise während der Trainingsphase des künstlichen, neuronalen Netzes zum Einspielen einer Verände rung der Startkonfiguration und/oder der jeweils aktuellen Konfiguration des zumindest einen Basiselements und/oder des zumindest einen Neurons eine speziell vorgegebenen Schnitt stelle der elektronischen, integrierten Schaltung bzw. des FPGAs genutzt. Veränderungen von einzelnen Neuronen können damit sehr einfach während der Trainingsphase in die entspre chenden Konfigurationszellen der entsprechenden Basiselemente geladen werden. Beim Hochlaufen der elektronischen, inte grierten Schaltung werden dann die Veränderungen einzelner Neuronen in die jeweiligen LUT-Einheiten der entsprechenden Basiselemente geladen und es kann die neue bzw. veränderte Konfiguration des künstlichen, neuronalen Netzes sehr rasch getestet werden.

Es ist vorteilhaft, wenn als Konfigurationszelle zum Abspei chern der jeweils aktuellen Konfiguration des jeweiligen Ba siselements eine Speichereinheit des Konfigurationsspeichers der elektronischen, integrierten Schaltung verwendet wird.

Der Konfigurationsspeicher der elektronischen, integrierten Schaltung, insbesondere des FPGAs, ist üblicherweise eine Speichereinheit, in welcher die jeweils aktuelle Konfigurati on abgelegt ist. Diese Konfiguration wird dann beim Hochlau fen der Schaltung bzw. des FPGAs geladen und gibt die aktuel le Funktionalität der Schaltung, Verwendung der Ressourcen sowie die Verknüpfung der jeweils verwendeten Ressourcen vor. Damit werden einerseits Ressourcen gespart und andererseits können Änderungen während der Trainingsphase leicht einge bracht werden. Es ist günstig, wenn die Konfigurationszelle zum Abspeichern der jeweils aktuellen Konfiguration des jeweiligen Basisele ments als sogenannte Static RAM ausgeführt wird. Ein Static RAM ist ein elektronischer, flüchtiger Speicherbaustein, wel cher eine in ihm abgelegte Dateninformation behält, solange die Betriebsspannung angelegt ist. Alternativ können die Kon figurationszellen auch als so genannte Flash-Speicher ausge führt sein, welche einen nichtflüchtige Speicherung bei gleichzeitig niedrigem Energieverbrauch ermöglichen.

Idealerweise wird die funktionale Beschreibung des jeweiligen Neurons des künstlichen, neuronalen Netzes in einer Hardware beschreibungssprache, insbesondere in einer sogenannten Hard ware Description Language oder HDL, erstellt.

Kurzbeschreibung der Zeichnung

Die Erfindung wird nachfolgend in beispielhafter Weise anhand der beigefügten Figuren erläutert. Dabei zeigt:

Figur la eine beispielshafte und verallgemeinerte Struktur eines künstlichen, neuronalen Netzes;

Figur lb eine beispielshafte und verallgemeinerte Basis

struktur eines künstlichen Neurons;

Figur 2 eine beispielhafte, schematische Umsetzung eines

Neurons mit eigenem Speicherblock für zugehörige Gewich tungsfaktoren während einer Trainingsphase;

Figur 3 einen schematischen Ablauf des erfindungsgemäßen

Verfahrens zur Realisierung eines künstlichen, neurona len Netzes mittels einer integrierten, elektronischen Schaltung; und

Figur 4 eine beispielhafte, schematische Darstellung eines Basiselements für ein Neuron zur Verwendung im erfin dungsgemäßen Verfahren

Ausführung der Erfindung Künstliche neuronale Netze sind natürlichen neuronalen Netzen nachempfunden. Ein künstliches neuronales Netz stellt daher üblicherweise ein stark vereinfachtes Abstraktionsmodell ei nes natürlichen neuronalen Netzes dar, wobei das künstliche neuronale Netz aus künstlichen Neuronen aufgebaut ist, welche netzartig miteinander verbunden sind. Eine Struktur eines derartigen künstlichen neuronalen Netzes - wie z.B. aus Rey, Günter Daniel; Wender, Karl F.: Neuronale Netze - Eine Ein führung in die Grundlagen, Anwendungen und Datenauswertung,

2. Auflage, Huber Verlag, 2010 bekannt - sowie ein beispiel hafte Basisstruktur eines künstlichen Neurons - wie z.B. in der Schrift Muthuramalingam, A, et al., Neural Network

Implemen-tation Using FPGA: Issues and Application, Interna tional Journal of Electrical and Computer Engineering Vol . 2, No. 12, 2008. dargestellt - werden anhand der Figuren la und lb näher beschrieben.

Figur la zeigt beispielhaft die Struktur eines mehrschichti ges, sogenannten „Feedforward Neuronal Networks", wobei die Struktur des Netzes beispielsweise unmittelbar mit dem je weils verwendeten Lern- oder Trainingsverfahren zusammenhängt und ein notwendiger Umfang des neuronalen Netzes von Komple xität der jeweils zu lösenden Aufgabe (z.B. Text-, Bild- oder Mustererkennung, Entscheidungsfindung oder Klassifizierungs aufgabe, etc.) abhängt. Das neuronale Netz besteht aus mehre ren Neuronen NI bis N8, welche dazu eingesetzt werden, Infor mationen aus der Umwelt oder von anderen Neuronen NI bis N8 aufzunehmen und an andere Neuronen NI bis N8 oder die Umwelt in modifizierter Form weiterzuleiten. Dazu sind die Neuronen NI bis N8 beispielsweise in unterschiedliche Schichten ES,

VS, AS gruppiert und miteinander vernetzt. Ein neuronalen Netz kann beispielsweise eine Eingangsschicht ES bestehend aus Eingangsneuronen NI, N2, N3, eine oder mehrere verborgene Schichten VS und eine Ausgangsschicht AS mit Ausgangsneuronen N7, N8 umfassen. Von der Eingangsschicht ES bzw. den Ein gangsneuronen NI, N2, N3 werden Signale, Reize oder Muster über Eingänge El, E2, E3 aufgenommen. Die Ausgänge der Ein gangsneuronen NI, N2, N3 sind mit den Neuronen N4, N5, N6 der verborgene Schicht VS verbunden und deren Ausgänge mit den Ausgangsneuronen N7, N8, über deren Ausgänge Al, A2 dann Sig nale bzw. Ausgabedaten abgegeben werden.

In Figur lb ist beispielhaft eine verallgemeinerte Basis struktur eines künstlichen Neurons NI bis N8 mit n Eingangs verbindungen. Über die Eingangsverbindungen erhält das Neuron seinen Eingabewerte pl, p2, p3, ..., pn z.B. in Form von Signa len, Reizen oder Muster aus der Umwelt oder in Form Ausgangs daten anderen Neuronen. Diese Eingabewerte pl, p2, p3, ..., pn werden jeweils mit einer Gewichtung bzw. Gewichtsfaktoren wl, w2, w3, ..., wn verknüpft. Die Gewichtung bzw. die Gewichtsfak toren wl, w2, w3, ..., wn können beispielsweise vor einer Trai ningsphase für das neuronale Netz als Startgewichtung wl, w2 , w3, ..., wn für das jeweilige Neuron vorgegeben werden, wobei als Startgewichtung z.B. ein maximal möglicher Wert für die Gewichtung bzw. Gewichtungsfaktoren wl, w2, w3, ..., wn des je weiligen Neurons herangezogen werden. Während der Trainings phase kann die Gewichtung wl, w2 , w3, ..., wn entsprechend va riiert werden. Weiterhin kann bei einem künstlichen Neuron ein sogenannter Bias-Eingang b mit einem Eingabewert 1 vorge sehen sein.

Die Funktionalität des Neurons, welche zur Erstellung der funktionalen Beschreibung für eine Realisierung mittels einer integrierten, elektronischen Schaltung herangezogen werden kann, wird im Prinzip durch eine Übertragungsfunktion S und einen Aktivierungsfunktion f (x) beschrieben. Mittels der Übertragungsfunktion S wird anhand der Gewichtung wl, w2, w3, ..., wn der Eingabewerte pl, p2, p3, ..., pn gegebenenfalls unter Berücksichtigung des Eingabewerts des Bias-Eingangs b eine Netzeingabe x des Neurons berechnet. Die Ausgabe y des Neu rons wird durch die Aktivierungsfunktion f (x) bestimmt, wobei für die Aktivierungsfunktion verschiedenen Funktionstypen in Abhängigkeit von der jeweiligen Netztopologie verwendet wer den können. Als Aktivierungsfunktion f (x) kann beispielsweise eine lineare Funktion, eine sigmoide Funktion, eine stückwei- se lineare Funktion oder eine Sprungfunktion verwendet wer den .

Für die Umsetzung der Funktionalität eines einzelnen Neurons, wie z.B. in Figur lb dargestellt, müssen die Übertragungs funktion S sowie die Aktivierungsfunktion f (x) berechnet wer den. Dazu können beispielsweise unterschiedliche Berechnungs einheiten (z.B. Addierer, Multiplizierer, komplexe Auswerte einheiten, etc.) verwendet werden, welche bei einer Realisie rung mittels einer elektronischen, integrierten Schaltung (z.B. FPGA) durch unterschiedliche Schaltungsblöcke hardware mäßig umgesetzt werden. Derzeit bekannte Umsetzungen von künstlichen Neuronen bzw. neuronalen Netzen mittels elektro nischer, integrierter Schaltungen, insbesondere mittels eines FPGAs, sind aus den Schriften: Muthuramalingam, A, et al., Neural Network Implemen-tation Using FPGA: Issues and Appli cation, International Journal of Electrical and Computer En gineering Vol . 2, No. 12, 2008; Nurviadhi, E. et. al.:

Accelerating Binarized Neural Networks: Comparison of FPGA, CPU, GPU and ASIC, 2016, IEEE; oder Haruyoshi Yonekawa und Hiroki Nakahara: On-chip Memory Based Binarized Convolutional Deep Neural Network Applying Batch Normalization Free

Technique on an FPGA, 2017, IEEE p. 98-105; bekannt.

Ein heutzutage auf einer elektronischen, integrierten Schal tung SE bzw. auf einem FPGA realisiertes, künstliches Neurons kann - wie in Figur 2 vereinfacht und beispielhaft darge stellt - z.B. zumindest aus einer Lookup-Table- bzw. LUT- Einheit LUT und einen Speicherblock BS bestehen. Optional kann auch eine Berechnungseinheit RE vorgesehen sein. Für Konfiguration der LUT-Einheit LUT bzw. die Realisierung der Funktion der LUT-Einheit LUT wird beispielsweise eine zur LUT-Einheit LUT gehörende Konfigurationszelle KON im Konfigu rationsspeicher KS der elektronischen, integrierten Schaltung SE eingesetzt. Bei Neuronen mit komplexer Funktionalität kön nen diese Einheiten LUT, RE und BS sowie zur den LUT- Einheiten LUT zugeordneten Konfigurationszellen KON gegebe nenfalls mehrfach vorgesehen sein. Mittels der LUT-Einheit LUT und der gegebenenfalls vorhande nen Berechnungseinheit RE werden z.B. in der Trainingsphase und im laufenden Betrieb die Übertragungsfunktion S und die Aktivierungsfunktion f (x) realisiert. Die Funktion der LUT- Einheit ist dazu beispielsweise fix durch die in der zugehö rigen Konfigurationszelle KON gespeicherte Konfiguration der LUT-Einheit vorgegeben. Die Berechnungseinheit RE kann bei spielsweise als digitaler Signalprozessor (DSP) realisiert oder aus z.B. Gatter, Schieberegister, Addier- und/oder Multipliziereinheiten aufgebaut sein. Die Gewichtung wl, w2, w3, ..., wn für die Berechnung der Netzeingabe des Neurons mit tels der Übertragungsfunktion S wird von zumindest einem Blockspeicher BS zur Verfügung gestellt, welcher z.B. als so genanntes Block-RAM oder BRAM ausgeführt sein kann. Der In halt des zumindest einen Blockspeichers BS -d.h. die jeweili ge Gewichtung wl, w2, w3, ..., wn des jeweiligen Neurons - kann beispielsweise während der Trainingsphase verändert werden. D.h. zum Trainieren der Neuronen bzw. des neuronalen Netzes wird die Gewichtung wl, w2, w3, ..., wn von zumindest einem Neuron modifiziert, welche in einem eigenen Speicherblock BS abgelegt ist. Wird während der Trainingsphase ein Ausgabeer gebnis mit gewünschter Qualität vom neuronalen Netz erzielt, so werden die in den jeweiligen Speicherblöcken BS abgelegten Gewichtungen wl, w2, w3, ..., wn fixiert.

Figur 3 zeigt einen beispielhaften und schematischen Ablauf des erfindungsgemäßen Verfahrens zum Realisieren eines künst lichen, neuronalen Netzes mittels einer elektronischen, inte grierten Schaltung SE, welche beispielsweise als FPGA ausge staltet ist. Das künstliche, neuronale Netz besteht dabei aus Neuronen - wie beispielhaft in Figur lb dargestellt, welche wie anhand von Figur la beispielhaft beschrieben in Schichten gruppiert und miteinander vernetzt sind. In einem ersten Ver fahrensschritt 101 des erfindungsgemäßen Verfahrens wird für jedes Neuron einen funktionale Beschreibung erstellt, wobei bereits eine vorgebbare Startgewichtung für das jeweilige Neuron in die funktionale Beschreibung einbezogen wird. Die Startgewichtung kann beispielsweise zufällig gewählt sein oder es werden maximal möglich Werte für die Gewichtung wl, w2, w3, ..., wn als Startgewichtung herangezogen. Die funktio nale Beschreibung des jeweiligen Neurons wird beispielsweise in einer Hardwarebeschreibungssprache - in einer sogenannten Hardware Description Language (z.B. HDL, VHDL, Verilog, etc.) - abgefasst.

In einem zweiten Verfahrensschritt 102 wird auf Basis der je weiligen funktionalen Beschreibung des jeweiligen Neurons, bei welcher die jeweils zugehörige Startgewichtung vorgegeben ist bzw. einbezogen wurde, eine Synthese durchgeführt und im dritten Verfahrensschritt 103 eine Netzliste als Syntheseer gebnis erstellt bzw. erhalten. D.h. es wird die funktionalen Beschreibung der Neuronen bzw. des neuronalen Netzes, welche meist in einer Hardwarebeschreibungssprache vorliegt, in eine Netzliste umgewandelt. Die Netzliste umfasst üblicherweise eine Beschreibung der für die Schaltungsrealisierung notwen digen Module (z.B. Logikgatter, Speicherblöcke, etc.) und der entsprechenden Verbindungen zwischen den Modulen. In der im dritten Verfahrensschritt 103 erstellten Netzliste sind dabei für jedes Neuron zumindest ein Basiselement BEI sowie einen zum Basiselement BEI gehörende Startkonfiguration hinterlegt.

Ein derartiges Basiselement BEI ist beispielhaft und schema tisch in Figur 4 dargestellt. Ein Neuron eines nach dem er findungsgemäßen Verfahren realisierten neuronalen Netzes be steht zumindest aus einem derartigen Basiselement BEI. Funk tional komplexere Neuronen können allerdings auch mehrere Ba siselemente BEI, BE2, ... aufweisen. Idealerweise wird aber im ersten Verfahrensschritt 101 die Funktionalität des jeweili gen Neurons beim Erstellen der funktionalen Beschreibung un ter Einbeziehung der jeweiligen Startgewichtung derart redu ziert, dass das jeweilige Neuron auf genau ein Basiselement BEI abgebildet werden kann.

Ein derartiges Basiselement BEI, durch welches ein Neuron ge bildet werden kann, wird aus einer LUT-Einheit LUT1 auf der elektronischen, integrierten Schaltung SE und einer zugeord- neten, dynamischen Konfigurationszelle KONI gebildet. In der dynamischen Konfigurationszelle KONI ist eine jeweils aktuel le Konfiguration für die LUT-Einheit LUT1 abgelegt. Durch diese Konfiguration wird die Funktion der LUT-Einheit LUT1 bestimmt, von welcher im Prinzip die Übertragungsfunktion S unter Einbeziehung einer Gewichtung wl, w2, w3, ..., wn und die Aktivierungsfunktion f (x) umgesetzt werden. Als Konfigurati onszelle KONI, welche beispielsweise als sogenanntes Static RAM oder als sogenannter Flash-Speicher ausgeführt sein kann, wird z.B. eine Speichereinheit des Konfigurationsspeichers KS der elektronischen, integrierten Schaltung SE genutzt.

Bei einem funktional komplexeren Neuron kann beispielsweise eine weitere Basiseinheit BE2 vorgesehen sein, welche eben falls aus einer weiteren LUT-Einheit LUT2 und einer weiteren zugehörigen, dynamischen Konfigurationszelle KON2 besteht, in welcher die jeweils aktuelle Konfiguration für die weitere LUT-Einheit LUT2 abgelegt ist. Werden die Neuronen des neuro nalen Netzes im Verfahrensschritt 101 mittels funktionaler Beschreibung derart designt, dass jedes Neuron nur auf eine Basiseinheit BEI, BE2, ... abgebildet wird, so kann die weitere Basiseinheit BE2 bereits ein weiteres Neuron des neuronalen Netzes darstellen.

In einem vierten Verfahrensschritt 104 wird die Netzliste als Startkonfiguration des neuronalen Netzes in die elektroni sche, integrierte Schaltung SE bzw. ins FPGA SE geladen und implementiert. In der Folge kann dann mit einer Trainingspha se - idealerweise im Online-Betrieb bzw. direkt auf der Schaltung SE - begonnen werden.

Dazu werden z.B. beim Hochfahren bzw. Starten der Schaltung SE bzw. des FPGAs die in den Konfigurationszellen KONI, KON2, ... abgelegten Startkonfigurationen in die LUT-Einheiten LUT1, LUT2, ... geladen. In der Trainingsphase werden fix vorgegebe nen Testdaten und/oder Testmuster verwendet, um die vom neuronalen Netz zu lösenden Aufgabe (z.B. Text-, Bild- oder Mustererkennung, Entscheidungsfindung oder Klassifizierungs- aufgabe, etc.) durchzuführen. Die mit den Testdaten und/oder Testmustern erzielten Ausgabedaten des neuronalen Netzes wer den dann mit vorgegebenen Referenzdaten verglichen und ge prüft, ob die erzielten Ausgabedaten bis auf eine vorgebbare Toleranz den Referenzdaten entsprechen.

Wird die vorgebbare Toleranz überschritten bzw. die gewünsch te Übereinstimmung mit den Referenzdaten nicht erreicht, so wird ausgehend von der Startkonfiguration bei zumindest einem Basiselement BEI, BE2, ... und/oder bei zumindest einem Neuron die jeweils aktuelle Konfiguration modifiziert. D.h. es wird die in der jeweiligen Konfigurationszelle KONI, KON2, ... ge speicherte Konfiguration der jeweils zugehörigen LUT-Einheit LUT1, LUT2, ... verändert. Dabei kann beispielsweise für das jeweilige Neuron nur die funktionale Beschreibung oder nur die in der funktionalen Beschreibung einbezogene Gewichtung wl, w2, w3, ..., wn oder beides modifiziert werden. Die modifi zierte Konfiguration für die jeweilige LUT-Einheit LUT1,

LUT2, ... kann beispielsweise über eine speziell vorgegebene Schnittstelle der elektronischen, integrierten Schaltung SE bzw. des FPGAs SE (z.B. spezielle Schnittstelle eines Her stellers der Schaltung bzw. des FPGAs) eingespielt werden.

Wird die vorgebbare Toleranz erreicht/unterschritten bzw. die gewünschte Übereinstimmung zwischen Ausgabedaten des neurona len Netzes und den Referenzdaten erzielt, dann werden die je weils aktuellen Konfigurationen der LUT-Einheiten LUT1, LUT2, ... in den zugehörigen Konfigurationszellen KONI, KON2, ... fi xiert und die Trainingsphase beendet.

Bei einem durch das erfindungsgemäße Verfahren realisierten neuronalen Netz werden die jeweiligen Neuronen durch zumin dest ein jeweiliges Basiselement BEI, BE2 realisiert, wobei die Funktion des jeweiligen Neurons durch die jeweilige LUT- Einheit LUT1, LUT2, ... bestimmt wird. Der funktionale Inhalt der jeweiligen LUT-Einheit LUT1, LUT2, ... kann idealerweise über die zugehörige Konfigurationszelle KONI, KON2, ... vari iert werden. Die jeweilige Gewichtung wl, w2, w3, ..., wn des jeweiligen Neurons ist indirekt in der Funktion der jeweili gen LUT-Einheit LUT1, LUT2, ... abgebildet. Dadurch kann ein Verbrauch an Ressourcen der elektronischen, integrierten Schaltung bzw. des FPGAs SE erheblich reduziert und die Ver- arbeitungsgeschwindigkeit - insbesondere während der Trai ningsphase - gesteigert werden.