Vai al contenuto

Introduzione al Reinforcement Learning

  • di

Nel reinforcement learning (RL), c’è un agente che interagisce con un ambiente (a step temporali). A ogni passo temporale, l’agente decide ed esegue una azione, 𝑎, su un ambiente, e l’ambiente risponde all’agente passando dallo stato corrente (dell’ambiente), 𝑠, allo stato successivo (dell’ambiente), 𝑠′, ed emettendo un segnale scalare, chiamato ricompensa, 𝑟. Il tutto viene eseguito ciclicamente fin quando l’agente “muore”.

L’obiettivo principale dell’agente è raccogliere la maggior quantità di ricompensa “nel lungo periodo”. Per farlo, l’agente deve trovare una politica ottimale ( ovvero la strategia ottimale per comportarsi nell’ambiente). In generale, una politica è una funzione che, dato uno stato attuale dell’ambiente, produce un’azione (o una distribuzione di probabilità sulle azioni, se la politica è stocastica) da eseguire nell’ambiente. Una politica può quindi essere considerata come la “strategia” utilizzata dall’agente per comportarsi nell’ambiente. Una politica ottimale (per un dato ambiente) è una politica che, se seguita, farà raccogliere all’agente la maggior quantità di ricompense nel lungo periodo (che è l’obiettivo dell’agente). L’unico obiettivo dell’agente è massimizzare la ricompensa totale che riceve nel lungo periodo. Il segnale di ricompensa definisce quindi quali sono gli eventi positivi e negativi per l’agente.


Il segnale di ricompensa è la base principale per modificare la politica; se un’azione selezionata dalla politica è seguita da una bassa ricompensa, allora la politica può essere modificata per selezionare un’altra azione in quella situazione in futuro.

L’ambiente può essere deterministico (la stessa azione nello stesso stato porta allo stesso stato successivo, per tutti i passi temporali) o stocastico (non deterministico), cioè, se l’agente compie un’azione in un certo stato, lo stato successivo dell’ambiente risultante potrebbe non essere necessariamente sempre lo stesso: c’è una probabilità che sia un certo stato o un altro. Naturalmente, queste incertezze rendono più difficile il compito di trovare la politica ottimale.

I problemi di Reinforcement Learning sono spesso formulati matematicamente come un processo decisionale di Markov (MDP). Un MDP è un modo per rappresentare la dinamica dell’ambiente, cioè il modo in cui l’ambiente reagirà alle possibili azioni che l’agente potrebbe intraprendere, in un determinato stato. Più precisamente, un MDP è dotato di una funzione di transizione (o “modello di transizione”), ovvero una funzione che, dato lo stato corrente dell’ambiente e un’azione (che l’agente potrebbe intraprendere), fornisce una probabilità di passare a uno degli stati successivi. A un MDP è associata anche una funzione di ricompensa. Intuitivamente, la funzione di ricompensa produce una ricompensa, dato lo stato corrente dell’ambiente (e, eventualmente, un’azione intrapresa dall’agente e lo stato successivo dell’ambiente). Nel complesso, le funzioni di transizione e di ricompensa sono spesso chiamate modello dell’ambiente. In definitiva possiamo dire che l’MDP è il problema e la soluzione al problema è una politica, la “dinamica” dell’ambiente è governata dalle funzioni di transizione e di ricompensa (il “modello”).

Tuttavia, spesso non disponiamo del MDP associato all’ambiente, cioè non abbiamo le funzioni di transizione e di ricompensa. Di conseguenza, non possiamo stimare una politica a partire dal MDP, perché è sconosciuto. Si noti che, in generale, se disponessimo delle funzioni di transizione e di ricompensa del MDP associata all’ambiente, potremmo sfruttarle e recuperare una politica ottimale utilizzando algoritmi di programmazione dinamica.

In assenza di queste funzioni, cioè quando il MDP è sconosciuto, per stimare la politica ottimale, l’agente deve interagire con l’ambiente e osservare le risposte dell’ambiente. Questo viene spesso definito “problema del reinforcement learning”, perché l’agente dovrà stimare una politica rinforzando le sue convinzioni sulla dinamica dell’ambiente. Con il tempo, l’agente inizia a capire come l’ambiente risponde alle sue azioni e può quindi iniziare a stimare la politica ottimale. Quindi, nel Reinforcement Learning, l’agente stima la politica ottimale per comportarsi in un ambiente sconosciuto (o parzialmente conosciuto) interagendo con esso (utilizzando un approccio “per tentativi ed errori”).

