Download the PDF Version
Die PDF version enthält einige Quelltextausschnitte, enspricht so insg. relativ genau der konkret abgegebenen Arbeit

Der Simulatorquelltext entspricht allerdings schon seit längerem nicht mehr dem im joebot genutzten code, ich verwende ihn aber trotzdem in diesem dokument noch, da ich nicht wenn ich den bot weiterentwickelte auch die gesamte dokumentation ändern konnte.



Download the joeBOT sources
Die kompletten Quellen des JoeBOT sind jetzt auch verfügbar

Auf joebot.net steht auch eine nicht ganz aktuelle Version der Quelltextes in Form einer zip Datei zum Download bereit.

 

(c) Johannes Lampel 1999-2002
Für etwaige Weiterverwendungen dieses Textes setzen sich sie bitte mit mir via email in Kontakt..


Bücherlinks bei www.amazon.de
In Partnerschaft mit Amazon.de
Andreas Zell - Simulation Neuronaler Netze Teuvo Kohonen - Self Organizing Maps Rolf Pfeifer and Christian Scheier - Understanding Intelligence Steve Rabin - Game Programming Wisdom Steve Rabin - Game Programming Wisdom 2 The OpenGL Programming Guide - THE RED BOOK
Andreas Zell - Simulation Neuronaler NetzeGut zu lesen, gibt einen guten Überblick über das Gebiet und seine Anwendungen, bleibt dabei aber auch nicht zu oberflächlich.
Teuvo Kohonen - Self Organizing MapsAls Lehrbuch konzipiert, inhaltlich umfangreich, mathematisch fundiert ( Gewisse mathematische Grundkenntnisse sollte man allerdings mitbringen )
Rolf Pfeifer and Christian Scheier - Understanding IntelligenceBietet einen Überblick über verschiedene Ansätze Intelligenz 'nachzubauen' und auf diesem Wege die Intelligenz zu verstehen und geht dabei auch philosophischen Fragen nicht aus dem Weg. Viel Text, etliche Skizzen, aber wenig Mathematik.
Steve Rabin - Game Programming WisdomWird vermutlich ein Standardwerk unter den Game AI Büchern. Es ist eine Sammlung von Texten von Spieleprogrammieren zu bestimmten Gebieten, die ingesamt dann ein sehr großes Feld von Pathfinding ( A* ) über Entscheidungsstrukturen bis zu genetischen Algorithmen abdecken. Der konkrete Zusammenhang der Texte zu aktuellen und bekannten Spielen erleichtert oft den Zugang zu den Texten.
The OpenGL Programming Guide - THE RED BOOKWer OpenGL lernen will kommt an diesem Buch wohl nicht vorbei. OpenGL hat mir im Rahmen dieser Arbeit immer wieder gute Dienste beim Visualisieren von Daten in Echtzeit geleistet. Das Buch kann sowohl als Lehrbuch als auch als Nachschlagewerk genutzt werden.
Game Programming Gems I Game Programming Gems II Game Programming Gems III The Game Programming Gems Series - gut aber teuer

 


Schule :

FriedrichSchiller-Gymnasium Preetz / Holst.

AmIhlsol 10-12

24211Preetz

 

Namedes Schülers :

JohannesLampel

 

Themader besonderen Lernleistung :

Einsatzvon Neuronalen Netzen in einem Bot für Counterstrike

 

BetreuendeLehrkraft :

FrauDr. E. Rabe

 

 

Terminder endgültigen Festlegung des Themas :            Februar 2001

Terminder endgültigen Formulierung des Themas :         14. Nov. 2001

Abgabetermin:                                                                    16.Nov. 2001

Bewertung:

 

 

 

__________________________
Unterschriftdes Schülers

 

 

 

__________________________
Unterschriftder Fachkraft

 

 

 

 

 

Info zum Titelbild:Das Bild ist entstanden, indem alle Gewichte der Neuronen einer SOM mit einem 2dimensionalen Eingabevektor während der Lernphase aufgezeichnet wurden. Die SOMsollte Eingaben lernen, die gleichmäßig über ein quadratisches Gebiet verteiltwaren. Die Kreuzform entstand durch einen topologischen Defekt. Das Bild wurdeim Nachhinein noch mit einem Bildbearbeitungsprogramm verändert.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Johannes Lampel

 

Einsatz von Neuronalen Netzen in einem Botfür Counterstrike

 

Besondere Lernleistung mit den Referenzfächern Informatik,Mathematik

Inhalt

Inhalt.. 4

1.Einleitung.. 6

1.1 Was sindBots?. 6

2. Theorieneuronaler Netze.. 9

2.1Prinzipieller Aufbau biologischer neuronaler Netze. 9

2.2Prinzipieller Aufbau künstlicher neuronaler Netze. 10

2.2.1Interne Funktionen eines Neurons. 12

2.2.2Funktionen des Netzes. 13

2.2.3 Aufbaueines Netzes. 13

2.3 Lernen. 15

2.3.1 Überwachtes Lernen (Supervised Learning) 15

2.3.2 BestärkendesLernen (Reinforcement Learning) 16

2.3.3Unüberwachtes Lernen (Unsupervised Learning) 17

2.4Feedforward-Netze. 18

2.4.1Hebbsche Lernregel 18

2.4.2 DeltaRegel 18

2.4.3Backpropagation. 19

2.4.3.1.Herleitung der Backpropagation Regel 19

2.4.3.2.Momentum-Term.. 24

