Uno sguardo al futuro dell’intelligenza artificiale: le deep neural networks

Dispositivi come auto automatiche e case intelligenti sono ormai entrati nel gergo quotidiano. Rendere una macchina ‘intelligente’ è comunque una sfida complessa; di recente, però, c'è stato un notevole balzo in avanti, legato sia all'introduzione del GPGPU, che ha aumentato le potenzialità dei nostri calcolatori, sia a notevoli avanzamenti nel campo del machine learning, che hanno reso possibile emulare il ragionamento umano. In questo articolo, parleremo di questo, illustrando il perché stia raccogliendo le attenzioni dei ricercatori e dell’industria.

Dal Turco a Turing

La comprensione dei meccanismi di apprendimento ed inferenza di conoscenza del cervello umano è complessa, ma attira numerose attenzioni (e ricerche) da ormai molto tempo. I primi esperimenti in tal senso sono riconducibili alla fine del diciottesimo secolo quando, in alcune corti nobiliari tedesche, si poteva trovare un esemplare del Turco di von Kempelen, una 'macchina' in grado di giocare a scacchi, e battere, un essere umano. Ovviamente, un automa del genere non poteva esistere a quel tempo: e, infatti, il Turco era un guscio vuoto, adatto ad ospitare, al suo interno, una persona di bassa statura.

Nella prima metà del secolo scorso, però, le cose iniziarono a farsi serie: Turing formulò il suo test, che definisce intelligente una macchina in grado di ingannare, in una conversazione, un interlocutore, facendogli credere di trovarsi di fronte ad un altro essere umano. Per dovere di cronaca, il test di Turing non è ancora stato superato (o, forse, sì, ma l'argomento è oggetto di controversie). In seguito, nel 1956, durante una serie di conferenze tenutesi a Dartmouth, furono definiti i concetti di intelligenza artificiale generale (general AI), propria di macchine in grado di replicare in maniera completa i comportamenti umani (come Terminator, o C-3PO), e di intelligenza artificiale ristretta (narrow AI), focalizzata su uno specifico ambito di conoscenza; ed è qui che si iniziò a definire il moderno campo dell'intelligenza artificiale; per ulteriori dettagli 'storici', vi rimandiamo a un nostro articolo precedente.

Macchine che apprendono

Poniamoci una domanda, che esuli dalle definizioni formali: quali sono le macchine che, al giorno d'oggi, definiamo 'intelligenti'? In generale, possiamo definire come 'intelligente' una macchina in grado di riconoscere lo stato in cui si trova, ed agire di conseguenza. Ad esempio, una self-driving car deve agire in base alle condizioni della strada, dei pedoni e delle altre auto, mentre un macchinario industriale esegue ciclicamente una serie di operazioni, interrompendole in determinate situazioni (ad esempio, un essere umano nel raggio di azione, un incendio, e così via).

Consideriamo una self-driving car. L'idea più semplice sarebbe modellarne il comportamento mediante una macchina a stati, considerando magari un mondo semplificato, nel quale l'auto può solo accelerare e sterzare, ed è in grado di distinguere tra semaforo verde e rosso; mapperemo quindi tutte le possibili coppie stato/azione in una LUT:

  1. Accelera fino ad arrivare alla velocità di crociera.
  2. Se trovi un semaforo, ed è verde verde, prosegui.
  3. Se trovi un semaforo, ed è rosso, fermati. Al verde, torna ad uno.
  4. Se il percorso prevede una svolta, gira nella direzione opportuna.

Semplice, giusto? Ma cosa succede se teniamo in conto i pedoni? Ovviamente, dovremo rivedere lo schema precedente, inserendo almeno un nuovo stato:

  1. ...
  2. Se trovi un pedone, fermati. Quando il pedone è fuori dal campo visivo, torna ad 1.

E cosa accade se occorre evitare un'altra auto, la cui posizione e velocità variano in maniera dinamica? Ovviamente, occorre modificare di nuovo la macchina a stati. E i possibili stati aumentano esponenzialmente con all'aumento delle variabili considerate, fino a rendere questo approccio 'hard-coded' ingestibile: ed è qui che entra in gioco il concetto di machine learning, ossia di macchine in grado di apprendere, e rispondere autonomamente a stimoli esterni.

Per illustrare i vantaggi di una macchina che apprende automaticamente, analizziamo nello specifico uno dei problemi che devono essere risolti dalla nostra self-driving car, ossia il riconoscimento dei segnali stradali. L'auto deve riconoscere segnali di diverso tipo (obblighi, precedenze, etc.), in differenti condizioni (inquadratura perfetta, fenomeni occlusivi, nebbia, inquadrature di lato, etc.); per farlo, esistono vari metodi, a partire da quelli supervisionati, che sfruttano la conoscenza di un esperto, il quale individua un insieme di 'caratteristiche', o feature, che permettono di distinguere ciascun segnale dagli altri (ad esempio, forma, colore e scritta); queste sono utilizzate per addestrare un classificatore, il quale sarà in grado di determinare la classe di un segnale mai visto in precedenza. Gli approcci supervisionati, però, hanno dei limiti: alle volte non è semplice trovare un insieme di feature sufficientemente discriminative, ed è probabile che si scelga un insieme sub-ottimo, andando quindi a considerare caratteristiche inadatte ai fini della classificazione (ad esempio, lo spessore dei segnali stradali, o la loro distanza dal suolo). Di conseguenza, nel corso degli anni sono stati sviluppati diversi approcci non supervisionati, tra i quali i più conosciuti sono le artificial neural network (ANN), di cui abbiamo già accennato in un nostro precedente articolo.

Emulare il cervello umano

Le ANN (più comunemente note come reti neurali) si ispirano al cervello umano, il quale è composto da un elevato numero di neuroni (compreso tra i 10 ed i 100 miliardi), fittamente interconnessi. Ovviamente, una struttura che riproduca fedelmente un cervello umano non è, con la tecnologia attuale, realizzabile; di conseguenza, le ANN sono organizzate in strati, o layer, successivi di neuroni; ogni neurone è connesso esclusivamente a tutti i neuroni degli strati immediatamente precedente e successivo, definendo una direzione di propagazione dei dati, ed agisce da sommatore, pesando l'ingresso in funzione del peso assegnato a ciascuna connessione con i neuroni dello strato precedente; tali pesi rappresentano l'affinità tra i neuroni di strati successivi: nel nostro caso, immaginando che i neuroni dello strato 1 si attivino in base al colore del segnale stradale, e quelli dello strato 2 in base alla forma dello stesso, è probabile che i neuroni fortemente attivi in caso di segnale blu abbiano connessioni molto forti con i neuroni attivi in caso di segnale di forma circolare o rettangolare, mentre le connessioni con i neuroni attivi in caso di forma triangolare abbiano minor rilevanza.
[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2521 parole ed è riservato agli abbonati MAKER. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici MAKER e potrai fare il download (PDF) dell'EOS-Book del mese. ABBONATI ORA, è semplice e sicuro.

Abbonati alle riviste di elettronica

2 Commenti

    • Angelo Cardellicchio Angelo Cardellicchio 3 aprile 2018

Scrivi un commento

EOS-Academy