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.

La dimostrazione, passaggio per passaggio.

  1. ww è perpendicolare al piano. Due punti qualunque x1,x2x_1,x_2 del piano soddisfano wTx1+b=0w^Tx_1+b=0 e wTx2+b=0w^Tx_2+b=0; sottraendo, wT(x1−x2)=0w^T(x_1-x_2)=0. Il vettore x1−x2x_1-x_2 è una direzione contenuta nel piano e il suo prodotto scalare con ww è nullo, quindi ww è ortogonale a ogni direzione del piano (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 →: u⋅v=0u\cdot v=0 equivale a u⊥vu\perp v).
  2. La distanza è lungo la normale. Il punto del piano più vicino a xx è la sua proiezione ortogonale x0x_0 (Complemento ortogonale e proiezioni ortogonaliL'ortogonale U⊥ di un sottospazio è un sottospazio di dimensione n − dim U, e R^n = U ⊕ U⊥; ogni vettore si scompone in proiezione su U più componente ortogonale; la proiezione è il punto di U più vicino e si calcola con un sistema o con la matrice di proiezione A(AᵀA)⁻¹Aᵀ.Complemento ortogonale e proiezioni ortogonali →), e il segmento x−x0x-x_0 è perpendicolare al piano, cioè parallelo a ww: x=x0+t w∥w∥x=x_0+t\,\frac{w}{\lVert w\rVert}, dove w∥w∥\frac w{\lVert w\rVert} è il vettore unitario nella direzione di ww e ∣t∣|t| la distanza cercata.
  3. Si calcola il valore della funzione in xx. wTx+b=wTx0+b⏟=0+t wTw∥w∥=t ∥w∥w^Tx+b=\underbrace{w^Tx_0+b}_{=0}+t\,\frac{w^Tw}{\lVert w\rVert}=t\,\lVert w\rVert, perché wTw=∥w∥2w^Tw=\lVert w\rVert^2. Quindi t=wTx+b∥w∥t=\frac{w^Tx+b}{\lVert w\rVert} e la distanza è ∣t∣|t|. Il segno di tt dice da che parte del piano sta il punto (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 →). Controllo sull'esempio: w=(1,1)w=(1,1), ∥w∥=1+1=2\lVert w\rVert=\sqrt{1+1}=\sqrt2. Punto (2,3)(2,3): t=2+3−32=1,414t=\frac{2+3-3}{\sqrt2}=1{,}414 (lato positivo); punto (0,1)(0,1): t=0+1−32=−1,414t=\frac{0+1-3}{\sqrt2}=-1{,}414 (lato negativo, dista uguale); punto (3,1)(3,1): t=12=0,707t=\frac{1}{\sqrt2}=0{,}707; punto (1,−1)(1,-1): t=−32=−2,121t=\frac{-3}{\sqrt2}=-2{,}121. Il margine di questo piano sui quattro punti dell'esempio del Perceptron è quindi 0,7070{,}707. Moltiplicare (w,b)(w,b) per una costante c>0c>0 non cambia né il piano né le classificazioni né la distanza (il fattore si semplifica nel rapporto), per questo la distanza si divide sempre per ∥w∥\lVert w\rVert.

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

Come si muove la retta. Ogni riga della tabella dà un vettore w=(w1,w2,w0)w=(w_1,w_2,w_0) e quindi la retta w1x1+w2x2+w0=0w_1x_1+w_2x_2+w_0=0, cioè w1x1+w2x2=−w0w_1x_1+w_2x_2=-w_0. I cinque aggiornamenti producono: (1) w=(2,3,1)w=(2,3,1): retta 2x1+3x2=−12x_1+3x_2=-1; (2) w=(2,2,0)w=(2,2,0): x1+x2=0x_1+x_2=0; (3) w=(1,3,−1)w=(1,3,-1): x1+3x2=1x_1+3x_2=1; (4) w=(1,2,−2)w=(1,2,-2): x1+2x2=2x_1+2x_2=2; (5) w=(1,1,−3)w=(1,1,-3): x1+x2=3x_1+x_2=3. Il grafico le mostra in sequenza: dopo ogni errore la retta ruota e si sposta nella direzione che corregge quel punto, finché la quinta separa i quattro punti.

Grafico interattivo: Le cinque rette successive del Perceptron (tratteggiate, numerate secondo l'aggiornamento) e quella finale x₁ + x₂ = 3 (continua) sugli stessi quattro punti: positivi in rosso, negativi in blu

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).

L'idea: il vettore wtw_t deve tenersi sempre più allineato a w∗w^\ast (passo 1) senza però crescere troppo in lunghezza (passo 2); poiché un allineamento non può superare il 100%, il numero di aggiornamenti è limitato.

  1. Il prodotto scalare con w∗w^\ast cresce linearmente. Un aggiornamento con l'esempio (x,y)(x,y) dà wt+1⋅w∗=(wt+yx)⋅w∗=wt⋅w∗+y (x⋅w∗)w_{t+1}\cdot w^\ast=(w_t+yx)\cdot w^\ast=w_t\cdot w^\ast+y\,(x\cdot w^\ast) (linearità del prodotto scalare) ≥wt⋅w∗+γ\ge w_t\cdot w^\ast+\gamma, perché per ipotesi y (x⋅w∗)≥γy\,(x\cdot w^\ast)\ge\gamma. Per induzionePer dimostrare una proprietà per ogni n basta il passo base e il passo induttivo da n a n+1.Principio di induzione →: base w0⋅w∗=0≥0⋅γw_0\cdot w^\ast=0\ge0\cdot\gamma; passo, se wt⋅w∗≥tγw_t\cdot w^\ast\ge t\gamma allora wt+1⋅w∗≥tγ+γ=(t+1)γw_{t+1}\cdot w^\ast\ge t\gamma+\gamma=(t+1)\gamma. Quindi wt⋅w∗≥tγw_t\cdot w^\ast\ge t\gamma.
  2. La norma cresce al più come t\sqrt t. Si sviluppa il quadrato della norma (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 →: ∥a+b∥2=∥a∥2+2a⋅b+∥b∥2\lVert a+b\rVert^2=\lVert a\rVert^2+2a\cdot b+\lVert b\rVert^2): ∥wt+1∥2=∥wt+yx∥2=∥wt∥2+2y wt⋅x+y2∥x∥2\lVert w_{t+1}\rVert^2=\lVert w_t+yx\rVert^2=\lVert w_t\rVert^2+2y\,w_t\cdot x+y^2\lVert x\rVert^2, con y2=1y^2=1. Poiché si aggiorna solo se c'è un errore, y wt⋅x≤0y\,w_t\cdot x\le0 (il termine centrale è non positivo e si può togliere), e ∥x∥≤R\lVert x\rVert\le R, quindi ∥wt+1∥2≤∥wt∥2+R2\lVert w_{t+1}\rVert^2\le\lVert w_t\rVert^2+R^2. Per induzione, con ∥w0∥2=0\lVert w_0\rVert^2=0: ∥wt∥2≤tR2\lVert w_t\rVert^2\le tR^2, cioè ∥wt∥≤t R\lVert w_t\rVert\le\sqrt t\,R.
  3. Si combinano con la disuguaglianza di Cauchy-Schwarz: wt⋅w∗=∥wt∥ ∥w∗∥cos⁡θ≤∥wt∥ ∥w∗∥=∥wt∥w_t\cdot w^\ast=\lVert w_t\rVert\,\lVert w^\ast\rVert\cos\theta\le\lVert w_t\rVert\,\lVert w^\ast\rVert=\lVert w_t\rVert, perché cos⁡θ≤1\cos\theta\le1 e ∥w∗∥=1\lVert w^\ast\rVert=1. Allora 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 (positivo): t≤R/γ\sqrt t\le R/\gamma, elevando al quadrato t≤(R/γ)2t\le(R/\gamma)^2. ∎

Il numero tt di aggiornamenti non può superare (R/γ)2(R/\gamma)^2: dopo tanti aggiornamenti non possono esserci altri errori, e quindi l'algoritmo si ferma. Il ruolo di γ\gamma: un margine piccolo significa che i punti sono vicini al piano, quindi wtw_t deve diventare molto più lungo e allineato per superare tutti.

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

  • Solo problemi separabili. Se i dati non sono linearmente separabili l'algoritmo non converge (continua ad aggiornare). Esempio classico, lo XOR: (0,0)→−1(0,0)\to-1, (1,1)→−1(1,1)\to-1, (0,1)→+1(0,1)\to+1, (1,0)→+1(1,0)\to+1. Se esistessero w,bw,b: b<0b<0 (primo punto); w1+w2+b<0w_1+w_2+b<0 (secondo); w2+b>0w_2+b>0 e w1+b>0w_1+b>0 (gli altri due). Sommando le ultime due, w1+w2+2b>0w_1+w_2+2b>0; ma dalle prime due si ha w1+w2+2b=(w1+w2+b)+b<0w_1+w_2+2b=(w_1+w_2+b)+b<0: contraddizione. Nessun halfspace risolve lo XOR; serve una rete con più strati.

Grafico interattivo: XOR: i due punti positivi (rossi) sono sulla diagonale opposta a quella dei due negativi (blu); qualunque retta lascia almeno un punto dalla parte sbagliata. Le due rette tratteggiate mostrano due tentativi: ognuna sbaglia un punto

Geometricamente: un halfspace separa i punti con una retta, quindi le due classi dovrebbero avere involucri convessi disgiunti; qui i segmenti che uniscono le coppie della stessa classe (le due diagonali del quadrato) si incontrano nel centro (12,12)(\frac12,\frac12), e un semispazio, che è convesso, non può contenere i due estremi di una diagonale senza contenere anche il centro.

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). Con etichette y∈{−1,+1}y\in\{-1,+1\} e ingressi x∈Rpx\in\mathbb R^p, il classificatore è h(x)=sign⁡(wTx+b)h(x)=\operatorname{sign}(w^Tx+b). Il vettore ww è il peso e bb il bias. Il confine {x: wTx+b=0}\{x:\ w^Tx+b=0\} è un iperpiano, perpendicolare a ww.

