Il concetto di neurone artificiale e di reti neurali (Neural Networks), assieme alle tecniche per l’apprendimento automatico (Machine Learning), sono i pilastri fondamentali dell’intelligenza artificiale. Spesso tali concetti appaiono troppo complessi alle persone non esperte. Questo articolo introduce in maniera estremamente semplice gli argomenti citati, mostrandoti in concreto di cosa si tratta e di come questi vengono utilizzati oggi nelle applicazioni reali.

Intelligenza artificiale (Artificial Intelligence)

Sebbene non esista una definizione unica, possiamo affermare che l’intelligenza artificiale fornisce ad una macchina la capacità di acquisire informazioni, eseguire ragionamenti complessi, prendere decisioni ed imparare dagli errori, in maniera simile a quanto facciamo noi essere umani.

Tradizionalmente i computer permettono di eseguire calcoli matematici molto complessi in tempi brevi attraverso le istruzioni impartite dal programmatore. La grande innovazione introdotta dalle reti neurali consiste nella caratteristica di consentire ai computer di risolvere problemi complessi senza la necessità che il programmatore sappia come fare. In sostanza, con questo approccio, non serve che il programmatore impartisca le istruzioni necessarie a risolvere un problema. Al contrario, le istruzioni impartite al computer in questo caso definiscono la strategia che la macchina dovrà applicare per trovare in maniera autonoma la soluzione ad un determinato problema. Un passaggio fondamentale di questo approccio è l’apprendimento automatico, cioè la fase che consente alla macchina di imparare a partire da informazioni affidabili. Evidentemente questo approccio risolve la difficoltà di trovare in maniera analitica modelli e algoritmi in grado di riprodurre i meccanismi cognitivi del cervello umano.

Semplificando ancora il concetto, l’idea è la seguente:

Poiché non so come fare a risolvere un problema, programmo un computer per risolverlo da solo insegnandogli a farlo attraverso un insieme di esempi, per ognuno dei quali fornisco alla macchina le informazioni di partenza e la soluzione.

Intelligenza artificiale nella classificazione di immagini

Se volessi sviluppare un software per riconoscere in maniera automatica se una determinata immagine contiene un cane o un gatto, durante l’addestramento della rete neurale potrei fornire alla macchina 1000 immagini di cani e 1000 immagini di gatti, specificando per ognuna di queste se si tratta di un cane o un gatto (risultato atteso). In questo modo la macchina farà una calibrazione automatica dei parametri della rete neurale per fare in modo di riuscire a distinguere i cani dai gatti. Finita la fase di addestramento, ogni volta che interrogherò la macchina sottoponendogli un’immagine, questa proverà a capire se si tratta di un cane o di un gatto producendo come risultato una risposta precisa. Evidentemente, quante più immagini offro in pasto alla macchina durante l’addestramento, tanto più la calibrazione della rete neurale sarà precisa e quindi il risultato prodotto affidabile.

Intelligenza artificiale nel riconoscimento biometrico

Un altro esempio di applicazione “semplice” utilizzata ormai da tantissime persone: il riconoscimento automatico di impronta digitale per lo sblocco sicuro di un dispositivo. Quasi tutti gli smartphone supportano ormai lo sblocco del dispositivo attraverso riconoscimento di impronta. In questo caso il programmatore ha sviluppato un software che insegna al dispositivo, non tanto come riconoscere le impronte digitali, piuttosto quali informazioni estrarre dall’impronta acquisita attraverso touchscreen e quale strategia utilizzare per eseguire il riconoscimento attraverso una rete neurale. Verosimilmente tale rete neurale è stata precedentemente addestrata per distinguere le impronte digitali di persone diverse. Come per l’esempio precedente, questa fase consiste nel fornire alla macchina un insieme di esempi (dataset).

Il software imparerà a riconoscerti attraverso la fase di configurazione, durante la quale ti verrà chiesto di poggiare il dito sul display ripetutamente sino a quando la macchina avrà catturato le caratteristiche specifiche della tua impronta e sarà certo di poterti distinguere dalle persone non autorizzate.

Si tratta di una tecnologia ormai consolidata ed applicata in svariati contesti. Per esempio, oggi è possibile reperire sul mercato lucchetti digitali, a prezzi estremamente contenuti, che possono essere sbloccati semplicemente poggiandoci il dito sopra o direttamente tramite smartphone. Alcuni esempi sono il Decdeal (lucchetto digitale impermeabile) e il Futurehom.

Capacità cognitive e intelligenza artificiale

Tra i problemi complessi che tipicamente l’uomo non è in grado di risolvere attraverso il tradizionale approccio di programmazione, generalmente basato su algoritmi sequenziali, rientrano quindi tutti quelli che riguardano le capacità cognitive umane. In altri termini, sino a qualche anno fa, non eravamo in grado di programmare un computer per imitare i processi analitici e decisionali tipici del cervello umano. Per esempio, il riconoscimento del linguaggio naturale è una delle sfide più importanti degli ultimi anni. I risultati ottenuti hanno permesso di sviluppare i cosiddetti assistenti personali intelligenti, come Alexa di Amazon, Google Assistant e Siri di Apple. Il Nuovo Echo Show 8 (2ª generazione) è un dispositivo dal costo contenuto che permette un’interazione davvero sorprendente, consentendo di impartire comandi e chiedere informazioni specifiche in maniera naturale.