2.4.3.3.Flat Spot Elimination. 24

2.5 SOM(Self organizing map) 26

2.5.1Lernverfahren. 27

3.Prinzipieller Aufbau der Simulatoren.. 31

3.1.Simulator für Feedforward-Netze (LSNNSI) 31

3.1.1 Aufbau. 32

3.2. Simulator für Self-Organizing-Maps (LSSOMSim) 35

3.2.1 Aufbau. 35

4.Praktischer Einsatz der Neuronalen Netze im Bot.. 36

4.1 Aufgabendes neuronalen Netzes. 42

4.2 Gewinnungder Trainingsdaten. 44

4.3Technische Einzelheiten bei der Implementierung des Bots. 52

4.3.1Einbindung in Halflife. 52

Anhang A:Literatur.. 55

Anhang B :Quelltexte.. 56

B.1Quelltext des (Feedforward-) NN-Simulators. 56

B.2 Quelltext des SOM-Simulators (komplett) 57

B.3 Relevante Teile des Bot Quelltextes. 58

Anhang C :Erklärung.. 59

Anhang D:Verbreitung des Bots.. 60

1. Einleitung

 

Der folgende Text behandelt zuerst die Grundlagen derSimulation künstlicher neuronaler Netze, um dann anschließend auf eineAnwendung von neuronalen Netzen, die Steuerung von einem Bot, zu kommen. Eswerden nur Feedforward-Netze und Self Organizing Maps(SOM) behandelt, da nur sie beim Bot zum Einsatz kommen.

Der theoretische Abschnitt beschäftigt sich mit derMotivation bestimmte Prozesse zu simulieren und geht kurz auf die biologischen Vorbilderein. Danach folgt eine Beschreibung des Aufbaus neuronaler Netze inklusiveihrer Komponenten. Nach einer kurzen Diskussion verschiedener Ansätze desLernens folgt die Beschreibung verschiedener Lernverfahren für Feedforward-Netze,wobei der Schwerpunkt bei Backpropagation und seinen verschiedenen Abänderungenliegt. Als Beispiel für ein unüberwachtes Lernverfahren werden dieselbstorganisierenden Karten von Kohonen beschrieben.

Der 3. Teil geht auf die Realisierung der Simulation vonneuronalen Netzen auf Computern nach. Meine Simulatoren für Feedforward-Netzeund SOMs werden einzeln vorgestellt, weil sie auf verschiedenen Strukturenbasieren. Es werden die wichtigsten Datenstrukturen und ihre Funktionenvorgestellt. Gegen Ende des 3. Teils gehe ich noch einmal kurz auf dieKompromisse ein, die ich machen musste, um vernünftige Geschwindigkeiten zuerreichen. Alle Quelltexte sind in C/C++ geschrieben.

Im 4. Teil wird dann der praktische Einsatz neuronalerNetze beschrieben. Neben der Aufbereitung der Daten, die der Bot aus seiner‚Umgebung’ bezieht und der nachfolgenden Nutzung des neuronalen Netzes wird dieGewinnung von geeigneten Trainingsdaten erläutert, wie auch technischeEinzelheiten.

Anhang B beinhaltet die Quelltexte der Simulatoren und NN-relevanteTeile des Botquelltextes.

(Anmerkung: Seit dem Beginn meiner Arbeiten anmeinem Bot ist mittlerweile eine zweite und dritte Version der HPB-Templateerschienen. Mein Bot basiert auf der Version1 und ich beziehe mich in diesemText, wenn ich vom Templatecode spreche auf diese Version.)

 

 

1.1 Was sind Bots?

 

Bots sind computergesteuerte Mitspieler in Computerspielen, die eine Mehrspieler-Unterstützung besitzen. Bots werden programmiert, damit es den Anschein hat, als ob der Spieler mit menschlichen Spielern spielt. Dies ist sonst nur auf LAN-Partys[1] oder im Internet möglich. Ich beziehe mich in diesem Text, wenn ich von Bots spreche auf Bots für Counterstrike (CS), eine Erweiterung von Halflife (HL). HL wurde von [Valve] programmiert. Link to amazon.de

Hier hat sich mittlerweile eine größere Gemeinde vonProgrammierern gebildet, die Bots auf der Basis von HL programmieren. Als Grundfür diese Beliebtheit ist zum einen die freie Verfügbarkeit des HalflifeQuellcodes als auch die große Beliebtheit von Counterstrike als Mehrspieler-Spielim Internet und auf LAN-Partys zu nennen. Halflife von somit auch Counterstrikesind sogenannte First-Person-Shooter, d.h. man spielt aus der Sicht einerSpielfigur in einer in diesem Fall realistischen 3D-Welt und muss Gegner mitWaffengewalt töten oder Missionsziele erreichen. Bei Counterstrike spielen 2Gruppen, die Terroristen und die Counter-Terroristen gegeneinander, wobei dieCounter-Terroristen Geiseln befreien, Bomben entschärfen müssen. DieTerroristen versuchen natürlich mit allen Mitteln dies zu verhindern. Durchdiese Aufgaben ist ein wenig taktisches Vorgehen empfehlenswert, weshalb dieseBots auch schwierig zu programmieren sind.

