AI003

Introduzione all'Apprendimento Profondo

L'apprendimento profondo è un sottodominio dell'apprendimento automatico che si concentra sullo studio di rappresentazioni di caratteristiche complesse e gerarchiche da dati grezzi utilizzando reti neurali artificiali. Il corso copre i principi fondamentali, la matematica sottostante, i concetti di ottimizzazione (discesa del gradiente, retropropagazione), i moduli di rete (strati lineari, convoluzionali, di pooling) e le architetture comuni (CNN, RNN). Vengono illustrati applicazioni nel campo della visione artificiale, del trattamento del linguaggio naturale e dell'apprendimento per rinforzo. Gli studenti utilizzeranno la libreria PyTorch per implementare modelli e concluderanno un progetto finale su uno scenario del mondo reale.

5.0 Valutazione
512 Studenti

Panoramica del corso

📚 Riepilogo del contenuto

L'apprendimento profondo è un sottodominio dell'apprendimento automatico che si concentra sullo studio di rappresentazioni di caratteristiche complesse e gerarchiche da dati grezzi utilizzando reti neurali artificiali. Il corso copre i principi fondamentali, la matematica alla base, concetti di ottimizzazione (discesa del gradiente, retropropagazione), moduli di rete (strati lineari, convoluzionali, di pooling) e architetture comuni (CNN, RNN). Vengono illustrati applicazioni in ambito visione artificiale, elaborazione del linguaggio naturale e apprendimento per rinforzo. Gli studenti utilizzeranno la libreria deep learning PyTorch per l'implementazione e completeranno un progetto finale su uno scenario del mondo reale.

Breve riepilogo degli obiettivi fondamentali: padroneggiare la teoria dell'apprendimento profondo, implementare modelli con PyTorch, comprendere architetture specializzate (CNN, RNN, Transformer) e applicare questi concetti a visione artificiale, NLP e decisioni sequenziali.

🎯 Obiettivi di apprendimento

  1. Spiegare le basi matematiche e le tecniche di ottimizzazione fondamentali (Discesa del Gradiente, Retropropagazione) necessarie per addestrare reti neurali profonde.
  2. Utilizzare il framework deep learning PyTorch per implementare, addestrare e debuggare in modo efficiente architetture moderne di rete, sfruttando l'accelerazione CUDA e tecniche efficaci di gestione dei dati.
  3. Progettare e analizzare architetture specializzate, inclusi Reti Neurali Convolutionali (CNN) per dati immagine e il modello Transformer per dipendenze sequenziali.
  4. Applicare tecniche di apprendimento profondo per risolvere problemi pratici nei domini applicativi principali: Visione Artificiale, Elaborazione del Linguaggio Naturale e Apprendimento per Rinforzo.
  5. Valutare modelli in termini di robustezza, interpretabilità e equità etica, confrontando i punti di forza di vari paradigmi avanzati (es. Modelli Generativi, Apprendimento Semi-Supervisionato).

🔹 Lezione 1: Fondamenti dell'apprendimento profondo e ottimizzazione

Panoramica: Questa lezione introduttiva presenta i blocchi costruttivi fondamentali dell'apprendimento profondo. Cominciamo esaminando classificatori lineari, con particolare attenzione alla funzione Softmax e all'utilizzo della perdita Cross-Entropy per quantificare l'errore. A partire da questo, definiamo la struttura di una rete neurale feedforward basilare (Multi-Layer Perceptron), descrivendo il ruolo di pesi, bias e funzioni di attivazione non lineari (es. ReLU). L'enfasi principale si sposta verso il processo di ottimizzazione richiesto per addestrare queste reti altamente parametrizzate. Introduciamo il Gradient Descent (GD) come algoritmo di ottimizzazione principale, contrapponendone i requisiti computazionali a quelli del Stochastic Gradient Descent (SGD) e del Mini-batch GD. In modo cruciale, la lezione si conclude con una spiegazione dettagliata dell'algoritmo di retropropagazione, mostrando come la regola della catena del calcolo differenziale venga applicata in modo efficiente tramite grafi di calcolo per calcolare i gradienti necessari agli aggiornamenti dei pesi in tutte le layer.

Risultati di apprendimento:

  • Definire la struttura di una rete neurale feedforward basilare e spiegare la necessità di funzioni di attivazione non lineari (es. ReLU).
  • Formulare funzioni di perdita per la classificazione (es. Softmax e Cross-Entropy) e comprendere come quantifichino l'errore del modello.
  • Spiegare il funzionamento del Gradient Descent (GD) e distinguere tra le sue varianti (SGD, Mini-batch GD) in termini di convergenza ed efficienza computazionale.
  • Derivare l'algoritmo di retropropagazione usando la regola della catena e dimostrarne l'implementazione tramite grafi di calcolo per il calcolo dei gradienti.
  • Identificare i prerequisiti matematici chiave (algebra lineare e calcolo multivariato) necessari per comprendere l'ottimizzazione delle reti neurali.

