È diventato abbastanza comune in questi giorni sentire le persone riferirsi ai moderni sistemi di apprendimento automatico come “scatole nere”. Come esempio, si consideri un recente episodio del podcast di Sam Harris in cui ha intervistato il pioniere dell’IA Stuart Russell. Harris chiede:

“Quindi, se non mi sbaglio, la maggior parte, se non tutti questi approcci di apprendimento profondo, o anche più in generale approcci di apprendimento automatico sono, essenzialmente, scatole nere, in cui non si può davvero ispezionare come l’algoritmo sta compiendo ciò che sta compiendo.”

Anche se questa metafora è appropriata per alcune situazioni particolari, è in realtà piuttosto fuorviante in generale, e può causare una notevole quantità di confusione. Come vedremo, un sistema di apprendimento profondo non è una scatola nera; anche lo sviluppo di un tale sistema non deve essere una scatola nera. La vera sfida, tuttavia, è che entrambe queste cose sono complesse, e non necessariamente ben comprese. Qui, voglio cercare di chiarire alcune di queste idee, e allo stesso tempo riflettere su cosa intendiamo per spiegazioni.

Come spiegherò di seguito, credo che la confusione nasca almeno in parte dalle idee sbagliate che la gente ha su come funzionano questi sistemi. Quando le persone ricorrono alla metafora della scatola nera, ciò che sembrano esprimere è il fatto che è difficile dare un senso allo scopo dei vari componenti di un modello di apprendimento automatico. Anche se questo è effettivamente difficile, voglio sostenere che è anche un’aspettativa irrealistica. Lungo il percorso, cercherò di spiegare la differenza tra i modelli e come vengono addestrati, discuterò gli scenari in cui la metafora della scatola nera è appropriata, e suggerirò che in molti modi, gli umani sono le vere scatole nere, almeno per quanto riguarda l’apprendimento automatico.

Spiegazioni

Per cominciare, è utile riflettere su cosa le persone intendono quando parlano di spiegazioni. Questa non è affatto una questione banale, ma sembrano esserci almeno due modi particolarmente rilevanti di pensarci.

Quando chiediamo a qualcuno una spiegazione del perché ha fatto qualcosa (“Perché hai fatto X?”), stiamo operando su una certa serie di presupposti di fondo. Nel caso di una decisione presa con cura, stiamo tipicamente assumendo che abbiano avuto qualche buona ragione per agire come hanno fatto, e stiamo fondamentalmente chiedendo il processo di ragionamento che hanno usato per prendere la decisione. Per esempio, potremmo aspettarci che abbiano soppesato i pro e i contro e scelto un corso d’azione basato sull’aspettativa che portasse a qualche particolare risultato.

Quando chiediamo perché qualcosa è andato storto, al contrario, stiamo invece chiedendo una sorta di spiegazione post-hoc del fallimento. Per esempio, dopo un incidente d’auto, potremmo volere una spiegazione di ciò che ha causato l’incidente. Il conducente era distratto? Un’altra macchina li ha fatti sbandare? Piuttosto che un processo di ragionamento, stiamo chiedendo, più o meno, lo stimolo critico che ha causato una particolare reazione al di fuori del comportamento normale.

Quando le persone pensano all’intelligenza artificiale, di solito sembrano avere in mente il primo tipo di spiegazione. L’aspettativa è che il sistema abbia deliberato e scelto una linea d’azione in base al risultato atteso. Anche se ci sono casi in cui questo è possibile, sempre più spesso stiamo assistendo a uno spostamento verso sistemi che sono più simili al secondo caso; cioè, ricevono stimoli e poi reagiscono e basta.

Ci sono ottime ragioni per questo (non ultimo perché il mondo è complicato), ma significa che è più difficile capire le ragioni per cui una particolare decisione è stata presa, o perché abbiamo finito con un modello piuttosto che un altro. Con questo in mente, cerchiamo di capire cosa intendiamo per modello, e la metafora della scatola nera.

Boxes and Models

La metafora della scatola nera risale ai primi tempi della cibernetica e del comportamentismo, e tipicamente si riferisce ad un sistema di cui possiamo solo osservare gli input e gli output, ma non il funzionamento interno. In effetti, questo era il modo in cui B. F. Skinner concettualizzava le menti in generale. Sebbene abbia dimostrato con successo come certi comportamenti appresi potessero essere spiegati da un segnale di rinforzo che collegava certi input a certi output, ha poi notoriamente commesso l’errore di pensare che questa teoria potesse spiegare facilmente tutto il comportamento umano, compreso il linguaggio.

Come esempio più semplice di una scatola nera, consideriamo un esperimento di Skinner: vi viene data una scatola con una serie di input (interruttori e pulsanti) e una serie di output (luci che sono o accese o spente). Manipolando gli ingressi, siete in grado di osservare le uscite corrispondenti, ma non potete guardare dentro per vedere come funziona la scatola. Nel caso più semplice, come un interruttore della luce in una stanza, è facile determinare con grande sicurezza che l’interruttore controlla il livello della luce. Per un sistema sufficientemente complesso, tuttavia, può essere effettivamente impossibile determinare come funziona la scatola semplicemente provando varie combinazioni.

Ora immaginate che vi sia permesso di aprire la scatola e guardare dentro. Vi viene persino dato uno schema elettrico completo, che mostra quali sono tutti i componenti e come sono collegati. Inoltre, nessuno dei componenti è complesso di per sé; tutto è costruito da componenti semplici come resistenze e condensatori, ognuno dei quali ha un comportamento che è ben compreso in isolamento. Ora, non solo hai accesso alle specifiche complete di tutti i componenti del sistema, ma puoi anche fare esperimenti per vedere come ciascuno dei vari componenti risponde a particolari input.

Potresti pensare che con tutte queste informazioni in mano, saresti ora in grado di dare una buona spiegazione di come funziona la scatola. Dopo tutto, ogni singolo componente è compreso, e non ci sono informazioni nascoste. Sfortunatamente, la complessità nasce dall’interazione di molti componenti semplici. Per un sistema sufficientemente complesso, è improbabile che si riesca a prevedere quale sarà l’output della scatola per un dato input, senza eseguire l’esperimento per scoprirlo. L’unica spiegazione del perché la scatola fa quello che fa è che tutti i componenti stanno seguendo le regole che governano il loro comportamento individuale, e il comportamento complessivo emerge dalle loro interazioni.

Ancora più importante, al di là del come del sistema, sareste probabilmente in perdita per spiegare perché ogni componente è stato messo dove si trova, anche se conoscete lo scopo generale del sistema. Dato che la scatola è stata progettata per qualche scopo, si presume che ogni componente sia stato aggiunto per una ragione. Per un sistema particolarmente intelligente, tuttavia, ogni componente potrebbe finire per assumere più ruoli, come nel caso del DNA. Anche se questo può portare ad un sistema molto efficiente, rende anche molto difficile anche solo pensare di riassumere lo scopo di ogni componente. In altre parole, il come del sistema è completamente trasparente, ma il perché è potenzialmente insondabile.

Questo, a quanto pare, è una metafora perfetta per il deep learning. In generale, l’intero sistema è aperto all’ispezione. Inoltre, è interamente costituito da componenti semplici che sono facilmente comprensibili in isolamento. Anche se conosciamo lo scopo del sistema complessivo, tuttavia, non c’è necessariamente una spiegazione semplice che possiamo offrire su come funziona il sistema, oltre al fatto che ogni singolo componente opera secondo le proprie regole, in risposta all’input. Questa, infatti, è la vera spiegazione di come funziona il sistema, ed è del tutto trasparente. La domanda più difficile, naturalmente, è perché ogni componente ha assunto il ruolo che ha. Per capire meglio, sarà utile separare l’idea di un modello dall’algoritmo usato per addestrarlo.

Modelli e algoritmi