Gerade nach den Ereignissen am 11. September stellt sicheinem natürlich schon die Frage, ob es richtig ist, ein brutales Spiel, daszudem einen solchen Hintergrund hat, zu unterstützen, indem man es selbererweitert. CS ist in diesem Zusammenhang  besonders zu nennen, da es denAnspruch erhebt, z.B. von der Wahl der Waffen realistisch zu wirken, einigeKarten, die standardmäßig mit dabei sind, eindeutig in einer arabischenUmgebung spielen und es sogar ein Spielermodel bei den Terroristen gibt, daseinen arabischen Kämpfer darstellt. Dem gegenüber sind die Spielermodels der Counter-Terroristennach dem Vorbild der SAS, der GSG-9 und den Navy Seals nachempfunden.Entscheidend für die Wahl des Spiels war damals für mich jedoch, dass dieProgrammierschnittstelle offen ist, es einige Quellen über diese gibt, und dasich mich somit nicht um die Simulation der ‚Außenwelt’ kümmern musste. Dieshatte bei vorhergehenden Projekten immer eine Menge Arbeit bedeutet. Außerdemspielte ich damals gerne CS auf LANs und war der Meinung, dass ich selbst aucheinen Bot schreiben könne, der mindestens so gut wie die damaligen Bots war,auf die ich, wenn ich CS spielen wollte, angewiesen war.

Viele der aktuellen Bots, auch meiner, basieren auf einemTemplate-Quellcode von [botman],der keine KI-Elemente enthält, aber die nötigen Funktionen zur Verbindung mitdem eigentlichen Spiel beinhaltet. Auf die technischen Realisation gehe ich inKapitel 4 ein.


2. Theorie neuronaler Netze

 

Bevor man sich mit künstlichen neuronalen Netzenauseinandersetzt, ist es interessant das biologische Vorbild näher zubetrachten. Deshalb beschäftigt sich dieses Kapitel zuerst mit den biologischenUrsprüngen künstlicher neuronaler Netze, danach dann mit dem Aufbau und denLernverfahren für diese Netze.

Die Vorteile künstlicher neuronaler Netze liegen in derFehlertoleranz und der von Natur aus gegebenen Parallelität, die sie fürBerechnungen auf Parallelrechnern prädestiniert.

 

2.1 Prinzipieller Aufbau biologischer neuronaler Netze

 

In biologischen Systemen übernehmen Nervenzellen dieAufgabe der Kommunikation von Zentralnervensystem und Muskeln bzw. Sinnesorganen.Der Mensch besitzt ca. 100 Milliarden Nervenzellen, wobei sich die größteAnzahl im Gehirn befindet, die Zweitgrößte im Bauchraum.

Die Nervenzellen bestehen meist aus einem Zellkörper, einemAxon und Dendriten. (Ein Spezialfall stellen die Unipolaren Nervenzellen dar,die nur ein Axon, jedoch keine Dendriten besitzen) Mit Hilfe der Dendriten,dünnen, röhrenförmigen und meist stark verästelten Fortsätzen, nimmt dieNervenzelle Reize auf. Über das Axon werden diese Impulse weitergegeben. DasEnde des Axons ist meist mehr oder weniger stark verästelt. An diesem Teil desAxons haben sich die Synapsen gebildet. Die Synapsen wandeln die elektrischenImpulse des Axons in chemische Signale um, die von anderen Nervenzellen wiederdurch ihre Dendriten aufgenommen werden können. Aber auch die Bildung vonSynapsen zwischen  Dendriten oder Axonen kommt vor, wobei der Großteil aberAxone und Dendriten verbindet. Die meisten Zellen besitzen zwischen 2.000 und10.000 Synapsen, in Extremfällen auch bis zu 150.000 Synapsen. ( nach [ZellSNN97] )

Abbildung1 :Verschiedene Arten von Neuronen. Von links nach rechts: 1. Bipolare Neuronen,um Neuronen untereinander zu verbinden; 2. Unipolare Neuronen, die sensorischeDaten übermitteln; 3.  Multipolares Neuron, z.B. bei der motorischenSignalweiterleitung zu finden; 4. Ein pyramidales Neuron, das bspw. im Gehirnzu finden ist.

 

Bei der Betrachtung des biologischen Vorbilds der Theorienzur Simulation künstlicher Neuronaler Netze ist zu bemerken, dass es hier zweiverschiedene Ansätze gibt.  T. Kohonen nennt sie in seinem Buch ( [Kohonen] ) „scholars“(engl. für Gelehrte) und „inventors“ (engl. für Erfinder). Die ‚Gelehrten’gehen mit dem wissenschaftlichen Vorsatz an das Problem heran, dass jedeTheorie durch Experimente gestützt werden können muss. Dies führt auf demBereich der künstlichen Neuronalen Netze dazu, dass sehr viele Parameter in dieFormeln zur Berechnung der Neuronen mit einfließen müssen. Auf der anderenSeite gibt es die ‚Erfinder’, die diesen Anspruch nicht haben und ein Modellmehr oder weniger erfinden und herleiten und damit evtl. auch einige Phänomenesimulieren können, obwohl sie nicht wie die ‚Gelehrten’ dem wissenschaftlichenAnspruch der Nachprüfbarkeit beim ursprünglichen Vorbild entsprechen.

 

2.2 Prinzipieller Aufbau künstlicher neuronaler Netze

 

KünstlicheNeuronen besitzen wie ihre biologischen Vorbilder einen oder mehrere ‚Eingänge’und einen ‚Ausgang’, zwischen denen eine meist einfache Verarbeitung desImpulse nach einfachen Regeln erfolgt.

