Reinforcement Learning - WinDizio

Transcript

Reinforcement Learning - WinDizio
http://www.windizio.altervista.org/appunti/
File distribuito con licenza Creative Commons BY­NC­SA 2.5 IT
Copyright © 2007 ­ Michele Tartara
Part I
Reinforcement Learning
In un processo decisionale Markoviano (MDP) l'agente può percepire lo stato s ∈ S in cui si trova e ha a disposizione un insieme
A di azioni.
A ogni intervallo discreto t di tempo, l'agente rileva lo stato attuale st e decide di attuare un'azione at ∈ A.
L'ambiente risponde fornendo una ricompensa (un rinforzo) rt = r(st , at ) e portandosi nello stato st+1 = δ(st , at ). Le
funzioni r e δ fanno parte dell'ambiente, dipendono unicamente dallo stato e dall'azione corrente (non dalle precedenti) e non
sono necessariamente note all'agente.
Obiettivo del reinforcement learning (apprendimento con rinforzo) consiste nel imparare una policy π : S → A che , per ogni
stato s ∈ S in cui si trova il sistema, indichi all'agente un'azione a ∈ A tale da massimizzare il rinforzo totale ricevuto durante
tutta la sequenza di azioni compiuta.
Il rinforzo totale derivato dalla policy π (discounted cumulative reward) è calcolato come
V π (st ) = rt + γrt+1 + γ 2 rt+2 + . . . =
∞
X
γ i rt+1
i=0
e i vari rinforzi derivano dalla successiva applicazione della policy π agli stati st+1 , st+2 , . . ..
Si dice ottimale una policy
π ∗ ≡ argmaxV π (s), (∀s)
π
∗
che massimizza V π per tutti gli stati. In tal caso, V π viene detta V ∗ .
Una policy ottimale può portare il rinforzo ottenuto nel compiere una singola azione ad essere anche basso (o addirittura
negativo), purchè complessivamente questo conduca ad ottenere un rinforzo maggiore.
1 Q-Learning
Algoritmo utile quando è importante l'enfasi sulla coppia stato-azione, cioè quando l'uso di un'azione piuttosto che di
un'altra porta a risultati notevolmente dierenti, a partire dallo stesso stato.
È un algoritmo di tipo Temporal Dierence nell'accezione o-policy, cioè che valuta e migliora una policy non necessariamente
uguale quella utilizzata per il controllo: ciò gli permette, ad esempio, di apprendere una policy ottimale per sfruttare la conoscenza
acquisita ma, al tempo stesso, di utilizzarne una meno orientata allo sfruttamento e più all'esplorazione, in modo di migliorare
ulteriormente la policy futura.
1.1 Deterministico
È uno dei metodi utilizzabili per calcolare la policy ottimale.
Per ottenerla, si passa prima attraverso il calcolo di una funzione denita su stati e azioni che esprime numericamente una
valutazione sugli stati (come ad esempio V ∗ ), successivamente si implementa la policy sulla base di tale funzione
A partire da V ∗ è possibile ottenere π ∗ secondo il seguente ragionamento: l'azione ottimale nello stato s è quell'azione a
che massimizza la somma della ricompensa immediata r(s, a) e del valore di V ∗ relativo allo stato successore di s (cioè il valore
totale di tutte le ricompense future attese) ridotto del coeciente γ (perchè calcolato a partire da uno stato st+1 =δ(s, a) che è
futuro), cioè
π ∗ (s) = argmax [r(s, a) + γV ∗ (δ(s, a))]
a
Purtroppo, questo approccio è possibile solo quando si conoscono r e δ , cioè una conoscenza ottimale dell'ambiente come nel
caso della Programmazione Dinamica.
Negli altri casi, invece di V ∗ si può usare la funzione Q.
1.1.1 La funzione Q
La funzione Q è la massima ricompensa scontata ottenibile a partire da s, denita come
Q(s, a) = r(s, a) + γV ∗ (δ(s, a))
cioè come la somma della ricompensa immediata e della massima ricompensa ottenibile a partire dal prossimo stato.
1
http://www.windizio.altervista.org/appunti/
File distribuito con licenza Creative Commons BY­NC­SA 2.5 IT
Copyright © 2007 ­ Michele Tartara
Algorithm 1 L'algoritmo Q-Learning, assumendo ricompense e azioni deterministiche
Per ogni s, a inizializza la casella Q̂(s, a) della tabella a 0.
Osserva lo stato attuale s
Ripeti continuamente:
• Scegli un'azione a ed eseguila
• Ricevi una ricompensa immediata r
• Osserva il nuovo stato s0
• Aggiorna la casella Q̂(s, a) come segue:
Q̂(s, a) ← r + γmax
Q(s0 , a0 )
0
a
• s ← s0
La policy ottimale diventa quindi
π ∗ (s) = argmaxQ(s, a)
a
Anche se sembra una semplice riscrittura, è comunque importate perché mostra che non si ha più dipendenza da r e δ . Inoltre,
al contrario che in V ∗ , la funzione Q non necessità di look-ahead: è un semplice numero, che però riassume le informazioni su
tutti gli stati futuri.
La conoscenza di Q, quindi, corrisponde indirettamente alla conoscenza della policy ottimale. Tuttavia, è necessario ora
trovare il modo di apprendere Q, per il momento ancora ignota.
Un algoritmo per apprendere Q Dobbiamo scoprire Q a partire dall'unico dato in nostro possesso, cioè le ricompense
immediate che l'agente ottiene compiendo alcune azioni (che possono essere scelte a caso).
Considerando che V ∗ è il massimo valore ottenibile di Q al variare dell'azione compiuta
V ∗ = max
Q(s, a0 )
0
a
possiamo (per sostituzione) riscrivere la denizione di Q come
Q(s, a) = r(s, a) + γmax
Q(δ(s, a), a0 )
0
a
ottenendo quindi una denizione ricorsiva.
L'apprendimento di Q può quindi procedere a partire da un'ipotesi Q̂, rappresentata come una tabella che, per ogni coppia
stato-azione riporta il valore ipotizzato Q̂(s, a). La tabella viene inizializzata con valori qualsiasi (generalmente, tutti pari a
0). L'agente, ripetutamente, osserva lo stato corrente s, esegue un'azione a e osserva il risultato r = r(a, s) e il nuovo stato
s0 = δ(s, a). Aggiorna quindi il valore Q̂(s, a) seguendo la regola
Q̂(s, a) ← r + γmax
Q̂(s0 , a0 )
0
a
Quindi, in breve, può essere descritto dall'Algoritmo 1.
Con questo algoritmo, i valori di Q̂ sono assicurati convergere (dopo un numero sucientemente alto di iterazioni) ai valori
di Q.
È da notare che l'algoritmo non specica come scegliere l'azione da compiere ad ogni passaggio. La scelta è libera. Si
potrebbe scegliere l'azione con il massimo valore di Q̂, ma questo porterebbe a dare troppa importanza alle azioni esplorate
all'inizio dell'algoritmo, magari a discapito di altre migliori. Si preferisce quindi, generalmente, un approccio probabilistico, in
cui le azioni con Q̂ più alto sono scelte con maggiore probabilità (ma non con certezza). Tale probabilità può essere anche
calcolata in modo variabile con il tempo, per privilegiare, inizialmente, l'esplorazione (esploration ) e, in tempi successivi, lo
sfruttamento (esploitation ).
Talvolta si struttura l'algoritmo in modo tale da preferire lo sfruttamento solo nel caso in cui un'azione abbia probabilità
particolarmente elevata, usando invece l'esplorazione in situazioni di quasi equivalenza.
2
http://www.windizio.altervista.org/appunti/
File distribuito con licenza Creative Commons BY­NC­SA 2.5 IT
Copyright © 2007 ­ Michele Tartara
1.2 Indeterministico
Quando non si hanno certezze relative al risultato
deve cambiare il valore V π in modo tale che sia il valore atteso
· ∞ di un'azione,
¸
P
del rinforzo cumulativo scontato: V π (st ) = E
γ i · rt+i
i=0
Analogamente al caso deterministico, è possibile arrivare a denire la funzione Q come
X
Q(s, a) = E[r(s, a)] + γE[V ∗ (δ(s, a))] = E[r(s, a)] + γ
P(s0 |s, a)V ∗ (s0 )
s0
dove P(s0 |s, a) è la probabilità che compiendo l'azione a nello stato s si arrivi allo stato s0 .
Si può, anche in questo caso, riscriverla in forma ricorsiva
X
Q(s, a) = E[r(s, a)] + γ
P (s0 |s, a)max
Q(s0 , a0 )
0
a
s0
Bisogna, inne, riscrivere la funzione che aggiorna Q (perchè quella del caso deterministico non gli permetterebbe di convergere) in modo tale da dare un importanza sempre minore ai nuovi dati ricevuti da una data coppia (s, a)
Q̂n (s, a) = (1 − αn )Q̂n−1 (s, a) + αn [r + γmax
Q̂n−1 (s0 , a0 )]
0
a
dove n è il numero dell'iterazione dell'algoritmo e αn è
αn =
1
1 + visitsn (s, a)
con visitsn (s, a) pari al numero di volte che la coppia (s, a) è stata visitata no all'n-esima iterazione inclusa.
Questa è tuttavia solo una possibile descrizione di αn , se ne può usare anche un'altra purchè αn → 0 per t → ∞.
In generale, α molto alto è adatto ad ambienti particolarmente dinamici, per favorire l'adattamento della policy all'ambiente,
mentre α basso si presta all'uso in ambienti statici, in quanto permette di apprenderne al meglio le caratteristiche.
2 TD-learning
Gli algoritmi di apprendimento di tipo Temporal Dierence si basano sulla riduzione delle discrepanze tra stime eseguite
dall'agente in istanti dierenti. Q-learning è un algoritmo TD, ma si basa sulla dierenza tra stati in istanti immediatamente
adiacenti. TD è più generico e può considerare istanti e stati più lontani.
È una combinazione delle idee del metodo Monte Carlo e della Programmazione Dinamica. Può apprendere direttamente dai
dati grezzi, senza un modello delle dinamiche dell'ambiente (come MC). Aggiorna le stime basandosi in parte su stime apprese
in precedenza, senza attendere il risultato nale (bootstrap, come DP).
È adatto ad apprendimento senza modello di ambienti dinamici. Converge (utilizzando una policy π ssa) se il
passo temporale è sucientemente piccolo, o se si riduce col tempo.
L'apprendimento è guidato dalle dierenze temporali nella predizione:
∆Vt (st ) = α[rt+1 + γVt (st+1 ) − Vt (st )]
dove ∆Vt (st ) è la variazione del valore dello stato attuale st , α è il coeciente di apprendimento, rt+1 è il rinforzo osservato
(atteso) all'istante successivo, γ è il discount rate, Vt (st+1 ) è il valore che si prevede attualmente di ottenere dallo stato futuro
st+1 . Vt (st ), il valore attuale dello stato in cui ci si trova, è sottratto per poter ottenere la dierenza (che è ciò che stiamo
calcolando).
Se Q-learning calcola i propri valori secondo la formula
Q(1) (st , at ) ≡ rt + γmaxQ̂(st+1 , a)
a
con look-ahead a un passo, è possibile usare anche una formula a due passi
Q(2) (st , at ) ≡ rt + γrt+1 + γ 2 maxQ̂(st+2 , a)
a
o in generale con look-ahead a n passi
Q(n) (st , at ) ≡ rt + γrt+1 + . . . + γ (n−1) rt+n−1 + γ n maxQ̂(st+n , a)
a
3
http://www.windizio.altervista.org/appunti/
File distribuito con licenza Creative Commons BY­NC­SA 2.5 IT
Copyright © 2007 ­ Michele Tartara
2.1 TD(λ)
Basandosi su questa considerazione, Sutton ha introdotto l'algoritmo T D(λ) che combina tutte le Q con prospezioni di varie
lunghezze per mezzo di una costante 0 ≤ λ ≤ 1
h
i
Qλ (st , at ) ≡ (1 − λ) Q(1) (st , at ) + λQ(2) (st , at ) + λ2 Q(3) (st , at ) + . . .
o equivalentemente in modo ricorsivo
h
i
Qλ (st , at ) = rt + γ (1 − λ)maxQ̂(st , at ) + λQλ (st+1 , at+1 )
a
Con queste formule, all'aumentare di λ si considerano sempre di più campioni distanti.
Se l'agente sta seguendo una policy ottimale, per λ = 1 Qλ fornirà una stima perfetta di Q anche se sono presenti delle
imperfezioni in Q̂. D'altra parte, se la policy non è ottimale, le ricompense rt+i osservate troppo lontano nel futuro potrebbero
essere molto inaccurate.
L'algoritmo TD(λ) è utile per valutare stati che abbiano più o meno lo stesso valore indipendentemente
dall'azione svolta.
Fa uso di eligibility trace, cioè calcola i valori che gli interessano come media pesata (tramite λ) di tutte le prospezioni
sugli stati futuri.
3 Programmazione Dinamica (DP)
Insieme di algoritmi utilizzabili per calcolare una policy ottimale dato un perfetto modello dell'ambiente sotto forma di Markov
Decision Process (MDP).
Sono poco usati per il Reinforcement Learning perchè richiedono un modello completo, ma sono abbastanza ecienti
e permetterebbero di raggiungere una soluzione in tempo poliniomiale rispetto al numero di stati e azioni.
Bootstrapping property La programmazione dinamica fa uso della tecnica del bootstrapping, che consiste nel guardare
avanti lungo una transizione di stato ed utilizzare le stime attualmente disponibili dell'utilità di tale stato per migliorare la
stima del valore di utilità dello stato considerato.
Co-convergenza Il secondo concetto presente nella DP consiste nella presenza di due processi simultanei che interagiscono:
il primo rende il valore degli stati consistente con la policy corrente, mentre il secondo migliora la policy basandosi sui valori
attuali.
Nell'algoritmo policy iteration le due fasi si alternano e ognuna termina prima che cominci l'altra.
Nell'algoritmo value iteration viene eseguita una singola iterazione di calcolo dei valori tra ogni passo di miglioramento della
policy.
Nel lungo termine, il risultato dei due approcci è lo stesso: si tratta sempre di General Policy Iteration.
3.1 Algoritmi
3.1.1 Policy Iteration
Partendo da una policy casuale π , la applica per calcolare i valori di utilità che produce (policy evaluation ), utilizzando, per ogni
stato, la formula
X
a
0
V (s) ←
Pass0 [Rss
0 + γV (s )]
s0
Pass0
a
dove
è la probabilità di andare dallo stato s allo stato s0 compiendo l'azione a, Rss
0 è il rinforzo ottenuto andando dallo
0
0
stato s allo stato s compiendo l'azione a, γ è il discount rate e V (s ) è il valore di utilità dello stato s0 .
Il calcolo è eseguito no a raggiungere la convergenza.
Successivamente, si calcola per tutti gli stati una nuova policy (policy improvement ) tale che
X
a
a
0
π(s) ← argmax
Pss
0 [Rss0 + γV (s )]
a
s0
cioè si denisce come π(s) l'azione che massimizza il valore di utilità dello stato s.
4
http://www.windizio.altervista.org/appunti/
File distribuito con licenza Creative Commons BY­NC­SA 2.5 IT
Copyright © 2007 ­ Michele Tartara
Ogni volta che la policy di almeno uno stato viene cambiata, è necessario ripetere l'algoritmo, rivalutando tutte le policy ed
eventualmente cercandone di nuove.
In altre parole, si calcolano alternativamente nuove policy e nuove funzioni di utilità no a giungere alla policy e alla funzione
di utilità ottimali:
E
I
E
I
E
I
E
π0 → V π0 → π1 → V π1 → π2 → . . . → π ∗ → V ∗
E
I
dove → rappresenta la valutazione (evaluation ) di una policy e → il miglioramento (improvement ) di una policy.
3.1.2 Value Iteration
Nell'algoritmo Policy iteration il passo di valutazione della Policy deve giungere a convergenza. Ciò può richiedere parecchio
tempo.
È possibile troncare tale valutazione senza perdere la garanzia di convergenza, usando l'algoritmo value iteration.
L'algoritmo di Value Iteration calcola il valore di utilità per ogni stato come
X
a
0
V (s) ← max
Pass0 [Rss
0 + γV (s )]
a
s0
nchè ∆ = |V (st ) − V (st−1 )| < θ con θ piccolo numero positivo, oppure anche con una singola passata.
Successivamente produce una policy deterministica π tale che
X
a
0
π(s) ← argmax
Pass0 [Rss
0 + γV (s )]
a
s0
cioè assegna a π(s) l'azione che massimizza il valore di utilità dello stato s, per ogni stato.
3.1.3 General Policy Iteration (GPI)
Generalizza sia PI sia VI e può essere usato per descrivere quasi tutti gli algoritmi di apprendimento con rinforzo.
Purchè i due processi di valutazione della policy (che aggiorna V ) e di miglioramento della policy (che aggiorna π ) avvengano
continuamente e in parallelo, non ha veramente importanza la granularità con cui essi si alternano, in quanto il risultato è
tipicamente lo stesso: la convergenza a V ∗ e π ∗ .
4 Metodi Monte Carlo (MC)
Non richiedono completa conoscenza dell'ambiente. Necessitano solo di esperienza, sotto forma di sequenze di stati,
azioni e ricompense provenienti da interazioni on-line o simulate con l'ambiente.
Non è necessario che un eventuale modello abbia tutte le distribuzioni di probabilità di tutte le possibili transizioni. I metodi
Monte Carlo permettono di risolvere problemi di apprendimento con rinforzo basandosi sulla media dei risultati ottenuti. I
risultati vengono considerati episodio per episodio (cioè riguardano un'intera interazione con l'ambiente) e non passopasso. Con la dicitura "metodi Monte Carlo" si indicano quindi quei metodi che si basano sulla media di risultati completi,
intesi come contrapposti ai metodi che apprendono a partire da risultati parziali.
Il metodo Monte Carlo è molto simile alla programmazione dinamica: calcola le stesse value function e interagiscono per
ottenere l'ottimalità all'incirca nello stesso modo.
La convergenza dei metodi Monte Carlo è assicurata quando il numero di visite a ogni stato tende a innito, ma le
stime per ogni stato sono indipendenti. È quindi interessante utilizzare questi metodi quando sono necessari i valori solo di
un sottoinsieme degli stati, in quanto è possibile concentrarsi su di essi ignorando gli altri.
4.1 Algoritmo
A partire da una funzione azione-valore arbitraria Q : S × A → R e utilizzando una policy arbitraria si aronta il passo di value
improvement : viene generato un episodio. Per ogni coppia stato azione (s, a) si aggiunge il rinforzo ricevuto r all'insieme dei
rinforzi ottenuti con tale coppia: Rewards(s, a).
Si calcola quindi Q(s, a) = average(Rewards(s, a)).
Si ha quindi il passo di policy imprevement : per ogni stato s la policy associata allo stato diventa π(s) = argmaxQ(s, a).
a
5