sabato 22 febbraio 2025

Corso sulla Struttura dell’Intelligenza Artificiale: Mattoni matematici e computazionali


Mattoni matematici e computazionali

Destinatari: studenti universitari, autodidatti in AI, data scientist junior, insegnanti STEM
Prerequisiti: conoscenze base di algebra lineare, derivate, Python


🎯 Obiettivi del modulo

  • Comprendere le basi matematiche e computazionali che sottendono il funzionamento di una rete neurale.
  • Familiarizzare con vettori, matrici e tensori come strutture fondamentali nella rappresentazione dei dati e dei modelli.
  • Introdurre i concetti di calcolo differenziale automatico (autodiff) e computational graph.
  • Acquisire i primi strumenti pratici per lavorare con librerie come NumPy e PyTorch.
  • Costruire da zero una rete neurale semplice con forward pass e backpropagation.

🧱 Contenuti


1. 📐 Vettori, matrici e tensori: come ragiona il modello

  • Le reti neurali trattano input numerici come vettori (1D), matrici (2D) o tensori (nD).
  • Ogni livello di una rete effettua operazioni matriciali: moltiplicazioni, somme, funzioni di attivazione.
  • Il tensore è l’unità fondamentale: ad esempio, un batch di immagini RGB è un tensore 4D (batch, altezza, larghezza, canali).

📌 Esempio pratico:

  • Un input , un layer , output

✅ Competenze attese: interpretare il significato geometrico e computazionale di una rete come sequenza di trasformazioni lineari + non linearità.


2. 🔁 Differenziazione automatica e backpropagation

  • La funzione obiettivo (loss function) misura quanto il modello sbaglia: ad esempio MSE, cross-entropy.
  • Il calcolo del gradiente serve a capire come modificare i pesi per ridurre la loss.
  • Backpropagation sfrutta la regola della catena per aggiornare ogni peso in funzione del gradiente della loss rispetto a quel peso.

🔬 Differenziazione automatica:

  • Metodo che permette di calcolare derivate esatte senza scriverle manualmente.
  • Le librerie moderne (es. PyTorch) costruiscono un computational graph e poi lo attraversano all’indietro per calcolare i gradienti (reverse-mode autodiff).

📌 Concetto chiave: l’ottimizzazione nei modelli neurali è possibile solo grazie alla propagazione del gradiente lungo il grafo computazionale.


3. 🧠 Struttura dei dati nei modelli neurali

  • I dati (immagini, testo, suono) devono essere numerizzati e organizzati in tensori.
  • Input → hidden layers → output: ogni livello produce una trasformazione.
  • I pesi sono rappresentati come matrici/tensori e memorizzati come parametri addestrabili.
  • Le architetture più complesse (CNN, RNN, Transformer) si costruiscono su questi elementi base.

📌 Focus: ciò che cambia è l’organizzazione e la connettività, ma le operazioni sono sempre su tensori.


4. ⚙️ Introduzione a NumPy e PyTorch

✅ NumPy:

  • Libreria fondamentale per calcolo scientifico in Python.
  • Operazioni su array, broadcasting, algebra lineare.

✅ PyTorch:

  • Costruito su tensori simili a NumPy ma con autodiff e GPU support.
  • Ogni Tensor tiene traccia della sua storia computazionale se requires_grad=True.
  • torch.autograd permette di eseguire backprop automaticamente.

📌 Esempio:

import torch

x = torch.tensor([1.0, 2.0], requires_grad=True)
y = x ** 2 + 3 * x
z = y.sum()
z.backward()

print(x.grad)  # output: gradiente di z rispetto a x

🧠 Computational Graph

  • Ogni operazione crea un nodo nel grafo.
  • PyTorch costruisce il grafo in tempo reale ("define-by-run").

🧪 LAB: Implementare una rete neurale semplice da zero

Obiettivo: costruire un modello con:

  • 1 layer input
  • 1 layer hidden (ReLU)
  • 1 output (softmax o lineare)

Attività step-by-step:

  1. Inizializzazione pesi e bias con NumPy
  2. Forward pass: calcolo output
  3. Loss function: MSE o Cross-Entropy
  4. Backpropagation manuale: calcolo derivata, aggiornamento parametri
  5. Addestramento su un dataset semplice (es. XOR, AND, o dataset sintetico)
  6. Plot della loss nel tempo

📌 Sfida bonus: reimplementare la stessa rete usando PyTorch e confrontare risultati, performance e semplicità del codice.


📎 Materiali forniti

  • Slide PDF con tutti i concetti e formule
  • Foglio guida per il LAB (istruzioni + codice base)
  • Notebook Colab con versione PyTorch + visualizzazione computational graph
  • Dataset di test (XOR, MNIST semplificato)

🧩 Conclusione

I tensori sono i mattoni del ragionamento computazionale, le derivate sono la spinta dell’apprendimento, e librerie come PyTorch sono i mezzi con cui possiamo esplorare e costruire reti neurali. In questo modulo lo studente passa da concetti astratti a realizzazione pratica, unendo teoria matematica, logica computazionale e coding efficace.


🧾 Vuoi che converta il modulo in:

  • Codice HTML per Blogger
  • Scheda didattica PDF/Word
  • Notebook Jupyter (Colab ready)

Fammi sapere, posso fornirti tutto il materiale pronto all’uso.

Nessun commento:

Posta un commento

Come sopravvivere con l'informatica: Neurosimulators: deep learning ispirato al cervello

  📌 Neurosimulators: deep learning ispirato al cervello La prossima rivoluzione dell’intelligenza artificiale potrebbe arrivar...