Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR CALCULATING A NEURON LAYER OF A MULTI-LAYER PERCEPTRON MODEL WITH SIMPLIFIED ACTIVATION FUNCTION
Document Type and Number:
WIPO Patent Application WO/2018/046415
Kind Code:
A1
Abstract:
The invention relates to a method for calculating a neuron layer of a multi-layer perceptron model, comprising a hardwired calculation core (11, 13, 14) formed in a hardware for calculating a fixedly preset computing algorithm in coupled functional blocks, wherein a neuron (20) of a neuron layer of the perceptron model is calculated using an activation function, wherein the activation function corresponds to a simplified sigmoid function and a simplified tanh function, the activation function being formed by zero-point mirroring of the negative definition range of the exponential function.

Inventors:
GUNTORO ANDRE (DE)
Application Number:
PCT/EP2017/072042
Publication Date:
March 15, 2018
Filing Date:
September 04, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BOSCH GMBH ROBERT (DE)
International Classes:
G06N3/063; F02P5/15; G05B13/04; G06F15/78; G06N3/04; G06N7/00
Other References:
EPPLER W ET AL: "High speed neural network chip for trigger purposes in high energy physics", DESIGN, AUTOMATION AND TEST IN EUROPE, 1998., PROCEEDINGS PARIS, FRANCE 23-26 FEB. 1998, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 23 February 1998 (1998-02-23), pages 108 - 115, XP010268412, ISBN: 978-0-8186-8359-6, DOI: 10.1109/DATE.1998.655844
RICHARD FIIFI TURKSON ET AL: "Artificial neural network applications in the calibration of spark-ignition engines: An overview", ENGINEERING SCIENCE AND TECHNOLOGY, AN INTERNATIONAL JOURNAL, vol. 19, no. 3, 16 April 2016 (2016-04-16), pages 1346 - 1359, XP055420859, ISSN: 2215-0986, DOI: 10.1016/j.jestch.2016.03.003
BASTERRETXEA K ET AL: "Approximation of sigmoid function and the derivative for hardware implementation of artificial neurons", IEE PROCEEDINGS: CIRCUITS DEVICES AND SYST, INSTITUTION OF ELECTRICAL ENGINEERS, STENVENAGE, GB, vol. 151, no. 1, 5 February 2004 (2004-02-05), pages 18 - 24, XP006021283, ISSN: 1350-2409, DOI: 10.1049/IP-CDS:20030607
CHE-WEI LIN ET AL: "A digital circuit design of hyperbolic tangent sigmoid function for neural networks", CIRCUITS AND SYSTEMS, 2008. ISCAS 2008. IEEE INTERNATIONAL SYMPOSIUM ON, IEEE, PISCATAWAY, NJ, USA, 18 May 2008 (2008-05-18), pages 856 - 859, XP031392108, ISBN: 978-1-4244-1683-7, DOI: 10.1109/ISCAS.2008.4541553
GOMAR SHAGHAYEGH ET AL: "Precise digital implementations of hyperbolic tanh and sigmoid function", 2016 50TH ASILOMAR CONFERENCE ON SIGNALS, SYSTEMS AND COMPUTERS, IEEE, 6 November 2016 (2016-11-06), pages 1586 - 1589, XP033072819, DOI: 10.1109/ACSSC.2016.7869646
Download PDF:
Claims:
Ansprüche

1 . Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit einem in Hardware ausgebildeten fest verdrahteten Rechenkern (1 1 , 13, 14) zur Berechnung eines fest vorgegebenen Rechenalgorithmus in gekoppelten Funktionsblöcken,

wobei ein Neuron (20) einer Neuronenschicht des Perzeptronenmodells mithilfe einer Aktivierungsfunktion berechnet wird, wobei die Aktivierungsfunktion eine vereinfachte Sigmoidfunktion und eine vereinfachte tanh-Funktion entspricht, wobei die Aktivierungsfunktion durch Null-Punkt-Spiegelung des negativen Definitionsbereichs der Exponentialfunktion gebildet wird.

2. Verfahren nach Anspruch 1 , wobei eine Neuronenschicht des Perzeptronenmodells mit einer Anzahl von Neuronen (20) abhängig von einer oder mehreren Eingangsgrößen eines Eingangsgrößenvektors, von einer Gewichtungsmatrix mit Gewichtungsfaktoren {vj k) und einen für jedes Neuron (20) vorgegebenen Offsetwert eine Ausgangsgröße für jedes Neuron (20) berechnet wird, wobei für jedes Neuron (20) eine Summe der mit einem durch das Neuron (20) und die Eingangsgröße bestimmten Gewichtungsfaktor {vj k) gewichteten Werte der Eingangsgrößen mit dem dem Neuron (20) vorgegebenen Offsetwert (Oo ... 0 6-i , p3[j]) beaufschlagt wird und das Ergebnis mit der Aktivierungsfunktion transformiert wird, um die Ausgangsgröße für das Neuron (20) zu erhalten.