🔹 Lezione 2: Implementazione pratica e strumenti per l'apprendimento profondo

Panoramica: Questa lezione passa dai concetti teorici a un'implementazione pronta per il prodotto utilizzando PyTorch, la libreria centrale del corso. Cominciamo con i fondamenti di PyTorch, descrivendo la struttura Tensor, l'utilizzo di CUDA per l'accelerazione GPU e la comprensione della differenziazione automatica tramite grafo dinamico di calcolo. Un focus critico sarà sulla gestione efficiente dei dati: introduciamo la classe Dataset di PyTorch per l'astrazione dei dati e il DataLoader per gestire grandi insiemi di dati, permettendo batching, shuffle e caricamento parallelo multi-processo. Infine, affrontiamo considerazioni pratiche per scalare l'addestramento, coprendo l'ottimizzazione della gestione della memoria, tecniche come l'accumulo dei gradienti e introduciamo i concetti fondamentali dell'addestramento distribuito (es. Parallelismo dei dati), necessari per lavorare con modelli che superano la capacità di una singola GPU.

Risultati di apprendimento:

  • Implementare operazioni fondamentali di deep learning usando Tensor di PyTorch e utilizzare le sue funzionalità di differenziazione automatica per calcolare i gradienti.
  • Progettare e implementare pipeline di dati efficienti usando le astrazioni Dataset e DataLoader di PyTorch per gestire input di dati su larga scala e in batch.
  • Configurare modelli e dati per l'addestramento su GPU abilitate a CUDA per accelerare significativamente il processo di addestramento e inferenza.
  • Spiegare il ruolo delle tecniche di ottimizzazione della memoria, come l'accumulo dei gradienti, e comprendere i concetti di base dell'addestramento distribuito per la scalabilità.

🔹 Lezione 3: Reti convoluzionali: Strati e architetture

Panoramica: Questa lezione introduce le Reti Neurali Convolutionali (CNN), il pilastro della moderna visione artificiale. Esploreremo approfonditamente i moduli fondamentali: lo strato convoluzionale e lo strato di pooling. Per lo strato convoluzionale, copriremo la matematica dell'operazione, includendo i ruoli di kernel (filtri), stride e padding, e discuteremo concetti chiave come la connettività locale e il condivisione dei parametri che rendono le CNN efficienti per i dati immagine ad alta dimensione. Distingueremo tra Max Pooling e Average Pooling e spiegheremo il loro ruolo cruciale nel ridimensionamento e nell'indurre invarianza alla traslazione. Infine, sintetizzeremo questi strati in architetture CNN complete e basilari, illustrando la transizione sequenziale tipica dai dati grezzi di pixel attraverso pile di estrazione gerarchica di caratteristiche fino a strati completamente connessi per la classificazione finale, utilizzando modelli classici come LeNet-5 come esempi rappresentativi.

Risultati di apprendimento:

  • Spiegare l'operazione matematica della convoluzione 2D, includendo come dimensione del filtro, stride e padding influenzano le dimensioni della mappa di caratteristiche in uscita.
  • Articolare i concetti di connettività locale e condivisione dei parametri e spiegare come contribuiscano all'efficienza ed efficacia delle CNN rispetto alle reti completamente connesse per i dati immagine.
  • Distinguere tra Max Pooling e Average Pooling e descrivere lo scopo primario degli strati di pooling nel ridimensionamento delle mappe di caratteristiche e nell'ottenimento dell'invarianza alla traslazione.
  • Progettare e analizzare un'architettura CNN basilare sequenziale composta da strati alternati di convoluzione, attivazione (ReLU), pooling e strati completamente connessi.

🔹 Lezione 4: Visione artificiale: Modelli avanzati e interpretazione

