ID:
SCC1174
Durata (ore):
48
CFU:
6
SSD:
INFORMATICA
Informatica
Anno:
2026
Dati Generali
Periodo di attività
Secondo Semestre (22/02/2027 - 11/06/2027)
Syllabus
Obiettivi Formativi
Il corso si propone di fornire agli studenti una comprensione solida e aggiornata del Deep Learning, combinando fondamenti teorici e competenze pratiche per l’analisi di dati complessi come immagini e testo. Particolare attenzione è dedicata agli strumenti e alle metodologie moderne ampiamente adottati nella ricerca e nell’industria.
Al termine del corso, gli studenti avranno sviluppato una buona padronanza del linguaggio di programmazione Python e delle principali librerie e framework, come PyTorch e NumPy, per implementare, addestrare e valutare modelli di reti neurali. Le attività pratiche, svolte in ambienti come i Jupyter notebook, consentiranno loro di sperimentare diverse architetture e strategie di addestramento.
Gli studenti acquisiranno la capacità di gestire e pre-processare i dataset, affrontando problematiche comuni come dati mancanti, sbilanciamento delle classi, normalizzazione e data augmentation. Verranno introdotte tecniche di pre-processing sia per dati di immagine sia per dati testuali, così da permettere un approccio strutturato e autonomo a sorgenti di dati eterogenee.
Il corso fornisce una chiara comprensione dei principi fondamentali del deep learning, tra cui le architetture di reti neurali, l’ottimizzazione basata sul gradiente, le funzioni di loss, i grafi computazionali e la differenziazione automatica.
A partire da queste basi, gli studenti studieranno e implementeranno architetture chiave come reti completamente connesse, reti neurali convoluzionali, reti residue, autoencoder e modelli basati su transformer, imparando a selezionare le soluzioni più appropriate in funzione del dominio applicativo.
Vengono inoltre presentati argomenti avanzati, tra cui i meccanismi di attenzione, le architetture transformer, il transfer learning e un’introduzione ai modelli generativi, per offrire una panoramica degli approcci allo stato dell’arte in ambiti come la computer vision e il natural language processing.
Una forte enfasi è posta sulla risoluzione pratica dei problemi. Gli studenti impareranno a progettare pipeline complete di deep learning, a valutare le prestazioni dei modelli e ad analizzare criticamente i risultati, individuandone limiti e possibili miglioramenti.
Infine, il corso promuove competenze trasversali, tra cui il pensiero critico, la capacità di esplorare autonomamente nuove tecniche, la capacità di leggere e comprendere la letteratura scientifica e la comunicazione efficace dei risultati tecnici mediante un linguaggio scientifico appropriato.
Al termine del corso, gli studenti avranno sviluppato una buona padronanza del linguaggio di programmazione Python e delle principali librerie e framework, come PyTorch e NumPy, per implementare, addestrare e valutare modelli di reti neurali. Le attività pratiche, svolte in ambienti come i Jupyter notebook, consentiranno loro di sperimentare diverse architetture e strategie di addestramento.
Gli studenti acquisiranno la capacità di gestire e pre-processare i dataset, affrontando problematiche comuni come dati mancanti, sbilanciamento delle classi, normalizzazione e data augmentation. Verranno introdotte tecniche di pre-processing sia per dati di immagine sia per dati testuali, così da permettere un approccio strutturato e autonomo a sorgenti di dati eterogenee.
Il corso fornisce una chiara comprensione dei principi fondamentali del deep learning, tra cui le architetture di reti neurali, l’ottimizzazione basata sul gradiente, le funzioni di loss, i grafi computazionali e la differenziazione automatica.
A partire da queste basi, gli studenti studieranno e implementeranno architetture chiave come reti completamente connesse, reti neurali convoluzionali, reti residue, autoencoder e modelli basati su transformer, imparando a selezionare le soluzioni più appropriate in funzione del dominio applicativo.
Vengono inoltre presentati argomenti avanzati, tra cui i meccanismi di attenzione, le architetture transformer, il transfer learning e un’introduzione ai modelli generativi, per offrire una panoramica degli approcci allo stato dell’arte in ambiti come la computer vision e il natural language processing.
Una forte enfasi è posta sulla risoluzione pratica dei problemi. Gli studenti impareranno a progettare pipeline complete di deep learning, a valutare le prestazioni dei modelli e ad analizzare criticamente i risultati, individuandone limiti e possibili miglioramenti.
Infine, il corso promuove competenze trasversali, tra cui il pensiero critico, la capacità di esplorare autonomamente nuove tecniche, la capacità di leggere e comprendere la letteratura scientifica e la comunicazione efficace dei risultati tecnici mediante un linguaggio scientifico appropriato.
Prerequisiti
Il corso presuppone una conoscenza di base del machine learning e dell’intelligenza artificiale, tipicamente acquisita in un corso del primo anno di laurea magistrale (ad esempio Sistemi Intelligenti), comprendente concetti quali apprendimento supervisionato, valutazione dei modelli e ottimizzazione di base.
Gli studenti dovrebbero avere esperienza con almeno un linguaggio di programmazione; è fortemente consigliata una conoscenza operativa di Python, incluse le strutture dati di base e librerie come NumPy.
Sono inoltre richieste competenze matematiche di base in algebra lineare, calcolo e probabilità, necessarie per comprendere il funzionamento dell’addestramento e dell’ottimizzazione dei modelli di deep learning.
Poiché il corso prevede attività pratiche, gli studenti dovrebbero disporre di un computer portatile personale in grado di eseguire un ambiente Python e framework come PyTorch. La familiarità con strumenti come i Jupyter notebook è utile ma non obbligatoria. Un’esperienza pregressa nell’analisi dei dati o in corsi introduttivi di machine learning costituisce un ulteriore vantaggio.
Gli studenti dovrebbero avere esperienza con almeno un linguaggio di programmazione; è fortemente consigliata una conoscenza operativa di Python, incluse le strutture dati di base e librerie come NumPy.
Sono inoltre richieste competenze matematiche di base in algebra lineare, calcolo e probabilità, necessarie per comprendere il funzionamento dell’addestramento e dell’ottimizzazione dei modelli di deep learning.
Poiché il corso prevede attività pratiche, gli studenti dovrebbero disporre di un computer portatile personale in grado di eseguire un ambiente Python e framework come PyTorch. La familiarità con strumenti come i Jupyter notebook è utile ma non obbligatoria. Un’esperienza pregressa nell’analisi dei dati o in corsi introduttivi di machine learning costituisce un ulteriore vantaggio.
Metodi didattici
Il corso si articola in 48 ore di lezioni frontali che combinano spiegazioni teoriche e sessioni pratiche applicative, permettendo agli studenti di mettere progressivamente in pratica i concetti introdotti. Le attività pratiche rivestono un ruolo centrale e comprendono l’implementazione guidata di modelli e l’analisi dei risultati, favorendo un ambiente di apprendimento attivo.
Tutte le attività vengono svolte utilizzando Python, con strumenti interattivi come IPython e i Jupyter notebook, che consentono di integrare codice, visualizzazioni e spiegazioni in un flusso di lavoro riproducibile. Durante il corso, gli studenti vengono introdotti alle principali librerie, tra cui PyTorch e NumPy, in funzione degli argomenti trattati.
È inoltre previsto un supporto continuo da parte del docente, che fornirà indicazioni per la risoluzione dei problemi, chiarimenti sui concetti teorici e assistenza durante le esercitazioni pratiche.
Tutte le attività vengono svolte utilizzando Python, con strumenti interattivi come IPython e i Jupyter notebook, che consentono di integrare codice, visualizzazioni e spiegazioni in un flusso di lavoro riproducibile. Durante il corso, gli studenti vengono introdotti alle principali librerie, tra cui PyTorch e NumPy, in funzione degli argomenti trattati.
È inoltre previsto un supporto continuo da parte del docente, che fornirà indicazioni per la risoluzione dei problemi, chiarimenti sui concetti teorici e assistenza durante le esercitazioni pratiche.
Verifica Apprendimento
La verifica dell’apprendimento si articola in due componenti: una prova teorica e un progetto, entrambe finalizzate a valutare sia la comprensione degli argomenti trattati durante il corso sia la loro applicazione pratica.
La prova teorica viene somministrata tramite la piattaforma Moodle e comprende domande sui principali concetti affrontati durante le lezioni, con l’obiettivo di verificare sia le conoscenze sia le capacità di ragionamento nell’ambito del deep learning. Ciascuna domanda contribuisce in egual misura al punteggio complessivo della prova teorica; il punteggio attribuito a ogni domanda è definito in modo tale che la somma dei punteggi conseguiti nella prova corrisponda a un voto espresso in trentesimi.
Il progetto, assegnato dal docente, riguarda uno o più temi del corso e richiede l’implementazione di modelli di deep learning. Gli studenti possono applicare modelli esistenti a nuovi dataset, con l’obiettivo di ottenere risultati competitivi, oppure proporre e implementare miglioramenti a modelli esistenti per raggiungere prestazioni comparabili o superiori.
Il progetto deve essere accompagnato da una relazione che descriva il problema affrontato, lo stato dell’arte di riferimento, la metodologia adottata e i risultati ottenuti. Gli studenti sono tenuti a motivare le proprie scelte riguardo ai modelli utilizzati, ai dati impiegati e agli esperimenti svolti. È fortemente incoraggiato l’uso di un Jupyter notebook (o della sua esportazione in HTML) come forma di relazione strutturata e riproducibile.
Il progetto deve essere consegnato circa cinque giorni prima della data d’esame; in caso contrario, potrà essere presentato in un appello successivo. La discussione del progetto potrà svolgersi dopo la prova teorica.
Il voto finale è calcolato come media aritmetica tra il punteggio della prova teorica (50%) e quello del progetto (50%). Non è previsto un punteggio minimo da raggiungere in ciascuna delle due componenti, fermo restando che l’esame si considera superato con un voto finale non inferiore a 18/30.
La lode può essere attribuita agli studenti che raggiungono il punteggio massimo di 30/30 e dimostrano una qualità eccezionale del lavoro progettuale, in termini di originalità, rigore metodologico, approfondimento critico o particolare significatività dei risultati ottenuti.
La prova teorica viene somministrata tramite la piattaforma Moodle e comprende domande sui principali concetti affrontati durante le lezioni, con l’obiettivo di verificare sia le conoscenze sia le capacità di ragionamento nell’ambito del deep learning. Ciascuna domanda contribuisce in egual misura al punteggio complessivo della prova teorica; il punteggio attribuito a ogni domanda è definito in modo tale che la somma dei punteggi conseguiti nella prova corrisponda a un voto espresso in trentesimi.
Il progetto, assegnato dal docente, riguarda uno o più temi del corso e richiede l’implementazione di modelli di deep learning. Gli studenti possono applicare modelli esistenti a nuovi dataset, con l’obiettivo di ottenere risultati competitivi, oppure proporre e implementare miglioramenti a modelli esistenti per raggiungere prestazioni comparabili o superiori.
Il progetto deve essere accompagnato da una relazione che descriva il problema affrontato, lo stato dell’arte di riferimento, la metodologia adottata e i risultati ottenuti. Gli studenti sono tenuti a motivare le proprie scelte riguardo ai modelli utilizzati, ai dati impiegati e agli esperimenti svolti. È fortemente incoraggiato l’uso di un Jupyter notebook (o della sua esportazione in HTML) come forma di relazione strutturata e riproducibile.
Il progetto deve essere consegnato circa cinque giorni prima della data d’esame; in caso contrario, potrà essere presentato in un appello successivo. La discussione del progetto potrà svolgersi dopo la prova teorica.
Il voto finale è calcolato come media aritmetica tra il punteggio della prova teorica (50%) e quello del progetto (50%). Non è previsto un punteggio minimo da raggiungere in ciascuna delle due componenti, fermo restando che l’esame si considera superato con un voto finale non inferiore a 18/30.
La lode può essere attribuita agli studenti che raggiungono il punteggio massimo di 30/30 e dimostrano una qualità eccezionale del lavoro progettuale, in termini di originalità, rigore metodologico, approfondimento critico o particolare significatività dei risultati ottenuti.
Contenuti
Il corso è strutturato in tre parti principali, che guidano progressivamente gli studenti dagli strumenti di base del deep learning fino alle architetture neurali avanzate e alle applicazioni moderne.
1. Strumenti di programmazione e fondamenti implementativi del deep learning
Questa prima parte risponde all’obiettivo di sviluppare padronanza degli strumenti di programmazione e dei framework utilizzati nel deep learning, in particolare Python, NumPy, PyTorch e gli ambienti interattivi di sperimentazione, fornendo al tempo stesso una comprensione operativa dei principi di apprendimento basati sul gradiente.
La prima parte è dedicata agli ambienti di programmazione, ai linguaggi e agli strumenti. Gli studenti vengono introdotti a IPython e ai Jupyter notebook, utilizzati durante tutto il corso, e al linguaggio di programmazione Python, comprese le sue principali strutture sintattiche e dati. Viene inizialmente implementato un modello di Perceptron usando Python di base, per poi reimplementarlo con NumPy, così da evidenziare l’efficienza del calcolo basato su array. Questa parte fornisce inoltre una comprensione intuitiva dell’apprendimento tramite gradient descent. Successivamente, il corso introduce PyTorch, inclusi i grafi computazionali, la differenziazione automatica e i diversi livelli di astrazione, con implementazioni pratiche di modelli Perceptron e Multi-Layer Perceptron.
2. Preprocessing e gestione dei dati
Questa seconda parte risponde all’obiettivo di rendere gli studenti autonomi nella gestione, preparazione e trasformazione dei dati, affrontando problematiche reali quali sbilanciamento delle classi, dati mancanti, normalizzazione e rappresentazione di dati eterogenei, in particolare immagini e testo.
La seconda parte è dedicata al preprocessing dei dati. Gli studenti imparano a gestire dataset sbilanciati, ad applicare tecniche di data augmentation e a effettuare normalizzazione e gestione dei dati mancanti. Il corso affronta anche il preprocessing del testo, dalla tokenizzazione fino a tecniche più avanzate, introducendo diversi metodi di rappresentazione delle parole, inclusi approcci basati su embedding in grado di catturare relazioni semantiche.
3. Modelli e architetture di deep learning per immagini e testo
Questa terza parte risponde agli obiettivi di comprendere i principi fondamentali delle reti neurali profonde, implementare e confrontare architetture moderne, progettare pipeline complete di deep learning e sviluppare capacità critiche nella valutazione dei modelli e nell’analisi dei risultati.
La terza parte riguarda i modelli e gli algoritmi di deep learning. Dopo un’introduzione al flusso di lavoro del machine learning, inclusi training/test split e funzioni di loss, gli studenti implementano semplici reti neurali per poi esplorare architetture più avanzate. Le Convolutional Neural Networks (CNN) vengono presentate per l’analisi di immagini, includendo modelli come LeNet-5 e AlexNet, insieme alle relative strategie di addestramento in PyTorch. Il corso affronta inoltre il problema del vanishing gradient e introduce architetture più profonde come ResNet, oltre a U-Net e alle applicazioni delle CNN all’analisi del testo.
L’apprendimento delle rappresentazioni viene approfondito attraverso gli autoencoder, con applicazioni alla ricostruzione di immagini, al denoising e alla previsione del contesto nei testi. Vengono poi introdotti i modelli basati su Transformer, con particolare attenzione ai meccanismi di attenzione e alla multi-head attention, mostrando applicazioni sia alle immagini sia al testo, incluse architetture più recenti come lo Swin Transformer.
Il corso si conclude con una panoramica sui modelli generativi e con un’introduzione al transfer learning, evidenziando come modelli pre-addestrati possano essere adattati a nuovi compiti.
Durante tutto il corso, i concetti teorici vengono consolidati attraverso esercitazioni pratiche, permettendo agli studenti di sviluppare sia una comprensione solida sia un’esperienza concreta nell’uso delle moderne tecniche di deep learning.
1. Strumenti di programmazione e fondamenti implementativi del deep learning
Questa prima parte risponde all’obiettivo di sviluppare padronanza degli strumenti di programmazione e dei framework utilizzati nel deep learning, in particolare Python, NumPy, PyTorch e gli ambienti interattivi di sperimentazione, fornendo al tempo stesso una comprensione operativa dei principi di apprendimento basati sul gradiente.
La prima parte è dedicata agli ambienti di programmazione, ai linguaggi e agli strumenti. Gli studenti vengono introdotti a IPython e ai Jupyter notebook, utilizzati durante tutto il corso, e al linguaggio di programmazione Python, comprese le sue principali strutture sintattiche e dati. Viene inizialmente implementato un modello di Perceptron usando Python di base, per poi reimplementarlo con NumPy, così da evidenziare l’efficienza del calcolo basato su array. Questa parte fornisce inoltre una comprensione intuitiva dell’apprendimento tramite gradient descent. Successivamente, il corso introduce PyTorch, inclusi i grafi computazionali, la differenziazione automatica e i diversi livelli di astrazione, con implementazioni pratiche di modelli Perceptron e Multi-Layer Perceptron.
2. Preprocessing e gestione dei dati
Questa seconda parte risponde all’obiettivo di rendere gli studenti autonomi nella gestione, preparazione e trasformazione dei dati, affrontando problematiche reali quali sbilanciamento delle classi, dati mancanti, normalizzazione e rappresentazione di dati eterogenei, in particolare immagini e testo.
La seconda parte è dedicata al preprocessing dei dati. Gli studenti imparano a gestire dataset sbilanciati, ad applicare tecniche di data augmentation e a effettuare normalizzazione e gestione dei dati mancanti. Il corso affronta anche il preprocessing del testo, dalla tokenizzazione fino a tecniche più avanzate, introducendo diversi metodi di rappresentazione delle parole, inclusi approcci basati su embedding in grado di catturare relazioni semantiche.
3. Modelli e architetture di deep learning per immagini e testo
Questa terza parte risponde agli obiettivi di comprendere i principi fondamentali delle reti neurali profonde, implementare e confrontare architetture moderne, progettare pipeline complete di deep learning e sviluppare capacità critiche nella valutazione dei modelli e nell’analisi dei risultati.
La terza parte riguarda i modelli e gli algoritmi di deep learning. Dopo un’introduzione al flusso di lavoro del machine learning, inclusi training/test split e funzioni di loss, gli studenti implementano semplici reti neurali per poi esplorare architetture più avanzate. Le Convolutional Neural Networks (CNN) vengono presentate per l’analisi di immagini, includendo modelli come LeNet-5 e AlexNet, insieme alle relative strategie di addestramento in PyTorch. Il corso affronta inoltre il problema del vanishing gradient e introduce architetture più profonde come ResNet, oltre a U-Net e alle applicazioni delle CNN all’analisi del testo.
L’apprendimento delle rappresentazioni viene approfondito attraverso gli autoencoder, con applicazioni alla ricostruzione di immagini, al denoising e alla previsione del contesto nei testi. Vengono poi introdotti i modelli basati su Transformer, con particolare attenzione ai meccanismi di attenzione e alla multi-head attention, mostrando applicazioni sia alle immagini sia al testo, incluse architetture più recenti come lo Swin Transformer.
Il corso si conclude con una panoramica sui modelli generativi e con un’introduzione al transfer learning, evidenziando come modelli pre-addestrati possano essere adattati a nuovi compiti.
Durante tutto il corso, i concetti teorici vengono consolidati attraverso esercitazioni pratiche, permettendo agli studenti di sviluppare sia una comprensione solida sia un’esperienza concreta nell’uso delle moderne tecniche di deep learning.
Lingua Insegnamento
INGLESE
Altre informazioni
Il docente riceve gli studenti su appuntamento, previa richiesta inviata via e-mail all’indirizzo nome.cognome@uninsubria.it. Il docente risponde esclusivamente alle e-mail firmate e provenienti dal dominio students.uninsubria.it.
Corsi
Corsi
MATEMATICA
Laurea Magistrale
2 anni
No Results Found
Persone
Persone
Ricercatori
No Results Found