3. Verfahren nach Anspruch 1 oder 2, wobei die vereinfachte Sigmoidfunktion oder die vereinfachte tanh-Funktion entsprechend einer Variablen als Aktivierungsfunktion ausgewählt werden.

4. Verfahren nach einem der Ansprüche 1 bis 3, wobei ein Funktionswert der vereinfachen Sigmoidfunktion für einen Wert berechnet wird, indem eine Exponentialfunktion basierend auf einem negativen Betrag des Werts berechnet wird, wobei der Funktionswert bei einem positiven Vorzeichen des Werts als eine Summe aus„1 " und dem Produkt aus„-0,5" und dem Resultat der Exponentialfunktion und bei einem negativem Vorzeichen als das Produkt aus„0,5" und dem Resultat der Exponentialfunktion berechnet wird.

Verfahren nach einem der Ansprüche 1 bis 3, wobei ein Funktionswert der vereinfachten tanh-Funktion für einen Wert berechnet wird, indem eine Exponentialfunktion basierend auf einem negativen Betrag des Werts berechnet wird, wobei der Funktionswert bei einem positiven Vorzeichen des Werts als eine Summe aus „1 " und dem negativen Resultat der Exponentialfunktion und bei einem negativen Vorzeichen des Werts als eine Summe aus„-1 " und dem Resultat der Exponentialfunktion berechnet wird.

Verfahren nach einem der Ansprüche 4 bis 5, wobei das Vorzeichen des Werts durch Auslesen eines Vorzeichenbits des Werts ermittelt wird oder als +1 für positive Werte und -1 für negative Werte ermittelt wird.

Modellberechnungseinheit (22) zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit einem in Hardware ausgebildeten fest verdrahteten Rechenkern (1 1 , 13, 14) zur Berechnung eines fest vorgegebenen Rechenalgorithmus in gekoppelten Funktionsblöcken, wobei der Rechenkern (1 1 , 13, 14) ausgebildet ist, um für eine Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit einer Anzahl von Neuronen (20) abhängig von einer oder mehreren Eingangsgrößen eines Eingangsgrößenvektors, von einer Gewichtungsmatrix mit Gewichtungsfaktoren {vj k) und einen für jedes Neuron (20) vorgegebenen Offsetwert (Oo ... 0 6-i , p3[j]) eine Ausgangsgröße für jedes Neuron (20) zu berechnen, wobei für jedes Neuron (20) eine Summe der mit einem durch das Neuron (20) und die Eingangsgröße bestimmten Gewichtungsfaktor gewichteten Werte der Eingangsgrößen und dem dem Neuron (20) vorgegebenen Offsetwert (Oo ... 0P6-i , p3[j]) berechnet wird und das Ergebnis mit einer Aktivierungsfunktion transformiert wird, um die Ausgangsgröße für das Neuron (20) zu erhalten, wobei die Aktivierungsfunktion eine vereinfachte Sigmoidfunktion oder eine vereinfachte tanh-Funktion umfasst, wobei die Aktivierungsfunktion durch Null- Punkt-Spiegelung des negativen Definitionsbereichs der Exponentialfunktion gebildet wird.

8. Modellberechnungseinheit (22) nach Anspruch 7, wobei der Rechenkern (1 1 , 13, 14) eine Zustandsmaschine (1 1 ) und einen oder mehrere Rechenoperationsblöcke (13, 14), insbesondere einem MAC-Block und einem Aktivierungsfunktions-Berechnungsblock, umfasst und insbesondere einen Speicher (12) zum Speichern der einen oder mehreren Eingangsgrößen des Eingangsgrößenvektors, der Gewichtungsmatrix, der für jedes Neuron (20) vorgegebenen Offsetwerten (Oo ... 0 6-i , p3[j]) und der Ausgangsgrößen für jedes Neuron (20) umfasst.

9. Modellberechnungseinheit (22) nach einem der Ansprüche 7 bis 8, wobei der Rechenkern (1 1 , 13, 14) in einem Flächenbereich eines integrierten Bausteins ausgebildet ist.

10. Steuergerät (2) mit einem Mikroprozessor (21 ) und einer oder mehreren Modellberechnungseinheiten (22) nach einem der Ansprüche 7 bis 9.

1 1 . Steuergerät (2) nach Anspruch 10, wobei das Steuergerät (2) als eine integrierte Schaltung ausgebildet ist.