Eine wichtige Grundlage ist, dass jeder ‚Eingang’ einesNeurons gewichtet ist, d.h. jedem ‚Eingang’ ist ein bestimmter Wert zugeordnet,der seine ‚Wichtigkeit’ bei der Verarbeitung der Daten darstellt. Dieser Wertder Verbindung von Neuron i zu Neuron j wird mit wij, dieAusgabe des Neurons i mit oi und die gesamteEingabe eines Neurons mit neti bezeichnet.

Die Berechnung der einzelnen Aktivierungen der Neuronennach dem Anlegen einer Eingabe nennt man Propagierung.

Als Gewichte werden normalerweise sowohl die Werte für dieStärke der Verbindungen wij als auch die zusätzlichauftretenden  Schwellenwerte qi  bezeichnet.

Abbildung2 : Variablender Neuronen

 

In Zusammenhang mit dem biologischen Vorbild sind hierviele Vereinfachungen zu nennen. Die chemischen Prozesse innerhalb der Neuronenwie bspw. der Natrium- und Kaliumionenaustausch werden nicht explizit simuliertund auch die Nachrichtenübertragung an sich wird meist vereinfacht : In derNatur kann man die Aktivität eines Neurons an dessen Frequenz mit der es feuerterkennen, während die Neuronen hier oft kontinuierliche oder auch binäre Wertebenutzen. Weiterhin werden die lokalen Nachbarschaftsbeziehungen der Neuronenuntereinander, die in der Natur u.a. durch die Diffusion von Neurotransmitternim umliegenden Gewebe stattfindet, in den meisten Modellen nicht simuliert.

Zusammenfassend kann man sagen, dass die Neuronen künstlicherneuronaler Netze meistens sehr stark vereinfacht sind und nur in Einzelfällenhalbwegs realistisch simuliert werden, was man sich dann mit dem Nachteil dersehr aufwändigen Berechnung der Netze erkauft.

 


2.2.1 Interne Funktionen eines Neurons

Der Aktivierungszustand ai eines Neuronsist eine interne Variable, die sich aus der Netzeingabe neti unddem Schwellenwert qi mit Hilfe derAktivierungsfunktion berechnen lässt.

 

Formel 2.1

 

Als Aktivierungsfunktion werden hauptsächlich 3verschiedene Funktionen benutzt ( nach [ZellSNN97] )

-        Die binäre Aktivierung

-        Sigmoide Aktivierungsfunktion

o       Die Logistische Aktivierungsfunktion
 bzw.mit Temperatur-Parameter T

o       Tangens hyperbolicus

Diese Aktivierungsfunktion wird gerne in Zusammenhang mit dem LernverfahrenBackpropagation verwendet, da hier auch ein inaktives Neuron ( oi= -1) im Gegensatz zur logistischen Aktivierungsfunktion nicht 0 ist und somiteine in beide Richtungen Gewichtsänderung möglich ist.

 

Ineinigen Fällen wird aus simulationstechnischen Gründen der Schwellenwert durchein sogenanntes ‚on-Neuron’ ersetzt. Dieses besondere Neuron ist immeraktiviert und durch seine gewichteten und durch das Lernen veränderbarenVerbindungen zu jedem Neuron ein Ersatz für die expliziten, internenSchwellenwerte. Bei der Simulation müssen die Schwellenwerte nicht extraberechnet werden, sondern können zusammen mit den anderen Gewichten verändertwerden. Allerdings steht diesem Vorteil ein großer Nachteil gegenüber: Bei derVisualisierung der Netze werden diese leicht unübersichtlich.

 

Auchfür die Berechnung der Ausgabe kann es eine eigene Funktion geben, die allerdingsoft mit der Aktivierungsfunktion zusammengefasst wird.

 

 

Formel 2.2

 

 

2.2.2 Funktionen des Netzes

DiePropagierungsfunktion bezeichnet die Vorschrift, mit der die Netzeingabeweiterverarbeitet wird

 

 

Formel 2.3

 

Die Lernregel ist ein Algorithmus, der bestimmt, wie dasneuronale Netz lernt. Hier gibt es mehrere Ansätze, die teilweise rechtverschieden sind

 

2.2.3 Aufbau eines Netzes

Die Neuronen in einem künstlichen neuronalen Netz sindmeistens schichtweise angeordnet. Diese künstlichen Netze besitzen eine Eingabeund eine Ausgabeschicht. Um die Fähigkeiten der Netze zu erhöhen, werden oftnoch verdeckte Schichten dazwischen eingefügt. Bei der häufigsten Form, denfeedforward-Netzen sind die Ebenen meistens vollständig in einer Richtungverbunden, d.h. jedes Neuron der 1. Schicht ist jeweils mit allen Neuronen der2. Schicht verbunden. Ein Netz mit einer Eingabeschicht, einer verdecktenSchicht und einer Ausgabeschicht wird 2-stufig genannt, da es 2 Schichtentrainierbarer Gewichte besitzt.

Abbildung3 : Einvollständig ebenenweise verbundenes 2-stufiges 5-7-5 Feedforward–Netz

 

Direkte Verbindungen zwischen der Eingabeschicht und derAusgabeschicht, also über die verdeckte Schicht hinweg, heißen shortcutconnections und sind meist ohne größere Änderungen der Simulatorarchitekturhinzuzufügen. Auch rekurrente Netze sind möglich, die jedoch größeren Aufwandin Bezug auf den Algorithmus erfordern und, für ein Ergebnis oft mehrerePropagationen benötigen und teilweise anfangen zu schwingen. Man unterscheidetvier Arten rekurrenter Netze:

