Reti Neurali: il computer impara con gli esempi [ITA]

in #scienze6 years ago (edited)

Continuiamo la disanima della scorsa settimana sull'Intelligenza Artificiale andando ad approfondire uno degli argomenti accademici più discussi e più studiati di questa disciplina: le Reti Neurali.

Rete Neurale biologica

Per prima cosa domandiamoci come funziona una rete neurale biologica (ad esempio, il nostro cervello): la materia celebrale nella nostra scatola cranica è composta da una moltitudine di neuroni: queste cellule possono inviare impulsi elettrici agli altri neuroni utilizzando un collegamento chiamato assone. Questo segnale arriva ad uno (o più) neuroni che ricevono e interpretano l'impulso elettrico usando i dendriti. Il segnale elettrico viene convertito in chimico e recepito dal neurone di destinazione, che (a seconda di quanto potente fosse il segnale in entrata) può decidere di "accendersi" e trasmettere un segnale ad altri neuroni e così via.


Il labirinto di neuroni in una rete biologica - click for source

Come viene usato questo scambio di messaggi dal nostro cervello? Beh, la stimolazione elettro-chimica tra neuroni genera una sorta di "sentiero" nella nostra materia grigia, un sentiero composto da segnali che percorrono sempre la stessa via visitando sempre gli stessi neuroni. Più questo sentiero viene "rinforzato", più un particolare evento sarà compreso e memorizzato.

Faccio un esempio (ovviamente MOLTO esemplificativo): sono un bambino e per la prima volta vedo un cane. Questo stimolo passa nel mio cervello, creando un sentiero "Cane". Ogni volta che vedo sempre lo stesso cane, questo sentiero si rinforza fino a diventare parte di me: d'ora in avanti per me quella creatura sarà un cane.

Ora, mettiamo caso che veda un'altra razza di cane: pur diverso, si tratta sempre dello stesso animale. Il sentiero battuto in precedenza sarà percorso fino a biforcarsi in un nuovo concetto di cane, che potrà essere rinforzato fino a generalizzare il concetto di cane che avevamo in testa.


Una bimba mentre impara il concetto di "Can che abbaia non morde" - click for source

Questi sentieri possono essere cancellati, deviati, rimescolati per adattarsi a tutto ciò che la vita ci insegna o per correggere eventuali errori di valutazione.

Rete Neurale Artificiale

Una Rete Neurale Artificiale (molto spesso abbreviata "Rete Neurale") è un software, a volte corredato anche di un hardware apposito, sviluppato per simulare il comportamento della Rete Neurale biologica. Senza andare troppo nel dettaglio di funzionamento, una Rete Neurale è composta da tre strati di neuroni artificiali:

  • Il primo strato si occupa di ricevere i dati in input (input layer)
  • Gli strati intermedi si occupano di modellare il dato (hidden layer)
  • L'ultimo strato restituisce l'output atteso (output layer)

Le reti neurali classiche sono chiamate Feedforward, cioè i dati viaggiano sempre in avanti dallo strato di input fino a quello di output: ogni segnale di input è contraddistinto da un numero che ne definisce la "potenza". Tali segnali entrano dentro i singoli neuroni, ad ognuno dei quali è assegnato un determinato peso. Se la somma dei segnali in ingresso supera il peso del neurone, questo si attiva propagando in avanti l'informazione.


Modello esemplificativo di un Neurone Artificiale - click for source

Ricordate il concetto di "Sentiero" di cui parlavamo prima per le reti biologiche? Stiamo simulando proprio questo: a seconda del peso dei segnali di input, la rete creerà un sentiero di comunicazione che ci condurrà fino allo strato di output.

Machine Learning

Come avviene l'addestramento di una rete neurale? Ci sono diversi metodi, ma il più utilizzato è la Back Propagation, o addestramento con supervisione. Si parte sempre da una rete neurale costituita da almeno tre strati ed i cui pesi dei neuroni sono inizialmente impostati ad un valore casuale o costante.

Per questo tipo di addestramento è necessario disporre di un cospicuo insieme di coppie (Dato di Input; Dato di Output) che rappresenteranno il nostro Training Set. Questi set di dati vengono dati in pasto alla nostra rete neurale in modo da "plasmarla" correttamente, secondo due cicli di apprendimento:

1. Forward pass
Prendendo uno degli esempi dal nostro training set, inseriamo i valori di input, propaghiamo le informazioni attraverso la rete ed otteniamo di conseguenza, un’informazione di output. Tale informazione di output, almeno nei primi cicli di apprendimento, non sarà mai uguale alla soluzione ricercata; viene quindi calcolato l'errore rispetto alla soluzione ottima per capire quanto l'elaborazione della rete si discosta dalla realtà.

