Salta al contenuto
Note per Studenti Halfspace e Perceptron

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 y∈{−1,+1}y\in\{-1,+1\} (invece di {0,1}\{0,1\}: rende più comode le formule) e ingressi x∈Rpx\in\mathbb R^p.

Definizione (halfspace). La classe di funzioni hw,b(x)=sign⁡(wTx+b),w∈Rp, b∈R,h_{w,b}(x)=\operatorname{sign}\big(w^Tx+b\big),\qquad w\in\mathbb R^p,\ b\in\mathbb R, con sign⁡(z)=+1\operatorname{sign}(z)=+1 per z>0z>0 e −1-1 per z<0z<0 (per z=0z=0 si sceglie una convenzione, per esempio +1+1). Il vettore dei pesi ww e il bias bb sono i parametri.

Esempio. In R2\mathbb R^2 con w=(1,1)w=(1,1) e b=−3b=-3: h(x)=sign⁡(x1+x2−3)h(x)=\operatorname{sign}(x_1+x_2-3). Il punto (2,3)(2,3) dà 2+3−3=2>0⇒+12+3-3=2>0\Rightarrow+1; il punto (0,1)(0,1) dà −2<0⇒−1-2<0\Rightarrow-1.

Geometria. L'insieme {x:wTx+b=0}\{x:w^Tx+b=0\} è un iperpiano (una retta se p=2p=2, un piano se p=3p=3): divide lo spazio in due semispazi (halfspace) in cui il segno è +1+1 e −1-1. Il vettore ww è perpendicolare al piano: se x1,x2x_1,x_2 stanno sul piano, wT(x1−x2)=−b+b=0w^T(x_1-x_2)=-b+b=0. Un punto xx è dalla parte di ww se wTx+b>0w^Tx+b>0. La distanza di xx dal piano è dist⁡(x)=∣wTx+b∣∥w∥.\operatorname{dist}(x)=\frac{|w^Tx+b|}{\lVert w\rVert}. (Dimostrazione: se x0x_0 è la proiezione ortogonale di xx sul piano, x=x0+t w/∥w∥x=x_0+t\,w/\lVert w\rVert con tt la distanza con segno; allora wTx+b=wTx0+b+t ∥w∥=t ∥w∥w^Tx+b=w^Tx_0+b+t\,\lVert w\rVert=t\,\lVert w\rVert.) Nell'esempio, il punto (2,3)(2,3) dista 2/2=1,4142/\sqrt2=1{,}414 dalla retta x1+x2=3x_1+x_2=3.

