Vantaggio Attore Critico (A2C)

'A2C' stands for 'Advantage Actor Critic'.

Unità 7, del corso Deep Reinforcement Learning con Hugging Face 🤗

⚠️ È disponibile una nuova versione aggiornata di questo articolo qui 👉 https://huggingface.co/deep-rl-course/unit1/introduction

Questo articolo fa parte del corso Deep Reinforcement Learning. Un corso gratuito dalla base all’esperto. Controlla il programma qui.


⚠️ È disponibile una nuova versione aggiornata di questo articolo qui 👉 https://huggingface.co/deep-rl-course/unit1/introduction

Questo articolo fa parte del corso Deep Reinforcement Learning. Un corso gratuito dalla base all’esperto. Controlla il programma qui.

Nell’Unità 5, abbiamo imparato il nostro primo algoritmo basato sulla policy chiamato Reinforce. Nei metodi basati sulla policy, il nostro obiettivo è ottimizzare direttamente la policy senza utilizzare una funzione di valore. Più precisamente, Reinforce fa parte di una sottoclasse dei metodi basati sulla policy chiamati metodi Policy-Gradient. Questa sottoclasse ottimizza la policy direttamente stimando i pesi della policy ottimale utilizzando la discesa del gradiente.

Abbiamo visto che Reinforce funzionava bene. Tuttavia, poiché utilizziamo il campionamento Monte Carlo per stimare il ritorno (utilizziamo un’intera episodio per calcolare il ritorno), abbiamo una varianza significativa nella stima del gradiente della policy.

Ricorda che la stima del gradiente della policy è la direzione dell’aumento più ripido del ritorno. Ovvero, come aggiornare i pesi della nostra policy in modo che le azioni che portano a buoni ritorni abbiano una probabilità più alta di essere eseguite. La varianza del Monte Carlo, che studieremo ulteriormente in questa unità, porta ad un addestramento più lento poiché abbiamo bisogno di molte prove per mitigarla.

Oggi studieremo i metodi Actor-Critic, una architettura ibrida che combina metodi basati sul valore e basati sulla policy che aiutano a stabilizzare l’addestramento riducendo la varianza:

  • Un Attore che controlla come si comporta il nostro agente (metodo basato sulla policy)
  • Un Critico che misura quanto buona è l’azione eseguita (metodo basato sul valore)

Studieremo uno di questi metodi ibridi chiamato Advantage Actor Critic (A2C), e addestreremo il nostro agente utilizzando Stable-Baselines3 in ambienti robotici. Dove addestreremo due agenti a camminare:

  • Un camminatore bipede 🚶
  • Un ragno 🕷️

Sembra emozionante? Cominciamo!

  • Il problema della varianza in Reinforce
  • Advantage Actor Critic (A2C)
    • Riduzione della varianza con i metodi Actor-Critic
    • Il processo di Attore-Critico
    • Advantage Actor Critic
  • Advantage Actor Critic (A2C) utilizzando simulazioni robotiche con PyBullet 🤖

Il problema della varianza in Reinforce

In Reinforce, vogliamo aumentare la probabilità delle azioni in una traiettoria proporzionalmente all’alto ritorno.

  • Se il ritorno è alto, aumenteremo le probabilità delle combinazioni (stato, azione).
  • Altrimenti, se il ritorno è basso, diminuiremo le probabilità delle combinazioni (stato, azione).

Questo ritorno R ( τ ) viene calcolato utilizzando un campionamento Monte Carlo. Infatti, raccogliamo una traiettoria e calcoliamo il ritorno scontato, e utilizziamo questo punteggio per aumentare o diminuire la probabilità di ogni azione eseguita in quella traiettoria. Se il ritorno è buono, tutte le azioni saranno “rinforzate” aumentando la loro probabilità di essere eseguite.

R ( τ ) = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . R ( τ ) = R t + 1 ​ + γ R t + 2 ​ + γ 2 R t + 3 ​ + . . .

Il vantaggio di questo metodo è che è imparziale. Poiché non stiamo stimando il rendimento, utilizziamo solo il rendimento effettivo che otteniamo.

Ma il problema è che la varianza è alta, poiché le traiettorie possono portare a rendimenti diversi a causa della stochasticità dell’ambiente (eventi casuali durante l’episodio) e della stochasticità della politica. Di conseguenza, lo stesso stato iniziale può portare a rendimenti molto diversi. A causa di ciò, il rendimento a partire dallo stesso stato può variare significativamente tra gli episodi.

La soluzione è mitigare la varianza utilizzando un gran numero di traiettorie, sperando che la varianza introdotta in una qualsiasi traiettoria si riduca in modo aggregato e fornisca una stima “vera” del rendimento.

Tuttavia, l’aumento della dimensione del batch riduce significativamente l’efficienza del campionamento. Quindi dobbiamo trovare meccanismi aggiuntivi per ridurre la varianza.


Se vuoi approfondire la questione del trade-off tra varianza e bias nel Deep Reinforcement Learning, puoi consultare questi due articoli:

  • Making Sense of the Bias / Variance Trade-off in (Deep) Reinforcement Learning
  • Bias-variance Tradeoff in Reinforcement Learning

Vantaggio dell’Attore-Critico (A2C)

Riduzione della varianza con i metodi Attore-Critico

La soluzione per ridurre la varianza dell’algoritmo Reinforce e addestrare il nostro agente in modo più veloce e migliore è utilizzare una combinazione di metodi basati sulla politica e basati sul valore: il metodo Attore-Critico.