-        Direkte Rückkopplung
Durch die direkte Rückkopplung können sich die Neuronen selbst hemmen bzw.aktivieren und somit kleine Eingangssignale in bestimmten Bereichen verstärken.

-        Indirekte Rückkopplung
Verbindungen von höheren Schichten zu niedrigeren können beispielsweise zurAufmerksamkeitssteuerung eingesetzt werden. Hierbei wird die ursprünglicheEingabe verarbeitet und mit einer Ausgabe assoziiert, die wieder dazu benutztwerden kann, bestimmte Eigenschaften der Eingabe besonders zu beachten.

-        Rückkopplung innerhalb einer Schicht.(lateral feedback)
Die Rückkopplung innerhalb einer Schicht wird oft dann eingesetzt, wenn nur einNeuron in der gesamten Schicht aktiv sein soll. Um das zu erreichen, hemmenalle Neuronen alle anderen Neuronen und versuchen sich selbst noch weiter zuaktivieren. Das Neuron mit der ursprünglich höchsten Aktivierung bleibt am Endeals Gewinner, während alle anderen Neuronen nicht mehr aktiviert sind. Deshalbheißen solche Netztopologien auch winner-takes-all Netzwerke.

-        Vollständig verbundene Netze
Bei vollständig verbundenen Netzen ist jedes Neuron mit jedem Neuron verbunden.Bekanntester Vertreter dieser Art sind die Hopfield-Netze, die beiOptimierungsproblemen wie dem Travelling-Salesman-Problem eingesetzt werdenkönnen.

( nach [ZellSNN97] )

 

2.3 Lernen

 

Die Lernfähigkeit neuronaler Netze ist eine der speziellenEigenschaften neuronaler Netze. Sie benötigen dafür eine Eingabe und meistensauch eine Ausgabe, mit deren Hilfe sie ihre internen Zustände wieSchwellenwerte und Gewichte verändern, um der „erwünschten“ Ausgabe möglichstnahe zu kommen. Wenn sie einmal einen Trainingsdatensatz gelernt haben, sindsie auch in der Lage unbekannte Eingaben so zu verarbeiten meist und einpassendes Ergebnis zu erzeugen.

Das Lernen kann bei neuronalen Netzen durch Veränderung derGewichte, also der Gewichtungen der Verbindungen und der Schwellenwerte, dasErstellen oder Löschen von Verbindungen oder Neuronen erfolgen. In der Praxiswerden fast immer nur die Gewichte verändert.

Man unterscheidet 3 Arten des Lernens:

 

2.3.1  Überwachtes Lernen (Supervised Learning)

Beim überwachten Lernen werden dem Netz von außen sowohlEingabe, als auch die zugehörige gewünschte Ausgabe präsentiert. Die Aufgabedes Lernalgorithmus besteht darin, die Gewichte und Schwellenwerte so zuverändern, dass nach mehrmaliger Präsentation der Muster das Netz in der Lageist, zu einer Eingabe die passende Ausgabe zu liefern. Nach dem Lernprozess istdas Netz dann auch in der Lage für neue, unbekannte Eingabevektoren einegeeignete Ausgabe zu finden. Diese Eigenschaft, die Generalisierungsfähigkeit,ist eine wichtige Eigenschaft neuronaler Netze, da ihnen meist nicht allemöglichen Eingaben mit den entsprechenden Ausgaben von vornherein präsentiertwerden können.

Ein Nachteil des Überwachten Lernens ist, dass esbiologisch nicht plausibel ist, weil in biologischen Systemen keine Institutionexistiert, die Eingaben zusammen mit der gewünschten Ausgabe liefert.

Beispiel für den Ablauf eines überwachten Lernprozesses:

-        Präsentation der Eingabe durchentsprechende Aktivierung der Neuronen der Eingabeschicht

-        Propagierung des Netzes, sodass eineAusgabe erzeugt wird

-        Vergleich der Ausgabe mit dergewünschten Ausgabe

-        Bei Netzen mit mehreren Schichten:Rückwärtspropagierung der Fehler der Ausgabeschicht zu Neuronen in verdecktenSchichten.

-        Änderung der Gewichte, um den Fehler zuminimieren

Abbildung4 : Ein64-14-26 feedforward Netz, das ich mit Hilfe des überwachten LernverfahrensBackpropagation zur Erkennung von großen Druckbuchstaben verwendet habe. ( dieFarben der Verbindungen stellen das Gewicht, die der Neuronen derenSchwellenwert dar )

 

2.3.2 Bestärkendes Lernen (Reinforcement Learning)

Beidiesem Lernverfahren wird dem Netz zusammen mit der Eingabe nicht der kompletteAusgabevektor, sondern nur wenige Informationen, richtig / falsch oder auch derGrad des Fehlers, präsentiert. Dieses Verfahren ist auch biologisch plausiblerals überwachtes Lernen, da Vorgänge wie ‚Erfolg’ oder ‚Misserfolg’ auch in derNatur zu finden sind. Allgemein ist dieses Verfahren jedoch sehr zeitaufwändig,da dem Netz nur wenige Informationen zur Verfügung stehen.

 

2.3.3 Unüberwachtes Lernen(Unsupervised Learning)

