Generato con NotebookLM
Se i neuroni MCP erano interruttori logici fissi, il Percettrone, introdotto da Frank Rosenblatt nel 1958, rappresenta un passo cruciale per le reti neurali artificiali: è un modello capace di apprendere da esempi. Immaginalo come un bimbo che impara a distinguere tra due categorie (ad esempio, mele e arance) solo guardando diverse immagini e correggendo i propri errori di giudizio. Come funziona?
Input Ponderati: Simile ai neuroni MCP, riceve input (nel simulatore, le coordinate x1 e x2 di un punto, che possono corrispondere nel caso illustrato nel libro a forrma e colore). Ogni input ha un peso (w1,w2) che ne determina l'importanza. Sia per gli input che per i pesi, a differenza del Neurone MCP, questi posso essere anche valori decimali lungo un continuum.
Bias: C'è un input speciale, sempre attivo (valore 1), chiamato bias. Anche lui ha un peso (w0) e agisce come una sorta di "regolazione" indipendente dagli input specifici, aiutando a spostare la soglia di decisione.
Somma Pesata: Il Percettrone calcola la somma di tutti gli input moltiplicati per i loro pesi: somma=(w1*x1)+(w2*x2)+w0.
Attivazione a Gradino: Applica una semplice regola di decisione (funzione di attivazione a gradino): se la somma ≥ 0, l'output è 1 (appartiene alla Classe 1); altrimenti, l'output è 0 (appartiene alla Classe 0). Geometricamente, questa regola definisce una linea retta (o un iperpiano in più dimensioni) che separa lo spazio degli input in due regioni.
Apprendimento dall'Errore: Qui sta la magia! Se il Percettrone classifica un punto in modo errato, aggiusta i suoi pesi e il bias per cercare di fare meglio la prossima volta. L'entità dell'aggiustamento dipende da:
L'errore commesso (la differenza tra la classe corretta e quella predetta).
Il valore degli input che hanno causato l'errore.
Un parametro chiamato Learning Rate (tasso di apprendimento), che controlla quanto "grandi" devono essere questi aggiustamenti.
Il Percettrone è quindi un classificatore binario lineare: impara a tracciare una linea retta per separare dati appartenenti a due classi diverse.
Qui entra in gioco un concetto fondamentale: la separabilità lineare (o "statistica" nel contesto dell'apprendimento da campioni).
Dati Linearmente Separabili: Un insieme di dati è linearmente separabile se esiste almeno una linea retta (in 2D, come nel simulatore) che può dividere perfettamente i punti delle due classi. Immagina di poter tracciare una riga su un foglio che separi tutti i punti rossi da tutti i punti verdi.
Dati Non Linearmente Separabili: Se non esiste nessuna linea retta in grado di fare questa separazione perfetta, i dati non sono linearmente separabili. L'esempio classico è il problema XOR (OR Esclusivo), dove le classi sono disposte in modo tale che qualsiasi linea retta tu tracci, finirà per classificare erroneamente almeno qualche punto.
Il Teorema di Convergenza del Percettrone: Rosenblatt dimostrò un teorema importantissimo: Se (e solo se) i dati di addestramento sono linearmente separabili, l'algoritmo di apprendimento del Percettrone è garantito a trovare, in un numero finito di passi, una combinazione di pesi e bias (cioè una linea separatrice) che classifica correttamente tutti i punti.
Cosa significa per il simulatore?
Quando usi il pulsante "Dati Sep.", stai dando al Percettrone un problema che può risolvere. Osserverai che, dopo un certo numero di epoche (passaggi attraverso tutti i dati), la linea blu si stabilizzerà e il numero di errori nel grafico scenderà a zero. Ha trovato la soluzione!
Quando usi il pulsante "Dati Non Sep." (che probabilmente genera un pattern tipo XOR), stai dando al Percettrone un problema impossibile da risolvere con una singola linea retta. Vedrai che la linea blu continuerà a muoversi ("oscillare"), cercando disperatamente la migliore approssimazione possibile, ma il numero di errori non scenderà mai a zero in modo stabile. L'algoritmo non converge.
Questa è stata una scoperta cruciale, evidenziando sia la potenza che i limiti del Percettrone e spingendo la ricerca verso modelli più complessi (come le reti neurali multistrato) capaci di apprendere separazioni non lineari.
Ecco come interagire con il simulatore:
1. Generazione dei Dati:
Dati Sep. (Pulsante Verde): Genera un nuovo set di punti casuali che possono essere separati da una linea retta. I punti verdi appartengono a una classe (es. 1), i rossi all'altra (es. 0).
Dati Non Sep. (Pulsante Rosso): Genera un nuovo set di punti in una configurazione tipo XOR, che non può essere separata perfettamente da una singola linea retta.
2. Controlli dell'Addestramento:
Inizia / Riprendi (Pulsante Blu con ▶): Avvia l'addestramento del Percettrone sui dati generati o lo riprende se era in pausa.
Pausa (Pulsante Giallo con ||): Mette in pausa l'addestramento automatico (attivo solo se Auto Run è selezionato e l'addestramento è in corso).
Passo Succ. / Un'Epoca (Pulsante Blu con ▶|):
Se Step Mode è attivo: Esegue l'addestramento per un singolo punto dati, aggiornando i pesi se necessario e passando al punto successivo. Utile per vedere l'apprendimento in dettaglio.
Se Step Mode è disattivo: Esegue un'intera epoca di addestramento (un passaggio completo su tutti i dati).
Reset (Pulsante Grigio con ↺): Ferma l'addestramento, reimposta i pesi e il bias a valori casuali iniziali e cancella la cronologia degli errori. I dati generati rimangono.
3. Impostazioni (Settings):
Learning Rate (Slider): Controlla quanto velocemente il Percettrone impara (quanto grandi sono gli aggiustamenti ai pesi/bias dopo un errore). Valori più alti possono velocizzare l'apprendimento (se possibile) ma rischiano di far "oscillare" la linea; valori bassi sono più stabili ma più lenti. Il valore numerico è mostrato accanto.
Epoche Max (Slider): Imposta il numero massimo di epoche (passaggi completi sui dati) che l'algoritmo eseguirà prima di fermarsi, anche se non ha trovato una soluzione perfetta (utile per dati non separabili).
4. Opzioni (Options):
Auto Run (Checkbox): Se selezionata, premendo Inizia, l'addestramento procederà automaticamente epoca dopo epoca fino al raggiungimento delle Epoche Max o alla convergenza (0 errori), a meno che non venga messo in pausa. Se deselezionata, Inizia eseguirà solo un'epoca (o un passo se Step Mode è attivo).
Step Mode (Checkbox): Se selezionata, l'addestramento avanza solo un punto dati alla volta usando il pulsante Passo Succ.. Deseleziona automaticamente Auto Run. Ottimo per osservare l'impatto di ogni singolo punto.
Mostra Rete (Checkbox): Mostra o nasconde la visualizzazione grafica della rete neurale (input, bias, output, pesi).
5. Visualizzazioni:
Piano Cartesiano (Canvas):
Mostra i punti dati (verdi classe 1, rossi classe 0).
La linea blu rappresenta il confine di decisione attuale imparato dal Percettrone (w1x1+w2x2+w0=0).
In Step Mode, il punto dati attualmente in elaborazione è evidenziato con un contorno giallo.
In alto a sinistra, l'indicatore Epoca: X / Y | Errori: Z mostra l'epoca corrente, le epoche massime e gli errori nell'ultima epoca completata.
Se Step Mode è attivo, sotto il canvas appaiono i dettagli del punto corrente (coordinate, etichetta, somma pesata).
Rete Neurale (Se attiva):
Visualizza i neuroni di input (x1, x2), il neurone di bias (1) e il neurone di output (? o 1/0 o ✓/!).
Le linee rappresentano le connessioni. Vicino a ogni linea c'è il valore del peso corrispondente (w1, w2, w0/bias).
Il colore del peso e della linea indica il segno (Verde: positivo, Rosso: negativo).
Il valore del bias è mostrato anche numericamente sotto il suo neurone.
Grafico Errori (Sotto i controlli):
Appare dopo la prima epoca. Mostra l'andamento del numero di errori commessi in ciascuna epoca. L'asse X va da 0 alle Epoche Max impostate. L'asse Y si adatta al numero massimo di errori riscontrato. Se i dati sono separabili, vedrai questo grafico scendere a zero.
Dettagli Percettrone (Sotto i controlli, attivabile dal pannello info):
Mostra i valori numerici esatti dei pesi (w1, w2), del bias (w0), e l'equazione della linea di decisione calcolata.
6. Aiuto:
Aiuto (Pulsante Viola con ?): Apre una finestra modale con un riassunto dei controlli, delle visualizzazioni e del concetto di separabilità.
Un esempio numerico del processo di apprendimento
Ecco un esempio numerico passo dopo passo che simula un singolo ciclo di apprendimento del Percettrone, mostrando come vengono corretti i pesi e, in particolare, il bias.
Immaginiamo una situazione in cui il Percettrone deve imparare che un certo punto appartiene alla Classe 1, ma attualmente sbaglia e predice Classe 0.
1. La Situazione Iniziale (Setup)
Definiamo i parametri di partenza:
• Input (x1, x2): Coordinate del punto (2,3).
• Target (Etichetta reale): 1 (questo è il risultato corretto che vogliamo).
• Pesi attuali (w1, w2): 0.5 e −0.5.
• Bias attuale (w0): 0.2 (ricorda: l'input del bias è sempre 1).
• Learning Rate (Tasso di apprendimento): 0.1 (indica la "grandezza" del passo di correzione).
--------------------------------------------------------------------------------
2. Passo 1: La Previsione (Forward Pass)
Il Percettrone calcola la somma pesata per decidere. La formula è:
Somma=(w1⋅x1) + (w2⋅x2) + (w0⋅1).
Somma=(0.5⋅2)+(−0.5⋅3)+(0.2⋅1)
Somma=1.0−1.5+0.2=−0.3
Decisione: Poiché la somma (−0.3) è minore di 0, l'output del Percettrone è 0.
--------------------------------------------------------------------------------
3. Passo 2: Calcolo dell'Errore
Confrontiamo la previsione con la realtà.
• Realtà (Target): 1
• Previsione: 0
Errore = Target−Previsione =1−0 =+1
Poiché c'è un errore (positivo), il Percettrone deve aumentare i pesi per spingere la somma verso l'alto (verso i numeri positivi).
--------------------------------------------------------------------------------
La regola di correzione è: Nuovo peso = Vecchio peso + (learning rate × errore × input)
Quindi prendiamo ogni peso e aggiungiamo una correzione. La correzione dipende da:
learning rate (quanto correggiamo),
errore (quanto abbiamo sbagliato),
input (quanto “pesa” quell’ingresso nel caso specifico).
Vecchio w1 = 0,5
Correzione = 0,1 × 1 × 2 = 0,2
Nuovo w1 = 0,5 + 0,2 = 0,7
Vecchio w2 = -0,5
Correzione = 0,1 × 1 × 3 = 0,3
Nuovo w2 = -0,5 + 0,3 = -0,2
Il bias si aggiorna come un peso normale, ma usa un input sempre uguale a 1 (come un “interruttore sempre acceso”).
Vecchio w0 = 0,2
Correzione = 0,1 × 1 × 1 = 0,1
Nuovo w0 = 0,2 + 0,1 = 0,3
--------------------------------------------------------------------------------
5. Verifica: Cosa succede adesso?
Proviamo a ricalcolare la somma con i nuovi pesi (0.7,−0.2,0.3) per lo stesso punto (2,3):
Nuova Somma=(0.7⋅2)+(−0.2⋅3)+(0.3⋅1)
Nuova Somma=1.4−0.6+0.3=1.1
Risultato: La somma è ora 1.1 (maggiore di 0). L'output diventa 1. Il Percettrone ha imparato! La linea di decisione si è spostata (e ruotata) quanto basta per includere questo punto nella classe corretta.
Rilevamento Frodi (Comportamento d'acquisto)
Le banche analizzano i pattern di spesa per bloccare le carte di credito.
Variabile 1: Importo della transazione (Piccolo vs Grande).
Variabile 2: Frequenza delle transazioni (Rara vs Comune).
Spesso sono considerati Normali (Classe 1):
Piccole spese quotidiane frequenti (caffè, spesa).
Grandi spese rare (acquisto di un PC, una vacanza).
Sono considerati Anomali/Sospetti (Classe 0):
Piccole spese rarissime (potrebbe essere un test della carta da parte di un hacker).
Grandi spese frequentissime in un arco di tempo brevissimo (tentativo di svuotare il conto).