12. Verwendung des Steuergeräts (2) nach Anspruch 10 oder 1 1 als ein Steuergerät (2) zur Steuerung eines Motorsystems (1 ) in einem Kraftfahrzeug.

Description:
Beschreibung Titel

Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen

Perzeptronenmodells mit vereinfachter Aktivierungsfunktion

Technisches Gebiet

Die Erfindung betrifft die Berechnung von Funktionsmodellen in einer separaten hartverdrahteten Modellberechnungseinheit, insbesondere zur Berechnung von mehrschichtigen Perzeptronenmodellen.

Technischer Hintergrund

Funktionen von Steuerungen von technischen Systemen, wie z.B. Verbrennungsmotoren, Elektroantrieben, Batteriespeicher und dergleichen, werden häufig mit Modellen realisiert, die ein mathematisches Abbild des realen Systems darstellen. Jedoch mangelt es bei physikalischen Modellen, insbesondere bei komplexen Zusammenhängen, an der erforderlichen Berechnungsgenauigkeit, und es ist bei heutigen Rechenkapazitäten in der Regel schwierig, derartige Modelle innerhalb der für ein Steuergerät geforderten Echtzeitanforderungen zu berechnen. Für solche Fälle ist angedacht, datenbasierte Modelle zu verwenden, die Zusammenhänge zwischen einer Ausgangsgröße und Eingangsgrößen ausschließlich auf der Basis von mit Hilfe eines Prüfstands oder dergleichen erhaltenen Trainingsdaten beschreiben. Insbesondere eignen sich datenbasierte Modelle zum Modellieren von komplexen Zusammenhängen, bei denen mehrere Eingangsgrößen, zwischen denen Wechselbeziehungen bestehen, in geeigneter Weise in dem Modell berücksichtigt werden. Zudem bietet die Modellierung mit Hilfe von datenbasierten Modellen die Möglichkeit, das Modell durch Hinzufügen von einzelnen Eingangsgrößen zu ergänzen.

Datenbasierte Funktionsmodelle basieren in der Regel auf einer großen Anzahl von Stützstellen, um eine für die jeweilige Anwendung ausreichende Modellierungsgenauigkeit zu erreichen. Aufgrund der hohen Anzahl der Stützstellen wird zur Berechnung eines Modellwertes mit einem datenbasierten Funktionsmodell, wie beispielsweise einem Gauß-Prozess-Modell oder einem mehrschichtigen Perzeptronenmodell, eine hohe Rechenkapazität benötigt. Um ein derartiges datenbasiertes Funktionsmodell in einer Steuergeräteanwendung in Echtzeit berechnen zu können, können daher auf einer Hardwareausgestaltung basierende Modellberechnungseinheiten vorgesehen sein.

Offenbarung der Erfindung

Erfindungsgemäß sind ein Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit einem in Hardware ausgebildeten fest verdrahteten Rechenkern zur Berechnung eines fest vorgegebenen Rechenalgorithmus in gekoppelten Funktionsblöcken gemäß Anspruch 1 sowie eine Modellberechnungseinheit, ein Steuergerät und eine Verwendung des Steuergeräts gemäß den nebengeordneten Ansprüchen vorgesehen.

Weitere Ausgestaltungen sind in den abhängigen Ansprüchen angegeben.

Gemäß einem ersten Aspekt ist ein Verfahren zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit einem in Hardware ausgebildeten fest verdrahteten Rechenkern zur Berechnung eines fest vorgegebenen Rechenalgorithmus in gekoppelten Funktionsblöcken vorgesehen, wobei ein Neuron einer Neuronenschicht des Perzeptronenmodells mithilfe einer Aktivierungsfunktion berechnet wird, wobei die Aktivierungsfunktion eine vereinfachte Sigmoidfunktion und/oder eine vereinfachte tanh-Funktion aufweist, wobei die vereinfachte Sigmoidfunktion und tanh-Funktion durch Null- Punkt-Spiegelung des negativen Definitionsbereichs einer Exponentialfunktion gebildet wird.

Eine Idee des obigen Verfahrens besteht darin, eine Berechnungsvorschrift zur Berechnung einer Vereinfachung der Sigmoidfunktion oder der tanh-Funktion als gesamte oder als Teil einer Aktivierungsfunktion in einer hardwarebasierten Berechnungseinheit zur Verfügung zu stellen. Die Berechnungsvorschrift soll insbesondere lediglich die Exponentialfunktion als spezielle Funktion nutzen und ansonsten nur Multiplikationen und Additionen verwenden, um eine zeit- und ressourcenaufwändige Berechnung einer Division zu vermeiden. Dies ermöglicht es ohne das Vorsehen zusätzlich Operationsblöcke eine zur Berechnung eines mehrschichtigen Perzeptronenmodells geeignete Hardware-Berechnungseinheit zu nutzen. Um dies zu erreichen kann die Sigmoidfunktion oder die tanh-Funktion unter Nutzung der Null-Punkt-Spiegelung des negativen Definitionsbereichs der Exponentialfunktion und unter Nutzung von einfach auszulesenden Vorzeichenbits des mit der Aktivierungsfunktion zu beaufschlagenden Werts berechnet werden.