Cosa sono le reti neurali (Neural Networks)

Si tratta di un modello matematico ispirato alle reti neurali biologiche del cervello umano. Tale modello è composto da un insieme di neuroni artificiali interconnessi tra di loro. Ogni neurone artificiale realizza quindi una funzione matematica, producendo in uscita un risultato a partire dalle informazioni ricevute in ingresso.

Sebbene per adesso tale definizione possa apparire complessa, in concreto è possibile immaginare le reti neurali come un metodo di programmazione. L’idea alla base di questo modello è davvero affascinate e di fatto stravolge il modo di programmare un computer. L’approccio tradizionale prevede infatti di scomporre un problema complesso in problemi più semplici, ben definiti, che possono essere facilmente tradotti in programmi eseguibili da un computer. Nel modello di una rete neurale il programma consiste in un insieme di istruzioni che permette di insegnare al computer come risolvere problemi complessi imparando dall’osservazione di un insieme di dati. Quest’ultima fase è nota come addestramento o allenamento della rete neurale (in inglese training). In generale ci si riferisce a tale caratteristica con il termine Machine Learning o Automatic Learning (apprendimento automatico). Evidentemente, per ottenere un sistema completamente autonomo, serve che l’allenamento della rete neurale venga fatto in maniera automatica dal computer stesso, senza la necessità dell’intervento umano.

Neurone Sigmoidale (Sigmoid Neuron) per l’intelligenza artificiale

Il modello di neurone artificiale utilizzato orami praticamente per tutte le applicazioni di intelligenza artificiale è quello di tipo sigmoidale. Vediamo alcuni concetti fondamentali utilizzando come fonte l’e-book gratuito Neural Networks and Deep Learning (in lingua inglese).

La rappresentazione generale di un neurone artificiale è la seguente:

modello neurone artificiale intelligenza artificiale

La funzione che lega gli ingressi alle uscite in un neurone artificiale di tipo sigmoidale è:

Nel caso di 3 ingressi, l’indice j assume i valori 1, 2 e 3. In questa espressione i parametri wj rappresentano i pesi assegnati ad ognuno degli ingressi del neurone. Il parametro b è detto invece bias.

La forma tipica di tale funzione è quella rappresentata nel seguente grafico:

caratteristica neurone artificiale di tipo sigmoidale

Da una semplice analisi qualitativa, è possibile comprendere che i pesi ed il bias consentono di cambiare questa caratteristica, variandone pendenza o traslandola in una direzione o nell’altra. Sono proprio questi i parametri che vengono calibrati automaticamente durante la fase di addestramento della rete neurale per fare in modo di ottenere in uscita il valore corretto.

Architettura di una rete neurale

Una rete neurale è il risultato dell’interconnessione tra diversi neuroni artificiali. Evidentemente la funzione matematica complessiva ottenuta come risultato di questa interconnessione assume una complessità tale da renderne difficile la trattazione matematica. La figura seguente mostra un esempio di architettura di rete neurale a 4 livelli per applicazioni di intelligenza artificiale, tratta ancora una volta dall’e-book Neural Networks and Deep Learning:

architettura rete neurale intelligenza artificiale

Ogni cerchio rappresenta un neurone artificiale. Il primo livello (a sinistra) è detto livello di ingresso, il neurone più a destra rappresenta il livello di uscita, mentre i neuroni intermedi sono posti nei cosiddetti livelli nascosti. Al variare degli ingressi cambia l’uscita ed il particolare legame tra ingressi ed uscita dipende dai parametri di ogni singolo neurone della rete (pesi e bias). Da quanto detto appare chiara la complessità di addestrare una rete neurale.

Apprendimento profondo (Deep Learning)

Sino al 2006 il principale limite all’approccio basato su reti neurali consisteva nell’addestramento. Allora non si sapeva infatti come fare ad addestrare una rete neurale per ottenere prestazioni adeguate e di fatto questa tecnologia poteva essere utilizzata solo per alcune specifiche applicazioni.

Proprio in quell’anno, la scoperta di nuove tecniche di apprendimento applicabili alle reti neurali profonde (deep neural network) ha cambiato completamente le prospettive ed ha permesso di ottenere gli straordinari risultati che oggi rendono possibile l’utilizzo delle reti neurali per svariate applicazioni, come il riconoscimento vocale ed il processamento del linguaggio naturale, largamente utilizzate da grandi aziende come Google. Tali tecniche, note appunto come apprendimento profondo, permettono oggi di ottenere prestazioni davvero sorprendenti.

Leggi altri argomenti della categoria informatica.

Per rimanere aggiornato su questo e altri argomenti iscriviti alla Newsletter.