Zitat:
Eine Idee war zum Beispiel ein Programm zu schreiben, bei dem der User 2 Buttons zur Auswahl hat und das Programm rät, welcher Button als nächstes gedrückt wird. Mithilfe eines Neuralen Netzes im Hintergrund müßte das Programm dann auch in der Lage sein Trefferchancen von über 70% zu erzielen beim raten (vorausgesetzt es wird lange genug auf einen speziellen user user trainiert).
Interressante Sache und du must garnichtmal in entfernten Gefilden auf Suche gehen
http://www.delphipraxis.net/internal...ight=&start=13
Schau dir das mal an, da habe ich nämlich exakt das als Demonstration programmiert !
Allerdings kann ich dir jetzt schon sagen das du mit den herkömmlichen Neuronalen Netzwerken bei dieser Aufgabe scheitern musst. Was du benötigst sind sogenannte "NNs mit Gedächtnis = Recurrente Netze" die in der Lage sind sequientelle Muster lernen zu können. Das bedeutet das Netz bekommt eine ganze Reihe von Inputs sequientiell und muß nun darin Muster erkennen und erlernen können. Dies geht mit herkömmlichen Netzwerken nicht.
In meiner Demo habe ich dazu das sogennate "Recurrente Cascade Correlation" Netzwerk benutzt. Das hat mehrere Vorteile:
1.) es ist in der Lage sequentielle Muster zu erlernen -> recurrent
2.) es kann dadurch Prognosen in die Zukunft anstellen -> quasi "hellsehen"
3.) es baut seine Hiddenlayer selbstständig auf, dh. es kann wachsen
4.) man muß also nur Input/Output Schichten definieren als Anwender und nicht die komplette Struktur
5.) es trainiert sich sehr schnell und benutzt dazu ein Backtracking, dh. der Aufbau der Hiddenlayer kann per Backtracking optimiert werden.
6.) dadurch erlernt ein RCC nicht nur das Problem ansich sondern es entwickelt eine Neuronenstruktur die mit der geringsten Anzahl an Neuronen auskommt um ein Problem zu lösen. Dies ist ein enormer Vorteil gegenüber normalen BP Netzen.
7.) meine Implementierung läst die Auswahl ganz verschiedener Aktivierungsfunktionen zu -> Cos/Sin/Sigmoid/Gauss -> bipolar/unipolar etc.pp
8.) das RCC optimiert die Synapsen, dh. es kann selbständig inative Synapsen zwischen den Neuronen wegoptimieren und reduziert damit die Komplexität der Hiddenlayer -> ergo mehr Performance.
Weitere Beispiele für die Anwendung des RCCs die ich programiert habe waren "One Stroke" Schrifterkennungen, also sowas wie die Schrifterkennung auf vielen Palmhandheld Systemen, Spracherkennung im Zusammenhang mit FFTs und Dateityp-Identifizierungen mit 2D-FFTs.
Das Besondere an deiner Aufgabenstellung ist es nun das das Neuronale Netz in seiner Entscheidungsfindung immer 2 Züge zurückliegen wird. Aus seiner Sicht muß also die Vorhersage des übernächsten Zuges getroffen werden. Mit normalen BP Netzwerken kann man so eine Aufgabe nur OFFLINE trainieren. Dh. man hat schon ein Trainungsset an Mustern gesamelt und trainiert damit dieses Netz. In meiner Demo benutze ich aber das RCC und dieses wird live -> ONLINE direkt während des Spieles trainiert, das nennt sich inkrementelles Training !! Dies ist ein gewaltiger Unterschied.
Gruß Hagen