Download the joeBOT sources
Die kompletten Quellen des JoeBOT sind jetzt auch verfügbar
(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 | |||||||||||||||
| |||||||||||||||
|
| ||||||||||||||
| | | The Game Programming Gems Series - gut aber teuer | ||||||||||||
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:
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.
Inhalt
2.1Prinzipieller Aufbau biologischer neuronaler Netze
2.2Prinzipieller Aufbau künstlicher neuronaler Netze
2.2.1Interne Funktionen eines Neurons
2.3 Lernen
2.3.1 Überwachtes Lernen (Supervised Learning)
2.3.2 BestärkendesLernen (Reinforcement Learning)
2.3.3Unüberwachtes Lernen (Unsupervised Learning)
2.4.3.1.Herleitung der Backpropagation Regel
2.4.3.3.Flat Spot Elimination
2.5 SOM(Self organizing map)
3.Prinzipieller Aufbau der Simulatoren
3.1.Simulator für Feedforward-Netze (LSNNSI)
4.Praktischer Einsatz der Neuronalen Netze im Bot
4.1 Aufgabendes neuronalen Netzes
4.2 Gewinnungder Trainingsdaten
4.3Technische Einzelheiten bei der Implementierung des Bots
B.1Quelltext des (Feedforward-) NN-Simulators
(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.)
![]()

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.
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.

Abbildung2 : Variablender Neuronen
|
|
| Formel 2.1 |
-
Die binäre Aktivierung![]()
- Sigmoide Aktivierungsfunktion
o
bzw.mit Temperatur-Parameter T![]()
o![]()
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 |
DiePropagierungsfunktion bezeichnet die Vorschrift, mit der die Netzeingabeweiterverarbeitet wird
|
|
| Formel 2.3 |

Abbildung3 : Einvollständig ebenenweise verbundenes 2-stufiges 5-7-5 Feedforward–Netz
- 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.
- 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 )
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.
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.
- 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
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.
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.
Beidieser Lernregel ist die Veränderung proportional zur Differenz
|
|
| Formel 2.5 |
DieDelta-Regel ist außerdem ein Sonderfall, der bei 1-stufigen Netzen auftritt,von dem nun folgenden Lernverfahren 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.
|
|
| Formel 2.6 |
|
|
| Formel 2.7 |
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 |
|
|
| Formel 2.9 |
|
|
| Formel 2.10 |
|
|
| Formel 2.11 |
|
|
| Formel 2.12 |
|
|
| Formel 2.13 |
|
|
| Formel 2.14 |
|
|
| Formel 2.15 |
|
|
| Formel 2.16 |
|
|
| Formel 2.17 |
|
|
| Formel 2.18 |
|
|
| Formel 2.19 |
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 ).
|
|
| Formel 2.20 |
|
|
| Formel 2.21 |
|
|
| Formel 2.22 |
|
|
| Formel 2.23 |
|
|
| Formel 2.24 |
|
|
| Formel 2.25 |
|
|
| Formel 2.26 |
|
|
| Formel 2.27 |
aus den oben genannten Gründenkomplizierter zu berechnen ist. Und auch hier hilft die Kettenregel wieder weiter:
|
|
| Formel 2.28 |
|
|
| Formel 2.29 |
|
|
| Formel 2.30 |
|
|
| Formel 2.31 |
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.
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.
|
|
| Formel 2.32 |
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) )
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.
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 |
|
|
| Formel 2.37 |
|
|
| Formel 2.38 |