Per entrare davvero nei dettagli, dobbiamo essere un po’ più precisi su ciò di cui stiamo parlando. Harris si riferisce a “come l’algoritmo sta realizzando ciò che sta realizzando”, ma ci sono davvero due parti qui: un modello – come un sistema di apprendimento profondo – e un algoritmo di apprendimento – che usiamo per adattare il modello ai dati. Quando Harris si riferisce a “l’algoritmo”, sta presumibilmente parlando del modello, non necessariamente di come è stato addestrato.

Cosa intendiamo esattamente per modello? Anche se forse un po’ vago, un modello statistico fondamentalmente cattura le ipotesi che facciamo su come funzionano le cose nel mondo, con dettagli da apprendere dai dati. In particolare, un modello specifica quali sono gli input, quali sono gli output, e tipicamente come pensiamo che gli input possano interagire tra loro nel generare l’output.

Un classico esempio di modello sono le equazioni che governano la gravità newtoniana. Il modello afferma che l’output (la forza di gravità tra due oggetti) è determinato da tre valori di input: la massa del primo oggetto, la massa del secondo oggetto e la distanza tra loro. Più precisamente, afferma che la gravità sarà proporzionale al prodotto delle due masse, diviso per la distanza al quadrato. Criticamente, non spiega perché questi fattori dovrebbero essere i fattori che influenzano la gravità; cerca semplicemente di fornire una spiegazione parsimoniosa che ci permette di prevedere la gravità per qualsiasi situazione.

Naturalmente, anche se questo fosse completamente corretto, per poter fare una previsione, dobbiamo anche conoscere il fattore di scala corrispondente, G. In linea di principio, però, dovrebbe essere possibile imparare questo valore attraverso l’osservazione. Se abbiamo assunto il modello corretto (o quasi corretto) di come le cose funzionano nella realtà, abbiamo una buona probabilità di essere in grado di imparare i dettagli rilevanti dai dati.

Nel caso della gravità, naturalmente, Einstein ha infine dimostrato che il modello di Newton era solo approssimativamente corretto, e che fallisce in condizioni estreme. Per la maggior parte delle circostanze, tuttavia, il modello newtoniano è abbastanza buono, ed è per questo che le persone sono state in grado di imparare la costante G= 6,674×10^(-11) N – (m/kg)², e usarlo per fare previsioni.

Il modello di Einstein è molto più complesso, con più dettagli da imparare attraverso l’osservazione. Nella maggior parte delle circostanze, dà approssimativamente la stessa previsione del modello newtoniano, ma è più accurato in circostanze estreme, e naturalmente è stato essenziale nello sviluppo di tecnologie come il GPS. Ancora più impressionante, le previsioni secondarie della relatività sono state stupefacenti, prevedendo con successo, per esempio, l’esistenza dei buchi neri prima che potessimo sperare di testarne l’esistenza. Eppure sappiamo che anche il modello di Einstein non è completamente corretto, poiché non si accorda con i modelli della meccanica quantistica in condizioni ancora più estreme.

La gravitazione, naturalmente, è deterministica (per quanto ne sappiamo). Nell’apprendimento automatico e nella statistica, al contrario, abbiamo tipicamente a che fare con modelli che implicano incertezza o casualità. Per esempio, un semplice modello di quanto tempo vivrete sarebbe solo prevedere la media della popolazione del paese in cui vivete. Un modello migliore potrebbe prendere in considerazione fattori rilevanti, come il vostro stato di salute attuale, i vostri geni, quanto fate esercizio fisico, se fumate o meno le sigarette, ecc. In quasi tutti i casi, comunque, ci sarà una certa incertezza sulla previsione, perché non conosciamo tutti i fattori rilevanti. (Questo è diverso, naturalmente, dall’apparente vera casualità che si verifica a livello subatomico, ma non ci preoccuperemo di questa differenza qui).