Weiterhin kann eine Neuronenschicht des Perzeptronenmodells mit einer Anzahl von Neuronen abhängig von einer oder mehreren Eingangsgrößen eines Eingangsgrößenvektors, von einer Gewichtungsmatrix mit Gewichtungsfaktoren und einen für jedes Neuron vorgegebenen Offsetwert eine Ausgangsgröße für jedes Neuron berechnet werden, wobei für jedes Neuron eine Summe der mit einem durch das Neuron und die Eingangsgröße bestimmten Gewichtungsfaktor gewichteten Werte der Eingangsgrößen mit dem dem Neuron vorgegebenen Offsetwert beaufschlagt, insbesondere addiert, wird und das Ergebnis mit der Aktivierungsfunktion transformiert wird, um die Ausgangsgröße für das Neuron zu erhalten.

Es kann vorgesehen sein, die vereinfachte Sigmoidfunktion oder die vereinfachte tanh-Funktion entsprechend einer Variablen als Aktivierungsfunktion auszuwählen.

Es kann vorgesehen sein, dass ein Funktionswert der vereinfachten Sigmoidfunktion für einen Wert berechnet wird, indem eine Exponentialfunktion basierend auf einem negativen Betrag des Werts berechnet wird, wobei der Funktionswert bei einem positiven Vorzeichen des Werts als eine Summe aus„1 " und dem Produkt aus„-0,5" und dem Resultat der Exponentialfunktion und bei einem negativem Vorzeichen als das Produkt aus„0,5" und dem Resultat der Exponentialfunktion berechnet wird. Auf diese Weise wird das Resultat der Exponentialfunktion mit 0,5 multipliziert und mit dem Ergebnis einer Schrittfunktion beaufschlagt

Alternativ kann ein Funktionswert der vereinfachten tanh-Funktion für einen Wert berechnet werden, indem eine Exponentialfunktion basierend auf einem negativen Betrag des Werts berechnet wird, wobei der Funktionswert bei einem positiven Vorzeichen des Werts als eine Summe aus „1 " und dem negativen Resultat der Exponentialfunktion und bei einem negativen Vorzeichen des Werts als eine Summe aus„-1 " und dem Resultat der Exponentialfunktion berechnet wird. Auf diese Weise wird die vereinfachte tanh-Funktion durch Null-Punkt- Spiegelung des negativen Definitionsbereichs der Exponentialfunktion und anschließender Beaufschlagung mit einer Vorzeichenfunktion definiert.

Gemäß einem weiteren Aspekt ist eine Modellberechnungseinheit zur Berechnung einer Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit einem in Hardware ausgebildeten fest verdrahteten Rechenkern zur Berechnung eines fest vorgegebenen Rechenalgorithmus in gekoppelten Funktionsblöcken vorgesehen, wobei der Rechenkern ausgebildet ist, um für eine Neuronenschicht eines mehrschichtigen Perzeptronenmodells mit einer Anzahl von Neuronen abhängig von einer oder mehreren Eingangsgrößen eines Eingangsgrößenvektors, von einer Gewichtungsmatrix mit Gewichtungsfaktoren und einen für jedes Neuron vorgegebenen Offsetwert eine Ausgangsgröße für jedes Neuron zu berechnen, wobei für jedes Neuron eine Summe der mit einem durch das Neuron und die Eingangsgröße bestimmten Gewichtungsfaktor gewichteten Werte der Eingangsgrößen und dem dem Neuron vorgegebenen Offsetwert berechnet wird und das Ergebnis mit einer Aktivierungsfunktion transformiert wird, um die Ausgangsgröße für das Neuron zu erhalten, wobei die Aktivierungsfunktion eine vereinfachte Sigmoidfunktion oder eine vereinfachte tanh-Funktion aufweist und unter Nutzung einer Null-Punkt-Spiegelung des negativen Definitionsbereichs der Exponentialfunktion beaufschlagt um das Ergebnis einer Schritt- oder Vorzeichenfunktion berechnet wird.

Weiterhin kann der Rechenkern eine Zustandsmaschine, einen Speicher zum Speichern der einen oder mehreren Eingangsgrößen des Eingangsgrößenvektors, der Gewichtungsmatrix, der für jedes Neuron vorgegebenen Offsetwerten und der Ausgangsgrößen für jedes Neuron, einen oder mehrere Rechenoperationsblöcke, insbesondere einem MAC-Block und einem Aktivierungsfunktions-Berechnungsblock, umfassen.

