Natural language processing
A.A. 2026/2027
Obiettivi formativi
L'insegnamento fornisce un'ampia e approfondita introduzione allo stato dell'arte e alle principali linee di ricerca nell'ambito del Natural Language Processing (NLP). In particolare, l'insegnamento si concentra sui metodi di deep learning per NLP, con un'attenzione specifica ai large language models (LLM). Gli studenti si confronteranno con obiettivi fondamentali come l'analisi sintattica, semantica e del discorso, e dei metodi per risolverli. Un focus specifico sarà sui metodi di transfer learning e sulle architetture dei modelli per affrontare compiti concreti come la classificazione del testo, il question-answering, la traduzione automatica e la generazione del testo. Questi obiettivi saranno perseguiti attraverso una combinazione di teoria, seminari sulla letteratura scientifica, e esempi pratici. Il programma è rivolto a studenti laureati in informatica e data science che hanno familiarità con le basi dell'apprendimento automatico. Verrà fornita un'introduzione al deep learning e alle reti neurali insieme a un'introduzione pratica a PyTorch. Anche la programmazione in Python giocherà un ruolo importante nell'insegnamento.
Risultati apprendimento attesi
Attraverso la lettura di pubblicazioni scientifiche recenti, esercizi di programmazione e un progetto finale, gli studenti acquisiranno le seguenti abilità: 1) conoscere e comprendere gli argomenti principali, nonché i problemi di ricerca e le tendenze future nel campo del Natural Language Processing (NLP); 2) imparare ad applicare i metodi di NLP a un corpus di testi per una specifica esigenza applicativa; 3) essere in grado di giudicare la qualità delle diverse scelte di progettazione e implementazione quando si tratta di un progetto di NLP; 4) essere in grado di progettare, implementare e valutare un progetto specifico incentrato su compiti di NLP; 5) comprendere la nozione di Language Model e essere in grado di rilevare specificità e topic in un corpus di documenti testuali; 6) essere in grado di utilizzare lo stack Python di librerie e strumenti necessari per sviluppare un progetto NLP.
Periodo: Primo quadrimestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento può essere seguito come corso singolo.
Programma e organizzazione didattica
Edizione unica
Responsabile
Periodo
Primo quadrimestre
Programma
L'insegnamento fornisce un'introduzione approfondita ai principali temi di ricerca nell'ambito del Deep Learning applicato al Natural Language Processing. Oltre alle lezioni frontali, l'attività didattica prevede un progetto finale attraverso il quale gli studenti acquisiranno le competenze necessarie per progettare, implementare e comprendere i principali modelli di reti neurali per il linguaggio naturale, utilizzando Python e Pytorch.
Introduzione al Natural Language Processing
- Spazio vettoriale
- Tokenizzazione e normalizzazione del testo
- TfIdf
Introduzione alle reti neurali
- Problemi di classificazione
- Introduzione alle reti neurali
- Classificatori lineari e reti neurali
- Tutorial su PyTorch (base)
- Tutorial su PyTorch (deep learning)
Modelli linguistici
- Introduzione al concetto di modellazione linguistica
- Modello linguistico di Markov
Reti neurali come modelli linguistici
- Utilizzare le reti neurali come modelli linguistici
- Word2Vec e word embedding
Codifica del testo e apprendimento di sequenze
- Codifica di testo e sequenze
- Esempio semplice di RNN
- Classificazione di sequenze
- Generazione di sequenze
Transformers
- Architettura dei Transformers
- BERT
- GPT
Elaborazione delle immagini
- Fondamenti dell'elaborazione delle immagini
Modelli proprietari e prompt engineering
- Prompt Engineering
- AI spiegabile, bias ed etica
Spiegabilità
- Metodi SHAP
- Saliency
- Concept Activation
Bias e stereotipi
- Esempio semplice
- Masking
- Completamento del testo
Framework per LLM
- LLama-cpp
- vLLM
- MLX LM
Introduzione al Natural Language Processing
- Spazio vettoriale
- Tokenizzazione e normalizzazione del testo
- TfIdf
Introduzione alle reti neurali
- Problemi di classificazione
- Introduzione alle reti neurali
- Classificatori lineari e reti neurali
- Tutorial su PyTorch (base)
- Tutorial su PyTorch (deep learning)
Modelli linguistici
- Introduzione al concetto di modellazione linguistica
- Modello linguistico di Markov
Reti neurali come modelli linguistici
- Utilizzare le reti neurali come modelli linguistici
- Word2Vec e word embedding
Codifica del testo e apprendimento di sequenze
- Codifica di testo e sequenze
- Esempio semplice di RNN
- Classificazione di sequenze
- Generazione di sequenze
Transformers
- Architettura dei Transformers
- BERT
- GPT
Elaborazione delle immagini
- Fondamenti dell'elaborazione delle immagini
Modelli proprietari e prompt engineering
- Prompt Engineering
- AI spiegabile, bias ed etica
Spiegabilità
- Metodi SHAP
- Saliency
- Concept Activation
Bias e stereotipi
- Esempio semplice
- Masking
- Completamento del testo
Framework per LLM
- LLama-cpp
- vLLM
- MLX LM
Prerequisiti
atematica e statistica
- Algebra lineare (vettori, matrici, operazioni tensoriali)
- Calcolo differenziale (derivate, gradiente)
- Probabilità e statistica di base (distribuzioni, probabilità condizionata, MLE)
Programmazione
- Python livello intermedio (strutture dati, funzioni, classi, librerie NumPy/Pandas)
- Familiarità con ambienti di sviluppo (Jupyter Notebook, Google Colab o simili)
Machine Learning
- Concetti fondamentali di ML supervisionato (classificazione, regressione, overfitting)
- Conoscenze di base di ottimizzazione (discesa del gradiente)
Lingua
Capacità di lettura di testi tecnici in inglese, in quanto l'insegnamento è erogato in inglese e la letteratura scientifica di riferimento è prevalentemente in lingua inglese
- Algebra lineare (vettori, matrici, operazioni tensoriali)
- Calcolo differenziale (derivate, gradiente)
- Probabilità e statistica di base (distribuzioni, probabilità condizionata, MLE)
Programmazione
- Python livello intermedio (strutture dati, funzioni, classi, librerie NumPy/Pandas)
- Familiarità con ambienti di sviluppo (Jupyter Notebook, Google Colab o simili)
Machine Learning
- Concetti fondamentali di ML supervisionato (classificazione, regressione, overfitting)
- Conoscenze di base di ottimizzazione (discesa del gradiente)
Lingua
Capacità di lettura di testi tecnici in inglese, in quanto l'insegnamento è erogato in inglese e la letteratura scientifica di riferimento è prevalentemente in lingua inglese
Metodi didattici
L'insegnamento è erogato in forma di lezioni frontali con ampio ricorso a esempi e materiali di supporto in forma di notebook Python. E' previsto l'uso di slide e materiali didattici che saranno progressivamente resi disponibili sul sito web dell'insegnamento in piattaforma Ariel e sul repository GitHub dell'insegnamento (https://github.com/afflint/nlp).
La frequenza, per quanto non obbligatoria, è fortemente consigliata.
La frequenza, per quanto non obbligatoria, è fortemente consigliata.
Materiale di riferimento
- Manning, C. D., Raghavan, P., & Schütze, H. (2008). Introduction to information retrieval (Vol. 1, p. 496). Cambridge: Cambridge University Press. (Http://nlp.stanford.edu/IR-book/)
- Alfio Ferrara. Le macchine del linguaggio. L'uomo allo specchio dell'intelligenza artificiale. Einaudi, 2025.
- Coding e notebooks: https://github.com/afflint/nlp
- Appunti, notebook e materiali forniti dal docente e pubblicati sul sito web dell'insegnamento (Ariel)
- Alfio Ferrara. Le macchine del linguaggio. L'uomo allo specchio dell'intelligenza artificiale. Einaudi, 2025.
- Coding e notebooks: https://github.com/afflint/nlp
- Appunti, notebook e materiali forniti dal docente e pubblicati sul sito web dell'insegnamento (Ariel)
Modalità di verifica dell’apprendimento e criteri di valutazione
La verifica dell'apprendimento consiste in un colloquio orale su appuntamento, nelle date prefissate e comunicate dal docente sulla piattaforma Ariel e la cui valutazione costituisce il voto in 30esimi per la prova d'esame.
Il colloquio prende avvio dalla presentazione e discussione di un progetto individuale, sviluppato dallo studente al termine dell'insegnamento, e si estende alla verifica dei contenuti teorici dell'insegnamento stesso.
Il progetto affronta un tema legato agli argomenti del programma, che possono spaziare dall'implementazione di modelli di deep learning per il linguaggio naturale all'utilizzo e valutazione di modelli pre-addestrati, con particolare attenzione al panorama dei Large Language Models.
La valutazione tiene conto della comprensione piena dei contenuti del corso, della creatività e dell'attitudine scientifica nell'ideazione del progetto, e della capacità di trovare soluzioni efficaci a problemi tecnici dati.
Il colloquio prende avvio dalla presentazione e discussione di un progetto individuale, sviluppato dallo studente al termine dell'insegnamento, e si estende alla verifica dei contenuti teorici dell'insegnamento stesso.
Il progetto affronta un tema legato agli argomenti del programma, che possono spaziare dall'implementazione di modelli di deep learning per il linguaggio naturale all'utilizzo e valutazione di modelli pre-addestrati, con particolare attenzione al panorama dei Large Language Models.
La valutazione tiene conto della comprensione piena dei contenuti del corso, della creatività e dell'attitudine scientifica nell'ideazione del progetto, e della capacità di trovare soluzioni efficaci a problemi tecnici dati.
INFO-01/A - Informatica - CFU: 6
Lezioni: 48 ore
Docente:
Ferrara Alfio
Turni:
Turno
Docente:
Ferrara AlfioDocente/i
Ricevimento:
Su appuntamento. Il colloquio si svolgerà online dopo aver contattato il docente per posta elettronica.
Online. In caso di appuntamento di persona, Dipartimento di Informatica, via Celoria 18 Milano, Stanza 7012 (7 piano)