Il teorema di approssimazione universale

Il teorema di approssimazione universale

Condividi con i tuoi amici...

Il teorema di Cybenko o teorema di approssimazione universale è un risultato importante nel campo delle reti neurali, in particolare per le reti neurali feed-forward a strato singolo, chiamate anche perceptron a strato singolo.

Il teorema afferma che una rete neurale a strato singolo con una funzione di attivazione sigmoide (o qualsiasi funzione di attivazione continua e non costante) può approssimare qualsiasi funzione continua su un intervallo chiuso e limitato, purché abbia un numero sufficiente di neuroni nel suo strato nascosto.

In altre parole, se abbiamo una funzione continua definita su un intervallo, possiamo trovare una rete neurale con un solo strato nascosto che, con abbastanza neuroni, può rappresentare questa funzione con qualsiasi grado di precisione desiderato.

Il teorema di Cybenko è fondamentale perché fornisce una base teorica per l’uso delle reti neurali nell’apprendimento automatico. Prima di questo teorema, non era chiaro se le reti neurali potessero effettivamente apprendere e rappresentare una vasta gamma di funzioni. Il teorema dimostra che, in teoria, le reti neurali semplici sono potenti strumenti di approssimazione, il che ha spianato la strada al loro sviluppo e utilizzo in molti campi.

Il teorema di Cybenko può essere visto come un caso particolare del più generale teorema di Stone-Weierstrass, che riguarda l’approssimazione di funzioni continue. Questo teorema afferma che ogni funzione continua definita su un intervallo chiuso e limitato può essere approssimata arbitrariamente bene da una combinazione lineare di funzioni più semplici (polinomi o altre funzioni elementari).

Il teorema di Cybenko utilizza l’idea di base del teorema di Stone-Weierstrass, ma la specifica per le reti neurali. Invece di usare polinomi o altre funzioni elementari, il teorema di Cybenko dimostra che le combinazioni lineari di funzioni di attivazione sigmoidi (o altre funzioni di attivazione non costanti e continue) possono approssimare qualsiasi funzione continua. In altre parole, le unità sigmoidi nel teorema di Cybenko giocano un ruolo simile ai polinomi nel teorema di Stone-Weierstrass.

Una rete neurale è costituita da strati di neuroni. I neuroni sono organizzati in strati: uno strato di input, uno o più strati nascosti e uno strato di output. Ogni neurone in un dato strato è collegato ai neuroni del successivo strato tramite dei pesi. Ogni neurone elabora una combinazione lineare degli input (pesi moltiplicati per gli input e sommati a un bias) e passa il risultato attraverso una funzione di attivazione non lineare (come la sigmoide, ReLU, tanh, etc.). La non linearità è cruciale perché permette alla rete di approssimare funzioni non lineari.

Durante il processo di addestramento, i pesi e i bias della rete vengono aggiornati per minimizzare l’errore tra l’output della rete e i valori target. Questo viene fatto utilizzando un algoritmo di ottimizzazione come la discesa del gradiente, che si basa sul calcolo del gradiente dell’errore rispetto ai pesi (backpropagation).

Grazie alla combinazione di pesi ottimizzati e funzioni di attivazione non lineari, una rete neurale può modellare relazioni complesse tra gli input e gli output. La rete apprende a generare una mappa dagli input agli output che si avvicina alla funzione target.

Il teorema di Cybenko si applica a funzioni continue su spazi di dimensione arbitraria, quindi se la rete ha n input, la rete può approssimare funzioni continue f:Rn→R

In questo contesto, la rete neurale può essere vista come una mappa che trasforma un vettore di input x=(x1,x2,x3,…,xn) in un output y che è una funzione delle variabili di input. Questa funzione approssimata può essere espressa come:

y≈f(x1,x2,x3,…,xn)

Dove f è una funzione continua di n variabili.

Per illustrare, supponiamo di avere una rete neurale feed-forward con tre neuroni di input (x1,x2,x3), un singolo strato nascosto con neuroni che utilizzano la funzione di attivazione sigmoide, e un neurone di output. La rete può essere addestrata per approssimare una funzione continua che mappa i tre input ad un output:

y=f(x1,x2,x3)

Il teorema di Cybenko garantisce che, con un numero sufficiente di neuroni nel livello nascosto, la rete può approssimare f arbitrariamente bene.

Approfondimento matematico

Perchè in generale le reti neurali sono costituite da più livelli nascosti?

L’idea che un singolo strato nascosto sia sufficiente per approssimare qualsiasi funzione continua su un intervallo chiuso e limitato, come abbiamo visto, deriva dal teorema di approssimazione universale. Tuttavia, nella pratica dell’apprendimento automatico e delle reti neurali, ci sono diverse ragioni per cui si preferisce utilizzare reti con più strati nascosti, anche noti come reti neurali profonde (deep neural networks).

Le reti profonde possono sfruttare la capacità di costruire funzioni complesse componendo funzioni più semplici. Questo permette di rappresentare in modo più efficiente relazioni complesse rispetto a un singolo strato nascosto. Reti con più strati possono apprendere gerarchie di caratteristiche. Strati più bassi possono catturare caratteristiche di basso livello (ad esempio, bordi nelle immagini), mentre strati più alti possono catturare caratteristiche di alto livello (ad esempio, forme o oggetti interi).

Strati multipli con un numero adeguato di neuroni possono contribuire a una migliore generalizzazione rispetto a un singolo strato con molti neuroni, riducendo il rischio di sovradattamento ai dati di addestramento (overfitting).

Le reti profonde possono rappresentare funzioni che sono esponenzialmente più complesse rispetto a reti con un singolo strato nascosto. Questo significa che alcune funzioni possono essere rappresentate con meno neuroni complessivi in una rete profonda rispetto a una rete con un solo strato nascosto.

Anche se un singolo strato nascosto può approssimare una qualsiasi funzione, la quantità di neuroni necessari potrebbe essere impraticabile. Reti profonde possono approssimare le stesse funzioni con meno risorse computazionali.

In compiti di visione artificiale, reti profonde come le CNN (Convolutional Neural Networks) hanno dimostrato di essere estremamente efficaci nel riconoscimento di immagini e nella rilevazione di oggetti.

Nella NLP (Natural Language Processing), reti come le RNN (Recurrent Neural Networks) e le trasformatori (Transformers) con più strati sono utilizzate per catturare dipendenze temporali e strutture linguistiche complesse.