Weiterhin kann der Rechenkern in einem Flächenbereich eines integrierten Bausteins ausgebildet sein.

Gemäß einem weiteren Aspekt ist ein Steuergerät mit einem Mikroprozessor und der obigen Modellberechnungseinheit vorgesehen. Insbesondere kann das Steuergerät als eine integrierte Schaltung ausgebildet sein.

Gemäß einem weiteren Aspekt ist eine Verwendung des obigen Steuergeräts als ein Steuergerät zur Steuerung eines Motorsystems in einem Kraftfahrzeug vorgesehen.

Kurzbeschreibung der Zeichnungen

Ausführungsformen werden nachfolgend anhand der beigefügten Zeichnungen näher erläutert. Es zeigen:

Figur 1 eine schematische Darstellung eines Steuergeräts zum

Einsatz für ein Motorsystem in einem Kraftfahrzeugs;

Figur 2 eine schematische Darstellung einer

Modellberechnungseinheit als Teil des Steuergeräts;

Figur 3 eine schematische Darstellung einer Neuronenschicht eines

MLP-Modells; „

Darstellungen von möglichen Aktivierungsfunktionen; eine Veranschaulichung des Rechenablaufs zur Berechnung der vereinfachten Sigmoidfunktion; eine grafische Darstellung der einzelnen Funktionskomponenten zur Berechnung der vereinfachten Sigmoidfunktion; eine Veranschaulichung des Rechenablaufs zur Berechnung der vereinfachten tanh-Funktion; und eine grafische Darstellung der einzelnen Funktionskomponenten zur Berechnung der vereinfachten tanh-Funktion.

Beschreibung von Ausführungsformen

Figur 1 zeigt beispielhaft eine schematische Darstellung eines Steuergeräts 2 für ein Motorsystem 1 mit einem Verbrennungsmotor 3 als ein zu steuerndes technisches System. Das Steuergerät 2 umfasst einen Mikroprozessor 21 und eine Modellberechnungseinheit 22, die als separate Bauteile oder in integrierter Weise in separaten Flächenbereichen auf einem Chip ausgebildet sein können. Insbesondere stellt die Modellberechnungseinheit 22 eine Hardwareschaltung dar, die strukturell von einem Rechenkern des Mikroprozessors 21 getrennt sein kann.

Die Modellberechnungseinheit 22 ist im Wesentlichen hartverdrahtet und dementsprechend nicht wie der Mikroprozessor 21 dazu ausgebildet, einen Softwarecode auszuführen und dadurch eine variable durch Software vorgegebene Funktion auszuführen. Mit anderen Worten ist in der Modellberechnungseinheit 22 kein Prozessor vorgesehen, so dass diese nicht durch einen Softwarecode betreibbar ist. Durch die Fokussierung auf eine vorgegebene Modellfunktion wird eine ressourcenoptimierte Realisierung einer solchen Modellberechnungseinheit 22 ermöglicht. In integrierter Aufbauweise kann die Modellberechnungseinheit 22 flächenoptimiert realisiert werden, die zudem schnelle Berechnungen ermöglicht.

Das Steuergerät 2 dient im Wesentlichen dazu, Sensorsignale S bzw. Sensorgrößen, die von einer Sensorik in dem Verbrennungsmotor 3 erfasst werden, und/oder externe Vorgaben V zu verarbeiten und zyklisch in fest vorgegebenen Zeitabständen, d.h. periodisch innerhalb einer Zykluszeit von beispielsweise zwischen 1 ms und 100ms Werte, oder winkelsynchron (synchron zur Stellung einer Kurbelwelle) in Abhängigkeit zu einem Kurbelwellenwinkel eines betriebenen Verbrennungsmotors von einer oder mehreren entsprechenden Ansteuergrößen A an den Verbrennungsmotor 3 anzulegen, so dass dieser in an sich bekannter Weise betreibbar ist.

In Figur 2 ist eine Modellberechnungseinheit 22 ausführlicher dargestellt. Die Modellberechnungseinheit 22 umfasst eine Zustandsmaschine 1 1 , einen Speicher 12 und einen oder mehrere Operationsblöcke, die beispielsweise einen oder mehrere MAC-Blöcke 13 (MAC: Multiply-ACcumulate, für Festkomma- oder Gleitkomma-Berechnung) und einen Aktivierungsfunktion-Berechnungsblock 14 zur Berechnung einer Aktivierungsfunktion. Die Zustandsmaschine 1 1 und der eine oder die mehreren Operationsblöcke 13, 14 bilden einen Rechenkern ALU der Modellberechnungseinheit 22. Die Operationsblöcke können zusätzlich oder alternativ zu dem MAC-Block einen Multiplizierblock und einen Additionsblock umfassen.

