Reti neurali: cosa sono?
- By : Marco Tibaldeschi
- Category : Teoria

Abbiamo visto come alcuni problemi di machine learning non siano tanto volti a trovare come soluzione una funzione (es. stima del prezzo di una casa), ma ad associare una fra un insieme di classi. Questi problemi vengono genericamente detti problemi di classificazione.
Supponiamo, ad esempio, di voler scrivere un software in grado di riconoscere un numero scritto a mano: quello che il nostro software deve fare è prendere l’immagine (supponiamo che sia un’immagine da 50×50 pixel) e “capire” che cosa ci sia scritto dentro, ovvero associare una delle 10 classi numeriche (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9).
Per un software, un’immagine non è altro che una matrice di numeri, nel nostro caso una matrice 50×50, ovvero 2.500 numeri per descrivere un’immagine. È possibile immaginare come risolvere un problema di questo tipo con le tecniche, ad esempio, di regressione logistica, non sia affatto semplice. La nostra funzione ipotesi è funzione di tantissimi parametri diversi!
Il cervello umano
Negli anni ’80-’90 un primo approccio teorico all’intelligenza artificiale è stato, appunto, quello delle reti neurali. Questo approccio tenta di replicare il funzionamento del meraviglioso cervello umano, una incredibile “macchina biologica” in grado di apprendere e migliorare continuamente (in certe persone, purtroppo, pare non funzionare ahimè così tanto bene…).
Il cervello umano, per descriverlo in maniera molto approssimativa, è formato da cellule denominate neuroni. Tali cellule hanno dei “sensori”, che ricevono degli stimoli, chiamati dendriti. Il neurone riceve gli stimoli captati dai dendriti, esegue una qualche operazione (di tipo biochimico) e produce un risultato che viene incanalato su un conduttore chiamato assone.

I neuroni sono connessi tra di loro attraverso le sinapsi, ovvero la parte terminali dell’assone. L’insieme dei neuroni costituisce, appunto, una rete in grado di trasmettere messaggi elettrici. Ogni neurone, quindi, esegue una operazione e passa il risultato di questa operazione al neurone successivo che utilizzerà, appunto, questo e altri risultati provenienti da altri neuroni.
Questa catena permette di risolvere problemi complessi sostanzialmente suddividendoli in problemi più piccoli. È il tipico approccio del divide et impera.
Le reti neurali
L’approccio delle reti neurali è, sostanzialmente, il medesimo. I neuroni sono sostituiti da degli operatori matematici che eseguono calcoli in funzione degli input precedentemente ricevuti e passano il risultato agli operatori successivi, fino a giungere all’ultimo stadio, ovvero il livello (o strato) di uscita.
Le reti neurali sono tornate in voga nei recenti anni in quanto la potenza di calcolo richiesta per poterle far funzionare è diventata alla portata di più o meno tutti, aprendo scenari veramente incredibili.

L’aspetto interessante delle reti neurali è che il funzionamento interno non è stabilito a priori, ma viene sostanzialmente autodeterminato durante la fase di addestramento pilotata dai dati di apprendimento. Questa fase di addestramento è solitamente lunga e dispendiosa, in termini di potenza di calcolo richiesta.
Il “contro” è che la rete neurale non è in grado di descriverci perché funziona così. Sapere che ha imparato a funzionare così è l’unica risposta che possiamo darci.
Infine vi segnalo che, su Microsoft Azure ML, le reti neurali sono ovviamente disponibili all’uso.
No Comments