INTELLIGENZA ARTIFICIALE
cod. 06149

Anno accademico 2020/21
1° anno di corso - Secondo semestre
Docente
MORDONINI Monica
Settore scientifico disciplinare
Sistemi di elaborazione delle informazioni (ING-INF/05)
Campo
Ingegneria informatica
Tipologia attività formativa
Caratterizzante
48 ore
di attività frontali
6 crediti
sede: PARMA
insegnamento
in ITALIANO

Obiettivi formativi

Il corso si propone di presentare agli studenti le tecniche e le tecnologie progettate per riprodurre sul computer comportamenti intelligenti, tipici degli esseri viventi, con particolare attenzione all'ingegneria della conoscenza e alle tecniche di apprendimento automatico.

Conoscenza e comprensione

In particolare il corso si propone di illustrare
- le principali tecniche di rappresentazione della conoscenza utilizzate nell'intelligenza artificiale,
- le metodologie per la formulazione di problemi e soluzioni ben definite
- la gestione della conoscenza (certa o incerta) attraverso la logica e il ragionamento
- alcuni dei più importanti metodi di apprendimento automatico

Applicazione di conoscenza e comprensione

L'obiettivo principale ovviamente è fornire agli studenti le competenze per:
- formulare un problema che può essere risolto da un agente logico
- descrivere e rappresentare la conoscenza attraverso l'uso della logica
- analizzare le conoscenze presenti in un dominio e scegliere il metodo che è ritenuto più appropriato per la sua gestione
- risolvere un problema del mondo reale usando metodi di apprendimento automatico

Esprimere giudizi

Per realizzare il progetto finale, lo studente dovrà analizzare lo stato dell'arte in letteratura per motivare le scelte che vengono fatte nello sviluppo del compito.

Capacità comunicative

Le esercitazioni di laboratorio e il progetto possono essere realizzati in piccoli gruppi, promuovendo lo scambio di opinioni. Inoltre, la stesura del rapporto richiede una buona organizzazione logica e chiarezza nella comunicazione di dati e risultati.

Capacità di apprendimento

La capacità dello studente di guardare le cose da diverse prospettive è stimolata dall'integrazione di lezioni di teoria e attività di laboratorio.

Prerequisiti

Nessun corso propedeutico. Tuttavia, ci si aspetta che gli studenti possiedano buone capacità di base nella programmazione informatica e abilità analitiche.

Contenuti dell'insegnamento

1 Introduzione (2 ore)
1.1 Definizioni e approcci di base

2 Formalizzazione del problema e risoluzione dei problemi mediante la ricerca (6 ore)
2.1 Problemi e soluzioni ben definiti
2.2 Tecniche di ricerca non informate o cieche
2.3 Tecniche di ricerca parzialmente informate
2.4 Strategie di ricerca informate (euristiche)

3 Intelligenza artificiale e giochi (6 ore)
3.1 Giochi
3.2 Ricerca contraddittoria
3.3 Decisioni ottimali nei giochi multiplayer
3.4 Decisioni in tempo reale imperfette

4 Sviluppo di applicazioni IA (10 ore)
4.1 Ingegneria del software e IA
4.2 Analisi dei dati
4.3 Conoscenza certa e incerta
4.4 Elementi di teoria della probabilità

5 Rappresentazione della conoscenza (16 ore)
5.1 Agenti logici
5.2 Logica del primo ordine
5.2.1 Inferenza nella logica del primo ordine
5.3 Ingegneria della conoscenza nella logica del primo ordine
5.4 Logica di descrizione
5.5 Inferenza nella logica della descrizione
5.6 Ingegneria ontologica
5.7 Conoscenza incerta e ragionamento
5.8 Reti bayesiane
5.9 Logica fuzzy

6 Machine Learning (8 ore)
6.1 Imparare dagli esempi
6.2 Albero di decisione
6.3 Modello di rete neurale
6.4 Autoencoder

Programma esteso

1 Introduzione (2 ore)
1.1 Definizioni e primo approccio
1.2 Fondamenti dell'intelligenza artificiale
1.3 Storia dell'intelligenza artificiale
1.3.1 Nascita dell'intelligenza artificiale
1.3.2 L'IA diventa un settore
1.3.3 AI adotta il metodo scientifico

