Credo che moltissimi abbiano visto il video delle macchinine che imparano a mantenere la strada dopo una lunga serie di tentativi e fallimenti.

Parte il primo gruppetto che inesorabilmente si schianta sulla prima curva.
Parte il secondo che si ricorda la prima ma si schianta sulla seconda.
E così via fino a quando una macchina con l’esperienza delle centinaia di prove precedenti riesce a completare il circuito ricordando ogni errore ed agendo di conseguenza per non ripeterlo.
Ebbene si, l’uomo non programmerà più le macchine, l’uomo insegnerà alle macchine come apprendere.
Dove siamo finiti ?
È facile farsi disorientare da termini tecnici nel machine learning…
Prima di proseguire facciamo un po’ di chiarezza e vediamo le principali categorie in cui il machine learning è suddiviso:
- Supervised Learning: Si tratta di algoritmi che partendo da dati e feedback precedentemente archiviati sono in grado di riconoscere una relazione tra input e ouput. Se ad esempio ho un dataset contenente degli immobili con prezzo, posizione, dimensioni, condizioni etc… sono in grado di addestrare un modello che a partire dalle caratteristiche della casa è in grado di prevederne il prezzo di vendita.

- Unupervised Learning: a differenza del supervised learning sono algoritmi che cercano di interpretare la distribuzione dei dati e riconoscerne relazioni senza avere feedback precedentemente archiviati.

- Reinforcement Learning: il protagonista di questo articolo è una metodologia che sposa il termine learn-by-doing (vederemo subito per quale motivo) dove vengono utilizzati dei test e una funzione reward per trovare la migliore combinazione di variabili che porta al raggiungimento di un risultato nel modo più efficiente.

Imparare dagli errori
Detto in una solo frase il reinforcement learning non è altro che l’abilità di una macchina di imparare dai propri errori e imparare in modo autonomo (ricordi le macchinine ?)
Questo approccio chiamato dai ricercatori learn-by-doing è esattamente quello che ogni essere umano fa inconsapevolmente quando decide di imparare una nuova attività: guidare una macchina, suonare uno strumento o imparare a memoria una filastrocca.
Procediamo per errori fino a quando il nostro cervello non li riconosce inconsciamente e li evita.
A livello tecnico questo approccio non è altro che una serie di tentativi (spesso puramente a random) dove alla fine di ogni test una apposita funzione (reward) indica quale test abbia avuto successo e quale invece non ha portato alcun risultato.
Se ad esempio cerchiamo la strada migliore per raggiungere un punto B partendo da A, ad ogni curva la nostra funzione darà un punteggio più alto alla scelta di strada che più diminuisce la distanza AB.
Questo procedimento se portato a termine per ogni curva porta ad avere un itinerario completo che in modo più veloce ed efficiente ci porta da A a B.

A cosa ci ha portato il reinforcement learning ?
Con l’aumento esponenziale della potenza di calcolo i record che questa branca dell’intelligenza artificiale sta battendo si stanno moltiplicando.
Prima un po’ snobbato, il reinforcement learning è diventato popolare nel 2013 quando DeepMind (acquisita da Google per quasi 900 milioni di sterline) aveva dimostrato che i suoi algoritmi erano in grado in giocare a semplici videogiochi Atari a livello super umano.
Oggi il reinforcement learning è usato dalle più grandi compagnie di tutto il mondo per fare business e portare all’estremo l’efficienza dei loro algoritmi.
Ecco alcuni use cases:
- Raccomandazione Prodotti ( DRN: A Deep Reinforcement Learning Framework for News Recommendation. Link )
- Auto a Guida Autonoma ( The first example of deep reinforcement learning on-board an autonomous car, Wayve. Link)
- Adverstising ( Reinforcement Mechanism Design for e-commerce. Link)
- Trading / Marketing Prediciton (Morgan Stanley Hires Ex-SAC Capital Artificial Intelligence Expert. Link)
- Robotica ( Reinforcement Learning in Robotics: A Survey. Link)
- Videogiochi (Reinforcement learning for game personalization on edge devices. Link)
Quali sono i limiti del RL ?
Per riassumere quanto detto fin’ora il reinforcement learning non è altro che un metodo per trovare la giusta combinazione di variabili in un problema più o meno complesso.
Questo è proprio il punto in cui diventa facile intravedere come l’intelligenza umana può essere battuta con grande facilità da una macchina:
Per ora le AI sono più efficienti di noi in problemi molto specifici dove è possibile tradurre in matematica il contesto del problema.
Più diventa complesso il problema e più test e combinazioni dovremo preformare per avere un algoritmo efficiente.
I limiti del reinforcement learning si possono dividere in tre categorie:
- Dati
- Matematica
- Potenza Computazionale
Come più volte ha ricordato Andrew Ng (tra i massimi esperti al mondo di AI) il reinforcemnt learning è efficiente in situazioni ben circoscritte dove acquisire dati è molto semplice.
Le macchinine che imparano a guidare sono state addestrate in un’ambiente simulato dove dati e risorse non sono affatto un problema.
Usare questo approccio in un contesto reale non è altrettanto semplice e privo di costi.