Apprendimento Automatico:
Reti Neurali
Roberto Navigli
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Cap. 4 [Mitchell]
Cap. 20.5 [Russell & Norvig]
Storia
• Le reti neurali artificiali (Artificial Neural Networks o ANN)
sono una simulazione astratta del nostro sistema nervoso,
che contiene una collezione di neuroni i quali comunicano
fra loro mediante connessioni dette assoni
• Il primo modello di neurone artificiale fu proposto nel 1943
da McCulloch e Pitts nei termini di un modello
computazionale dell’attività nervosa (Threshold Logic Unit)
– A questo modello sono seguiti altri proposti da John Von
Neumann, Marvin Minsky, Frank Rosenblatt (Percettrone) e molti
altri
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Modello biologico ≠ Modello artificiale
• Biologico: ha l’obiettivo di imitare sistemi neurali biologici,
come le funzionalità auditive e visive
• Obiettivo: verifica di ipotesi riguardo ai sistemi biologici
• Guidato dalle applicazioni: meno interessato a “mimare”
funzioni biologiche
• Le architetture sono ampiamente condizionate dalle necessità
applicative
• Questi modelli sono anche denominati architetture
connessioniste
• Modello trattato nel corso!
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Neuroni
• I neuroni inviano segnali ad altri neuroni mediante un
prolungamento detto assone
• I neuroni tipicamente possiedono strutture arboree chiamate
dendriti che ricevono segnali inviati dagli assoni di altri neuroni
mediante giunzioni dette sinapsi
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Funzionamento di un Neurone
• Si stima che il cervello umano contenga oltre 10 miliardi di neuroni e che
un neurone è collegato in media a 10000 altri neuroni
• Tempo di commutazione di alcuni millisecondi (assai più lento di una
porta logica), ma connettività centinaia di volte superiore
• Un neurone trasmette informazioni agli altri neuroni tramite il proprio
assone
• L’assone trasmette impulsi elettrici, che dipendono dal suo potenziale
• L’informazione trasmessa può essere eccitatoria oppure inibitoria
• Un neurone riceve in ingresso segnali di varia natura, che vengono
sommati
• Se l’influenza eccitatoria è predominante, il neurone si attiva e genera
messaggi informativi verso le sinapsi di uscita
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Struttura di una Rete Neurale
• Una rete neurale è costituta da:
– un insieme di nodi (i neuroni) o unità connesse da collegamenti
– Un insieme di pesi associati ai collegamenti
– Un insieme di soglie o livelli di attivazione
• La progettazione di una rete neurale richiede:
– La scelta del numero e del tipo di unità
– La determinazione della struttura morfologica
– Codifica degli esempi di addestramento, in termini di ingressi e
uscite dalla rete
– L’inizializzazione e l’addestramento dei pesi sulle interconnessioni,
attraverso il training set
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Il Percettrone
• Il percettrone è il mattone base delle reti neurali
• Nasce da un'idea di Rosenblatt (1962)
• Cerca di simulare il funzionamento del singolo neurone
x0=1
x1
x2
w1
w0
w2
...
∑
wm
m
w x
i 0
xm
Apprendimento Automatico: Reti Neurali
Roberto Navigli
j
j
soglia
m

 1 if  w j x j  0
o
i 0

otherwise
 1
Il Percettrone
• I valori di uscita sono booleani: 0 oppure 1
• Gli ingressi xj e i pesi wj sono valori reali positivi o
negativi
• Tre elementi: ingressi, somma, soglia
• L'apprendimento consiste nel selezionare pesi e soglia
x0=1
x1
x2
w1
w0
w2
...
∑
wm
m
w x
i 0
xm
Apprendimento Automatico: Reti Neurali
Roberto Navigli
j
j
soglia
m

 1 if  w j x j  0
o
i 0

otherwise
 1
Funzioni somma e soglia (1)
• La funzione d’ingresso (lineare, somma delle componenti di input di
x = (x1, …, xn))
m
w0  w1 x1  ...  wm xm   w j x j  w  x
i 0
x0=1
x1
x2
w1
w0
w2
...
∑
wm
m
w x
i 0
xm
Apprendimento Automatico: Reti Neurali
Roberto Navigli
j
j
soglia
m

 1 if  w j x j  0
o
i 0

otherwise
 1
Funzioni somma e soglia (2)
• La funzione di attivazione (non lineare, soglia)
 m

