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

Roberto Prevete » 8.Capacità rappresentativa delle reti neurali - Parte seconda


Introduzione

Nella presente lezione analizzeremo la capacità rappresentativa delle reti a strati con funzione di output di tipo sigmoidale.

Tuttavia, prima di iniziare con tale argomento, faremo una digressione storica sul perceptron.

Una digressione storica: il perceptron

Reti neurali con un singolo strato di pesi ed un neurone di uscita, con funzione di output, g, a soglia, furono studiate da Rosenblatt (1962).

Tali reti furono chiamate perceptrons.

Queste reti furono applicate a problemi di classificazioni, dove i valori di input erano estratti, in genere, da immagini binarie.

Tali immagini rappresentavano forme semplici, come ad esempio i caratteri alfanumerici.

Il perceptron.

Il perceptron.


Una digressione storica: il perceptron (segue)

Il valore di output del perceptron è dato da:

y=g(∑k wk Φk (x))

dove:

x è un vettore di 0 ed 1 rappresentate l’immagine binaria,

Φk sono funzioni a soglia che dipendono solo da poche componenti del vettore x,

g è una funzione a soglia. Ad esempio la funzione di Heaviside (cioè g(a)=-1 se a<0, altrimenti g(a)=1).

Il perceptron.

Il perceptron.


Una digressione storica: il perceptron (segue)

In un famoso libro, Perceptrons (1969), Minsky e Papert mostrarono che ci sono molti tipi di problemi di classificazione che un perceptron non può risolvere.

Precedentemente abbiamo visto che con un singolo neurone con funzione di output a soglia è possibile risolvere solo problemi linearmente separabili. Il perceptron, grazie alle funzioni Φk (x), potrebbe, però, “mappare” un problema non linearmente separabile in uno linearmente separabile.

La critica di Minsky e Papert, perciò, non nasce tanto dal fatto che con un solo neurone risolvo solo problemi linearmente separabili ma dal fatto che le funzioni Φk (x) sono fissate “a priori” e non possono essere adattate al particolare problema (Abbiamo visto nelle lezioni precedenti che, invece, è possibile considerare una sorta di perceptron in cui anche le funzioni Φk (x) sono adattabili, e così superare tale critica).

Una digressione storica: il perceptron (segue)

Vediamo, quindi, un tipico problema riportato da Minsky e Papert per cui il perceptron non può essere utilizzato.

Il problema è quello di determinare se una immagine geometrica binaria sia semplicemente connessa oppure no, con le funzioni Φ1 (x) e Φ2 (x) con campi recettivi come in figura.

Supponiamo che le forme connesse debbano essere classificate con 1 , mentre le altre -1.

Supponiamo che l’input per le funzioni Φk (x) sia piccolo rispetto alle immagini e fissato, come in figura.

Un esempio di problema non risolvibile con il perceptron.

Un esempio di problema non risolvibile con il perceptron.


Una digressione storica: il perceptron (segue)

Allora per la prima immagine (in alto a sinistra) la somma pesata delle funzioni Φk (x) deve essere minore di zero, affinché la reti risponda correttamente -1.

Un esempio di problema non risolvibile con il perceptron.

Un esempio di problema non risolvibile con il perceptron.


Una digressione storica: il perceptron (segue)

Per la seconda immagine (in alto a destra) la rete dovrebbe rispondere +1, ma l’unica differenza nell’immagine, rispetto alla prima, è nella parte sinistra, quindi tale cambiamento deve produrre un incremento nella somma pesata.

Un esempio di problema non risolvibile con il perceptron.

Un esempio di problema non risolvibile con il perceptron.


Una digressione storica: il perceptron (segue)

Analogamente per la terza immagine (in basso a sinistra) la rete dovrebbe rispondere +1, ma l’unica differenza nell’immagine, rispetto alla prima, è nella parte destra, quindi tale cambiamento deve produrre ancora una volta un incremento nella somma pesata.

Un esempio di problema non risolvibile con il perceptron.

Un esempio di problema non risolvibile con il perceptron.


Una digressione storica: il perceptron (segue)

