Ce lo siamo sentiti dire tutti che “sbagliando s’impara”: i Latini, più prudentemente dicevano che “sbagliare è umano” (e perseverare è diabolico). Ma oggi che il concetto di umanità sembra destinato a estendersi per comprendere anche nuove forme di intelligenza, possiamo chiederci se è ancora soltanto umana la caratteristica di sbagliare oppure no.
In effetti gli algoritmi di Machine Learning, che ormai popolano i nostri dispositivi e che sono divenuti familiari, almeno nel nome se non nella sostanza, un po’ a tutti quelli che s’interessano di tecnologia, fanno proprio questo, imparano dagli errori. Una rete neurale, per dirne una, viene addestrata a riconoscere qualcosa o a generare qualcosa a partire da in insieme di risposte corrette: impara soltanto dai propri errori, cercando di minimizzarli in qualche modo. Si tratta di un modo di procedere abbastanza diverso dal nostro: mia figlia a scuola non è esposta ripetitivamente e in modo casuale a migliaia di domande prese da un training set cui deve rispondere e ricevere un feedback sulla risposta, ma le vengono spiegati princìpi generali e poi gli esercizi servono a capire o consolidare questi princìpi e non a far emergere conoscenza dagli esempi.
Quando l’errore è necessario
Tuttavia il proverbio “sbagliando s’impara” sta lì a dirci che in molti casi non esistono princìpi generali a cui appellarsi o che, se esistono, sono difficili da comprendere e mettere in atto. Tutti da bambini (e anche da adulti) abbiamo imparato qualcosa “a nostre spese”, come il fatto che mettere una mano sul fuoco ci dà bruciore, che infastidire una vespa può indurla a pungerci, che mettere il gatto nel microonde non è un modo per asciugarlo ma per ucciderlo, e così via.
Queste lezioni apprese da errori anche fatali restano tipicamente impresse in modo indelebile nella memoria: non fanno parte di uno schema generale, ma sono eventi che ci aiutano a non commettere ulteriori sciocchezze.
Con i bambini, che essendo meno esperti della vita tendono a commettere più errori, spesso si utilizza un approccio premiale/punitivo che, sempre in tema di vecchi proverbi, potremmo chiamare “del bastone e della carota”: si premia un’azione corretta che va ripetuta e magari assunta come sana abitudine, si punisce un’azione che non deve essere ripetuta e che rischia di diventare un pessimo vizio. A seconda del numero e dell’entità delle punizioni, questo metodo millenario sembra funzionare e infatti continua a essere utilizzato. È la quintessenza dello “sbagliando s’impara” eretta a metodo.
Reinforcement learning
Lo stesso sistema è utilizzato per insegnare a comportarsi in un certo modo alle macchine, secondo un paradigma di machine learning chiamato reinforcement learning, cioè apprendimento premiale (spesso tradotto “apprendimento per rinforzo”). L’idea è molto semplice e si descrive facilmente.
Per cominciare il “discente”, per così dire, si chiama “agente” ed è una entità che possiede, istante per istante, un certo stato parametrizzato da variabili o altro, che con flavor ecologico si chiama “ambiente”. L’ambiente muta e quindi l’agente si può trovare in diversi stati a seconda delle circostanze. In ogni caso, a ogni istante, l’agente deve compiere un’azione che, a seconda della situazione ambientale, può essere positiva o negativa, a giudizio di una entità super partes, l’“interprete”, che in questo scenario svolge il ruolo di “oracolo” (o divinità) e che “giudica e manda” (come dice il Poeta) ricompense o punizioni a seconda del comportamento dell’agente:
fonte: Wikipedia
Questa situazione potrebbe, per esempio, descrivere un adulto (l’interprete) che decide se premiare o punire un bimbo (l’agente) a seconda delle circostanze (l’ambiente) e del suo comportamento (le azioni): per esempio, se il bimbo mette in ordine la stanza dopo aver giocato può ricevere un premio, o forse ricevere una punizione se non lo ha fatto, mentre se la mette in ordine al momento di uscire per andare a scuola, facendo quindi tardi, la stessa azione in questo stato diverso genererà una punizione. In questo caso l’agente è senziente, decide e impara, o meglio impara a decidere.
Nel caso di un algoritmo, l’agente deve seguire delle regole interne di comportamento dettate dall’algoritmo stesso, quella che si chiama “policy”: precisamente una policy definisce, per ciascuno stato dell’ambiente e per ciascuna azione possibile, una probabilità che l’azione compiuta in quello stato porti a un premio. Stante queste stime è allora possibile calcolare quella che i probabilisti chiamano “l’attesa” e quindi valutare quanto premio (o quanta punizione) porterà una catena di comportamenti nei diversi stati.
L’obiettivo dei sistemi di reinforcement learning è di modificare la propria policy in modo da massimizzare la probabilità di comportarsi nel modo giusto al momento giusto.
Quali gli ambiti di applicazione?
Questi metodi, qui descritti in modo puramente qualitativo, hanno alle spalle una solida teoria quantitativa, che è sostanzialmente un ramo della teoria matematica dell’ottimizzazione, e sono stati applicati con notevole successo in molte situazioni di “gioco”: per esempio il celeberrimo AlphaGo, l’algoritmo che ha battuto i campioni di Go e ha inventato nuove strategie per questo complicatissimo passatempo, utilizza in modo essenziale il reinforcement learning per ottenere le sue performance super-umane.
A seguire, AlphaGo ha dato origine a una serie di “giocatori” artificiali basati su tecniche di reinforcement learning combinate col Deep Learning ottenendo risultati spettacolari come per esempio essere in grado di imparare a giocare ai videogame semplicemente guardando le partite di giocatori umani e, giunto a un certo livello di conoscenza del gioco, giocare contro se stesso usando il reinforcement learning per migliorare le proprie prestazioni.
Naturalmente non si investono milioni di dollari per sviluppare algoritmi che siano soltanto in grado di giocare ai videogame: il reinforcement learning si sta rivelando fondamentale per guidare il comportamento dei robot usati nelle fabbriche, nella regolazione di infrastrutture complesse (come le reti elettriche) per ottimizzarne le prestazioni, nell’imparare strategie di trading finanziario e molto altro.
Il tutto facendo tesoro dei propri errori e sfidando se stesso a fare di meglio, proprio come (dovremmo fare) noi.
Paolo Caressa