Introduzione alla Programmazione Logica e al linguaggio PROLOG

annuncio pubblicitario
Algoritmi di Classificazione
Non Lineari
Esercitazioni per il corso di
Logica ed Intelligenza Artificiale
a.a. 2013-14
Vito Claudio Ostuni
Regressione Logistica
Superficie di separazione lineare
Modelli Lineari Generalizzati (GLMs)
(x1,x2 )
ϕi (x) =xi2
(x12,x22 )
x22
x2
x1
x12
Per classificare correttamente questi campioni dovremmo
esplicitamente introdurre delle trasformazioni non lineari delle
features originarie
Se estendiamo il caso ad un problema con molte features il
sistema diventa troppo complesso e quest’approccio diventa
improponibile.
Reti Neurali Artificiali (ANN)
Reti Neurali Artificiali (ANN)
Ispirazione biologica
Modello del Neurone
Il Problema dello XOR
Questi dati non sono linearmente separabili.
Non possiamo utilizzare il solo perceptron in
quanto è in grado di discriminare solamente dati
linearmente separabili (es. AND, OR, NOT).
Il Problema dello XOR
OR
AND
Multi Layer Perceptron (MLP)
Si possono combinare gli output dei vari neuroni al fine di creare
una rete di neuroni (rete multistrato)
Questa rete è capace di emulare correttamente la funzione XOR.
0.5
1
x1
1
1
1.5
-2
1
1
x2
1
0.5
1
1
0.5
y
Multi Layer Perceptron
Rete di tipo Feed Forward.
Multi Layer Perceptron
Modello di un neurone con funzione di attivazione logistica
Una rete multistrato composta
da neuroni con funzioni d’attivazione
non lineari (derivabili)
è un’approssimatore universale.
Multi Layer Perceptron
Una rete composta da tre strati (un solo
strato nascosto) è in grado di
approssimare qualsiasi funzione
continua.
È in grado di separare regioni convesse,
serve un numero di neuroni nello strato
nascosto almeno pari al numero di lati
della regione.
Una rete con due strati nascosti è in
grado di approssimare qualsiasi funzione
non continua.
È in grado di separare regioni qualsiasi.
Algoritmo Back Propagation
È un possibile algoritmo di addestramento per una rete MLP
• Ingressi a valori reali ∈ [0,1]
• Neuroni non lineari con funzione di uscita differenziabile
Vogliamo trovare le matrici dei pesi Wji e Wkj ed i bias tali da
minimizzare l’errore sul Training Set
E
Utilizzo della discesa del gradiente
W W  
W
(k)
(k)
Training Set = <a , y > k=1..m
Funzione costo: errore quadratico medio E 
1
m
(k )
(k ) 2
(
a

y
)

i
k 1 
2
i
Vantaggi:
•Permette di addestrare reti con un numero qualsiasi di strati nascosti
Svantaggi:
•Funzione costo con minimi locali
•Discesa del gradiente lenta
Algoritmo Back Propagation
Output Layer
si può calcolare l’errore in quanto l’uscita ai è nota e
possiamo quindi applicare la regola di modifica dei pesi
W ji  W ji    a j   i
i  Ei  g '(ini )  (ai  y )  g '(ini )
ai uscita neurone i-mo
y uscita desiderata (training set)
α learning rate
Hidden Layer
In questo caso non si conosce l’errore commesso da un neurone
interno in quanto è nota solamente l’uscita desiderata sui neuroni
d’uscita e non su quelli interni. Quindi si effettua la retro
propagazione degli errori dallo strato di output a quello nascosto.
Si dimostra che la regola di modifica dei pesi da applicare è:
Wkj  Wkj    ak   j
 j  g '(in j )   W ji   i