Per capire l’Attore-Critico, immagina di giocare a un videogioco. Puoi giocare con un amico che ti fornirà un feedback. Tu sei l’Attore e il tuo amico è il Critico.

All’inizio non sai come giocare, quindi provi alcune azioni casualmente. Il Critico osserva la tua azione e fornisce un feedback.

Imparando da questo feedback, aggiorni la tua politica e diventi migliore nel giocare a quel gioco.

D’altra parte, il tuo amico (il Critico) aggiornerà anche il modo in cui fornisce il feedback in modo che possa essere migliore la prossima volta.

Questa è l’idea dietro l’Attore-Critico. Apprendiamo due approssimazioni di funzioni:

  • Una politica che controlla come il nostro agente agisce: π θ ( s , a ) \pi_{\theta}(s,a) π θ ​ ( s , a )

  • Una funzione di valore per assistere l’aggiornamento della politica misurando quanto è buona l’azione intrapresa: q ^ w ( s , a ) \hat{q}_{w}(s,a) q ^ ​ w ​ ( s , a )

Il processo Attore-Critico

Ora che abbiamo visto il quadro generale dell’Attore-Critico, approfondiamo per capire come Attore e Critico migliorano insieme durante l’addestramento.

Come abbiamo visto, con i metodi Attore-Critico ci sono due approssimazioni di funzioni (due reti neurali):

  • Attore, una funzione di politica parametrizzata da theta: π θ ( s , a ) \pi_{\theta}(s,a) π θ ​ ( s , a )
  • Critico, una funzione di valore parametrizzata da w: q ^ w ( s , a ) \hat{q}_{w}(s,a) q ^ ​ w ​ ( s , a )

Vediamo il processo di addestramento per capire come Attore e Critico vengono ottimizzati:

  • Ad ogni passaggio, t, otteniamo lo stato corrente S t S_t S t ​ dall’ambiente e lo passiamo come input attraverso il nostro Attore e Critico.

  • La nostra politica prende lo stato e produce un’azione A t A_t A t ​ .

  • Il Critico prende anche quella azione come input e, utilizzando S t S_t S t ​ e A t A_t A t ​ , calcola il valore di prendere quella azione in quello stato: il valore Q.

  • L’azione At eseguita nell’ambiente restituisce un nuovo stato St+1 e una ricompensa Rt+1.

  • L’Attore aggiorna i suoi parametri di politica utilizzando il valore Q.

  • Grazie ai suoi parametri aggiornati, l’Attore produce la prossima azione da compiere At+1 dato il nuovo stato St+1.

  • Il Critico quindi aggiorna i suoi parametri di valore.

Vantaggio dell’Attore Critico (A2C)

Possiamo stabilizzare ulteriormente l’apprendimento utilizzando la funzione di vantaggio come Critico invece della funzione di valore dell’azione.

L’idea è che la funzione di vantaggio calcola quanto sia migliore prendere quell’azione in uno stato rispetto al valore medio dello stato. Sottrae il valore medio dello stato dalla coppia stato-azione:

In altre parole, questa funzione calcola la ricompensa aggiuntiva che otteniamo se prendiamo questa azione in quel determinato stato rispetto alla ricompensa media che otteniamo in quel determinato stato.

La ricompensa aggiuntiva è ciò che va oltre il valore atteso di quell’azione.

  • Se A(s,a) > 0: il nostro gradiente viene spinto in quella direzione.
  • Se A(s,a) < 0 (la nostra azione va peggio del valore medio di quello stato), il nostro gradiente viene spinto nella direzione opposta.

Il problema nell’implementare questa funzione di vantaggio è che richiede due funzioni di valore: Q(s,a) e V(s). Fortunatamente, possiamo utilizzare l’errore TD come un buon stimatore della funzione di vantaggio.

Vantaggio dell’Attore Critico (A2C) utilizzando Simulazioni Robotiche con PyBullet 🤖

Ora che hai studiato la teoria dietro l’Attore Critico con Vantaggio (A2C), sei pronto per addestrare il tuo agente A2C utilizzando Stable-Baselines3 in ambienti robotici.

Inizia il tutorial qui 👉 https://colab.research.google.com/github/huggingface/deep-rl-class/blob/main/unit7/unit7.ipynb

La classifica per confrontare i tuoi risultati con i tuoi compagni di classe 🏆 👉 https://huggingface.co/spaces/chrisjay/Deep-Reinforcement-Learning-Leaderboard

Conclusione

Congratulazioni per aver completato questo capitolo! C’era molta informazione. E congratulazioni per aver completato il tutorial. 🥳.

È normale se ti senti ancora confuso con tutti questi elementi. È stato lo stesso per me e per tutte le persone che hanno studiato RL.

Prenditi il tempo per comprendere il materiale prima di continuare. Dai anche un’occhiata ai materiali di lettura aggiuntivi che abbiamo fornito in questo articolo e al programma per approfondire 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit7/README.md

Non esitare ad addestrare il tuo agente in altri ambienti. Il modo migliore per imparare è provare da soli!

Nella prossima unità, impareremo a migliorare i Metodi Attore-Critico con la Proximal Policy Optimization.

E non dimenticare di condividere con i tuoi amici che vogliono imparare 🤗!

Inoltre, con il tuo feedback, vogliamo migliorare e aggiornare il corso in modo iterativo. Se hai qualche suggerimento, per favore compila questo modulo 👉 https://forms.gle/3HgA7bEHwAmmLfwh9

Continua a imparare, resta fantastico 🤗,