Reinforcement Learning Seminar F Gerhard NEUMANN Helmut GRABNER A1: Fahren mit Ball B1: Ball stoppen Aufgabe A1 Fahren mit Ball A1: Fahren mit Ball Aufgabenstellung Der Roboter soll mit dem Ball und einer gegebenen Geschwindigkeit gerade vorwärts fahren. Der Ball befindet sich zu Beginn entweder in der “Schaufel” oder auf einer geraden Linie vor ihm. A1: Fahren mit Ball Modell: Zustandsmenge S Eigene Geschwindigkeit zu klein; OK; zu groß Ballentfernung (Abgeschätzt durch Radius) habe Ball; mittel; weit sehe Ball nicht (3 x 3) +1 = 10 Zustände A1: Fahren mit Ball Modell: Aktionsmenge A Beschleunigung stark negative; negative; null; positive; stark positive stark negative und negative Beschleunigung ist nur möglich, wenn sich der Roboter vorwärts bewegt (=kein Rückwärtsfahren ermöglichen) 5 Aktionen zusammen mit den 10 Zuständen: 50 StateAction-Paare A1: Fahren mit Ball Modell: Rewards R “Hat Ball” und “Geschwindigkeit = OK” aufsteigende Rewards +1, +2, +3,.. +10 bei 10: Ende der Episode: WINNING sehe Ball nicht Ende der Episode: LOOSE sonst -1 immer (schnellst möglichstes Beenden der Episode, anfahren) A1: Fahren mit Ball Ergebnisse Funktioniert Relative einfach zu Lernen (ca. 30 Episoden) RL (eigentlich) nicht notwendig (vgl. fwd) Probleme “Khepera-Stall” zu klein -> keine großen Geschwindigkeiten trainierbar A1: Fahren mit Ball Ergebnisse Episode: Alpha: Epsilon: Gamma: Lambda: 200 0.0100 0.1000 0.9500 0.9000 Q - Table 0.2274 1.3847 0.0008 0.0458 0.0308 kein B. 1.9155 1.2301 2.1297 2.1206 7.3502 v< nahe 0.3670 0.3308 0.1587 0.2015 3.5749 v< mittel 0.1488 0.2875 0.2281 0.2372 1.8260 3.4439 3.2725 32.6367 5.7928 3.8408 0.0527 0.2890 0.0366 0.0783 1.9555 0.0031 0.0529 0.0088 0.1783 0.0000 3.1233 11.7049 3.6636 3.7540 3.8855 2.9444 0.2166 0.0956 0.2419 0.0216 0.2653 0.0294 0.0270 0.0393 0.0467 v< fern v= nahe v= mittel v= fern v> nahe v> mittel v> fern Aktionen (Beschleunigung): 0 .. stark negative 3 .. positive 1 .. negative 4 .. Stark positive 2 .. null Aufgabe B1.1 Ball stoppen B1.1: Ball stoppen Aufgabenstellung Der Roboter soll den Ball, der mit einer beliebigen Geschindigkeit von vorne auf ihn zukommt, möglichst “gut” (schnell) abstoppen und bei sich behalten. B1.1: Ball stoppen Modell: Zustandsmenge S Ballentfernung habe Ball Eigenbewegung • ja; nein klein; mittel relative Geschwindigkeit des Balles • klein; mittle, hoch, sehr hoch weit entfernt sehe Ball nicht (2 + (2 x 4) + 1) + 1 = 12 Zustände B1.1: Ball stoppen Abschätzungen Abstand des Balles distance f radius k 1 d radius k und d bestimmt mittels Fit (Mathematica) Geschwindigkeit distance v t starke Unterschiede in der Geschwindigkeits(Distance-, Radius-) Abschätzung: Daher Mittelung über die gesamte Episode (bis “Hat Ball”). B1.1: Ball stoppen Modell: Aktionsmenge A Beschleunigung sehr stark negative; stark negative; negative; null; positive (prozentuell) positive Beschleunigung ist nur möglich, wenn sich der Roboter rückwärts bewegt (=kein Vorwärtsfahren ermöglichen) 5 Aktionen zusammen mit den 12 Zuständen: 60 StateAction-Paare B1.1: Ball stoppen Modell: Rewards R “Hat Ball” +1 sobald der Roboter steht und den Ball hat bzw. wenn er ihn wieder “verliert”: Wartezeit (1 sec) • Falls danach “Hat Ball”: +20 (mit Abfrage!) Ende der Episode: WINNING • sonst: negativer Reward gewichtet mit der Entfernung des Balles Ende der Episode: LOOSE Rewards für jeden Zug -0.1 bei negativen Beschleunigungen -0.2 immer (schnellst möglichstes Beenden der Episode, abstoppen) B1.1: Ball stoppen Ergebnisse Funktioniert nicht gut Sehr schwer zu Lernen (> 200 Episoden) Diskretisierung zu ungenau (Ballentfernung, Geschwindigkeit) -> nur wenige Ballgeschwindigkeiten gut erlernbar mit “Standard-Schaufel” wird Stehenbleiben gelernt (1/4 der Fälle bleibt der Ball hängen) Probleme Kamera zu langsam für hohe Geschwindigkeiten Gleiche (ähnliche) Situationen mit unterschiedlichem Ausgang -> Verwirrung B1.1: Ball stoppen Ergebnisse Episode: Alpha: Epsilon: Gamma: Lambda: 300 0.0100 0.1000 0.9500 0.9000 Q - Table -0.3297 -0.3634 -0.2972 -0.4561 -0.3719 -0.4353 -0.3549 -0.4477 2.7378 -0.4857 habe speed > fern - -1.7305 -1.7856 -1.7697 -1.5141 -1.0459 nahe v< Aktionen (Beschleunigung): 0 .. sehr stark negative 1 .. stark negative 2 .. negative -1.3023 -1.2628 -1.2390 -1.3372 -1.3511 -0.7657 -0.9505 -0.9453 -0.1715 -0.8447 nahe v= nahe v> -0.4906 -0.4969 -0.4891 -0.5904 -0.5596 nahe v>> 3 .. null 4 .. Positive (%) -0.0365 -0.0453 -0.0296 -0.0612 -0.0903 mittel v< 0.0000 0.0000 -0.0016 0.0000 -0.0118 mittel v= 0.1974 -0.6435 -0.8337 -0.9180 -0.9295 mittel v> -0.6724 -0.6892 -0.6674 -0.6662 -0.6668 -0.1371 -0.1383 0.0342 -0.2781 -0.1283 mittel habe v>> speed=0 Aufgabe B1.2 Ball stoppen mit linearen Function Approximator (FA) B1.2: Ball stoppen mit linearen FA Model: Zustände 2 continuierliche States (2D) Ballentfernung Ballgeschwindigkeit 3 verschobene Tilings (vgl. UE) je 12 x 12 Anmerkung: 1. Versuch (ohne Tilings) -> ups • zuerst Theorie begreifen, dann überlegen, dann programmieren ;-) 3 x (12 x 12) = 432 Parameter (Features) pro Aktion B1: Ball stoppen mit linearen FA Model: Aktionen, Rewards Aktionen: gleich 5 Aktionen zusammen mit den 432 Features: 2160 Parameter Rewards: gleich B1.2: Ball stoppen mit linearen FA Ergebnisse Funktioniert besser Bessere Ergebnisse, aber noch schwerer zu Lernen (> 700 Episoden für annehmbares Verhalten) Probleme um genaue Ergebnisse zu erhalten noch viel größer Menge (!) an Trainingsbeispielen notwendig! B1.2: Ball stoppen mit linearen FA Ergebnisse action1 action0 0.5 0.5 Q action2 0.5 0 -0.5 25 -0.5 20 -1 0 Q 25 20 v 5 10 Distance 15 20 10 10 5 20 -1 15 v 5 10 25 -0.5 15 15 0 Q Distance v 5 10 10 15 5 20 Distance 15 25 25 action3 5 20 25 action4 Beschleunigungen 0.5 0.5 Q 25 0 -0.5 20 -1 Q 0 25 -0.5 20 -1 15 15 v 5 10 10 Distance v 5 10 10 15 5 20 25 Distance 15 5 20 25 action0: action1: action2: action3: action4: sehr stark negative stark negaive negative null positive (%) Probleme Roboter Allgemein RL Allgemeine Roboterprobleme (Khepera) Fährt Kurven (Kabel) Ausfall des Kamerabildes zu langsame Kamera ein neues Bild nur alle 50 ms Schlechte Ballerkennung Sonne, Kabel, Finger, Arm, .. Abweichungen der Messwerte (Radius) Ball nicht optimal “Schaufel” nicht optimal RL Probleme 1 wichtigster Faktor: das Model möglichst viel Vorwissen einbringen (Aktionen in gewissen States nicht zulassen, Rewards verteilen) • ACHTUNG: Roboter lernt zwar schneller, kann jedoch einige Zeit in lokalen Minima stecken bleiben. Anfangen mit “einfachen” Beispielen kann das Model überhaupt funktionieren? • Ausprobieren mit “optimalen” Parameter (wenn möglich) -> Lernen ? Unsicherheiten möglichst vermeiden • statistische Methoden (Mittelungen) • gute (lineare) Abschätzungen RL Probleme 2 Große Menge an Trainingsbeispielen für 250 Episoden (nach langen üben) ca. 1 Stunde ausprobieren von verschiedenen Modellen, Lernalgorithmen ist mit sehr großen Zeitaufwand verbunden -> Simulator fürs “Grobe” sehr viele Freiheitsgrade Parameterauswahl (, ,…) Lernalgorithmen (verschiedene Versionen) E-trace Update Aktionen ausführen bis Statewechsel ? RL Probleme 3 Zufall das Lernen hängt sehr vom anfänglichen “Zufall” ab zufällige oder falsch geschätzte Ereignisse führen zu sehr starker Verwirrung (POMDPs) kontrollierte Trainingsumgebung notwendig Alternative Lösungen auf dieser Ebene wahrscheinlich effizienter Regler “ausprogrammieren” Klassensystem Modell erstellen Anpassungen der Lernalgorithmen Klassensystem Modell Ableiten von CEnvironmentModel Funktionen implementieren float doNextState (CRIAction action) int getNewState() float getContinousState(int dimension) void getAvailableActions (ActionSet) Klassensystem Vorhanden Sarsa-, (Q-) Learning - greedy policy Q-Table Lineare Function Approximator Laden und speichern der Parameter Klassensystem Ausbaubar (Anpassungen) Policies (Parameteranpassungen z.B. ) Q-Functions Lernalgorithmen (Modelbased Learning) State Klassen Behaviors …