View on GitHub

Appunti di Reinforcement Learning

< Torna all’indice dei conenuti

Lecture 3 - Policy Gradients and Advantage Estimation

Metodi alternativi a DQN per risolvere grandi MDP:

Policy Gradient derivation

Policy iteration

Perché policy optimization:

Likelihood ration policy gradient: $\tau$ denota la sequenza stato-azione $s_0, u_0, …, s_H, u_H$. Con un abuso di notazione, si indica $R(\tau)=\sum_{t=0}^HR(s,u)$. Il reward atteso si può dunque esprimere come

\[U(\theta)=E\left[ \sum_{t=0}^H R(s,u) ; \pi_\theta \right]=E\left[ R(\tau) ; \pi_\theta \right] = \sum_\tau P(\tau; \theta)R(\tau)\]

quindi la funzione obiettivo diventa

\[\max_\theta U(\theta)=\max_\theta \sum_\tau P(\tau; \theta)R(\tau)\]

Ottimizzazione con gradiente:

\[\begin{aligned} \nabla_\theta U(\theta) &= \nabla_\theta \sum_\tau P(\tau; \theta) R(\tau)\\ &= \sum_\tau \nabla_\theta P(\tau; \theta) R(\tau) & (R\text{ non dipende da }\theta)\\ &= \sum_\tau \frac{P(\tau; \theta)}{P(\tau; \theta)} \nabla_\theta P(\tau; \theta) R(\tau) & \text{(obiettivo: somma pesata da }P)\\ &= \sum_\tau P(\tau; \theta) \underbrace{\left(\frac{1}{P(\tau; \theta)}\nabla_\theta P(\tau; \theta) \right)}_{\nabla_\theta \log P(\tau; \theta)} R(\tau)\\ &= \sum_\tau P(\tau; \theta) \nabla_\theta \log P(\tau; \theta) R(\tau) & \text{(chain rule)}\\ \end{aligned}\]

Approssimando la misura ottenuta con $m$ traiettorie campione sulla policy $\pi_\theta$, si ottiene:

\[\nabla_\theta U(\theta) \approx \hat{g} = \frac{1}{m} \sum_{i=1}^m \nabla_\theta \log P(\tau^{(i)}; \theta)R(\tau^{(i)})\]

Osservazioni:

Bisogna ancora calcolare il gradiente della probabilità.

Temporal decomposition

Decomposizione su traiettorie non complete: analisi locale.

\[\begin{aligned} \nabla_\theta \log P(\tau^{(i)}; \theta)&= \nabla_\theta \log \left ( \prod_{t=0}^H P\left(s_{t+1}^{(i)} \left\vert s_{t}^{(i)}, u_{t}^{(i)} \right.\right) \cdot \pi_\theta \left(u_{t}^{(i)}\left\vert s_{t}^{(i)}\right.\right) \right) & \text{(decomposizione $\tau$)}\\ &= \nabla_\theta \left ( \sum_{t=0}^H \log P\left(s_{t+1}^{(i)} \left\vert s_{t}^{(i)}, u_{t}^{(i)} \right.\right) + \sum_{t=0}^H \log \pi_\theta \left(u_{t}^{(i)}\left\vert s_{t}^{(i)}\right.\right) \right) & \text{(prop. $\log$)}\\ &= \nabla_\theta \sum_{t=0}^H \log \pi_\theta \left(u_{t}^{(i)}\left\vert s_{t}^{(i)}\right.\right) & \text{(dynamic model non dipende da $\theta$)}\\ &= \sum_{t=0}^H \nabla_\theta \log \pi_\theta \left(u_{t}^{(i)}\left\vert s_{t}^{(i)}\right.\right) \\ \end{aligned}\]

Osservazione:

Unbiased estimate del gradiente implica $E[\hat{g}]=\nabla_\theta U(\theta)$:

