)
Serie 2 · Reti neurali

Il neurone artificiale

Un neurone artificiale calcola una somma pesata dei suoi input, aggiunge un bias e passa il risultato attraverso una funzione di attivazione: è la non linearità di quest'ultima a rendere sensata la profondità, perché senza di essa un'intera rete collasserebbe in una sola operazione lineare.

← Tutti gli argomenti
Un neurone artificiale: n input moltiplicati per i rispettivi pesi, sommati insieme al bias, e passati attraverso una funzione di attivazione che produce l'output y.

Nel capitolo precedente abbiamo detto che una rete è fatta di nodi elementari e che, combinandone abbastanza, si può, almeno in linea di principio, rappresentare qualunque relazione fra input e output. Ma abbiamo lasciato la promessa a metà: che cosa fa, esattamente, uno di quei nodi? E come nascono le formule, quando li si mette insieme? Guardiamo dentro a un nodo.

Che cosa calcola un neurone. Un neurone artificiale è un piccolo modello matematico con quattro ingredienti:

In una riga: si moltiplica ogni input per il suo peso, si somma tutto, si aggiunge il bias e si passa il risultato attraverso f. Tutto qui.

Le funzioni di attivazione. La scelta di f cambia il carattere del neurone. Tre esempi tipici:

Una piccola rete con due input, uno strato nascosto di tre neuroni e due neuroni di output: le somme pesate scritte per esteso e la corrispondente forma matriciale compatta.
Una piccola rete — due input, uno strato nascosto di tre neuroni, due neuroni di output — scritta per esteso e poi in forma matriciale compatta. Con un'attivazione lineare l'intero prodotto collassa in un'unica matrice; è la non linearità a tenere distinti gli strati.

Come i neuroni combinati producono le formule. Prendiamo una piccola rete di esempio: due input, uno strato nascosto di tre neuroni, due neuroni di output (nell’esempio il bias è omesso, per non appesantire le formule). Ogni neurone nascosto calcola la propria somma pesata degli input; ogni neurone di output calcola la propria somma pesata degli output nascosti. Scritte per esteso, queste espressioni diventano rapidamente molto complesse, ed è per questo che si usa la notazione matriciale: gli output di uno strato si ottengono moltiplicando una matrice di pesi per il vettore degli input, e l’intera rete a due strati si scrive, in modo compattissimo, come Z = V × W × X.

E qui torna la funzione di attivazione, con un ruolo tutt’altro che decorativo. Se f è l’identità — cioè se non c’è alcuna non linearità — quel prodotto di matrici si può moltiplicare una volta per tutte e ridurre a un’unica matrice. In altre parole: una rete profonda con attivazione lineare collassa in un solo strato, e tutta la profondità di cui abbiamo parlato nel capitolo 6 svanisce. È la non linearità della funzione di attivazione a impedire questo collasso — è ciò che rende la profondità davvero significativa. Senza di essa, mille strati varrebbero quanto uno.

Ecco perché il neurone non è solo “somma pesata più bias”: quel piccolo pezzo non lineare in fondo è ciò che dà a una rete profonda la sua vera potenza. Nel prossimo capitolo vediamo come si trovano, tutti insieme, i milioni di pesi che abbiamo introdotto: la backpropagation.