Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Roberto Prevete » 6.Reti Neurali feed-forward


Introduzione

Nella lezione precedentemente abbiamo visto che un problema di classificazione può essere visto in termini di un insieme finito di funzioni discriminanti.

Tale problema, allora, si riduce ad un problema di approssimazione di funzione.

In generale, allora, possiamo porci il problema di approssimare la funzione

f: x∈Rd → f(x) ∈ Rc

tramite una funzione parametrizzata,

g : w∈Rp, x∈Rd → g(x;w) ∈ Rc

dove w è un vettore di p parametri.

Vogliamo, quindi, modellare la funzione f(x) tramite g(x;w).

Approssimare una funzione

A tale scopo è n ecessario:

Verificare che effettivamente g(x;w) abbia la capacità di rappresentare f(x) .

Una volta che si è appurato che g(x;w) ha la capacità di rappresentare f(x) è necessario trovare un procedimento che ci permetta di trovare il “corretto” valore w= w* per approssimare f(x).

A tale fine, in genere, abbiamo un insieme di esempio, TS, di coppie di valori (x1,f(x1)=t1), (x2,f(x2)=t2), …, (xn,f(xn)=tn) e la determinazione di w corrisponde a determinare il valore w= w* tale che g(x1,w*)=t1, g(x1,w*)=t1,…, g(xn,w*)=tn.

Il processo tramite il quale sono determinati i parametri w* è detto learning o training, e, per tale motivo, TS è detto training set.

Approssimare una funzione tramite reti neurali

Per risolvere un problema di approssimazione di una funzione tramite reti neurali dobbiamo, allora:

  • Verificare che esistono modelli di reti neurali che realizzano funzioni g(x;w) da uno spazio d-dimensionale ad uno spazio c-dimensionale.
  • Capire quale è la capacità di rappresentazione delle funzioni realizzate da tali modelli.
  • Determinare un processo tramite il quale sono determinati i parametri della rete.

Una definizione di una generica rete neurale

Possiamo caratterizzare molti modelli di rete neurale tramite le seguenti proprietà:

  • Un insieme finito di N elementi, detti nodi, neuroni o unità, S={1,2, …, N}.
  • Un insieme finito di connessioni (in genere monodirezionali) C, ciascuna che connette un nodo k ad un nodo h. A ciascuna connessione che va da k ad h è associata un peso whk .
  • Un insieme finito di d elementi, detti input della rete (da cui, in genere, possono solo partire connessioni).
  • Ciascun nodo h è caratterizzato da:
    • un valore di input ih, un valore di attivazione ah, un valore di output zh e una valore di bias (o soglia) bh.
    • una funzione di input sh, una funzione di attivazione gh e una funzione di output fh.

Una definizione di una generica rete neurale (segue)

Detto wh il vettore dei pesi delle connessioni che arrivano su h e o il vettore degli output dei nodi k che hanno connessioni che partono da k e arrivano su h, l’input input ih è pari a ih= sh(wh, o ). Normalmente si ha: ih= ∑k whk*ok

Ciascun ah è pari a ah= gh (ih , bh)

Ciascun oh è pari a ah= fh (ah, bh)

Una sequenza di attivazione dei nodi, cioè l’ordine tramite il quale sono calcolati i valori di output dei nodi. Sequenze di attivazione possibili possono essere sincrone o asincrone.

Un sottoinsieme dei nodi di S, in genere, sono marcati come nodi di output e i restanti nodi sono detti nodi interni o nascosti (hidden).

Esempio di Rete Neurale. Ciascun cerchio rappresenta una unità di calcolo, o nodo. Le frecce rappresentano le connessioni tra i nodi.

Esempio di Rete Neurale. Ciascun cerchio rappresenta una unità di calcolo, o nodo. Le frecce rappresentano le connessioni tra i nodi.


Reti neurali feed-forward

Reti Feed-forward

Una modello classico di reti neurali sono le reti neurali feed-forward.
Queste hanno la proprietà di non avere cicli.

Possiamo dire che una rete neurale è feed-forward se gode della seguente proprietà: E’ possibile associare numeri successivi agli input e a tutti i nodi tale che ciascuna nodo possa riceve connessioni solamente dagli input o da un nodo avente un numero associato più piccolo.

La sequenza di attivazione è asincrona e segue l’ordine topologico stabilito dalle connessioni.

Rete feed-forward.

Rete feed-forward.


Reti Feed-forward

Allora, l’output di un nodo h di una rete feed-forward è dato da:

zh= fh (∑k whk*zk + bh)

Dove la somma va su tutti gli input e i nodi k che inviano connessioni ad h.

