Blog.

Reinforcement Learning in Italiano: breve introduzione


Autore
Andrea Provino
Data
Tempo di lettura
7 minuti
Categoria
machine-learning

reinforcement-learning-data-science-machine-learning-guida-italiano-spiegazione-semplice-neural-network

Il Reinforcement Learning, che mi rifiuto di tradurre in apprendimento per rinforzo, è uno dei temi più scottanti nel campo del Machine Learning.

È anche uno dei più vecchi: devi sapere che i primi accenni a questa area di studi risalgono agli anni ’50 del secolo scorso!

La storia tende a essere ritenuta noiosa, sebbene pensi sia principalmente dovuto allo scarso numero di divulgatori entusiasmanti, e allora saltiamo rapidamente ai giorni nostri.

Hai anche te l’impressione che mi sia implicitamente criticato? Non importa, procediamo.

Dicevamo…

Il 2013 ha fatto registrare una nuova rivoluzione nel Reinforcement Learning.

Una startup inglese, una certa DeepMind dimostrò a tutti come fosse possibile creare un sistema capace d’imparare a giocare un qualsiasi gioco Atari da zero.

Come ben sai, non ci piace parlare al vento: ecco dunque l’articolo accademico di riferimento.

Il capolavoro di DeepMind resta però, al momento, AlphaGo: un sistema di Reinforcement Learning che nel 2017 batté Ke Jie, il campione del mondo di Go, un complicato gioco cinese con un numero di posizioni superiore a quello di tutti gli atomi presenti nell’Universo osservabile.

Mica polpette.

Per permettere il raggiungimento di un simile traguardo, una mossa geniale: l’applicazione della potenza delle reti neurali al campo del Reinforcement Learning.

In questa serie di post, definiremo e, cosa più importante, capiremo d’dapprima cosa significhi Reinforcement Learning ed esamineremo poi insieme le tecniche stato dell’arte nel Deep Reinforcement Learning: policy gradients e deep Q-networks (DQN).

Vele ammainate e cambusa rifornita capitano, pronti a salpare!

Introduzione al Reinforcement Learning

In natura, l’apprendimento è un processo di esplorazione e interazione ambientale necessario per ottenere cibo e altre ricompense.

Questo semplice paradigma è catturato dal reinforcement learning e codificato in sistemi che possano essere eseguiti da macchine artificiali.

Continua a leggere…

Reinforcement Learning

Benissimo, passiamo alla definizione bella da sapere e splendida da raccontare al tavolo di un bar sorseggiando Negroni.

Rammentando un nostro vecchio post, il Reinforcement Learning di per sé è semplicemente un’area di studi, o meglio più tecnicamente una classe di sistemi di machine learning con struttura e funzionamento tipico.

Diciamo dunque che in un sistema di Reinforcement Learning un agente (agent) software compie osservazioni (observation) in un ambiente (environment), eseguendo in esso delle azioni (action) e ricevendo in cambio delle ricompense (reward).

L’obiettivo dell’agente è quello di massimizzare la ricompensa sul lungo termine.

La ricompensa può anche essere negativa, un penalità, che indichiamo però come negative rewards.

Riconosciamo l’ambiguità, e apprezziamola.

Questa definizione è chiaramente ampia e troppo astratta perché possa essere compresa dal nostro interlocutore ormai al secondo calice di Bellini, cocktail frizzante altamente consigliato.

In quale altro posto puoi imparare nozioni di Machine Learning e al tempo stesso enologhe?

Passiamo allora a qualche esempio più concreto di Reinforcement Learning.

A walking robot

L’esempio classico è il robot che cammina.

In questo caso l’agente è il software preposto al controllo della macchina, che osserva il mondo reale con una moltitudine di sensori ottenendo una ricompensa qualora raggiungesse l’obiettivo e una penalità (i.e. Ricompensa negativa) se perdesse tempo in azioni inutili (e.g. Direzione errata, caduta etc.)

A Smart Thermostat

Un agente non deve necessariamente controllare il movimento di un dispositivo fisico (o virtuale).

Ad esempio, il termostato Google Nest, nelle prime settimane di utilizzo, regola un modello di machine learning (legassi di reinforcement learning) adeguandosi alle esigenze dell’utente.

In questo caso la ricompensa positiva scatta all’impostazione di una temperatura valida e alla diminuzione dei consumi energetici, quella negativa in caso d’intervento umano correttivo (i.e. Temperatura sbagliata).

L’agente deve quindi anticipare le esigenze umane.

FinTech

Il settore finanziario, specie quello della compravendita azionaria vede di buon occhio questi sistemi.

Avrebbero il potenziale di assistere broker e daily trader osservando i prezzi dei titoli azionari e decidendo quanto acquistare o vendere.

Le ricompense scattano qui in funzione dei margini di guadagno o perdita.

Il Graal del Reinforcement Learning

Quasi certamente avrai notato la mancanza di un’informazione fondamentale a livello logico.