2. Backward pass
Partendo dall'errore, propaghiamo questa informazione "Al contrario"; in questa maniera vengono aggiustati i pesi di ogni singolo neurone, per far sì che la rete "recepisca" l'errore e possa imparare a comportarsi correttamente di fronte a quella particolare coppia input/output.


Esempio di "Forward Pass" all'interno di una rete neurale - click for source

Questi due passi vengono ripetuti per ogni elemento del training set, in modo da modellare la rete sul tipo di problema che vogliamo affrontare: lo scopo finale è quello di "insegnare" al computer come comportarsi, inferendo in maniera probabilistica il puro significato del problema (che non è stato possibile risolvere coi classici metodi deterministici).

La Back Propagation per funzionare, ha bisogno di un Training Set ben definito, pulito da eventuali imprecisioni, certificato e corretto senza il quale il processo di training potrebbe fallire, fornendo delle percentuali di successo molto basse.

Applicazioni delle Reti Neurali

Abbiamo visto come le Reti Neurali ed il Machine Learning possono essere usati nel campo ludico (scacchi, backgammon e Go) ma quali altre applicazioni pratiche possono esistere?

Avete mai visitato il sito http://www.20q.com/ ? Si tratta di un browser game molto semplice: potete pensare ad una cosa qualsiasi ed il computer la indovinerà in venti domande. O al massimo in 25. Non ci credete? Provatelo.
Questo gioco è basato su una rete neurale, che si adatta ed impara dai suoi errori ogni volta che un giocatore ci mette le mani sopra; essendo in rete da parecchio tempo, ha acquisito una grandissima conoscenza... tanto da far pensare che possa leggere nella mente.

Uno dei principali ambiti accademici per il test delle reti neurali (ed altri metodi di IA) è la categorizzazione dei testi: in base al testo di un articolo, il software sa categorizzarlo per argomento (politica, attualità, sport, cronaca e così via).
Le reti neurali vengono usate in ambito medico, per diagnosticare particolari patologie basandosi sui sintomi o sulle relative radiografie (sono state usate con successo nell'analisi tumorale, per esempio). Sono usate in ambito industriale, per riconoscere quali pezzi sono fuori standard rispetto al risultato atteso. In ambito di voice e writing recognition, per la conversione della scrittura a mano o della voce in testo scritto. Persino in ambito finanziario: sono stati implementate reti neurali per riconoscere i tentativi di frode sulla base delle informazioni fornite, per esempio, durante la stipula di un mutuo o un contratto di prestito.

Pro e Contro

Le reti neurali sono nate come un modo per risolvere principalmente problemi di categorizzazione: utilizzano un approccio probabilistico e non hanno mai una percentuale di successo del 100%. Nonostante questo, in diversi campi e con il giusto addestramento si sono rivelate ottime per sostituire l'uomo nei compiti più complessi.

Il vero problema della rete neurale è che si tratta di una scatola chiusa (Black box, in inglese): come per il cervello umano, non siamo capaci di dare significato al singolo peso del neurone o ai "Sentieri" scolpiti nella rete. Dopo il training la Rete Neurale fornisce dei risultati più o meno corretti, ma non sappiamo perché (al contrario di un programma canonico dove ogni passo di elaborazione è scritto, documentato e può essere corretto).


Un esercito di androidi in miniatura marcia contro l'umanità - click for source

Vogliamo tirar fuori il solito futuro distopico?
Beh, il concetto della Black Box implica che nessun essere umano potrà profondamente capire come funziona un automa basato su una rete neurale... non avremo mai la certezza che seguirà le regole, se non lo farà, o se troverà il modo per aggirarle...

...E se troviamo inquietante Q20, un mondo fatto di androidi che hanno "imparato a vivere" fa davvero paura... o no?


Riferimenti:

Sort:  

In che senso non siamo in grado di dare significato al peso di un nodo della rete? Non sappiamo in che modo giudica le nuove informazioni e di conseguenza se le trasmette?

Sicuramente le trasmette ma non sappiamo in che modo le giudica. Mi spiego: in una rete hai i nodi con peso 1, 2, 3, 89, 2394. Da questi numeri non puoi inferire il comportamento della rete finché non gli dai in pasto un input..!

Volevo informarti che anche SteemStem ti ha lasciato un voto!

Onoratissimo!!!! :)

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.032
BTC 58557.01
ETH 2992.97
USDT 1.00
SBD 3.74