o( x1 ,..., xm )  g   w j x j 
 i 0

– Vogliamo l’unità percettrone attiva (vicino a +1) quando gli input corretti
sono forniti e inattiva altrimenti
– E’ preferibile che g sia non lineare, altrimenti la rete neurale collassa a
una funzione lineare dell’input
x0=1
x1
x2
w1
w0
w2
...
∑
wm
m
w x
i 0
xm
Apprendimento Automatico: Reti Neurali
Roberto Navigli
j
j
soglia
m

 1 if  w j x j  0
o
i 0

otherwise
 1
Funzioni di attivazione
• Funzione gradino
xt
1
gradinot ( x )  
0 altrimenti
1
0
• Funzione segno (utilizzata nel percettrone)
1
x0
 1
sign ( x )  
 1 altrimenti
• Funzione sigmoide
1
sigmoide ( x ) 
1  e x
Apprendimento Automatico: Reti Neurali
Roberto Navigli
-1
1/2
Funzione obiettivo
• Ad esempio, se la funzione soglia è la funzione segno e
x1, ..., xm sono i valori degli attributi delle istanze x di X, la
funzione obiettivo da apprendere è:
 1 se w 0 x 0  w1x1  ...  w m x m  0
o( x )  
altrimenti
 1
• Esprimibile anche in forma vettoriale mediante la:
o(x )  sign(w  x)
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Il Percettrone
• Problema di apprendimento:
– dati insiemi di punti su uno spazio n-dimensionale,
classificarli in due gruppi (positivi e negativi)
– inoltre dato un nuovo punto x’ decidere a quale gruppo
appartiene
• Il primo problema è di classificazione, mentre per risolvere il
secondo è richiesta capacità di generalizzazione, come negli
alberi di decisione
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Problema di classificazione
• Il problema è quindi ridotto alla determinazione
dell'insieme dei pesi (w0, w1, …, wm) migliore per
minimizzare gli errori di classificazione
• Quindi lo spazio delle ipotesi H è infinito ed è dato da tutte
le possibili assegnazioni di valori agli n+1 pesi (w0, w1, …,
wm):
m1
H  {w : w  
}
• Si tratta di ottimizzare la funzione:
o( x)  sign ( w  x)
in modo da minimizzarne l’errore
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Esempio per due attributi
• Con (x1, x2) in ingresso, si ha:
o( x )  sign ( w0  w1 x1  w2 x2 )
x2
• La retta di separazione è data da:
w0  w1 x1  w2 x2  0
w1
w0
x2  
x1 
w2
w2
• Nel caso con n attributi, quel che si apprende è un
iperpiano di separazione dato da:
w x  0
Apprendimento Automatico: Reti Neurali
Roberto Navigli
x1
Funzioni rappresentabili
con il percettrone
• I percettroni possono rappresentare tutte le funzioni
booleane primitive AND, OR, NAND e NOR
AND( x1 , x2 )  sign(0.8  0.5x1  0.5x2 )
– OR( x1 , x2 )  sign (0.3  0.5x1  0.5x2 )
–
– ecc. (provate a scrivere le altre per esercizio)
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Funzioni rappresentabili
con il percettrone
• I percettroni possono rappresentare tutte le funzioni
booleane primitive AND, OR, NAND e NOR
• Alcune funzioni booleane non possono essere
rappresentate
– es. la funzione XOR (vale 1 se e solo se x1 ≠ x2):
x2
+
+
-
+
-
-
Apprendimento Automatico: Reti Neurali
Roberto Navigli
-
-
+
+
+
x1
Implementare funzioni booleane più complesse con il
percettrone
x0=1
x1
x2
-0.3
0.5
0.5

x1 or x2
x0=1
0.5
x3
Apprendimento Automatico: Reti Neurali
Roberto Navigli
0.5
-0.8

