TESINE PROPOSTE PER LA PARTE DI APPRENDIMENTO PER RINFORZO
1)
Il problema del “n-Armed Bandit” (Sutton, pag. 26)
n-armed bandit problem: n = 10; a = a1, a2, …, ak, …, a10.
La simulazione consiste in un set di 2000 task.
Per ogni task, eseguo 1000 volte la scelta dell’azione:
t = t1, t2, …, t1000
a = a(t1), a(t2), …, a(t1000)
r = r(a(t1)), r(a(t2)), …, r(a(t1000))
r(ak) viene selezionato in modo random da una distribuzione Gaussiana con media µk, diversa per le
diverse azioni, ma costante per tutto il task, e varianza 1. µk = Q*(ak).
Misuro, per ogni istante di tempo t:
Il reward dell’azione (in questo caso viene dato un reward  0 per ogni azione)
Calcolo la ricompensa totale (Value Function).
Valuto la performance dopo le 1000 giocate di ogni task.
Quanto vale µk? Per ogni task vario µk estraendolo da una distribuzione Gaussiana con media = 0 e
varianza = 1.
2)
Recycling Robot (Sutton pag. 55)
Con alcune semplificazioni, il robot raccoglitore può essere modellato come Markov decision
process, ovvero MDP.
Stato: S = {high, low}
Azioni: A = {wait, search, recharge}
Policy:
A(high) = {wait, search}
A(low) = {wait, search, recharge}
Goal: collezionare il maggior numero di lattine.
Funzione stato prossimo:
Ps→s’|a= Pr{st+1 = s’|st = s, at = a}
Se il livello di energia è high (st = high):
se scelgo Wait, st+1 = high.
se scelgo Search, st+1 avrà una certa probabilità di diventare low.
Phigh→low|Search= Pr{st+1 = low|st = high, at = Search} = α
Se il livello di energia è low (st = low):
se scelgo Wait, st+1 = low.
se scelgo Recharge, st+1 = high.
se scelgo Search, st+1 avrà una certa probabilità di fermarsi.
Plow→low|Search= Pr{st+1 = low|st = low, at = Search} = 
Funzione Reward:
Rs→s’|a= E{rt+1 = r’|st = s, at = a, st+1 = s’}
Rsearch reward se il robot sta cercando.
Rwait reward se il robot sta fermo.
-3 se occorre portarlo a ricaricarsi
0 se il robot va autonomamente a ricaricarsi
NB: Rsearch > Rwait
Il comportamento dinamico del robot raccoglitore può essere rappresentato dal seguente transition
graph:
In modo più analitico, si possono tabellare le probabilità di transizione e i rewards attesi come nella
figura che segue:
Esempio:
  0.4,   0.1,   0.8, R search  3, R wait  1
