DEEP LEARNING FOR NATURAL LANGUAGE PROCESSING

Anno accademico
2026/2027 Programmi anni precedenti
Titolo corso in inglese
DEEP LEARNING FOR NATURAL LANGUAGE PROCESSING
Codice insegnamento
CM0624 (AF:577098 AR:323992)
Lingua di insegnamento
Inglese
Modalità
In presenza
Crediti formativi universitari
6
Livello laurea
Laurea magistrale (DM270)
Settore scientifico disciplinare
INF/01
Periodo
I Semestre
Anno corso
2
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
Il corso introduce i fondamenti teorici, metodologici e pratici del Deep Learning applicato all’elaborazione del linguaggio naturale. Il percorso accompagna gli studenti dai metodi statistici e neurali di base fino alla progettazione, all’adattamento e alla valutazione dei moderni sistemi basati su Large Language Models.

Il programma è organizzato in cinque blocchi.

Blocco 1 — Fondamenti del NLP e modellazione statistica
Il primo blocco introduce i principali problemi del Natural Language Processing e gli strumenti matematici e computazionali necessari per affrontarli.

Argomenti:
- introduzione al NLP e ai Large Language Models;
- fondamenti matematici e dell’apprendimento automatico;
- elaborazione e tokenizzazione del testo;
- regressione logistica e classificazione testuale;
- modelli linguistici n-gram.

Blocco 2 — Rappresentazioni neurali e modelli sequenziali
Il secondo blocco introduce le rappresentazioni apprese e i modelli neurali per l’elaborazione di sequenze linguistiche.

Argomenti:
- modelli linguistici neurali feed-forward;
- rappresentazioni latenti delle parole;
- programmazione NLP con PyTorch;
- reti neurali ricorrenti;
- modelli sequence-to-sequence;
- attenzione classica e self-attention.

Blocco 3 — Transformer e modellazione generativa
Il terzo blocco presenta l’architettura Transformer e le principali famiglie di modelli pretrained.

Argomenti:
- architettura Transformer;
- configurazioni encoder-only, decoder-only ed encoder–decoder;
- modalità di pretraining;
- generazione del linguaggio;
- modelli text-to-text, incluso T5;
- fine-tuning di modelli Transformer per compiti strutturati e generativi.

Blocco 4 — Adattamento ed estensione dei modelli linguistici
Il quarto blocco esamina le metodologie utilizzate per trasformare un modello pretrained in un sistema NLP completo.

Argomenti:
- rappresentazioni di frase e retrieval semantico;
- Retrieval-Augmented Generation;
- post-training e alignment;
- ottimizzazione e modelli long-context;
- analisi dei parametri dei Transformer;
- Parameter-Efficient Fine-Tuning;
- implementazione di un Transformer decoder-only ispirato a Llama.

Blocco 5 — Reasoning, agenti, valutazione e sicurezza
Il blocco conclusivo affronta le capacità, le applicazioni e i rischi dei moderni sistemi basati su LLM.

Argomenti:
- reasoning models;
- agenti basati su LLM e uso di strumenti esterni;
- valutazione di sistemi NLP e LLM;
- sicurezza dei modelli linguistici;
- privacy e memorizzazione dei dati di addestramento.
Al termine del corso, lo studente sarà in grado di:
- comprendere i fondamenti linguistici, matematici e computazionali dell’NLP;
- descrivere l’evoluzione dai modelli linguistici statistici ai modelli neurali e ai Transformer;
- elaborare e tokenizzare collezioni di testi;
- implementare e utilizzare algoritmi per la classificazione, la rappresentazione e la generazione del testo;
- comprendere e applicare reti neurali, modelli ricorrenti, modelli sequence-to-sequence e meccanismi di attenzione;
- comprendere l’architettura Transformer e le principali famiglie di modelli linguistici;
- utilizzare PyTorch e Transformers per sviluppare e addestrare modelli NLP;
- applicare tecniche di fine-tuning completo e parameter-efficient fine-tuning;
- costruire sistemi per la rappresentazione delle frasi, il recupero semantico e la RAG;
- selezionare metriche e protocolli adeguati per la valutazione di sistemi NLP e LLM;
- comprendere i principi del post-training, dell’allineamento, dello scaling e della gestione del contesto esteso;
- analizzare criticamente qualità, provenienza e rappresentatività dei dati, nonché i rischi, i limiti e gli impatti sociali dei sistemi NLP;
- scegliere modelli e metodologie appropriati in funzione dei requisiti di una specifica applicazione.
Sono consigliate conoscenze di base di algebra lineare, probabilità, statistica e apprendimento automatico. Due lezioni saranno comunque dedicate a questi argomenti.

Per le attività pratiche è richiesta una conoscenza di base della programmazione in Python. Una precedente familiarità con PyTorch e con la libreria Transformers è utile, ma non obbligatoria.
1 Non-technical Intro Introduction to NLP and LLMs
2 Primer Mathematical and Learning Foundations + Neural Networks intro
3 Lecture Text Processing and Tokenization
4 Lecture Logistic Regression and Text Classification
5 Lecture N-gram Language Models
6 Lecture Neural Language Models (and RNN LM ?)
7 Lecture Distributed Word Representations
8 Lab PyTorch NLP Lab
9 Lecture RNNs, Seq2Seq and Classical Attention
10 Lecture Self-Attention
11 Lecture Transformer Architecture
12 Lecture Pretraining Objectives and Model Families
13 Lecture Language Generation + T5
14 Lab Transformers Coding Lab - Structured and Text-to-Text NLP (fine-tuning)
15 Lecture Sentence Representations and Retrieval
16 Lecture Retrieval-Augmented Generation
17 Lecture Post-Training and Alignment
18 Lecture Scaling and Long-Context Models
19 Lecture Transformer Parameters and Parameter Efficient Fine-Tuning
20 Lab Building a Decoder-Only Transformer Model Like Llama
21 Lecture Reasoning models
22 Lecture LLM agents and Tools
23 Lecture Evaluation of NLP Systems and LLMs
24 Lecture LLM security & memorization
Il testo principale di riferimento è:

Daniel Jurafsky and James H. Martin, Speech and Language Processing, 3rd edition draft. https://web.stanford.edu/~jurafsky/slp3/

Slide, articoli scientifici, notebook, esempi di codice e altri materiali necessari saranno messi a disposizione attraverso Moodle. Eventuali risorse integrative saranno indicate durante il corso.
La verifica dell’apprendimento consiste in una prova orale sull’intero programma del corso. Saranno valutate la conoscenza degli argomenti, la capacità di collegare e applicare i concetti, il pensiero critico e l’uso appropriato del linguaggio tecnico.

Facoltativamente, lo studente potrà sviluppare un progetto individuale in Python, da concordare preventivamente con il docente. Il progetto sarà valutato sulla base della qualità metodologica e tecnica, dell’analisi dei risultati e della presentazione e potrà contribuire con un massimo di 3 punti alla valutazione finale. Il progetto non sostituisce la prova orale e i punti saranno attribuiti solo in caso di superamento dell’esame.

L’esame si svolge in forma orale e verte sull’intero programma del corso. Lo studente dovrà dimostrare la conoscenza dei concetti teorici, dei modelli, degli algoritmi e delle metodologie affrontate.

L’eventuale progetto individuale sarà presentato e discusso durante l’esame e potrà attribuire fino a 3 punti aggiuntivi, nel rispetto del voto massimo previsto.

Il docente vigila sull’autenticità e sull’originalità delle prove. In caso di sospette irregolarità, potrà richiedere un ulteriore approfondimento, anche con modalità differenti.
orale

Il/la docente ha il dovere di vigilare affinché siano rispettate le regole di autenticità e originalità delle prove d'esame. Di conseguenza, nei casi in cui vi sia il sospetto di un comportamento irregolare, l'esame può prevedere un ulteriore approfondimento, contestuale alla prova d'esame, che potrà essere realizzato anche in modalità differente rispetto alle modalità sopra riportate.

I criteri per la valutazione sono i seguenti:

18–22: conoscenza sufficiente, capacità applicative essenziali e linguaggio tecnico adeguato.
23–26: discreta conoscenza, buona capacità di collegare e applicare i concetti e adeguata capacità critica.
27–30: conoscenza approfondita, autonomia nell’applicazione dei concetti, ottima capacità critica ed espositiva.

Lode: conoscenza eccellente, piena autonomia di giudizio e capacità di elaborazione originale.
L’insegnamento comprende:

- lezioni frontali dedicate ai fondamenti teorici e metodologici;
- discussione di esempi, casi di studio e articoli scientifici;
- esercitazioni guidate;
- laboratori di programmazione in Python;
- attività di progettazione, implementazione e valutazione di sistemi NLP.

Le attività pratiche permetteranno agli studenti di consolidare i concetti teorici attraverso l’utilizzo di PyTorch e Transformers e attraverso l’implementazione di componenti fondamentali dei moderni modelli linguistici.
Programma definitivo.
Data ultima modifica programma: 25/09/2026