Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.06.2011, 00:40

Neurale Netze / Inputs

Hallo,

wir entwickeln gerade einen Agenten, der Computerpoker spielt auf Basis eines neuronalen Netzes. Viele der Inputs in das Netz sind nur so binäre Abfragen wie "sind wie schon am turn/river ja/nein", "bin ich im SB/BB ja/nein" usw. Was würde denn passieren, wenn ich z.B. einen Input 'Street' erzeuge, der genau 0.33 ist, wenn wir uns am flop befinden, genau 0.33 für den turn, 1 für den river und sonst keinen anderen Wert annimmt.
Sowas wie die aktuellen Potodds (zu callende bet / zu callende bet + potgröße) schickt man ja auch als reelen Input in [0,1] durch das Netz.
Würde das funktionieren? Falls nein warum nicht? Kann mir das irgendwie gerade nicht vorstellen...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

04.06.2011, 00:59

Ich hab zwar keine Ahnung von Poker aber wenns dir drum geht ob Inputs für Neuronale Netze immer binär sein müssen dann lautet die Antwort definitiv: Nein ;)

3

04.06.2011, 15:55

Das ist richtig. Ich hab allerdings noch nie so einen stufenweisen Input gesehen sondern nur binäre oder lineare. Ich frage mich halt, ob das neuronale Netz dann noch flop, turn und river auseinanderhalten kann, wenn nur ein Input einen von drei Werten annimmt und nicht extra 2 Binärinputs benutzt werden.

Ein pokerfreies Beispiel wär ein Roboter, der Auto fährt und das lenkrad nur diskret nach links/rechts/geradeaus bewegen kann. Mit binären Inputs würde ich jetzt zwei Inputs links und rechts machen, die beide 0 sind, wenn er geradeaus fährt, (1,0) für links und (0,1) für rechts.
Arbeitet das Netz dann noch identisch, wenn ich nur einen Input auf 0 für links, 0.5 für gerade aus und 1 für rechts setze?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

04.06.2011, 16:05

Wie wäre es denn mit (0, 0.5) für "nur wenig rechts" und (0.5, 0) für "nur wenig links"? ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Mastermind

unregistriert

5

04.06.2011, 16:08

Ich hab schon NNs mit unärem Input gesehen, (also 1 neuron an für 1, 2 an für 2 usw) ich denke das NN hat es leichter wenn du ein paar Neuronen mehr investierst und dafür einfachere Pattern hast.

Kategorielle Merkmale werden bei Klassifikatoren eigentlich immer in Binäre umgewandelt. kontinuierlicher Input macht eigentlich intuitiv nur Sinn wenn mehr erregung auch semantisch "mehr" von irgendwas bedeutet.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

04.06.2011, 16:29

Prinzipiell hängt das natürlich mal von der Topologie deines Netzwerks ab. Ich denke bei einem einfachen feed-forward Netz dürfte es keinen wirklichen Unterschied machen ob du n Inputs machts wobei immer nur einer aktiv sein kann oder einen Input der eben je nach Option einen bestimmten Wert annimmt. Die Variante mit nur einem Neuron hat wohl den Vorteil dass weniger Gewichte trainiert werden müssen. Ich muss aber zugeben ich hab nicht wirklich viel Erfahrung mit NNs. Aber am Besten probierst dus einfach aus ;)

Mastermind

unregistriert

7

04.06.2011, 16:36

Oder du benutzt eine SVM wie alle kuhlen Kinder :)

8

05.06.2011, 18:10

Ist der Unterschied eigentlich nicht rein semantischer Natur? Ist es für das NN nicht im Prinzip genau das gleiche, ob es zwei binäre Inputs voneinander unterscheidet oder einen einzelnen Input, der drei verschiedene Werte annimmt?

Für eine SVM ist meine theoretisches Wissen leider noch zu schlecht :P

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

05.06.2011, 22:06

Ist der Unterschied eigentlich nicht rein semantischer Natur?

Ich würde sagen semantischer Unterschied is da nur gegeben wenn die Inputs unabhängig voneinander sind. Wenn aber immer nur entweder der eine oder der andre 1 sein kann dann ist es rein semantisch wohl praktisch gleichwertig.

Ist es für das NN nicht im Prinzip genau das gleiche, ob es zwei binäre Inputs voneinander unterscheidet oder einen einzelnen Input, der drei verschiedene Werte annimmt?

Wenn mans genau nimmt nicht ganz denn mit zwei einzelnen Inputs können die unabhängig voneinander gewichtet werden was bei einem gemeinsamen Input natürlich nicht geht. Allerdings sind deine Neuronen wohl sowieso auch nichtlinear, am Ende hängts halt von der Topologie deines Netzwerks ab, ich denk eben dass das keinen großen Unterschied machen sollte.

10

07.06.2011, 17:32

Nächste Frage: Wie kann man das NN eigentlich testen?

Wir definieren einige Inputs auf Basis des aktuellen Spielzustandes und versuchen dann für jeden Gegner eine Verteilung seiner Handtypen zu schätzen und die optimale Gegenstrategie auszuwählen. Für das NN nutzen wir eine externe lib. Wie erkenne ich denn jetzt, ob das NN totalen bullshit lernt oder einfach gar nichts lernt, die Inputs also zu komplex sind oder ähnliches?
Rein theoretisch müsste ich dazu Dummygegner programmieren, die jeden Input z.B. an den Grenzwerten stimulieren und dann schauen, ob es sich richtig auf die Outputs auswirkt, aber das ist vom Aufwand her utopisch.
Ich könnte mir vielleicht noch einfach so anschauen, wie er allgemein Poker spielt und wenn mir dann auffällt, dass er AA preflop foldet, muss wohl irgendwas falsch laufen. Trotzdem brauche ich dazu Expertenwissen, was ja eigentlich nicht sein sollte, und dann erkenne ich auch nur grobe Fehler. Ich kann auch hier wieder manuell keine 100k Hände durchgehen und per Schreibtischtest überprüfen, was das NN macht.

Werbeanzeige