Guida

Reinforcement learning, significato ed esempi

L’apprendimento per rinforzo tra i processi di machine learning è in grado di iniziare ad apprendere un comportamento autonomamente e senza supervisione. Ecco come funziona e quali sono i campi di applicazione.

Pubblicato il 07 Dic 2021

Reinforcement learning

Pur essendo un concetto relativamente nuovo che ha origine in discipline come psicologia e neuroscienza, il reinforcement learning è un metodo di machine learning adottato nell’intelligenza artificiale che non prevede una supervisione e utilizza ricompense e penalità. Ma di cosa si tratta esattamente? Vediamo come funziona, quali strumenti utilizza e quali sono gli esempi applicativi.

Che cos’è il reinforcement learning?

Per comprendere le origini del reinforcement learning (RL) o apprendimento per rinforzo partiamo da due esempi reali. Una gazzella impara a stare in piedi pochi minuti dopo essere nata. Mezz’ora più tardi è in grado di correre a 20 miglia all’ora.

Quando un maestro di scacchi decide la sua mossa, sceglie in base ad una pianificazione per anticipare le controrisposte ma anche in base ad una valutazione immediata e intuitiva che lo spinge a compiere l’azione. Questi esempi condividono caratteristiche così basilari da essere facilmente trascurate ma allo stesso tempo implicano l’interazione tra un agente decisionale (gazzella o maestro di scacchi) e l’ambiente che lo circonda in cui l’agente cerca di raggiungere un obiettivo.

Il reinforcement learning è un metodo di machine learning basato sulla ricompensa o meno dei comportamenti. In generale, un agente (hardware o software) è in grado di percepire ed interpretare il proprio ambiente, intraprendere azioni e apprendere attraverso tentativi ed errori.

Machine learning e reinforcement learning

Il machine learning solitamente si divide in processi basati su:

  • apprendimento supervisionato (supervised learning),
  • apprendimento non supervisionato (unsupervised learning)
  • e, appunto, apprendimento per rinforzo.

Il primo cerca di definire una relazione tra le variabili di input e di output del sistema direttamente dai dati. I dati sono già rielaborati ed etichettati ed è un metodo di apprendimento usato per problemi di classificazione o regressione.

Il secondo, l’apprendimento non supervisionato, ha a disposizione dei dati e ricerca semplicemente dei pattern al loro interno. Genera algoritmi di clustering, per trovare features o ridurre le dimensioni dei dati.

L’apprendimento per rinforzo agisce senza supervisione, autonomamente, ed è molto diverso dagli altri due apprendimenti. Vediamo il suo funzionamento.

Come funziona il reinforcement learning

A differenza degli altri apprendimenti, all’agente che sta apprendendo non viene detto quali azioni eseguire ma in modo del tutto autonomo deve scoprire le azioni che determinano una ricompensa sempre maggiore. Questo avviene tramite interazioni ripetute di tipo trial-and-error (eseguite per tentativi ed errori) in un ambiente dinamico. Per fare ciò, l’agente è connesso all’ambiente in cui opera e riceve ad ogni iterazione le informazioni riguardanti lo stato (S), che saranno usate per effettuare un’azione (a) che cambierà questo stato. Questa transizione genera una ricompensa (r) da ricevere direttamente dall’agente. Lo scopo finale dell’agente sarà di imparare una serie di azioni, definite policy, da intraprendere ad ogni stato in modo da ricevere la maggior ricompensa possibile.

Le fasi del processo

Il processo del reinforcement learning comprende: definizione e simulazione dell’ambiente (e dell’interfaccia) in cui opera l’agente; definizione del segnale di ricompensa e delle modalità di calcolo; definizione della policy, poi, dell’algoritmo di addestramento; l’addestramento e la diffusione della policy.

Quando si usa l’apprendimento per rinforzo

Se il machine learning può considerarsi un campo dell’intelligenza artificiale che ha come scopo insegnare ai computer ad eseguire compiti basati su esempi senza una programmazione definita, nel reinforcement learning dove i modelli sono addestrati a intraprendere azioni in un ambiente definito per massimizzare una ricompensa, in modo da mantenere questa capacità anche quando l’ambiente cambia, il primo esempio di applicazione è legato ai sistemi di guida automatizzata.

Qui vengono utilizzate le informazioni provenienti dai sensori dell’auto per rilevare l’ambiente circostante e massimizzare una funzione che mantiene l’auto nella corsia. Allo stesso modo, la sinergia fra dati, sensoristica, dispositivi IoT e apprendimento per rinforzo sono determinanti nei processi di monitoraggio dello “stato di salute” di impianti e macchinari. Impianti quali quelli per la manutenzione predittiva per stimare il tempo residuo prima di un fermo.

Quando gli strumenti di reinforcement learning sono maggiormente utili?

Sicuramente quando occorre raggiungere un obiettivo in un ambiente incerto e non è possibile prevedere tutte le variabili; oppure quando esistono più modi per eseguire un compito. Il reinforcement learning è caratterizzato da forte dinamicità e non necessita di set di dati come avviene nelle altre forme di machine learning. Sono stati sviluppati diversi algoritmi di addestramento per il reinforcement learning molti si basano sulle politiche delle reti neurali profonde che consentono di usare il reinforcement learning in applicazioni come abbiamo visto per la guida autonoma.

Quando non si usa

Nel reinforcement learning, l’addestramento è spesso oneroso e richiede tempi variabili. Questo lo rende poco utile nei progetti che richiedono esecuzione rapida e tempi di addestramento limitati. Ogni azione deve essere provata molte volte.

Inoltre, richiede uno sforzo maggiore nella progettazione e regolazione dei parametri delle policy. Tra le sfide più grandi, il trasferire il modello fuori dall’ambiente simulato ed evitare che l’agente faccia suo il premio senza eseguire il compito richiesto.

