Training des Netzes
Trainingsdaten
Die von uns verwendeten Trainingsdaten stammen von einem Komillitonen, der im Internet (Party Poker) häufig Heads-Up spielt und so freundlich war, uns so genannte Hand History Files von ca. 320 Heads-Ups zur Verfügung zu stellen. Solche Hand History Files zeichnen den Verlauf des Spiels aus der Sicht des Nutzers der Internet Pokerplattform auf. In der Summe standen uns damit ca. 9500 Beispielhände für das Training unserer Netze zur Verfügung.
Diese Daten wurden zunächst mit Hilfe des „PokerAcademy Prospector“, einem Tool zur Spielanalyse, eingelesen, um im Anschluss alle Hände in ein History File im PokerAcademy Prospector Format zu exportieren.
Dies geschah einzig aus dem Grund auch die Hand History Files von anderen Pokeranbietern neben Party Poker verarbeiten zu können, da der „PA Prospector“ alle Hand History Dateiformate in einem einheitlichen Format ausgibt.
Für dieses „PA Prospector Hand“ History Format haben wir einen Parser geschrieben, der uns die für das Training benötigten csv Files generiert. Diese Files konnten im Anschluss direkt in Membrain geladen und zum Training verwendet werden.
Lesson Editor
Der Lesson Editor ist der Teil von MemBrain, der sich mit der Verwaltung aller Trainingsdaten beschäftigt. In ihm ist es möglich in verschiedene Lessons (Übungen) zu erzeugen und jede dieser Übungen mit den einzelnen Trainingsdaten zu füllen. Für unsere Anwendung war es ausreichend nur eine Lesson zu verwenden und diese mit allen zur Verfügung stehenden Trainingsdaten für die entsprechende Spielphase zu füllen.
Ein solcher Trainingsdatensatz setzt sich dabei aus den Eingabedaten (Input data) und den darauß resultierenden Ausgabedaten (Output Data) zusammen.
Um die sehr aufwendige, manuelle Eingabe der Daten zu umgehen ist es in MemBrain möglich die Trainingsdaten in Dateien des csv Formates abzulegen und dann in den Lesson Editor zu laden (siehe Screenshoot).

Der Lesson Editor kann ebenfalls für das Testen der Funktionsfähigkeit des Netzes verwendet werden. Hierzu stehen drei verschiedene Möglichkeiten zur Verfügung:

„Think on Input” Schaltfläche:
Mit einem Klick auf diese Schaltfläche wird das aktive Pattern durch das Netz propagiert.
„Think on Next Input” Schaltfläche:
Mit einem Klick auf diese Schaltfläche wird das nachfolgende Pattern durch das Netz propagiert.
“Think on Lesson” Schaltfläche:
Mit Hilfe dieser Schaltfläche werden nacheinander alle in einer Lesson vorhandenen Pattern durch das Netz propagiert. Startpunkt ist das aktuell aktive Pattern und Endpunkt dessen Vorgänger.
Teacher Manager
Vor der ersten Trainingsphase muss nun der Teacher Manager konfiguriert werden.

In ihm ist es möglich verschiedene Trainingskonfigurationen zu speichern und vor jeder Trainingsphase zu wählen, welche Konfiguration aktuell verwendet werden soll. Der Screenshot zeigt die Konfiguration die sich im Laufe verschiedener Test für uns als eine sehr geeignete herausgestellt hat. Die Basis des Trainingsverfahrens bildet das Backpropagationverfahren. Dieses wiederholt die gesamte Lesson nur einmal, jedes Pattern jedoch achtmal. An dieser Stelle muss angemerkt werden, dass wir das Training nie bis zur achten Wiederholung eines Patterns haben laufen lassen, da der Zeitaufwand zu hoch gewesen wäre. Im Schnitt hat jedes Netz ungefähr die zwei- bis dreifache Anzahl an Trainingsschritten im Verhältnis zu der Anzahl seiner Eingabepattern absolviert.
Die Lernrate ist mit 0.3 angegeben. Dies sorgt dafür, dass das Netz nicht so schnell lernt, gelerntes aber nicht so schnell wieder „vergisst“.
Eine vierte wichtige Konfiguration ist die „Lesson Pattern Selection“. Die zufällige Auswahl der Pattern sorgt dafür, dass das Netz sich keine Abläufe merkt, in dem es sich die Reihenfolge der Eingabedaten merkt.
Damit der Lernvorgang nicht bei einem bestimmten Netto Fehler aufhört, sollte der entsprechende Konfigurationswert auf 0 gesetzt werden. Dies sorgt dafür, dass der Lernvorgang erst abgebrochen wird, wenn ein Netz mit absoluter Genauigkeit arbeitet und keinen Fehler (in Bezug auf die vorgegebenen Trainingsdaten) mehr macht. Dies ist in unserer praktischen Anwendung nie der Fall gewesen.
Auto Teaching
Sobald der Teacher Manager konfiguriert ist, kann das „Auto Teaching“ gestartet werden. Dies führt anhand der gegebenen Konfiguration selbstständig den Lernvorgang aus und bricht entweder automatisch ab, sobald der konfigurierte Netto Error erreicht ist, oder muss durch den Nutzer manuell gestoppt werden.
Zur grafischen Aufbereitung steht während des Lernvorgangs optional der „Netto Error Viewer“ zur Verfügung, der die Summe aller Fehler der tatsächlichen Ausgabe gegenüber der Angestrebten, anzeigt.

Nach dem Lernvorgang kann das Netz in seinem trainierten Zustand gespeichert und im Projekt, das auf seine Fähigkeiten zugreifen soll, verwendet werden.
|