(In questo caso abbiamo supposto che la funzione di attivazione sia pari all’identità.

Reti Feed-Forward: Forward-propagation

Forward-propagation

Per un dato insieme di valori dell’input della rete, successive applicazioni di

zh= fh (∑k whk*zk + bh)

permettono l’attivazione di tutti i nodi della rete, inclusi i nodi di output.

Questo processo puo’ essere visto come una propagazione in avanti (forward propagation) di segnali attraverso la rete (secondo l’ordine topologico stabilito dalle connessioni).

Osserviamo che il parametro di bias può essere interpretato come se ci fosse un ulteriore nodo, sempre con valore di output pari a 1, che invia una connessioni ai nodi h, quindi possiamo scrivere:

zh= fh (∑k whk*zk )

dove la somma, stavolta, è anche estesa al parametro di bias ponendo wh0=bh.

Reti Feed-forward

Importante !

Tali reti, allora, hanno la proprietà che le attivazioni dei nodi di output possono essere espresse come funzioni deterministiche degli input e così l’intera rete rappresenta un mapping non lineare tra uno spazio d-dimensionale ad uno spazio c-dimensionale con parametri dati da i pesi della rete.

Reti Feed-Forward Multi-Strato

Reti neurali a strati

Nella classe di reti feed-forward una sottoclasse fondamentale sono le reti neurali organizzate a strati (o layer). In questo caso la rete è suddivisa in r sottoinsiemi disgiunti l1, l2, …lr (strati, layer) tale che ci sono solamente connessioni che vanno dagli input ai nodi appartenenti a l1 e connessioni che vanno dai nodi appartenenti a lj-1 ai nodi appartenenti a lj con j=2,3, …,r. I nodi appartenenti a lr sono i nodi di output i restanti nodi sono i nodi interni. Osserviamo che una rete a r strati di nodi può essere vista come una rete di r strati di pesi. Nella classe delle reti neurali a strati feed-forward è possibile ancora individuare le reti full-connected.

In questo caso ciascun neurone di uno strato invia connessioni a tutti i neuroni dello strato successivo.

Rete neurale multi-strato.

Rete neurale multi-strato.


Reti Feed-Forward Multi-Strato (segue)

Importante !

Quindi una rete neurale Feed-Forward è esprimibile come una funzione parametrizzata g(x;w) che ha come dominio uno spazio d-dimensionale , come codominio uno spazio c-dimensionale e come parametri tutti i pesi della rete più i bias dei nodi.

Reti Feed-Forward Multi-Strato (segue)

Una osservazione (1)

Notiamo che se le funzioni di output di tutti i nodi interni sono funzioni lineari allora esiste sempre una rete neurale equivalente senza nodi interni.

Supponendo, infatti, che:

  1. la funzione di attivazione sia pari all’identità per tutti i nodi della rete e,
  2. tutti i nodi interni abbiano la medesima funzione lineare f di output, mentre i nodi di output abbiano come funzione di output la funzione non lineare f1,

possiamo scrivere:

zh= f (∑k w’hkxk ) (con f lineare), per i nodi interni

ym= f1(∑h w”mhzh ) = f1(∑h w”mh f(∑k w’hkxk ))= f1(∑h w”mhk f( w’hk)xk )),
per i nodi di output

Reti Feed-Forward Multi-Strato (segue)

Una osservazione (2)

Quindi:

ym= f1(∑hk w”mh f( w’hk)xk)= f1(∑kxk∗∑h w”mh f( w’hk))

ym= f1(∑k wmk xk)

avendo posto wmk=∑h w”mh f(w’hk).

In questo modo possiamo ottenere una rete equivalente senza nodi interni.

Reti Feed-Forward Multi-Strato (segue)

Importante

Questo significa che da ora in avanti considereremo sempre reti neurali con nodi interni con funzione di output (o funzione di attivazione) non lineare..

Inoltre …
Da ora in avanti supporremo sempre che una tra la funzione di attivazione e la funzione di output coincida con la funzione identità.

Funzioni di output: la sigmoide

Alcune funzioni di output

La sigmoide:

s(x) = 1/(1+e-x)

Tale funzione è limitata nel range (0,1).

Per x=0 assume valore pari ad ½

Esempio di implementazione in matlab:

x=[-10:0.1:10];
y=1 ./ (1+exp(-x));
plot(x,y)

Sigmoide.

Sigmoide.


Funzioni di output: Tangh

Alcune funzioni di output

tanh(x)= (1 -e-2x)/(1 + e-2x)

Ha la stessa forma della sigmoide ma è limitata nel range (-1,1).

Esempio di implementazione in matlab:

x=[-10:0.1:10];
y= (1-exp(-2*x))./ (1+exp(-2*x));
plot(x,y)

Multi-strato.

Multi-strato.


Funzioni di output: relazione tra sigmoide e tangh

Relazione tra sigmoide e tanh

Osserviamo che s(x) differisce da tanh(x) solo per una trasformazione lineare:

2s(2x)-1=tangh(x)

infatti

2s(2x)-1= 2/(1+ e-2x) -1 =
[2-(1+ e-2x)]/(1+ e-2x) =
(1- e-2x)/ (1+ e-2x) =
ex (1- e-2x)/ ex (1+ e-2x) =
(ex – e-x)/ (ex + e-x) = tanh(x)

quindi una rete neurale con funzione di attivazione pari a s(x) è equivalente a una rete neurale con funzione di attivazione pari a tanh(x) ma con pesi e bias differenti.

Prossime lezioni

Nella prossime lezioni, vedremo:

  • La capacità rappresentativa di reti neurali con nodi con funzione di output a soglia.
  • La capacità rappresentativa di reti neurali con nodi con funzione di output di tipo sigmoidale.
  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93