Halfspace e Perceptron
In questa pagina 4
I classificatori più semplici sono quelli lineari: separano le classi con un iperpiano. Il modello geometrico è l'halfspace; l'algoritmo storico che lo impara è il Perceptron, che è anche il «mattone» delle reti neurali (Reti neurali - neuroni e funzioni di attivazioneUn neurone calcola $\hat y=g(w_0+w^\top x)$: somma pesata degli ingressi più bias, poi una funzione di attivazione $g$ non lineare (Perceptron a soglia, sigmoide, tanh, ReLU e varianti). Senza non linearità ogni rete è equivalente a un solo modello lineare. Una rete feed-forward impila strati di neuroni: $a^{(k)}=g(W^{(k)}a^{(k-1)}+b^{(k)})$; con uno strato nascosto è già un approssimatore universale, ma più strati rappresentano funzioni complesse con molti meno neuroni e imparano feature gerarchiche (bordi, parti, oggetti). Lo strato di uscita e la loss si scelgono dal compito: lineare+MSE (regressione), sigmoide+cross-entropy binaria, softmax+cross-entropy (multiclasse). Il numero di parametri di uno strato denso è $n_{in}n_{out}+n_{out}$. Nel lab (Keras, MNIST) una rete 784-512-10 ha 407 050 parametri e supera il 98% di accuratezza.Reti neurali - neuroni e funzioni di attivazione →). La nota si appoggia sulla geometria dell'iperpiano e sul prodotto scalare (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 →, Spazi affini, rette e pianiNello spazio affine Aⁿ si distinguono punti e vettori (Q − P è il vettore da P a Q). Un sottospazio affine è L = P + W, un punto più un sottospazio vettoriale (lo spazio direttore): si descrive con equazioni parametriche X = P + t₁w₁ + … oppure cartesiane AX = B. Rette e piani di A³, passaggio tra i due tipi di equazioni, posizione reciproca: incidenti, paralleli, sghembi.Spazi affini, rette e piani →, 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 →). Gli esercizi sono Esercizio - Perceptron a mano su quattro punti e Esercizio - Halfspace, distanza dal piano e problema XOR. Il Perceptron non ha una lezione dedicata nel corso di Automazione (compare solo come neurone nella lezione 23 sul deep learning): la nota è scritta dal programma ufficiale e dalle conoscenze standard (vedi _fonti).
Il modello halfspace
Si lavora con una classificazione binaria con etichette (invece di : rende più comode le formule) e ingressi .
Definizione (halfspace). La classe di funzioni con per e per (per si sceglie una convenzione, per esempio ). Il vettore dei pesi e il bias sono i parametri.
Esempio. In con e : . Il punto dà ; il punto dà .
Geometria. L'insieme è un iperpiano (una retta se , un piano se ): divide lo spazio in due semispazi (halfspace) in cui il segno è e . Il vettore è perpendicolare al piano: se stanno sul piano, . Un punto è dalla parte di se . La distanza di dal piano è (Dimostrazione: se è la proiezione ortogonale di sul piano, con la distanza con segno; allora .) Nell'esempio, il punto dista dalla retta .
Bias incorporato. Si aggiunge ai dati una componente costante: e . Allora : l'iperpiano passa per l'origine nello spazio aumentato e si può scrivere (è la colonna di uni della Regressione lineareNell'apprendimento supervisionato si impara una funzione $F(x)$ dagli esempi $(x,y)$: regressione se $y$ è continua, classificazione se è categorica. Il modello lineare è $F_\beta(x)=\beta_0+\beta_1x_1+\dots+\beta_px_p=X\beta$ (con una colonna di uni per $\beta_0$) e i parametri si scelgono minimizzando l'errore quadratico medio $\mathrm{MSE}=\frac1n\sum_i(y_i-F_\beta(x_i))^2$, funzione convessa dei parametri. Annullando il gradiente di $J(\beta)=|y-X\beta|^2$ si ottengono le equazioni normali $X^TX\beta=X^Ty$ e la soluzione dei minimi quadrati ordinari $\beta=(X^TX)^{-1}X^Ty$. Il coefficiente di determinazione $R^2=1-SS_{res}/SS_{tot}$ misura la qualità del fit (0 = come la media, negativo = peggio della media). Un modello va valutato su un test set mai usato per addestrare: l'errore sul training è ottimistico e un polinomio di grado alto lo azzera senza generalizzare.Regressione lineare →). Nel seguito si scrive intendendo .
Definizione (separabilità lineare). Un insieme di esempi è linearmente separabile se esistono con per ogni , cioè se un halfspace li classifica tutti correttamente. Il margine di un tale piano è la distanza minima dei punti dal piano.
La condizione è comoda: è positivo quando il segno di coincide con (previsione corretta), negativo o nullo se la previsione è sbagliata.
Il Perceptron
Il Perceptron (Rosenblatt, 1958) è il modello di un neurone: calcola la combinazione lineare degli ingressi e la passa a una funzione di attivazione a gradino: uscita se la somma supera la soglia, (o ) altrimenti. È quindi esattamente un halfspace. Sostituendo il gradino con la sigmoide si ha la regressione logistica (Regressione logistica e softmaxLa regressione lineare non è adatta alla classificazione (valori fuori da [0,1], retta tirata dai punti lontani). La regressione logistica passa il predittore lineare dalla sigmoide $\sigma(z)=1/(1+e^{-z})$ e interpreta $\hat y=\sigma(x^T\beta)$ come $P(y=1\mid x)$: si predice la classe 1 se $\hat y\ge0{,}5$, cioè $x^T\beta\ge0$ (bordo lineare). L'errore quadratico dà una funzione non convessa; si usa la log-verosimiglianza negativa $-\sum[y\log\hat y+(1-y)\log(1-\hat y)]$, convessa, con gradiente $X^T(\hat y-y)$ e nessuna formula chiusa (discesa del gradiente). Per più classi: one-vs-one ($C(C-1)/2$ classificatori, voto), one-vs-all ($C$ classificatori, massima probabilità), o la softmax $p_c=e^{z_c}/\sum_ke^{z_k}$ con cross-entropia. Si può regolarizzare (ridge, LASSO, Elastic Net) e la cross-validation si fa stratificata. Approfondimento: non nel programma di Telecomunicazioni.Regressione logistica e softmax →); con altre attivazioni e molti neuroni in strati, una rete neurale (Reti neurali - neuroni e funzioni di attivazioneUn neurone calcola $\hat y=g(w_0+w^\top x)$: somma pesata degli ingressi più bias, poi una funzione di attivazione $g$ non lineare (Perceptron a soglia, sigmoide, tanh, ReLU e varianti). Senza non linearità ogni rete è equivalente a un solo modello lineare. Una rete feed-forward impila strati di neuroni: $a^{(k)}=g(W^{(k)}a^{(k-1)}+b^{(k)})$; con uno strato nascosto è già un approssimatore universale, ma più strati rappresentano funzioni complesse con molti meno neuroni e imparano feature gerarchiche (bordi, parti, oggetti). Lo strato di uscita e la loss si scelgono dal compito: lineare+MSE (regressione), sigmoide+cross-entropy binaria, softmax+cross-entropy (multiclasse). Il numero di parametri di uno strato denso è $n_{in}n_{out}+n_{out}$. Nel lab (Keras, MNIST) una rete 784-512-10 ha 407 050 parametri e supera il 98% di accuratezza.Reti neurali - neuroni e funzioni di attivazione →).
L'algoritmo di apprendimento
Definizione (algoritmo del Perceptron). Dati con e aumentati con la costante :
- si inizializza ;
- si scorrono gli esempi; per un esempio sbagliato, cioè con , si aggiorna
- si ripete finché in un'intera passata non ci sono errori.
Perché l'aggiornamento ha senso. Dopo l'aggiornamento la quantità per lo stesso esempio diventa (perché ): aumenta di , quindi l'esempio viene «avvicinato» alla classificazione corretta. Geometricamente, per un positivo si sposta verso , per un negativo si allontana da . L'aggiornamento può rendere sbagliati altri esempi: per questo si ripassa fino a che non ci sono errori.
Esempio completo (verificato). Dati con , con , con , con ; con la costante e :
| passata | esempio | errore? | nuovo | |
|---|---|---|---|---|
| 1 | sì () | |||
| 1 | no | |||
| 1 | sì | |||
| 1 | sì | |||
| 2 | : ; : | no | ||
| 2 | sì | |||
| 2 | no | |||
| 3 | sì | |||
| 4 | tutti | nessuno |
Totale: errori e un classificatore che separa tutti i punti: .
Grafico interattivo: Esempio del Perceptron: i punti positivi (rossi) e negativi (blu) e l'iperpiano finale x₁ + x₂ = 3, ottenuto con w = (1, 1) e b = −3; il vettore w (freccia) è perpendicolare alla retta e punta verso il semispazio positivo
Il teorema di convergenza
Se i dati sono linearmente separabili il Perceptron si ferma sempre, dopo un numero finito di errori che dipende dal margine.
Teorema (convergenza del Perceptron, Novikoff). Siano per ogni , e sia con tale che per ogni (esiste un iperpiano con margine ). Allora il Perceptron commette al più errori (aggiornamenti) prima di classificare correttamente tutti gli esempi.
Dimostrazione. Sia il vettore dopo aggiornamenti ().
- Il prodotto scalare con cresce linearmente. Un aggiornamento con l'esempio dà . Partendo da , per induzione: .
- La norma cresce al più come . . Poiché si aggiorna solo se c'è un errore, , quindi . Per induzione: .
- Si combinano con la disuguaglianza di Cauchy-Schwarz (): . Dividendo per : , cioè . ∎
Esempio. Nell'esempio precedente ha margini , quindi ; il vettore aumentato più lungo è con . Il teorema garantisce errori; ne sono occorsi (il limite è largo ma vale per ogni ordine degli esempi).
Il teorema dice anche che più è piccolo il margine, più errori servono; non dipende dalla dimensione né dal numero di esempi .
Limiti
- Solo problemi separabili. Se i dati non sono linearmente separabili l'algoritmo non converge (continua ad aggiornare). Esempio classico, lo XOR: , , , . Se esistessero : (primo punto); (secondo); e (gli altri due). Sommando le ultime due, ; ma dalle prime due si ha : contraddizione. Nessun halfspace risolve lo XOR; serve una rete con più strati.
- La soluzione non è unica e dipende dall'ordine degli esempi: tra i tanti iperpiani separatori il Perceptron trova il primo, non il migliore.
- Nessun criterio di margine ottimale. Le SVM cercano il piano di margine massimo (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 →) e con i metodi kernel gestiscono anche il caso non separabile.
- Dati rumorosi. Con classi che si sovrappongono si preferisce la regressione logistica (minimizza una perdita continua) o varianti come il pocket Perceptron (tiene il miglior visto).
| Perceptron | Regressione logistica | SVM | |
|---|---|---|---|
| Uscita | classe () | probabilità | classe (distanza dal piano) |
| Criterio | zero errori (se separabile) | log-verosimiglianza | margine massimo |
| Dati non separabili | non converge | funziona | funziona (margine morbido, kernel) |
Codice
import numpy as np
def perceptron(X, y, max_epochs=100):
Xa = np.hstack([X, np.ones((len(X), 1))]) # bias incorporato
w = np.zeros(Xa.shape[1])
for _ in range(max_epochs):
errors = 0
for xi, yi in zip(Xa, y):
if yi * (w @ xi) <= 0: # esempio sbagliato (o sul piano)
w += yi * xi; errors += 1
if errors == 0: break # tutti corretti: stop
return w # w = (pesi, bias)
predict = lambda w, X: np.sign(np.hstack([X, np.ones((len(X), 1))]) @ w)Con : il confronto <= 0 include il caso (all'inizio, con , tutti gli esempi sono «sul piano» e il primo aggiornamento avviene subito).
Errori tipici
- Usare le etichette nella regola : servono (con un negativo non allontanerebbe ).
- Dimenticare il bias (o la colonna di uni): il piano è costretto a passare per l'origine.
- Confondere (normale al piano) con un punto del piano.
- Aspettarsi la convergenza con dati non separabili.
- Considerare il Perceptron e la regressione logistica equivalenti: cambiano l'uscita e la regola di apprendimento (errori contro gradiente di una perdita).
Versione ripasso
Definizione (halfspace). , . L'insieme è un iperpiano con normale ; distanza di dal piano . Bias incorporato: , .
Esempio. , : ; ; distanza di : .
Definizione (separabile). Esiste con per ogni ; margine = distanza minima dei punti dal piano.
Definizione (algoritmo del Perceptron). ; per ogni esempio con : ; si ripete fino a zero errori. Dopo l'aggiornamento aumenta di .
Esempio. : 5 aggiornamenti, , cioè .
Teorema (Novikoff). Se e , , con , il Perceptron fa al più errori. Dim.: ; (perché negli errori); Cauchy-Schwarz: .
Esempio. Qui , : limite errori; ne servono .
Limiti. Solo dati separabili (altrimenti non converge): lo XOR non è separabile (da , , , segue una contraddizione). Soluzione non unica, dipende dall'ordine; nessun margine ottimale SVM; per dati rumorosi regressione logistica. Perceptron = neurone con gradino; con sigmoide si ha la logistica.
Errori tipici: etichette invece di ; bias dimenticato; scambiato con un punto; convergenza attesa con dati non separabili.