91251 - LANGUAGES AND ALGORITHMS FOR ARTIFICIAL INTELLIGENCE

Scheda insegnamento

Anno Accademico 2021/2022

Conoscenze e abilità da conseguire

Al termine dell'attività formativa, lo studente comprende le principali tecniche linguistiche ed algoritmiche usate nel contesto dell'AI, inclusi gli aspetti principali dei linguaggi funzionali, dei linguaggi logici e della programmazione con vincoli, sia negli aspetti teorici di base che per le relative applicazioni pratiche. Lo studente ha una comprensione dei principi di base dei modelli e degli algoritmi distribuiti, dei problemi di consenso e degli algoritmi a larga scala per l'analisi di grandi quantità di dati.

Contenuti

Modulo 1
Introduzione alla logica matematica. Unificazione. Risoluzione.
Introduzione alla programmazione logica. I linguaggi Prolog.
Programmazione logica con vincoli e programmazione concorrente con vincoli. Programmazione con vincoli. Il linguaggio MiniZinc.

Modulo 2
Il paradigma della programmazione e dell'apprendimento nei linguaggi per l'inferenza. Introduzione al linguaggio Scheme/Racket e sue estensioni probabilistiche Church/Gamble. Modelli generativi come programmi probabilistici. Programmazione bayesiana in Church/Gamble. L'apprendimento come inferenza condizionale. Algoritmi di inferenza (campionamento del rifiuto e Metropolis Hastings). Semantica operativa e inferenza per valutazione. Tempo permettendo, una panoramica della programmazione differenziabile.

Modulo 3
Introduzione alla teoria della calcolabilità e alla teoria della complessità. Indecidibilità. Le classi P, NP e EXP. Un modello formale di apprendimento: PAC learning. Apprendimento mediante convergenza uniforme. Il tredeoff bias/complexity. La dimensione VC.

Testi/Bibliografia

Modulo 1

Dirk van Dalen. Logic and structure. 4th edition, Springer.

K. Doets. From Logic to Logic Programming. The Mit

Press.Russell, Norvig. Artificial Intelligence: A Modern Approach (any edition). Pearson. 

Modulo 2

N. D. Goodman, J. B. Tenenbaum, and The ProbMods Contributors (2016). Probabilistic Models of Cognition (1st ed.). (available at http://v1.probmods.org/index.html)

Jan-Willem van de Meent, Brooks Paige, Hongseok Yang, Frank Wood, An introduction to probabilistic programming (available at https://arxiv.org/abs/1809.10756).

Modulo 3

Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach. Cambridge University Press, 2009.

Michael Kearns, Umesh. Vazirani. An Introduction to Computational Learning Theory. MIT Press, 1994.

Shai Shalev-Shwartz and Shai Ben-David. Understanding Machine Learning: From Theory to Algorithms. Cambridge University Press, 2014.

Metodi didattici

Lezioni frontali ed esercitazioni.

Modalità di verifica e valutazione dell'apprendimento

Esame orale e/o scritto alla fine di ogni modulo. Possibile progetto.

Strumenti a supporto della didattica

Esercitazioni in aula.

Orario di ricevimento

Consulta il sito web di Ugo Dal Lago

Consulta il sito web di Maurizio Gabbrielli

Consulta il sito web di Francesco Gavazzo