Di nuovo qui a parlare di IA con #beyondIntelligence su #rubricheGalileiane.
Oggi vorrei parlarvi di quella volta in cui presi troppo sul serio una serie TV. Era inizio anno e stavo guardando la seconda stagione di Una serie di Sfortunati Eventi su Netflix. Nelle prime due puntate, i fratelli Baudelaire sono tenuti prigionieri in uno squallido collegio e vengono informati che un avanzato sistema informatico avrebbe riconosciuto il viso del Conte Olaf per proteggerli da un tentativo di rapimento da parte di quest’ultimo. Tuttavia, come immaginabile, il sistema non funziona per niente e al conte Olaf basta cambiare leggermente il proprio aspetto fisico per passare inosservato.

L'avanzato sistema informatico
L’avanzato sistema informatico, Una Serie di Sfortunati Eventi
© 2018, Netflix

A quel punto mi sono chiesto: posso fare di meglio?

Facciamo un passo indietro e parliamo di Reti Neurali. Queste ultime sono degli insiemi di neuroni artificiali collegati tramite sinapsi: ogni neurone artificiale moltiplica il valore di una sinapsi per un determinato peso e, mediante a delle funzioni di trasferimento, i valori vengono sommati e trasmessi alle sinapsi in uscita. Con questa semplice astrazione è possibile approssimare qualsiasi funzione. Per topologia di rete si intende la struttura che i neuroni e le sinapsi assumono.
Una particolare topologia è quella delle Reti Convoluzionali, che emulano l’analisi qualitativa delle immagini da parte della corteccia cerebrale: l’immagine viene spezzettata in tante parti (campi percettivi), a ognuno dei quali viene applicato un filtro. Ciò permette l’estrazione automatica delle feature durante la classificazione: in poche parole una rete convoluzionale può capire cosa contraddistingue un gatto o un libro a partire da tantissime immagini di questi ultimi. Quindi perché non dovrebbe funzionare per il Conte?

Schema astratto di una Rete Neurale Convoluzionale

Utilizzando un classificatore convoluzionale ho dato in pasto alla rete neurale diverse centinaia di immagini del Conte Olaf e altrettante immagini di altre persone o cose. Gli ultimi due neuroni della rete rappresentano una valutazione probabilistica della classificazione: la probabilità che l’immagine ritragga il Conte oppure no. Dopo un po’ di epoche di training sono arrivato a un risultato abbastanza soddisfacente: 80% di accuratezza e capacità di riconoscere anche Jim Carrey nelle vesti del Conte.

A quel punto avrei voluto contattare il preside del collegio e proporgli di aggiornare il suo sistema informatico con il mio software, ma solo a quel punto mi sono reso conto di aver perso 4 ore del mio tempo a risolvere un problema che non appartiene a questo universo, ma a uno fittizio.

Un run della rete neurale con diverse foto

In compenso, ho messo su GitHub il codice, realizzato in Python con TensorFlow, TFLearn, Scipy e Sklearn, così che chiunque può darci un’occhiata e vedere come funziona.
Alla prossima!