Software & Apps

Software und Apps sind aus unserem Alltag nicht mehr wegzudenken; von Musik- und Videobearbeitung, Antiviren-Tools, VPN-Clients bis hin zu Office und gewissen Alternativen - hier dreht sich alles um Software & Apps für Deinen PC.
68.370 Beiträge

Ask Me Anything: Blickwechsel

Du stellst die Fragen, ein außergewöhnlicher Nutzer antwortet! Begegne mit Deinen Fragen anderen Menschen hautnah und persönlich.
Reinforcment Learning (RL) in PyTorch - habe ich einen Denkfehler?

Guten Tag allerseits.

Ich möchte mittels PyTorch und RL ein neuronales Netzwerk (NN) trainieren und ich komme gerade nicht weiter. Das NN soll ein Strategiespiel (Meta-Tic-Tac-Toe) lernen. Das Spiel ist deterministisch und zwei Spieler wechseln sich ab und platzieren auf ein großes Feld X und O. Das NN erhält als Input das Feld (wo ist X, wo ist O, wo ist leer) und soll als Output den besten Zug für X und den besten Zug für O in der gegebenen Situation vorhersagen.

Mein Training soll so aussehen:
1) Das NN schätzt einen Zug, anhand der Spielfeldinformationen
2) Ist der Zug valide, so wird die Belohnung berechnet. Ist der Zug nicht valide, so wird die negative Belohnung (Bestrafung) berechnet.
3) Es wird eine "learn"-Methode des NNs aufgerufen, die folgende drei Parameter hat: [Spielfeldinformationen, geschätzter Zug und Belohnung]. Das NN soll mit diesen Parametern Backpropagation machen und sich verbessern.
4) War der Zug nicht valide, so soll wieder bei Schritt 1 angefangen werden (bis ein valider Zug herauskommt). War der Zug valide, wird dieser in das Spiel eingetragen und man beginnt wieder mit Schritt 1, diesmal aber mit dem aktualisierten Spielfeld (bis das Spiel endet).

So soll das NN sehr häufig gegen sich selbst spielen und seine X-Präzision und O-Präzision verbessern.

Mein Problem ist die learn-Methode.
Online finde ich jede Menge Algorithmen, die viele Spiele spielen und die Spielfeldinformationen, geschätzten Züge und Belohnungen speichern und erst später auswerten. Das will ich ungerne machen, da ich das unintuitiv finde, da man ja bei jedem Zug lernt.
Chat-GPT will mir ständig eine learn-Methode aufdrücken, die die Backpropagation lediglich mit den Parametern "geschätzter Zug" und "Belohnung" machen will, ohne den Spielfeldzustand zu berücksichtigen. Das ergibt für mich keinen Sinn, da man ja Züge anhand des Spielfelds macht.

Eine für mich angepasste learn-Methode finde ich nicht, obwohl ich denke gelesen zu haben, dass mein Lernprinzip auch funktionieren soll.

Ich nutze Adam als optimizer.

Deswegen frage ich mich, ob ich einen Denkfehler habe und ob mein Algorithmus nicht funktionieren kann. Das ist mein erstes RL-Projekt, ich kenne mich also nicht aus.

Falls also jemand einen Denkfehler findet, wäre es nett mich darauf hinzuweisen :)

Wenn jemand eine learn-Methode mit den 3 Parametern kennt, wäre es nett sie mir zu teilen.

Ask Me Anything: Themenspecials

Im gutefrage Themenspecial beantworten Verbände, Organisationen und Personen des öffentlichen Lebens Deine Fragen zu aktuellen Themen.