neurali:algoritmo_value_iteration
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
neurali:algoritmo_value_iteration [2017/06/25 18:02] – profpro | neurali:algoritmo_value_iteration [2020/06/08 22:20] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ^ [[neurali: | ||
+ | |||
+ | ====Algoritmo Value Iteration==== | ||
+ | |||
+ | Vedere prima [[neurali: | ||
+ | |||
+ | https:// | ||
+ | |||
+ | L' | ||
+ | Il criterio di scelta delle azioni (la politica delle azioni) si può ottenere in vari modi: | ||
+ | * ad esempio, conoscendo **esplicitamente** prima tutti gli stati, attraversandoli iterativamente, | ||
+ | * ad esempio, i cuccioli degli animali, con il comportamento del gioco, riescono a fare esperienze ed a scoprire quale azione associare a quale stato per ottenere la massima ricompensa... | ||
+ | |||
+ | Trattandosi di un processo iterativo, bisogna avere tabelle piccole su cui iterare, quindi insieme finito di stati e azioni. | ||
+ | |||
+ | ===Iterazione=== | ||
+ | |||
+ | - inizialmente una tabella contiene i valori (delle ricompense!) ottenute su ogni stato, | ||
+ | - inizialmente sono valori assegnati in modo random perche sconosciuti | ||
+ | - quando mi trovo in uno stato, ricevo la vera ricompensa di quello stato, la correggo rispetto a quella ipotizzata | ||
+ | - devo memorizzare anche quale azione mi ha portato a quello stato? si, c'è un coefficiente che serve per dare molto peso alle ricompense iniziali. | ||
+ | - ripeto un numero finite di volte, alla cieca, perché nessuno sa se si arriva ad una tabella stabile... | ||
+ | |||
+ | Ad esempio, ripeto 100 iterazioni e convergo ad una soluzione con questo modello di architettura [[neurali: | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ==== Funzione valore ==== | ||
+ | |||
+ | Si ottiene una funzione valore V (value function) della ricompensa nello stato attuale s< | ||
+ | |||
+ | * V(s< | ||
+ | |||
+ | Se la predizione r< | ||
+ | |||
+ | |||
+ | Alla nuova V(s) aggiornata, non si aggiunge direttamente Delta, ma un Delta * Alfa | ||
+ | Scegliendo Alfa abbastanza piccolo, è dimostrato che TD converge. | ||
+ | |||
+ | ==== Durante la fase di apprendimento ==== | ||
+ | |||
+ | Al primo tentativo deve osservare la ricompensa in tutti gli stati e non si può fare la differenza con il valore osservato nello stato osservato alla iterazione precedente (perché si tratta della prima iterazione). | ||
+ | I passaggi successivi permettono invece di ottenere il Delta con i. Questo delta permette di aggiustare la stima di V(s). | ||
+ | Se Delta è positivo significa che lo stato s, all' | ||
+ | |||
+ | ===Implementazione=== | ||
+ | |||
+ | Il modo più semplice di implementare la funzione valore V(s) è quello di usare una [[neurali: | ||
+ | |||
+ | Lock-up table: è una tabella associativa, | ||
+ | |||
+ | Anche se le azioni sono discrete, la politica Pgreco può essere rappresentata con tante tabelle, una per ogni stato, con una riga per ogni azione per quello stato | ||
+ | |||
+ | Le dimensioni della memoria occupata sono: a x s (a: numero azioni per ogni stato) (s: numero stati) | ||
+ | |||
+ | La fase di apprendimento e' lenta perche' | ||
+ | |||
+ | ---- | ||