Per la quarta immagine la rete dovrebbe rispondere, invece, -1, ma tale immagine differisce dalla prima per la parte sinistra (allo stesso modo della seconda immagine) e per la parte destra (allo stesso modo della terza immagine), quindi tale cambiamento deve produrre, ancora una volta, un incremento nella somma pesata. Allora, sulla quarta immagine la rete non può rispondere -1.

Un esempio di problema non risolvibile con il perceptron.

Un esempio di problema non risolvibile con il perceptron.


Reti a strati con funzione di output di tipo sigmoidale

Reti neurali feed-forward a strati sono in genere utilizzate con:

  • Un unico strato di nodi interni.
  • Una funzione di attivazione pari all’identità.
  • Una funzione di output di tipo sigmoidale, ad esempio s(x)=1/(1+e-x) la quale, come visto nelle lezioni precedenti, assume i seguenti valori s(0)=1/2, limx→+∞ s(x)=1 e limx→-∞ s(x)=1 con una forma somigliante ad una “s”.

Reti a strati con funzione di output di tipo sigmoidale (segue)

Perchè scegliamo la funzione sigmoidale s(x) come funzione di output dei nodi della rete?

Vediamo una possibile giustificazione della scelta della funzione s(x).

Si può dimostrare:

Se ipotizziamo che la distribuzione di probabilità di x condizionata alla classe, p(x/ Ck), sia una gaussiana l’uso di una funzione di output sigmoidale permette di interpretare l’output del rete feed-forward come una probabilità a-posteriori.

Mostriamo tale dimostrazione, supponendo, per semplicità, di avere d=1.

Reti a strati con funzione di output di tipo sigmoidale (segue)

Possiamo scrivere:

  • p(x/Ck)=(1/(2π)1/2σ) exp(-(x-μk)2/2σ2) (1)
  • P(C1/x)=p(x/ C1)P(C1)/p(x)=
  • P(C1/x)=p(x/ C1)P(C1)/[p(x/C1)P(C1)+ p(x/C2)P(C2)]= 1/(1+exp(-a)) (2)

Dove a=ln [p(x/C1)P(C1)/ p(x/C2)P(C2)]

Se sostituiamo (1) in (2) otteniamo:
a=wx+w0
dove w=(μ12)/σ2 e w0=-(1/2)μ12 +(1/2)μ222 +ln[P(C1)/ P(C2)]

Avere come funzione di output la funzione sigmoidale s(x)=1/(1+e-x) permette di interpretare l’output della rete come probabilità condizionata P(C/x).

Reti a strati con funzione di output di tipo sigmoidale (segue)

In pratica molto spesso invece di s(x) è utilizzata la funzione tanh, cioè

tanh(x)= (ex -e-x)/( ex +e-x)

in quanto reti neurali con tale funzione spesso “apprendono più velocemente”.

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

