On-Policy vs. Off-Policy Monte Carlo, con visualizzazioni

On-Policy vs. Off-Policy Monte Carlo with visualizations

Viene fornito con codice plug-and-play che incorpora il campionamento di importanza

Foto di aceofnet su Unsplash

Nell’apprendimento per rinforzo, utilizziamo stime Monte Carlo (MC) o apprendimento Temporal Difference (TD) per stabilire il valore di ritorno “target” dagli episodi di campionamento. Entrambe le approcci ci permettono di apprendere da un ambiente in cui le dinamiche di transizione sono sconosciute, ossia p(s',r|s,a) è sconosciuta.

MC utilizza i valori di ritorno completi da una coppia stato-azione fino a quando lo stato terminale viene raggiunto. Ha una varianza elevata ma è non distorto quando i campioni sono indipendenti ed identicamente distribuiti.

<p.Lascerò i confronti tra MC e TD per un altro giorno, da supportare con codici. Oggi, il focus è sul MC stesso. Parlerò delle differenze tra MC on-policy e off-policy, supportate da risultati concreti dal codice plug-and-play che puoi provare con diversi input.

Riassunto

Alla fine di questo articolo, apprezzerai la differenza tra l’approccio on-policy e off-policy oltre a discussioni quantitative fatte senza codici. Inoltre, avrai gli strumenti per

  1. esplorare diverse combinazioni di Windy Grid World, che possono essere facilmente adattate alle tue preferenze,
  2. allenarti tramite MC on-policy o off-policy con campionamento di importanza incorporato, e
  3. visualizzare il valore di azione risultante e la policy appresa.

L’ambiente

Qui, consideriamo un classico Windy Grid World. La transizione è stocastica perché c’è una probabilità pari a self.wind che l’agente si muova casualmente (a causa del vento) invece della direzione prevista.

Definiamo G come l’obiettivo, che conferisce all’agente un alto premio all’atterraggio ed è anche uno stato terminale. T sono delle trappole, che fanno sì che l’agente subisca un notevole premio negativo. Ogni altra mossa comporta un premio di -1. L’agente non è in grado di uscire dallo spazio definito.

from copy import deepcopyimport numpy as npfrom tqdm import tqdmimport matplotlib.pyplot as pltimport matplotlib.patches as patchesimport matplotlib.colors as mcolorsfrom matplotlib.cm import ScalarMappableclass…