Mit Hilfe der Zustandsmaschine 1 1 können in einem Eingangsgrößenspeicherbereich dem Speicher 12 abgelegte Werte von Eingangsgrößen durch wiederholte Schleifenberechnungen verrechnet werden, um Zwischengrößen bzw. Ausgangsgrößen zu erhalten, die in einen entsprechenden Ausgangsgrößenspeicherbereich des Speichers 12 geschrieben werden.

Die Zustandsmaschine 1 1 ist so ausgelegt, um eine einzelne Neuronenschicht eines mehrschichtigen Perzeptronenmodells zu berechnen. Die Zustandsmaschine 1 1 kann anhand des nachfolgenden Pseudocodes beschrieben werden:

/* Eingangstransformation */

for (k=0; k<p7; k++) {

ut[k] = u[k] * pl[k] + p2[k];

}

/* Schleifenberechnung */

for (j=p8; j<p6; j++) {

i = j * p7;

t = p3[j];

for (k=0; k<p7; k++) {

t += V[i+k] * ut[k];

}

switch (cfg_activation_function) {

case 1:

e = (t>=0.0f) ? t : 0.0f; // Knickfunktion

break;

case 2: // Sigmoid-Funktion

e = sigmoid(t);

break;

case 3: // tanh-Funktion

e = tanh(t);

break;

default: // lineare Funktion

e = t;

}

y[j] = e;

}

/* Ausgangstransformation */

for (k=0; k<p6; k++) {

z[k] = y[k] * p4[k] + P 5[k];

}

Mit

p7: Anzahl der Eingangsgrößen des Eingangsgrößenvektors als

Indexwert

p8: minimaler Indexwert bzw. vorgegebener Startindex für die Anzahl der Neuronen

p6: Anzahl der Neuronen als Indexwert

p3: Offsetwert

p1 , p2: Variablen für die Eingangstransformation

p4, p5: Variablen für die Ausgangstransformation

Mit Hilfe des obigen Pseudocodes lässt sich folgende Berechnung für jedes Neuron der zu berechnenden Neuronenschicht durchführen: y\j] = act(p3[j] + * Mt M) für j=0...p6-1

Dieses stellt eine Berechnung für eine Neuronenschicht eines mehrschichtigen Perzeptronenmodells dar, wie es in Figur 3 dargestellt ist.

Figur 3 zeigt eine Neuronenschicht von mehreren Neuronen 20, denen Werte von Eingangsgrößen eines Eingangsgrößenvektors uto ... ut P 6-i zugeführt werden. Die Werte der Eingangsgrößen werden mit Hilfe einer entsprechenden vorgegebenen Gewichtungsmatrix aus Gewichtungsfaktoren vo... 7-i,o... P 6-i gewichtet. Die Gewichtung erfolgt in der Regel durch multiplikatives Beaufschlagen mit den zugeordneten Gewichtungsfaktoren vo... 7-i,o...p6-i . kann jedoch auch in anderer Weise die Werte des Eingangsgrößenvektors beaufschlagen.

Das Ergebnis der Summe der gewichteten Werte des Eingangsgrößenvektors uto ... ut P 6-i wird mit einem Offsetwert Oo ... 0 6-i beaufschlagt, insbesondere additiv beaufschlagt. Das Ergebnis wird mit einer vorgegebenen Aktivierungsfunktion „act" transformiert. Als Ergebnis erhält man einen entsprechenden Wert eines Ausgangsgrößenvektors yo ... y 6-i . Durch das Vorsehen des Offsetwerts Oo ... 0 P 6-i für jedes Neuron 20 besteht ein weiterer Freiheitsgrad für die Modellbildung.

Durch Festlegen der Laufvariablen p6 kann die Anzahl der Neuronen 20 der zu berechnenden Neuronenschicht eingestellt werden. Ein mehrschichtiges Perzeptronenmodell kann durch Verwenden der Werte des Ausgangsgrößenvektors yo ... y 6-i einer Neuronenschicht als Eingangsgrößenvektor für eine Berechnung einer nachfolgenden Neuronenschicht in der Modellberechnungseinheit 22 verwendet werden, so dass die Anzahl der Neuronenschichten des mehrschichtigen Perzeptronenmodells durch wiederholtes Aufrufen der Funktion gemäß dem obigen Pseudocode bzw. durch wiederholtes Aufrufen der Modellberechnungseinheit 22 realisiert werden kann.

