DEEP LEARNING FOR ENGINEERING APPLICATIONS
cod. 1010702

Anno accademico 2023/24
1° anno di corso - Secondo semestre
Docenti
Settore scientifico disciplinare
Sistemi di elaborazione delle informazioni (ING-INF/05)
Ambito
A scelta dello studente
Tipologia attività formativa
Affine/Integrativa
60 ore
di attività frontali
6 crediti
sede: UNIBO
insegnamento
in INGLESE

Obiettivi formativi

Conoscenza e Comprensione
Lo scopo del corso è quello di illustrare i concetti di base ed avanzati per la realizzazione di reti neurali profondi discriminative e generative per varie applicazioni.

Capacità di applicare conoscenza e comprensione
Lo studente acquisirà la capacità di progettare e realizzare reti anche complesse per il riconoscimento e la classificazione di immagini, per l'individuazione di oggetti, e per la generazione di immagini.
Lo studente al termine del corso sarà capace di scrivere codice Python (PyTorch) per addestrare reti di deep learning e testarle in ambito sia discriminativo che generativo.

Prerequisiti

Contenuti dell'insegnamento

Il corso fornisce le conoscenze di base ed avanzate sulle architetture di deep learning per immagini, affrontando sia aspetti teorici e di dettaglio, sia implementazione e possibili applicazioni. Dopo una parte introduttiva e di allineamento (sui concetti di probabilità, machine learning e geometria e algebra), si analizzeranno sia le principali reti neurali profonde discriminative (MLP, CNN, RNN, ...), sia i modelli generativi (auto-encoder, VAE, GAN, ...).

Programma esteso

Il corso si articola sui seguenti argomenti:
- Breve introduzione sulla storia e l'evoluzione del machine learning e delle reti neurali;
- Ripasso dei concetti di base di probabilità, geometria ed algebra, e machine learning;
- Differenza tra approccio discriminativo e approccio generativo;
- Fondamenti delle reti neurali: algoritmo di back-propagation, metodi di ottimizzazione basati sul gradiente (ADAM, SGD, BGD, ...);
- Reti feed-forward, fully-connected, multi-layer perceptron;
- Introduzione al deep learning: concetti di base ed importanza dei dati (curse of dimensionality, data cleaning, data augmentation);
- Reti di deep learning convoluzionali (CNN): architettura di base, tipologie di layers, funzioni di attivazione, layer di pooling, funzioni di loss, metodi di normalizzazione nel training;
- Reti ricorrenti e ricorsive: RNN, Mask R-CNN, self- e cross-attention, cenni su LSTM
- Reti generative: auto-encoders (AE), variational AE, generative adversarial networks (GAN) e sue varianti (cGAN, StyleGAN, StarGAN, CycleGAN)
- Cenni su metodi di ottimizzazione di reti di deep learning
- Cenni su argomenti avanzati: analisi dello spazio latente, knowledge distillation, Transformers, explanaibility delle reti neurali profonde

Bibliografia

- I. Goodfellow, Y. Bengio, A. Courville, “Deep Learning”, The MIT Press, 2016
- E. Stevens, L. Antiga, T. Viehmann, “Deep Learning with PyTorch”, Manning Publications
- D. Foster, "Generative Deep Learning", O'Reilly Media, 2019

Metodi didattici

Il corso comprende indicativamente 30 ore di lezioni tradizionali in aula e 18 ore di esercitazione in laboratorio.

Modalità verifica apprendimento

L'esame consiste in due prove, che possono essere date indipendentemente, sia come sessione sia come ordine.
La prova orale consiste nella lettura e comprensione di un articolo scientifico assegnato dal docente e nella presentazione mediante slides dei suoi contenuti principali (su cui il docente può poi chiedere approfondimenti per verificare l'apprendimento dei concetti teorici presentati durante le lezioni in aula).
La prova pratica consiste nel completare e/o modificare un codice PyTorch fornite durante l'esame per modificare l'architettura della rete proposta, i suoi parametri, le modalità di addestramento o l'obiettivo finale della rete stessa.
Il voto finale è dato dalla media dei voti delle due prove.

Altre informazioni

Obiettivi agenda 2030 per lo sviluppo sostenibile