Quindi quando nel Reinforcement Learning si parla di algoritmo model-based si tratta di un algoritmo che utilizza la funzione di transizione e la funzione di ricompensa per stimare la politica ottimale. L’agente può avere accesso solo a un’approssimazione della funzione di transizione e della funzione di ricompensa, che può essere appresa dall’agente mentre interagisce con l’ambiente o può essergli fornita ad esempio da un altro agente. In generale, in un algoritmo basato su modello, l’agente può potenzialmente prevedere la dinamica dell’ambiente (durante o dopo la fase di apprendimento), perché dispone di una stima della funzione di transizione e della funzione di ricompensa. Tuttavia, si noti che le funzioni di transizione e di ricompensa che l’agente utilizza per migliorare la sua stima della politica ottimale potrebbero essere solo approssimazioni delle funzioni vere. Pertanto, la politica ottimale potrebbe non essere mai trovata a causa di queste approssimazioni.

Un algoritmo model-free è un algoritmo che stima la politica ottimale senza utilizzare o stimare le dinamiche (funzioni di transizione e di ricompensa) dell’ambiente. In pratica, un algoritmo model-free stima una funzione valore o la politica direttamente dall’esperienza, cioè dall’interazione tra l’agente e l’ambiente, senza utilizzare né la funzione di transizione né la funzione di ricompensa. Una funzione valore può essere considerata come una funzione che valuta uno stato o un’azione intrapresa in uno stato, per tutti gli stati. Da questa funzione di valore si può poi ricavare una politica.

In pratica, un modo per distinguere tra algoritmi basati su modelli e algoritmi senza modelli è quello di osservare gli algoritmi e vedere se utilizzano la funzione di transizione o di ricompensa.

Per esempio, osserviamo la regola di aggiornamento principale dell’algoritmo Q-learning:

![[Pasted image 20221201144718.png]]

Come si può notare, questa regola di aggiornamento non utilizza alcuna probabilità definita dal MDP. Nota: 𝑅(𝑡+1)

è solo la ricompensa che si otterrà al passo temporale successivo (dopo aver intrapreso l’azione), ma non è necessariamente nota in anticipo. Quindi, il Q-learning è un algoritmo privo di modelli.

Vediamo ora la regola di aggiornamento principale dell’algoritmo di miglioramento della politica:

![[Pasted image 20221201144731.png]]

Possiamo immediatamente osservare che utilizza 𝑝(𝑠′,𝑟|𝑠,𝑎), una probabilità definita dal modello MDP. Quindi, il policy iteration (un algoritmo di programmazione dinamica), che utilizza l’algoritmo di miglioramento della politica, è un algoritmo basato sul modello.

![[Pasted image 20221201144831.png]]

Librerie per lavorare con il Reinforcement Learning

1. KerasRL

KerasRL è una libreria Python di Deep Reinforcement Learning . Implementa alcuni algoritmi Reinforcement Learning all’avanguardia e si integra perfettamente con la libreria di Deep Learning Keras .

Inoltre, KerasRL funziona immediatamente con OpenAI Gym . Ciò significa che si può valutare e giocare con diversi algoritmi abbastanza facilmente.

Per installare KerasRL usa semplicemente un comando pip:

pip install keras-rl

Ad oggi KerasRL ha implementato i seguenti algoritmi:

  • Deep Q-Learning ( DQN ) e suoi miglioramenti ( Doppio e Duello )
  • Deep Deterministic Policy Gradient ( DDPG )
  • DQN continuo ( CDQN o NAF )
  • Metodo dell’entropia incrociata ( CEM )
  • Deep SARSA

Purtroppo alla libreria KerasRL mancano due agenti importanti: metodi Actor-Critic e Proximal Policy Optimization (PPO). Documentazione ufficiale, disponibilità di tutorial ed esempi. Il codice è facile da leggere ed è pieno di commenti, il che è abbastanza utile. Tuttavia, la documentazione sembra incompleta poiché manca la spiegazione dei parametri e dei tutorial. Inoltre, gli esempi pratici lasciano molto a desiderare.

Molto facile. Tutto quello che devi fare è creare un nuovo agente seguendo l’esempio e quindi aggiungerlo a rl.agents .

KerasRL è stato creato per funzionare solo con OpenAI Gym . Pertanto è necessario modificare l’agente se si desidera utilizzare qualsiasi altro ambiente.

Il supporto degli strumenti di registrazione e monitoraggio non è implementato.

Include una funzione di ambiente vettorizzato.

La libreria sembra non essere più mantenuta in quanto gli ultimi aggiornamenti risalgono a più di un anno fa. Per riassumere, KerasRL ha una buona serie di implementazioni. Sfortunatamente, mancano punti preziosi come strumenti di visualizzazione, nuove architetture e aggiornamenti. Probabilmente dovresti usare un’altra libreria.

2. Pyqlearning