Oltre ad essere un rebranding incredibilmente riuscito delle reti neurali e dell’apprendimento automatico (esso stesso probabilmente un rebranding piuttosto riuscito della statistica), il termine deep learning si riferisce ad un particolare tipo di modello, uno in cui gli output sono i risultati di una serie di molte semplici trasformazioni applicate agli input (molto simile al nostro schema elettrico di sopra). Anche se i modelli di apprendimento profondo sono certamente complessi, non sono scatole nere. Infatti, sarebbe più accurato riferirsi a loro come scatole di vetro, perché possiamo letteralmente guardare dentro e vedere cosa sta facendo ogni componente.

Il problema, naturalmente, è che questi sistemi sono anche complicati. Se vi do una semplice serie di regole da seguire per fare una previsione, finché non ci sono troppe regole e le regole stesse sono semplici, potreste capire abbastanza facilmente l’intera serie di mappature input-output nella vostra mente. Questo è anche vero, sebbene in misura minore, con una classe di modelli conosciuti come modelli lineari, dove l’effetto di cambiare un qualsiasi input può essere interpretato senza conoscere il valore degli altri input.

I modelli di apprendimento profondo, al contrario, tipicamente coinvolgono non linearità e interazioni tra gli input, il che significa che non solo non c’è una semplice mappatura da input a output, l’effetto di cambiare un input può dipendere criticamente dai valori di altri input. Questo rende molto difficile capire mentalmente cosa sta succedendo, ma i dettagli sono comunque trasparenti e completamente aperti all’ispezione.

Il calcolo effettivo eseguito da questi modelli nel fare una previsione è tipicamente abbastanza semplice; dove le cose diventano difficili è nell’apprendimento effettivo dei parametri del modello dai dati. Come descritto sopra, una volta che assumiamo una certa forma per un modello (in questo caso, una rete neurale flessibile); dobbiamo poi cercare di capire buoni valori per i parametri dai dati.

Nell’esempio della gravità, una volta che abbiamo assunto un modello “abbastanza buono” (proporzionale alla massa e inversamente proporzionale alla distanza al quadrato), dobbiamo solo risolvere il valore di un parametro (G), adattando il modello alle osservazioni. Con i moderni sistemi di apprendimento profondo, al contrario, ci possono essere facilmente milioni di tali parametri da apprendere.

In pratica, quasi tutti questi modelli di apprendimento profondo sono addestrati utilizzando una qualche variante di un algoritmo chiamato discesa del gradiente stocastico (SGD), che prende campioni casuali dai dati di formazione, e regola gradualmente tutti i parametri per rendere l’output previsto più simile a quello che vogliamo. Esattamente perché funziona così bene come fa non è ancora ben compreso, ma la cosa principale da tenere a mente è che anch’esso è trasparente.

Perché di solito è inizializzato con valori casuali per tutti i parametri, SGD può portare a parametri diversi ogni volta che lo eseguiamo. L’algoritmo stesso, tuttavia, è deterministico, e se usassimo la stessa inizializzazione e gli stessi dati, produrrebbe lo stesso risultato. In altre parole, né il modello né l’algoritmo sono una scatola nera.

Anche se è un po’ insoddisfacente, la risposta completa al perché un sistema di apprendimento automatico ha fatto qualcosa risiede in definitiva nella combinazione delle ipotesi che abbiamo fatto nel progettare il modello, i dati su cui è stato addestrato e le varie decisioni prese su come apprendere i parametri, compresa la casualità nell’inizializzazione.

Torna alle scatole nere

Perché tutto questo è importante? Bene, ci sono almeno due modi in cui il concetto di scatola nera è altamente rilevante per l’apprendimento automatico.

