In questo articolo introduciamo la funzione ReLU, una delle principali funzioni di attivazione per le reti neurali. L’acronimo ReLU sta per REctified Linear Unit.
Questa funzione di attivazione è definita come segue
In altre parole, questa funzione restituisce l’input stesso quando questo è positivo, e restituisce zero altrimenti. Il suo grafico è infatti il seguente:
Questa funzione può essere applicata a tutte le componenti di un vettore, come viene di solito fatto con una generica funzione attivazione:
Questa funzione è lineare a tratti ed è anche continua. Ha però un potenziale problema, ovvero non è differenziabile in zero, in quanto la derivata destra e sinistra sono rispettivamente +1 e 0.
Principali proprietà di questa funzione
Positivamente omogenea
La prima proprietà fondamentale è che è positivamente omogenea, e quindi molto facile da trattare dato che si comporta in modo relativamente simile alle funzioni lineari. Più precisamente, ReLU è positivamente omogenea visto che, dato un generico
vale che
Permette di rappresentare i monomi
Un'altra proprietà interessante è che ReLU ci permette di rappresentare parecchie funzioni elementari. Questo è il motivo principale per cui molti ricercatori la apprezzano particolarmente, dato che questo comportamento permette di recuperare classici risultati dell’analisi numerica e della teoria dell’approssimazione nel mondo delle reti neurali.
Un esempio è che possiamo scrivere
Ho usato questa proprietà in un mio articolo che è stato recentemente pubblicato sulla rivista Journal of Computational Physics , e lo trovi qui: Predictions Based on Pixel Data: Insights from PDEs and Finite Differences.
Per convincerci che questa proprietà sia corretta, concentriamoci un secondo sul caso q=1. In tal caso, verificare l’identità è relativamente veloce e si può fare come segue
Come esercizio, ti consiglio di provare a fare la stessa verifica per il monomio di secondo grado.
Funzioni cappello
Altre funzioni fondamentali nel campo dell'analisi numerica sono le funzioni cappello o hat functions che sono basi dello spazio delle funzioni lineari a tratti.
Queste sono fondamentali nel campo del metodo degli elementi finiti. Queste funzioni si basano su una griglia definita da nodi in un intervallo, per esempio
Per ogni nodo esiste una funzione cappello, che vale zero in tutti i nodi tranne nel corrispondente, dove vale uno. Questo ci permette di rappresentare una generica funzione lineare a tratti con valori fissati sui nodi in maniera super semplice:
Queste funzioni cappello possono essere scritte esattamente tramite la funzione ReLU. Ho spiegato bene come farlo nel video associato a questo articolo, che trovi qui:
Ci sarebbero molte altre proprietà da evidenziare, ma voglio concludere con una che ritengo molto interessante.
Rappresentazione del massimo e minimo tra due numeri
Una proprietà che mi è risultata estremamente utile nell’ultimo articolo a cui ho lavorato, Approximation theory for 1-Lipschitz ResNets, è che la funzione ReLU ci permette di calcolare esattamente il massimo ed il minimo tra due numeri. Lo possiamo fare come segue:
Per prendere la mano con la funzione ReLU, ti consiglio di verificare che queste identità siano corrette. È molto semplice ma istruttivo!
Conclusione
Direi che abbiamo visto abbastanza cose su questa funzione. Se ti interessano più approfondimenti su questo tema fammelo sapere che ne parlo molto volentieri!
P.S. Ho in programma di parlare più approfonditamente della teoria matematica delle reti neurali, con l’obiettivo di condividere circa un nuovo post ogni settimana.
La tua intenzione sulle reti neurali è graditissima. Spero che tu possa trovare il tempo di farlo. Grazie!
Perfetto, grazie mille per il feedback Luca!