Pyqlearning è una libreria Python per implementare Reinforcement Learning. Si concentra su Q-Learning e Deep Q-Network multi-agente. Pyqlearning fornisce componenti per i progettisti, non per black-box all’avanguardia per gli utenti finali. Pertanto, questa libreria è difficile da usare. Puoi usarlo per progettare l’algoritmo di ricerca delle informazioni, ad esempio GameAI o web crawler.

Per installare Pyqlearning è sufficiente utilizzare un comando pip:

pip install pyqlearning

Ad oggi Pyqlearning ha implementato i seguenti algoritmi:

  • Deep Q-Learning ( DQN ) e suoi miglioramenti ( Epsilon Greedy e Boltzmann )

Pyqlearning ha un solo agente importante. La libreria lascia molto a desiderare.

Pyqlearning ha un paio di esempi per vari compiti e due tutorial con Maze Solving e il gioco di evasione degli inseguimenti di Deep Q-Network . Puoi trovarli nella documentazione ufficiale . La documentazione sembra incompleta in quanto si concentra sulla matematica e non sulla descrizione e sull’utilizzo della libreria.

Pyqlearning è una libreria open source. Il codice sorgente può essere trovato su Github . Il codice manca di commenti. Può essere un compito complicato personalizzarlo. Tuttavia, i tutorial potrebbero aiutare.

Poiché la libreria è agnostica, è relativamente facile aggiungerla a qualsiasi ambiente.

L’autore utilizza un semplice pacchetto di registrazione nei tutorial. Pyqlearning non supporta altri strumenti di registrazione e monitoraggio, ad esempio TensorBoard .

Pyqlearning non supporta la funzionalità dell’ambiente vettorizzato.

La lalibreria risulta ad oggi mantenuta. Tuttavia, il processo di sviluppo sembra essere lento. Per riassumere, Pyqlearning lascia molto a desiderare. Non è una libreria che utilizzerai comunemente.

3. Tensorforce

Tensorforce è una libreria di Deep Reinforcement Learning open source basata sul framework Tensorflow di Google. È semplice nel suo utilizzo e ha il potenziale per essere una delle migliori librerie di apprendimento per rinforzo .

Tensorforce ha scelte di progettazione chiave che lo differenziano dalle altre librerie Reinforcement Learning:

  • Design modulare basato sui componenti: le implementazioni delle funzionalità, soprattutto, tendono ad essere il più generalmente applicabili e configurabili possibile.
  • Separazione dell’algoritmo Reinforcement Learning e dell’applicazione: gli algoritmi sono indipendenti dal tipo e dalla struttura degli input (stati/osservazioni) e degli output (azioni/decisioni), nonché dall’interazione con l’ambiente dell’applicazione.

Per installare Tensorforce usa semplicemente un comando pip:

pip install tensorforce

Ad oggi, Tensorforce ha implementato il seguente set di algoritmi:

  • Deep Q-Learning ( DQN ) e suoi miglioramenti ( Doppio e Duello )
  • Policy Gradient ( PG )
  • Deep Deterministic Policy Gradient ( DDPG )
  • DQN continuo ( CDQN o NAF )
  • Actor-Critic ( A2C e A3C )
  • Trust Region Policy Optimization ( TRPO )
  • Proximal Policy Optimization ( PPO )

Tensorforce non ha implementato l’ implementazione Soft Actor Critic ( SAC ).

È abbastanza facile iniziare a utilizzare Tensorforce grazie alla varietà di semplici esempi e tutorial. La documentazione ufficiale sembra completa e comoda da navigare.

Tensorforce trae vantaggio dal suo design modulare. Ogni parte dell’architettura, ad esempio reti, modelli è distinta. Pertanto, si può modificare facilmente. Tuttavia, il codice manca di commenti e questo potrebbe essere un problema.

Tensorforce funziona con più ambienti, ad esempio OpenAI Gym , OpenAI Retro e DeepMind Lab. Ha anche documentazione per aiutarti a collegarti ad altri ambienti.

La libreria supporta TensorBoard e altri strumenti di registrazione/tracciamento.

Tensorforce supporta la funzionalità dell’ambiente vettorizzato.

Tensorforce viene aggiornato regolarmente. Per riassumere, Tensorforce è un potente strumento Reinforcement Learning. È aggiornato e contiene tutta la documentazione necessaria per iniziare a lavorarci.

Approfondimenti

Per chiunque volesse approfondire il mondo del Reinforcement Learning vi lascio alcune risorse che ho selezionato e a mio parere le reputo veramente ottime:

Libro: Reinforcement Learning: An Introduction scritto da Richard Sutton e Andrew Barto, è uno dei capisaldi per chiunque volesse approcciare al Reinforcement Learning, spiegato in maniera impeccabile qui. P.S. Il libro è gratuito!

Corso: Redatto da David Silver della University College London: qui il link.