(x1 or x2) and x3
Algoritmo di Addestramento del Percettrone
• Inizializza i pesi casualmente
• Finché non si è raggiunta la condizione di terminazione:
– Per ogni esempio (x, y)  D, dove y è il l’output effettivo:
– Calcola la funzione o(x)
– Se o(x)  y allora per ogni attributo j aggiornane il peso:
w j  w j  w j
w j   ( y  o( x)) x j
•  si chiama learning rate (tasso di apprendimento)
• xj è il valore dell’attributo j-esimo di x
• la quantità y-o rappresenta l’errore E del percettrone
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Esempio
• Supponiamo o(x)=-1 (se la funzione soglia è sign(x)) e y=1
• Bisogna modificare i pesi per accrescere il valore di w  x
• Se per esempio:
x j  0,8,  0,1, y  1, o  1
w j   ( y  o) x j  0,1(1  (1))0,8  0,16
• Quindi il valore del wj tenderà a crescere, riducendo l’errore
• Se invece y=-1 e o(x)=1
w j   ( y  o) x j  0,1(1  (1))0,8  0,16
• Nota: vogliamo aggiornamenti dei pesi graduali, altrimenti rischiamo di
“disfare” il lavoro fatto sugli altri esempi di addestramento
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Convergenza del Percettrone
• Il teorema di convergenza del percettrone (Rosenblatt,
1962) assicura che il percettrone riuscirà a delimitare le 2
classi se il sistema è linearmente separabile
• In altre parole, nell'ottimizzazione non esistono minimi
locali
• Problema: come ci si comporta in caso di situazioni non
linearmente separabili?
• Soluzioni:
– Utilizzare la discesa del gradiente (delta rule) invece della regola
di addestramento del percettrone
– reti multistrato alimentate in avanti
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Soluzione 1: Discesa del Gradiente
• Una regola di addestramento differente del percettrone
• Assumiamo per semplicità che il percettrone non sia
sogliato (ossia: o(x) = w·x)
• Utilizziamo una misura dell’errore di addestramento per
un vettore di pesi w:

 2
1
E ( w) 
( y  o( x ))

2 ( x , y )D
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Discesa del gradiente
• Idea: utilizzare la discesa del gradiente per cercare nello
spazio dei vettori peso quello che minimizza l’errore su D
• Calcoliamo le derivate parziali della funzione d’errore
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Regola di addrestramento: discesa del gradiente
• Modifichiamo la regola di addestramento:
• Finché non si raggiunge la condizione di terminazione,
– Inizializza w  0
j
– Per ogni attributo j
E ( w)
w j  
w j
– Per ogni attributo j:
w j  w j  w j
– Nota: calcoliamo il delta su tutti gli esempi e POI aggiorniamo i pesi
– Nota 2: l’output non è sogliato
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Come calcolare la derivata

 2 1
 2
E ( w)
 1


( y  o( x )) 
( y  o( x ))


w j
w j 2 ( x , y )D
2 ( x , y )D w j

  ( y  o( x ))
1

2( y  o( x ))

2 ( x , y )D
w j
 
 ( y  w  x )
  ( y  o( x ))

w j
( x , y )D

  ( y  o( x ))(  x j )

( x , y )D
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Alternativa: Discesa del Gradiente Stocastica
o Incrementale
• La Discesa del Gradiente Standard può essere molto
lenta nel convergere a un minimo locale
• Se ci sono multipli minimi locali, non c’è garanzia di
convergere al minimo globale
• Alternativa: aggiornare i pesi esempio per esempio e
non sull’intero D
– Approssimazione ragionevole alla discesa del gradiente
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Discesa del Gradiente Stocastica o Incrementale
Delta rule
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Ricapitoliamo
• La regola di aggiornamento del percettrone è la stessa
della Delta Rule!
• Però: la delta rule utilizza o(x)=w·x mentre la regola del
percettrone o(x)=sign(w·x)
• Tuttavia, la Delta Rule può essere utilizzata anche per
percettroni sogliati:
– Se la Delta Rule modella perfettamente, allora avremo o(x)=1 o
-1 per cui anche o’(x)=sign(1)=1 oppure o’(x)=sign(-1)=-1
• Diverse proprietà di convergenza:
– Regola del percettrone converge dopo un numero finito di
iterazioni (se dati linearmente separabili)
– Delta rule converge asintoticamente verso l’ipotesi di minor
errore indipendentemente dalla separabilità lineare
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Soluzione 2:
Reti Stratificate Alimentate in Avanti
• Feedforward Neural Networks
– Ogni unità è collegata solo a quella dello strato successivo
– L’elaborazione procede uniformemente dalle unità di ingresso a quelle di
uscita
– Non c’è feedback (grafo aciclico diretto o DAG)
– Non hanno stato interno
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Vogliamo apprendere superfici di decisione non
lineari!
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Soluzione 3: Reti Ricorrenti
•
Sono più simili al funzionamento del cervello umano, in quanto simulano le
connessioni all’indietro
–
•
•
•
•
•
•
•
•
•
Nel cervello esistono evidenti connessioni all’indietro
I collegamenti possono formare configurazioni arbitrarie
L’attivazione viene “ripassata” indietro alle unità che l’hanno provocata
Hanno uno stato interno: i livelli di attivazione
Computazione meno ordinata
Instabili
Più tempo per calcolare lo stato stabile
Difficoltà nell’apprendimento
Implementano classificatori più complessi
Esempi:
–
–
Reti di Boltzmann
Reti di Hopfield
output
input
Apprendimento Automatico: Reti Neurali
Roberto Navigli
hidden
Reti Alimentate in Avanti:
Algoritmo di Backpropagation
• Apprendimento con algoritmo di backpropagation
(propagazione all’indietro)
• Obiettivi:
–
–
–
–
partire da un insieme di percettroni con pesi casuali
apprendere in modo veloce
avere capacità di generalizzazione
lavorare con insiemi di percettroni su larga scala
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Backpropagation (2)
•
La funzione soglia di ciascuna unità è la sigmoide:
o( x )   ( w  x ) 
1
1  ewx
•
L’errore è calcolato come segue:
•
Obiettivo dell’algoritmo: minimizzare l’errore fra ciascuna uscita desiderata yk
e l’uscita calcolata dalla rete neurale ok
1
2
E ( w) 
( yk  ok )


