Esercizi Teorici: Il Percettore e Reti Neurali
Questi esercizi ti consentono di verificare la comprensione approfondita dei concetti teorici della quarta unità (Reti Neurali - Dal Percettore al Deep Learning) prima di passare alla scrittura del codice in Python.
Esercizio 1: Calcolo Manuale di un Neurone Artificiale
Un neurone artificiale ha due ingressi e . I pesi associati sono rispettivamente e . Il bias è .
- A) Calcola la combinazione lineare (somma pesata) .
- B) Se la funzione di attivazione è la ReLU, quale sarà l’output del neurone?
- C) E se la funzione di attivazione fosse la Sigmoide, quale sarebbe l’output (approssimato a tre cifre decimali)? (Usa l’approssimazione )
Visualizza la risoluzione
Soluzione:
- A) Calcolo di $z$: $$ z = w_1 \cdot x_1 + w_2 \cdot x_2 + b = 0.8 \cdot 1.0 + (-1.2) \cdot 0.5 + (-0.1) $$ $$ z = 0.8 - 0.6 - 0.1 = 0.1 $$
- B) Con funzione di attivazione ReLU: $$ a = \max(0, z) = \max(0, 0.1) = 0.1 $$
- C) Con funzione di attivazione Sigmoide: $$ a = \sigma(z) = \frac{1}{1 + e^{-0.1}} \approx \frac{1}{1 + 0.905} = \frac{1}{1.905} \approx 0.525 $$
Esercizio 2: Calcolo di un Passo di Apprendimento del Percettore (Regola di Rosenblatt)
Considera un Percettore di Rosenblatt a due ingressi con funzione di attivazione a gradino (Heaviside step function: output 1 se , altrimenti 0). Lo stato attuale dei parametri è:
Il modello riceve il campione la cui etichetta reale è .
- A) Calcola la somma pesata e la predizione attuale .
- B) Calcola l’errore commesso .
- C) Applica la regola di aggiornamento di Rosenblatt per calcolare i nuovi valori dei pesi e del bias .
Visualizza la risoluzione
Soluzione:
- A) Somma pesata e predizione: $$ z = w_1 x_1 + w_2 x_2 + b = (0.3 \cdot 2.0) + (-0.4 \cdot 1.0) + 0.1 = 0.6 - 0.4 + 0.1 = 0.3 $$ Poiché $z = 0.3 \ge 0$, la funzione a gradino restituisce $\hat{y} = 1$.
- B) Calcolo dell'errore: $$ \text{Errore} = y - \hat{y} = 1 - 1 = 0 $$
- C) Aggiornamento dei parametri: Poiché l'errore è pari a 0 (la predizione era corretta), nessun peso viene modificato: $$ w_1' = 0.3, \quad w_2' = -0.4, \quad b' = 0.1 $$
Esercizio 3: Teoria dei Limiti e Logica del Percettore
Il Percettore semplice di Rosenblatt è in grado di classificare correttamente solo problemi che sono linearmente separabili.
- A) Spiega cosa significa “linearmente separabile” in uno spazio a due dimensioni.
- B) Quale porta logica elementare (tra AND, OR, XOR) non è linearmente separabile e di conseguenza non può essere appresa da un singolo Percettore? Spiega il perché.
- C) Quale conseguenza storica ebbe la dimostrazione di questo limite da parte di Minsky e Papert nel 1969?
Visualizza la risposta corretta
Risposta:
- A) In due dimensioni, un problema è linearmente separabile se è possibile tracciare una linea retta sul piano cartesiano che separi completamente tutti i punti appartenenti alla classe 0 da quelli della classe 1.
- B) La porta logica XOR (OR esclusivo) non è linearmente separabile. Sul piano cartesiano:
- Classe 0: $(0,0)$ e $(1,1)$
- Classe 1: $(0,1)$ e $(1,0)$
- C) Poiché all'epoca non si conosceva un algoritmo matematico per addestrare reti composte da più strati (la Backpropagation fu resa celebre solo nel 1986), la dimostrazione provocò il blocco dei finanziamenti alla ricerca, aprendo il primo Inverno dell'AI (AI Winter).
Esercizio 4: Calcolo Aritmetico su Epoche, Batch e Iterazioni
Un dataset di visione artificiale contiene immagini di addestramento. Si decide di addestrare una rete neurale impostando un batch size di per un totale di epoche.
- A) Quante iterazioni (aggiornamenti dei pesi) vengono eseguite durante 1 singola epoca? (Arrotonda per eccesso all’intero più vicino se l’ultimo batch è incompleto)
- B) Quanti aggiornamenti complessivi dei pesi verranno eseguiti al termine dell’intero addestramento ( epoche)?
- C) Se decidiamo di raddoppiare la dimensione del batch portandola a , il numero di iterazioni per epoca aumenterà o diminuirà? Perché?
Visualizza la risoluzione
Soluzione:
- A) Iterazioni per epoca: $$ \frac{60\,000 \text{ campioni}}{128 \text{ campioni per batch}} = 468.75 \implies \mathbf{469 \text{ iterazioni per epoca}} $$ (468 batch completi da 128 immagini più 1 ultimo batch residuo da 96 immagini).
- B) Iterazioni complessive in 25 epoche: $$ 469 \text{ iterazioni/epoca} \times 25 \text{ epoche} = \mathbf{11\,725 \text{ iterazioni totali}} $$
- C) Con batch size = 256: $$ \frac{60\,000}{256} = 234.375 \implies \mathbf{235 \text{ iterazioni per epoca}} $$ Il numero di iterazioni **si dimezza**. Un batch più grande elabora più dati contemporaneamente (sfruttando meglio il parallelismo delle GPU), producendo stime del gradiente più stabili ma riducendo il numero di volte in cui i pesi vengono aggiornati durante un'epoca.
Esercizio 5: Calcolo Matriciale di un MLP a Due Strati (Forward Pass)
Considera una piccola rete MLP con:
-
Vettore di Input ():
-
Strato Nascosto (2 neuroni con attivazione ReLU):
-
Strato di Output (1 neurone con attivazione Sigmoide):
-
A) Calcola la combinazione lineare .
-
B) Calcola le attivazioni nascoste .
-
C) Calcola l’uscita e la predizione finale . (Usa )
Visualizza la risoluzione
Soluzione:
- A) Calcolo di $z^{(1)}$ (Strato Nascosto): $$ z_1^{(1)} = (2 \cdot 0.5) + (-1 \cdot 1.0) + 0.1 = 1.0 - 1.0 + 0.1 = 0.1 $$ $$ z_2^{(1)} = (2 \cdot -0.2) + (-1 \cdot 0.4) + (-0.3) = -0.4 - 0.4 - 0.3 = -1.1 $$ Quindi $z^{(1)} = [0.1, -1.1]$.
- B) Attivazione con ReLU ($h = \max(0, z)$): $$ h_1 = \max(0, 0.1) = 0.1 $$ $$ h_2 = \max(0, -1.1) = 0.0 $$ Quindi il vettore delle attivazioni è $h = [0.1, 0.0]$. *(Il secondo neurone è rimasto spento)*.
- C) Calcolo dell'Output Finale: $$ z^{(2)} = (h_1 \cdot 0.8) + (h_2 \cdot -1.5) + 0.2 = (0.1 \cdot 0.8) + (0.0 \cdot -1.5) + 0.2 = 0.08 + 0 + 0.2 = 0.28 $$ Applicando la Sigmoide: $$ \hat{y} = \sigma(0.28) = \frac{1}{1 + e^{-0.28}} \approx \frac{1}{1 + 0.756} = \frac{1}{1.756} \approx \mathbf{0.569} $$
Esercizio 6: La Funzione Softmax per Classificazione Multi-classe
Una rete neurale per il riconoscimento di 3 specie di fiori emette, prima dell’attivazione finale, i seguenti tre punteggi grezzi (logit):
(Dati: , , )
- A) Calcola la probabilità associata a ciascuna delle tre classi applicando la formula di Softmax:
- B) Verifica che la somma delle tre probabilità sia pari al ().
- C) Quale specie verrà scelta come predizione finale dal modello?
Visualizza la risoluzione
Soluzione:
- A) Calcolo della somma degli esponenziali: $$ \text{Somma} = e^{2.0} + e^{1.0} + e^{0.0} \approx 7.39 + 2.72 + 1.00 = 11.11 $$ Probabilità per ciascuna classe: $$ P(\text{Classe 1}) = \frac{7.39}{11.11} \approx \mathbf{0.665} \quad (66.5\%) $$ $$ P(\text{Classe 2}) = \frac{2.72}{11.11} \approx \mathbf{0.245} \quad (24.5\%) $$ $$ P(\text{Classe 3}) = \frac{1.00}{11.11} \approx \mathbf{0.090} \quad (9.0\%) $$
- B) Verifica della somma: $$ 0.665 + 0.245 + 0.090 = \mathbf{1.000} \quad (100\%) $$
- C) Predizione finale: Il modello assegna il campione alla **Classe 1**, avendo ottenuto la probabilità più alta ($66.5\%$).
Esercizio 7: La Regola della Catena (Chain Rule) e la Backpropagation
Spiega in quale fase dell’apprendimento di una rete neurale si applica la Regola della Catena (Chain Rule) delle derivate e perché essa è di fondamentale importanza per l’addestramento degli strati nascosti.
Visualizza la risposta corretta
Risposta: La Regola della Catena si applica durante la fase di Retropropagazione (Backpropagation). È fondamentale perché i neuroni negli strati nascosti (intermedi) non hanno un errore direttamente misurabile rispetto al target finale (non sappiamo a priori quale valore esatto dovrebbe assumere un neurone interno). La regola della catena permette di calcolare la derivata parziale dell'errore finale rispetto a qualsiasi peso interno $w$, "scomponendola" nel prodotto delle derivate degli strati a valle: $$ \frac{\partial \mathcal{L}}{\partial w_{\text{nascosto}}} = \frac{\partial \mathcal{L}}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z_{\text{out}}} \cdot \frac{\partial z_{\text{out}}}{\partial h} \cdot \frac{\partial h}{\partial z_{\text{nas}}} \cdot \frac{\partial z_{\text{nas}}}{\partial w_{\text{nascosto}}} $$ In questo modo l'errore calcolato all'uscita viene retropropagato fino al primissimo strato di pesi, rendendone possibile la correzione mirata.
Esercizio 8: Perché il Feature Scaling è Obbligatorio nelle Reti Neurali?
Confronta il funzionamento di un Albero di Decisione con quello di una Rete Neurale per spiegare perché la scalatura preliminare delle variabili (es. con StandardScaler) è facoltativa negli alberi ma assolutamente indispensabile nelle reti neurali.
Visualizza la risposta corretta
Risposta:
- Negli Alberi di Decisione: Ogni nodo esegue un test su una sola feature alla volta (es.
if età > 30oppureif stipendio > 50.000). Le feature non vengono mai sommate tra loro né moltiplicate per pesi numerici condivisi. Di conseguenza, l'ordine di grandezza non influenza minimamente la posizione ottimale del taglio. - Nelle Reti Neurali: Tutte le feature di input $x_1, x_2, \dots, x_n$ vengono sommate all'interno della stessa combinazione lineare $z = w_1 x_1 + w_2 x_2 + b$. Se una feature ha valori molto grandi (es. stipendio $50\,000$) e un'altra valori piccoli (es. età $0.35$), i gradienti associati alla prima variabile domineranno completamente l'aggiornamento dei pesi, deformando lo spazio dell'errore e provocando forti oscillazioni numeriche che rallentano o impediscono la convergenza della discesa del gradiente.