DEEP LEARNING

Anno accademico 2024/2025 - Docente: SIMONE PALAZZO

Risultati di apprendimento attesi

Conoscenza e Capacità di Comprensione

Questo corso fornisce conoscenze sulle tecniche e gli algoritmi di Machine Learning e Deep Learning, con un'attenzione particolare ai modelli di regressione, alla classificazione e all'apprendimento non supervisionato. Gli studenti apprenderanno come valutare le prestazioni dei modelli attraverso metriche di errore e tecniche di validazione, affrontando questioni come l'overfitting e il trade-off bias-varianza. Il corso esplora anche metodi di regolarizzazione, algoritmi di ensemble come bagging e boosting, focalizzandosi poi su reti neurali e reti neurali convoluzionali (CNN). Brevi panoramiche sui Transformers e sugli approcci alla explainability e interpretabilità offrono approfondimenti sulle tecnologie più avanzate.

Conoscenze Applicate e Capacità di Comprensione

Il corso include esempi pratici ed esercizi che permetteranno agli studenti di applicare i metodi di Deep Learning a problemi del mondo reale, utilizzando strumenti software comunemente usati nell'industria come scikit-learn e PyTorch. Gli studenti impareranno a progettare e addestrare modelli di Deep Learning, gestire il caricamento e la preprocessazione dei dati, e validare le loro prestazioni utilizzando metriche standard.

Autonomia di Giudizio

Gli studenti svilupperanno la capacità di valutare le prestazioni dei modelli di Deep Learning, identificare e mitigare problemi di overfitting e bias, e scegliere tra diversi modelli e tecniche di ottimizzazione in base al contesto del problema.

Abilità Comunicative

Gli studenti acquisiranno la capacità di comunicare in modo efficace i risultati delle loro analisi e modellazioni, sia in forma scritta che orale. Saranno in grado di presentare i risultati delle loro ricerche e progetti a un pubblico tecnico e non tecnico, utilizzando un linguaggio appropriato e supportando le loro argomentazioni con dati e visualizzazioni pertinenti.

Capacità di Apprendimento

Il corso incoraggerà gli studenti a sviluppare un approccio critico e autonomo all'apprendimento, stimolando la curiosità verso le nuove tecnologie e tendenze nel campo del Machine Learning e Deep Learning. Gli studenti saranno in grado di continuare ad apprendere in modo indipendente, utilizzando risorse accademiche e professionali per aggiornarsi sulle ultime innovazioni e tecniche nel settore.

Modalità di svolgimento dell'insegnamento

Lezioni frontali, esercitazioni in aula.

Prerequisiti richiesti

 È richiesta una conoscenza preliminare di programmazione e i fondamenti di algebra lineare e analisi matematica.

Frequenza lezioni

Fortemente consigliata.

Contenuti del corso

1. Concetti di base
1.1. Ipotesi e modelli
1.2. Bias-variance trade-off
1.3. Modalità di apprendimento
1.4. Applicazioni del Machine Learning
2. Regressione Lineare e Ottimizzazione
2.1. Concetti base della regressione lineare
2.2. Metodo dei minimi quadrati
2.3. Ottimizzazione analitica e discesa del gradiente
3. Valutazione delle Prestazioni
3.1. Metriche di valutazione: accuratezza, precision, recall, F1-score
3.2. Curva ROC e AUC
3.3. Cross-validation
4. Regolarizzazione
4.1. Principi di regolarizzazione
4.2. Ridge regression
4.3. LASSO
5. Classificatori
5.1. Regressione logistica
5.2. Support Vector Machine (SVM)
5.3. Kernel trick
5.4. Modelli non parametrici: k-NN
6. PCA
6.1. Riduzione della dimensionalità
6.2. PCA: teoria e applicazioni
7. Apprendimento Non Supervisionato
7.1. Clustering: K-means, gerarchico
7.2. Gaussian Mixture Models
7.3. Valutazione di algoritmi di clustering
8. Alberi Decisionali e Bagging/Boosting
8.1. Decision Trees
8.2. Random Forests
8.3. AdaBoost e Gradient Boosting

9. Reti Neurali
9.1. Architettura delle reti neurali
9.2. Funzioni di attivazione
9.3. Backpropagation
9.4. Algoritmi di ottimizzazione: Mini-batch gradient descent, Gradient descent with momentum, learning rate decay
10. Reti Neurali Convoluzionali
10.1. Concetti base: padding, strided convolution, dilation, convoluzione 2D e 3D e pooling
10.2. Architettura base di una CNN e modelli stato dell’arte
10.3. Allenamento CNN: Regolarizzazione, Dropout, Batch normalization, Data Augmentation
10.4 Cenni di explainability e interpretability
11. Transformer
11.1. Architettura Transformer
11.2. Self-attention mechanism
11.3. Applicazioni
12. Python per machine learning
12.1 Linguaggio Python (sintassi, tipi di dati, funzioni e classi)
12.2 Numpy, SciPy, Pandas, Matplotlib
12.3 Scikit-learn (Classification, Regression, Clustering)
12.4 Pytorch (Reti Neurali, CNN)

Testi di riferimento

Materiale di studio fornito dai docenti.

Programmazione del corso

 ArgomentiRiferimenti testi
1Concetti di base
2Regressione lineare e ottimizzazione
3Laboratorio sulla regressione lineare
4Valutazione delle prestazioni
5Laboratorio sulla valutazione delle prestazioni
6Regolarizzazione
7Laboratorio sulla regolarizzazione
8Classificazione
9Laboratorio sulla classificazione
10PCA
11Laboratorio sulla PCA
12Apprendimento non supervisionato
13Laboratorio sull'apprendimento non supervisionato
14Alberi decisionali e bagging/boosting
15Laboratorio su alberi decisionali
16Reti neurali
17Laboratorio su reti neurali
18Reti neurali convoluzionali (CNN)
19Laboratorio su CNN
20Transformers
21Laboratorio su transformers

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

Progetto su tematiche proposte dai docenti, da svolgere a casa. Esame orale con discussione del progetto e domande di teoria.

Esempi di domande e/o esercizi frequenti

- Spiega il trade-off bias-variance e come influenza la capacità di generalizzazione di un modello di machine learning.
- Descrivi il metodo dei minimi quadrati e come viene utilizzato per stimare i parametri di un modello di regressione lineare.
- Qual è la differenza tra precision e recall? In quali scenari uno potrebbe essere più importante dell'altro?
- Confronta Ridge regression e LASSO, specificando quando sarebbe preferibile utilizzare uno rispetto all'altro.
- In che modo il kernel trick estende le capacità degli SVM per risolvere problemi non linearmente separabili?
- Come funziona l'algoritmo PCA per la riduzione della dimensionalità e quali sono i suoi limiti?
- Spiega come funziona un algoritmo di boosting come AdaBoost e quali sono i suoi vantaggi rispetto ai singoli alberi decisionali.
- Descrivi il concetto di convoluzione 2D nelle CNN e come influisce sull'estrazione delle caratteristiche dalle immagini.
- Spiega il self-attention mechanism nei Transformer e come contribuisce alla modellazione delle dipendenze a lungo raggio nei dati sequenziali.