PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Richtige Modellierung eines Neuronalen Netzes für KNIFFEL



just4phil
04.10.2007, 16:32
hey

ich habe in excel auf basis von vba das spiel "KNIFFEL" programmiert.
die bisherige "KI" des PC-gegners besteht im wesentlichen aus IF...Then -Abfragen.
zur verbesserung dieser "KI" experimentiere ich nun mit neuronalen netzen.

dazu nutze ich das programm MEMBRAIN und habe mir ein vba-skript erstellt das alle meine aktionen aufzeichnet, um mit diesen daten später das neuronale netz auf meine menschliche spielweise zu trainieren.

soweit läuft das alles schon ganz gut.
allerdings habe ich zu wenig ahnung davon welche art von NN ich erstellen sollte. die input-neuronen sind klar. die output-neuronen sind im prinzip auch klar.

frage ist, brauche ich hidden-neuronen und wenn ja wieviele?

darüber hinaus ist auch die frage nach welche funktionen sich die neuronen aktivieren etc...

kann mir jemand bei diesen fragen helfen?

viele grüße
phil

nomad
05.10.2007, 08:15
hi phil

also, leider kenn weder das KNIFFEL noch MEMBRAIN.

ich nehme an,dass du mit
<< meine aktionen aufzeichnet, um mit diesen daten später das neuronale netz auf meine menschliche spielweise zu trainieren. >>

deine trainings-saetze meinst.
und es kommt darauf an, was du mit dem NN ueberhaupt machen
moechtest= eben leider kenn MEMNRAIN nicht.


Frage: <<auf meine menschliche spielweise zu trainieren.>>

-> soll das NN ein ebenbuertiger Gegner sein, oder soll er dich
dich einfach vom feld fegen......

da es recht viele netzwerk-architekturen gibt, (fuer verschiedene
anwendungen). ist deine frage schwer zu beantworten.

zu den hidden neuronen, im prinzip ja.
anzahl: meiner meinung nach soviele wie du output-neuronen hast

zu den aktivierung-werten
also hier sind paar code schnippsel:

l


propNN1.c under LinuxLaptop for
vergleichsTest:
- ergebnisse:
das waeren die input-neuronen - 3 stueck

- decode: i1 = 0.0597 OK
i2 = 0.1791 OK -> winner
i3 = 0.08955 OK

das waeren die hidden-neuronen - 3 stueck

- h_in 1: 0.004123181
h_in 2: 0.004201686 -> winner
h_in 3: 0.004096316

das sind die output-neuronen

- h_out 1: 0.5010317
- h_out 2: 0.5010511 -> winner
h_out 3: 0.5010251


-------------------------------------------------------------------------------
Aktivierungs-Funkstion:

1
output: ________________ = 0.603
-0.42
1+e

i

vor einigen jahren hat elektor eine 3 teilige serie ueber neural netze
veroeffentlicht.


google mal nach:

-neural-net
-neuralnet on your fingertips
- gamedev.net ist auch eine gute anlauf-stelle

gruss
nomad

plusminus
05.11.2007, 20:26
Allgemein zum Thema Spiele-KI kann ich empfehlen
"gameai": http://href.to/NsO

befasst sich ausschließlich mit dem und ähnlichen Themen.

johns
06.11.2007, 13:51
ich vermute (!) dass sich für dieses würfelspiel ein neuronales netz nicht eignet, und man das problem mittels wahrscheinichkeitsrechnung lösen sollte.
schau mal wie andere diese problemstellung angehen, indem du nach quellcode suchst, zb http://www.koders.com/default.aspx?s=Yahtzee&btn=&la=*&li=*

lg

just4phil
06.11.2007, 14:11
hi
also ich habe das problem schon mit "normalem" code gelöst.
ich sehe es einfach mal als herausforderung an ein neuronales netz dafür zu bauen

ich habe mittlerweile auch schon einiges getestet.
aber ich bin immer noch nicht ganz sicher welche datenstrukturen und welche netztopologie optimal ist.
die bisherigen ergebnisse waren eher ernüchternd.

ich arebeite mit membrain, das u.a. eine DLL hat die in excel eingebunden werden kann.

ciao

johns
06.11.2007, 16:02
[...] das problem schon mit "normalem" code gelöst.
widerspricht deiner früheren aussage

[...] zur verbesserung dieser "KI" [...] neuronalen netzen.

ich hab das unklar formuliert. worauf ich hinaus wollte ist, dass du mit "normalem code" einen perfekten kniffelspieler programmieren kannst, diese spielstärke aber per definition nicht übertreffen kannst.

ausserdem:

Seine besonderen Eigenschaften machen das KNN bei allen Anwendungen interessant, bei denen kein bzw. nur geringes explizites (systematisches) Wissen über das zu lösende Problem vorliegt.

als herausvorderung betrachtet ist kniffel KI per NN mindestens eine grosse herausvorderung. mach doch bitte angaben zu deinen in- und outputs!


lg

just4phil
07.11.2007, 08:21
okidoki, .... du hast es so gewollt :)

also meine 20 input-neuronen:

- 5 würfel (sortiert von kleiner nach grosser augenzahl)
- runde (1, 2, 3)
- bonus (0: nicht mehr möglich, 1: noch möglich, 2: schon erhalten)
- 13 strategien (0: schon erledigt, 1: noch offen)

meine output-neuronen:
- 13 strategien

in ansätzen macht das netz manchmal schon ganz gute aussagen.
das problem ist m.E. die anzahl der trainingsdatensätze, da bei 20 input-neuronen extrem viele permutationen möglich sind.
und ich brauche wahrscheinlich sehr viele pattern (die sich möglichst nicht wiedersprechen dürfen) bis das netz in der lage ist zu generalisieren.


am anfang hatte ich als outputs auch noch welche augenzahlen wie oft entnommen werden sollen.
das hat sich aber als sinnlos erwiesen und muss dann mit "normalem" code gelöst werden nachdem das netz die strategie angesagt hat.

und ich überlege ob es sinnvoller ist die strategie-inputs ganz wegzulassen und das netz erstmal die strategie nur auf basis der würfel analysieren zu lassen.

anregungen und ideen?