Quale libreria Python utilizzare per il reinforcement learning

Python si può considerare il linguaggio ufficioso per il machine learning. Le librerie open source di Python sono utilizzate per risolvere problemi in situazioni di apprendimento supervisionato e appunto di apprendimento per rinforzo.

  • Tensorflow creata dal team di Google Brain e poi, rilasciata come risorsa end -to-end open source è la più utilizzata per costruire e addestrare reti neurali a più livelli ed è una libreria di algebra computazionale progettata per i flussi di dati.
  • Scikit-learn è una libreria ricca di contenuti, affidabile e facile da usare che si integra perfettamente con le librerie di Python NumPy (numerica) e SciPy (scientifica).
  • Pytorch sviluppata dal gruppo di ricerca sull’intelligenza artificiale di Facebook è utilizzata soprattutto per applicazioni di natural language processing e di visione artificiale.
  • Keras è un supporto back-end ad altre librerie come Tensorflow o Theano, è legata alle reti neurali profonde.

I più comuni algoritmi per il reinforcement learning

Piuttosto che fare riferimento ad un algoritmo specifico, il campo dell’apprendimento per rinforzo può attingere a diversi algoritmi soprattutto, in base all’esplorazione dell’ambiente. Allo stesso tempo, non ci sono regole generali per applicare determinati algoritmi a determinati casi applicativi. La scelta si fa in base all’esperienza o alla capacità di testare di programmatori o ricercatori. Ciò detto, è possibile individuare due tipologie di algoritmi di apprendimento per rinforzo.

  • Ad apprendimento continuo per valutare le scelte dell’algoritmo e quindi premiare o punire l’algoritmo a seconda del risultato.
  • Ad addestramento preventivo con cui si istruisce l’algoritmo e quando il sistema viene ritenuto affidabile viene cristallizzato e reso quindi immodificabile.

Gli algoritmi più utilizzati

  • Stato–azione–ricompensa–stato–azione (SARSA) – Tramite questo algoritmo che si basa sul processo decisionale di Markov, l’agente interagisce con l’ambiente e aggiorna la sua funzione di comportamento basandosi sulle azioni prese e per questo motivo viene considerato un algoritmo di apprendimento on-policy.
  • Q-learning – Probabilmente è il più conosciuto come algoritmo di apprendimento per rinforzo off-policy. L’agente esplora l’ambiente in modo diretto e cerca di trovare l’azione migliore da intraprendere. Come detto, la funzione q-learning apprende da azioni che sono al di fuori della policy corrente, come l’esecuzione di azioni casuali.
  • Deep Q learning algorithm – Si tratta di algoritmi che utilizzano tecniche di esplorazione dell’ambiente autodiretto e liberi da condizionamenti per apprendimento per rinforzo e reti neurali. Le azioni future si basano su un campione casuale di azioni positive del passato apprese dalla rete neurale.

Esempi di reinforcement learning

Nonostante l’interesse e l’entusiasmo sia cresciuto molto negli ultimi anni, le applicazioni di reinforcement learning teoriche sono ancora molte rispetto all’adozione nel mondo reale. Questo è dovuto principalmente a limiti legati a difficoltà nel calcolo della ricompensa per l’agente. Ed è definito come reward function e all’overfitting ovvero quando un modello si adatta ai dati utilizzati nel suo training, perdendo così la capacità di generalizzare.

In linea di principio, RL resta un paradigma molto robusto e può trovare applicazione in molti campi come:

Gaming

Il gioco è il campo di utilizzo più comune di apprendimento per rinforzo.

Il primo esempio è il gioco Pac-Man ma i videogiochi sono stati spesso utilizzati come esperimenti con l’utilizzo di ambienti videoludici per il training di agenti. A partire dal software AlphaGo, sviluppato dai ricercatori di Deep Mind di Google, che è riuscito a sconfiggere per il campione europeo Fan Hui del gioco da tavolo Go con il punteggio di 5-0.

Robotica

Nella robotica l’apprendimento per rinforzo può essere utilizzato per addestrare i robot nei diversi compiti assegnati.

Automazione e logistica

L’apprendimento per rinforzo è utilizzato anche nel controllo di sistemi complessi, come i sistemi di trasporto intelligenti, nell’ottimizzazione delle catene di fornitura in aziende logistiche e nell’automazione delle fabbriche.

Trading finanziario

Gli algoritmi di RL possono essere una scelta ottimale legati ai servizi finanziari, come l’ottimizzazione per la gestione di portafogli, pricing di opzioni e derivati, o applicazione di strategie di trading automatizzate.

Assistenza sanitaria

I sistemi di RL si impiegano in dispositivi medici per aiutare ad individuare alcuni tipi di patologie croniche. O per fornire suggerimenti per possibili terapie sulla base dei dati raccolti sul paziente. In ambito di ricerca c’è una forte attenzione della comunità medica per le potenzialità nel supportare lo sviluppo di trattamenti personalizzati per la medicina di precisione.

Gestione delle risorse

Nella gestione delle risorse aziendali (ERM), gli algoritmi di apprendimento per rinforzo si applicano a diverse attività sulla base di obiettivi come risparmiare tempo o risorse.

Sostenibilità

Gli algoritmi di RL sono stati impiegati per ottimizzare i sistemi di raffreddamento dei Data Center e ottenere un risparmio del consumo energetico.

L’apprendimento per rinforzo viene utilizzato nella ricerca operativa, nella teoria del controllo, nell’ottimizzazione basata sulla simulazione, nei sistemi multiagente, nelle statistiche e negli algoritmi genetici.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati