Reinforcement Learning

 

 

Che cos’è il Reinforcement Learning?

3 cose da sapere

Il reinforcement learning è una tecnica di machine learning in cui un computer (agente) impara a svolgere un’attività tramite ripetute interazioni di tipo “trial-and-error” (eseguite per tentativi ed errori) con un ambiente dinamico. Questo approccio all’apprendimento consente all’agente di adottare una serie di decisioni in grado di massimizzare una metrica di ricompensa per l’attività, senza essere esplicitamente programmato per tale operazione e senza l’intervento dell’uomo.

I programmi di intelligenza artificiale addestrati con il reinforcement learning sono in grado di battere i giocatori umani nei giochi da tavolo come Go e gli scacchi, oltre che nei videogiochi. Mentre il reinforcement learning non è affatto un concetto nuovo, i recenti progressi fatti nel campo del deep learning e del potere computazionale hanno consentito di ottenere notevoli risultati nel settore dell’intelligenza artificiale.

Perché il Reinforcement Learning è importante

Differenze tra reinforcement learning, machine learning e deep learning

Il reinforcement learning è una branca del machine learning (Figura 1). A differenza del machine learning con e senza supervisione, il reinforcement learning non si affida a un set di dati statici, ma opera in un ambiente dinamico e apprende dalle esperienze raccolte. I punti di dati, o esperienze, vengono raccolti durante l’addestramento tramite interazioni di tipo “trial-and-error” (eseguite per tentativi ed errori) tra l’ambiente e un software (agente). Questo aspetto del reinforcement learning è importante in quanto riduce le esigenze in termini di raccolta, pre-elaborazione ed etichettatura dei dati prima dell’addestramento, operazioni invece necessarie nell’apprendimento con e senza supervisione. In pratica, ciò significa che, con l’incentivo giusto, un modello di reinforcement learning è in grado di iniziare ad apprendere un comportamento autonomamente, senza supervisione (dell’uomo).

Il deep learning abbraccia tutti e tre i tipi di machine learning; il reinforcement learning e il deep learning non si escludono reciprocamente. I problemi complessi di reinforcement learning spesso si basano su reti neurali profonde, dando luogo a ciò che viene chiamato deep reinforcement learning.

Figura 1. Tre ampie categorie di machine learning: apprendimento senza supervisione, apprendimento con supervisione e reinforcement learning.

Esempi di applicazioni di Reinforcement Learning

Le reti neurali profonde addestrate con il reinforcement learning sono in grado di codificare comportamenti complessi. Ciò consente di adottare un approccio alternativo per le applicazioni che, diversamente, sarebbero intrattabili o più difficili da affrontare con metodi più tradizionali. Ad esempio, nella guida autonoma, una rete neurale può sostituire il conducente e decidere come girare il volante utilizzando più sensori contemporaneamente, come i frame delle fotocamere e le misurazioni LIDAR. Senza reti neurali, normalmente il problema verrebbe suddiviso in parti più piccole come l’estrazione delle feature dai frame delle fotocamere, il filtraggio delle misurazioni LIDAR, la fusione degli output dei sensori e la presa di decisioni di “guida” in base agli input dei sensori.

Sebbene l’approccio tramite reinforcement learning sia ancora in fase di valutazione per i sistemi di produzione, alcune applicazioni industriali sembrano rivelarsi particolarmente adatte all’implementazione di questa tecnologia.

Controlli avanzati: il controllo dei sistemi non lineari è un problema abbastanza complesso che spesso viene trattato linearizzando il sistema in corrispondenza di diversi punti operativi. Il reinforcement learning può essere direttamente applicato al sistema non lineare.

Guida autonoma: prendere decisioni di guida in base all’input di una fotocamera è un’attività in cui il reinforcement learning si dimostra idoneo, considerando il successo delle reti neurali profonde nelle applicazioni con immagini.

Robotica: il reinforcement learning può essere utile in applicazioni come la presa (grasp) da parte dei robot, ad esempio per insegnare a un braccio robotico a manipolare diverse tipologie di oggetti per applicazioni di tipo pick-and-place. Altre applicazioni nel campo della robotica includono la collaborazione uomo-robot e robot-robot.

Pianificazione: i problemi di pianificazione compaiono in diversi scenari come il controllo dei semafori e il coordinamento delle risorse in una fabbrica rispetto a un determinato obiettivo. Il reinforcement learning è una buona alternativa ai metodi evolutivi per risolvere problemi di ottimizzazione combinatoria.

Calibrazione: le applicazioni che prevedono una calibrazione manuale dei parametri, come la calibrazione delle unità di controllo elettronico (ECU), possono essere particolarmente adatte all’implementazione del reinforcement learning.

Come funziona il Reinforcement Learning

Il meccanismo di addestramento che si cela dietro il reinforcement learning riflette molti scenari del mondo reale. Consideriamo, per esempio, l’addestramento degli animali domestici tramite rinforzo positivo.

Figura 2. Il reinforcement learning nell’addestramento dei cani.

Usano la terminologia del reinforcement learning (Figura 2), l’obiettivo dell’apprendimento in questo caso è quello di addestrare un cane (agente) affinché completi un’attività all’interno di un ambiente, che include l’ambiente che circonda il cane e la persona che si occupa dell’addestramento. Prima di tutto, l’addestratore dà un comando o un segnale, che il cane osserva (osservazione). Il cane, poi, risponde, con un’azione. Se l’azione si avvicina al comportamento desiderato, l’addestratore probabilmente offrirà una ricompensa, come un croccantino o un gioco; altrimenti, non verrà offerta alcuna ricompensa. All’inizio dell’addestramento, il cane probabilmente risponderà con azioni più casuali, ad esempio rotolandosi al comando “seduto”, in quanto sta cercando di associare delle osservazioni specifiche a delle azioni e a delle ricompense. Questa associazione, o mappatura, tra osservazioni e azioni si chiama politica. Dal punto di vista del cane, l’ideale sarebbe riuscire a rispondere correttamente a ogni segnale, così da ottenere il maggior numero di premi. Quindi, il fine ultimo dell’addestramento tramite reinforcement learning consiste nel “regolare” la politica del cane in modo che apprenda i comportamenti desiderati capaci di massimizzare la ricompensa. Al termine dell’addestramento, il cane dovrebbe essere capace di osservare il padrone e di agire in modo appropriato, come sedersi al comando “seduto”, usando la politica interna che ha sviluppato. A questo punto, i premi sono ben accetti ma, in teoria, non dovrebbero più essere necessari.

Tenendo a mente l’esempio dell’addestramento del cane, consideriamo l’attività di dover parcheggiare un veicolo usando un sistema di guida autonoma (Figura 3). L’obiettivo è quello di insegnare al computer del veicolo (agente) a parcheggiare nello spazio corretto con il reinforcement learning. Come nel caso del cane, l’ambiente è tutto ciò che si trova all’esterno dell’agente e potrebbe includere la dinamica del veicolo, altri veicoli nelle vicinanze, le condizioni atmosferiche e così via. Durante l’addestramento, l’agente usa le letture provenienti da sensori quali fotocamere, GPS e LIDAR (osservazioni) per generare comandi (azioni) di sterzata, frenata e accelerazione. Per imparare a generare le azioni corrette a partire dalle osservazioni (regolazione della politica), l’agente cerca ripetutamente di parcheggiare il veicolo usando un processo di tipo “trial-and-error” (ovvero di interazioni eseguite per tentativi ed errori). Per valutare l’idoneità di un tentativo e indirizzare il processo di apprendimento può essere fornito un segnale di ricompensa.

Figura 3. Il reinforcement learning nel parcheggio autonomo. 

Nell’esempio del cane, l’addestramento avviene nel cervello del cane stesso. Nell’esempio del parcheggio autonomo, l’addestramento è gestito da un algoritmo di addestramento. L’algoritmo di addestramento ha la responsabilità di regolare la politica dell’agente in base alle letture dei sensori, alle azioni e alle ricompense raccolte. Al termine dell’addestramento, il computer del veicolo dovrebbe essere in grado di parcheggiare usando solo la politica regolata e le letture dei sensori.

Un aspetto da tenere a mente è che il reinforcement learning non è sottoposto al principio di sample efficiency. Ciò significa che ha bisogno di un alto numero di interazioni tra l’agente e l’ambiente per raccogliere i dati per l’addestramento. Per riportare un esempio, AlphaGo, il primo programma per computer capace di battere un campione mondiale a una partita di Go, è stato addestrato senza interruzioni per alcuni giorni, durante i quali ha giocato milioni di partite, accumulando millenni di conoscenze umane. Anche per le applicazioni relativamente semplici, i tempi di addestramento possono andare da qualche minuto a delle ore fino a giornate intere. In più, formulare il problema correttamente potrebbe essere difficile in quanto bisogna prendere tutta una serie di decisioni di progettazione e, prima di raggiungere il risultato desiderato, potrebbero servire diverse iterazioni. Tra queste, per esempio, vi sono la selezione dell’architettura appropriata per le reti neurali, la regolazione degli iperparametri e la conformazione del segnale di ricompensa.

Workflow del Reinforcement Learning

Il workflow generale per addestrare un agente usando il reinforcement learning include le seguenti fasi (Figura 4):

Figura 4. Workflow del reinforcement learning .

1. Creazione dell’ambiente

Prima di tutto è necessario definire l’ambiente all’interno del quale andrà ad operare l’agente di reinforcement learning, compresa l’interfaccia tra agente e ambiente. L’ambiente può essere un modello di simulazione o un sistema fisico reale, ma in genere come primo step si utilizzano gli ambienti simulati perché sono più sicuri e consentono di sperimentare.

2. Definizione della ricompensa

In seguito, è necessario specificare il segnale di ricompensa che l’agente utilizza per misurare le sue prestazioni rispetto agli obiettivi dell’attività e la modalità di calcolo di questo segnale dall’ambiente. Dare forma alla ricompensa potrebbe essere complicato e, prima di raggiungere il risultato desiderato, potrebbero servire diverse iterazioni.

3. Creazione dell’agente

A questo punto è necessario creare l’agente, costituito dalla politica e dall’algoritmo di addestramento del reinforcement learning. Si deve:

a) Scegliere un modo per rappresentare la politica (ad esempio, usando reti neurali o tabelle di look-up).

b) Selezionare l’algoritmo di addestramento appropriato. Spesso diverse rappresentazioni sono legate a categorie specifiche di algoritmi di addestramento. In generale, però, gli algoritmi di reinforcement learning moderni si basano in gran parte su reti neurali, che si prestano bene a problemi complessi e a spazi di stato/azione di grandi dimensioni.

4. Addestramento e convalida dell’agente

Questa fase prevede la configurazione di opzioni di addestramento (come i criteri di arresto) e l’addestramento dell’agente per regolare la politica. Al termine dell’addestramento, non si deve dimenticare di convalidare la politica addestrata. Se necessario, è possibile rivedere le scelte di progettazione come il segnale di ricompensa e l’architettura della politica e procedere nuovamente all’addestramento. Il reinforcement learning è un processo generalmente noto per non  sottostare al principio di sample efficiency; l’addestramento può richiedere da pochi minuti fino a giorni interi e tutto dipende dall’applicazione. Per le applicazioni complesse, la parallelizzazione dell’addestramento su più CPU, GPU e cluster di computer renderà il processo più veloce (Figura 5).

Figura 5. Addestramento di un problema di apprendimento che non risponde al principio di sample efficiency con il calcolo parallelo.

5. Distribuzione della politica

Questa fase prevede la distribuzione della rappresentazione della politica addestrata usando, ad esempio, codice CUDA o C/C++ generato. A questo punto, la politica è un sistema decisionale indipendente.

L’addestramento di un agente tramite reinforcement learning è un processo iterativo. Le decisioni e i risultati delle fasi successive potrebbero richiedere il ritorno a una fase precedente del workflow di apprendimento. Ad esempio, se il processo di addestramento non converge su una politica accettabile entro un lasso di tempo ragionevole, potrebbe essere necessario aggiornare uno dei seguenti elementi prima di addestrare nuovamente l’agente:

  • Impostazioni di addestramento
  • Configurazione dell’algoritmo di reinforcement learning
  • Rappresentazione della politica
  • Definizione del segnale di ricompensa
  • Segnali di osservazione e azione
  • Dinamica dell’ambiente

Reinforcement Learning con MATLAB e Simulink

MATLAB® e Reinforcement Learning Toolbox™ semplificano le attività di reinforcement learning. È possibile implementare controller e algoritmi per la presa di decisioni per sistemi complessi quali i robot e i sistemi autonomi passando per ciascuna fase del workflow di reinforcement learning. Nello specifico, è possibile:

1. Creare ambienti e funzioni di ricompensa usando MATLAB e Simulink®

2. Usare reti neurali profonde, polinomi e tabelle di look-up per definire politiche di reinforcement learning

Figura 6 Insegnare a un robot bipede a camminare con Reinforcement Learning Toolbox™

3. Cambiare, valutare e confrontare gli algoritmi di reinforcement learning più conosciuti come DQN, DDPG, PPO e SAC apportando solo modifiche di piccola entità al codice, oppure creare il proprio algoritmo personalizzato

4. Usare Parallel Computing Toolbox™ e MATLAB Parallel Server™ per addestrare le politiche di reinforcement learning più velocemente servendosi di più GPU, più CPU, cluster di computer e risorse Cloud

5. Generare codice e distribuire politiche di reinforcement learning su dispositivi embedded con MATLAB Coder™ e GPU Coder™

6. Iniziare a fare pratica con il reinforcement learning usando gli esempi di riferimento.

Per saperne di più sul Reinforcement Learning