Panoramica: Questa lezione va oltre le CNN fondamentali (come AlexNet) per esplorare architetture profonde e altamente influenti utilizzate in compiti di visione artificiale all'avanguardia. Analizzeremo i principi progettuali e le innovazioni di modelli chiave, tra cui la profondità semplificata delle reti VGG, l'aggregazione multi-scala delle caratteristiche di Inception (GoogLeNet) e l'uso critico delle connessioni residue in ResNet per superare il problema del gradiente sparito in reti estremamente profonde. La seconda metà della lezione si concentra sul tema vitale dell'interpretabilità del modello e dell'intelligenza artificiale spiegabile (XAI). Gli studenti impareranno tecniche di visualizzazione, come l'ispezione delle attivazioni delle mappe di caratteristiche, e si immergeranno in metodi basati sui gradienti per la localizzazione. In particolare, copriremo meccanismo e implementazione della Class Activation Mapping (CAM) e della sua generalizzazione basata sui gradienti, Grad-CAM, che spiega visivamente le decisioni della rete evidenziando le regioni salienti nell'immagine di input.

Risultati di apprendimento:

  • Confrontare e contrapporre le innovazioni architettoniche fondamentali (es. connessioni residue, moduli inception) dei modelli VGG, GoogLeNet e ResNet.
  • Spiegare il ruolo e le sfide della scalabilità della profondità della rete, specificamente affrontando il problema della degradazione e come ResNet lo mitighi.
  • Dettagliare metodi fondamentali per la visualizzazione delle caratteristiche, inclusa l'ispezione delle attivazioni nei livelli intermedi e dei filtri appresi.
  • Illustrare il meccanismo teorico della Class Activation Mapping (CAM) e Grad-CAM per generare spiegazioni visive basate sul flusso di gradienti.
  • Applicare tecniche di interpretabilità per analizzare e diagnosticare il processo decisionale di CNN avanzate in compiti di classificazione.

🔹 Lezione 5: Reti ricorrenti e modellazione sequenziale

Panoramica: Questa lezione introduce le sfide legate al modellare dati strutturati, in particolare sequenze (es. testo, serie temporali), che violano l'assunzione di indipendenza comune nelle reti feedforward. Definiremo compiti di modellazione sequenziale, come traduzione automatica, riconoscimento vocale e previsione di serie temporali, sottolineando la necessità di un meccanismo per mantenere informazioni di stato. L'attenzione principale sarà rivolta all'architettura delle Reti Neurali Ricorrenti (RNN) tradizionali. Concetti chiave trattati includono il meccanismo di pesi condivisi, l'unfolding dei grafi di calcolo attraverso gli step temporali, il calcolo degli aggiornamenti dello stato nascosto (h_t) e la gestione di sequenze di input di lunghezza variabile. Esamineremo inoltre le principali limitazioni delle RNN basiche, ovvero la mancata capacità di catturare dipendenze a lungo termine a causa dei problemi di gradiente sparito ed esplosivo incontrati durante la retropropagazione nel tempo (BPTT).

Risultati di apprendimento:

  • Definire i dati strutturati (sequenze) e spiegare perché le reti Feedforward standard (FNN) sono inadeguate per modellare dipendenze sequenziali.
  • Descrivere l'architettura fondamentale di una RNN basilare, identificando componenti come lo stato nascosto e le matrici di pesi condivise.
  • Illustrare il processo di 'unfolding' di un grafo di calcolo RNN attraverso gli step temporali e discutere come le sequenze di input di lunghezza variabile vengano gestite.
  • Spiegare il meccanismo della retropropagazione nel tempo (BPTT) e analizzare i problemi di gradiente sparito ed esplosivo intrinseci all'addestramento di RNN tradizionali.

🔹 Lezione 6: Meccanismi di attenzione e architettura Transformer

Panoramica: Questa lezione offre un'analisi approfondita del cambiamento di paradigma introdotto dal paper "Attention Is All You Need", spostando la modellazione sequenziale oltre le Reti Neurali Ricorrenti (RNN) eliminando la ricorsività e basandosi esclusivamente sull'attenzione. Cominceremo stabilendo la base matematica del meccanismo di attenzione, focalizzandoci in particolare sull'attenzione a prodotto punto scalato utilizzando vettori Query (Q), Key (K) e Value (V). La lezione amplia poi questo concetto nel meccanismo di Attenzione Multi-Testa, spiegandone il ruolo nel catturare diverse dipendenze contestuali. L'attenzione principale sarà rivolta all'architettura completa del Transformer, analizzando la struttura delle stack Encoder e Decoder, incluse elementi cruciali come le connessioni residue, la normalizzazione per strato e l'essenziale Codifica Posizionale richiesta per mantenere le informazioni sequenziali. Infine, esaminiamo come il Transformer consenta una significativa parallelizzazione e il suo impatto rivoluzionario in campi come la Traduzione Automatica Neurale e i modelli linguistici pre-addestrati.

