Una delle preoccupazioni più diffuse nell’ambito dello sviluppo di motori di AI – Artificial Intelligence riguarda la presunta insondabilità del software finale. È opinione diffusa infatti che una volta addestrato un motore di intelligenza artificiale non sia più possibile capirne l’esatto funzionamento e di conseguenza si rischi di perdere il controllo del proprio prodotto; in realtà la situazione è spesso ben diversa, vediamo in quali casi la preoccupazione può essere fondata e fino a che punto.
Black box dell’intelligenza artificiale: miti da sfatare
Innanzitutto è opportuno distinguere tra soluzioni che utilizzano il Deep Learning (ovvero reti neurali profonde), soluzioni che utilizzano reti neurali non profonde e soluzioni di Machine Learning che utilizzano altri algoritmi come ad esempio la Random Forest.
Il primo caso, quello del Deep Learning, è il contesto dove la preoccupazione trova più fondamento, giacché fino a poco tempo fa la comprensione del ruolo delle varie parti della rete risultava del tutto proibitiva e, ancora oggi, la comprensione del ruolo di un singolo nodo non è stata raggiunta. La notizia positiva è che grazie agli ultimi risultati raggiunti, oggi è possibile avere una comprensione di massima piuttosto avanzata del ruolo dei vari layer della rete e spesso anche di aree specifiche di ciascuno strato. Per ottenere questa comprensione, la strategia più efficace è lanciare la rete “al contrario” inserendo l’output e ripercorrendo il calcolo fino a ritrovare l’input esatto che avrebbe generato quell’output. Questa approccio, unito alla possibilità di inserire non solo l’output finale della rete, ma anche output intermedi su ciascun livello della rete, consente di ricostruire lo schema di “ragionamento” della rete e identificare il ruolo delle varie aree, più o meno come un encefalogramma registrato su una persona soggetta a stimoli specifici riesce a mettere in correlazione il ruolo di alcune aree del cervello umano con alcune emozioni specifiche.
Questa strategia di comprensione delle reti profonde ha anche consentito recentemente di “smontare” e “ri-assemblare” parti di reti diverse addestrate in contesti diversi per massimizzarne alcuni comportamenti; per esempio, si può estrarre da una rete addestrata per la guida autonoma la sola parte specializzata nel riconoscimento dei bordi degli oggetti e riutilizzarla nell’ambito del riconoscimento facciale. Similmente è possibile inserire un output specifico e comprendere in questo modo quale parte dell’input solitamente analizzato è determinante nel suo riconoscimento e quale invece è superfluo.
Nel caso delle reti neurali diverse da quelle profonde, già in fase di costruzione è possibile definire buona parte del comportamento atteso dalla rete e, seppure anche in questo caso non è né possibile né utile entrare nel merito del ruolo di ogni singolo nodo, è possibile influenzare il funzionamento della rete agendo sui numerosi gradi di libertà settati in fase di costruzione. A titolo di esempio, si pensi ad una rete GRU (Gate Recurrent Unit, derivazione delle reti LSTM) e a come sia possibile aumentare o diminuire la persistenza della memoria acquisita variando le funzioni associate ai singoli nodi (fermo restando che sarà l’addestramento a perfezionare i parametri definitivi). Oppure, nel caso delle reti di tipo Perceptron, è possibile applicare la medesima strategia di “inversione” vista per le reti profonde e andare in questo modo a identificare l’impronta digitale che la rete associa a ciascun output cercato.
Se poi estendiamo lo sguardo oltre le reti neurali, al più ampio mondo delle tecniche adottate in ambito Machine Learning, ecco che troviamo numerosi approcci ben più trasparenti che consentono agli sviluppatori sia di comprendere che di modificare puntualmente i propri prodotti. Un esempio lampante è per l’appunto la Random Forest che al termine dell’addestramento ci fornisce un albero (più o meno vasto) in cui in ciascun bivio viene esplicitata una scelta in funzione di parametri e pesi determinati dall’addestramento, e dunque (sebbene spesso sia controproducente) è persino possibile andare ad intervenire sui singoli bivi per modificarne il funzionamento a piacere. Un altro esempio che possiamo citare, per includere nel ragionamento anche le tecniche unsupervised, è l’algoritmo K-means (utilizzato per dividere in gruppi un insieme, per esempio di clienti o prodotti) che al termine della fase di addestramento ci restituisce i baricentri precisi delle varie classi identificate (ovvero il modello rappresentativo di ciascuna classe) e le ampiezze relative, fornendo non solo un potente strumento di classificazione ma anche informazioni sorprendenti su quelli che sono i rappresentanti identificati.
In sintesi, il software utilizzato in ambito AI, durante la fase di training non solo si evolve raggiungendo performance ineguagliabili, ma assorbe e distilla una straordinaria mole di informazioni che può restituire agli sviluppatori in seguito ad un’attenta analisi.
* Alessandro Maserati è un matematico, AI designer con un passato nella consulenza strategica, spinto dalla passione per tecnologia, innovazione e problemi complessi; indaga e incoraggia ogni cambiamento per un futuro migliore. Dal 2017 guida il team di #AI di Logol