i
Algoritmo Back Propagation
L’errore si retro propaga su ciascun nodo proporzionalmente alla
forza di connessione tra il nodo nascosto e il nodo di output. L’idea è
che il nodo nascosto j sia responsabile per una certa parte dell’errore
Δi in ognuno dei nodi di output a cui è collegato
Backward
forward
Algoritmo Back Propagation
Inizializza i pesi casualmente a valori bassi
Repeat:
•Calcola l’uscita della rete con i pesi aggiornati
•Aggiorna i pesi sullo strato di output
W ji  W ji    a j  i dove i  ( yi  ai ) g '(ini )
•Aggiorna i pesi sugli strati nascosti
Wkj  Wkj    ak   j
dove  j =  iW ji g '(in j )ak
i
Termina se si è raggiunto un numero max di epoche o un
altro criterio di convergenza
Problematiche pratiche
del Back Propagation
Inizializzazione dei pesi
Si deve evitare la saturazione (dove la derivata è nulla)
Applicare agli ingressi la normalizzazione a media nulla e varianza
unitaria (z-score).
Inizializzare i pesi a valori casuali tali da mantenere la somma pesata
nella zona con pendenza non nulla. Ci sono varie tecniche, ad es.
Nguyen-Widrow Randomization.
Problematiche pratiche
del Back Propagation
Oscillazioni e Minimi Locali
La funzione costo anche se di forma quadratica presenta minimi locali
per via delle non-linearità introdotte dalle funzioni di attivazione dei
neuroni.
Un metodo per mitigare il problema consiste nell’introduzione di un
termine μ detto momentum. Questo termine tiene traccia
dell’aggiornamento precedente e serve a limitare le oscillazioni (forma
di regolarizzazione).
Wkj  Wkj    ak   j    (  ak   j )
iteraz _ precedente
Generalizzazione
Early Stopping
Ad un certo punto durante l’addestramento si va in overfitting e la rete comincia
ad imparare “a memoria” i dati del training set.
Dopo un certo numero di epoche l’errore sul training continua a scendere,
tendendo asintoticamente a zero, mentre quello sul validation set comincia a
salire. Nel momento in cui si verifica l’incremento dell’errore nel validation si
arresta l’addestramento e vengono restituiti i pesi ed il bias corrispondenti al
minimo dell’errore di validazione.
Support Vector Machines (SVMs)
e
Metodi Kernel
Ipotesi: dati linearmente separabili
Classificatore binario
Ci sono diversi iperpiani capaci di separare correttamente I campioni.
Possiamo utilizzare algoritmi già visti per trovare uno di questi
iperpiani (Regressione Logistica, Perceptron).
Tra tutti questi iperpiani quale scegliamo?
Support Vector Machines (SVMs)
Tra tutti questi iperpiani quale scegliamo?
Scegliamo l’iperpiano separatore ottimo ovvero l’iperpiano
con Margine Massimo.
Il margine d+ (o d-) è la distanza tra l’iperpiano ed il campione
positivo (o negativo) più vicino ad esso(il punto con la distanza
minima rispetto all’iperpiano di separazione).
L’iperpiano con margine massimo è detto ottimo.
Ci interessano solo i campioni che stanno sui margini. Questi
punti sono detti vettori di supporto.
Ipotesi: dati linearmente separabili
Classificatore binario
h( x)  wt  x  b
yi  y ( xi )  sign(h( xi ))  sign( wt  xi  b)
y  1
Iperpianio
wt  x  b  0
Assumendo che i dati siano linearmente separabili abbiamo che:
wt  xi  b  0 per yi =1
wt  xi  b  0 per yi =-1
Per i punti più vicini all’iperpiano di
separazione possiamo impostare:
wt  x  b  1
wt  x  b=-1
possiamo combinare entrambe le
disuguaglianze in:
yi  ( wt  xi  b)  1  0
La distanza tra l’iperpiano wt  x  b  0 ed un punto generico
xi è ( wt  xi  b)  yi
w
2
w
Per i punti che soddisfano (wt  xi  b)  yi  1  0 ovvero i punti che
1
giacciono sui due iperpiani la distanza diventa
quindi
w
il margine è 2
w
Possiamo impostare il seguente problema di ottimizzazione.
Vogliamo trovare i parametri w e b tali da massimizzare il
margine 2
w
Massimizziamo il margine andando a minimizzare
t
Rispettando i vincoli:  yi (w  xi  b)  1  0,
1 2 1 t
w  ww
2
2
i=1...m
Abbiamo ottenuto un problema di ottimizzazione convesso(quadratico
con vincoli di disuguaglianza lineari)
Quindi possiamo trovare l’iperpiano ottimo andando a risolvere questo
problema vincolato di ottimizzazione quadratica.
1 2
min w
w ,b 2
soggetto a :  yi ( wt  xi  b)  1  0,
i=1...m
Questo problema di ottimizzazione è detto PRIMALE.
Il problema di ottimizzazione primale può esser trasformato in un
problema DUALE più semplice da risolvere. È possibile in quanto
la funzione costo e vincoli sono strettamente convessi. Si fa uso
dei moltiplicatori di Lagrange α e della funzione Lagrangiana L.
1
L(w, b,  ) 
w
2
2
m
   i ( yi ( wt  xi  b)  1)
i 1
Si minimizza rispetto a w e b (variabili primali)
e si massimizza rispetto ad α (variabili duali)
Abbiamo che
se
 yi (wt  xi  b)  1  0 i  0, altrimenti i  0
l’ ottimo si ottiene mimizzandoL(w, b, ) rispetto a w e b. Quindi
bisogna uguagliare a 0 il gradiente.
L(w, b,  )
 0  w* 
w
L(w, b,  )
0
b
m

i 1
*
i
yi xi
eq1
m
*

 i yi  0
eq2
i 1
all’ottimo (w*,b*) abbiamo
i* [ yi (w*t  xi  b* )  1]  0
per cui i vettori tali chè  i*  0 sono i vettori di supporto
Inserendo eq1 ed eq2 in L(w, b,  ) otteniamo il seguente
problema di ottimizzazione quadratica
m
1 m
max   i yi xi -  yi y j i j xi  x j
2 i , j 1
i 1
con vincoli:  i  0 e
m
 y
i 1
i
i
0
m
1 m
max   i yi xi -  yi y j i j xi  x j
2 i , j 1
i 1
con vincoli:  i  0 e
m
w    i* yi xi
*
i 1
m
 y