In primo luogo, ci sono molti algoritmi e sistemi software (e non solo quelli basati sull’apprendimento automatico) che sono scatole nere per quanto riguarda l’utente. Questo è forse il caso più comune nel software proprietario, dove l’utente non ha accesso al funzionamento interno, e tutto ciò che possiamo vedere sono gli ingressi e le uscite. Questo è il tipo di sistema che ProPublica ha segnalato nella sua copertura degli algoritmi giudiziari di condanna (in particolare il sistema COMPAS di Northpointe). In quel caso, conosciamo gli input, e possiamo vedere i punteggi di rischio che hanno dato alle persone come output. Non abbiamo però accesso all’algoritmo usato dalla società, o ai dati su cui è stato addestrato. Tuttavia, è sicuro dire che qualcuno ha accesso ai dettagli – presumibilmente i dipendenti dell’azienda – ed è molto probabile che sia completamente trasparente per loro.

Il secondo modo in cui la metafora delle scatole nere è rilevante è rispetto ai sistemi che stiamo cercando di imparare, come la visione umana. Per certi versi, il comportamento umano è insolitamente trasparente, in quanto possiamo effettivamente chiedere alle persone perché hanno fatto qualcosa e ottenere spiegazioni. Tuttavia, ci sono buone ragioni per credere che non sempre conosciamo le vere ragioni delle cose che facciamo. Lungi dall’essere trasparenti a noi stessi, semplicemente non abbiamo accesso cosciente a molti dei processi interni che governano il nostro comportamento. Se ci viene chiesto di spiegare perché abbiamo fatto qualcosa, possiamo essere in grado di fornire una narrazione che almeno trasmette come ci è sembrato il processo decisionale. Se ci viene chiesto di spiegare come siamo in grado di riconoscere gli oggetti, al contrario, potremmo pensare di poter fornire una sorta di spiegazione (qualcosa che coinvolge bordi e colori), ma in realtà, questo processo opera ben al di sotto del livello di coscienza.

Anche se ci sono circostanze speciali in cui possiamo effettivamente ispezionare il funzionamento interno dei sistemi umani o di altri mammiferi, come gli esperimenti di neuroscienza, in generale, stiamo cercando di utilizzare l’apprendimento automatico per imitare il comportamento umano utilizzando solo gli input e gli output. In altre parole, dalla prospettiva di un sistema di apprendimento automatico, l’umano è la scatola nera.

Conclusione

In conclusione, è utile riflettere su ciò che la gente vuole quando pensa a sistemi che non sono scatole nere. La gente tipicamente immagina qualcosa come lo scenario in cui un’auto a guida autonoma è uscita di strada, e noi vogliamo sapere perché. Nell’immaginazione popolare, l’aspettativa sembra essere che l’auto debba aver valutato i possibili risultati, assegnato loro delle probabilità, e scelto quello con la migliore possibilità di massimizzare un qualche risultato migliore, dove migliore è determinato secondo una sorta di moralità che è stata programmata in essa.

In realtà, è altamente improbabile che questo sia il modo in cui le cose funzionano. Piuttosto, se chiediamo alla macchina perché ha fatto quello che ha fatto, la risposta sarà che ha applicato un calcolo trasparente e deterministico usando i valori dei suoi parametri, dato il suo input attuale, e questo ha determinato le sue azioni. Se chiediamo perché aveva quei particolari parametri, la risposta sarà che sono il risultato del modello che è stato scelto, i dati su cui è stato addestrato e i dettagli dell’algoritmo di apprendimento che è stato utilizzato.

Questo sembra frustrante e poco utile, ed è facile capire perché le persone ricorrono alla metafora della scatola nera. Tuttavia, considerate che in realtà non abbiamo questo tipo di accesso per i sistemi che stiamo cercando di imitare. Se chiediamo a un guidatore umano perché è uscito di strada, sarà probabilmente in grado di rispondere in linguaggio e di dare un resoconto di se stesso – che era ubriaco, o distratto, o ha dovuto sterzare, o è stato accecato dal tempo – e tuttavia, a parte fornire una sorta di coerenza narrativa, non sappiamo davvero perché l’ha fatto, e nemmeno loro. Almeno con l’apprendimento automatico, possiamo ricreare lo stesso scenario e sondare lo stato interno. Può essere complicato da capire, ma non è una scatola nera.