2 ( x, y )D koutputs
unità d’ingresso ii
unità nascosta hj
unità di uscita ok
Apprendimento Automatico: Reti Neurali
Roberto Navigli
L’algoritmo Backpropagation
function BackProp(D, , nin, nhidden, nout)
– D è l’insieme di addestramento costituito da coppie ( x, y )
–  è il tasso di apprendimento (learning rate), es. 0.1
– nin, nhidden e nout sono il numero di unità d’ingresso, nascoste e d’uscita
•
•
•
–
Crea una rete feed-forward con nin, nhidden e nout unità
Inizializza tutti i pesi con numeri casuali piccoli (es. tra -0.05 e 0.05)
Finché non si incontra la condizione di terminazione:
Per ogni esempio ( x, y ) in D:
• Propaga l’input in avanti sulla rete calcolando l’output ou di ogni unità u della rete
• Propaga gli errori all’indietro nella rete:
– Per ogni unità di output k, calcola il suo termine d’errore k:
 k  ok (1  ok )( yk  ok )
– Per ogni unità nascosta h, calcola il suo termine d’errore h:
 h  oh (1  oh )
– Aggiorna i pesi wij:
koutputs
wij  wij  wij ,
• xij è l’input dell’unità j proveniente dall’unità i
Apprendimento Automatico: Reti Neurali
Roberto Navigli
w
hk
k
dove wij   j xij
Esempio
• Crea una rete feed-forward con nin, nhidden e nout unità
• Inizializza tutti i pesi con numeri casuali piccoli (es. tra -0.05 e 0.05)
• wx0,h1 = 0.34, wx1,h1 = 0.12, wx2,h1 = -0.92
• wx0,h2 = -0.11, wx1,h2 = 0.57, wx2,h2 = -0.32
• wh0,o1 = -0.99 , wh1,o1 = 0.16, wh2,o1 = 0.75
x1
h1
x2
h2
Apprendimento Automatico: Reti Neurali
Roberto Navigli
o1
Esempio
•
Finché non si incontra la condizione di terminazione:
((0, 0), (0))
– Per ogni esempio ( x, y ) in D:
• Propaga l’input in avanti sulla rete calcolando l’output ou di ogni unità u della rete
• oh1 = (0.34*1+ 0.12*0 + -0.92*0) = (0.34)=1/(1+e-0.34)= 0.58
• oh2 = (-0.11*1+0.57*0+-0.32*0)=(-0.11)=1/(1+e-(-0.11))=0.47
• oo1 = (-0.99*1+0.16*0.58+0.75*0.47)=(-0.54)=1/(1+e-0.54)=0.36
x1
h1
x2
h2
Apprendimento Automatico: Reti Neurali
Roberto Navigli
o1
Esempio
• Propaga gli errori all’indietro nella rete:
– Per ogni unità di output k, calcola il suo termine d’errore k:
 k  ok (1  ok )( yk  ok )