BeimUnüberwachten Lernen werden dem Netz eine Trainingsmenge von Eingabevektorenpräsentiert, die es ohne direkte Vorgaben von außen in Gruppen einteilt. Diebekanntesten Netze, die nach einem Unüberwachten Lernverfahren arbeiten, sinddie Selbstorganisierenden Karten (Self Organizing Maps).Bei SOM beeinflussen aktive Neuronen ihre räumlich nahen Nachbarneuronen undbewirken damit, dass sich ähnliche Muster an bestimmten Stellen ‚sammeln’,Gruppen bilden. Den SOMs ähnliche Strukturen wurden im visuellen Kortex vonSäugetieren gefunden, sodass diese Modelle auch biologisch plausibel sind. Diefür dieses Lernverfahren nötige Suche nach dem am stärksten aktivierten Neuronwird allerdings bei der Simulation fast immer durch eine einfache Maximumsucherealisiert, da ein rekurrentes Netz, das die gleiche Aufgabe erfüllen soll,immer mehr Zeit benötigt, einen stabilen Punkt zu erreichen, bzw. keinenfindet, also ständig oszilliert.

Beispiel für den Ablauf eines unüberwachten Lernprozessesam Beispiel von SOM:

-        Präsentation der Eingabe durchentsprechende Aktivierung der Eingabeneuronen

-        Propagierung

-        Suche nach dem am stärksten aktiviertenNeuron ( winner-takes-all)

-        Änderung der Gewichte anhand derEntfernung vom zu aktualisierenden Neuron zum Gewinnerneuron

( nach [ZellSNN97] )

 

 


2.4 Feedforward-Netze

 

AlsFeedforward-Netze werden neuronale Netze bezeichnet, bei denen die Eingabe nur inRichtung der Ausgabeschicht propagiert wird.

h ist in den folgenden Fällen alsLernrate definiert, also eine Variable, die die Geschwindigkeit mit der dieGewichte verändert werden, angibt. Wird h zu klein gewählt, dauert dasTraining unnötig lange und es findet in lokalen Minima einen stabilen Punkt.Wird die Lernrate jedoch zu groß gewählt, kann es vorkommen, dass derLernvorgang nicht optimal verläuft.

Die Hebb-und Deltaregeln gelten nur für einstufige Netze.

 

2.4.1 Hebbsche Lernregel

DieHebbsche Lernregel ist die Grundlage für viele andere Lernregeln. Sie besagt,dass wenn zwei verbundene Neuronen stark aktiviert sind, das Gewicht derVerbindung erhöht werden soll.

 

 

Formel 2.4

 

DieseLernregel wird meistens bei binären Aktivierungsfunktionen benutzt, wobei oft jedoch–1 und 1 als Aktivierungen verwendet werden, um auch eine Verminderung derBeträge der Gewichte zu ermöglichen.

 

2.4.2 Delta Regel

Beidieser Lernregel ist die Veränderung proportional zur Differenz d vonpropagierter Ausgabe oi(Ausgaben der Neuronen derAusgabeschicht) von gewünschter Ausgabe ti. Dies ist eineErweiterung der Hebbschen Lernregel, wobei auch die propagierte Ausgabe bei derÄnderung beachtet wird.

 

 

Formel 2.5

 

 ist hierder Fehler des Ausgabeneurons j.

DieDelta-Regel ist außerdem ein Sonderfall, der bei 1-stufigen Netzen auftritt,von dem nun folgenden Lernverfahren Backpropagation.

 

2.4.3 Backpropagation

DasLernverfahren Backpropagation (BP) ist eine Verallgemeinerung der Delta-Regelfür mehrstufige Netze. Hierbei wird der Fehler, der in der Ausgabeschichtdirekt berechnet werden kann, zurückpropagiert, d.h. es werden alle Fehler derNeuronen, mit denen das betreffende Neuron in einer höheren Schicht verbundenist, unter Beachtung der Gewichte der entsprechenden Verbindungen, addiert. Dadie Aktivierungsfunktion bei der Vorwärtspropagierung und somit auch bei derRückwärtspropagierung eine Rolle spielt, muss auch sie mit in die Rechnungeinbezogen werden.

 

Backpropagation :

 

Formel 2.6

 

 

Formel 2.7

 

2.4.3.1.Herleitung der Backpropagation Regel

Backpropagationist ein sogenanntes Gradientenabstiegsverfahren. Wenn man sich die Fehlerflächeeines neuronalen Netzes bildlich vorstellt, so sucht dieses Verfahren stets denkürzesten Weg ins Tal. Dies tut es indem es sich entgegen der Steigung andieser Stelle bewegt. Die Fehlerfläche eines Netzes ist aber nicht 2dimensional, sondern hat so viele Dimensionen wie es Gewichte gibt. ( InAnlehnung an [ZellSNN97])

DieGesamtfehlerfunktion ist wie folgt definiert :

 

Formel 2.8

Hierbei ist p der Index für die einzelnen Trainingsmuster.Für einzelne Muster lautet sie :

 

Formel 2.9

 

Bei der Gesamtfehlerfunktion des Netzes kann man davonausgehen, dass man eine feste Mustermenge hat. Damit ist der Funktionswert vonE nur noch von den Gewichten abhängig, da nur sie in die Berechnung von oieingehen. Das ½ vereinfacht das weitere Vorgehen, da dieses sich nach demDifferenzieren herauskürzt und es egal ist, ob man nun E oder ½ E minimiert.Weiterhin ist es aus dem gleichen Grund unerheblich ob man den euklidischenAbstand oder dessen Quadrat minimiert.