\[\hat{g} = \frac{1}{m} \sum_{i=0}^m \nabla_\theta \log P(\tau^{(i)}; \theta) R(\tau^{(i)}), \qquad \text{con} \quad \nabla_\theta \log P(\tau^{(i)}; \theta) = \sum_{t=0}^H \nabla_\theta \log \pi_\theta \left(u_{t}^{(i)}\left\vert s_{t}^{(i)}\right.\right)\]

Osservazioni sulla formulazione corrente:

Altra idea:

Baseline subtraction

Si considera una baseline $b$ da sottrarre ai reward nella funzione obiettivo. La scelta di $b$ determina quali probabilità sono aumentate e quali sono diminuite.

\[\nabla_\theta U(\theta) \approx \hat{g} = \frac{1}{m} \sum_{i=0}^m \nabla_\theta \log P(\tau^{(i)}; \theta) R(\tau^{(i)}-b)\]

Calcolo della media del termine con $b$:

\[\begin{aligned} E \left[\nabla_\theta \log P(\tau^{(i)}; \theta) \cdot b \right] &= \sum_\tau P(\tau; \theta) \nabla_\theta \log P(\tau^{(i)}; \theta) b\\ &= \sum_\tau P(\tau; \theta) \frac{\nabla_\theta P(\tau^{(i)}; \theta)}{P(\tau^{(i)}; \theta)} b & \text{(chain rule)}\\ &= \sum_\tau \nabla_\theta P(\tau; \theta) b\\ &= \nabla_\theta \left ( \sum_\tau P(\tau; \theta) b \right)\\ &= b \nabla_\theta \left ( \sum_\tau P(\tau; \theta) \right) & \text{(assume che $b$ non dipenda da $\theta$)}\\ &= b \cdot 0\\ \end{aligned}\]

Osservazione: nella media, il termine dato da $b$ è $0$. In realtà, con campioni finiti, si ha un effetto di riduzione della varianza.

Decomposizione temporale del reward:

\[\begin{aligned} \hat{g} &= \frac{1}{m} \sum_{i=0}^m \nabla_\theta \log P(\tau^{(i)}; \theta) R(\tau^{(i)}-b)\\ &= \frac{1}{m} \sum_{i=0}^m \left( \sum_{t=0}^{H-1}\nabla_\theta \log \pi_\theta(u_t^{(i)}\vert s_t^{(i)})\right) \left( \sum_{t=0}^{H-1} R(s_t^{(i)}, u_t^{(i)}) - b\right)\\ &= \frac{1}{m} \sum_{i=0}^m \left( \sum_{t=0}^{H-1}\nabla_\theta \log \pi_\theta(u_t^{(i)}\vert s_t^{(i)})\right) \left( \underbrace{\sum_{k=0}^{t-1} R(s_k^{(i)}, u_k^{(i)})}_{\text{azioni passate}} + \underbrace{\sum_{k=t}^{H-1} R(s_k^{(i)}, u_k^{(i)})}_{\text{azioni future}} - b\right)\\ \end{aligned}\]

Osservazioni:

Si rimuovono termini non dipendenti, in modo da ridurre la varianza, e si ottiene l’equazione usata nella pratica:

\[\hat{g}= \frac{1}{m} \sum_{i=0}^m \sum_{t=0}^{H-1}\nabla_\theta \log \pi_\theta(u_t^{(i)}\vert s_t^{(i)}) \left( \sum_{k=t}^{H-1} R(s_k^{(i)}, u_k^{(i)})- b(s_t^{(i)})\right)\\\]

Quindi si aumenta la probabilità di azioni che permettono di accumulare un reward futuro alto rispetto alla baseline.

Buone scelte per $b$:

\[b = E[R(\tau)] \approx \frac{1}{m} \sum_{i=1}^m R(\tau^{(i)})\] \[b = \frac{\sum_i (\nabla_\theta \log P(\tau^{(i)};\theta))^2 R(\tau^{(i)})}{\sum_i (\nabla_\theta \log P(\tau^{(i)};\theta))^2}\] \[b_t = \frac{1}{m} \sum_{i=1}^m \sum_{k=t}^{H-1} R(s_k^{(i)},u_k^{(i)})\]