i 1
i
i
0
i* sono sono le soluzioni del problema di ottimizzazione duale
per trovare b* utilizziamo  i*  [ yi  (w*t xi  b* )  1]  0
Proprietà della soluzione:
• αi* =0 per tutti i punti che non giacciono sui margini
• αi* <> 0 per i vettori di support  soluzione sparsa
• w* è una combinazione lineare dei soli vettori di supporto
Quindi in definitiva l’iperpiano di separazione a margine
massimo trovato è: w*t x  b* 
 * y ( x t  x)+b*

ivettori _ sup
i
i
i
Estensione per dati non
linearmente separabili
Errore di miss classificazione
In situazioni simili alle precedenti (dati non linearmente
separabili) è possibile effettuare una separazione delle classi
attraverso un iperpiano solo accettando che, dopo aver
determinato l’iperpiano separatore, alcuni valori del training set
con pattern positivo si trovino nella classe dei target negativi e
viceversa. Si deve accettare che alcuni vincoli vengano violati.
• Si introduce una variabile slack ξi per ogni vincolo in modo da
ammettere una tolleranza agli errori
yi ( wt  xi  b)  1   i
• Si introduce nella funzione costo da minimizzare un termine C
che serve a penalizzare gli errori di miss-classificazione fatti
1
w
2
2
m
 C i
i 1
ξi sono delle variabili costo proporzionali a quanto il punto
anomalo si discosta dall’iperpiano.
ξi >1 indica un errore di missclassificazione
xi
i
w
C (parametro di regolarizzazione ) serve a controllare il trade-off
tra complessità dello spazio delle ipotesi ed il numero di errori
accettabili.
Un C grande dà una penalizzazione maggiore agli errori.
Quindi il problema di ottimizzazione diventa:
Minimizzare
m
1
2
w
 C i
2
i 1
Con vincoli:
yi ( wt  xi  b)  1   i
i  0
Il duale diventa:
m
1 m
max   i yi xi   yi y j i j xi  x j
2 i , j 1
i 1
con vincoli:
0  i  C ,
m
 y
i 1
i
i
0
Ora le variabili duali sono limitate da C
La soluzione proposta non basta. Non garantisce buone prestazioni
perchè un iperpiano può solo rappresentare dicotomie dello
spazio delle istanze.
Kernel Methods
Cover’s theorem on the separability of patterns
“A complex pattern-classification problem cast in a
high-dimensional space non-linearly is more likely
to be linearly separable than in a low-dimensional
space”
1. si mappano i dati in ingresso (input space) in uno spazio a
dimensione molto superiore (feature space) attraverso
l’uso di funzioni kernel;
2. si calcola l’iperpiano ottimo all’interno del feature space.
•Quindi invece di aumentare la complessità del classificatore (che
resta un iperpiano) si aumenta la dimensione dello spazio delle
features.
•Uno spazio di dimensione maggiore causa però seri problemi di
calcolo, perché l’algoritmo di apprendimento deve lavorare con
vettori di grandi dimensioni. La proiezione in uno spazio con
maggiore dimensionalità è solo implicito grazie all’utilizzo di
funzioni Kernel opportune (Kernel trick)
Nella risoluzione del problema di ottimizzazione c’è il
prodotto  ( xi )t   (x j ) questo prodotto non deve esser
calcolato esplicitamente nello spazio delle features se si
trova una funzione kernel k ( xi ,x j )con particolari
proprietà (kernel definiti positivi).
k ( xi ,x j )   t ( xi )   (x j )
Kernel trick
Il kernel è una funzione che restituisce il prodotto delle immagini
evitando così di eseguire il prodotto esplicito tra i due vettori.
Possiamo ignorare la forma esplicita di ϕ
Kernel trick
Se è possibile definire una funzione kernel tale chè
k ( xi ,x j )   ( xi )   (x j )   k 1k ( xi )  k (x j )
M
t
Il problema di ottimizzazzione diventa
m
1 m
max   i yi xi   yi y j i j k ( xi , x j )
2 i , j 1
i 1
con vincoli:
0  i  C ,
m
 y
i 1
i
i
0
Non si devono calcolare esplicitamente le trasformazioni  ( xi ) nello
spazio delle features.
Dovrei calcolare il prodotto scalare k ( xi )  k (x j ) ma non lo calcolo
esplicitamente perché posso calcolarlo indirettamente tramite la
funzione kernel. k ( xi ,x j )   t ( xi )   (x j )
Gaussian kernel
Vantaggi
- Non ci sono minimi locali (problema di ottimizzazione
quadratico -> soluzione ottima)
- La soluzione ottima può esser trovata in tempo polinomiale
-Ci sono pochi parametri da scegliere (C, tipo di kernel e
parametri specifici del kernel)
-Soluzioni stabili (es. non c’è il problema della inizializzazione
casuale dei pesi come nelle reti neurali)
-La soluzione è sparsa in quanto coinvolge solamente i
vettori di supporto
Scarica