Überwachung eines neuronalen Netzes mittels Controller
- Art: Studienarbeit
- Autor: Michael Krause
- Abgabedatum: Oktober 2000
- Umfang: 65 Seiten
- Dateigröße: 1,8 MB
- Note: 1,0
- Institution / Hochschule: Universität Rostock Deutschland
- ISBN (eBook): 978-3-8324-7227-6
-
ISBN (Paperback) :
978-3-8324-7227-6 P - ISBN (CD) :978-3-8324-7227-6 CD
- Sprache: Deutsch
- Prämierung:
- Arbeit zitieren: Krause, Michael Oktober 2000: Überwachung eines neuronalen Netzes mittels Controller, Hamburg: Diplomica Verlag
- Schlagworte: neuronales Netz, Microcontroller, Assembler, Zufallszahl, Hitachi H8
In den Warenkorb
48,00 €
Studienarbeit von Michael Krause
Zusammenfassung:
Im Rahmen dieser Belegarbeit entstand eine Software, die es erlaubt, die Signalflüsse eines analogen Multiplayerperzeptrons zu überwachen. Grundlage war eine vorangegangene Diplomarbeit, in der die Struktur eines selbstlernenden neuronalen Netzes als Analogschaltung herausgearbeitet wurde.
Die Software realisiert die Control-Funktion des analogen Netzes. Diese Funktion überwacht die Ein- und Ausgänge des Netzes, regelt den Signalfluss zum Musterspeicher und kontrolliert den Lernprozess. Ziel war es, die Einsatzmöglichkeit eines Mikrocontrollers zur Netzsteuerung zu untersuchen. Dabei erwies sich die schnellstmögliche Abarbeitung des Control-Algorithmus als wichtiges Kriterium. Aus diesem Grund wurde das Controllerprogramm im Assemblercode entwickelt.
Das entstandene Programm ermöglicht es, ein neuronales Netz mit bis zu 100 Eingangs- und 20 Ausgangsneuronen zu steuern. Dabei wurde Wert darauf gelegt, die Software möglichst flexibel zu gestalten. So ist es z.B. möglich, die Anzahl der Ein- und Ausgangsneuronen festzulegen und auch die Zahl der Lern- und Testpattern kann bis zum Maximalwert von je 1000 variiert werden.
Inhaltsverzeichnis:
| 1. | Kurzreferat | 1 |
| 2. | Inhaltsverzeichnis | 4 |
| 3. | Verzeichnis der Abbildungen | 6 |
| 4. | Grundlagen neuronaler Netze | 7 |
| 4.1 | Das biologische Vorbild | 7 |
| 4.2 | Künstliche neuronale Netze | 8 |
| 5. | Multilayerperzeptron und Backpropagationalgorithmus | 10 |
| 5.1 | Aufbau und Funktion des Multilayerperzeptrons (MLP) | 11 |
| 5.2 | Der Backpropagationalgorithmus | 12 |
| 6. | Struktur der technischen Realisierung | 14 |
| 6.1 | Grundstruktur des Netzes | 14 |
| 6.2 | Algorithmus zum automatisierten Lernen | 15 |
| 6.3 | Ermittlung des minimalen Netzfehlers | 17 |
| 6.4 | Algorithmus der Control-Funktion | 18 |
| 7. | Der Mikrocontroller Hitachi H8/534 | 20 |
| 7.1 | Aufbau und Eigenschaften des H8/534 | 20 |
| 7.1.1 | Betriebsmodi der H8-Familie | 22 |
| 7.1.2 | Festlegen des Betriebsmodus und Speicherplatzbedarf der Software | 23 |
| 7.2 | Auswahl der Programmiersprache | 24 |
| 7.3 | Interne Zahlendarstellung | 25 |
| 7.3.1 | Variablenformate der Control-Funktion | 25 |
| 7.3.2 | Festkommazahlen | 26 |
| 7.3.3 | Gleitkommazahlen | 26 |
| 8. | Die Software | 27 |
| 8.1 | Vereinbarungsteil und Speichereinteilung | 29 |
| 8.2 | Das Hauptprogramm | 30 |
| 8.3 | Unterprogramm Copy_Tab | 31 |
| 8.4 | Algorithmus zur Zufallszahlenerzeugung | 31 |
| 8.4.1 | Algorithmen zur Zufallszahlenerzeugung | 31 |
| 8.4.2 | Implementation des Zufallszahlengenerators (Unterprogramm Random) | 34 |
| 8.5 | Unterprogramm Present_Learnpattern | 35 |
| 8.5.1 | Verwendung der Mikrocontrollerports | 35 |
| 8.5.2 | Präsentation der Lernpattern | 39 |
| 8.6 | Unterprogramm Present_Testpattern | 39 |
| 8.6.1 | Unterprogramm Error_Calc | 41 |
| 8.7 | Unterprogramme zum Umgang mit Gleitkommawerten | 41 |
| 8.7.1 | Unterprogramm R_to_I | 41 |
| 8.7.2 | Unterprogramm IEEE_Mult | 42 |
| 8.8 | Programmlaufzeit | 43 |
| 9. | Softwaretest | 44 |
| 10. | Ausblick | 45 |
| 11. | Literatur- und Quellenverzeichnis | 46 |
| 12. | Erklärung des Autors | 47 |
| Anhang | 48 |
Das Unterprogramm Copy_Tab kopiert die original Lernpattern aus dem ROM ins RAM. Dort werden sie gespeichert, um später der Zufallsfunktion Random eine Markierung der ausgewählten Pattern zu ermöglichen. Anhand der Originaltabelle und dessen Kopie kann die Random-Funktion sicherstellen, dass jeder Pattern wirklich nur einmal ausgewählt wird. Dies ist wichtig, da der Lernalgorithmus in jedem Zyklus eine einmalige Präsentation aller Pattern verlangt. Für die spätere Unterscheidung ist es nicht nötig, die gesamte Originaltabelle zu duplizieren. Vielmehr genügt es jeweils nur die erste Komponente jedes Pattern zu kopieren, was eine schnellere Abarbeitung des Algorithmus zur Folge hat. Anschaulich wird das Vorgehen, wenn man die Abarbeitung des im nächsten Abschnitt beschriebenen RandomAlgorithmus betrachtet. [...]
Das Hauptprogramm verknüpft die einzelnen Unterprogramme so miteinander, dass der Algorithmus aus Abschnitt 6.4 vom Controller realisiert wird. Es lässt sich in Programmbeginn, Initialisierungsteil und eigentlichen Lernalgorithmus unterteilen. Zu Beginn werden die Dateien mit den Lern- und Testpattern geladen und einige allgemeine Deklarationen, wie z.B. Festlegen der Programmstartadresse, vorgenommen. Im anschließenden Initialisierungsteil werden den im Vereinbarungsteil definierten Variablen die entsprechenden Anfangswerte zugewiesen und die benötigten Ports konfiguriert. Der darauf folgende Hauptteil besteht im wesentlichen aus der im Algorithmus auf Seite 18 dargestellten Schleife (Cycle). Hier werden die entsprechenden Statussignale (ini, learnrate) über die Mikrocontrollerports ausgegeben, die Unterprogramme aufgerufen und Variablen wie Learning_Rate, Max_Cycles, oder Error_Sum ausgewertet. Die Abarbeitung des Algorithmus erfolgt folgendermaßen: Nach der Initialisierung und Anfangsbelegung der Variablen beginnt der eigentliche Lernzyklus (Cycle). Dort wird als erstes das ini Signal auf 1 gesetzt und ausgegeben. Die Classification-Funktion wird damit zur Gewichtsinitialisierung veranlasst. Nach dem anschließenden Löschen des ini-Bits wird der Algorithmus mit der Schleife, die die Lern- und Testpattern präsentiert sowie den Netzfehler ermittelt fortgesetzt (Repeat-Schleife). Hier werden der Summenfehler des Netzes (Error_Sum) gelöscht und die Lernrate (learnrate) ausgegeben. Die Variable learnrate ist intern als 32 Bit Gleitkommawert gespeichert. Für die Ausgabe als Spannungswert über einen externen D/A-Wandler ist jedoch ein Integerwert nötig. Deshalb muss vor der Ausgabe von learnrate der Gleitkommawert mit einem Skalierungsfaktor multipliziert und in einen Integerwert konvertiert werden. Der Skalierungsfaktor dient dazu, den internen Wert (z.B. 0,9) an die Auflösung des D/AWandlers anzupassen (bei 10 Bit DAU: Skalierungsfaktor=1023). Die Gleitkommamultiplikation realisiert die Funktion IEEE_Mult. Im Anschluss wird mittels der R_to_I-Funktion der Gleitkommawert in einen Integertyp konvertiert und ausgegeben. Nun kann mit der Präsentation der Lernpattern begonnen werden. Dazu wird der erste Wert jedes Lernpattern vom Unterprogramm Copy_Tab ins RAM kopiert und anschließend erzeugt die Random-Funktion mit Hilfe der Original- und der„Copy_Tab“-Tabelle eine neue Tabelle. Diese Tabelle ermöglicht die Ausgabe der Lernpattern in zufälliger Reihenfolge. Die Funktion Present_Learnpattern präsentiert nun die Pattern dem neuronalen Netz, das dabei die Gewichte zwischen den Neuronen anpasst. Das Ende der Lernpatternpräsentation wird dem Netz durch Ausgabe der Lernrate 0 signalisiert. Den Erfolg des Lernvorganges überprüft die Funktion Present_Testpattern. Sie gibt die Pattern der Testpatterntabelle aus und ermittelt stets den Netzfehler, der über alle Pattern aufsummiert wird (Error_Sum). Das Hauptprogramm vergleicht anschließend den summierten Netzfehler mit dem zulässigen Fehler (Error_zul). Ist der Fehler größer als der zulässige Fehler, wird das Lernen wiederholt (Repeat-Schleife). D. h., die Lernpattern werden erneut „zufällig“ sortiert, präsentiert und der Lernerfolg wird mit Hilfe der Testpattern überprüft. Dieser Vorgang wiederholt sich solange, bis der Gesamtfehler kleiner als der zulässige Fehler geworden ist oder eine maximale Anzahl von Zyklen (Max_Cycles) erreicht wurde. Nach erfolgreichem Konvergieren hat der Seite 28 [...]
Die Darstellung der gebrochenen Zahlen im Mikrocontroller erfolgt ähnlich dem IEEEStandard. Das hat den Vorteil, dass der Zahlenbereich sehr groß und der Fehler bei der Umwandlung von Dezimal- in Gleitkommazahlen gering ist. Das tatsächlich verwendete Format ist vom IEEE-Standard abgeleitet. Da im Programm keine negativen Zahlenwerte auftreten, wird das Vorzeichenbit weggelassen. Das freiwerdende Bit wird als zusätzliches Bit für die Mantisse genutzt. Das Format im Mikrocontroller besteht damit aus 8 Bit Exponent und 24 Bit Mantisse (=32 Bit insgesamt). Die erreichbare Genauigkeit ist mehr als ausreichend. Bei einer Speichereinteilung im Word-Format (16 Bit) und ebenso breiten ALU-Registern werden also 2 Speicheradressen benötigt. Ein Format, indem lediglich 16 Bit genutzt werden, wäre zu ungenau, so dass auf die 32 Bit Darstellung ausgewichen wird. Ein ebenfalls denkbares Format von 24 Bit insgesamt wird wegen der Speichernutzung des H8 (Worddaten nur an geraden Speicheradressen) nicht verwendet. [...]
In den Warenkorb
48,00 €
Link zur Arbeit:
http://www.diplom.de/ean/9783832472276
Arbeit zitieren:
Krause, Michael Oktober 2000: Überwachung eines neuronalen Netzes mittels Controller, Hamburg: Diplomica Verlag
Schlagworte:
neuronales Netz, Microcontroller, Assembler, Zufallszahl, Hitachi H8