Value function estimation

Bisogna stimare la funzione V, per evitare il calcolo esatto.

\[\hat{g}= \frac{1}{m} \sum_{i=0}^m \sum_{t=0}^{H-1}\nabla_\theta \log \pi_\theta(u_t^{(i)}\vert s_t^{(i)}) \left( \sum_{k=t}^{H-1} R(s_k^{(i)}, u_k^{(i)})- V^\pi (s_t^{(i)})\right)\\\]

1) Monte Carlo estimation di $V^\pi$

Regressione: calcolo con una rete neurale della funzione $V^\pi_\phi$ che minimizza l’errore quadratico:

\[\phi_{i+1} = \arg \min_\phi \frac{1}{m}\sum_{i=1}^m \sum_{t=0}^{H-1} \left( V_\phi^\pi (s_t^{(i)}) - \left( \sum_{k=t}^{H-1} R(s_k^{(i)},u_k^{(i)}) \right)\right)^2\]

Metodo semplice basato sulla regressione. Si può anche usare la Huber loss.

2) Bootstrapping estimation di $V^\pi$

Training neurale della V-value function usando l’equazione di Bellman update:

\[\phi_{i+1} = \min_\phi \sum_{(s,u,s',r)} \Vert r+V_{\phi_i}^\pi(s') - V_\phi(s)\Vert _2^2 + \lambda\Vert \phi - \phi_i \Vert _2^2\]

Si esegue anche regolarizzazione per evitare update troppo grandi. Si può anche fare update in batch.

Vanilla Policy Gradient

Policy gradient

Advantage estimate $\hat{A}_t$: differenza reward futuro e baseline.

Per la baseline, a volte si parte con Monte Carlo, e poi da una certa iterazione in poi si usa Bootstrapping.

Andvantage estimation

Vogliamo raffinare la stima del reward futuro, non più un singolo esempio ma una stima con varianza sperabilmente minore.

\[\hat{g}= \frac{1}{m} \sum_{i=0}^m \sum_{t=0}^{H-1}\nabla_\theta \log \pi_\theta(u_t^{(i)}\vert s_t^{(i)}) \left( \underbrace{\sum_{k=t}^{H-1} R(s_k^{(i)}, u_k^{(i)})}_{\text{stima di }Q^\pi} - V^\pi (s_t^{(i)})\right)\\\]

Stima di $Q^\pi(s,u)=E\left[ \left. \sum_{t=0}^H r_t \right\vert s_0=s, a_0=u\right]$: alta varianza per sample, nessuna generalizzazione.

Riduzione della varianza:

Ma il discount factor non è un parametro del MDP? Si ma si può usare come iperparametro. Cattura l’idea che le azioni molto avanti nel futuro hanno poca influenza nella scelta dell’azione al tempo $t$.

Stima del Q-value $\hat{Q}:$

\[\begin{aligned} & Q^\pi(s,u)=E\left[ \left. \sum_{t=0}^H \gamma^tr_t \right\vert s_0=s, a_0=u\right] & \text{(zero bias, alta varianza)}\\ & Q^\pi(s,u)=E\left[ \left. r_0 + \gamma V^\pi(s_1)\right\vert s_0=s, a_0=u\right] & \text{(alto bias, bassa varianza)}\\ & Q^\pi(s,u)=E\left[ \left. \left( \sum_{t=0}^{k-1} \gamma^tr_t \right) + \gamma^k V^\pi(s_k) \right\vert s_0=s, a_0=u\right] & \text{(tradeoff)}\\ \end{aligned}\]

Esempi in letteratura:

Policy gradient con A3C o GAE

A3C/GAE

Ci sono tante variazioni dell’algoritmo:

Risultati:

Osservazioni: