Natural language processing

A.A. 2026/2027
6
Crediti massimi
48
Ore totali
SSD
INFO-01/A
Lingua
Inglese
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.
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
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
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.
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)
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.
INFO-01/A - Informatica - CFU: 6
Lezioni: 48 ore
Docente: Ferrara Alfio
Turni:
Turno
Docente: Ferrara Alfio
Docente/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)