NEURAL NETWORKS Canale unico
Docente coordinatore e verbalizzante: DANILO COMMINIELLO
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.
Risultati di apprendimento attesi
Al termine del corso, ci si aspetta che gli studenti abbiano acquisito conoscenze fondamentali nei campi della rappresentazione e dell’analisi di dati attraverso reti neurali e delle applicazioni principali delle reti neurali. Ci si aspetta che competenze acquisite siano generalizzate e a problemi complessi di varia natura per poi essere utilizzate in studi successivi. Inoltre, ci si aspetta che gli studenti siano in grado di comunicare informazioni e soluzioni tecniche a interlocutori specialisti e non specialisti.
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.
Programma dell’insegnamento
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.
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).
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 svolgimento
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.
Esempi di domande
- Homework: valutazione di diverse funzioni di perdita, implementazione di nuove funzioni di attivazione o tecniche di ottimizzazione e regolarizzazione.
- Prova orale: Descrivere come funzionano Dropout, Normalizzazione batch o Connessioni residue; scrivere il modello di attenzione a più teste; spiegare perché sono richiesti gli incorporamenti posizionali e che tipo di incorporamenti possiamo utilizzare.
Ulteriori esempi saranno discussi durante il corso e forniti da Classroom.
- Anno accademico/1
- Codice insegnamento1022870
- Anno e semestre1º anno - 2º semestre
- TipologiaAttività formative affini ed integrative
- AmbitoAttività formative affini o integrative
- SSDING-IND/31
- Presenza obbligatoriaNo
- LinguaENG
- CFU6 CFU
- Durata complessiva60 ore
- Distribuzione delle ore36 classroom hours, 24 training hours