Risultati di apprendimento:

  • Definire lo scopo dei meccanismi di attenzione e spiegare come risolvano le limitazioni (es. dipendenze a lungo raggio, collo di bottiglia del processamento sequenziale) delle Reti Neurali Ricorrenti.
  • Dettagliare l'operazione matematica dell'attenzione a prodotto punto scalato, identificando accuratamente i ruoli dei vettori Query, Key e Value.
  • Descrivere la struttura generale del modello Transformer, differenziando tra le stack Encoder e Decoder e spiegando la funzione dell'Attenzione Multi-Testa e delle Reti Feed-Forward.
  • Spiegare la necessità e l'implementazione matematica della Codifica Posizionale all'interno dell'architettura Transformer, che è invariante per permutazione.
  • Analizzare i benefici computazionali (parallelizzazione) e la vasta applicabilità dell'architettura Transformer in compiti moderni di apprendimento profondo, citando modelli come BERT e GPT.

🔹 Lezione 7: Applicazioni dell'elaborazione del linguaggio naturale e embedding

Panoramica: Questa lezione si addentra in aspetti fondamentali e applicativi dell'apprendimento profondo per l'Elaborazione del Linguaggio Naturale (NLP). Cominciamo affrontando la necessità cruciale di rappresentazioni efficaci delle parole, passando da metodi sparsi a embedding densi appresi. Spiegheremo i meccanismi fondamentali di Word2Vec (Skip-gram e CBOW), evidenziando come il contesto generi rappresentazioni vettoriali ricche che catturano il significato semantico. Poi applicheremo questi concetti fondamentali a due compiti principali di NLP: Traduzione Automatica Neurale (NMT), utilizzando architetture encoder-decoder sequenza-a-sequenza e il ruolo critico dei meccanismi di attenzione nel gestire dipendenze lunghe e allineamenti; e Riconoscimento Automatico della Parola (ASR), esplorando come modelli profondi gestiscono sequenze temporali di dati acustici per generare output testuale. La discussione sottolineerà come embedding e architetture di apprendimento profondo sequenziale costituiscano la base dei moderni sistemi commerciali di NLP.

Risultati di apprendimento:

  • Spiegare i limiti delle rappresentazioni sparse delle parole (es. codifica one-hot) e giustificare la necessità di embedding vettoriali densi.
  • Descrivere i principi fondamentali e l'architettura di modelli come Word2Vec (Skip-gram/CBOW) utilizzati per apprendere rappresentazioni distribuite.
  • Tracciare i componenti principali (Encoder, Decoder, Attenzione) di un sistema moderno di Traduzione Automatica Neurale, contrapponendolo ai metodi tradizionali.
  • Analizzare le sfide intrinseche ai compiti sequenza-a-sequenza come NMT e ASR, in particolare riguardo alle lunghezze variabili di input e output.
  • Identificare come le architetture neurali vengano adattate per gestire ingressi audio nel contesto del Riconoscimento Automatico della Parola.

🔹 Lezione 8: Modelli generativi: VAE e Reti Generative Avversariali

Panoramica: Questa lezione introduce i due modelli generativi profondi moderni fondamentali: Variational Autoencoders (VAE) e Generative Adversarial Networks (GAN). Cominciamo con i VAE, descrivendone l'architettura — un encoder che mappa i dati su una distribuzione latente parametrica e un decoder che genera campioni. Una forte enfasi sarà posta sulla matematica alla base, in particolare sulla funzione obiettivo Evidence Lower Bound (ELBO), analizzando i ruoli della perdita di ricostruzione e del termine KL divergence per la regolarizzazione. Il fondamentale Trick di Riparametrizzazione, necessario per consentire il flusso dei gradienti attraverso il processo di campionamento, sarà spiegato approfonditamente. Poi passiamo alle GAN, definendo il gioco avversario a somma zero tra il generatore (G) e il discriminatore (D). La lezione copre la funzione minimax teorica, esplora come il discriminatore ottimale massimizza l'obiettivo e discute importanti sfide pratiche come il collasso dei modi e l'instabilità dell'addestramento. Infine, forniamo un confronto qualitativo, contrapponendo lo spazio latente interpretabile dei VAE a quella generalmente superiore fedeltà dei campioni delle GAN.

Risultati di apprendimento:

  • Distinguere tra modellazione discriminativa e generativa e spiegare lo scopo matematico di apprendere distribuzioni complesse dei dati.
  • Spiegare l'architettura di un Variational Autoencoder (VAE) e derivare la funzione obiettivo Evidence Lower Bound (ELBO).
  • Analizzare la necessità e la funzione del trick di riparametrizzazione nell'addestramento dei VAE per garantire un backpropagation efficace.
  • Descrivere il processo di addestramento di una Generative Adversarial Network (GAN) come un gioco minimax tra Generatore e Discriminatore.
  • Confrontare e contrapporre VAE e GAN in base alla qualità dei campioni, all'interpretabilità dello spazio latente e alle comuni sfide di addestramento come il collasso dei modi.