Formula (distanza dal piano). dist⁡(x)=∣wTx+b∣∥w∥\operatorname{dist}(x)=\dfrac{|w^Tx+b|}{\lVert w\rVert}. Passaggi: se x0x_0 è la proiezione ortogonale di xx sul piano, x=x0+t w∥w∥x=x_0+t\,\frac{w}{\lVert w\rVert}, quindi wTx+b=t∥w∥w^Tx+b=t\lVert w\rVert (Complemento ortogonale e proiezioni ortogonaliL'ortogonale U⊥ di un sottospazio è un sottospazio di dimensione n − dim U, e R^n = U ⊕ U⊥; ogni vettore si scompone in proiezione su U più componente ortogonale; la proiezione è il punto di U più vicino e si calcola con un sistema o con la matrice di proiezione A(AᵀA)⁻¹Aᵀ.Complemento ortogonale e proiezioni ortogonali →, 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 →).

Esempio. w=(1,1)w=(1,1), b=−3b=-3: il punto (2,3)(2,3) dà 2+3−3=2>02+3-3=2>0, quindi +1+1, a distanza 2/2=1,4142/\sqrt2=1{,}414; il punto (0,1)(0,1) dà −2-2, quindi −1-1.

Bias incorporato. Con x~=(x,1)\tilde x=(x,1) e w~=(w,b)\tilde w=(w,b) si ha wTx+b=w~Tx~w^Tx+b=\tilde w^T\tilde x: l'iperpiano passa per l'origine nello spazio aumentato (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 →).

Definizione (separabilità lineare). Gli esempi sono separabili se esistono w,bw,b con yi(wTxi+b)>0y_i(w^Tx_i+b)>0 per ogni ii. Il margine è la distanza minima dei punti dal piano.

Il Perceptron

Il Perceptron (Rosenblatt, 1958) è un neurone con attivazione a gradino: è un halfspace. Con la sigmoide al posto del gradino si ottiene la regressione logisticaLa 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 più neuroni e strati, una rete (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 →).

Definizione (algoritmo). Con xix_i aumentati dalla costante 11:

  1. w=0w=0;
  2. per ogni esempio sbagliato, cioè con yi wTxi≤0y_i\,w^Tx_i\le0: w←w+yi xiw\leftarrow w+y_i\,x_i;
  3. ripetere finché una passata intera non dà errori.

Perché funziona. Dopo l'aggiornamento, yi wTxiy_i\,w^Tx_i dello stesso esempio aumenta di ∥xi∥2\lVert x_i\rVert^2, perché yi2=1y_i^2=1. L'esempio si avvicina alla classificazione corretta, ma altri esempi possono sbagliare: per questo si ripassa.

Esempio svolto. (2,3) +1(2,3)\,{+1}, (3,1) +1(3,1)\,{+1}, (0,1) −1(0,1)\,{-1}, (1,−1) −1(1,-1)\,{-1}, con x~=(x1,x2,1)\tilde x=(x_1,x_2,1) e w=(0,0,0)w=(0,0,0):

  • (2,3)(2,3): y wTx~=0y\,w^T\tilde x=0, errore, w=(2,3,1)w=(2,3,1);
  • (3,1)(3,1): +10+10, corretto;
  • (0,1)(0,1): −4-4, errore, w=(2,2,0)w=(2,2,0);
  • (1,−1)(1,-1): 00, errore, w=(1,3,−1)w=(1,3,-1);
  • seconda passata: (0,1)(0,1) dà −2-2, errore, w=(1,2,−2)w=(1,2,-2); (1,−1)(1,-1) dà 33, corretto;
  • terza passata: (0,1)(0,1) dà 00, errore, w=(1,1,−3)w=(1,1,-3);
  • quarta passata: nessun errore.

Totale: 55 aggiornamenti e la retta finale x1+x2=3x_1+x_2=3. Le rette intermedie ruotano a ogni errore.

Teorema di convergenza (Novikoff)

Teorema. Siano ∥xi∥≤R\lVert x_i\rVert\le R e w∗w^\ast con ∥w∗∥=1\lVert w^\ast\rVert=1 e yi w∗Txi≥γ>0y_i\,w^{\ast T}x_i\ge\gamma>0 per ogni ii. Allora il Perceptron fa al più (R/γ)2(R/\gamma)^2 errori.

Dimostrazione (idea).

  1. Il prodotto scalare con w∗w^\ast cresce di almeno γ\gamma a ogni errore: wt⋅w∗≥tγw_t\cdot w^\ast\ge t\gamma, per induzione.
  2. La norma cresce poco: ∥wt+1∥2=∥wt∥2+2y wt⋅x+∥x∥2≤∥wt∥2+R2\lVert w_{t+1}\rVert^2=\lVert w_t\rVert^2+2y\,w_t\cdot x+\lVert x\rVert^2\le\lVert w_t\rVert^2+R^2, perché il termine centrale è ≤0\le0 a ogni errore. Quindi ∥wt∥≤t R\lVert w_t\rVert\le\sqrt t\,R.
  3. Cauchy-Schwarz dà tγ≤wt⋅w∗≤∥wt∥≤t Rt\gamma\le w_t\cdot w^\ast\le\lVert w_t\rVert\le\sqrt t\,R, da cui t≤(R/γ)2t\le(R/\gamma)^2.

Esempio. Con γ=1/11\gamma=1/\sqrt{11} e R2=14R^2=14 il limite è 154154 errori; ne occorrono 55. Un margine piccolo richiede più errori; il bound non dipende da pp né da nn.

Limiti

Errori tipici:

  • usare le etichette {0,1}\{0,1\} nella regola w←w+yixiw\leftarrow w+y_i x_i: servono ±1\pm1;
  • dimenticare il bias, o la colonna di uni: il piano è costretto per l'origine;
  • confondere ww, normale al piano, con un punto del piano;
  • aspettarsi la convergenza con dati non separabili;
  • considerare il Perceptron equivalente alla regressione logistica: cambiano l'uscita e la regola di apprendimento.

Esercizi su questo argomento

Teoria collegata