Natural language processing

A.A. 2024/2025
6
Crediti massimi
48
Ore totali
SSD
INF/01
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
Secondo semestre

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 TRATTAMENTO AUTOMATICO DEL LINGUAGGIO NATURALE
Introduzione all'insegnamento, modalità e calendario degli esami. Tokenizzazione e indicizzazione basata sulla frequenza.

VECTOR SPACE MODEL, VALUTAZIONE E FEEDBACK
Scoring, ponderazione dei termini e modello dello spazio vettoriale. Preelaborazione del testo. Valutazione di un sistema di information retrieval. Feedback sulla pertinenza e query expansion. Miglioramento delle prestazioni tramite feedback.

CLASSIFICAZIONE DEL TESTO E TOPIC MODELING
Modelli supervisionati e non supervisionati per la classificazione del testo. Scomposizioni matriciali e topic models. Implementazione e utilizzo di LDA. Apprendimento zero-shot. Introduzione ai modelli di classificazione del deep learning.

INTRODUZIONE AL DEEP LEARNING PER NLP
Backpropagation e reti neurali feedforward. Vettori di parole e documenti. Word2Vec.

LANGUAGE MODELS
Reti neurali ricorrenti e language models. Vanishing gradients, apprendimento Seq2Seq. Modelli LSTM e GRU. Architetture Encoder-Decoder per l'apprendimento di sequenze. Autoencoders.

ATTENZIONE E TRASFORMATORI
Meccanismo di attenzione nell'architettura encoder-decoder. Alcuni modelli di trasformatori: BERT. GPL2.

APPLICAZIONI
Generazione del linguaggio naturale. Integrazione delle basi di conoscenza nei modelli linguistici.
Prerequisiti
Conoscenza intermedia di Python. Conoscenza di base delle derivate e comprensione della notazione e delle operazioni matriciali/vettoriali. Cenni di probabilità e distribuzioni gaussiane.
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/)
- Appunti, notebook e materiali forniti dal docente e pubblicati sul sito web dell'insegnamento (https://aferrarair.ariel.ctu.unimi.it)
Modalità di verifica dell’apprendimento e criteri di valutazione
Sviluppo di un progetto. L'argomento del progetto deve essere discusso in precedenza con il docente. Il progetto dovrebbe dimostrare la comprensione degli argomenti delle lezioni e la capacità di proporre e motivare soluzioni innovative a specifici problemi di ricerca.
Il progetto sarà valutato attraverso una discussione con il docente sui risultati del progetto e sugli argomenti correlati. La valutazione terrà conto sia del progetto sia del colloquio.
L'uso del servizio SIFA per partecipare all'esame è obbligatorio. Dopo la registrazione a un esame su SIFA, gli studenti sono invitati a contattare il docente per programmare la discussione.
INF/01 - 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)