Ingegneria Informatica e dell’Intelligenza Artificiale Applicata LM-32
Apprendimento automatico e apprendimento profondo
Settore scientifico disciplinare | Numero crediti formativi (CFU) | Docente |
ING-INF/05 | 9 | -- Nessun gestore -- |
Obiettivi Formativi
L’insegnamento si propone di fornire agli studenti una conoscenza approfondita delle principali tecniche di machine learning e deep learning per l'analisi di dati di natura eterogenea. In particolare, verranno presentati e approfonditi i principali algoritmi di classificazione di dati, di sequenze temporali di informazioni e di pattern complessi quali ad esempio le immagini, e le principali tecniche di apprendimento automatico sia di tipo supervisionato che non supervisionato. Inoltre, verranno illustrate le reti neurali e il loro funzionamento, presentate architetture neurali complesse per l’analisi di dati spaziali, temporali e modelli generativi e forniti i rudimenti dell’apprendimento con rinforzo. Verranno inoltre fornite competenze in merito alla spiegabilità degli algoritmi di machine learning. L’insegnamento contribuisce anche al potenziamento delle capacità trasversali Autonomia di giudizio, Abilità comunicative e Capacità di apprendimento degli studenti nell’ambito delle applicazioni dell’apprendimento automatico e dell’apprendimento profondo.
Risultati di apprendimento attesi
Conoscenza e capacità di comprensione
Conoscenza e comprensione delle principali tecniche di pattern recognition e machine learning per l'analisi di dati di natura eterogenea.
Conoscenza degli operatori di Deep Learning delle tecniche di training non supervisionate, self-supervisionate e parzialmente supervisionate.
Conoscenza del linguaggio python, con particolare attenzione alle principali librerie utilizzate per il machine learning e per il deep learning.
Comprensione di tecnologie deep learning di frontiera basate su Graph Neural Networks, Transformers, Visual Transformers, Attention, etc.
Comprensione delle problematiche relative all’integrazione di dati eterogenei e delle metodologie per l’integrazione dei dati basate sulla statistica e il deep learning.
Comprensione dei meccanismi di spiegabilità degli algoritmi di machine learning e deep learning.
Capacità di applicare conoscenza e comprensione
Capacità di applicare i principali algoritmi di classificazione di dati, di sequenze temporali di informazioni e di pattern complessi come le immagini.
Capacità di applicare le principali tecniche di apprendimento automatico sia di tipo supervisionato che non supervisionato.
Capacità di implementare un workflow per un progetto di apprendimento automatico e/o di apprendimento profondo.
Abilità di giudizio
Il discente acquisirà la capacità di integrare le conoscenze e gestire la complessità delle applicazioni del machine learning e del deep learning, nonché di formulare giudizi sulla base di informazioni limitate o incomplete.
Lo studente sarà inoltre in grado di riflettere sulle responsabilità sociali ed etiche collegate all’applicazione delle tecniche di machine learning o deep learning a contesti e dati reali.
Abilità di comunicare
Capacità di motivare le scelte prendendo come riferimento studi scientifici che hanno contribuito in maniera evidente allo sviluppo delle applicazioni di apprendimento automatico e di apprendimento profondi. Capacità di descrivere e commentare le conoscenze acquisite, adeguando le forme comunicative sia ad interlocutori specialisti che non specialisti.
Capacità di apprendimento
Capacità di riportare casi di studio. Capacità di aggiornamento attraverso la consultazione di pubblicazioni scientifiche e di manuali tecnici.
Modalità di accertamento dei risultati di apprendimento acquisiti dallo studente
Per valutate le capacità acquisite nel governare le nozioni apprese, nel creare delle connessioni con altri insegnamenti del corso di studi in maniera autonoma lo studente sarà sottoposto a una prova scritta e/o orale e alla valutazione di un progetto pratico da consegnare prima dell’esame. Attraverso il colloquio oppure la prova scritta sarà valutata la conoscenza degli elementi di carattere teorico mentre la valutazione del progetto valuterà la capacità di applicazione pratica delle nozioni acquisite.
Modalità di esame
Propedeuticità
Testi consigliati
Il docente consiglia l’integrazione del materiale fornito (videolezioni, dispense, slides, esercitazioni) con i seguenti testi, a cui il docente può fare riferimento durante le lezioni:
· Gareth James ,Daniela Witten ,Trevor Hastie ,Robert Tibshirani ,Jonathan Taylor “An Introduction to Statistical Learning with application in python” (gratuitamente disponibile all’indirizzo https://www.statlearning.com/)
· Ian Goodfellow and Yoshua Bengio and Aaron Courville “Deep Learning textbook” (gratuitamente disponibile all’indirizzo https://www.deeplearningbook.org/)
· Aston Zhang, Zachary C. Lipton, Mu Li, Alexander J. Smola “ Dive into Deep Learning” (gratuitamente disponibile all’indirizzo https://d2l.ai/)
Prerequisiti
Algebra lineare, Teoria e calcolo delle probabilità, Statistica, Fondamenti di programmazione in python, Intelligenza Artificiale
ORGANIZZAZIONE DIDATTICA
Modalità di erogazione del corso:
Corso interamente erogato a distanza
Attività didattiche previste
Le attività di didattica, suddivise tra didattica erogativa (DE) e didattica interattiva (DI), saranno costituite da 7 ore per CFU e ripartite secondo una struttura di almeno 2,5 ore di DE (tenuta in considerazione la necessità di riascolto) e di 2 ore di DI per ciascun CFU.
Attività didattica erogativa (45 ore):
- 45 lezioni frontali videoregistrate, della durata di circa 30 minuti ciascuna (tenuta in considerazione la necessità di riascolto) sempre disponibili in piattaforma.
Attività didattica interattiva (36 ore):
Le attività di didattica interattiva si svolgeranno mediante l’utilizzo di strumenti di videoconferenza sincrona secondo il calendario seguente:
· Settembre 2025 2 lezioni da 2 ore:
1. Introduzione all’utilizzo di python per il machine learning: 18 Settembre 2025
2. Implementazione di algoritmi di classificazione in python
· Ottobre 2025 3 lezioni da 2 ore
1. Implementazione di algoritmi di regressione in python
2. Implementazione di algoritmi di clustering in python
3. Implementazione della PCA in python
· Novembre 2025 2 lezioni da 2 ore
1. Introduzione all’utilizzo di python per il deep learning
2. Implementazione di reti neurali in python
· Dicembre 2025 2 lezioni da 2 ore
1. Deep learning in python
2. Cenni sull’implementazione dei transformer in python
· Febbraio 2026 2 lezioni da 2 ore
1. Introduzione all’utilizzo di python per il machine learning
2. Implementazione di algoritmi di classificazione in python
· Marzo 2026 3 lezioni da 2 ore
1. Implementazione di algoritmi di regressione in python
2. Implementazione di algoritmi di clustering in python
3. Implementazione della PCA in python
· Aprile 2026 2 lezioni da 2 ore
1. Introduzione all’utilizzo di python per il deep learning
2. Implementazione di reti neurali in python
· Maggio 2026 2 lezioni da 2 ore
1. Deep learning in python
2. Cenni sull’implementazione dei transformer in python
Attività di autoapprendimento:
Le ore di autoapprendimento previste sono dedicate allo studio dei materiali dei materiali forniti dal docente e alla realizzazione del progetto pratico.
Sono previsti dei test di autovalutazione a conclusione di ogni lezione, costituito da 5 domande (relative ai contenuti esposti nella lezione) a risposta multipla, con 4 risposte di cui una sola corretta.
L'articolazione tra DE e DI, per ciascuna unità didattica, sarà organizzata coerentemente con gli obiettivi formativi specifici dell’insegnamento.
Ricevimento studenti
Nella pagina dell’insegnamento, sezione “Ricevimento on line, vengono predisposti gli incontri con gli studenti in videoconferenza.
Gli studenti possono concordare un appuntamento effettuando una richiesta alla mail istituzionale del docente noemi.scarpato@uniroma5.it
Programma Del Corso
Lezione 0: Introduzione al corso
Modulo 1: Concetti di base (1 CFU)
· Lezione 1: Richiami di matematica per l’intelligenza artificiale
o Algebra lineare: vettori, matrici, spazi vettoriali;
o Statistica: correlazione, ipotesi e inferenza, p-values;
o Probabilità: variabili dipendenti e indipendenti, probabilità condizionata, Teorema di Bayes, inferenza bayesiana;
o Discesa del gradiente.
· Lezione 2: Dati e Pattern
o Tipi di dati : numerici, categorici, sequenze, immagini,
o Pattern,
o Acquisizione,
o Preprocessing.
· Lezione 3: Introduzione al Machine Learning e al Deep Learning
o Un po’ di storia
o Tipi di machine learning: supervisionato, non supervisionato, semi-supervisionato, Reinforcement learning
o Neuroni biologici e Neuroni artificiali
o Reti neurali artificiali, DNN
o Applicazioni
· Lezione 4: Metriche di valutazione
o o Valutazione dei modelli di machine learning e deep learning
o Confusion Matrix
o Precision, Recall, F-Measure, Sensitivity , Specificity
o Accuracy, ROC AUC
o MSE, RMSE, MAE
o Overfitting e Generalizzazione
Lezione 5: Gestione dei progetti di Apprendimento Automatico e Apprendimento Profondo
o Partizionare i dati: Training , Test, Validation set
o K-Fold cross validation
o Random Search
o Workflow dei progetti di Apprendimento Automatico e Apprendimento Profondo
Modulo 2: Fondamenti di programmazione python per il machine learning (1 CFU)
· Lezione 1: Configurare l’ambiente di sviluppo
o Installare Anaconda
o Creare Ambiente in anaconda
o Strumenti per il coding python in anaconda: jupither notebook, spider, pycharm.
· Lezione 2: Ambienti di sviluppo preconfigurati
o Accedere a Google colab
o Utilizzare le risorse avanzate di Google colab
o Salvare e condividere un progetto su Google colab
· Lezione 3: Lavorare con i dati in python
o Numpy, pandas
o Importare dati da excel,sql, csv
o Importare dati da repository esterni
o Strutture dati per il machine learning
o Visualizzazione dei dati , Matplotlib e Seaborn
· Lezione 4: Librerie per il machine learning e il deep learning
o Shikit-learn
o Tensor Flow
o Pythorch
o SciPy
· Lezione 5: Gestire un progetto in python
o Creazione di un progetto in pycharm
o Utilizzo di github per la gestione collaborativa dei progetti
o Utilizzo di google colab per la gestione collaborativa dei progetti
Modulo 3: Apprendimento Automatico Classificazione (1 CFU)
· Lezione 1: Naïve Bayes
o Algoritmo di classificazione Bayesiano
o Implementazione in python
o Applicazioni e limiti
· Lezione 2: Nearest Neighbor e KNN
o Metriche di distanza (Euclidea, Manhattan, Coseno)
o Algoritmo KNN e variant
o Implementazione in python
o Applicazioni
· Lezione 3: Support Vector Machine
o Margine massimo e iperpiani
o Kernel
o Implementazione in python classificazione binaria e multiclasse
o Applicazioni
· Lezione 4: Decision tree
o Entropia e indice di Gini
o Overfitting e pruning
o Implementazione in python
o Interpretabilità
· Lezione 5: Random Forest
o Ensemble di alberi e bagging
o Importanza delle feature
o Implementazione in python
o Applicazioni
Modulo 4: Apprendimento Automatico Regressione (1 CFU)
· Lezione 1: Regressione Lineare
o Modello lineare semplice
o Stima dei coefficienti
o Implementazione in python
o Valutazione del modello
· Lezione 2: Regressione Lineare Multipla
o Estensione a più variabili
o Multicollinearità e VIF
o Implementazione in python
o Interpretazione dei coefficienti
· Lezione 3: Logistic Regression
o Funzione logistica
o Classificazione binaria e multiclasse
o Implementazione in python
o Applicazioni
· Lezione 4: Regressione Ridge e Lasso (Regolarizzazione)
o Overfitting nei modelli lineari
o Penalizzazione L1 e L2
o Implementazione in python
o Elastic Net
· Lezione 5: Modelli Basati su alberi
o Decision Tree Regressor
o Random Forest Regressor
o Gradient Boosting e XGBoost
o Implementazione in pyhton
Modulo 5: Apprendimento Automatico non supervisionato (1 CFU)
· Lezione 1: Clustering gerarchico
o Metriche di similarità
o Agglomerative vs divisive
o Dendrogrammi
o Implementazione in pyhton
· Lezione 2: K-means
o Algoritmo iterativo
o Scelta del numero di cluster
o Implementazione in pyhton
o Vantaggi e limiti
· Lezione 3: PCA
o Riduzione della dimensionalità
o Autovalori e autovettori
o Visualizzazione dei dati
o Implementazione in python
o Principio di clustering basato sulla densità
o Identificazione di cluster di forma arbitraria e gestione degli outlier
o Parametri principali: epsilon (raggio) e minPts (numero minimo di punti)
o Implementazione in pyhton
· Lezione 5: t-SNE
o Riduzione non lineare
o Struttura locale dei dati
o Visualizzazione in 2D/3D
o Implementazione in pyhton
Modulo 6: Reti Neurali (1 CFU)
· Lezione 1: Percettrone
o Neurone artificiale
o Regola di aggiornamento dei pesi
o Limiti del percettrone
o Implementazione in pyhton
· Lezione 2: MLP
o Architettura con hidden layer
o Backpropagation
o Funzioni di attivazione
o Implementazione in pyhton
· Lezione 3: CNN
o Convoluzione e kernel
o Pooling
o Applicazioni in visione
o Implementazione in pyhton
· Lezione 4: RNN
o Architettura sequenziale
o Vanishing/exploding gradient
o LSTM e GRU
o Implementazione in pyhton
· Lezione 5: Classificazione e Regressione con Reti Neurali
o Output e funzioni di perdita per classificazione
o Output e funzioni di perdita per regressione
o Applicazioni pratiche
o Implementazione in pyhton
Modulo 7: Apprendimento Profondo (1 CFU)
· Lezione 1: Fondamenti del Deep Learning
o Differenze tra Machine Learning e Deep Learning
o Reti neurali profonde (DNN)
o Vantaggi e limiti del deep learning
· Lezione 2: Ottimizzazione nelle Reti Profonde
o Discesa del gradiente stocastico e varianti (SGD, Adam)
o Problemi di vanishing ed exploding gradient
o Batch normalization e dropout
· Lezione 3: Reti Convoluzionali Avanzate
o Architetture classiche: AlexNet, VGG, ResNet
o Residual connections e skip connections
o Data augmentation e transfer learning
· Lezione 4: Reti Ricorrenti Avanzate
o LSTM e GRU
o Sequence-to-sequence models
o Applicazioni nel NLP e nel time series forecasting
o Modelli multimodali
· Lezione 5: Generative Deep Learning
o Autoencoder e Variational Autoencoder (VAE)
o Generative Adversarial Networks (GANs)
o Applicazioni creative (immagini, testi, musica)
Modulo 8: Transformer (1 CFU)
· Lezione 1: Introduzione ai Transformer
o Limiti delle RNN nei dati sequenziali
o Architettura encoder-decoder
o Self-attention come concetto chiave
· Lezione 2: Meccanismo di Attenzione
o Scaled dot-product attention
o Multi-head attention
o Positional encoding
· Lezione 3: Architetture di Riferimento
o Transformer “puro” (Vaswani et al., 2017)
o BERT: pre-training e fine-tuning
o GPT e modelli autoregressivi
o Vision Transformer
· Lezione 4: Fine-Tuning e Prompt Engineering
o Transfer learning
o Fine-tuning per task specifici
o Prompt engineering
· Lezione 5: Applicazioni dei Transformer
o NLP: traduzione, question answering, text generation
o Vision Transformer (ViT) per le immagini
o Multimodal transformer (testo + immagini)
o Costi computazionali e scalabilità
o Etica, bias e implicazioni sociali
Modulo 9: Spiegabilità (1 CFU)
· Lezione 1: Introduzione alla Spiegabilità
o Black-box vs white-box models
o Importanza della spiegabilità in AI
o Regolamentazione ed etica
· Lezione 2: Metodi Post-hoc per Modelli Classici
o Feature importance nei modelli ad albero
o Partial Dependence Plots (PDP)
o LIME e SHAP per modelli di ML
· Lezione 3: Spiegabilità nel Deep Learning
o Saliency maps e gradient-based methods
o Class Activation Maps (CAM, Grad-CAM)
o Perturbation-based explanations
· Lezione 4: XAI per Transformer e NLP
o Attention visualization e interpretazione
o Analisi dei pesi nei layer di attenzione
o Limitazioni delle spiegazioni attention-based
· Lezione 5: Sfide e Prospettive della XAI
o Trade-off tra accuratezza e interpretabilità
o Robustezza delle spiegazioni
Futuro della spiegabilità e AI trasparente