Da man das Minimum finden will, muss man die Gewichteentgegen dem Gradienten verändern.

 

Formel 2.10

 

Hier begegnet uns wieder h, die Lernrate, dieangibt, wie schnell die Gewichte verändert werden sollen. Nun muss dieAbleitung der Fehlerfunktion berechnet werden. Zuerst werden wir die Herleitungder Delta Regel betrachten, die einen Sonderfall von Backpropagation darstellt.In diesem Fall gilt :

 

Formel 2.11

 

 

Formel 2.12

 

Die Änderung der Gewichte über alle Muster ist dann :

 

Formel 2.13

 

Mit der Kettenregel folgt :

 

Formel 2.14

 

Aus der Gleichung für die Fehlerfunktion einzelner Muster folgt:

 

Formel 2.15

 

Nun muss noch opj nach wij abgeleitetwerden :

 

Formel 2.16

 

Zusammengefasst lautet oberes dann :

 

Formel 2.17

 

Insgesamt ergibt sich somit für die Delta Regel :

 

Formel 2.18

 

Man erkennt dass es sich hierbei um ein offline oder batch-Trainingsverfahrenhandelt. Ein gravierender Nachteil dieses Verfahrens ist, dass man extraDatenelemente benötigt, die die aufsummierte Änderung speichert. Ein weitererNachteil ist, dass man von vornherein alle Trainingsdaten benötigt. Aus diesenGründen verwendet man in der Praxis oft die Online-Variante, d.h. eine Variantedie die Gewichte jeweils nach der Präsentation eines Musters ändert.

 

Formel 2.19

 

Backpropagation stellt nun eine Art Erweiterung der DeltaRegel für neuronale Netze mit mehreren trainierbaren Schichten von Gewichtendar.

In in dieser Weise aufgebauten Netzen ist die Berechnungdes Fehlers  nicht mehr so einfach wie im Falle dereinschichtigen neuronalen Netze. Man hat keine ‚Sollwerte’ für die Neuronen derverdeckten Schicht(en). Aus dieser Tatsache resultiert, dass der Fehler derAusgabeneuronen zurückpropagiert werden muss um diesen fehlenden Wert zu bekommen( womit auch dann der Name des Lernverfahrens geklärt ist ).

Zusammenfassend noch einmal die Propagierungsregeln, aufdie später wieder zurückgegriffen werden muss :

 

Formel 2.20

 

 

Formel 2.21

 

Analog zu der Herleitung der Delta Regel gilt wieder :

 

Formel 2.22

 

 

Auch hier kann man den abzuleitenden Term mit Hilfe derKettenregel erst einmal zerlegen :

 

Formel 2.23

 

Der zweite Term ist dann ( mit 2.20 ) :

 

Formel 2.24

 

Und der Fehler eines Neurons wird auch wie bei der DeltaRegel definiert ( 2.15 ):

 

Formel 2.25

 

Wenn man jetzt die Formeln ( 2.22, 2.23, 2.24, 2.25) zusammenfasst, erhält man

 

Formel 2.26

 

oder in der online Version :

 

Formel 2.27

 

wie bei dem oben hergeleiteten Lernverfahren, mit demUnterschied, dass  aus den oben genannten Gründenkomplizierter zu berechnen ist. Und auch hier hilft die Kettenregel wieder weiter:

 

Formel 2.28

 

Aus Gleichung ( 2.21 ) folgt :

 

Formel 2.29

 

Nun muss man bei den Neuronen zwischen verdeckten Zellenund Ausgabeneuronen unterscheiden. Im ersten Fall gilt wieder das Gleiche wiebei der Delta Regel :

 

Formel 2.30

 

 

Im zweiten Fall kann man den Term mit Hilfe der Gleichungen( 2.20, 2.25 ) lösen :

 

Formel 2.31

 

k ist in dieser Gleichung ein Index für die Nachfolgezellenvon j ( i;j;k ). In Worten bedeutet dies, dass der Fehler eines Neurons größerist, wenn die Verbindungen zu den Neuronen mit den größten Fehlern in dernächsthöheren Schicht stark sind. Dies ist auch logisch, da eine fehlerbehafteteAusgabe dieses Neurons eine größere Auswirkung auf die Ausgabe hat, sofern dasGewicht der Verbindung groß ist.

 

Quickpropagation ist ein Lernverfahren, das ähnlich wieBackpropagation funktioniert. Hierbei wird mit Hilfe zweier vorhergehenderWerte wird die Fehlerfläche mit Parabeln angenähert. In einigen Fällen kanndieses Verfahren das Training um das zehnfache verkürzen. Es kann aber auchvorkommen, dass es schlechter konvergiert.

 

Abbildung5 : Das 2Spiralen Problem, ein beliebtes Benchmarkverfahren um die Leistungsfähigkeiteines Lernalgorithmus zu testen. Ein neuronales Netz, das aus zwei Eingabe-,einer unbestimmten Anzahl Schichten verdeckter Neuronen und einem Ausgabeneuronaufgebaut ist, soll anhand der Position eines Punktes, die als Eingabevorgelegt wird, entscheiden, zu welcher der beiden Spiralen dieser Punktgehört, durch die schwarzen und weißen Punkte auf der rechten Seitesymbolisiert.

 

2.4.3.2. Momentum-Term

