-
Die Erfindung betrifft ein künstliches neuronales Netz.
-
Künstliche neuronale Netze, auch künstliche neuronale Netzwerke, kurz: KNN (englisch: ANN - artificial neural network), sind Netze aus künstlichen Neuronen. Diese Neuronen (auch Knotenpunkte) eines künstlichen neuronalen Netzes sind in Schichten angeordnet und in der Regel in einer festen Hierarchie miteinander verbunden. Die Neuronen sind dabei zumeist zwischen zwei Schichten verbunden, in selteneren Fällen aber auch innerhalb einer Schicht.
-
Dabei bietet die Verwendung eines trainierten künstlichen neuronalen Netzes den Vorteil, von seiner Lernfähigkeit, seiner Parallelität, seiner Fehlertoleranz und seiner Robustheit gegenüber Störungen zu profitieren.
-
So können künstliche neuronale Netze, wie z.B. rekurrente neuronale Netze, Vorhersagen mit hoher Genauigkeit treffen. Als rekurrente neuronale Netze (RNN - recurrent neural network) werden künstliche neuronale Netze bezeichnet, die sich im Gegensatz zu Vorwärts-Netzen (englisch: feedforward neuronal network) durch Verbindungen von Neuronen einer Schicht zu Neuronen derselben oder einer vorangegangenen Schicht auszeichnen.
-
Mit derartigen mehrschichtigen rekurrenten neuronalen Netzen kann die Genauigkeit weiter gesteigert werden, wenn genügend Daten zur Verfügung stehen. Allerdings erfordern insbesondere während des Trainings derartige künstliche neuronale Netze besonders hohe Rechenleistungen und weisen Probleme mit einem verschwindenden Gradienten auf.
-
Es besteht also Bedarf daran, Wege aufzuzeigen, wie der Bedarf an hoher Rechenleistung reduziert werden kann.
-
Die Aufgabe der Erfindung wird gelöst durch ein künstliches neuronales Netz mit einer Eingangsschicht, einer ersten Zwischenschicht und zumindest einer weiteren Zwischenschicht sowie einer Ausgangsschicht, wobei die Eingangsschicht eine Mehrzahl von Neuronen, die erste Zwischenschicht eine erste Anzahl an Neuronen und die weitere Zwischenschicht eine weitere Anzahl an Neuronen aufweist, wobei die erste Anzahl größer als die weitere Anzahl ist.
-
Wenn das künstliche neuronale Netz zwei Zwischenschichten aufweist ist die erste Zwischenschicht die Schicht, die sich direkt an die erste Zwischenschicht in Richtung zu der Ausgangsschicht anschließt. Es folgt dann als zweite die weitere Zwischenschicht, an die sich die Ausgangsschicht anschließt. Mit anderen Worten, die erste Zwischenschicht ist unmittelbar benachbart zu der Eingangsschicht und die weitere Zwischenschicht ist unmittelbar benachbart zu der Ausgangsschicht angeordnet. Wenn hingegen das künstliche neuronale Netz mehr als zwei Zwischenschichten aufweist kann die erste Zwischenschicht eine beliebige Zwischenschicht sein bis auf die letzte Zwischenschicht vor der Ausgangsschicht. Die weitere Zwischenschicht kann sich in Richtung zu der Ausgangsschicht unmittelbar oder auch mittelbar, d.h. unter Zwischenschaltung weiterer Zwischenschichten, anschließen. Ferner kann die weitere Zwischenschicht auch die letzte Zwischenschicht vor der Ausgangsschicht sein.
-
So wird ein künstliches neuronales Netz mit einer ungleichmäßigen Verteilung von Neuronen bereitgestellt, das im Vergleich zu einem künstlichen neuronalen Netz mit einer gleichmäßigen Verteilung der Neuronen eine verringerte Anzahl von Neuronen aufweist. Dies reduziert den Bedarf an Rechenleistung, insbesondere während des Trainings des künstlichen neuronalen Netzes.
-
Gemäß einer Ausführungsform ist das künstliche neuronale Netz ein rekurrentes neuronales Netz. Als rekurrente neuronale Netze (RNN - recurrent neural network) werden künstliche neuronale Netze bezeichnet, die sich im Gegensatz zu Vorwärts-Netzen (englisch: feedforward neuronal network) durch Verbindungen von Neuronen einer Schicht zu Neuronen derselben oder einer vorangegangenen Schicht auszeichnen. So können in einer Zwischenschicht, die weniger Neuronen als vorherige die Zwischenschicht aufweist, Informationen von einem Neuron in dieser Zwischenschicht zu einem weiteren Neuron in ebenfalls dieser Zwischenschicht übertragen werden. So wird einem Informationsverlust entgegengewirkt.
-
Gemäß einer weiteren Ausführungsform hat das künstliche neuronale Netz ein langes Kurzzeitgedächtnis (LSTM). So können die Trainingsergebnisse verbessert werden. Bei einem künstlichen neuronalen Netz mit einem derartigen langen Kurzzeitgedächtnis ist jedes Neuron des künstlichen neuronalen Netzes als LSTM-Zelle mit einem Eingang-Logikgatter, einem Vergessen-Logikgatter und einem Ausgangs-Logikgatter ausgebildet. Diese Logikgatter speichern Werte über Zeitintervalle und steuern den Informationsfluss, der aus Sequenzen besteht.
-
Gemäß einer weiteren Ausführungsform weist die Ausgangsschicht eine Mehrzahl von Neuronen auf. Da bereits die Eingangsschicht eine Mehrzahl von Neuronen aufweist kann das künstliche neuronale Netz auch als Mehrgrößen-Mehrgrößen System mit einer many-to-many-architecture aufgefasst werden. So kann mit dem künstlichen neuronalen Netz ein Mehrgrößen-Ausgangssignal bzw. ein mehrdimensionales Ausgangssignal bereitgestellt werden.
-
Gemäß einer weiteren Ausführungsform weist die Ausgangsschicht ein Neuron auf. Somit kann das künstliche neuronale Netz auch als Mehrgrößen-Einzelgrößen System mit einer many-to-single-architecture aufgefasst werden. So kann mit dem künstlichen neuronalen Netz ein Eingrößen-Ausgangssignal bzw. ein eindimensionales Ausgangssignal bereitgestellt werden.
-
Gemäß einer weiteren Ausführungsform ist zumindest ein Neuron der ersten Zwischenschicht direkt mit zumindest einem Neuron der Ausgangsschicht verbunden. Somit werden Informationen direkt unter Umgehung weitere Zwischenschichten zu der Ausgangsschicht übertragen ohne dass es zu einem Informationsverlust kommt.
-
Gemäß einer weiteren Ausführungsform nimmt die Anzahl der Neuronen von der ersten Zwischenschicht zu einer weiteren Zwischenschicht und von der weiteren Zwischenschicht zu einer weiteren Zwischenschicht mit einer im Wesentlichen gleichen Rate ab. Dabei wird unter einer im wesentlichen Gleiche Rate eine rate verstanden, deren Wert eine Ganzzahl ist und deren Wert gegebenenfalls durch Aufrunden und/oder Abrunden bestimmt wird. Mit anderen Worten, das künstliche neuronale Netz verjüngt sich in gleichmäßiger Art und Weise zu der Ausgangsschicht hin. So kann die Anzahl der Neuronen und damit der Rechenaufwand insbesondere beim Trainieren besonders gering gehalten werden bei gleichzeitig unveränderter Leistungsfähigkeit des künstlichen neuronalen Netzes.
-
Ferner gehören zur Erfindung ein Computerprogrammprodukt für ein derartiges künstliches neuronales Netz, ein Steuergerät mit einem derartigen künstlichen neuronalen Netz und ein Kraftfahrzeug mit einem derartigen Steuergerät.
-
Es wird nun die Erfindung anhand einer Zeichnung erläutert. Es zeigen:
- 1 in schematischer Darstellung ein erstes Ausführungsbeispiel eines künstlichen neuronalen Netzes.
- 2 in schematischer Darstellung ein weiteres Ausführungsbeispiel eines künstlichen neuronalen Netzes.
- 3 in schematischer Darstellung ein weiteres Ausführungsbeispiel eines künstlichen neuronalen Netzes.
- 4 in schematischer Darstellung ein weiteres Ausführungsbeispiel eines künstlichen neuronalen Netzes.
- 5 in schematischer Darstellung einen Verfahrensablauf zum Entwurf der in den 1 bis 4 gezeigten künstlichen neuronalen Netze.
- 6 in schematischer Darstellung einen Verfahrensablauf zum Trainieren der in den 1 bis 4 gezeigten künstlichen neuronalen Netze.
- 7 in schematischer Darstellung Komponenten eines Steuergerätes eines Kraftfahrzeugs.
-
Es wird zunächst auf 1 Bezug genommen.
-
Dargestellt ist ein künstliches neuronales Netz 2 mit im vorliegenden Ausführungsbeispiel einer Eingangsschicht 4, einer ersten Zwischenschicht 6a, einer zweiten Zwischenschicht 6b und einer Ausgangsschicht 8.
-
Dabei kann das künstliche neuronale Netz 2 durch Hard- und/oder Software-Komponenten gebildet sein.
-
In dem in 1 gezeigten Ausführungsbeispiel weist die Eingangsschicht 4 fünf, die erste Zwischenschicht 6a ebenfalls fünf, die zweite Zwischenschicht 6b drei und die Ausgangsschicht 8 fünf Neuronen auf.
-
Somit ist das künstliche neuronale Netz 2 als Mehrgrößen-Mehrgrößen System mit einer many-to-many-architecture ausgebildet.
-
Dabei sind alle Neuronen des künstlichen neuronalen Netzes 2 im vorliegenden Ausführungsbeispiel als LSTM-Zellen mit jeweils einem Eingang-Logikgatter, einem Vergessen-Logikgatter und einem Ausgangs-Logikgatter ausgebildet.
-
Ferner ist das künstliche neuronale Netz 2 im vorliegenden Ausführungsbeispiel als rekurrentes neuronales Netz (RNN - recurrent neural network) ausgebildet und weist daher Verbindungen von Neuronen einer Schicht zu Neuronen derselben Schicht oder zu Neuronen einer vorangegangenen Schicht auf.
-
Nachdem das künstliche neuronale Netz 2 einem Training unterzogen wurde wird im Betrieb die Eingangsschicht 4 mit Eingangsdaten tm zu den Zeitpunkten t1, t2, t3, ... tk beaufschlagt und stellt Ausgangsdaten a bereit.
-
Es wird nun zusätzlich auf 2 Bezug genommen.
-
Dargestellt ist ein weiteres Ausführungsbeispiel, dass sich von dem in 1 gezeigten Ausführungsbeispiel dadurch unterscheidet, dass zwischen der Eingangsschicht 4 und der Ausgangsschicht 8 drei Zwischenschichten 6a, 6b, 6c vorgesehen sind.
-
Dabei weisen in dem in 2 gezeigten Ausführungsbeispiel die Eingangsschicht 4 sieben, die erste Zwischenschicht 6a ebenfalls sieben, die zweite Zwischenschicht 6b vier, die dritte Zwischenschicht 6c drei, die vierte Zwischenschicht 6d zwei und die Ausgangsschicht 8 sieben Neuronen auf.
-
Es wird nun zusätzlich auf 3 Bezug genommen.
-
Dargestellt ist ein weiteres Ausführungsbeispiel, dass sich von dem in 1 gezeigten Ausführungsbeispiel dadurch unterscheidet, dass die Eingangsschicht 4 sieben, die erste Zwischenschicht 6a ebenfalls sieben, die zweite Zwischenschicht 6b drei, die dritte Zwischenschicht 6c zwei und die Ausgangsschicht 8 sieben Neuronen aufweist.
-
Es wird nun zusätzlich auf 4 Bezug genommen.
-
Dargestellt ist ein weiteres Ausführungsbeispiel, dass sich von dem in 1 gezeigten Ausführungsbeispiel dadurch unterscheidet, dass die Eingangsschicht 4 fünf, die erste Zwischenschicht 6a ebenfalls fünf, die zweite Zwischenschicht 6b drei, die dritte Zwischenschicht 6c zwei und die Ausgangsschicht 8 ein Neuron aufweist.
-
Somit ist das künstliche neuronale Netz 2 gemäß diesem Ausführungsbeispiel als Mehrgrößen-Einzelgrößen System mit einer many-to-single-architecture ausgebildet.
-
Es wird nun zusätzlich auf 5 Bezug genommen um einen Verfahrensablauf zum Entwurf der in den 1 bis 4 gezeigten künstlichen neuronalen Netze 2 zu erläutern.
-
Dabei kann das Verfahren auf einem Computer oder ähnlichen Rechnereinrichtung im Rahmen eines CAE-Systems ausgeführt werden, das hierzu Hard- und/oder Software-Komponenten aufweisen kann.
-
Das Verfahren startet in einem ersten Schritt S100.
-
In einem weiteren Schritt S200 wird festgelegt, ob das künstlichen neuronale Netz 2 als Mehrgrößen-Mehrgrößen System mit einer many-to-many-architecture oder als Mehrgrößen-Einzelgrößen System mit einer many-to-single-architecture ausgebildet werden soll.
-
In einem weiteren Schritt S300 wird eine Länge k des künstlichen neuronalen Netzes 2 festgelegt. Die Länge k kann auch als die Anzahl der Neuronen der Eingangsschicht 4 aufgefasst werden.
-
In einem weiteren Schritt S400 wird eine Anzahl n der Schichten (einschließlich der Eingangsschicht 4 und der Ausgangsschicht 8) des künstlichen neuronalen Netzes 2 festgelegt.
-
In einem weiteren Schritt S500 wird eine Rate s festgelegt, mit der die Anzahl der Neuronen von Schicht zu Schicht abnehmen soll.
-
In einem weiteren Schritt S600 wird die Anzahl cc der Neuronen für jede der Schichten, d.h. für die Eingangsschicht 4, die Zwischenschichten 6a, 6b, 6c, 6d und die Ausgangsschicht 8 bestimmt.
-
Dabei wird z.B. wie folgt vorgegangen:
-
Es sei cc, n, k ∈ Z+, wobei Z einen Satz von ganzen Zahlen umfasst die Anzahl der Neuronen einer Schicht, k die Länge, n die Anzahl der Schichten ist.
-
Anzahl der Neuronen der ersten Schicht: cc (n = 1) = Länge (k), n=1
-
Anzahl der Neuronen weiterer Schichten: cc (n) = ((cc (n-1) - 2) / s +2), n ≠ 1, cc (n-1) > 2
-
Für das in 1 gezeigte künstliche neuronale Netz 2 gilt: Rate s = 2, Länge K = 5:
- - Anzahl der Neuronen der ersten Schicht cc (n = 1) = k = 5.
- - Anzahl der Neuronen der zweiten Schicht cc (n = 2) = ((k - 2) / s + 2) = (5 - 2) / 2 + 2 = 3,5 = 3.
- - Anzahl der Neuronen der dritten Schicht cc (n = 3) = ((cc (n = 2) - 2) / 2) + 2) = ((3 - 2) / 2 + 2) = 2,5 = 2.
-
Da keine 3 1/2 oder 2 1/2 Schichten möglich sind ist einer Ganzzahlumwandlung vorgesehen, die im vorliegenden Ausführungsbeispiel zu einer Abrundung von 3 1/2 auf 3 bzw. 2 1/2, auf 2 bewirkt. Abweichend vom vorliegenden Ausführungsbeispiel kann auch eine Aufrundung vorgesehen sein.
-
Für das in 2 gezeigte künstliche neuronale Netz 2 gilt: Rate s = 2, Länge k = 7:
- - Anzahl der Neuronen der ersten Schicht cc (n = 1) = k = 7.
- - Anzahl der Neuronen der zweiten Schicht cc (n = 2) = ((k-2) / s +2) = (7 - 2) / 2+2 = 4,5 = 4.
- - Anzahl der Neuronen der dritten Schicht cc (n = 3) = ((cc (n = 2) - 2) / 2) + 2) = ((4 - 2) / 2 + 2) = 3.
- - Anzahl der Neuronen der vierten Schicht cc (n = 4) = ((cc (n = 3) - 2) / 2) + 2) = ((3 - 2) / 2 + 2) = 2,5 = 2.
-
Für das in 3 gezeigte künstliche neuronale Netz 2 gilt: Rate s = 3, Länge K = 7:
- - Anzahl der Neuronen der ersten Schicht cc (n = 1) = k = 7.
- - Anzahl der Neuronen der zweiten Schicht cc (n = 2) = ((k-2) / s +2) = (7 - 2) / 3 +2 = 5/3 + 2 = 3 2/3 = 3.
- - Anzahl der Neuronen der dritten Schicht cc (n = 3) = ((cc (n = 2) - 2) / 3) + 2) = ((3 - 2) / 3 + 2) = 2 + 1/3 = 2 1/3 = 2.
-
In einem weiteren Schritt S700 werden für jede Schicht, d.h. für die Eingangsschicht 4, die Zwischenschichten 6a, 6b, 6c, 6d und die Ausgangsschicht 8, die jeweiligen ersten und letzten Neuronen festgelegt sowie die weiteren Neuronen jeder Schicht angeordnet.
-
In einem weiteren Schritt S800 wird das künstliche neuronale Netz 2 trainiert, wie dies später noch detailliert erläutert wird.
-
In einem weiteren Schritt S900 wird dann das trainierte künstliche neuronale Netz 2 in Betrieb genommen. Wenn jedoch die Leistungsfähigkeit des künstlichen neuronalen Netzes 2 sich als ungenügend herausstellt wird zu dem Schritt S400 des Verfahrens zurückgekehrt. Andernfalls endet das Verfahren mit einem weiteren Schritt S1000.
-
Es wird nun unter Bezugnahme auf 6 das Training des künstlichen neuronalen Netzes 2 im Schritt S800 erläutert.
-
In einem ersten Schritt S2000 beginnt das Training des künstlichen neuronalen Netzes 2.
-
In einem weiteren Schritt S2100 wird das künstliche neuronale Netz 2 konfiguriert, wie z.B. gemäß den Ergebnissen des anhand der 5 beschriebenen Verfahrens.
-
In einem weiteren Schritt S2200 wird das künstliche neuronale Netz 2 mit Trainingsdaten beaufschlagt.
-
In einem weiteren Schritt S2300 werden Gewichtsfaktoren der Neuronen des künstlichen neuronalen Netzes 2 optimiert.
-
Während des Trainings wird also das künstliche neuronale Netz 2 modifiziert, so dass es für bestimmte Eingangsdaten tm zugehörige Ausgangsdaten erzeugt. Dies kann mittels überwachtem Lernen, unüberwachtem Lernen, bestärkendem Lernen oder stochastischem Lernen erfolgen.
-
Z.B. mittels dem Verfahren der Fehlerrückführung (englisch: backpropagation oder auch backpropagation of error) erfolgt ein Einlernen des künstlichen neuronalen Netzes 2 durch Änderung von Gewichtsfaktoren der Neuronen des künstlichen neuronalen Netzes 2 um eine möglichst zuverlässige Abbildung von gegebenen Trainingsdaten mit Eingangsdaten auf gegebene Ausgangsdaten zu erreichen.
-
Das Training kann in einer Cloud-Umgebung oder offline in einer Hochleistungsrechner-Umgebung erfolgen.
-
In einem weiteren Schritt S2400 wird das nun trainierte künstliche neuronale Netz 2 zur Anwendung bereitgestellt.
-
In einem weiteren Schritt S2500 wird das trainierte künstliche neuronale Netz 2 in Betrieb genommen, wie z.B. in einem Steuergerät 10.
-
Es wird nun unter Bezugnahme auf 7 der Aufbau des Steuergeräts 10 erläutert.
-
Das Steuergerät 10 (engl. ECU = electronic control unit oder ECM = electronic control module) ist ein elektronisches Modul, das überwiegend an Orten eingebaut wird, an denen etwas gesteuert oder geregelt werden muss. Das Steuergerät 10 wird im vorliegenden Ausführungsbeispiel in einem Kraftfahrzeug 12, wie z. B. einem PKW, eingesetzt und kann Funktionen eines Fahrassistenzsystems oder einer adaptiven Scheinwerferregelung.
-
Im vorliegenden Ausführungsbeispiel weist das Steuergerät 10 als Hardware-Komponenten eine CPU 14, eine GPU 16, einen Hauptspeicher 18, wie z.B. RAM), einen weiteren Speicher 20, wie z.B. SSD, HDD, Flash Memory, etc. und eine Schnittstelle 22, wie z.B. CAN, Ethernet oder Wifi, sowie einen CPU-Speicher 24 auf.
-
Während einer Fahrt, d.h. wenn das Kraftfahrzeug 12 in Betrieb ist und sich bewegt, wird die Eingangsschicht 4 des trainierten künstlichen neuronalen Netzes 2 mit den Eingangsdaten tm beaufschlagt, die z.B. von Umfeldsensoren, wie z.B. RADAR-, LIDAR- oder Ultraschall-Sensoren oder Kameras, des Kraftfahrzeugs 2 bereitgestellt werden. Von der Ausgangsschicht 8 werden kann Ausgangsdaten bereitgestellt, die über die Schnittstelle 22 weitergeleitet werden, um z.B. Aktuatoren des Kraftfahrzeugs 2 anzusteuern.
-
So kann der Bedarf an Rechenleistung, insbesondere eines Steuergerätes 10 für ein Kraftfahrzeug 12 reduziert werden.
-
Bezugszeichenliste
-
- 2
- künstliches neuronales Netz
- 4
- Eingangsschicht
- 6a
- Zwischenschicht
- 6b
- Zwischenschicht
- 6c
- Zwischenschicht
- 6d
- Zwischenschicht
- 8
- Ausgangsschicht
- 10
- Steuergerät
- 12
- Kraftfahrzeug
- 14
- CPU
- 16
- GPU
- 18
- Hauptspeiche
- 20
- Speicher
- 22
- Schnittstelle
- 24
- CPU-Speicher
- a
- Ausgangsdaten
- cc
- Anzahl der Neuronen
- k
- Länge
- n
- Anzahl der Schichten
- s
- Rate
- tm
- Eingangsdaten
- t1
- Zeitpunkt
- t2
- Zeitpunkt
- t3
- Zeitpunkt
- tk
- Zeitpunkt
- S100
- Schritt
- S200
- Schritt
- S300
- Schritt
- S400
- Schritt
- S500
- Schritt
- S600
- Schritt
- S700
- Schritt
- S800
- Schritt
- S900
- Schritt
- S1000
- Schritt
- S2000
- Schritt
- S2100
- Schritt
- S2200
- Schritt
- S2300
- Schritt
- S2400
- Schritt
- S2500
- Schritt