Stiamo infatti parlando di un agente che compie azioni in un ambiente e riceve in cambio ricompense che devono essere massimizzate.

Benissimo, come può però il nostro agente sapere quale azione compiere in ogni momento, in funzione delle osservazioni compiute?

Cos’è, le prova a caso?

Il tassello mancante è una cosa chiamata Policy

Policy Search

Una policy è l’algoritmo usato dall’agente per determinare quali azioni eseguire.

Una policy può assumere le sembianze di una rete neurale che prendendo le osservazioni in input elabora l’azione da intraprendere in output.

Ma è fantastico, prendi un po’ di layers, li impili et voilà una sistema di reinforcement learning pronto!

Non proprio.

Fosse così semplice, Google non avrebbe acquistato DeepMind per oltre 500 milioni di dollari.

Vedremo insieme come siano molti e complessi i fattori da tenere a mente nello sviluppo di una policy.

Per il momento, partiamo dalle basi.

Possiamo ora concederci il lusso di considerare come policy un qualsiasi algoritmo, e non deve neppur essere deterministico.

Sei a casa? Prova ad alzare il piede, la scarpa o la ciabatta. Noti della polvere? Fantastico, scateniamo il nostro robot aspira tutto.

Noi fieri Machine Learning Engineer abbiamo dotato l’aspirapolvere di un sistema di Reinforcement Learning così impostato:

  • La ricompensa è la quantità di polvere raccolta in 30 minuti
  • La sua policy è un algoritmo in base al quale muoversi in avanti ogni secondo con una certa probabilità p, o ruotare casualmente a desra o sinistra con probabilità 1 – p
  • L’angolo di rotazione è un valore, sempre casuale, compreso tra -r e +r

Una policy di questo tipo, con un chiaro elemento di casualità, è definita stochastic policy.

Devi sapere che l’aggettivo stocastico indica in inglese qualcosa che è stato determinato in modo casuale.

La nostra aspirapolvere avrebbe una traiettoria irregolare, ma sufficiente a garantire, teoricamente, la pulizia di ogni singolo angolo.

Le domande sono:

  • Quanta polvere sarebbe in grado di raccogliere un sistema di Reinforcement Learning di questo tipo?
  • Come potremmo allenarlo?

Rispondere alla seconda domanda è meno impegnativo.

Brute Force

Abbiamo unicamente due parametri (policy parameters) da tarare: l’angolo r e la probabilità p.

Una strategia richiederebbe il test di diversi valori e la selezione dei migliori.

Questo esempio di policy search impiega un metodo definito di forza bruta, brute force.

Tuttavia, quando il policy space diventa troppo grande (cosa molto comune) individuare un set di parametri validi è particolarmente laborioso.

Genetic Algorithms

Un altro metodo per esplorare il policy space è usare una algoritmo genetico.

Questa te la dico, è dannatamente interessante.

Iniziamo col creare casualmente la prima generazione di 100 policies; le testiamo e uccidiamo le 80 meno performanti.

Facciamo generare alle 20 rimanenti una prole di 4 nuove policy ciascuna, copia del padre con qualche modifica casuale.

Queste sono la seconda generazione.

Il processo può dunque essere ripetuto fino all’ottenimento della policy migliore.

Policy Gradient: an optimization Technique

Questa tecnica richiede il calcolo dei gradienti delle ricompense rispetto ai parametri della policy, quindi la correzione dei parametri seguendo il gradiente verso ricompense più alte (gradient ascent).

Questo approcio è denominato policy gradient.

Riprendendo l’esempio del robot, questo significherebbe aumentare leggermente p e calcolare se l’incremento aumenti il volume di sporco. In caso affermativo aumentarlo ancor di più, altrimenti ridurlo.

Reinforcement Learning Free Courses and resources

Siamo giunti alla conclusione di questo blogpost introduttivo al meraviglioso mondo del Reinforcement Learning.

Prima di salutarci, in vista del prossimo post, ho in serbo per te due regalini.

Per approfondire il meraviglioso mondo del Reinforcement Learning ho selezionato per te alcune preziose risorse: mi raccomando, fanne buon uso!

Ognuna delle risorse sottostanti abbraccia pienamente la filosofia di questo blog: informazione libera, democratica e accessibile.

Iniziamo allora con un vero classico, un libro che fa storia.

Redatto da Richard Sutton e Andrew Barto, Reinforcement Learning: An Introduction è un tappa fondamentale nel lungo viaggio alla scoperta del Reinforcement Learning. Qui, la versione gratuita in PDF.

Non ti piacciono i libri e preferisci i corsi online? Non c’è problema, in questo caso ti propongo le 10 letture di David Silver, patrocinato da University College London: qui il link.

Per il momento è tutto.

Per aspera, ad astra

Un caldo abbraccio, Andrea.

Taggeddata sciencemachine learningreinforcement learning


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum