NEURAL NETWORKS

Obiettivi formativi

Obiettivi generali: Il corso è una overview generale sulle reti neurali, sia dal punto di vista metodologico che pratico. Gli studenti acquisiranno una forte competenza teorica e pratica su come le reti neurali funzionano e sono implementate, con particolare attenzione sui componenti più usati, e sulle attuali limitazioni. Obiettivi specifici: Dal punto di vista teorico, rivedremo il paradigma generale per la costruzione di modelli differenziabili che possono essere ottimizzati end-to-end con la discesa al gradiente. Successivamente, esamineremo i componenti essenziali per progettare architetture in grado di lavorare su immagini (convoluzioni), sequenze (recurrent layer) ed insiemi (transformers). L'ultima parte del corso si concentrerà su una selezione di importanti argomenti di ricerca, tra cui le reti neurali su grafi, l'apprendimento continuo e i modelli generativi. Conoscenza e comprensione: Alla fine del corso, lo studente avrà una ottima conoscenza di come le reti neurali funzionano in pratica, con la capacità di implementare nuovi componenti da zero, riutilizzare modelli esistenti o progettare nuove architetture per problemi al di là della panoramica del corso. Abilità critiche e di giudizio: Ci si aspetta che lo studente sia in grado di analizzare un nuovo problema che richiede l'apprendimento automatico e progettare la soluzione appropriata basata su una rete neurale, comprendendone sia i punti di forza che i limiti. Abilità comunicative: Il corso favorirà le abilità comunicative in termini di capacità di descrivere (in modo tecnico e non tecnico) la matematica alla base dei modelli, nonché di scrivere codice chiaro e comprensibile per la loro implementazione. Abilità di apprendimento: Al di là degli argomenti del corso, lo studente sarà in grado di studiare autonomamente nuovi argomenti di ricerca e di navigare la letteratura scientifica, oltre a saper comprendere punti di forza e debolezze delle attuali librerie software.

Canale 1
SIMONE SCARDAPANE Scheda docente

Programmi - Frequenza - Esami

Programma
La prima parte del corso si focalizzerà su alcuni argomenti di base, che includono: - Introduzione al corso (obiettivi, testi, esame) - Preliminari: algebra lineare per reti neurali, regressione e classificazione lineare, reti neurali fully-connected, differenziazione automatica di programmi (forward e backward, prodotti Jacobiani-vettori, checkpointing) - Reti neurali convolutive - Progettare reti neurali convolutive moderne - Modelli basati sull'attenzione per sequenze, multi-head attention, embedding posizionali - Modelli ricorrenti per sequenze di lunghezza variabile La seconda parte del corso si focalizzerà su alcuni argomenti di ricerca a vari livelli di complessità ed approfondimento: - Graph neural network - Continual learning - Modelli generativi - Self-supervised models Il corso include anche diverse lezioni pratiche che spaziano da PyTorch a JAX.
Prerequisiti
Lo studente dovrà avere una conoscenza basilare dei seguenti argomenti, che saranno rivisti all'inizio del corso: Algebra lineare, in particolare come vettorizzare operazioni, decomposizioni matriciali, analisi spettrale delle matrici. Probabilità, in particolare conoscenza delle principali distribuzioni di probabilità (Bernoulli, Gaussiana, ...), probabilità condizionali, valori attesi e momenti delle distribuzioni. Ottimizzazione numerica, in particolare punti stazionari di una funzione, gradienti, ottimizzazione numerica di funzioni tramite discesa al gradiente. Machine learning, in particolare apprendimento supervisionato, apprendimento non supervisionato, regressione e classificazione lineare. Lo studente, inoltre, dovrà avere buone basi di programmazione in Python, mentre è gradita ma non necessaria la conoscenza pregressa di librerie come NumPy o derivati.
Testi di riferimento
Dive Into Deep Learning (https://d2l.ai/), disponibile online. Inoltre, verrano usate le slide ed il materiale condiviso sul sito del corso.
Frequenza
Lezioni in presenza in aula, la frequenza non è obbligatoria.
Modalità di esame
Il corso include uno o più homework (di complessità variabile), di modo che gli studenti possano auto-valutare le proprie conoscenze. L'esame è diviso in un progetto pratico (che richiede la parziale re-implementazione di un articolo scientifico recente), ed una valutazione orale.
Modalità di erogazione
Lezioni in presenza, con possibile registrazione a seconda delle disposizioni vigenti nel corso del semestre. Tutte le notizie ed eventuale materiale saranno condivise su una pagina Google Classroom.
SIMONE SCARDAPANE Scheda docente

Programmi - Frequenza - Esami

Programma
La prima parte del corso si focalizzerà su alcuni argomenti di base, che includono: - Introduzione al corso (obiettivi, testi, esame) - Preliminari: algebra lineare per reti neurali, regressione e classificazione lineare, reti neurali fully-connected, differenziazione automatica di programmi (forward e backward, prodotti Jacobiani-vettori, checkpointing) - Reti neurali convolutive - Progettare reti neurali convolutive moderne - Modelli basati sull'attenzione per sequenze, multi-head attention, embedding posizionali - Modelli ricorrenti per sequenze di lunghezza variabile La seconda parte del corso si focalizzerà su alcuni argomenti di ricerca a vari livelli di complessità ed approfondimento: - Graph neural network - Continual learning - Modelli generativi - Self-supervised models Il corso include anche diverse lezioni pratiche che spaziano da PyTorch a JAX.
Prerequisiti
Lo studente dovrà avere una conoscenza basilare dei seguenti argomenti, che saranno rivisti all'inizio del corso: Algebra lineare, in particolare come vettorizzare operazioni, decomposizioni matriciali, analisi spettrale delle matrici. Probabilità, in particolare conoscenza delle principali distribuzioni di probabilità (Bernoulli, Gaussiana, ...), probabilità condizionali, valori attesi e momenti delle distribuzioni. Ottimizzazione numerica, in particolare punti stazionari di una funzione, gradienti, ottimizzazione numerica di funzioni tramite discesa al gradiente. Machine learning, in particolare apprendimento supervisionato, apprendimento non supervisionato, regressione e classificazione lineare. Lo studente, inoltre, dovrà avere buone basi di programmazione in Python, mentre è gradita ma non necessaria la conoscenza pregressa di librerie come NumPy o derivati.
Testi di riferimento
Dive Into Deep Learning (https://d2l.ai/), disponibile online. Inoltre, verrano usate le slide ed il materiale condiviso sul sito del corso.
Frequenza
Lezioni in presenza in aula, la frequenza non è obbligatoria.
Modalità di esame
Il corso include uno o più homework (di complessità variabile), di modo che gli studenti possano auto-valutare le proprie conoscenze. L'esame è diviso in un progetto pratico (che richiede la parziale re-implementazione di un articolo scientifico recente), ed una valutazione orale.
Modalità di erogazione
Lezioni in presenza, con possibile registrazione a seconda delle disposizioni vigenti nel corso del semestre. Tutte le notizie ed eventuale materiale saranno condivise su una pagina Google Classroom.
DANILO COMMINIELLO Scheda docente

Programmi - Frequenza - Esami

Programma
INTRODUZIONE ALLE RETI NEURALI. Panoramica del corso, obiettivi, libri di testo e materiale, esami. Preliminari alle reti neurali. Algebra lineare per reti neurali. Regressione lineare e classificazione. Reti neurali completamente connesse. Differenziazione automatica dei programmi (avanti e indietro, prodotti vettoriali Jacobiani, checkpoint). (Rif: [1: Cap. 1, 2, 3, 4, 5, 11, 18]) RETI NEURALI CONVOLUZIONALI. Strati convoluzionali. Architetture di deep learning basate su blocchi (VGG). Reti residuali e dense. Architetture di reti neurali convoluzionali avanzate. Esempi applicativi. (Rif: [1: Cap. 6, 7]) RETI TRASFORMER. Modelli basati sull'attenzione per le sequenze. Attenzione a più teste. Incorporamenti posizionali. (Rif: [1: Cap. 11]) RETI NEURALI RICORRENTI. Strati ricorrenti. Reti di memoria lunga a breve termine. Unità ricorrenti recintate. Architetture codificatore-decodificatore. Esempi applicativi. (Rif: [1: Cap. 8, 9, 10]) MODELLI GENERATIVI. Modellazione generativa. Inferenza variazionale. Modelli di autoencoder variazionali. Reti avversarie generative. Modelli di diffusione. Esempi applicativi. (Rif: [1: Cap. 20]) METODI DI APPRENDIMENTO AVANZATO. Reti neurali grafiche. Apprendimento continuo. Apprendimento self-supervised. (Materiale aggiuntivo) Durante l'intero corso saranno organizzate sessioni di laboratorio in Python, inclusa l'implementazione dei principali modelli di reti neurali in diversi contesti applicativi.
Prerequisiti
Si prevede che lo studente abbia una precedente esposizione e comprensione dei seguenti argomenti, che saranno brevemente ripresi durante le lezioni iniziali: o Algebra lineare, incluse: operazioni di vettorizzazione, decomposizioni di matrici comuni, analisi spettrale. o Probabilità, comprendente: distribuzioni di probabilità comuni (Bernoulli, gaussiane, …), probabilità condizionate, attese e momenti delle distribuzioni. o Ottimizzazione numerica, inclusi: minimi e massimi di un problema di ottimizzazione, gradienti, funzioni di ottimizzazione per discesa del gradiente. o Apprendimento automatico, tra cui: apprendimento supervisionato, apprendimento non supervisionato, classificazione lineare e regressione. Lo studente dovrebbe anche avere una forte esperienza nella programmazione con Python, mentre l'esperienza nel lavorare con NumPy o librerie simili è consigliata ma non obbligatoria.
Testi di riferimento
Testo principale: - Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola, “Dive Into Deep Learning”. Amazon, 2020. Materiale integrativo a cura del docente (lucidi del corso, articoli) disponibile sul sito web del corso e sul pagina della classe virtuale del corso (Classroom).
Modalità insegnamento
Il corso prevede lezioni regolari in aula, le quali includono anche periodiche esercitazioni in Python su problemi pratici. Le esercitazioni possono includere lavori di gruppo.
Frequenza
La frequenza del corso è fortemente consigliata ma non obbligatoria. Lo studente non frequentante avrà a disposizione tutte le informazioni e il materiale didattico necessario per svolgere l'esame alle stesse condizioni e con le stesse modalità dello studente frequentante.
Modalità di esame
Il corso comprenderà uno o più homework (di varia difficoltà), in modo che gli studenti possano autovalutare le conoscenze acquisite fino a quel momento. L'esame è suddiviso in un progetto pratico di codifica (che richiede la parziale reimplementazione di un recente articolo scientifico) e una valutazione orale.
Bibliografia
Riferimenti [1] Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola, “Dive Into Deep Learning”. Amazon, [2] Kevin P. Murphy, “Machine Learning: A Probabilistic Perspective”. The MIT Press, 2021. 2020. [3] S. Raschka, V. Mirjalili, “Python Machine Learning”, (3rd ed.), Packt Publishing, 2019. [4] Ian Goodfellow, Yoshua Bengio, Aaron Courville, “Deep Learning”. The MIT Press, 2016. [5] Christopher M. Bishop, "Pattern Recognition and Machine Learning". Springer, 2006.
Modalità di erogazione
Il corso prevede lezioni regolari in aula, le quali includono anche periodiche esercitazioni in Python su problemi pratici. Le esercitazioni possono includere lavori di gruppo.
DANILO COMMINIELLO Scheda docente

Programmi - Frequenza - Esami

Programma
INTRODUZIONE ALLE RETI NEURALI. Panoramica del corso, obiettivi, libri di testo e materiale, esami. Preliminari alle reti neurali. Algebra lineare per reti neurali. Regressione lineare e classificazione. Reti neurali completamente connesse. Differenziazione automatica dei programmi (avanti e indietro, prodotti vettoriali Jacobiani, checkpoint). (Rif: [1: Cap. 1, 2, 3, 4, 5, 11, 18]) RETI NEURALI CONVOLUZIONALI. Strati convoluzionali. Architetture di deep learning basate su blocchi (VGG). Reti residuali e dense. Architetture di reti neurali convoluzionali avanzate. Esempi applicativi. (Rif: [1: Cap. 6, 7]) RETI TRASFORMER. Modelli basati sull'attenzione per le sequenze. Attenzione a più teste. Incorporamenti posizionali. (Rif: [1: Cap. 11]) RETI NEURALI RICORRENTI. Strati ricorrenti. Reti di memoria lunga a breve termine. Unità ricorrenti recintate. Architetture codificatore-decodificatore. Esempi applicativi. (Rif: [1: Cap. 8, 9, 10]) MODELLI GENERATIVI. Modellazione generativa. Inferenza variazionale. Modelli di autoencoder variazionali. Reti avversarie generative. Modelli di diffusione. Esempi applicativi. (Rif: [1: Cap. 20]) METODI DI APPRENDIMENTO AVANZATO. Reti neurali grafiche. Apprendimento continuo. Apprendimento self-supervised. (Materiale aggiuntivo) Durante l'intero corso saranno organizzate sessioni di laboratorio in Python, inclusa l'implementazione dei principali modelli di reti neurali in diversi contesti applicativi.
Prerequisiti
Si prevede che lo studente abbia una precedente esposizione e comprensione dei seguenti argomenti, che saranno brevemente ripresi durante le lezioni iniziali: o Algebra lineare, incluse: operazioni di vettorizzazione, decomposizioni di matrici comuni, analisi spettrale. o Probabilità, comprendente: distribuzioni di probabilità comuni (Bernoulli, gaussiane, …), probabilità condizionate, attese e momenti delle distribuzioni. o Ottimizzazione numerica, inclusi: minimi e massimi di un problema di ottimizzazione, gradienti, funzioni di ottimizzazione per discesa del gradiente. o Apprendimento automatico, tra cui: apprendimento supervisionato, apprendimento non supervisionato, classificazione lineare e regressione. Lo studente dovrebbe anche avere una forte esperienza nella programmazione con Python, mentre l'esperienza nel lavorare con NumPy o librerie simili è consigliata ma non obbligatoria.
Testi di riferimento
Testo principale: - Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola, “Dive Into Deep Learning”. Amazon, 2020. Materiale integrativo a cura del docente (lucidi del corso, articoli) disponibile sul sito web del corso e sul pagina della classe virtuale del corso (Classroom).
Modalità insegnamento
Il corso prevede lezioni regolari in aula, le quali includono anche periodiche esercitazioni in Python su problemi pratici. Le esercitazioni possono includere lavori di gruppo.
Frequenza
La frequenza del corso è fortemente consigliata ma non obbligatoria. Lo studente non frequentante avrà a disposizione tutte le informazioni e il materiale didattico necessario per svolgere l'esame alle stesse condizioni e con le stesse modalità dello studente frequentante.
Modalità di esame
Il corso comprenderà uno o più homework (di varia difficoltà), in modo che gli studenti possano autovalutare le conoscenze acquisite fino a quel momento. L'esame è suddiviso in un progetto pratico di codifica (che richiede la parziale reimplementazione di un recente articolo scientifico) e una valutazione orale.
Bibliografia
Riferimenti [1] Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola, “Dive Into Deep Learning”. Amazon, [2] Kevin P. Murphy, “Machine Learning: A Probabilistic Perspective”. The MIT Press, 2021. 2020. [3] S. Raschka, V. Mirjalili, “Python Machine Learning”, (3rd ed.), Packt Publishing, 2019. [4] Ian Goodfellow, Yoshua Bengio, Aaron Courville, “Deep Learning”. The MIT Press, 2016. [5] Christopher M. Bishop, "Pattern Recognition and Machine Learning". Springer, 2006.
Modalità di erogazione
Il corso prevede lezioni regolari in aula, le quali includono anche periodiche esercitazioni in Python su problemi pratici. Le esercitazioni possono includere lavori di gruppo.
  • Codice insegnamento1022870
  • Anno accademico2024/2025
  • CorsoEngineering in Computer Science - Ingegneria Informatica
  • CurriculumCurriculum unico
  • Anno1º anno
  • Semestre2º semestre
  • SSDING-IND/31
  • CFU6
  • Ambito disciplinareAttività formative affini o integrative