Reinforcement Learning Jassbot

Wir wollen Jassbots revolutionieren. Wir entwickeln einen Bot, der völlig ohne das Einwirken menschlicher Spieler lernt und bisher ungesehene Spielstrategien entwickelt. Wieso das Spiel Jass für einen Bot so schwierig ist, was das Problem mit den bisherigen Bots ist und wie wir diese Probleme lösen, lesen Sie hier.

Reinforcement learning

Bot lernt ohne menschliches Einwirken

Der Jassbot erlernt eine Strategie, ohne dass ein Mensch im Spiel mitwirkt, mit einer Technologie namens Reinforcement learning (zu deutsch etwa, "bestärkendes Lernen"). Dem Bot wird weder gesagt, ob er sich in einer guten Ausgangslage befindet, weder trainiert er anhand von vorgefertigten Spielerhandlungen. Per Definition könnte ein solcher Bot schliesslich nie besser werden, als der menschliche Spieler, der ihm das Spiel beigebracht hat. Der Bot spielt gegen sich selbst. Er erlernt sein Verhalten im Spiel mithilfe der jeweils erhaltenen "Belohnungen" in Form von Spielpunkten. Wie gut - oder eben schlecht - er gespielt hat, kann er nur auf diese Weise erschliessen. Mit dieser Technik kann der Bot lernen, wie er am besten in seiner Umgebung interagiert, ohne dass ihm dies von einem Menschen gezeigt wurde (wie es etwa beim sog. überwachtem Lernen der Fall wäre).

Deep learning

Künstliche neuronale Netze

Der Bot trainiert ein sog. neuronales Netwerk. Die Architektur basiert grob auf unserem Verständnis des menschlichen Gehirns. Ein neuronales Netzwerk besteht aus vielen Zahlen (auch Parameter genannt). Der Input wird mit den Parametern multipliziert und addiert, bis am Schluss ein Endwert herauskommt. Mithilfe der erreichten Punktzahl im Spiel kann das Netzwerk die Parameter anpassen und so beim nächsten Mal einen Endwert herausgeben, der eher dem wahren Wert entspricht.

Jass, ein imperfect information Spiel

Fokus aufs Wesentliche

Einen Bot auf das Spiel Jass zu trainieren ist sehr schwierig, da bei diesem Spiel nicht allen Spielern immer alle Informationen über den Gesamtzustand des Spiels bekannt sind. Es handelt sich um ein sogenanntes "imperfect information game". Zudem gibt es unzählige Kombinationen von möglichen Handkarten. Es ist daher nicht möglich, dass der Bot für jede mögliche Kombination eine passende Taktik erlernt. Der Bot muss verschiedene Spielhände selber erkennen und zuordnen können.

Technologie

  • Geschrieben in Python
  • Umsetzung mit Keras, Tensorflow und Numpy
  • Continuous Integration mit GitLab CI
  • Lokales Training auf DeepReturn GPUs