3)
Jack’s Car Rental (Sutton pag. 98)
Jack gestisce due locazioni di autonoleggio per conto di una compagnia nazionale.
In ogni locazione, se quando arriva un cliente l’auto è disponibile, Jack guadagna 10 Euro.
Se l’auto non è disponibile, perde l’affare. Le auto diventano disponibili il giorno dopo che sono
state restituite dopo il noleggio.
Jack può muovere di notte le auto da un sito all’altro al costo di 2 Euro per auto.
Assumiamo che il numero di auto richieste e restituite in ognuno dei due autonoleggi sia
rappresentato da una distribuzione di Poisson: la probabilità che vengano richieste n auto è (n/n!)e, dove  è il valore atteso (media) di auto richieste o restituite.
In particolare si assume  pari a 3 e 4 per le richieste di noleggio nella prima e seconda locazione, e
3 e 2 per la restituzione.
Supponiamo che non ci possono essere più di 20 auto in uno dei due autonoleggi (le auto in più
vengono inviate al centro di raccolta nazionale della compagnia).
Supponiamo anche che il numero di auto che si possono spostare per notte sia di 5.
Questo problema si può formulare con un MDP dove lo stato è rappresentato dal numero di auto
presenti in ciascuno dei due autonoleggi al termine di una giornata e le azioni il numero di auto che
vengono spostate durante la notte.
Considerare  = 0.9. Il reward sarà il reward accumulato durante il giorno + notte.
Si parta dalla policy (s,a) = 0: nessuna auto viene mossa. Applicare la “Policy Iteration”.
4)
Gambler’s Problem (Sutton pag.101)
Consideriamo uno scommettitore che scommette su testa o croce.
Se esce testa, vince tanti euro quanti ne ha scommesso. Se esce croce, perde gli euro che ha
scommesso.
Il gioco termina quando lo scommettitore arriva ad accumulare 100 euro o perde tutto il suo
capitale.
Il suo capitale di partenza è variabile tra 1 e 99 euro. Ad ogni lancio della moneta, lo scommettitore
può decidere quanto scommettere sul fatto che esca testa.
Undiscounted, episodic, finite MDP.
Lo stato è il capitale accumulato dal giocatore: s = {1, 2,…,99}.
L’azione è quanto viene scommesso ad ogni lancio: a = {1, 2,…,min(s, 100-s)}.
La ricompensa è zero per tutte le transizione eccetto quella per cui lo scommettitore raggiunge il
goal, cioè i 100 euro, in qual caso è +1.
Una state-value function allora dà la probabilità di vincere da ciascun stato.
Una policy è un mapping tra i livelli di capitale e le scommesse.
La policy ottima massimizza la probabilità di raggiungere il goal.
Conosciamo la probabilità p con cui esce testa (la moneta può essere truccata e quindi le due
condizioni testa/croce possono non essere equiprobabili).
La dinamica dell’ambiente non dipende da a ed è rappresentata dalla transizione da uno stato
all’altro che a sua volta è funzione del fatto che esca testa o meno.
Vogliamo massimizzare la probabilità di vincere (supponiamo p=0.4). Si può fare tramite la Value
Iteration.
Provare con diversi valori di p (es.: 0.4, 0.5, 0.6)
5)
Windy Gridworld (Sutton pag. 146)
Sia data una gridworld standard come nella figura seguente, con uno stato start S ed uno goal G, ma
con una differenza: nella parte centrale della griglia c’è vento.
Le azioni sono le solite, {up, down, right, left}, ma nella regione centrale gli stati prossimi risultanti
sono traslati in su da un vento la cui forza varia da colonna a colonna.
La forza del vento è fornita sotto ciascuna colonna, come numero di celle di traslazione in su.
Per esempio, se si è nella cella a destra del goal, l’azione left ci porta nella cella appena sopra il
goal.
Trattare questo caso come undiscounted episodic task, con rewards costanti di -1 finché non si
raggiunge il goal.
Si può applicare a questo task l’algoritmo Sarsa -greedy, con  = 0.1 e α = 0.1, e con i valori Q(s,
a) = 0 per tutti gli s, a.
6)
Playing cat and mouse (Robert Schapire's formulation)
The assignment is to use your code to compute optimal policies for a mouse who lives with a cat in
the following grid world:
The mouse (M) can occupy any of the 31 blank squares. The cat (C) also can occupy any square,
except for square (6,1) which is the mouse's hole (too small for the cat to squeeze in). There is
cheese (z) in squares (2,3) and (7,3) that never moves. Thus, this MDP has 31*30=930 states.
The cat and the mouse can each move one square in any direction -- vertically, horizontally or
diagonally. They also can choose not to move at all. Thus, there are nine possible moves from each
square. If an action is attempted that causes the creature to bump into a wall, then it simply stays
where it is.
In this problem, we will always take the point of view of the mouse. When the mouse is on the
cheese, it receives a reward of 1. When the cat is on the mouse, it (the mouse) receives a reward of
-11. When the cat is on the mouse, and the mouse is on the cheese, the reward is -10. All other
configurations have a reward of 0. Thus, the mouse is trying to eat cheese while simultaneously
avoiding the cat.
We will consider three different cats. The first cat, poor thing, is blind and oblivious, and simply
wanders randomly around its environment choosing randomly among its nine available actions at
every step. The second cat is hungry, alert and unrelenting. This cat always heads straight for the
mouse following the shortest path possible. Thus, after the mouse makes its move, the cat chooses
the action that will move it as close as possible to the mouse's new position. (If there is a tie among
the cat's best available options, the cat chooses randomly among these equally good best actions.)
However, when the mouse is in its hole and out of sight, the cat reverts to aimless (i.e., random)
wandering. The third cat is also alert, but has a more sporting disposition, and therefore follows a
combination of these two strategies: half the time, it wanders aimlessly, and half the time, it heads
straight for the mouse.
States are encoded as four tuples, the first two numbers indicating the position of the mouse, and the
second two numbers the position of the cat. Thus, 2:2:5:2 indicates that the mouse is in (2,2) and
the cat is in (5,2). The cat and the mouse alternate moves. However, in encoding the MDP, we
collapse both moves into a single state transition. For instance, from the configuration above, if the
mouse moves to (3,1) and the cat responds by moving to (4,1), this would be encoded as a single
transition from state 2:2:5:2 to 3:1:4:1. Actions in the MDP refer to action's that the mouse can
make; the cat's actions are effectively "hard-wired" into the dynamics of the MDP itself.
For each of the three cats, your job will be to compute the mouse's optimal policy, i.e., the action
that should be taken at each state to maximize the mouse's expected discounted reward, where we
fix the discount factor (gamma) to be 0.95. You can then watch the cat and the mouse go at it using
a primitive animator that we are providing.
Exploring optimal behavior
Once you have everything working, you should take some time to understand the mouse's behavior
in each of the three cases. Then briefly write up your observations in 2-4 paragraphs (all together,
not per case). You can make observations that are either anecdotal or quantitative or both. Think
about questions like the following: How is the mouse behaving in each case and why does this
behavior make sense? Is it what you would have expected, or are there aspects of the mouse's
behavior that you found surprising? What happens if you take the mouse's optimal policy for cat A
and have the mouse follow that policy when playing against cat B? Since there are three cats, there
are nine possibilities here. Construct a matrix showing the utility (say, averaged over all possible
starting states), for all nine possibilities. Which policy should the mouse follow if it doesn't know
which cat it's up against? Why? You may also wish to explore the performance of the algorithms
themselves. For instance, how many iterations does it take to reach convergence?
7)
General Cat and Mouse (n x n grid):
There are several solid obstacles, several stationary pieces of cheese, one mouse hole and a nonstationary cat. The cat moves (after the mouse moves) to minimize its distance to the mouse,
choosing randomly between equal quality moves. The cat cannot see or move to the mouse if it is
hiding in its hole. Each map is randomly generated (on init) at the beginning of each trial, but does
not change between consecutive episodes. The agent gets a small positive reward for each step that
the mouse occupies the same grid space as a piece of cheese and a large negative reward if the cat
and mouse occupy the same grid space. An episode ends when the cat catches the mouse. The
agent's objective is to navigate the mouse through the maze, collecting as much cheese as possible
while avoiding the cat.
This is a generalization of Robert Schapire's formulation.
Episodic task
Action Space:
mouse movement
a ∈ [0,7]
|a| = 8
Observation Space:
mouse's position and cat's position and if mouse is in hole
[mp, cp, flag] where each {mp,cp}∈ [0, n*n -1 and flag ∈ [0,1]
Reward:
if [{mp} == {cheese position}] then +5
if [{cp} == {mp}] then -100
0 otherwise
Performance measure:
cumulative reward
Rmax = +5
Rmin = -100
8)
Blackjack (Sutton, pag.112)
È il gioco di carte popolare dei Casinò. L’obiettivo è ottenere carte la cui somma dei valori è più
grande possibile ma non eccede 21. Tutte le figure valgono 10, e l’asso può valere o 1 o 11. Si
consideri la versione in cui ciascun giocatore compete indipendentemente contro chi fa le carte
(tiene banco). Il gioco inizia con due carte date sia al giocatore sia a chi tiene banco.Una delle carte
di chi tiene banco è coperta l’altra è scoperta. Se il giocatore ha immediatamente 21 (un asso e una
figura), è chiamato un natural. Egli ha vinto a meno che chi distribuisce le carte non abbia anche lui
un natural, in qual caso è patta. Se il giocatore non ha un natural, può chiedere altre carte, una alla
volta (hits), finché non si ferma (sticks) o supera 21 (goes bust). Se va fuori, ha perso. Se si ferma,
allora è il turno di chi tiene banco. Questi tira o si ferma secondo una strategia fissa, senza scelta: si
ferma per una somma pari o superiore a 17, in tutti gli altri casi tira. E chi tiene il banco va fuori,
allora il giocatore vince; negli altri casi il risultato - vincita, perdita o pareggio – è determinato da
quale somma finale è più vicina a 21.
Il gioco del blackjack può essere formulato come un MDP episodico finito. Ciascuna giocata di
blackjack è un episodio. Le ricompense (rewards) di +1, -1 e 0 sono assegnate per vincita, perdita o
pareggio. Le ricompense per tutte le altre situazioni sia 0. Non si usa lo sconto ( = 1), pertanto i
rewards terminali sono anche i Returns. Le azioni del giocatore sono hit o stick. Gli stati dipendono
dalle carte del giocatore e dalla carta scoperta di chi tiene banco. Si assuma che le carte siano
estratte da un mazzo infinito (cioè con rimpiazzo) così che non vi è alcun vantaggio a tener traccia
delle carte già uscite. Se il giocatore ha un asso che può essere contato come 11 senza scassare
(going bust), allora l’asso è detto usable. In questi casi è sempre contato come 11 perché contarlo 1
farebbe la somma 11 o meno, in qual caso non ci sarebbe nessuna decisione da prendere perché,
ovviamente, il giocatore dovrebbe tirare (hit) sempre. Pertanto il giocatore prende una decisione in
base a tre elementi (tre variabili): la sua somma corrente (12-21), la carta scoperta del banco (asso –
10), se ha o meno un asso usable. Questo porta ad un totale di 200 stati. Si consideri la policy in cui
il giocatore si ferma (stick) se la somma delle carte è 20 o 21, tira (chiede carta) altrimenti. Qual è la
state-value function? Dopo averla plottata, che interpretazione darle?