Füreinige Trainingsmuster sind Abänderungen teilweise vorteilhaft. Eine solcheErweiterung ist der Momentum-Term. Dieser Term beachtet die letzteGewichtsänderung bei der neuen Berechnung. Er bewirkt eine Beschleunigung der Gewichtsänderungenauf weiten Plateaus der Fehlerfläche und bremst in zerklüfteten Gebieten ab, dahier die ‚alten’ Gewichtsänderungen oft ein anderes Vorzeichen haben.

Gängige Werte für a liegen zwischen 0.5 und 0.9,wobei dieser Wert jedoch auf die einzelnen Trainingsmuster angepasst werden.

 

 

Formel 2.32

 

2.4.3.3. Flat SpotElimination

EinProblem ist, dass sich Neuronen bei den oben beschriebenen Verfahren in denextremen Aktivierungsbereichen nur langsam ändern können. Die Ursache liegt beider Ableitung der Aktivierungsfunktion, die bei der Fehlerberechnung benutztwird. In diesen Bereichen ist die hat die Ableitungsfunktion einen Wert nahe 0.Um dieses Verhalten zu verbessern kann man zu jedem Wert der Ableitung einenfesten Wert (0.1 genügt oft schon) addieren. Auch eine feste Zuweisung verbessertteilweise die Konvergenz des Netzes, die variable Variante ist jedoch meistschneller.

Ineigenen Versuchen mit einem 10-5-10 De/Encoder konnte ich eine 40% Senkung der zutrainierenden Epochen mit dieser Variante gegenüber der unveränderter Ableitungerreichen.

Abbildung6 :Funktionsgraph der Ableitung der Aktivierungsfunktion ohne ( g(x) ) und mitFlat Spot Elimination ( h(x) ).  In den roten Bereichen, den extremenAktivierungsbereichen, wird g(x) sehr klein und somit werden auch dieVeränderungen während des Lernvorgangs sehr klein, da fact(netj)als Faktor bei der Berechnung der Fehler der einzelnen Neuronen vorkommt. Somit ist es für ein Neuron, das sich in einem solchen Bereich befindet, diesennur langsam wieder zu verlassen.  Wenn man zu dieser Funktion immer einenfesten Wert hinzuzählt oder auch diese auf einen festen Wert setzt, sindüberall ausreichende Gewichtsänderungen möglich. ( h(x) )

 


2.5 SOM (Self organizing map)

 

SelbstorganisierendeKarten sind aus einer Eingabeschicht und einer Schicht aktiver Neuronenaufgebaut und werden mit einem unüberwachten Lernverfahren trainiert. DieNeuronen besitzen untereinander Nachbarschaftsbeziehungen, und sie sind ineinem n-dimensionalen Gitter angeordnet. Um die Visualisierung zu vereinfachen,werden meist rechteckige oder teilweise auch hexagonale 1,2 oder 3 - dimensionaleGitter benutzt. [Kohonen]

DieNeuronen der aktiven Schicht besitzen jeweils einen Gewichtsvektor Wj,der so viele Dimensionen hat, wie der Eingabevektor E.

Abbildung7 :Prinzipieller Aufbau einer SOM. Unten sind die 3 Eingabeneuronen, oben die 25Neuronen, die die eigentliche selbstorganisierende Karte darstellen. In der Naturbesitzen ähnlich aufgebaute Netze noch laterale rekurrente Verbindungen, inSimulatoren, werden diese jedoch oft durch eine Maximumsuche ersetzt. Auch dieEingabeneuronen existieren nicht immer explizit in den Simulatorstrukturen, dadie eigentlichen Bestandteile des Netzes die, in diesem Fall, oberen Neuronensind.

 


2.5.1 Lernverfahren

 

DasLernen läuft so ab, dass dem Netz zuerst ein Trainingsmuster präsentiert wird.Danach folgt eine Art Propagierung, allerdings keine Berechnung einzelnerAktivierungen aus Schwellenwert und Netzeingabe, sondern eine Suche nach demkleinsten Unterschied  zwischen Eingabe und Gewichtsvektor eines Neurons. ZumVergleich werden meist die euklidische Norm oder das Skalarprodukt beinormalisierten Vektoren verwendet. Danach werden die Gewichtsvektoren zumEingabevektor hin verändert, wobei mit steigendem Abstand die Stärke derVeränderungen abnimmt.

 

 

Formel 2.33

 

 

Formel 2.34

 

 

Formel 2.35

 

 

Formel 2.36

 

h(t) ist die zeitlich veränderliche Lernrate. Normalerweiseverwendet man eine monoton fallende Funktion, aber auch mit festen Werten habeich brauchbare Ergebnisse erzielt. hcj(t) ist dieDistanzfunktion. (neighbourhood kernel) c in diesem Fall dasGewinnerneuron, j das aktuelle Neuron und z die Distanz zwischenbeiden. hcj(t) ist auch eine monoton fallende Funktion. Beiihrer Berechnung wird der interne Wert d(t), der Distanzparameter, derden Radius darstellt in dem die Gewichte der Neuronen verändert werden, mitverwendet. d ist am Anfang des Training oft so groß, dass die Gewichtealler Neuronen ausreichend stark verändert werden. [Kohonen]schlägt sowohl für h(t) als auch für hcj(t)lineare Funktionen vor. Ich habe auch gute Erfahrungen mitExponentialfunktionen gemacht, habe allerdings beobachtet, dass man dann mehrEpochen benötigt um das Netz gut trainiert zu haben.

 

Beispiele für gängige Nachbarschaftsfunktionen mit[0,1]:

 

Formel 2.37

 

 

Formel 2.38