🔹 Lezione 9: Apprendimento profondo per rinforzo

Panoramica: Questa lezione introduce l'Apprendimento Profondo per Rinforzo (DRL) stabilendo il quadro fondamentale di decisione, il Processo Decisionale Markoviano (MDP). Definiremo il ciclo agente-ambiente, gli spazi di stato e azione, e l'obiettivo di massimizzare il ritorno atteso scontato. Verranno trattati concetti fondamentali dell'RL tradizionale, inclusi Funzioni di Valore e l'Equazione di Bellman Ottimale. La lezione poi passa al DRL, esplorando le sfide delle grandi spazi di stato e come le Deep Q-Networks (DQN) superino questo problema utilizzando reti neurali per l'approssimazione della funzione Q. Dettaglieremo le tecniche di stabilità essenziali per DQN, come l'esperienza replay e le reti target. Infine, contrasteremo i metodi basati sul valore con i metodi basati sulla politica, descrivendo l'intuizione matematica alla base dell'algoritmo REINFORCE per l'ottimizzazione diretta della politica e preparando il terreno per architetture più avanzate tipo Actor-Critic.

Risultati di apprendimento:

  • Formalizzare problemi di decisione sequenziale usando il framework del Processo Decisionale Markoviano (MDP), includendo definizioni di stato, azione, ricompensa e funzione di valore.
  • Spiegare il passaggio dall'apprendimento tabulare Q-learning alle Deep Q-Networks (DQN) e identificare le tecniche critiche (esperienza replay, reti target) usate per stabilizzare l'addestramento del DRL.
  • Differenziare fondamentalmente tra metodi basati sul valore (come DQN) e metodi basati sulla politica (come REINFORCE).
  • Descrivere la funzione obiettivo e l'intuizione matematica alla base del Teorema del Gradiente della Politica e la sua implementazione nell'algoritmo REINFORCE.
  • Contrapporre le applicazioni di metodi basati sul valore e sulla politica in scenari moderni di Deep RL.

🔹 Lezione 10: Paradigmi avanzati di apprendimento e intelligenza artificiale etica

Panoramica: Questa lezione introduce paradigmi avanzati di apprendimento profondo necessari per un'implementazione robusta e affronta implicazioni sociali critiche. Cominciamo esplorando le basi teoriche e le applicazioni pratiche dell'apprendimento profondo non supervisionato, concentrandonci su modelli come Autoencoders e Modelli Generativi quando utilizzati per l'apprendimento di rappresentazioni e rilevamento di anomalie. Successivamente, ci immergiamo nelle tecniche di Apprendimento Semi-Supervisionato (SSL), come il pseudo-etichettatura e la regolarizzazione della consistenza (es. \Pi-Model, MixMatch), fondamentali per sfruttare grandi quantità di dati non etichettati insieme a pochi esempi etichettati. La seconda parte principale della lezione esamina criticamente l'Intelligenza Artificiale Etica, dettagliando come la curazione dei dati e le scelte architetturali introducano Bias Algoritmici. Definiamo e analizziamo metriche chiave di equità (es. Equal Opportunity Difference, Demographic Parity) e discutiamo strategie efficaci di mitigazione, sottolineando l'importanza dell'interpretabilità del modello (XAI) e della responsabilità nei sistemi di apprendimento profondo ad alto impatto.

Risultati di apprendimento:

  • Distinguere tra apprendimento non supervisionato, semi-supervisionato e supervisionato standard e identificare scenari reali appropriati per ogni paradigma.
  • Descrivere la funzione e l'architettura di modelli non supervisionati chiave, come gli Autoencoders e il loro uso nella riduzione della dimensionalità o nell'apprendimento di rappresentazioni.
  • Spiegare il metodo delle tecniche moderne di apprendimento semi-supervisionato, inclusi i concetti di pseudo-etichettatura e regolarizzazione della consistenza.
  • Identificare e categorizzare le fonti principali di bias algoritmico introdotte durante il ciclo di vita dell'apprendimento profondo (acquisizione dei dati, modellazione, deployment).
  • Definire e confrontare metriche comuni di equità algoritmica (es. Equalized Odds) e discutere i compromessi intrinseci nelle strategie di mitigazione del bias.