– Per ogni unità nascosta h, calcola il suo termine d’errore h:
 h  oh (1  oh )
– Aggiorna i pesi wji:
wij  wij  wij ,
w
koutputs
hk
k
dove wij   j xij
• o1 = oo1(1-oo1)(yo1-oo1)= 0.36*(1-0.36)(0-0.36)=-0.08
• h1 = oh1*(1-oh1)*wh1o1o1 = 0.58*(1-0.58)*(0.16)*(-0.08) = -0.003
• h2 = oh2*(1-oh2)*wh2o1o1=0.47(1-0.47)*(0.75)*(-0.08)=-0.014
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Esempio
• Propaga gli errori all’indietro nella rete:
– Per ogni unità di output k, calcola il suo termine d’errore k:
 k  ok (1  ok )( yk  ok )
– Per ogni unità nascosta h, calcola il suo termine d’errore h:
 h  oh (1  oh )
– Aggiorna i pesi wji:
wij  wij  wij ,
–
–
–
–
–
–
–
w
koutputs
hk
k
dove wij   j xij
wx0h1 = 0.34+h1xx0h1=0.34+0.5*(-0.003)*1=0.34-0.0015,
wx1h1 = 0.12+0, wx2h1 = -0.92+0
wx0h2 = -0.11+h2xx0h2=0.34+0.5*(-0.014)*1=0.34-0.007,
wx1h2 = 0.57+0, wx2h2 = -0.32+0
wh0o1 = -0.99+o1xh0o1=-0.99+0.5*(-0.08)*1=-0.99-0.04
wh1o1 = 0.16+o1xh1o1=0.16+0.5*(-0.08)*0.58=0.16-0.02
wh2o1 = 0.75+o1xh2o1=0.75+0.5*(-0.08)*0.47=0.75-0.02
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Esempio
•
•
•
•
•
•
•
Si aggiornano tutti pesi
Si considera il secondo esempio di D
Si ricalcolano input e output di tutti i nodi
Si ricalcolano gli errori sui nodi
Si riaggiornano i pesi
Finché non si esaurisce D (epoca)
Si ripete per n epoche, fino a che l’errore non si stabilizza
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Esempio
• Dopo qualche migliaio di iterazioni su tutti e quattro gli esempio di D =
{ ((0,0), (0)), ((0,1), (1)), ((1,0), (1)), ((1,1),(0))}
• Otteniamo i seguenti risultati per gli input:
–
–
–
–
x = (0, 0), oo1 = 0.017622
x = (0, 1), oo1 = 0.981504
x = (1, 0), oo1 = 0.981491
x = (1, 1), oo1 = 0.022782
Quale funzione calcola la rete dell’esempio?
http://delfin.unideb.hu/~bl0021/xordemo/xordemo.html
http://www.generation5.org/content/2001/xornet.asp
Apprendimento Automatico: Reti Neurali
Roberto Navigli
a c’è alla base della regola di propagazione dell’errore
dietro?
Consideriamo la funzione di errore per
d=(x,y)D:
Ed 
1
( yk  ok ) 2

2 k
Supponiamo di dover imparare solo
due pesi.
Il piano w1 w2 rappresenta lo spazio
delle ipotesi (pesi delle connessioni) , il
cono è la superficie d'errore.
Per minimizzare l'errore si deve
calcolare la direzione della discesa più
ripida lungo la superficie.
Quindi, la derivata.
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Calcolo della regola di aggiornamento dell’unità di
output
Ed
Ed net j
Ed
wij  
 
 
x ij dove net j   wij xij
wij
net j wij
net j
i
Ed
Ed o j

net j o j net j
1
2

(
y

o
)
 k k
2 koutputs
Ed
 ( yk  ok )
1

2
( yk  ok )
 ( y j  o j )

o j
o j
2 koutputs
o j
o j
 net
 net
e j
1
e j


(1 
)  o j (1  o j )
 net j 2
 net j
 net j
net j
(1  e
)
1 e
1 e
Ed net j
wij  
  (( y j  o j ))o j (1  o j ) xij   j xij
