Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Wie lernt FUSC# mit TD( )? Marco Block... X1X1 X2X2 XNXN x1x1 x2x2 pd[i] =w1f1(x) + w2f2(x) + w3f3(x) +... + wnfn(x)... w1f1(x) + w2f2(x) + w3f3(x) +...

Ähnliche Präsentationen


Präsentation zum Thema: "Wie lernt FUSC# mit TD( )? Marco Block... X1X1 X2X2 XNXN x1x1 x2x2 pd[i] =w1f1(x) + w2f2(x) + w3f3(x) +... + wnfn(x)... w1f1(x) + w2f2(x) + w3f3(x) +..."—  Präsentation transkript:

1 Wie lernt FUSC# mit TD( )? Marco Block... X1X1 X2X2 XNXN x1x1 x2x2 pd[i] =w1f1(x) + w2f2(x) + w3f3(x) wnfn(x)... w1f1(x) + w2f2(x) + w3f3(x) wnfn(x)

2 Marco Block Wiederholung 0.Fazit vom Vortrag August Problematik: Evaluierung einer Stellung - Reinforcement Learning +... durch Ausprobieren und Rückmeldung der Umwelt - Backgammon sehr gut für TD() geeignet + kleine Stellungsänderung kleine Bewertungsveränderung + komplexe Evaluationsfunktion möglich - Schach eigentlich nicht für TD() geeignet + kleine Stellungsänderung grosse Bewertungsveränderung + schnelle, lineare Bewertungsfunktion nötig (MinMax) + TD-Leaf() scheint eine Lösung zu sein (Baxter, Tridgell, Weaver -> KnightCap) - Ziel: Evaluationsvektor w lernen November 2003

3 Marco Block November 2003 Reinforcement Learning goes FUSC# Daten vorbereiten Stellungsfolge+HauptVarianten :... X1X1 X2X2 XNXN für Evaluation nur eigene Stellungen MinMax als Zugwahlalgorithmus, Hauptvariante wird gespeichert Partie: Fusch–Internetgegner P1P1 P2P2 P3P3 P4P4 P 2N (Evaluationsvektor w wird benutzt) beste, forcierte Stellung

4 E[x] = Stellungsbewertung der Stellung x mit Evaluationsvektor w bestehend aus n Stellungsfaktoren lineare Funktion: w1f1(x) + w2f2(x) + w3f3(x) wnfn(x) Marco Block November 2003 Reinforcement Learning goes FUSC# Arbeitsweise von TD-Leaf() Reward {-400, 0, 400} 4 Bauern im Vorteil als Sieg KnightCap {-1,0,1} Stellungsfolge+HauptVarianten(HV) :... X1X1 X2X2 XNXN E1E1 E2E2 ENEN Evaluationswerte auch gespeichert E[N] := -400 for i:=1 to N-1 do td[i] := E[i+1] - E[i] go in HV[i] compute pd[i] go out HV[i] end i vectorUpdate Lernalgorithmus: w1f1(xi) + w2f2(xi) + w3f3(xi) wnfn(xi)... w1f1(xi) + w2f2(xi) + w3f3(xi) wnfn(xi) pd[i] = Evaluationsvektor w auf diesen Berechnungen basierend erneuern und anschliessend normalisieren (auf Bauernwert 100)

5 Marco Block Temporale Differenz x 1,..., x N-1, x N eigene Stellungen unserer Partie. x1x1 x2x2 x N-1 xNxN J ~ (x 1, w) J ~ (x 2, w) J ~ (x N-1, w) J ~ (x N, w) := r(x N ) td[1] td[N-1] Reinforcement Learning goes FUSC# ich stehe besser, ergo erwarte ich einen Sieg... November 2003 Modifizierung : positive td[i] - auf 0 setzen, es sei denn KnightCap sagt den richtigen Zug des Gegners voraus negative td[i] - bleiben unverändert (eigene Fehler)

6 Marco Block VectorUpdate bei TD() Aktualisierung des Evaluationsvectors w : Lernrate Gradientgewichtete Summe der Differenzen im Rest der Partie Reinforcement Learning goes FUSC# November 2003

7 Marco Block LeafNodes A 4 C 4 F 4 L 4 Tiefe d xtlxtl xtxt MinMax + TD() = TD-Leaf() Reinforcement Learning goes FUSC# November 2003

8 Marco Block VectorUpdate bei TD-Leaf() Aktualisierung des Evaluationsvectors w : Reinforcement Learning goes FUSC# November 2003

9 Marco Block Welches wählen? x1x1 xNxN =1: xtxt x1x1 xNxN 0<<1: xtxt Gewichtung der Differenzen im Rest der Partie x1x1 xNxN =0: xtxt heuristisch: =0.7 bis Fehler einen Effekt hervorruft Reinforcement Learning goes FUSC# November 2003 td[t]

10 Marco Block VectorUpdate t > 0: Stellung x t wurde vermutlich unterbewertet w = w + pos. Vielfaches des Gradienten J ~ (x t, w) > J ~ (x t, w) t < 0: Stellung x t wurde vermutlich überbewertet w = w + neg. Vielfaches des Gradienten J ~ (x t, w) < J ~ (x t, w) kurz: t Reinforcement Learning goes FUSC# Aktualisierung des Evaluationsvectors w : November 2003 was muss ich ändern um wieviel

11 Marco Block Fazit: TD() -> TD-Leaf() TDLeaf(): TD(): Reinforcement Learning goes FUSC# November 2003

12 Marco Block vielen Dank fürs zuhören... das wars November 2003

13 Marco Block Algorithmus Reinforcement Learning goes to FUSC# November 2003 Data: E[1..N], HV[1..N],, E[N] := -400 for i:=1 to N-1 do td[i] := E[i+1] - E[i] modifizierungTD go in HV[i] compute_pd[i] go out HV[i] end i vectorUpdate(w) normalisiere(w) Lernalgorithmus:


Herunterladen ppt "Wie lernt FUSC# mit TD( )? Marco Block... X1X1 X2X2 XNXN x1x1 x2x2 pd[i] =w1f1(x) + w2f2(x) + w3f3(x) +... + wnfn(x)... w1f1(x) + w2f2(x) + w3f3(x) +..."

Ähnliche Präsentationen


Google-Anzeigen