🤖 Robot Navigator — Value Iteration MDP dal vivo
Osserva la vera value iteration di un Processo Decisionale di Markov propagare dal vivo i valori degli stati su una griglia simulata, convergendo alla vera politica di navigazione ottimale tramite backup di ottimalità di Bellman.
Informazioni su questa simulazione
Questo simulatore implementa un vero e proprio Processo Decisionale di Markov risolto tramite value iteration — il metodo di programmazione dinamica model-based che sta alla base di quasi tutti gli altri algoritmi di reinforcement learning. Un robot in un grid-world occupa uno degli stati possibili; ogni azione che può compiere ha un esito noto, eventualmente stocastico, e ogni transizione comporta una ricompensa nota. Invece di lasciare che l'agente proceda per tentativi ed errori, la value iteration ragiona sull'intero spazio degli stati in una sola volta: ogni sweep sincrono applica il backup di ottimalità di Bellman a tutti gli stati contemporaneamente, propagando all'indietro sulla griglia, un passo per sweep, l'informazione sulla ricompensa dell'obiettivo, finché la funzione di valore smette di cambiare e la politica ottimale può essere letta direttamente da essa.
🔬 Cosa mostra
Una griglia di stati, ciascuno rappresentato come una cella colorata la cui tonalità codifica la stima corrente del valore V(s). A ogni sweep viene applicato V(s) ← max_a Σ_s' P(s'|s,a)[R(s,a,s') + γV(s')] a tutti gli stati non terminali contemporaneamente — la vera equazione di ottimalità di Bellman, non un'approssimazione. Un grafico live in scala logaritmica traccia la variazione massima di valore per sweep, che si riduce verso zero man mano che gli sweep convergono. Una volta raggiunta la convergenza, delle frecce sovrapposte a ogni cella mostrano la politica ottimale estratta π(s) = argmax_a Q(s,a), e un pulsante "Esegui politica ottimale" invia un agente dalla cella di partenza all'obiettivo, campionando a ogni passo la transizione stocastica reale.
🎮 Come si usa
Regola il fattore di sconto γ, l'affidabilità della transizione P(intended) (la probabilità che un'azione abbia successo come previsto anziché deviare di 90° a sinistra o a destra), il costo per passo e la penalità per urto contro un ostacolo — ogni modifica azzera la funzione di valore così puoi osservarla convergere di nuovo con il nuovo MDP. Scegli un preset di ostacoli (Sparso, Muro, Labirinto, Casuale) oppure clicca su una cella qualsiasi per attivarla/disattivarla come ostacolo. Usa Esegui sweep per iterare continuamente, Passo ×1 per avanzare di un backup di Bellman alla volta, ed Esegui politica ottimale per osservare il robot muoversi seguendo la politica convergente.
💡 Lo sapevi?
Poiché l'operatore di ottimalità di Bellman è una γ-contrazione nella norma del massimo, la value iteration ha la garanzia matematica di convergere a un'unica funzione di valore ottimale indipendentemente dai valori di partenza — la simulazione inizializza ogni V(s) a zero e raggiunge comunque la risposta corretta. Questa garanzia di convergenza è esattamente il motivo per cui la value iteration (e la sua stretta parente, la policy iteration) restano le soluzioni di riferimento sui libri di testo rispetto alle quali vengono valutati i metodi model-free come il Q-learning.
Domande frequenti
Che cos'è esattamente la value iteration in un Processo Decisionale di Markov?
La value iteration è un algoritmo di programmazione dinamica model-based per risolvere un Processo Decisionale di Markov (MDP): uno spazio degli stati S, uno spazio delle azioni A, un modello di transizione noto P(s'|s,a), una funzione di ricompensa R(s,a,s') e un fattore di sconto γ. Partendo da una funzione di valore V(s) arbitraria, applica ripetutamente il backup di ottimalità di Bellman V(s) ← max_a Σ_s' P(s'|s,a)[R(s,a,s') + γV(s')] a tutti gli stati simultaneamente (uno sweep sincrono). Poiché questo backup è una mappa di contrazione per γ<1, sweep ripetuti convergono dimostrabilmente all'unica funzione di valore ottimale V*, dalla quale è possibile leggere direttamente la politica ottimale π*(s) = argmax_a Σ_s' P(s'|s,a)[R(s,a,s') + γV*(s')].
In cosa differisce dal Q-learning o da altri metodi di reinforcement learning model-free?
La value iteration è model-based: richiede che le probabilità di transizione P(s'|s,a) e la funzione di ricompensa R(s,a,s') siano note in anticipo, e calcola un valore atteso esatto su ogni possibile esito di ogni azione in ogni stato a ogni sweep — non è necessaria alcuna simulazione o esplorazione dell'ambiente. Il Q-learning (trattato nella simulazione dedicata al reinforcement learning di questo sito) è model-free: l'agente non conosce P né R in anticipo, quindi deve effettivamente agire nell'ambiente, osservare transizioni campionate (s, a, r, s') e aggiornare in modo incrementale Q(s,a) con una regola a differenza temporale Q(s,a) ← Q(s,a) + α[r + γ·max_a' Q(s',a') − Q(s,a)]. La value iteration converge al V* esatto in un numero limitato di sweep dato il modello; il Q-learning converge solo asintoticamente, tramite esplorazione per tentativi ed errori, e non necessita di alcun modello di transizione esplicito. Questa simulazione implementa deliberatamente il caso model-based in modo che le due famiglie di algoritmi possano essere distinte con chiarezza.
Perché le transizioni sulla griglia sono stocastiche anziché deterministiche?
I robot reali e gli agenti fisici raramente eseguono un'azione in modo perfetto — le ruote slittano, i sensori derivano, i pavimenti sono irregolari. Questa simulazione modella questo aspetto con un classico modello di transizione stocastico: scegliere di muoversi in una data direzione ha successo con probabilità P(intended) (regolabile, valore predefinito 0.80), mentre la probabilità restante è divisa equamente tra una deviazione di 90° a sinistra e una di 90° a destra rispetto alla direzione voluta. Il backup di Bellman somma tutti e tre i possibili esiti pesati per le rispettive probabilità, ed è esattamente questo che rende l'ambiente un vero MDP anziché una ricerca deterministica del percorso più breve — la politica ottimale deve tutelarsi contro la possibilità di uno scivolamento indesiderato contro un muro o un ostacolo.
In che modo le componenti della ricompensa (ricompensa dell'obiettivo, penalità per ostacolo, costo per passo) determinano la politica ottimale?
Tre termini di ricompensa si combinano per definire R(s,a,s'): un piccolo costo per passo negativo (predefinito −0.04) applicato a ogni mossa non terminale, che spinge la politica ottimale verso percorsi più brevi; una penalità per urto contro ostacolo/muro (predefinita −0.75) applicata ogni volta che una transizione è bloccata da un muro, un ostacolo o il confine della griglia, che spinge la politica a mantenere un margine di sicurezza attorno agli ostacoli, soprattutto quando le transizioni sono rumorose; e una ricompensa terminale per l'obiettivo (+1) ricevuta entrando nella cella obiettivo, che è ciò che rende utile raggiungere l'obiettivo. La value iteration propaga tutte e tre attraverso il backup di Bellman, così le celle vicine all'obiettivo acquisiscono per prime valori elevati, e questo segnale ad alto valore si propaga all'indietro, sweep dopo sweep, finché ogni stato raggiungibile non ha una stima accurata del suo ritorno atteso a lungo termine.
Come posso capire se la funzione di valore è effettivamente convergente?
Ogni sweep sincrono registra la variazione assoluta massima nel valore di uno stato qualsiasi, max_s |V_new(s) − V_old(s)|, e la simulazione traccia questa quantità in scala logaritmica rispetto al numero di sweep. Poiché l'operatore di ottimalità di Bellman è una γ-contrazione, questa sequenza di delta massimi è garantita ridursi in modo monotono verso zero; la simulazione dichiara la convergenza quando scende sotto 1e-4. A quel punto V(s) si trova entro un errore piccolo e limitato rispetto al vero V*(s), e la politica greedy estratta da essa, π(s) = argmax_a Q(s,a), è la politica ottimale per l'MDP così configurato.
Il fattore di sconto γ modifica più dei semplici valori numerici?
Sì. γ controlla quanto il valore di uno stato sia influenzato dalle ricompense molti passi nel futuro: con γ vicino a 1, le ricompense dell'obiettivo lontano si propagano quasi senza attenuazione su tutta la griglia, quindi la politica ottimale pianifica con largo anticipo ed è disposta a compiere deviazioni più lunghe ma più sicure attorno agli ostacoli. Con γ più vicino a 0.5, le ricompense future vengono scontate drasticamente, quindi la politica diventa miope — può accettare un percorso più breve ma più rischioso vicino a un ostacolo, perché il valore scontato di raggiungere l'obiettivo qualche passo più tardi non vale molto di più rispetto a raggiungerlo un passo prima. γ controlla anche il tasso di convergenza: un γ più piccolo fa contrarre più rapidamente l'operatore di Bellman, quindi fattori di sconto più bassi in genere convergono con meno sweep.
Una griglia di stati è risolta tramite backup sincroni di ottimalità di Bellman: V(s) ← max_a Σ P(s'|s,a)[R(s,a,s') + γV(s')], con un modello di transizione stocastico (80% intenzionale, 10%/10% deviazione sinistra/destra di default) e una funzione di ricompensa data da ricompensa dell'obiettivo, penalità per ostacolo e costo per passo. Curva di convergenza dal vivo; politica ottimale estratta ed eseguita una volta raggiunta la convergenza.
3D · Three.js / WebGL renderer · 60 FPS target · funziona interamente lato client, senza installazione