Esercizio - Perceptron a mano su quattro punti
Questa pagina non ha ancora la versione ripasso: qui sotto c'è il testo completo.
In questa pagina 5
Testo. Il Perceptron con bias deve imparare la porta logica AND: ingressi , uscita solo per e altrimenti.
- Eseguire l'algoritmo del Perceptron (; per ogni errore : , con ), ordine degli esempi , e dire a che cosa converge.
- Verificare la soluzione e calcolarne distanza dei punti e margine.
- Confrontare il numero di errori con il limite del teorema di convergenza.
- Cosa cambia con un ordine diverso degli esempi?
Teoria usata: Halfspace e PerceptronUn halfspace (semispazio) classifica con un iperpiano: $h(x)=\operatorname{sign}(w^Tx+b)$, con $w$ normale al piano e $|w^Tx+b|/|w|$ distanza dal piano; aggiungendo una componente costante $1$ a $x$ si scrive $\operatorname{sign}(\tilde w^T\tilde x)$. Il Perceptron (Rosenblatt, 1958) è il neurone con attivazione a gradino e impara con una regola semplice: per ogni errore $y_i,w^Tx_i\le0$ si aggiorna $w\leftarrow w+y_ix_i$. Teorema di convergenza (Novikoff): se i dati sono linearmente separabili con margine $\gamma$ ($y_iw^{T}x_i\ge\gamma$, $|w^|=1$) e $|x_i|\le R$, il Perceptron fa al più $(R/\gamma)^2$ errori e si ferma. Non risolve problemi non separabili (XOR), non ha un criterio di margine ottimale (le SVM sì) e il suo analogo morbido è la regressione logistica. Programma di Telecomunicazioni: halfspace model, Perceptron.Halfspace e Perceptron → (regola di aggiornamento, teorema di convergenza); prodotto scalare e distanza punto-piano in Prodotto scalare, norma e angoliIl prodotto scalare aggiunge a uno spazio vettoriale lunghezze e angoli: norma, disuguaglianza di Cauchy-Schwarz, angolo tra vettori in R^n, ortogonalità, proiezione su una retta, aree e volumi con il determinante della matrice dei prodotti scalari.Prodotto scalare, norma e angoli → e Distanze e angoli nello spazio affineLa distanza tra due punti è la norma del vettore che li unisce. La distanza di un punto Q da un sottospazio affine L si misura dal piede della perpendicolare H, l'unico punto di L con Q − H ortogonale allo spazio direttore. Per un iperpiano a·x = b vale la formula |a·Q − b|/‖a‖. Rette sghembe: perpendicolare comune. Angoli tra rette e piani dai vettori direttori e normali.Distanze e angoli nello spazio affine →.
1. Esecuzione
Vettori aumentati: , , , con . All'inizio : tutti i prodotti sono , cioè «errori» (la condizione è ).
Passata 1.
- : : errore. .
- : , , prodotto : corretto.
- : analogamente prodotto : corretto.
- : e : prodotto : errore. .
Passata 2 (parte da ).
- : , prodotto : errore. .
- : , prodotto : errore. .
- : , : prodotto : corretto.
- : , : prodotto : errore. .
L'algoritmo continua: passata 3 (3 errori, passa da a , , ), passata 4 (2 errori, ), passata 5 (), passata 6 (), passata 7 (), passata 8 (), passata 9: nessun errore. Totale 18 aggiornamenti e
2. Verifica, distanze e margine
: : ; : ; : ; : : tutti positivi: classificazione corretta. L'iperpiano è la retta . Distanze dai punti con : ; ; ; . Il margine (distanza minima) è : i punti e sono quasi sulla retta; esistono rette separatrici con margine più grande (per esempio , che dista da , e : margine ), che il Perceptron non cerca: è il compito delle SVM (Support vector machines e metodi kernelUna SVM cerca l'iperpiano $w\cdot x+b=0$ che separa due classi con il margine più largo possibile: normalizzando $y_i(w\cdot x_i+b)\ge1$ il margine totale vale $2/|w|$, quindi si risolve $\min\frac12|w|^2$ (problema convesso, nessun minimo locale). Con classi sovrapposte si ammettono errori con le variabili di scarto $\xi_i$ e il parametro $C$ (soft margin, equivalente alla hinge loss più una penalità su $|w|^2$); $C$ piccolo = margine largo e più bias, $C$ grande = margine stretto e più varianza, si sceglie per cross-validation. La soluzione dipende solo dai vettori di supporto ($w=\sum\alpha_iy_ix_i$) e solo tramite prodotti scalari, per questo si può sostituire $x_i\cdot x_j$ con un kernel $K(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle$ (polinomiale, RBF) senza calcolare $\phi$: così si ottengono bordi non lineari. La SVR usa lo stesso schema con un tubo di tolleranza $\varepsilon$. Nell'esame le SVM sono solo nella parte teorica.Support vector machines e metodi kernel →).
3. Limite del teorema
Per i vettori aumentati e per (norma del vettore aumentato ) i valori sono , quindi . Il limite : l'algoritmo ne ha fatti . Il limite è largo ma vale per qualunque ordine; e il margine migliore possibile (rette come ) darebbe un limite più piccolo.
4. Ordine degli esempi
La soluzione e il numero di errori dipendono dall'ordine: scorrendo gli esempi nell'ordine inverso si ottiene dopo aggiornamenti (la retta ). Tutte le soluzioni separano i dati, ma sono diverse: il Perceptron trova un iperpiano separatore, non il migliore.
Verifica
import numpy as np
X = np.array([[0,0],[0,1],[1,0],[1,1.]]); y = np.array([-1,-1,-1,1]); Xa = np.c_[X, np.ones(4)]
w = np.zeros(3); n_err = 0
while True:
err = 0
for xi, yi in zip(Xa, y):
if yi * (w @ xi) <= 0: w += yi * xi; err += 1; n_err += 1
if err == 0: break
print(w, n_err) # [ 3. 2. -4.] 18