Es kann eine Eingangs- und/oder Ausgangstransformation der Eingangsgrößen des Eingangsgrößenvektors bzw. der Ausgangsgrößen des Ausgangsgrößenvektors mithilfe der für jedes Neuron 20 vorgegebenen Normierungsvariablen p1 und p2 bzw. p4 und p5 vorgenommen werden.

Die schichtweise Berechnung des MLP-Modells ermöglicht eine schlanke Ausgestaltung der Modellberechnungseinheit 22, so dass deren Flächenbedarf in integrierter Bauweise gering ist. Trotzdem ermöglicht die Modellberechnungseinheit 22 eine Berechnung eines mehrschichtigen Perzeptronenmodells in einfacher Weise durch Rückführung oder Umdefinition der Werte der Ausgangsgrößen des Ausgangsgrößenvektors als Eingangsgrößen eines Eingangsgrößenvektors für die Berechnung einer weiteren Neuronenschicht.

Als Aktivierungsfunktion„act" kann eine von mehreren Aktivierungsfunktionen zur Verfügung gestellt werden, die durch den Aktivierungsfunktion-Berechnungsblock 14 der Modellberechnungseinheit 22 berechnet werden kann. Als Aktivierungsfunktionen können beispielsweise eine Knickfunktion, eine Tangens- Hyberbolicus-Funktion, eine Sigmoidfunktion oder eine lineare Funktion verwendet werden, wie sie in den Figuren 4a bis 4d entsprechend dargestellt sind. Mit cfg_activation_function=0...3 kann die Art der oben beschriebenen Aktivierungsfunktionen ausgewählt werden.

Die Berechnung einer Sigmoidfunktion für das Perzeptronenmodell kann beispielsweise durch den Variablenwert cfg_activation_function=2 angezeigt werden. Die Sigmoidfunktion ist definiert als

1

y = 1 + exp(— x)

Eine solche Berechnung führt aufgrund der enthaltenen Exponentialfunktion und der Division zu einem erheblichen Berechnungsaufwand, insbesondere da dieser in einer Schleifenberechnung vielfach stattfindet. Um die Division zu vermeiden, kann bei der Berechnung einer vereinfachten Sigmoidfunktion der negative Bereich der Exponentialfunktion gespiegelt werden, um einen vollständigen Lösungsbereich für die Sigmoidfunktion bereitzustellen. Dies ermöglicht es, auf die Division zu verzichten und lediglich die Exponentialfunktion für negative Funktionswerte zu verwenden. Durch diese Näherung der Sigmoidfunktion ist es möglich, die Berechnung in einfacher Weise auszuführen.

Die vereinfachte Sigmoidfunktion kann beispielsweise durch folgenden Pseudocode ausgeführt werden. In diesem Pseudocode ist vorgesehen, dass ein Vorzeichen des Eingangswerts x, auf den die Sigmoidfunktion angewendet werden soll, ermittelt wird. Dies stellt eine einfache Operation dar, und im Gleitkommaformat kann das Vorzeichenbit hierfür verwendet werden. if (cfg_activation_function==2)

{

yl = exp(-|x|*log(2));

y2 = -sgn(x)*yl;

y3 = sgn(x)<0 ? 0 : 1;

e = y3 + 0.5*y2;

} wobei sgn(x)=-1 für x<0 und sgn(x)=+1 für x>0. Insbesondere entspricht bei einer Floating-Point-Darstellung (MSB=Vorzeichenbit, dann Exponentenbits und Mantissenbits) ein Vorzeichenbit von 0 einem positiven Wert und 1 einem negativen Wert, so dass dieses Vorzeichenbit direkt als y3 bzw. als Steuerbit für den Multiplexer benutzt (siehe Fig. 5) werden kann.

Der Rechenablauf ist grafisch in Figur 5 veranschaulicht.

Um nur den Funktionswertebereich der Exponentialfunktion für negative Argumente zu verwenden, wird ein Betrag des Arguments der Exponentialfunktion gebildet und dieser anschließend negiert.

Als Nächstes wird das Vorzeichen des Eingangswertes invers auf das Ergebnis der Exponentialfunktion angewendet, um die Null-Punkt-Spiegelung zu vervollständigen. Am einfachsten kann dies durchgeführt werden, in dem das Vorzeichen s des Eingangswertes x (0 für x>0 und 1 für x<0) und das Vorzeichen des Ergebnisses der Exponentialfunktion bitweise durch exklusiv-ODER- Operation berechnet wird. Da das Ergebnis der Exponentialfunktion immer positiv ist bzw. ihres Vorzeichen immer 0 ist, kann diese Operation durch einfache Negation des Vorzeichen s durchgeführt werden. Das Ergebnis der Null-Punkt-Spiegelung wird mit einem konstanten Wert von 0,5 multipliziert und anschließend mit der Schrittfunktion (0 wenn negativ, ansonsten 1 ) beaufschlagt.