2s(2x)-1=tangh(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.

Reti a strati con funzione di output di tipo sigmoidale (segue)

Osservazione 2

Un nodo con funzione di attivazione pari a s(x) (o tangh) può approssimare un nodo con funzione di attivazione lineare con una accuratezza arbitraria e

Un nodo con funzione di attivazione pari a s(x) (0 tangh) può approssimare un nodo con funzione di attivazione a gradino con una accuratezza arbitraria, semplicemente scalando i pesi e i bias.

Reti a strati con funzione di output di tipo sigmoidale (segue)

Consideriamo, ora, reti neurali con due strati, nodi interni con funzione di output sigmoidale e con funzione di output dei nodi di output lineare.

Osserviamo che, in generale, data una rete a due strati, l’output dei nodi interni è dato da

zk=f1(∑jw(1)kj*xj)

l’output dei nodi di output e’

oh=f2(∑kw(2)hk*zk)= f2(∑kw(2)hk* f1(∑jw(1)kj*xj))

Reti con due strati e nodi interni con funzione di output sigmoidale

Se consideriamo f2 lineare possiamo scrivere:

oh= ∑kw(2)hk* kΦ(x) [3]

con Φk(x)= f2(f1(∑jw(1)kj*xj))

quindi oh e’ dato da una combinazione lineare di funzioni non lineari Φk(x).

Per una opportuna scelta delle funzioni Φk(x), talvolta chiamate funzioni di base, la funzione [3] può approssimare qualunque funzione continua con precisione arbitraria.

Reti con due strati e nodi interni con funzione di output sigmoidale (segue)

E’ possibile dimostrare che se scegliamo f1=s(x) (funzione sigmoide) e f2 lineare una rete neurale a due strati può approssimare ogni funzione continua da uno spazio finito dimensionale ad un altro con precisione arbitraria, con la condizione di avere un numero sufficiente di nodi interni (Funahashi, 1989; Hornik, 1989).

Reti con due strati e nodi interni con funzione di output sigmoidale (segue)

Più formalmente …

Se definiamo come misura di vicinanza tra due funzioni f:K _ R e g: K_ R, la seguente:

dK(f, g) = sup xεK |f(x) – g(x)|,

con f e g continue e definite sul sottoinsieme compatto K di Rd.

Allora, data la funzione g(x)=f2(∑kw(2)hk* f1(∑jw(1)kj*xj)) definita da una rete neurale con m nodi interni, un nodo di output, f2 funzione lineare e f1 continua, limitata e non costante
abbiamo il seguente teorema (Hornik,1991):

Per ogni funzione continua f(x) definita su K e per ogni ε > 0, esiste un mε tale che
dK(g, f) < ε per ogni m>mε (cioè, se la rete ha un numero sufficiente di nodi interni).

Reti con due strati e nodi interni con funzione di output sigmoidale (segue)

Importante corollario del precedente teorema è che,

nel contesto dei problemi di classificazione, tali reti possono approssimare qualunque regione di decisione con accuratezza arbitraria.

Reti con due strati e nodi interni con funzione di output sigmoidale (segue)

Diamo una “dimostrazione qualitativa” del teorema precedentemente enunciato.

Consideriamo il caso di due variabili di input x1 e x2 e una singola variabile di output y (l’estensione ad un più largo numero di input o output è abbastanza immediato), cioè abbiamo una funzione continua y= y(x1,x2).

Per ogni fissato valore di x1 possiamo approssimare y(x1,x2) da una serie di Fourier:

y(x1,x2)≅ ∑sAs (x1)cos(sx2)

gli stessi coefficienti As (x1) possono essere espresso da una serie di Fourier:

y(x1,x2)≅ ∑sl Asl cos(lx1)cos(sx2)

Reti con due strati e nodi interni con funzione di output sigmoidale (segue)

Diamo una “dimostrazione qualitativa” del teorema precedentemente enunciato (2).

Sapendo che cosαcosβ=1/2[cos(α+β)+cos(α-β)]

possiamo allora scrivere y(x1,x2) come una combinazione lineare di termini della forma
cos(zsl) e cos(z’sl).

Osservando, ancora, che la funzione cos(x) può essere approssimata con accuratezza arbitraria da una combinazione lineare di funzioni a gradino, allora y(x1,x2) può essere approssimata da una rete neurale con due strati avente unità interne con funzione di attivazione pari a quella di Heaviside e unità di output lineare.

Reti con due strati e nodi interni con funzione di output sigmoidale (segue)

Diamo una “dimostrazione qualitativa” del teorema precedentemente enunciato (3).

Infine sapendo che

“Un nodo con funzione di attivazione pari a s(x) può approssimare un nodo con funzione di attivazione a gradino con una accuratezza arbitraria semplicemente scalando i pesi e i biases”,

il teorema resta dimostrato.

Reti con due strati e nodi interni con funzione di output sigmoidale (segue)

Alcune osservazioni finali:

  • Reti del tipo descritte nella slide precedenti può approssimare simultaneamente sia la funzione sia le sue derivate (Hornik, 1990).
  • Se proviamo ad approssimare una funzione h(x) con una rete che ha un numero M finito di nodi interni, poi ci sarà sempre un errore residuo, tale errore decresce come O(1/M) (Jones,1992; Barron,1993).
  • L’utilizzo di reti con più strati potrebbe portare ad una approssimazione più efficiente, nel senso di raggiungere la stessa approssimazione con un numero più piccolo di pesi.
  • 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