Introduction To Reinforcement Learning With Python It
Introduction To Reinforcement Learning With Python It
Definizione
Agente e Ambiente
Definizione
L'ambiente rappresenta tutto ciò con cui l'agente interagisce. Risponde alle
azioni dell'agente e fornisce feedback sotto forma di nuovi stati e ricompense.
Applicazioni dell'RL
L'apprendimento per rinforzo è ampiamente utilizzato in diversi settori in cui il processo
decisionale in condizioni di incertezza è fondamentale. Alcune applicazioni chiave
includono:
Nessun dataset
Requisito dei Dati non
ⓘ fisso (interagisce Dati etichettati
dati etichettati
con l'ambiente)
Massimizzare le
Prevedere i Trovare schemi
Obiettivo ⓘ ricompense
risultati nascosti
cumulative
Impara tramite
Associa input e
tentativi ed Identifica
Approccio di output
ⓘ errori strutture
apprendimento utilizzando dati
interagendo con nascoste nei dat
etichettati
l'ambiente
Ricompense e
Feedback Nessun feedbac
penalità guidano
Meccanismo di diretto basato esplicito, scopre
ⓘ l'apprendimento
feedback sulle risposte la struttura
attraverso le
corrette note autonomament
interazioni
Apprendimento Supervisionato
Definizione
I problemi di apprendimento per rinforzo sono spesso inquadrati come MDP, che forniscono un modo
strutturato per definire il problema. Gli MDP descrivono l'ambiente utilizzando quattro componenti chiave:
stati, azioni, transizioni e ricompense. Queste componenti lavorano insieme secondo la proprietà di Markov,
che garantisce che lo stato futuro dipenda solo dallo stato e dall'azione attuali, e non dagli stati passati.
Le quattro componenti
Stato
Definizione
Uno stato è solitamente rappresentato da un insieme di parametri che raccolgono le caratteristiche rilevanti
dell'ambiente. Questi parametri possono includere vari aspetti come posizione, velocità, rotazione, ecc.
Definizione
Un'azione $\(a\)$ è una decisione o una mossa effettuata dall'agente per influenzare l'ambiente.
L'insieme di tutte le possibili azioni è chiamato spazio delle azioni $\(A\)$.
Definizione
In molti casi, gli ambienti possono essere deterministici o stocastici, il che significa che la transizione può essere
prevedibile oppure comportare un certo grado di casualità.
Definizione
Una ricompensa $\(r\)$ è un valore numerico ricevuto dall'agente dopo aver eseguito un'azione in
uno specifico stato. La funzione che associa le transizioni alle ricompense attese è chiamata
funzione di ricompensa $\(R\)$.
Le ricompense guidano l'agente verso comportamenti desiderabili e possono essere sia positive che negative.
L'ingegneria delle ricompense è complessa, poiché l'agente potrebbe tentare di sfruttare le ricompense.
P (Rt+1 = r, St+1 = s′ ∣S0 , A 0 , R1 , ..., St−1 , A t−1 , Rt, St, A t)
Nota
La natura senza memoria degli MDP non significa che le osservazioni passate vengano ignorate. Lo
stato attuale dovrebbe codificare tutte le informazioni storiche rilevanti.
La durata di un compito
I compiti nell'apprendimento per rinforzo sono generalmente classificati come
episodici o continui, a seconda di come il processo di apprendimento è strutturato nel
tempo.
Definizione
I compiti episodici sono quelli che consistono in una sequenza finita di stati, azioni e
ricompense, in cui l'interazione dell'agente con l'ambiente è suddivisa in episodi distinti.
Al contrario, i compiti continui non presentano una chiara fine per ogni ciclo di
interazione. L'agente interagisce continuamente con l'ambiente senza reimpostare lo
stato iniziale e il processo di apprendimento è continuo, spesso senza un punto
terminale distinto.
Il ritorno rappresenta meglio quanto sia vantaggioso uno stato o un'azione nel lungo
termine. L'obiettivo dell'apprendimento per rinforzo può ora essere definito come
massimizzare il ritorno.
Sconto
Sebbene il ritorno semplice sia un buon obiettivo nei compiti episodici, nei compiti
continui si presenta un problema. Se il numero di passi temporali è infinito, il ritorno
stesso può diventare infinito. Per gestire questa situazione, si utilizza un fattore di
sconto per garantire che le ricompense future abbiano un peso minore, evitando che il
ritorno diventi infinito.
Definizione
k=0
Approfondisci
Modello
Definizione
Gli algoritmi di apprendimento per rinforzo possono essere suddivisi in due categorie: -
Model-based: in questo approccio, l'agente apprende o ha accesso a un modello
dell'ambiente, che gli consente di simulare stati e ricompense futuri prima di
intraprendere azioni. Questo permette all'agente di pianificare e prendere decisioni più
informate; - Model-free: in questo approccio, l'agente non dispone di un modello
diretto dell'ambiente. Impara esclusivamente attraverso l'interazione con l'ambiente,
affidandosi al metodo di tentativi ed errori per scoprire le azioni migliori.
Nella pratica, gli ambienti con modelli espliciti sono rari, rendendo difficile per gli
agenti affidarsi a strategie model-based. Di conseguenza, gli approcci model-free sono
diventati più diffusi e ampiamente studiati nella ricerca e nelle applicazioni di
apprendimento per rinforzo.
Definizione
Politica $\(\pi\)$ è la strategia che un agente segue per decidere le proprie azioni
in base allo stato attuale dell'ambiente.
Definizione
∞
vπ (s) = Eπ [Gt∣St = s] = Eπ [∑ γ k Rt+k+1 ∣St = s]
k=0
Definizione
∞
qπ (s, a) = Eπ [Gt∣St = s, A t = a] = Eπ [∑ γ k Rt+k+1 ∣St = s, A t = a]
k=0
Il Compromesso
La sfida
La difficoltà risiede nell'equilibrare efficacemente queste due strategie. Un'eccessiva
sfruttamento può portare a guadagni subottimali nel lungo termine, mentre
un'esplorazione eccessiva può risultare inefficiente e costosa. La chiave è trovare un
equilibrio ottimale che massimizzi i benefici a lungo termine minimizzando i rischi.
Nota
Caratteristiche principali
Flusso di lavoro
Un tipico flusso di lavoro in Gymnasium si presenta così:
Dopo la dismissione della libreria originale gym , è ora consigliato utilizzare gymnasium —
un fork di gym ben mantenuto e attivamente sviluppato. Nonostante il cambio di
nome, la libreria viene ancora comunemente importata con l'alias gym per garantire la
retrocompatibilità e comodità.
2. Creazione di un ambiente
env = [Link]("CartPole-v1")
3. Reset dell'ambiente
Prima di interagire con l'ambiente, è necessario riportarlo allo stato iniziale tramite
[Link]() . Questo restituisce: - observation : lo stato iniziale dell'ambiente; - info :
dati ausiliari che possono includere metadati o configurazioni specifiche dello stato.
action = env.action_space.sample()
observation, reward, terminated, truncated, info = [Link](action)
Nella prima riga, viene scelta un'azione casuale dallo spazio delle azioni tramite
env.action_space.sample() . Lo spazio delle azioni definisce l'insieme di tutte le
possibili azioni che l'agente può compiere nell'ambiente. Inoltre, l'ambiente fornisce lo
spazio delle osservazioni, accessibile tramite env.observation_space , che rappresenta
l'insieme di tutte le possibili osservazioni (stati) che l'agente può incontrare.
Nella seconda riga, l'azione scelta viene passata a [Link](action) , che esegue l'azione
e restituisce i seguenti valori: - observation : il nuovo stato dell'agente dopo aver
compiuto l'azione; - reward : la ricompensa ricevuta per l'azione eseguita; - terminated :
booleano che indica se l'episodio è terminato (cioè, il compito è stato completato); -
truncated : booleano che indica se l'episodio è stato interrotto prematuramente (a
causa di limiti di tempo o altri vincoli); - info : informazioni diagnostiche aggiuntive,
spesso utilizzate per il debug o la registrazione.
5. Chiusura dell'ambiente
Approfondisci
Il problema del multi-armed bandit (MAB) è una sfida ben nota nell'apprendimento
per rinforzo, nel processo decisionale e nella teoria della probabilità. Coinvolge un
agente che sceglie ripetutamente tra più azioni, ognuna delle quali offre una
ricompensa da una certa distribuzione di probabilità fissa. L'obiettivo è massimizzare
il rendimento su un numero fisso di passi temporali.
Definizione
Una distribuzione stazionaria è una distribuzione che non cambia nel tempo,
indipendentemente dalle azioni intraprese o dalle variazioni dell'ambiente.
Sebbene la formula sopra possa essere utilizzata per stimare i valori delle azioni, richiede
di memorizzare tutte le ricompense precedenti e di ricalcolare la loro somma a ogni
passo temporale. Con gli aggiornamenti incrementali, ciò non è più necessario. La
formula per gli aggiornamenti incrementali può essere derivata come segue:
k
i=1
k−1
1
= (Rk + ∑ Ri )
k
i=1
1
= (Rk + (k − 1)Qk )
k
1
= (Rk + kQk − Qk )
k
1
= Qk + (Rk − Qk )
k
Dove, per una certa azione: - $\(k\)$, è possibile misurare l'errore come differenza tra
questi valori. Successivamente, la stima successiva può essere calcolata aggiustando
leggermente la stima precedente nella direzione della ricompensa reale, per ridurre
l'errore.
Qk+1 = Qk + α(Rk − Qk )
dove $\(\frac1k\)$ costante, poiché non richiede spazio aggiuntivo (per memorizzare
quante volte un'azione è stata eseguita) e consente l'adattamento ad ambienti non
stazionari dando più peso alle osservazioni recenti.
Inizializzazione ottimistica
All'inizio di un processo di addestramento, le stime dei valori d'azione possono variare
significativamente, il che può portare a sfruttamento prematuro. Ciò significa che
l'agente può sfruttare troppo presto le sue conoscenze iniziali, favorendo azioni
subottimali basate su esperienza limitata. Per mitigare questo problema e favorire una
esplorazione iniziale, una tecnica semplice ed efficace è la inizializzazione ottimistica.
Come Funziona
L'algoritmo segue questi passaggi:
Codice di esempio
def select_action(self):
"""Select an action according to the epsilon-greedy
strategy"""
# With probability epsilon - random action
if [Link]() < [Link]:
return [Link](self.n_actions)
# Otherwise - action with highest estimated action value
else:
return [Link](self.Q)
Informazioni aggiuntive
Riepilogo
L'algoritmo $\(\varepsilon\)$-greedy rappresenta un approccio di base per
bilanciare esplorazione e sfruttamento. Pur essendo semplice, costituisce una
base per comprendere strategie più avanzate come upper confidence bound
(UCB) e gradient bandits.
Nonostante la sua efficacia nella risoluzione del problema MAB, l'algoritmo UCB
presenta alcune limitazioni rilevanti che ne restringono l'applicazione nell'ambito più
ampio del reinforcement learning: - Assunzione di ricompense stazionarie: l'algoritmo
UCB presume che le distribuzioni delle ricompense non cambino nel tempo; - Vincoli
sugli spazi di stati e azioni: per poter iniziare a scegliere le azioni secondo una logica,
l'algoritmo UCB richiede di provare ogni azione in ogni stato almeno una volta.
Come Funziona
L'algoritmo UCB bilancia esplorazione e sfruttamento assegnando un intervallo di
confidenza al valore stimato di ciascuna azione e selezionando l'azione con il limite
superiore più alto. Questo approccio garantisce che le azioni con ricompense incerte
vengano esplorate, privilegiando al contempo le azioni che sembrano essere ottimali.
Codice di esempio
def select_action(self):
"""Select an action according to the upper confidence bound
strategy"""
# Increase the time step counter
self.t += 1
Informazioni aggiuntive
Riepilogo
L'algoritmo UCB è un metodo potente e ben fondato per bilanciare esplorazione e
sfruttamento nei problemi multi-armed bandit. Selezionando le azioni in base sia alle
ricompense stimate che all'incertezza, garantisce un apprendimento efficiente
riducendo al minimo il rimpianto.
Preferenze
Invece di mantenere le stime dei valori delle azioni $\(a\)$; - Il denominatore
garantisce che la somma delle probabilità sia pari a 1.
Regola di aggiornamento
Intuizione
class GradientBanditsAgent:
def __init__(self, n_actions, alpha):
"""Initialize an agent"""
self.n_actions = n_actions # Number of available actions
[Link] = alpha # alpha
self.H = [Link](n_actions) # Preferences
self.reward_avg = 0 # Average reward
self.t = 0 # Time step counter
def select_action(self):
"""Select an action according to the gradient bandits strategy"""
# Compute probabilities from preferences with softmax
probs = softmax(self.H)
# Choose an action according to the probabilities
return [Link](self.n_actions, p=probs)
Informazioni aggiuntive
I gradient bandits presentano diverse proprietà interessanti:
- Relatività delle preferenze: i valori assoluti delle preferenze delle azioni non
influenzano il processo di selezione — contano solo le differenze relative. Spostare tutte
le preferenze dello stesso valore costante (ad esempio, aggiungendo 100) produce la
stessa distribuzione di probabilità; - Effetto della baseline nella regola di
aggiornamento: sebbene la formula di aggiornamento includa tipicamente la
ricompensa media come baseline, questo valore può essere sostituito con qualsiasi
costante indipendente dall'azione scelta. La baseline influenza la velocità di
convergenza ma non modifica la soluzione ottimale; - Impatto della dimensione del
passo: la dimensione del passo deve essere regolata in base al compito. Un valore più
piccolo garantisce un apprendimento più stabile, mentre un valore maggiore accelera il
processo di apprendimento.
Nota
Scarica il Notebook
Definizione
Nota
A partire da questo capitolo, tutti gli ambienti sono considerati MDP finiti. Gli
MDP finiti hanno spazio degli stati finito, spazio delle azioni finito e insieme
delle ricompense finito.
Poiché gli MDP presentano sia struttura ottimale dei sottoproblemi sia
sovrapposizione dei sottoproblemi, sono particolarmente adatti a soluzioni basate
sulla DP.
Definizione
Un'equazione di Bellman è un'equazione funzionale che definisce una funzione di valore in forma
ricorsiva.
Un'equazione funzionale è un'equazione la cui soluzione è una funzione. Per l'equazione di Bellman, questa soluzione è la
funzione di valore per cui l'equazione è stata formulata;
Una forma ricorsiva significa che il valore nello stato attuale è espresso in termini di valori negli stati futuri.
In sintesi, risolvere l'equazione di Bellman fornisce la funzione di valore desiderata, e derivare questa equazione richiede
l'identificazione di una relazione ricorsiva tra stati attuali e futuri.
vπ (s) = Eπ [Gt∣St = s]
Per ottenere l'equazione di Bellman per questa funzione di valore, espandiamo il lato destro dell'equazione e definiamo una
relazione ricorsiva:
∞
vπ (s) = Eπ [Gt∣St = s]
= Eπ [Rt+1 + γRt+2 + γ 2 Rt+3 + ...∣St = s] = Eπ [Rt+1 + γ ∑ γ k Rt+k+2 ∣St = s]
=E
k=0
L'ultima equazione di questa catena è un'equazione di Bellman per la funzione di valore di stato.
Intuizione
Sommando tutte queste possibilità, si ottiene il valore atteso totale dello stato $\(s\)$ secondo la politica corrente.
qπ (s, a) = Eπ [Gt∣St = s, A t = a]
La derivazione dell'equazione di Bellman per questa funzione è piuttosto simile a quella precedente:
∞
qπ (s, a) = Eπ [Gt∣St = s, A t = a]
= Eπ [Rt+1 + γRt+2 + γ 2 Rt+3 + ...∣St = s, A t = a] = Eπ [Rt+1 + γ ∑ γ k Rt
k=0
L'ultima equazione di questa catena è un'equazione di Bellman per la funzione di valore d'azione.
Per trovare il valore di una coppia stato-azione $\(s'\)$ sotto la politica attuale.
Nel capitolo precedente, hai appreso le equazioni di Bellman per le funzioni di valore di
stato e di valore stato-azione. Queste equazioni descrivono come i valori degli stati
possano essere definiti ricorsivamente attraverso i valori di altri stati, con i valori che
dipendono da una determinata politica. Tuttavia, non tutte le politiche sono
ugualmente efficaci. Infatti, le funzioni di valore forniscono un ordinamento parziale
per le politiche, che può essere descritto come segue:
π ≥ π ′ ⟺ vπ (s) ≥ vπ ′ (s)
∀s ∈ S
Quindi la politica $\(\pi'\)$ non è inferiore al rendimento atteso della politica $\(\pi'\)$.
Approfondisci
Politica Ottimale
Definizione
Per qualsiasi MDP, esiste almeno una politica che è buona quanto o migliore di
tutte le altre politiche. Questa politica è chiamata politica ottimale $\(\pi_*\)$.
Anche se possono esistere molte politiche ottimali, tutte sono indicate come $\
(\pi_*\)$.
Potresti chiederti perché una politica ottimale esiste sempre per qualsiasi MDP. È una
domanda interessante, e l'intuizione alla base è sorprendentemente semplice. Ricorda
che gli stati in un MDP catturano completamente la condizione dell'ambiente. Questo
implica che ogni stato è indipendente dagli altri: l'azione scelta in uno stato non
influenza le ricompense o gli esiti ottenibili in un altro. Pertanto, selezionando l'azione
ottimale in ciascuno stato separatamente, si ottiene naturalmente la migliore
sequenza complessiva di azioni nell'intero processo. E questo insieme di azioni ottimali
in ogni stato costituisce una politica ottimale.
Inoltre, esiste sempre almeno una politica che sia sia ottimale sia deterministica.
Infatti, se per uno stato $\(a\)$ producono lo stesso ritorno atteso, sceglierne solo una
non influirà sull'ottimalità della politica. Applicando questo principio a ogni singolo
stato, la politica diventa deterministica pur mantenendo la sua ottimalità.
Equazione di ottimalità di Bellman per questa funzione di valore può essere derivata
come segue: $$ \begin{aligned} v_(s) &= \sum_a \pi_(a | s) \sum_{s', r} p(s', r | s, a)\Bigl(r
+ \gamma v_(s')\Bigr)\ &= \max_a \sum_{s', r} p(s', r | s, a)\Bigl(r + \gamma v_(s')\Bigr)
\end{aligned} $$
Intuizione
Come già noto, esiste sempre almeno una politica che è sia ottimale sia deterministica.
Una tale politica, per ogni stato, selezionerebbe costantemente una particolare azione
che massimizza i ritorni attesi. Pertanto, la probabilità di scegliere questa azione
ottimale sarebbe sempre 1, mentre la probabilità di scegliere qualsiasi altra azione
sarebbe 0. Dato ciò, l'equazione di Bellman originale non necessita più dell'operatore di
sommatoria. Invece, poiché si sa che verrà sempre selezionata la migliore azione
possibile, si può semplicemente sostituire la somma prendendo il massimo su tutte le
azioni disponibili.
Equazione di ottimalità di Bellman per questa funzione di valore può essere derivata
come segue: $$ \begin{aligned} q_(s, a) &= \sum_{s', r} p(s', r | s, a)\Bigl(r + \gamma
\sum_{a'} \pi_(a' | s')q_(s', a')\Bigr)\ &= \sum_{s', r} p(s', r | s, a)\Bigl(r + \gamma
\max_{a'} q_(s', a')\Bigr) \end{aligned} $$
Intuizione
Definizione
Nota
La valutazione della policy può essere utilizzata per stimare sia la funzione di
valore di stato sia la funzione di valore d'azione. Tuttavia, per i metodi DP, verrà
utilizzata la funzione di valore di stato.
Come già noto, una funzione di valore di stato di una data policy può essere
determinata risolvendo una equazione di Bellman:
a s′ ,r
a s′ ,r
Definizione
Miglioramento della policy è un processo di ottimizzazione della policy basato sulle stime attuali
della funzione di valore.
Nota
Come per la valutazione della policy, il miglioramento della policy può essere applicato sia alla
funzione di valore di stato sia alla funzione di valore d'azione. Tuttavia, per i metodi DP, verrà
utilizzata la funzione di valore di stato.
Ora che è possibile stimare la funzione di valore di stato per qualsiasi policy, un passo successivo naturale è esplorare se esistono
policy migliori rispetto a quella attuale. Un modo per farlo consiste nel considerare l'esecuzione di un'azione diversa $\(a\)$ in uno
stato $\(s\)$, e seguire successivamente la policy corrente. Se questo sembra familiare, è perché è simile a come viene definita la
funzione di valore d'azione:
s′ ,r
Se questo nuovo valore è maggiore del valore originale dello stato $\(\pi\)$ tranne per il fatto che seleziona l'azione $\(s\)$.
∀s ∈ S ⟹ vπ ′ (s) ≥ vπ (s)
∀s ∈ S
La dimostrazione di questo teorema è relativamente semplice e può essere ottenuta tramite una sostituzione ripetuta:
= Eπ ′ [Rt+1 + γvπ (St+1 )∣St = s] ≤ Eπ ′ [Rt+1 + γqπ (St+1 , π ′ (St+1 ))∣St = s]
= Eπ ′ [Rt+1
Strategia di miglioramento
Sebbene aggiornare le azioni per determinati stati possa portare a miglioramenti, è più efficace aggiornare le azioni per tutti gli stati
simultaneamente. In particolare, per ogni stato $\(a\)$:
π ′ (s) ← arg max qπ (s, a) ← arg max ∑ p(s′ , r∣s, a)(r + γvπ (s′ ))
a
a
s′ ,r
dove $\(\argmax\)$ (abbreviazione di argomento del massimo) è un operatore che restituisce il valore della variabile che
massimizza una determinata funzione.
a
s′ ,r
Definizione
Riepilogo
L'idea alla base della policy iteration è semplice: 1. Scegliere un'$\(v\)$ finché non è
coerente con $\(\pi\)$; 4. Ripetere i passi 2-3 fino alla convergenza.
Pseudocodice
Sebbene l'iterazione delle politiche sia un approccio efficace per risolvere gli MDP,
presenta un notevole svantaggio: ogni iterazione comporta una fase separata di
valutazione della politica. Quando la valutazione della politica viene eseguita in
modo iterativo, richiede molteplici passaggi sull'intero spazio degli stati, causando un
notevole sovraccarico computazionale e tempi di calcolo più lunghi.
Una valida alternativa è l'iterazione dei valori, un metodo che unisce la valutazione
della politica e il miglioramento della politica in un unico passaggio. Questo metodo
aggiorna direttamente la funzione di valore fino a quando non converge verso la
funzione di valore ottimale. Una volta raggiunta la convergenza, la politica ottimale
può essere derivata direttamente da questa funzione di valore ottimale.
Come funziona?
L'iterazione dei valori funziona eseguendo un solo backup durante la valutazione della
politica, prima di effettuare il miglioramento della politica. Questo porta alla seguente
formula di aggiornamento:
Pseudocodice
Sfida
Scarica il Notebook
Definizione
I metodi Monte Carlo (MC) sono una classe di algoritmi computazionali che si
basano sul campionamento casuale per stimare risultati numerici.
Come funzionano?
I metodi Monte Carlo possono variare da un compito all'altro, ma tutti tendono a
seguire un unico schema: 1. Definizione di un dominio di possibili input; 2. Generazione
di input casuali da una distribuzione di probabilità; 3. Valutazione di una funzione su
questi input; 4. Aggregazione dei risultati per produrre una stima.
Esempi
Sebbene lo schema descritto sopra possa sembrare complesso, questi esempi
dovrebbero aiutare a chiarire l'idea alla base.
Il calcolo degli integrali è un compito non banale che solitamente richiede l'applicazione
di molte tecniche per ottenere il risultato corretto.
0 0
1. Dominio di ingresso: questo integrale doppio ha due variabili, $\(x \in [0, 1]\)$
e $\(y \in [0, 1]\)$;
2. Generazione: entrambe queste variabili sono indipendenti tra loro e distribuite
uniformemente;
3. Valutazione: per ottenere un valore puntuale, si può utilizzare la funzione
sotto l'integrale;
4. Aggregazione: il valore di questo integrale può essere definito come il volume
sotto la curva. Il volume può essere calcolato come prodotto dell'area di base e
dell'altezza media. L'area di base è 1 (quadrato unitario) e l'altezza media è la
media dei risultati ottenuti nel passo precedente.
result = 0
# Many samples are required for estimates to be precise
for i in range(100000):
# Generation of random variables
x, y = [Link](), [Link]()
# Computation of point value
value = 1 / (1 + (x + y) ** 2)
# Mean aggregation
result += (value - result) / (i + 1)
Approssimazione di $\(\Large\pi\)$
Punti all’interno
π ≈4⋅
Punti totali
# Plotting points
[Link](figsize=(6,6))
[Link](*zip(*inside), color="blue", s=1, label="Inside")
[Link](*zip(*outside), color="red", s=1, label="Outside")
[Link]()
[Link]("x")
[Link]("y")
[Link]()
Questo rende gli approcci Monte Carlo particolarmente potenti: non richiedono alcuna
conoscenza preliminare su come funziona l'ambiente. Invece, estraggono le stime di
valore direttamente da ciò che accade durante l'interazione. In molti scenari reali, dove
modellare l'ambiente è impraticabile o impossibile, questa capacità di apprendere
dall'esperienza grezza rappresenta un vantaggio significativo.
Quando l'interazione diretta con l'ambiente è costosa, rischiosa o lenta, i metodi Monte
Carlo possono anche apprendere da esperienze simulate, a condizione che esista una
simulazione affidabile. Questo consente esplorazione e apprendimento in un contesto
controllato e ripetibile — anche se presuppone l'accesso a un modello in grado di
generare transizioni plausibili.
vπ (s) = Eπ [Gt∣St = s]
L'obiettivo di questo capitolo è stimare questa funzione a partire dai dati, assumendo
di avere una politica fissata $\(\pi\)$ ma senza accesso al modello dell'ambiente.
Quindi il problema principale è: se alcune parti dello spazio degli stati non vengono mai
esplorate, le loro stime di valore rimarranno inaccurate o non definite. Una soluzione
comune a questo problema è l'uso degli exploring starts.
Con gli exploring starts, ogni episodio non inizia da uno stato fisso come 0, ma da uno
stato selezionato casualmente. Una volta iniziato l'episodio, l'agente segue la sua
politica attuale come di consueto. Nel tempo, iniziando da molti punti diversi nello
spazio degli stati, l'agente riesce a visitare tutti gli stati — non solo quelli verso cui la sua
politica lo condurrebbe naturalmente. Questo permette al metodo Monte Carlo di
produrre stime di valore più accurate e complete per l'intero spazio degli stati.
Sostituendo la fase di valutazione della politica nell'algoritmo standard di policy iteration con le tecniche
di stima Monte Carlo descritte nel capitolo precedente, è possibile derivare una nuova variante della policy
iteration—una che si basa su esperienze campionate invece che sulla programmazione dinamica.
Tuttavia, esiste una limitazione fondamentale. Nella policy iteration tradizionale, la fase di miglioramento
della politica dipende dalla disponibilità di un modello completo dell'ambiente. In particolare, per
aggiornare la politica, si utilizza la seguente espressione:
a
s′ ,r
Questa equazione presuppone la conoscenza delle probabilità di transizione $\(p(s', r | s, a)\)$. Ma questo è
proprio il problema: i metodi Monte Carlo sono progettati per contesti model-free, in cui la dinamica di
transizione dell'ambiente è sconosciuta. Se fosse disponibile un modello completo, converrebbe utilizzare
la programmazione dinamica in ogni fase, inclusa la valutazione della politica, poiché sarebbe più efficiente
e precisa.
Pertanto, sebbene sostituire i metodi Monte Carlo per la stima dei valori sia un passo verso
l'apprendimento per rinforzo model-free, è necessario anche trovare un modo per eseguire il
miglioramento della politica senza fare affidamento sulla conoscenza del modello. Questo richiede il
passaggio dalla funzione di valore di stato alla funzione di valore d'azione.
Ed è semplice dimostrare che la nuova politica non è peggiore della precedente, poiché il teorema di
miglioramento della politica è ancora applicabile:
qπk (s, πk+1 (s)) = qπk (s, arg max qπk (s, a))
= max qπk (s, a) ≥ qπk (s, πk (s))
= vπk (s)
a
a
E, come nella programmazione dinamica, questo teorema garantisce che $\(\pi_{k+1}\)$ sia migliore di $\
(\pi_k\)$, oppure che siano entrambe uguali e ottimali.
Pseudocodice
In questo modo, con un numero sufficiente di iterazioni, i valori d'azione stimati dovrebbero avvicinarsi ai
veri valori d'azione.
Con questo approccio, è già possibile costruire un metodo simile all'iterazione delle politiche che non si
basa su un modello. Per farlo, si sostituiscono le fasi di valutazione della politica e miglioramento della
politica con i processi descritti sopra.
Ottimizzazione
Un'alternativa più naturale consiste nell'aggiornare la politica immediatamente dopo l'elaborazione di ogni
episodio. Invece di attendere il completamento di una valutazione completa della politica, si consente
all'agente di perfezionare il proprio comportamento episodio per episodio, utilizzando le stime più
recenti dei valori d'azione.
Questo porta a un metodo che assomiglia maggiormente all'iterazione dei valori: combinando aspetti di
valutazione e miglioramento in un unico passaggio. Ciò aumenta l'efficienza del campionamento e la
velocità di calcolo.
Pseudocodice
L'assunzione degli exploring starts è utile per garantire che tutti gli stati (coppie stato-
azione) vengano visitati nel tempo. Tuttavia, nella maggior parte dei compiti reali,
presenta un notevole svantaggio: richiede un modello per inizializzare l'agente in stati
arbitrari.
In rari casi — quando l'ambiente inizia naturalmente gli episodi da stati casuali che
coprono l'intero spazio degli stati — gli exploring starts possono essere applicati senza
problemi. Più comunemente, però, i compiti hanno un insieme fisso o limitato di stati
iniziali, rendendo tale randomizzazione impossibile senza un modello parziale. Questo
modello dovrebbe almeno essere in grado di simulare un passo dell'ambiente da
qualsiasi stato. Sebbene ciò sia comunque meno impegnativo rispetto alla necessità di
un modello completo, spesso risulta poco pratico.
Questa idea porta all'uso di policy stocastiche, in cui l'agente non sceglie sempre
l'azione migliore conosciuta, ma seleziona le azioni con un certo grado di casualità. Una
strategia comune per questo è la nota politica $\(\varepsilon\)$-greedy, che sceglie
l'azione greedy la maggior parte delle volte, ma con probabilità $\(\varepsilon\)$
seleziona invece un'azione casuale. Questo garantisce un'esplorazione continua pur
privilegiando le azioni di alto valore.
A questo punto, è anche utile distinguere tra due principali classi di metodi: - I metodi
on-policy valutano e migliorano la stessa policy utilizzata per generare i dati; - I metodi
off-policy valutano e migliorano una policy, e generano i dati con un'altra policy.
L'idea alla base dei metodi on-policy è intuitiva: un agente apprende seguendo la
propria politica attuale e la migliora in base agli esiti che sperimenta. Per scoprire azioni
migliori ed evitare di rimanere bloccato in comportamenti subottimali, l'agente
incorpora un certo grado di casualità — provando occasionalmente azioni alternative
per favorire l'esplorazione.
Analogia
Immagina di trovarti in una gelateria con tre gusti disponibili: cioccolato, vaniglia e
fragola. Adori il cioccolato, quindi di solito scegli quello. Ma un giorno, per curiosità,
decidi di provare la fragola. Scopri che il gelato alla fragola di questa gelateria è
incredibilmente buono e decidi di sceglierlo ogni volta che visiti questo posto.
Politiche Stocastiche
In altre parole, ogni azione in ogni stato ha una probabilità non nulla di essere
selezionata. Questo garantisce che tutte le parti dell'ambiente possano essere
esplorate, aspetto essenziale quando si apprende dall'esperienza.
Politiche $\(\Large\varepsilon\)$-greedy
Per introdurre l'esplorazione nella politica, si adotta il concetto di esplorazione $\
(\varepsilon\)$ che decresce correttamente, il metodo converge a una politica
ottimale nel limite.
Pseudocodice
Analogia
Torniamo alla gelateria del capitolo precedente. Tu e il tuo amico entrate e, ancora una
volta, ci sono i tre gusti familiari: cioccolato, vaniglia e fragola. Il cioccolato è il tuo
preferito e il tuo primo istinto è ordinarlo. Tuttavia, questa gelateria è nuova per te e
non sei sicuro che scegliere il cioccolato sia la scelta giusta. Fortunatamente, il tuo
amico è un appassionato di gelato che ha visitato quasi tutte le gelaterie della città.
Chiedi la sua opinione. "Il cioccolato qui è discreto," dice, "ma fidati — la fragola è
eccezionale." Così, basandoti sulla sua esperienza, decidi di rinunciare alla tua scelta
abituale e optare invece per la fragola.
Campionamento di importanza
Definition
Il campionamento per importanza offre un metodo per regolare i ritorni osservati sotto
la policy di comportamento affinché siano stime valide per la policy target.
Consideriamo una traiettoria che inizia da uno stato $\(b\)$ dipende solo dalle policy,
non dall'ambiente.
Perché è importante
Il rapporto $\(G_t\)$, è comunque possibile stimare i ritorni attesi sotto $\(b\)$
potrebbe intraprendere (ipotesi di copertura).
Considerazioni pratiche
Questo è noto come campionamento per importanza ordinario. Fornisce una stima
non distorta di $\(q(s, a)\)$, ma può soffrire di varianza molto elevata, soprattutto
quando le politiche di comportamento e target differiscono in modo significativo.
N(s,a)
∑i=0 ρi (s, a) ⋅ Returnsi (s, a)
q(s, a) =
N(s,a)
∑i=0 ρi (s, a)
Questa stima risulta distorta, ma il bias diminuisce con l'aumentare dei campioni
raccolti. In pratica, il campionamento per importanza pesato è preferito grazie alla
sua varianza significativamente inferiore e alla maggiore stabilità numerica.
Politiche
Come nel caso on-policy, utilizziamo politiche $\(\rho\)$ non si annulla mai a zero
durante l'episodio. Una volta terminato l'addestramento, è semplice convertire la
politica $\(\varepsilon\)$ può comunque annullarsi a zero durante l'episodio, a causa
della rappresentazione numerica nei computer.
Pseudocodice
Memorizzare ogni ritorno per ciascuna coppia stato-azione può rapidamente esaurire
la memoria e aumentare significativamente il tempo di calcolo — soprattutto in
ambienti di grandi dimensioni. Questa limitazione interessa sia gli algoritmi di controllo
Monte Carlo on-policy che off-policy. Per affrontare questo problema, si adottano
strategie di calcolo incrementale, simili a quelle utilizzate negli algoritmi multi-armed
bandit. Questi metodi consentono di aggiornare le stime dei valori in tempo reale,
senza dover conservare l'intera cronologia dei ritorni.
Pseudocodice
C(s, a) ← C(s, a) + W
Pseudocodice
Sfida
Scarica il Notebook
Sia la programmazione dinamica che i metodi Monte Carlo presentano alcuni vantaggi
significativi e alcune limitazioni importanti.
Programmazione Dinamica
La programmazione dinamica consente di calcolare in modo efficiente la funzione di
valore di stato e di derivare da essa una politica ottimale. Utilizza il bootstrapping —
calcolo del valore dello stato attuale basato sui valori degli stati futuri — per
raggiungere questo obiettivo.
Come funziona?
L'apprendimento TD funziona attraverso un ciclo semplice: 1. Stima del valore: l'agente
parte da una stima iniziale di quanto sia buono lo stato attuale; 2. Esecuzione di
un'azione: esegue un'azione, riceve una ricompensa e si trova in un nuovo stato; 3.
Aggiornamento della stima: utilizzando la ricompensa e il valore del nuovo stato,
l'agente modifica leggermente la stima originale per renderla più accurata; 4.
Ripetizione: nel tempo, ripetendo questo ciclo, l'agente costruisce progressivamente
stime di valore migliori e più precise per diversi stati.
Tabella di confronto
Programmazione
Sì Ogni stato Bootstrapping
dinamica
Fine
Monte Carlo No Esperienza
dell'episodio
Differenza Bootstrapping +
No Ogni passo
temporale esperienza
Regola di aggiornamento
Dato uno stato $\(V(S_t)\)$ rappresenta quindi la discrepanza osservabile tra ciò che è
effettivamente accaduto e ciò che si credeva sarebbe accaduto. La regola di
aggiornamento modifica quindi la convinzione precedente a ogni passo, avvicinandola
alla realtà.
Compromesso Bias-Varianza
La stima Monte Carlo attende la fine di un episodio e poi utilizza il ritorno completo per
aggiornare i valori. Questo produce stime non distorte — i ritorni riflettono realmente
la distribuzione sottostante — ma possono variare notevolmente, soprattutto in
compiti lunghi o altamente stocastici. L'alta varianza implica che siano necessari molti
episodi per attenuare il rumore e ottenere stime di valore stabili.
TD(0) utilizza il bootstrap combinando ogni ricompensa a un passo con la stima attuale
del valore dello stato successivo. Questo introduce bias — gli aggiornamenti iniziali si
basano su stime imperfette — ma mantiene la varianza bassa, poiché ogni
aggiornamento si basa su un piccolo errore incrementale. La varianza più bassa
consente a TD(0) di propagare le informazioni sulla ricompensa nello spazio degli stati
più rapidamente, anche se il bias iniziale può rallentare la convergenza.
Un altro modo per analizzare questi due metodi è valutare cosa apprendono realmente:
La stima Monte Carlo apprende direttamente dai ritorni osservati, adattando di fatto
le sue stime di valore agli episodi specifici che ha visto. Questo significa che minimizza
l'errore su quelle traiettorie di addestramento, ma poiché non costruisce mai una
visione esplicita di come gli stati si susseguano, può avere difficoltà a generalizzare a
situazioni nuove o leggermente diverse.
Pseudocodice
Proprio come con i metodi Monte Carlo, è possibile seguire il framework della
generalized policy iteration (GPI) per passare dalla stima delle funzioni di valore
all'apprendimento di politiche ottimali. Tuttavia, questo processo introduce una sfida
ben nota: il compromesso tra esplorazione e sfruttamento. Allo stesso modo, esistono
due approcci che possiamo utilizzare: on-policy e off-policy. Iniziamo parlando del
metodo on-policy — SARSA.
Definizione
Regola di aggiornamento
La regola di aggiornamento è simile alla TD(0), ma sostituisce la funzione di valore di
stato con la funzione di valore d'azione:
Dopo ogni aggiornamento della funzione di valore d'azione, anche la politica viene
aggiornata, permettendo all'agente di utilizzare immediatamente le nuove stime.
Definizione
Regola di aggiornamento
A differenza del controllo Monte Carlo off-policy, Q-learning non richiede il
campionamento di importanza per correggere le differenze tra la policy di
comportamento e quella target. Invece, si basa su una regola di aggiornamento diretta
che assomiglia molto a SARSA, ma con una differenza fondamentale.
γQ(St+1 , A t+1 )
γ max Q(St+1 , a)
Ma cosa succede se desideriamo qualcosa a metà strada? Qualcosa che sfrutti più
informazioni future rispetto a TD(0), ma che non richieda di attendere l'intero episodio
come Monte Carlo?
Questi ritorni possono quindi essere utilizzati per sostituire il target nella regola di
aggiornamento di TD(0):
TD($\(\Large\lambda\)$)
TD($\(\lambda \in [0, 1]\)$ Monte Carlo; - Valori intermedi fondono ritorni a più
passi.
\[L_t$$ può quindi essere utilizzato come target di aggiornamento nella regola di
aggiornamento TD(0): $$ V(S_t) \gets V(S_t) + \alpha\Bigl(L_t - V(S_t)\Bigr) \]
Sfida
Scarica Notebook