-
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:
-
1 eine schematische Darstellung eines Steuergeräts zum Einsatz für ein Motorsystem in einem Kraftfahrzeugs;
-
2 eine schematische Darstellung einer Modellberechnungseinheit als Teil des Steuergeräts;
-
3 eine schematische Darstellung einer Neuronenschicht eines MLP-Modells;
-
4a–4d Darstellungen von möglichen Aktivierungsfunktionen;
-
5 eine Veranschaulichung des Rechenablaufs zur Berechnung der vereinfachten Sigmoidfunktion;
-
6 eine grafische Darstellung der einzelnen Funktionskomponenten zur Berechnung der vereinfachten Sigmoidfunktion;
-
7 eine Veranschaulichung des Rechenablaufs zur Berechnung der vereinfachten tanh-Funktion; und
-
8 eine grafische Darstellung der einzelnen Funktionskomponenten zur Berechnung der vereinfachten tanh-Funktion.
-
Beschreibung von Ausführungsformen
-
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 1ms 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 2 ist eine Modellberechnungseinheit 22 ausführlicher dargestellt. Die Modellberechnungseinheit 22 umfasst eine Zustandsmaschine 11, 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 11 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 11 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
11 ist so ausgelegt, um eine einzelne Neuronenschicht eines mehrschichtigen Perzeptronenmodells zu berechnen. Die Zustandsmaschine
11 kann anhand des nachfolgenden Pseudocodes beschrieben werden:
-
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] + ∑ p7-1 / k=0vj,k·ut[k]) für j = 0...p6 – 1
-
Dieses stellt eine Berechnung für eine Neuronenschicht eines mehrschichtigen Perzeptronenmodells dar, wie es in 3 dargestellt ist.
-
3 zeigt eine Neuronenschicht von mehreren Neuronen 20, denen Werte von Eingangsgrößen eines Eingangsgrößenvektors ut0...utp6-1 zugeführt werden. Die Werte der Eingangsgrößen werden mit Hilfe einer entsprechenden vorgegebenen Gewichtungsmatrix aus Gewichtungsfaktoren v0...p7-1,0...p6-1 gewichtet. Die Gewichtung erfolgt in der Regel durch multiplikatives Beaufschlagen mit den zugeordneten Gewichtungsfaktoren v0...p7-1,0...p6-1, kann jedoch auch in anderer Weise die Werte des Eingangsgrößenvektors beaufschlagen.
-
Das Ergebnis der Summe der gewichteten Werte des Eingangsgrößenvektors ut0...utp6-1 wird mit einem Offsetwert O0...Op6-1 beaufschlagt, insbesondere additiv beaufschlagt. Das Ergebnis wird mit einer vorgegebenen Aktivierungsfunktion „act“ transformiert. Als Ergebnis erhält man einen entsprechenden Wert eines Ausgangsgrößenvektors y0...yp6-1. Durch das Vorsehen des Offsetwerts O0...Op6-1 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 y0...yp6-1 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 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 y = 1 / 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.
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
5) werden kann.
-
Der Rechenablauf ist grafisch in 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 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 y = 1 – 2 / 1 + exp(2x)
-
In vergleichbarer Weise kann eine vereinfachte tanh-Funktion entsprechend nachfolgendem Pseudocode berechnet werden.
-
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 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 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.