2 Formalizzazione del problema e risoluzione dei problemi mediante la ricerca (6 ore)
2.1 Problemi e soluzioni ben definiti
2.1.1 Formulare problemi
2.1.2 Problemi giocattolo
2.2 Tecniche di ricerca cieca
2.3 Tecniche di ricerca parzialmente informate
2.3.1 Problemi di contingenza
2.4 Strategie di ricerca informate (euristiche)
2.4.1 Funzioni euristiche

3 Intelligenza artificiale e giochi (6 ore)
3.1 Giochi
3.2 Ricerca contraddittoria
3.2 Decisioni ottimali nei giochi multiplayer
3.2.1 L'algoritmo minimax
3.3 Decisioni in tempo reale imperfette
3.3.1 Interruzione della ricerca
3.3.2 Potatura Alpha - Beta
3.4 Esempi
3.4.1 Partita a scacchi e Deep Blue
3.4.2 Il gioco di GO e DeepMind's AlphaGo

4 Distribuzione di applicazioni AI (10 ore)
4.1 Ingegneria del software e AI
4.1.1 Implementazione di un sistema esperto e del flusso di lavoro di ingegneria del software
4.2 Analisi dei dati
4.3 Processo di data science
4.4 Conoscenza certa e incerta
4.4.1 Problema reale di informazioni incerte
4.4.2 Quando c'è incertezza?
4.4 Elementi di teoria della probabilità
4.4.1 Probabilità incondizionata o a_priori
4.4.2 Probabilità condizionale o a_posteriori
4.4.3 Regola di Bayes
4.5 Labs

5 Rappresentazione della conoscenza (16 ore)
5.1 Agenti logici
5.1.1 Logica e ragionamento
5.2 Logica del primo ordine
5.2.1 Sintassi e semantica della logica del primo ordine
5.2.2 Inferenza nella logica del primo ordine
5.2.3 Forward and BackwardChaining
5.2.4 Clausola Forma normale e clausola di corno
5.3 Ingegneria della conoscenza nella logica del primo ordine
5.4 Logica di descrizione
5.4.1 Categorie e oggetti
5.4.2 Inferenza nella logica della descrizione
5.4.3 Sistemi di ragionamento per categorie
5.5 Ingegneria ontologica
5.6 Conoscenza incerta e ragionamento
5.6.1 Reti bayesiane
5.7.2 Logica fuzzy
5.7.2.1 Operazioni su set fuzzy
5.7.2.2 Inferenza in logica fuzzy

6 Machine Learning (8 ore)
6.1.1 Progettazione di un elemento di apprendimento
6.1.2 Tipi di apprendimento
6.2 Apprendimento dagli esempi (apprendimento induttivo)
6.2 Apprendimento dell'albero delle decisioni
6.2.1 Guadagno di informazioni tramite ottimizzazione di parametri
6.3 Modello di rete neurale
6.4 Autoencoder
6.5 Laboratori

Bibliografia

Russell & Novirg, Intelligenza Artificiale: Un Aprroccio Moderno, terzaEditione. Pr entice Hall, 2010

Metodi didattici

Lezioni frontali ed esercitazioni in laboratorio.
Le lezioni frontali copriranno gli aspetti teorici delle materie del corso.
Esercitazioni pratiche su problemi reali saranno svolte in laboratorio.

Modalità verifica apprendimento

Non ci sono prove a medio termine.
L'esame si compone di due parti:
i) una prova scritta composta da quattro domande aperte sugli argomenti teorici del corso trattati in classe con l'obiettivo di valutare le conoscenze acquisite su tali argomenti.

ii) una relazione scritta (e la sua presentazione orale) su un lavoro di progetto che esplora uno degli argomenti trattati in classe o nei laboratori, in modo da valutare la capacità di applicare le conoscenze acquisite durante il corso. Tuttavia, il valore della sua valutazione dipenderà anche dalla qualità del sistema sviluppato e dalla documentazione allegata.

L'esame viene superato se, in ciascuna delle due parti, lo studente raggiunge almeno la sufficienza.
Il voto finale è un punteggio medio ponderato ottenuto nella prova scritta (40%) e quello ottenuto nel lavoro di progetto (60%).
La lode viene data in caso di raggiungimento del punteggio più alto su tutti i parziali.

Altre informazioni

Nessun corso propedeutico. Tuttavia, ci si aspetta che gli studenti possiedano buone capacità di base nella programmazione informatica e abilità analitiche.