ppt

Werbung
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
…
Herunterladen