Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Valutazione della Policy | Programmazione Dinamica
Introduzione al Reinforcement Learning con Python

Valutazione della Policy

Scorri per mostrare il menu

Note
Definizione

Valutazione della policy è un processo per determinare la funzione di valore di una data policy.

Note
Nota

La valutazione della policy può essere utilizzata per stimare sia la funzione di valore dello stato sia la funzione di valore dell'azione. Tuttavia, per i metodi DP, verrà utilizzata la funzione di valore dello stato.

Come noto, una funzione di valore dello stato di una data policy può essere determinata risolvendo un'equazione di Bellman:

vπ(s)=aπ(as)s,rp(s,rs,a)(r+γvπ(s))v_\pi(s) = \sum_a \pi(a | s) \sum_{s', r} p(s', r | s, a)\Bigl(r + \gamma v_\pi(s')\Bigr)

Se si dispone di un modello completo dell'ambiente (cioè, probabilità di transizione e ricompense attese note per tutte le coppie stato-azione), le uniche variabili sconosciute che rimangono nell'equazione sono i valori degli stati. Pertanto, l'equazione sopra può essere riformulata come un sistema di S|S| equazioni lineari con S|S| incognite.

Ad esempio, se un MDP ha 2 stati (s1s_1, s2s_2) e 2 azioni (move to s1s_1, move to s2s_2), la funzione di valore dello stato potrebbe essere definita così:

{V(s1)=0.5(5+0.9V(s1))+0.5(10+0.9V(s2))V(s2)=0.7(2+0.9V(s1))+0.3(0+0.9V(s2))\begin{cases} V(s_1) = 0.5 \cdot (5 + 0.9 \cdot V(s_1)) + 0.5 \cdot (10 + 0.9 \cdot V(s_2)) \\ V(s_2) = 0.7 \cdot (2 + 0.9 \cdot V(s_1)) + 0.3 \cdot (0 + 0.9 \cdot V(s_2)) \end{cases}

Questo può essere risolto utilizzando tecniche standard di algebra lineare.

Una soluzione unica per tale sistema lineare è garantita se almeno una delle seguenti condizioni è soddisfatta:

  • Il fattore di sconto soddisfa γ<1γ < 1;
  • La politica π\pi, se seguita da qualsiasi stato ss, garantisce che l'episodio termini eventualmente.

Valutazione Iterativa della Politica

La soluzione può essere calcolata direttamente, ma un approccio iterativo è più comunemente utilizzato per la sua facilità di implementazione. Questo metodo inizia assegnando valori iniziali arbitrari a tutti gli stati, eccetto per gli stati terminali, che vengono impostati a 0. I valori vengono poi aggiornati iterativamente utilizzando l'equazione di Bellman come regola di aggiornamento:

vk+1(s)aπ(as)s,rp(s,rs,a)(r+γvk(s))v_{k+1}(s) \gets \sum_a \pi(a | s) \sum_{s', r} p(s', r | s, a)\Bigl(r + \gamma v_k(s')\Bigr)

La funzione di valore di stato stimata vkv_k converge infine alla vera funzione di valore di stato vπv_\pi quando kk \to \infty se vπv_\pi esiste.

Strategie di backup del valore

Durante l'aggiornamento delle stime di valore, le nuove stime vengono calcolate sulla base dei valori precedenti. Il processo di conservazione delle stime precedenti è noto come backup. Esistono due strategie comuni per eseguire i backup:

  • Backup completo: questo metodo prevede la memorizzazione delle nuove stime in un array separato, distinto da quello che contiene i valori precedenti (di backup). Di conseguenza, sono necessari due array: uno per mantenere le stime precedenti e un altro per memorizzare i nuovi valori calcolati;
  • Backup in-place: questo approccio mantiene tutti i valori all'interno di un unico array. Ogni nuova stima sostituisce immediatamente il valore precedente. Questo metodo riduce l'utilizzo della memoria, poiché è necessario un solo array.

Generalmente, il metodo del backup in-place è preferito perché richiede meno memoria e converge più rapidamente, grazie all'utilizzo immediato delle stime più recenti.

Quando interrompere l'aggiornamento?

Nella valutazione iterativa della policy, non esiste un punto esatto in cui l'algoritmo dovrebbe fermarsi. Sebbene la convergenza sia garantita al limite, continuare i calcoli oltre un certo punto è inutile nella pratica. Un criterio di arresto semplice ed efficace consiste nel monitorare la differenza assoluta tra le stime di valore consecutive, vk+1(s)vk(s)|v_{k+1}(s) - v_k(s)|, e confrontarla con una soglia piccola θ\theta. Se, dopo un ciclo completo di aggiornamento (in cui i valori di tutti gli stati vengono aggiornati), nessuna variazione supera θ\theta, il processo può essere terminato in sicurezza.

Pseudocodice

Pseudocodice della valutazione della policy
question mark

Quale delle seguenti affermazioni è vera riguardo al metodo di valutazione iterativa della policy?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Valutazione della Policy

Note
Definizione

Valutazione della policy è un processo per determinare la funzione di valore di una data policy.

Note
Nota

La valutazione della policy può essere utilizzata per stimare sia la funzione di valore dello stato sia la funzione di valore dell'azione. Tuttavia, per i metodi DP, verrà utilizzata la funzione di valore dello stato.

Come noto, una funzione di valore dello stato di una data policy può essere determinata risolvendo un'equazione di Bellman:

vπ(s)=aπ(as)s,rp(s,rs,a)(r+γvπ(s))v_\pi(s) = \sum_a \pi(a | s) \sum_{s', r} p(s', r | s, a)\Bigl(r + \gamma v_\pi(s')\Bigr)

Se si dispone di un modello completo dell'ambiente (cioè, probabilità di transizione e ricompense attese note per tutte le coppie stato-azione), le uniche variabili sconosciute che rimangono nell'equazione sono i valori degli stati. Pertanto, l'equazione sopra può essere riformulata come un sistema di S|S| equazioni lineari con S|S| incognite.

Ad esempio, se un MDP ha 2 stati (s1s_1, s2s_2) e 2 azioni (move to s1s_1, move to s2s_2), la funzione di valore dello stato potrebbe essere definita così:

{V(s1)=0.5(5+0.9V(s1))+0.5(10+0.9V(s2))V(s2)=0.7(2+0.9V(s1))+0.3(0+0.9V(s2))\begin{cases} V(s_1) = 0.5 \cdot (5 + 0.9 \cdot V(s_1)) + 0.5 \cdot (10 + 0.9 \cdot V(s_2)) \\ V(s_2) = 0.7 \cdot (2 + 0.9 \cdot V(s_1)) + 0.3 \cdot (0 + 0.9 \cdot V(s_2)) \end{cases}

Questo può essere risolto utilizzando tecniche standard di algebra lineare.

Una soluzione unica per tale sistema lineare è garantita se almeno una delle seguenti condizioni è soddisfatta:

  • Il fattore di sconto soddisfa γ<1γ < 1;
  • La politica π\pi, se seguita da qualsiasi stato ss, garantisce che l'episodio termini eventualmente.

Valutazione Iterativa della Politica

La soluzione può essere calcolata direttamente, ma un approccio iterativo è più comunemente utilizzato per la sua facilità di implementazione. Questo metodo inizia assegnando valori iniziali arbitrari a tutti gli stati, eccetto per gli stati terminali, che vengono impostati a 0. I valori vengono poi aggiornati iterativamente utilizzando l'equazione di Bellman come regola di aggiornamento:

vk+1(s)aπ(as)s,rp(s,rs,a)(r+γvk(s))v_{k+1}(s) \gets \sum_a \pi(a | s) \sum_{s', r} p(s', r | s, a)\Bigl(r + \gamma v_k(s')\Bigr)

La funzione di valore di stato stimata vkv_k converge infine alla vera funzione di valore di stato vπv_\pi quando kk \to \infty se vπv_\pi esiste.

Strategie di backup del valore

Durante l'aggiornamento delle stime di valore, le nuove stime vengono calcolate sulla base dei valori precedenti. Il processo di conservazione delle stime precedenti è noto come backup. Esistono due strategie comuni per eseguire i backup:

  • Backup completo: questo metodo prevede la memorizzazione delle nuove stime in un array separato, distinto da quello che contiene i valori precedenti (di backup). Di conseguenza, sono necessari due array: uno per mantenere le stime precedenti e un altro per memorizzare i nuovi valori calcolati;
  • Backup in-place: questo approccio mantiene tutti i valori all'interno di un unico array. Ogni nuova stima sostituisce immediatamente il valore precedente. Questo metodo riduce l'utilizzo della memoria, poiché è necessario un solo array.

Generalmente, il metodo del backup in-place è preferito perché richiede meno memoria e converge più rapidamente, grazie all'utilizzo immediato delle stime più recenti.

Quando interrompere l'aggiornamento?

Nella valutazione iterativa della policy, non esiste un punto esatto in cui l'algoritmo dovrebbe fermarsi. Sebbene la convergenza sia garantita al limite, continuare i calcoli oltre un certo punto è inutile nella pratica. Un criterio di arresto semplice ed efficace consiste nel monitorare la differenza assoluta tra le stime di valore consecutive, vk+1(s)vk(s)|v_{k+1}(s) - v_k(s)|, e confrontarla con una soglia piccola θ\theta. Se, dopo un ciclo completo di aggiornamento (in cui i valori di tutti gli stati vengono aggiornati), nessuna variazione supera θ\theta, il processo può essere terminato in sicurezza.

Pseudocodice

Pseudocodice della valutazione della policy
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4
some-alt