Come funziona un Artificial Neural Network (spiegato in maniera semplice)

Source: Deep Learning on Medium

Come funziona un Artificial Neural Network (spiegato in maniera semplice)

Il cervello umano è il meccanismo con la più grande capacità di apprendere del pianeta. Grazie all’esperienza, riusciamo a prevedere gli effetti che potrebbero scaturire da determinate azioni e circostanze, ed a sfruttarle a nostro vantaggio. Così sin da piccoli impariamo a non mettere le mani sul fuoco oppure a sbucciare un frutto per assaporarne il sapore.

Non c’è da stupirsi, infatti, se l’obiettivo di numerosi scienziati è stato quello di individuare i meccanismi che si celano dietro il funzionamento del cervello umano, in modo da poterli riprodurre artificialmente su macchine in grado di svolgere in autonomia compiti sempre più complessi.

Un Artificial Neural Network è un algoritmo della disciplina del Machine Learning che permette ad un computer di mimare il funzionamento del cervello umano in modo da imparare dall’esperienza e poter prevedere un risultato a partire da determinate situazioni al contorno. Questo permette di far assolvere ad una macchina, in completa autonomia, ruoli che prima erano destinati esclusivamente all’essere umano; come guidare un veicolo, rispondere ad un telefono, o diagnosticare una malattia.

In questo articolo ci si limita a descrivere l’intuizione ed il funzionamento dell’algoritmo ad alto livello. Le sua applicazioni ad esempi reali vengono rimandate a future pubblicazioni.

Il neurone

L’elemento fondamentale di cui si costituisce il sistema nervoso centrale, di cui fa parte il cervello, è il neurone. Osservando un neurone di un cervello umano al microscopio si nota la sua particolare struttura: questo è composto da numerosi prolungamenti detti dendriti e una coda lunga detta assone.

Ogni neurone è collegato tramite l’assone ai dendriti di altri neuroni, con i quali è in grado di comunicare attraverso l’invio di un segnale elettrico che passa per le sinapsi.

Un singolo neurone non ha grandi capacità ed non è in grado da solo di svolgere quasi alcun compito. Ma quando combinati assieme, la rete nel suo complesso riesce a svolgere compiti complessi ed a raggiungere grandi risultati.

Un neurone può essere rappresentato attraverso il seguente schema.

Nella sua rappresentazione, i nodi gialli a sinistra rappresentano i dati in input, che nel caso del cervello umano sarebbero le informazioni procurate dai sensi. Il nodo rosso a destra rappresenta invece l’output, la reazione agli stimoli. Il suo valore può essere continuo [1, 1.321, 2.45, …], binario [0 o 1], oppure categorico [rosso, giallo, verde,…].

In mezzo, in verde, c’è il neurone: questo trasforma gli stimoli in reazione. Per fare questo, nel modello, il neurone applica un funzione, detta funzione di attivazione, alla somma pesata dei valori in input.

I pesi, che rappresentano il funzionamento delle sinapsi, svolgono un ruolo fondamentale; questi dicono al neurone quali segnali sono rilevanti e quali no. Per funzionare correttamente nessuna dei segnali in input deve sopraffare gli altri: pertanto si usa normalizzare o standardizzare il dataset.

Si creano così tre “strati” nella rete neurale: input layer, hidden layer, ed output layer.

Come funziona una rete neurale artificiale (ANN)

Analizziamo adesso il funzionamento di una rete neurale artificiale già allenata, ovvero in cui i pesi sono già definiti, esaminando un esempio reale.

Nell’esempio la rete neurale prevede il prezzo di un immobile partendo da quattro parametri, ovvero:

  • I metri quadrati dell’appartamento
  • Il numero di stanze
  • La distanza dal centro
  • L’età dell’immobile

La rete neurale in esempio è costituita da un unico hidden layer composto da cinque neuroni. Si noti inoltre che, in generale, i neuroni non ricevono un segnale da tutti i nodi in input. Questo perché, essendo la rete già allenata, alcuni pesi sono stati posti uguali a zero.

Il prezzo viene composto nell’ output layer in base alla funzione di attivazione ed al segnale ricevuto da ciascuno dei cinque neuroni e relativi pesi.

A sua volta, il segnale inviato da ciascuno dei neuroni nell’ hidden layer dipende dalla funzione di attivazione e da valori e pesi dei valori in input.

Vediamo qualche esempio per capire meglio come funziona.

  • Il neurone N1 prende in esame solamente i metri quadrati e la distanza dal centro. Quale potrebbe essere il ragionamento di questo neurone? Più ci si allontana dal centro più il prezzo diminuisce, e più si aumenta la quadratura più il prezzo aumenta: questo neurone cerca appartamenti che non siano troppo distanti dal centro e che siano sufficientemente grandi. In questo caso il neurone si attiva e contribuisce alla creazione del prezzo.
  • Il neurone N3 prende in esame i metri quadrati, il numero di stanze e l’età dell’immobile. Cerchiamo di capire quale possa essere l’intuizione che questo neurone ha avuto analizzando il dataset di allenamento, e perché prende in considerazione solamente questi tre parametri. Magari i dati con cui è stato allenato si riferiscono ad una città in cui ci sono molte famiglie con figli che cercano case che siano nuove. Questo neurone ha imparato che quando un’immobile ha molte stanze, è grande, ed è nuovo allora ha molto valore.
  • Il neurone N5 prende in esame solamente l’età. Il motivo per cui questo neurone ha imparato a osservare solamente questo parametro è che magari sa che se un immobile è più vecchio di una certa data allora è un immobile storico ed allora ha valore. Questo neurone viene allora attivato solamente quando l’età è maggiore di una certa soglia.

E così via. Quello che accade nella rete è che ogni neurone ha imparato un “concetto” ed, in base a questo, si attiva solamente quando vengono rispettate determinate qualità. Una rete neurale impara ad analizzare un problema sotto diversi punti di vista, ed a fornire un risultato che sia frutto della considerazione di tutti questi aspetti.