net j wij
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Condizioni di terminazione
• Il processo continua finché non sono esauriti tutti gli
esempi (epoca), poi si riparte
• Quando arrestare il processo? Minimizzare gli errori sul
set D non è un buon criterio (overfitting)
• Si preferisce minimizzare gli errori su un test set T,
ovvero suddividere D in D’T, addestrare su D’ e usare
T per determinare la condizione di terminazione
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Disegno dell’errore su un test set T
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Ma l’algoritmo converge?
• Problemi dell’algoritmo del gradiente:
– Può arrestarsi su minimi locali
– Un minimo locale può dare soluzioni molto peggiori del minimo
globale
– Possono esserci molti minimi locali
• Soluzioni possibili: addestra la rete con pesi iniziali diversi,
addestra diverse architetture di rete
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Modifica della regola di aggiornamento
• Quando si esegue l’n-esima iterazione la regola di aggiornamento
diventa:
wij
( n)
  j xij  wij
( n 1)
e  [0,1)
• Il secondo termine prende il nome di momento
• Vantaggi:
– È possibile superare minimi locali
– Mantiene “in movimento” dove il gradiente non cambia (zona piatta)
– Incrementa la velocità di convergenza
• Svantaggi:
– E’ un parametro in più da regolare!
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Alcune considerazioni pratiche
• La scelta dei pesi iniziali ha un grande impatto sul
problema della convergenza! Se la dimensione dei vettori
di input è N ed N è grande, una buona euristica è
scegliere i pesi iniziali fra -1/N e 1/N
• L’algoritmo BP è molto sensibile al fattore di
apprendimento . Se è troppo grande, la rete diverge.
• A volte, è preferibile usare diversi valori di  per i diversi
strati della rete
• La scelta della modalità di codifica degli ingressi e della
architettura della rete può influenzare in modo drastico le
prestazioni!!
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Architettura della rete
• Con più unità nascoste è possibile ottenere uno spazio
delle ipotesi più ampio ed espressivo
– D’altra parte: rischio overfitting (si rischia di creare una sorta di
lookup table o rote classifier)
• Con uno strato nascosto sufficientemente ampio è
possibile rappresentare qualsiasi funzione continua
degli input con accuratezza arbitraria
• Tuttavia, la scelta ottima a priori del giusto numero di
unità nascoste non è ancora chiara
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Applicazione: Modello di Memoria Semantica
[McClelland and Rogers, 2003]
• Obiettivo - apprendere un’ontologia:
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Applicazione: Modello di Memoria Semantica
[McClelland and Rogers, 2003]
• Strategia - Rete Neurale:
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Applicazione: Modello di Memoria Semantica
[McClelland and Rogers, 2003]
• Risultati in termini di distanza euclidea:
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Applicazione: ALVINN guida a 70 mph!
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Applicazione: riconoscimento di fisionomie
• Compito: Classificare immagini di visi di persone in varie
pose
• Dataset: immagini di 20 persone in 32 pose variabili per:
espressione, direzione dello sguardo, occhiali da sole,
sfondo
– http://www.cs.cmu.edu/afs/cs.cmu.edu/user/mitchell/ftp/faces.html
• Funzioni obiettivo: riconoscere se porta gli occhiali,
quale persona è, in che direzione guarda, ecc.
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Scelte di Progetto
•
Accuratezza della codifica di ingresso:
–
–
•
Scelta chiave: quali e quante feature in ingresso codificare
Si potrebbe preanalizzare l’immagine estraendo informazioni quali contorni, regioni di intensità
luminosa uniforme, ecc.
Problema: il numero di feature sarebbe variabile (es. numero di contorni), ma una rete
neurale ha un numero fisso di ingressi!
–
Allora si “semplifica” l’immagine codificandola come un insieme di valori di intensità di 30x32 pixel
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Reti Neurali “in a nutshell”
• Vantaggi:
– Le istanze sono rappresentate mediante molte feature a molti
valori, anche reali e la funzione obiettivo può essere a valori reali
– Possono rappresentare: tutte le funzioni booleane (esattamente),
funzioni continue (approssimate), funzioni arbitrarie (approssimate,
con 2 strati nascosti)
– Gli esempi possono essere rumorosi
– La rete è veloce in fase di classificazione
– Non è cruciale capire la semantica della funzione attesa
• Svantaggi:
– Come tutti i modelli statistici, anche le reti neurali sono soggette a
sovradattamento
– Le reti neurali sono "scatole nere“: non hanno semantica!
– I tempi di addestramento possono essere lunghi
Apprendimento Automatico: Reti Neurali
Roberto Navigli
Scarica

Apprendimento Automatico: Reti Neurali