Alternativ kann die Vorzeichenmanipulation des Ergebnisses der Exponentialfunktion durch Vorgeben eines von der Vorzeicheninformation s des Eingangswertes abhängigen Faktors von -0,5 bzw. +0,5 ersetzt werden, so dass auf die Vorzeichenänderung des Ergebnisses der Exponentialfunktion verzichtet werden kann. Das Ergebnis der Exponentialfunktion wird dann mit dem Faktor multipliziert und anschließend mit der Schrittfunktion aufaddiert.

Alternativ kann die Vorzeichenmanipulation durch Operationsauswahl des MAC- Blocks ersetzt werden, in dem abhängig von Vorzeichen s, eine Addition (a + b * c) oder eine Subtraktion (a - b * c) durchgeführt wird.

In dem obigen Pseudocode wird zu Beginn der Eingangswert x mit einem konstanten Wert von log(2) multipliziert. Die Konstante log(2) kann in die Eingangswerte während der Modell-Trainingsphase integriert werden, um die Sigmoidfunktion in einfacher Weise möglichst zum gleichen Ausgangswert zu bringen wie die originale Sigmoidfunktion. Damit kann die Multiplikation mit der Konstante log(2) entfallen. Alternativ kann die Multiplikation mit Konstante log(2) beibehalten werden, um die Skalierung während der Modell-Trainingsphase zu vermeiden.

In Figur 6 sind die einzelnen Komponenten zur Berechnung der vereinfachten Sigmoidfunktion graphisch dargestellt, wobei e der Funktion g(x) entspricht. Man erkennt die Näherung der Sigmoidfunktion gemäß dem obigen Pseudocode an dem tatsächlichen Verlauf der Sigmoidfunktion. Es wurde festgestellt, dass bei Verwendung der beschleunigten Berechnung der Sigmoidfunktion für ein Perzeptronenmodell keine feststellbaren Ungenauigkeiten des Perzeptronenmodells hervorrufen.

Das Perzeptronenmodell kann auch mit einer tanh-Funktion im Fall von cfg_activation_function=3 beispielsweise berechnet werden. Die tanh-Funktion entspricht mathematisch

2

^ 1 + exp(2x)

In vergleichbarer Weise kann eine vereinfachte tanh-Funktion entsprechend nachfolgendem Pseudocode berechnet werden. if (cfg_mlp==3)

{

yl = exp(-|x|/log(2));

y2 = -sgn(x)*yl;

y3 = sgn(x);

e = y3 + y2;

}

Auch diese Funktion wird in ähnlicher Weise wie die obige vereinfachte Sigmoidfunktion berechnet, wobei der Multiplikationsfaktor der abschließenden Multiplikations- und Additionsfunktion statt„0,5"„1 " beträgt. Der Rechenablauf ist grafisch in Figur 7 veranschaulicht.

In diesem Fall kann man den MAC-Block durch einen reinen Additionsblock ersetzen. Alternativ, kann man, ähnlich wie bei der zuvor beschriebenen Sigmoidfunktion, auf die Zuweisung des Vorzeichens verzichten, und für die Multiplikation -1 und +1 verwenden oder auch durch eine Operationsauswahl des MAC-Blocks ersetzen.

Der Verlauf der tanh-Funktion sowie der im Pseudocode angegebenen Funktionskomponenten und der vereinfachten tanh-Funktion sind in Fig. 8 dargestellt, wobei e der Funktion g(x) entspricht.

In dem obigen Pseudocode wird zu Beginn der Eingangswert x mit einem konstanten Wert von 1/log(2) multipliziert. Die Konstante 1/log(2) kann für die Eingangswerte während der Modell-Trainingsphase integriert werden, um die tanh-funktion in einfacher Weise möglichst zum gleichen Ausgangswert zu bringen wie die originale tanh-funktion. Damit ist die Multiplikation mit der Konstante 1/log(2) nicht mehr nötig. Alternativ kann die Multiplikation mit Konstante 1/log(2) beibehalten werden, um eine Skalierung während der Modell- Trainingsphase zu vermeiden. Die Verwendung der angenäherten Aktivierungsfunktion ist für die Verwendung in Perzeptronenmodellen möglich, ohne die Modellierungsgenauigkeit zu beeinträchtigen. Weiterhin stellt die oben beschriebene Berechnung der Aktivierungsfunktion eine erhebliche Beschleunigung gegenüber der sonst üblichen Berechnung der Funktionswerte der Sigmoid- oder tanh-Funktionen dar. Dies gelingt insbesondere dadurch, dass eine aufwändige Division vermieden werden kann.