Bigino per capire le reti neurali

Bigino delle reti neurali

L’hype delle reti neurali

Si parla sempre di reti neurali. Reti neurali che vedono, che parlano, che scrivono. Ma cosa sono le reti neurali?

Sintetizzando tantissimo, le reti neurali sono delle combinazioni complesse di equazioni non lineari i cui coefficienti vengono ottimizzati per rappresentare al meglio i dati con cui la rete è allenata. E semplificando dalla sintesi, la rete neurale è quella famosa scatola nera in cui entrano dei dati ed esce una previsione.

Cerchiamo di aprire la scatola nera per vedere come è fatta.

Dentro la scatola nera

Ci sono reti neurali per qualsiasi cosa: reti neurali convoluzionali che riconoscono immagini e dati reticolari, reti neurali feedforward brave a predire guasti o baseline, reti ricorsive utili per le previsioni nel futuro, macchine di Boltzmann per i sistemi di raccomandazione e così via. Come potete intuire, ogni rete ha le sue caratteristiche, per cui cerchiamo di generalizzare per capire cosa c’è dentro la scatola, e poi guardiamo rapidamente con un’infografica le varie tipologie.

Non ci si inventa mai nulla

Partiamo dai cenni generali: perché rete neurale? Questo algoritmo è stato immaginato a partire dalla struttura complessa nel nostro cervello, e in particolare del reticolo dei neuroni. Ogni neurone ha tanti bracci in ingresso (dendriti), che traghettano informazioni verso il neurone, e una sola uscita (assone), che porta l’informazione elaborata dal neurone verso altri neuroni vicini. I neuroni hanno funzioni diverse e sono specializzati per queste funzioni. Riconosciamo quindi tre caratteristiche principali:

  • la presenza di neuroni che sono specializzati in qualcosa
  • la modalità di traduzione dell’informazione nel neurone, da tanti segnali a uno solo elaborato
  • l’interconnessione tra i diversi neurone a creare una rete.

Eccola, la rete neurale!

La rete neurale da vicino

Prendendo spunto dal mondo naturale, la rete neurale è quindi un insieme di elementi semplici – i neuroni – strutturati in strati (o layers). Ogni strato è caratterizzato da neuroni simili, che ricevono in input gli output dello strato precedente, e inviano a loro volta il loro output elaborato allo strato successivo.

Una rete neurale profonda fatta con questo strumento qui: http://alexlenail.me/NN-SVG/index.html

Il primo strato si chiama input layer, e ha tanti neuroni quanti sono i parametri di input del sistema. Gli strati intermedi vengono chiamati con slancio di fantasia hidden layers, e con coerenza lo strato finale è chiamato output layer, e ha tanti neuroni quanti sono i risultati della rete. Ad esempio, un sistema che riconosce quattro modi di guasto diversi in base a 2 temperature, a 4 pressioni e allo stato della macchina, avrà 7 input e 5 output – 4 per i modi di guasto e uno per lo stato di macchina sana.

La struttura della rete, quindi il numero di strati e il numero di neuroni per ogni strato sono alcuni degli iperparametri della rete, parametri che l’algoritmo non sa gestire in autonomia e che il data scientist deve impostare prima di allenare la rete.

Ogni neurone è collegato a tutti i neuroni successivi tramite dei pesi. Questi sono i veri parametri, quelli che l’algoritmo ottimizza in fase di apprendimento.

Dentro il neurone

Il neurone riceve gli input, li elabora in base ai pesi e produce un output. Come si concretizza questo processo oscuro? Vediamo un esempio semplice da un neurone specializzato per reti neurali feedforward – le più semplici e largamente utilizzate.

Esempio di neurone di rete neurale feedforward.

La prima operazione che il neurone effettua è la moltiplicazione di ogni valore in uscita dal neurone precedente per il peso che unisce i due neuroni. Una semplice combinazione lineare. E la chiamano intelligenza artificiale…

La seconda operazione è la trasformazione del risultato della combinazione lineare attraverso una funzione caratteristica, chiamata funzione di attivazione. Anche questa fa parte degli iperparametri da scegliere in anticipo, le più utilizzate sono la ReLU, la sigmoide o la tangente iperbolica.

Ovviamente questo è solo un esempio, esistono neuroni diversi che si possono scegliere in base all’obiettivo e che hanno strutture differenti con più o meno elementi. Ad esempio, il neurone delle reti long-short term memory (LSTM, specializzate nella previsione nel futuro) ha una struttura ben più complessa.

Neurone di una LSTM.

It’s always math

Insomma, per rovinare il romanticismo, la rete neurale non è altro che un calcolo matriciale complesso e molto noioso e lungo, così lungo che a farlo a mano ci si metterebbero settimane.

La capacità computazionale dei PC ha reso invece possibile risolvere queste equazioni molto complesse in poco tempo (minuti o ore a seconda della complessità della rete), identificando i pesi più giusti per rappresentare al meglio un set di dati forniti in fase di allenamento.

Neural network cheat sheet

Bene, dimenticate tutto quello che avete letto! Nell’infografica di Fjodor Vanveen del 2016 sono mappate una buona parte delle reti neurali che esistono e che si possono utilizzare. Come vedete, alcune non hanno layer di output ma hanno solo gli input (quindi imparano con apprendimento non supervisionato). Nell’esempio precedente abbiamo visto neuroni semplici (chiamati hidden cell) e neuroni con cella di memoria (memory cell), tuttavia la lista delle tipologie di neuroni è lunga e garantisce una flessibilità altissima per questa famiglia di algoritmi.

The Nerual Network Zoo, by Fjodor Vanveen. Anche se è del 2016 è sufficientemente completa per comprendere le reti neurali. Qui la spiegazione di ogni singola rete per i più appassionati: https://www.asimovinstitute.org/author/fjodorvanveen/