Bias incorporato. Si aggiunge ai dati una componente costante: x~=(x,1)\tilde x=(x,1) e w~=(w,b)\tilde w=(w,b). Allora wTx+b=w~Tx~w^Tx+b=\tilde w^T\tilde x: l'iperpiano passa per l'origine nello spazio aumentato e si può scrivere h(x)=sign⁡(w~Tx~)h(x)=\operatorname{sign}(\tilde w^T\tilde x) (è 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 wTxw^Tx intendendo w~Tx~\tilde w^T\tilde x.

Definizione (separabilità lineare). Un insieme di esempi (xi,yi)(x_i,y_i) è linearmente separabile se esistono w,bw,b con yi(wTxi+b)>0y_i(w^Tx_i+b)>0 per ogni ii, cioè se un halfspace li classifica tutti correttamente. Il margine di un tale piano è la distanza minima dei punti dal piano.

La condizione yi(wTxi)>0y_i(w^Tx_i)>0 è comoda: è positivo quando il segno di wTxiw^Tx_i coincide con yiy_i (previsione corretta), negativo o nullo se la previsione è sbagliata.

Il Perceptron

Il Perceptron (Rosenblatt, 1958) è il modello di un neurone: calcola la combinazione lineare wTx+bw^Tx+b degli ingressi e la passa a una funzione di attivazione a gradino: uscita +1+1 se la somma supera la soglia, −1-1 (o 00) 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 (xi,yi)(x_i,y_i) con yi∈{−1,+1}y_i\in\{-1,+1\} e xix_i aumentati con la costante 11:

  1. si inizializza w=0w=0;
  2. si scorrono gli esempi; per un esempio sbagliato, cioè con yi wTxi≤0y_i\,w^Tx_i\le0, si aggiorna w←w+yi xi;w\leftarrow w+y_i\,x_i;
  3. si ripete finché in un'intera passata non ci sono errori.

Perché l'aggiornamento ha senso. Dopo l'aggiornamento la quantità yi wTxiy_i\,w^Tx_i per lo stesso esempio diventa yi(w+yixi)Txi=yi wTxi+yi2∥xi∥2=yi wTxi+∥xi∥2y_i(w+y_ix_i)^Tx_i=y_i\,w^Tx_i+y_i^2\lVert x_i\rVert^2=y_i\,w^Tx_i+\lVert x_i\rVert^2 (perché yi2=1y_i^2=1): aumenta di ∥xi∥2>0\lVert x_i\rVert^2>0, quindi l'esempio viene «avvicinato» alla classificazione corretta. Geometricamente, per un positivo ww si sposta verso xix_i, per un negativo si allontana da xix_i. L'aggiornamento può rendere sbagliati altri esempi: per questo si ripassa fino a che non ci sono errori.

Esempio completo (verificato). Dati x0=(2,3)x_0=(2,3) con y=+1y=+1, x1=(3,1)x_1=(3,1) con +1+1, x2=(0,1)x_2=(0,1) con −1-1, x3=(1,−1)x_3=(1,-1) con −1-1; con la costante x~=(x1,x2,1)\tilde x=(x_1,x_2,1) e w=(0,0,0)w=(0,0,0):

passata esempio y wTx~y\,w^T\tilde x errore? nuovo ww
1 x0x_0 00 sì (≤0\le0) w+(2,3,1)=(2,3,1)w+(2,3,1)=(2,3,1)
1 x1x_1 +1⋅(6+3+1)=10+1\cdot(6+3+1)=10 no (2,3,1)(2,3,1)
1 x2x_2 −1⋅(0+3+1)=−4-1\cdot(0+3+1)=-4 sì (2,3,1)−(0,1,1)=(2,2,0)(2,3,1)-(0,1,1)=(2,2,0)
1 x3x_3 −1⋅(2−2+0)=0-1\cdot(2-2+0)=0 sì (2,2,0)−(1,−1,1)=(1,3,−1)(2,2,0)-(1,-1,1)=(1,3,-1)
2 x0x_0: 2+9−1=102+9-1=10; x1x_1: 3+3−1=53+3-1=5 no
2 x2x_2 −1⋅(0+3−1)=−2-1\cdot(0+3-1)=-2 sì (1,3,−1)−(0,1,1)=(1,2,−2)(1,3,-1)-(0,1,1)=(1,2,-2)
2 x3x_3 −1⋅(1−2−2)=3-1\cdot(1-2-2)=3 no (1,2,−2)(1,2,-2)
3 x2x_2 −1⋅(0+2−2)=0-1\cdot(0+2-2)=0 sì (1,2,−2)−(0,1,1)=(1,1,−3)(1,2,-2)-(0,1,1)=(1,1,-3)
4 tutti [2, 1, 2, 3]>0[2,\,1,\,2,\,3]>0 nessuno w=(1,1,−3)w=(1,1,-3)

Totale: 55 errori e un classificatore che separa tutti i punti: h(x)=sign⁡(x1+x2−3)h(x)=\operatorname{sign}(x_1+x_2-3).

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 ∥xi∥≤R\lVert x_i\rVert\le R per ogni ii, e sia w∗w^\ast con ∥w∗∥=1\lVert w^\ast\rVert=1 tale che yi w∗Txi≥γ>0y_i\,w^{\ast T}x_i\ge\gamma>0 per ogni ii (esiste un iperpiano con margine γ\gamma). Allora il Perceptron commette al più (R/γ)2(R/\gamma)^2 errori (aggiornamenti) prima di classificare correttamente tutti gli esempi.

Dimostrazione. Sia wtw_t il vettore dopo tt aggiornamenti (w0=0w_0=0).

  1. Il prodotto scalare con w∗w^\ast cresce linearmente. Un aggiornamento con l'esempio (x,y)(x,y) dà wt+1⋅w∗=wt⋅w∗+y (x⋅w∗)≥wt⋅w∗+γw_{t+1}\cdot w^\ast=w_t\cdot w^\ast+y\,(x\cdot w^\ast)\ge w_t\cdot w^\ast+\gamma. Partendo da 00, per induzione: wt⋅w∗≥tγw_t\cdot w^\ast\ge t\gamma.
  2. La norma cresce al più come t\sqrt t. ∥wt+1∥2=∥wt+yx∥2=∥wt∥2+2y wt⋅x+∥x∥2\lVert w_{t+1}\rVert^2=\lVert w_t+yx\rVert^2=\lVert w_t\rVert^2+2y\,w_t\cdot x+\lVert x\rVert^2. Poiché si aggiorna solo se c'è un errore, y wt⋅x≤0y\,w_t\cdot x\le0, quindi ∥wt+1∥2≤∥wt∥2+R2\lVert w_{t+1}\rVert^2\le\lVert w_t\rVert^2+R^2. Per induzione: ∥wt∥2≤tR2\lVert w_t\rVert^2\le tR^2.
  3. Si combinano con la disuguaglianza di Cauchy-Schwarz (wt⋅w∗≤∥wt∥ ∥w∗∥=∥wt∥w_t\cdot w^\ast\le\lVert w_t\rVert\,\lVert w^\ast\rVert=\lVert w_t\rVert): tγ≤wt⋅w∗≤∥wt∥≤t Rt\gamma\le w_t\cdot w^\ast\le\lVert w_t\rVert\le\sqrt t\,R. Dividendo per t γ\sqrt t\,\gamma: t≤R/γ\sqrt t\le R/\gamma, cioè t≤(R/γ)2t\le(R/\gamma)^2. ∎

Esempio. Nell'esempio precedente w∗=(1,1,−3)/11w^\ast=(1,1,-3)/\sqrt{11} ha margini yiw∗Tx~i=[2,1,2,3]/11y_iw^{\ast T}\tilde x_i=[2,1,2,3]/\sqrt{11}, quindi γ=1/11=0,302\gamma=1/\sqrt{11}=0{,}302; il vettore aumentato più lungo è (2,3,1)(2,3,1) con R=14=3,74R=\sqrt{14}=3{,}74. Il teorema garantisce t≤R2/γ2=14⋅11=154t\le R^2/\gamma^2=14\cdot11=154 errori; ne sono occorsi 55 (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 pp né dal numero di esempi nn.

Limiti

Perceptron Regressione logistica SVM
Uscita classe (±1\pm1) 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

python
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 y∈{−1,+1}y\in\{-1,+1\}: il confronto <= 0 include il caso wTx=0w^Tx=0 (all'inizio, con w=0w=0, tutti gli esempi sono «sul piano» e il primo aggiornamento avviene subito).

Errori tipici

  • Usare le etichette {0,1}\{0,1\} nella regola w←w+yixiw\leftarrow w+y_ix_i: servono ±1\pm1 (con 0/10/1 un negativo non allontanerebbe ww).
  • Dimenticare il bias (o la colonna di uni): il piano è costretto a passare per l'origine.
  • Confondere ww (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). h(x)=sign⁡(wTx+b)h(x)=\operatorname{sign}(w^Tx+b), y∈{−1,+1}y\in\{-1,+1\}. L'insieme wTx+b=0w^Tx+b=0 è un iperpiano con normale ww; distanza di xx dal piano =∣wTx+b∣/∥w∥=|w^Tx+b|/\lVert w\rVert. Bias incorporato: x~=(x,1)\tilde x=(x,1), w~=(w,b)\tilde w=(w,b).

Esempio. w=(1,1)w=(1,1), b=−3b=-3: (2,3)→2>0⇒+1(2,3)\to2>0\Rightarrow+1; (0,1)→−2⇒−1(0,1)\to-2\Rightarrow-1; distanza di (2,3)(2,3): 2/2=1,4142/\sqrt2=1{,}414.

Definizione (separabile). Esiste ww con yi wTxi>0y_i\,w^Tx_i>0 per ogni ii; margine = distanza minima dei punti dal piano.

Definizione (algoritmo del Perceptron). w=0w=0; per ogni esempio con yi wTxi≤0y_i\,w^Tx_i\le0: w←w+yixiw\leftarrow w+y_ix_i; si ripete fino a zero errori. Dopo l'aggiornamento yiwTxiy_iw^Tx_i aumenta di ∥xi∥2\lVert x_i\rVert^2.

Esempio. (2,3)+,(3,1)+,(0,1)−,(1,−1)−(2,3)+,(3,1)+,(0,1)-,(1,-1)-: 5 aggiornamenti, w=(1,1,−3)w=(1,1,-3), cioè x1+x2=3x_1+x_2=3.

Teorema (Novikoff). Se ∥xi∥≤R\lVert x_i\rVert\le R e ∃w∗\exists w^\ast, ∥w∗∥=1\lVert w^\ast\rVert=1, con yiw∗Txi≥γy_iw^{\ast T}x_i\ge\gamma, il Perceptron fa al più (R/γ)2(R/\gamma)^2 errori. Dim.: wt⋅w∗≥tγw_t\cdot w^\ast\ge t\gamma; ∥wt∥2≤tR2\lVert w_t\rVert^2\le tR^2 (perché y w⋅x≤0y\,w\cdot x\le0 negli errori); Cauchy-Schwarz: tγ≤tRt\gamma\le\sqrt tR.

Esempio. Qui γ=1/11\gamma=1/\sqrt{11}, R2=14R^2=14: limite 154154 errori; ne servono 55.

Limiti. Solo dati separabili (altrimenti non converge): lo XOR non è separabile (da b<0b<0, w1+w2+b<0w_1+w_2+b<0, w2+b>0w_2+b>0, w1+b>0w_1+b>0 segue una contraddizione). Soluzione non unica, dipende dall'ordine; nessun margine ottimale →\to SVM; per dati rumorosi regressione logistica. Perceptron = neurone con gradino; con sigmoide si ha la logistica.

Errori tipici: etichette 0/10/1 invece di ±1\pm1; bias dimenticato; ww scambiato con un punto; convergenza attesa con dati non separabili.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata