Appunti di Intelligenza Artificiale
Sbobine del Corso
A.A. 2025-2026
Indice
1 Il concetto di agente
1.1 Agente e ambienti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Interazione Agente-Ambiente . . . . . . . . . . . . . . . . . . . . .
1.1.2 Analisi di Sistemi Agenti . . . . . . . . . . . . . . . . . . . . . . . .
1.1.3 La Funzione Agente: Definizione Formale . . . . . . . . . . . . . . .
1.1.4 Metodologie di Progettazione . . . . . . . . . . . . . . . . . . . . .
1.2 Il comportamento razionale . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Definizione Formale di Razionalità . . . . . . . . . . . . . . . . . .
1.2.2 Tassonomia degli Ambienti . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 Limiti e Capacità dell’Agente Razionale . . . . . . . . . . . . . . .
1.3 Architetture degli agenti . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 Classificazione delle Architetture . . . . . . . . . . . . . . . . . . .
1.3.2 Apprendimento negli Agenti . . . . . . . . . . . . . . . . . . . . . .
10
10
10
10
11
11
11
11
12
12
13
13
13
2 Risoluzione di problemi tramite ricerca
2.1 Formulazione di un problema di ricerca . . . . . . . . . . . . . . . . . . . .
2.1.1 Il caso studio: il gioco dell’otto . . . . . . . . . . . . . . . . . . . .
2.1.2 Elementi costitutivi di un problema di ricerca . . . . . . . . . . . .
2.1.3 Lo spazio degli stati . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4 Complessità computazionale . . . . . . . . . . . . . . . . . . . . . .
2.1.5 Ambiente di riferimento . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Esempi di problemi di ricerca . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1 Sequenze di montaggio automatico . . . . . . . . . . . . . . . . . .
2.2.2 Pianificazione del percorso (Path-planning) . . . . . . . . . . . . . .
2.3 La ricerca delle soluzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Distinzione tra Stati e Nodi . . . . . . . . . . . . . . . . . . . . . .
2.3.2 Algoritmo di Ricerca Generale . . . . . . . . . . . . . . . . . . . . .
2.3.3 La Frontiera e la Strategia . . . . . . . . . . . . . . . . . . . . . . .
2.3.4 Valutazione delle Strategie di Ricerca . . . . . . . . . . . . . . . . .
15
15
15
15
15
16
16
16
16
17
17
18
18
18
18
3 Strategie di ricerca non informate
3.1 Ricerca in ampiezza (Breadth-first search) . . . . . . . . . . . . . . . . . .
3.1.1 Meccanismo di Funzionamento . . . . . . . . . . . . . . . . . . . . .
3.1.2 Analisi della Strategia . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3 Considerazioni Critiche . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Ricerca in profondità (Depth-first search) . . . . . . . . . . . . . . . . . . .
3.2.1 Meccanismo di Funzionamento . . . . . . . . . . . . . . . . . . . . .
3.2.2 Analisi della Strategia . . . . . . . . . . . . . . . . . . . . . . . . .
20
20
20
20
21
21
21
21
1
3.2.3 Varianti della Ricerca in Profondità . . . . . . . . . . . . . . . . . .
3.2.4 Ricerca Bidirezionale . . . . . . . . . . . . . . . . . . . . . . . . . .
Ricerca senza stati ripetuti . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 La Lista Chiusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Algoritmo di Ricerca con Gestione dei Cicli . . . . . . . . . . . . .
3.3.3 Impatto sulle Strategie di Ricerca . . . . . . . . . . . . . . . . . . .
3.3.4 Esempio: Ricerca a costo uniforme (UCS) . . . . . . . . . . . . . .
22
22
22
23
23
23
23
4 Strategie di ricerca informate
4.1 Ricerca Best-first (greedy) . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Esempi di euristiche nel gioco dell’otto . . . . . . . . . . . . . . . .
4.1.2 Il problema dei minimi locali . . . . . . . . . . . . . . . . . . . . . .
4.1.3 Valutazione della strategia . . . . . . . . . . . . . . . . . . . . . . .
4.2 Ricerca A-star (A∗ ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 La funzione di valutazione f (n) . . . . . . . . . . . . . . . . . . . .
4.2.2 Esempio: Il gioco dell’otto . . . . . . . . . . . . . . . . . . . . . . .
4.2.3 Amissibilità e Ottimalità . . . . . . . . . . . . . . . . . . . . . . . .
4.2.4 Comportamento in presenza di ostacoli . . . . . . . . . . . . . . . .
4.2.5 Analisi della strategia . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Ottimalità della ricerca A-star . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Amissibilità e Consistenza . . . . . . . . . . . . . . . . . . . . . . .
4.3.2 Teoremi di Ottimalità . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3 Efficienza Ottima . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.4 Dominanza tra Euristiche . . . . . . . . . . . . . . . . . . . . . . .
25
25
25
26
26
26
26
26
27
27
27
27
27
28
28
28
5 Ricerca con avversari
5.0.1 Il modello dei giochi in IA . . . . . . . . . . . . . . . . . . . . . . .
5.0.2 Formulazione del gioco come problema di ricerca . . . . . . . . . . .
5.1 L’algoritmo Minimax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1 La funzione di valutazione E(S) . . . . . . . . . . . . . . . . . . . .
5.1.2 Calcolo dei valori Minimax . . . . . . . . . . . . . . . . . . . . . . .
5.2 Potatura alfa-beta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Principio di Funzionamento . . . . . . . . . . . . . . . . . . . . . .
5.2.2 Algoritmo Generale di Potatura . . . . . . . . . . . . . . . . . . . .
5.2.3 Analisi della Complessità . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Esempi e applicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1 Lo stato dell’arte: Scacchi e Dama . . . . . . . . . . . . . . . . . .
5.3.2 Il problema del Go . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.3 Giochi stocastici: Expected Minimax . . . . . . . . . . . . . . . . .
29
29
29
30
30
30
30
31
31
31
31
32
32
32
6 La rappresentazione delle conoscenze
6.1 Agenti e conoscenze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1 L’azione razionale e il ruolo della conoscenza . . . . . . . . . . . . .
6.1.2 Tipologie di Rappresentazione . . . . . . . . . . . . . . . . . . . . .
6.1.3 Rappresentazione negli Agenti Artificiali . . . . . . . . . . . . . . .
6.2 Tipi di conoscenze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1 Conoscenza Dichiarativa e Procedurale . . . . . . . . . . . . . . . .
6.2.2 Classificazione della Conoscenza Dichiarativa . . . . . . . . . . . . .
6.2.3 Classificazione della Conoscenza Procedurale . . . . . . . . . . . . .
33
33
33
33
34
34
35
35
36
3.3
2
6.3
Le fonti delle conoscenze . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1 L’esperienza individuale . . . . . . . . . . . . . . . . . . . . . . . .
6.3.2 La comunicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.3 L’inferenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.4 Mappatura tra fonti e tipologie di conoscenza . . . . . . . . . . . .
36
36
36
37
37
7 Le conoscenze procedurali
7.1 Sistemi di produzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1 Architettura del Sistema . . . . . . . . . . . . . . . . . . . . . . . .
7.1.2 La Base dei Fatti . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.3 La Base delle Regole . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.4 Il Ciclo di Riconoscimento-Azione . . . . . . . . . . . . . . . . . . .
7.1.5 Esempio Pratico: Sistema di Allarme . . . . . . . . . . . . . . . . .
7.2 L’interprete e la pianificazione . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Esempio: Il mondo dei cubetti . . . . . . . . . . . . . . . . . . . . .
7.2.2 Gestione degli Indici e Variabili . . . . . . . . . . . . . . . . . . . .
7.2.3 Meccanismi di Concatenamento (Chaining) . . . . . . . . . . . . . .
7.2.4 Evoluzione Dinamica della Base dei Fatti . . . . . . . . . . . . . . .
38
38
38
38
39
39
40
40
40
40
41
41
8 Le conoscenze dichiarative
8.1 La logica simbolica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.1 Componenti di un sistema logico . . . . . . . . . . . . . . . . . . .
8.1.2 La Logica dei Predicati del Primo Ordine (FOL) . . . . . . . . . . .
8.1.3 Definizione formale del linguaggio logico . . . . . . . . . . . . . . .
8.2 Logica e conoscenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.1 Predicati Primitivi e Derivati . . . . . . . . . . . . . . . . . . . . .
8.2.2 Assiomi Nomologici e Terminologici . . . . . . . . . . . . . . . . . .
8.2.3 Definizioni Ricorsive . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.4 Conoscenze Fattuali e Deduzione . . . . . . . . . . . . . . . . . . .
8.3 La deduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3.1 Il calcolo della deduzione naturale . . . . . . . . . . . . . . . . . . .
8.3.2 Conoscenza e deducibilità . . . . . . . . . . . . . . . . . . . . . . .
8.3.3 Assunzioni per basi di conoscenza pratiche . . . . . . . . . . . . . .
42
42
42
42
43
44
44
44
45
45
45
45
46
46
9 La pianificazione dell’azione
9.1 Piani d’azione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.1.1 Architettura di un agente razionale . . . . . . . . . . . . . . . . . .
9.1.2 Rappresentazione della conoscenza per la pianificazione . . . . . . .
9.1.3 Schemi d’azione . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.1.4 Processi cognitivi e operativi . . . . . . . . . . . . . . . . . . . . . .
9.2 Il pianificatore di STRIPS . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.1 Meccanismo di riduzione delle discrepanze . . . . . . . . . . . . . .
9.2.2 Esempio: Risoluzione di un conflitto nel mondo dei cubetti . . . . .
9.2.3 Proiezione del piano . . . . . . . . . . . . . . . . . . . . . . . . . .
47
47
47
47
48
48
48
48
49
49
10 La pianificazione dell’azione, parte 2
10.1 Alcuni problemi di STRIPS . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.1 Assunzioni fondamentali . . . . . . . . . . . . . . . . . . . . . . . .
10.1.2 Limiti dei piani lineari . . . . . . . . . . . . . . . . . . . . . . . . .
50
50
50
50
3
10.1.3 Indeterminatezza e obiettivi congiunti . . . . . . . . . . . . . . . . .
10.1.4 L’anomalia di Sussman . . . . . . . . . . . . . . . . . . . . . . . . .
10.2 Piani parzialmente ordinati . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2.1 Il parallelismo nella pianificazione . . . . . . . . . . . . . . . . . . .
10.2.2 Interferenze e vincoli di precedenza . . . . . . . . . . . . . . . . . .
10.2.3 Linearizzazione e ottimalità . . . . . . . . . . . . . . . . . . . . . .
51
51
51
51
52
52
11 Sistemi esperti
11.1 Cos’è un sistema esperto? . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.1 Architettura del sistema . . . . . . . . . . . . . . . . . . . . . . . .
11.1.2 Meccanismi di inferenza: Concatenamento . . . . . . . . . . . . . .
11.1.3 Risoluzione dei conflitti . . . . . . . . . . . . . . . . . . . . . . . . .
11.2 Progettazione di un sistema esperto . . . . . . . . . . . . . . . . . . . . . .
11.2.1 Il team di progetto . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.2 Fasi di sviluppo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.3 Acquisizione della conoscenza . . . . . . . . . . . . . . . . . . . . .
11.2.4 Strumenti per lo sviluppo . . . . . . . . . . . . . . . . . . . . . . .
11.3 Applicazioni di sistemi esperti . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.1 Sistemi di diagnosi . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.2 Analisi dei dati e Data Mining . . . . . . . . . . . . . . . . . . . . .
11.3.3 Configurazione di sistemi . . . . . . . . . . . . . . . . . . . . . . . .
11.3.4 Supporto alle decisioni . . . . . . . . . . . . . . . . . . . . . . . . .
11.3.5 Limiti e gestione dell’incertezza . . . . . . . . . . . . . . . . . . . .
53
53
53
53
54
54
54
55
55
56
56
56
56
57
57
57
12 Trattamento dell’incertezza
12.1 Perché trattare l’incertezza? . . . . . . . . . . . . . . . . . . . . . . . . . .
12.1.1 Ignoranza e Incertezza . . . . . . . . . . . . . . . . . . . . . . . . .
12.1.2 Sorgenti di incertezza . . . . . . . . . . . . . . . . . . . . . . . . . .
12.1.3 Approcci alla rappresentazione . . . . . . . . . . . . . . . . . . . . .
12.2 Modelli per il trattamento dell’incertezza . . . . . . . . . . . . . . . . . . .
12.2.1 Misure del Grado di Credenza: La Probabilità . . . . . . . . . . . .
12.2.2 Teoria della Credenza (Dempster-Shafer) . . . . . . . . . . . . . . .
12.2.3 Teoria della Possibilità . . . . . . . . . . . . . . . . . . . . . . . . .
12.2.4 Probabilità Soggettive e Certainty Factors . . . . . . . . . . . . . .
12.2.5 Grado di Credenza vs Grado di Verità . . . . . . . . . . . . . . . .
58
58
58
58
59
59
60
60
60
61
61
13 Insiemi fuzzy
13.1 Motivazioni: programmare con le parole . . . . . . . . . . . . . . . . . . .
13.1.1 Modelli linguistici e variabili ordinali . . . . . . . . . . . . . . . . .
13.1.2 Ragionamento e astrazione . . . . . . . . . . . . . . . . . . . . . . .
13.1.3 Il problema del Symbol Grounding . . . . . . . . . . . . . . . . . .
13.2 Cos’è un insieme fuzzy? . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2.1 La funzione di appartenenza . . . . . . . . . . . . . . . . . . . . . .
13.2.2 Definizione di un insieme fuzzy . . . . . . . . . . . . . . . . . . . .
13.2.3 Tipologie di funzioni di appartenenza . . . . . . . . . . . . . . . . .
13.2.4 Insiemi fuzzy su scale ordinali non numeriche . . . . . . . . . . . .
13.3 Operazioni su insiemi fuzzy . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.1 Operatori Standard . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3.2 Caratteristiche delle Operazioni Fuzzy . . . . . . . . . . . . . . . .
62
62
62
62
63
63
63
64
64
64
65
65
65
4
13.3.3 Esempi Applicativi su Forme Particolari . . . . . . . . . . . . . . . 65
14 Logica fuzzy e regole fuzzy
14.1 Introduzione alla logica fuzzy . . . . . . . . . . . . . . . . . . . . . . . . .
14.1.1 Proposizioni e variabili linguistiche . . . . . . . . . . . . . . . . . .
14.1.2 Determinazione del valore di verità . . . . . . . . . . . . . . . . . .
14.1.3 Operatori logici di composizione . . . . . . . . . . . . . . . . . . . .
14.1.4 Differenze con la logica booleana e superamento dei paradossi . . .
14.2 Regole fuzzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.2.1 Tipologie di regole . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.2.2 Il processo di inferenza fuzzy . . . . . . . . . . . . . . . . . . . . . .
14.2.3 Metodi di defuzzificazione . . . . . . . . . . . . . . . . . . . . . . .
14.3 Progettazione di sistemi a regole fuzzy . . . . . . . . . . . . . . . . . . . .
14.3.1 Definizione del problema . . . . . . . . . . . . . . . . . . . . . . . .
14.3.2 Parametrizzazione del sistema . . . . . . . . . . . . . . . . . . . . .
14.3.3 Verifica e testing . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.3.4 Strumenti e implementazione . . . . . . . . . . . . . . . . . . . . .
67
67
67
67
68
68
68
68
69
69
70
70
70
71
71
15 Controllo fuzzy e altre applicazioni
15.1 Controllo fuzzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.1.1 Architettura e vantaggi . . . . . . . . . . . . . . . . . . . . . . . . .
15.1.2 Esempi applicativi storici e industriali . . . . . . . . . . . . . . . .
15.1.3 Elettrodomestici e sistemi a basso costo . . . . . . . . . . . . . . . .
15.1.4 Integrazione e sistemi complessi . . . . . . . . . . . . . . . . . . . .
15.2 Altre applicazioni fuzzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.2.1 Information Retrieval e Basi di Dati Fuzzy . . . . . . . . . . . . . .
15.2.2 Sistemi di Supporto alle Decisioni (DSS) . . . . . . . . . . . . . . .
15.2.3 Pianificazione della Produzione . . . . . . . . . . . . . . . . . . . .
15.2.4 Trasparenza e Condivisione dei Modelli . . . . . . . . . . . . . . . .
72
72
72
72
73
73
73
73
74
74
74
16 Apprendimento automatico
16.1 Paradigmi di apprendimento . . . . . . . . . . . . . . . . . . . . . . . . . .
16.1.1 Componenti fondamentali . . . . . . . . . . . . . . . . . . . . . . .
16.1.2 Tipologie di apprendimento . . . . . . . . . . . . . . . . . . . . . .
16.2 Classificazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.2.1 Dalla realtà fisica ai dati: il processo di modellizzazione . . . . . . .
16.2.2 Estrazione e applicazione del modello . . . . . . . . . . . . . . . . .
16.2.3 Struttura del processo di classificazione . . . . . . . . . . . . . . . .
16.3 Ipotesi induttiva e generalizzazione . . . . . . . . . . . . . . . . . . . . . .
16.3.1 Formalizzazione del problema . . . . . . . . . . . . . . . . . . . . .
16.3.2 Tipologie di problemi . . . . . . . . . . . . . . . . . . . . . . . . . .
16.3.3 L’ipotesi induttiva . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.3.4 Generalizzazione e valutazione . . . . . . . . . . . . . . . . . . . . .
75
75
75
75
76
76
77
77
77
78
78
78
78
17 Alberi di decisione
17.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17.1.1 Struttura dell’albero . . . . . . . . . . . . . . . . . . . . . . . . . .
17.1.2 Processo di costruzione e ottimizzazione . . . . . . . . . . . . . . .
17.1.3 Criteri di selezione degli attributi . . . . . . . . . . . . . . . . . . .
80
80
80
80
81
5
17.2 Entropia e Information Gain . . . . . . . . . . . . . . . . . . . . . . . . . .
17.2.1 L’Entropia come misura di disordine . . . . . . . . . . . . . . . . .
17.2.2 Information Gain (Guadagno di Informazione) . . . . . . . . . . . .
17.2.3 Selezione dell’attributo migliore . . . . . . . . . . . . . . . . . . . .
17.2.4 Esempio di calcolo: L’attributo "Cielo" . . . . . . . . . . . . . . . .
17.3 Costruzione e semplificazione . . . . . . . . . . . . . . . . . . . . . . . . .
17.3.1 L’algoritmo ricorsivo di costruzione . . . . . . . . . . . . . . . . . .
17.3.2 Il problema dell’overfitting e le tecniche di potatura . . . . . . . . .
17.3.3 L’Inductive Bias negli alberi di decisione . . . . . . . . . . . . . . .
81
81
82
82
82
83
83
83
84
18 Regole di classificazione
18.1 Gli algoritmi di Sequential Covering . . . . . . . . . . . . . . . . . . . . . .
18.1.1 Struttura e funzionamento . . . . . . . . . . . . . . . . . . . . . . .
18.1.2 L’algoritmo di Sequential Covering . . . . . . . . . . . . . . . . . .
18.1.3 Ottimizzazione e ordinamento . . . . . . . . . . . . . . . . . . . . .
18.1.4 La procedura Learn-one-rule . . . . . . . . . . . . . . . . . . . . . .
18.2 Algoritmo Learn-one-rule . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.2.1 Funzionamento del processo di ricerca . . . . . . . . . . . . . . . . .
18.2.2 Misura della Performance . . . . . . . . . . . . . . . . . . . . . . .
18.2.3 Strategia di esplorazione e limiti . . . . . . . . . . . . . . . . . . . .
18.2.4 Estensioni: Beam Search . . . . . . . . . . . . . . . . . . . . . . . .
18.3 Regole e alberi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.3.1 Confronto strutturale e metodologico . . . . . . . . . . . . . . . . .
18.3.2 Trasformazione di alberi in regole . . . . . . . . . . . . . . . . . . .
18.3.3 Vantaggi della rappresentazione a regole . . . . . . . . . . . . . . .
18.3.4 Semplificazione e Pruning . . . . . . . . . . . . . . . . . . . . . . .
85
85
85
85
86
86
86
86
86
87
87
87
87
88
88
88
19 Neuroni naturali e artificiali
19.1 Dal neurone naturale al percettrone . . . . . . . . . . . . . . . . . . . . . .
19.1.1 Il neurone biologico . . . . . . . . . . . . . . . . . . . . . . . . . . .
19.1.2 Il neurone artificiale . . . . . . . . . . . . . . . . . . . . . . . . . .
19.1.3 Funzioni di attivazione . . . . . . . . . . . . . . . . . . . . . . . . .
19.1.4 Il Percettrone di Rosenblatt . . . . . . . . . . . . . . . . . . . . . .
19.1.5 Apprendimento dei pesi . . . . . . . . . . . . . . . . . . . . . . . .
19.2 Apprendimento nel percettrone . . . . . . . . . . . . . . . . . . . . . . . .
19.2.1 L’apprendimento hebbiano . . . . . . . . . . . . . . . . . . . . . . .
19.2.2 L’algoritmo di addestramento . . . . . . . . . . . . . . . . . . . . .
19.2.3 Il problema dello XOR e la separabilità lineare . . . . . . . . . . . .
19.2.4 Verso le reti multi-strato e la Back-propagation . . . . . . . . . . .
89
89
89
89
90
90
90
90
91
91
91
92
20 Reti neurali artificiali
20.1 Richiami su stima a massima verosimiglianza . . . . . . . . . . . . . . . . .
20.1.1 Il concetto di stima a massima verosimiglianza (MLE) . . . . . . .
20.1.2 Procedura formale di calcolo . . . . . . . . . . . . . . . . . . . . . .
20.1.3 Minimizzazione numerica: la discesa del gradiente . . . . . . . . . .
20.1.4 Problematiche dei metodi numerici . . . . . . . . . . . . . . . . . .
20.2 Reti neurali a topologia Feed-Forward . . . . . . . . . . . . . . . . . . . . .
20.2.1 Struttura e organizzazione in strati . . . . . . . . . . . . . . . . . .
20.2.2 L’apprendimento come ottimizzazione statistica . . . . . . . . . . .
93
93
93
93
94
94
94
95
95
6
20.3 Back-propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20.3.1 Principio di funzionamento . . . . . . . . . . . . . . . . . . . . . . .
20.3.2 Formalismo matematico e derivazione . . . . . . . . . . . . . . . . .
20.3.3 Requisito di derivabilità . . . . . . . . . . . . . . . . . . . . . . . .
20.3.4 Apprendimento Batch vs. Online . . . . . . . . . . . . . . . . . . .
95
96
96
96
96
21 Reti neurali: scelta del modello
98
21.1 Tecniche di apprendimento per reti neurali Feed-Forward . . . . . . . . . . 98
21.1.1 Topologia della rete . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
21.1.2 Algoritmi di ottimizzazione e accelerazione . . . . . . . . . . . . . . 99
21.1.3 Il problema dei minimi locali . . . . . . . . . . . . . . . . . . . . . . 99
21.1.4 Determinazione del numero di neuroni nascosti . . . . . . . . . . . . 99
21.2 Overfitting: limitiamo i danni . . . . . . . . . . . . . . . . . . . . . . . . . 100
21.2.1 Complessità del modello e Generalizzazione . . . . . . . . . . . . . 100
21.2.2 Tecniche di valutazione della generalizzazione . . . . . . . . . . . . 100
21.2.3 Strategie di mitigazione dell’overfitting . . . . . . . . . . . . . . . . 100
21.2.4 Fondamenti statistici: Stima Massima a Posteriori (MAP) . . . . . 101
21.3 Radial Basis Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
21.3.1 Principi di funzionamento e architettura . . . . . . . . . . . . . . . 101
21.3.2 Processo di apprendimento e ottimizzazione . . . . . . . . . . . . . 102
21.3.3 Gestione della complessità e regolarizzazione . . . . . . . . . . . . . 102
22 Apprendimento per rinforzo
103
22.1 Agenti stimolo-risposta e apprendimento per rinforzo . . . . . . . . . . . . 103
22.1.1 Caratteristiche del paradigma . . . . . . . . . . . . . . . . . . . . . 103
22.1.2 Il ciclo Agente-Ambiente . . . . . . . . . . . . . . . . . . . . . . . . 103
22.1.3 La proprietà di Markov e i processi decisionali di Markov (MDP) . 104
22.1.4 Politica ottima e rinforzo scontato . . . . . . . . . . . . . . . . . . . 104
22.1.5 Metodologie di risoluzione: Programmazione Dinamica . . . . . . . 104
22.2 Apprendere la politica ottima: Value Iteration . . . . . . . . . . . . . . . . 104
22.2.1 La Value Function e l’equazione di Bellman . . . . . . . . . . . . . 105
22.2.2 L’algoritmo iterativo . . . . . . . . . . . . . . . . . . . . . . . . . . 105
22.2.3 Estrazione della politica ottima . . . . . . . . . . . . . . . . . . . . 105
22.2.4 Esempio applicativo: Gestione aziendale . . . . . . . . . . . . . . . 105
22.3 Apprendere la politica ottima: Policy Iteration . . . . . . . . . . . . . . . . 106
22.3.1 Il ciclo di valutazione e miglioramento . . . . . . . . . . . . . . . . 106
22.3.2 Convergenza e prestazioni . . . . . . . . . . . . . . . . . . . . . . . 106
22.3.3 Esempio: Evoluzione della politica aziendale . . . . . . . . . . . . . 107
22.3.4 Limiti e presupposti . . . . . . . . . . . . . . . . . . . . . . . . . . 107
23 Apprendere per iterazione
108
23.1 L’algoritmo Q-Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
23.1.1 La funzione Valore Stato-Azione (Q) . . . . . . . . . . . . . . . . . 108
23.1.2 Il concetto di Temporal Difference (TD) . . . . . . . . . . . . . . . 108
23.1.3 L’algoritmo di apprendimento . . . . . . . . . . . . . . . . . . . . . 109
23.1.4 Il dilemma Esplorazione vs. Sfruttamento (Exploration vs. Exploitation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
23.2 Q-Learning: un esempio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
23.2.1 Configurazione e Inizializzazione . . . . . . . . . . . . . . . . . . . . 110
7
23.2.2 Dinamica dei Trial . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
23.2.3 Il dilemma tra Exploitation ed Exploration . . . . . . . . . . . . . . 110
23.3 Q-Learning: tracce d’eleggibilità . . . . . . . . . . . . . . . . . . . . . . . . 111
23.3.1 Limiti del Q-Learning tabulare . . . . . . . . . . . . . . . . . . . . 111
23.3.2 Le tracce di eleggibilità . . . . . . . . . . . . . . . . . . . . . . . . . 111
23.3.3 L’algoritmo Q-lambda . . . . . . . . . . . . . . . . . . . . . . . . . 112
23.3.4 Approssimazione di funzioni e TD-Gammon . . . . . . . . . . . . . 112
24 Calcolo evoluzionistico
113
24.1 La metafora evolutiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
24.1.1 Principi biologici e trasposizione artificiale . . . . . . . . . . . . . . 113
24.1.2 Confronto tra biologia reale e artificiale . . . . . . . . . . . . . . . . 113
24.1.3 Evoluzione naturale vs. Evoluzione artificiale . . . . . . . . . . . . . 114
24.1.4 Esempio: Massimizzazione di una funzione . . . . . . . . . . . . . . 114
24.2 Algoritmi evolutivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
24.2.1 Paradigmi storici . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
24.2.2 Elementi costitutivi . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
24.2.3 Operatori genetici . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
24.2.4 Ciclo di esecuzione e terminazione . . . . . . . . . . . . . . . . . . . 116
24.3 Algoritmi genetici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
24.3.1 Rappresentazione e inizializzazione . . . . . . . . . . . . . . . . . . 116
24.3.2 Esempio: Massimizzazione di una funzione discreta . . . . . . . . . 116
24.3.3 Il meccanismo di Selezione a Roulette . . . . . . . . . . . . . . . . . 116
24.3.4 Operatori di variazione: Crossover e Mutazione . . . . . . . . . . . 117
24.3.5 Sostituzione e ciclo evolutivo . . . . . . . . . . . . . . . . . . . . . . 117
25 Calcolo evoluzionistico 2
118
25.1 Programmazione genetica . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
25.1.1 Rappresentazione e Struttura . . . . . . . . . . . . . . . . . . . . . 118
25.1.2 Valutazione della Fitness . . . . . . . . . . . . . . . . . . . . . . . . 118
25.1.3 Operatori Genetici . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
25.2 Sistemi e classificatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
25.2.1 Architettura e Rappresentazione . . . . . . . . . . . . . . . . . . . . 119
25.2.2 Ciclo Operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
25.2.3 Evoluzione delle Regole . . . . . . . . . . . . . . . . . . . . . . . . . 120
25.3 Strategie evolutive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
25.3.1 Rappresentazione degli individui . . . . . . . . . . . . . . . . . . . . 121
25.3.2 Operatori genetici e Selezione . . . . . . . . . . . . . . . . . . . . . 121
25.3.3 Strategie di sostituzione . . . . . . . . . . . . . . . . . . . . . . . . 122
25.3.4 Programmazione evolutiva . . . . . . . . . . . . . . . . . . . . . . . 122
26 Riflessioni conclusive
123
26.1 Il problema della definizione . . . . . . . . . . . . . . . . . . . . . . . . . . 123
26.1.1 Le due dimensioni della definizione . . . . . . . . . . . . . . . . . . 123
26.1.2 I quattro approcci fondamentali . . . . . . . . . . . . . . . . . . . . 123
26.1.3 Razionalità limitata e prospettive comuni . . . . . . . . . . . . . . . 124
26.2 Il problema delle origini . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
26.2.1 La tradizione di ricerca e i precursori . . . . . . . . . . . . . . . . . 124
26.2.2 La nascita e l’evoluzione storica . . . . . . . . . . . . . . . . . . . . 125
8
26.2.3 Il paradigma attuale e direzioni future . . . . . . . . . . . . . . . . 125
26.3 Fondamenti filosofici dell’IA . . . . . . . . . . . . . . . . . . . . . . . . . . 125
26.3.1 Problematiche fondazionali . . . . . . . . . . . . . . . . . . . . . . . 126
26.3.2 Tematiche centrali . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
26.3.3 Conseguenze significative . . . . . . . . . . . . . . . . . . . . . . . . 126
9
Capitolo 1
Il concetto di agente
1.1
Agente e ambienti
Il concetto cardine dell’Intelligenza Artificiale moderna è quello di agente. Un agente è
definito come un’entità in grado di interagire con un ambiente circostante attraverso un
processo ciclico di percezione e azione.
1.1.1
Interazione Agente-Ambiente
L’interazione si sviluppa in due direzioni fondamentali:
• Percezioni: Attraverso le quali l’agente acquisisce informazioni sullo stato dell’ambiente.
• Azioni: Attraverso le quali l’agente interviene per modificare lo stato dell’ambiente
stesso.
L’ambiente può assumere diverse forme: può essere un ambiente reale (tipico dei
sistemi robotici fisici) o un ambiente virtuale/software (nel caso di programmi che
operano su reti o database).
1.1.2
Analisi di Sistemi Agenti
Per illustrare la pervasività di questo paradigma, si considerano i seguenti scenari:
• Sonde Spaziali (es. Deep Space 1): Sistemi che richiedono un’elevata autonomia
decisionale a causa dell’impossibilità di un intervento tempestivo da parte dei centri
di controllo terrestri in caso di anomalie.
• Agenti di Information Retrieval: Programmi software che automatizzano la
ricerca, l’integrazione e il filtraggio di dati provenienti da fonti eterogenee per conto
dell’utente.
• Personal Digital Assistants (PDA): Entità capaci di negoziare autonomamente
con servizi terzi (es. prenotazioni voli/hotel) per soddisfare richieste complesse
dell’utente.
• Robotica Competitiva (es. RoboCup): Sistemi multi-agente in cui la cooperazione tra unità è necessaria per il raggiungimento di un obiettivo strategico
comune.
10
1.1.3
La Funzione Agente: Definizione Formale
Dal punto di vista della progettazione, il comportamento di un agente è formalizzato
tramite la funzione agente. Questa funzione mappa l’intera sequenza storica delle
percezioni ricevute in una specifica azione da eseguire.
Data una sequenza di percezioni dall’istante iniziale 0 fino all’istante corrente T
(P0 , P1 , . . . , PT ), la funzione agente determina l’azione AT :
AT = f (P0 , P1 , . . . , PT )
Formalmente, la funzione è definita come:
f : P∗ → A
dove P ∗ rappresenta l’insieme di tutte le possibili sequenze di percezioni (storia delle
percezioni) e A è l’insieme delle azioni disponibili.
1.1.4
Metodologie di Progettazione
L’obiettivo dell’Intelligenza Artificiale è la progettazione dell’architettura interna dell’agente che implementa tale funzione. Esistono molteplici tecniche per realizzare funzioni
agente efficienti, tra cui:
• Ricerca nello spazio degli stati e Pianificazione.
• Sistemi basati su Regole Fuzzy.
• Reti Neurali Artificiali e Apprendimento Automatico (Machine Learning).
• Algoritmi Genetici.
1.2
Il comportamento razionale
L’obiettivo primario nella progettazione di un agente è fare in modo che esso esibisca un
comportamento razionale. Intuitivamente, la razionalità implica che l’agente sia in
grado di compiere l’azione più appropriata in un dato contesto temporale.
1.2.1
Definizione Formale di Razionalità
Un agente è definito razionale quando, per ogni possibile sequenza di percezioni, seleziona
un’azione che massimizza la propria misura di prestazione attesa, considerando le
informazioni acquisite fino a quel momento.
Questa definizione poggia su tre pilastri fondamentali:
1. Sequenza di percezioni: L’insieme delle informazioni accumulate dall’agente nel
tempo, che costituiscono la sua conoscenza dell’ambiente.
2. Azione: L’output generato dall’agente per modificare l’ambiente.
3. Misura di prestazione: Il criterio oggettivo, solitamente stabilito dal progettista,
per valutare il successo del comportamento dell’agente.
11
1.2.2
Tassonomia degli Ambienti
Le caratteristiche di un agente dipendono strettamente dalla natura dell’ambiente in cui
opera. L’ambiente può essere classificato secondo diverse dimensioni:
• Osservabilità:
– Completamente osservabile: I sensori dell’agente permettono l’accesso totale
allo stato dell’ambiente in ogni istante.
– Parzialmente osservabile: L’agente ha una visione limitata o incompleta dello
stato ambientale.
• Dinamicità:
– Statico: L’ambiente cambia esclusivamente in conseguenza delle azioni intraprese dall’agente.
– Dinamico: L’ambiente possiede dinamiche interne proprie che lo portano a
mutare indipendentemente dall’agente.
• Continuità:
– Discreto: L’ambiente è descrivibile tramite un insieme finito o numerabile di
variabili discrete.
– Continuo: La descrizione dell’ambiente richiede variabili continue (es. coordinate reali, tempo continuo).
• Popolazione:
– Agente singolo: L’agente opera isolato.
– Multi-agente: L’ambiente è popolato da più agenti che possono cooperare o
competere.
• Determinismo:
– Deterministico: Lo stato successivo dell’ambiente è univocamente determinato
dallo stato attuale e dall’azione dell’agente.
– Stocastico: Esiste un grado di incertezza; lo stato successivo non è predicibile
con certezza assoluta solo sulla base dello stato presente e dell’azione.
1.2.3
Limiti e Capacità dell’Agente Razionale
È fondamentale distinguere la razionalità dall’onniscienza. Un agente razionale:
• Non è onnisciente: Non è tenuto a conoscere il futuro; l’ottimalità della sua azione
è vincolata esclusivamente alle informazioni disponibili al momento della scelta.
• Non è chiaroveggente: La massimizzazione riguarda la prestazione attesa (probabilistica) e non necessariamente quella effettiva ex-post.
In sintesi, un agente razionale agisce per esplorare l’ambiente al fine di acquisire nuove
informazioni e apprende dall’esperienza per migliorare le proprie prestazioni nel tempo.
12
1.3
Architetture degli agenti
Il compito del progettista è tradurre la specifica astratta fornita dalla funzione agente in
un programma agente concreto, ovvero l’algoritmo che implementa il comportamento
dell’agente su un’architettura fisica o software.
Mentre la funzione agente accetta come input l’intera sequenza storica delle percezioni
(P ∗ ), il programma agente riceve in input la percezione corrente all’istante T , potendo
eventualmente memorizzare internamente le percezioni passate per scopi decisionali.
1.3.1
Classificazione delle Architetture
In base alla complessità e alla capacità decisionale, i programmi agente si classificano in
quattro tipologie fondamentali, ordinate dalla meno potente alla più sofisticata:
1. Agenti reattivi semplici: Operano esclusivamente sulla base della percezione
corrente. Il loro processo decisionale si basa su un insieme di regole condizioneazione (se si verifica la condizione X, allora esegui l’azione Y ). Non hanno memoria
del passato e ignorano le parti non visibili dell’ambiente.
2. Agenti reattivi basati su modello: A differenza dei precedenti, questi agenti
mantengono uno stato interno che riflette la storia delle percezioni. Questo modello permette all’agente di gestire ambienti parzialmente osservabili, aggiornando
la propria rappresentazione del mondo in base a come l’ambiente evolve e agli effetti
delle proprie azioni.
3. Agenti basati su obiettivi (Goal-based): Oltre alla conoscenza dello stato del
mondo, l’agente possiede informazioni su un obiettivo da raggiungere. Il processo
decisionale non è solo reattivo, ma orientato alla pianificazione: l’agente valuta quali
azioni o sequenze di azioni permettono di transitare dallo stato corrente a uno stato
che soddisfi l’obiettivo prefissato.
4. Agenti basati sull’utilità (Utility-based): Rappresentano l’architettura più
complessa. Poiché spesso esistono più modi per raggiungere un obiettivo, l’agente
utilizza una funzione di utilità per mappare uno stato in un numero reale che ne
indica il grado di "soddisfazione" o "felicità". L’agente sceglie l’azione che massimizza l’utilità attesa, permettendo un comportamento razionale anche in presenza
di obiettivi contrastanti o incertezza.
1.3.2
Apprendimento negli Agenti
Un aspetto trasversale a tutte le architetture sopra citate è la capacità di apprendimento. Ogni componente del processo decisionale può essere migliorato nel tempo imparando
dall’esperienza:
• Percezione del mondo: Migliorare l’accuratezza nel determinare lo stato corrente
dai dati sensoriali.
• Selezione dell’azione: Ottimizzare la scelta della mossa successiva in base ai
risultati ottenuti in passato.
13
L’apprendimento consente all’agente di operare inizialmente in ambienti sconosciuti e
di diventare più efficiente e razionale rispetto a quanto consentito dalla sola conoscenza
iniziale fornita dal progettista.
14
Capitolo 2
Risoluzione di problemi tramite ricerca
2.1
Formulazione di un problema di ricerca
Molti problemi del mondo reale possono essere formulati come problemi di ricerca. Un
problema di ricerca è caratterizzato dal fatto che la soluzione può essere trovata esplorando
diverse alternative tra loro. Esempi classici includono gli scacchi, la dama, il cruciverba,
il cubo di Rubik, la torre di Hanoi, il gioco del quindici e il gioco dell’otto.
2.1.1
Il caso studio: il gioco dell’otto
Nel gioco dell’otto si opera su una griglia 3 × 3 con otto tasselli numerati e uno spazio
vuoto. Lo scopo è passare da uno stato iniziale (una configurazione disordinata) a uno
stato finale o obiettivo in cui i tasselli appaiono ordinati in senso crescente.
In questo contesto, un’azione è modellata come il movimento dello spazio vuoto (verso l’alto, il basso, a destra o a sinistra), che equivale allo spostamento di una tessera
adiacente.
2.1.2
Elementi costitutivi di un problema di ricerca
Un problema di ricerca è formalmente definito da quattro elementi fondamentali:
1. Insieme degli stati (S): Rappresenta tutte le possibili configurazioni del sistema.
Si definisce S0 lo stato iniziale.
2. Funzione successore: Una funzione che, dato uno stato S, restituisce le azioni
possibili e gli stati raggiungibili eseguendo tali azioni.
3. Test obiettivo: Una funzione che, dato uno stato S, restituisce un valore booleano
(vero/falso) per indicare se lo stato è quello finale desiderato.
4. Costo dell’arco: Il costo associato a ogni singola azione A che permette il passaggio
da uno stato a un altro.
2.1.3
Lo spazio degli stati
Lo spazio degli stati è rappresentabile come un grafo in cui:
• I nodi sono gli stati.
15
• Gli archi sono le azioni (esiste un arco tra S e S ′ se S ′ è un successore di S).
La soluzione è un cammino nel grafo che collega lo stato iniziale allo stato obiettivo.
La soluzione ottima è quella che presenta il costo minore, calcolato come la somma dei
costi degli archi che compongono il cammino.
2.1.4
Complessità computazionale
La dimensione dello spazio degli stati cresce esponenzialmente con la complessità del
gioco:
• Gioco dell’otto: ≈ 360.000 stati.
• Gioco del quindici: ≈ 1012 stati.
• Gioco del ventiquattro: ≈ 1025 stati.
A causa di questa esplosione combinatoria, non è possibile costruire una rappresentazione completa dello spazio degli stati (per il gioco del ventiquattro servirebbe più di un
miliardo di anni). L’agente deve quindi esplorare solo una piccola porzione del grafo per
trovare la soluzione.
2.1.5
Ambiente di riferimento
I problemi di ricerca sono tipici di agenti che operano in ambienti con le seguenti caratteristiche:
• Completamente osservabili;
• Statici;
• Discreti;
• Deterministici.
2.2
Esempi di problemi di ricerca
La formulazione di un problema di ricerca richiede intrinsecamente un processo di astrazione. Uno stato non corrisponde a una singola configurazione fisica, ma rappresenta un
insieme di situazioni del mondo reale che condividono proprietà fondamentali, pur differendo per dettagli irrilevanti ai fini della risoluzione (come il colore dei tasselli, il materiale
della griglia o le dimensioni dei componenti). L’obiettivo dell’astrazione è mantenere nel
modello solo gli elementi essenziali per la ricerca della soluzione.
2.2.1
Sequenze di montaggio automatico
Un esempio di applicazione reale è la determinazione dell’ordine corretto per assemblare le
parti di un oggetto complesso. Il problema consiste nel trovare una sequenza che permetta
di completare il montaggio senza dover mai smontare pezzi già inseriti per aggiungerne
di nuovi.
16
• Stato: Rappresenta il sottoinsieme di pezzi già assemblati in una determinata
configurazione.
• Funzione successore: Un’azione di montaggio che aggiunge un nuovo componente
incastrandolo correttamente con quelli già presenti.
2.2.2
Pianificazione del percorso (Path-planning)
Il problema del path-planning consiste nel trovare un cammino che congiunga un punto
di partenza (start) a un punto di arrivo (goal), evitando gli ostacoli. Esistono diverse
modalità di astrazione per formulare questo scenario:
1. Formulazione basata su griglia
L’ambiente viene suddiviso tramite una griglia regolare.
• Stati: I vertici della griglia.
• Azioni: Movimenti verso i vertici adiacenti (orizzontali, verticali o diagonali).
• Costi: Convenzionalmente si assegna costo 1 ai movimenti ortogonali e costo
ai movimenti diagonali.
√
2
2. Decomposizione cellulare
Si utilizza una retta verticale che scorre nell’ambiente (metodo dello sweep-line) per
suddividere lo spazio in regioni (celle) ogni volta che si incontra il vertice di un ostacolo.
• Stati: Il punto centrale rappresentativo di ogni cella.
• Funzione successore: Permette il passaggio tra stati che rappresentano celle
contigue.
3. Grafo di visibilità
Questa formulazione riduce lo spazio degli stati ai soli punti critici dell’ambiente, assumendo ostacoli di forma poligonale.
• Stati: I vertici degli ostacoli, il punto di partenza e il punto di arrivo.
• Funzione successore: Collega un vertice a tutti gli altri vertici visibili, ovvero
raggiungibili con un segmento rettilineo che non interseca ostacoli.
L’applicazione di algoritmi di ricerca su queste strutture permette di individuare il
percorso ottimo che minimizza la distanza totale tra i punti.
2.3
La ricerca delle soluzioni
Il processo di individuazione di una soluzione in un problema di ricerca avviene attraverso
la costruzione di un albero di ricerca (o più propriamente un grafo di ricerca). Questa
struttura viene generata dinamicamente a partire dallo spazio degli stati del problema.
17
2.3.1
Distinzione tra Stati e Nodi
È fondamentale distinguere il concetto di stato da quello di nodo di ricerca:
• Stato: Rappresenta una configurazione fisica o logica dell’ambiente (es. la disposizione dei tasselli nel gioco dell’otto).
• Nodo: È una struttura dati facente parte dell’albero di ricerca. Oltre allo stato
corrispondente, un nodo contiene informazioni sul percorso (nodo padre, azione
eseguita, costo).
Mentre lo spazio degli stati è spesso finito, l’albero di ricerca può essere infinito se
sono possibili cicli o se gli stati possono essere visitati più volte. Un singolo stato dello
spazio degli stati può infatti corrispondere a più nodi distinti nell’albero di ricerca se è
raggiungibile attraverso cammini differenti.
2.3.2
Algoritmo di Ricerca Generale
L’algoritmo procede in modo ciclico partendo da un nodo radice che contiene lo stato
iniziale S0 :
1. Verifica candidati: Se non vi sono nodi disponibili per l’espansione, l’algoritmo
termina con un fallimento (soluzione non esistente).
2. Selezione: Si sceglie un nodo non ancora espanso dalla frontiera.
3. Test obiettivo: Se il nodo corrisponde a uno stato obiettivo, viene restituita la
soluzione (il cammino dalla radice al nodo).
4. Espansione: Se non è un obiettivo, il nodo viene espanso applicando la funzione
successore. Per ogni stato risultante, si genera un nodo figlio che viene aggiunto alla
frontiera.
2.3.3
La Frontiera e la Strategia
La frontiera è l’insieme dei nodi generati ma non ancora espansi. Tecnicamente viene
implementata come una coda con priorità. L’ordine con cui i nodi vengono estratti
dalla frontiera determina la strategia di ricerca. Cambiando il criterio di ordinamento
della coda, l’agente esplorerà l’albero in modi differenti (ad esempio in ampiezza o in
profondità).
2.3.4
Valutazione delle Strategie di Ricerca
Per misurare l’efficacia (o "bontà") di una strategia di ricerca, si utilizzano quattro criteri
fondamentali:
• Completezza: La garanzia di trovare una soluzione, se ne esiste almeno una.
• Ottimalità: La capacità di individuare la soluzione con il costo minimo tra tutte
quelle possibili.
18
• Complessità Temporale: Il tempo necessario (numero di nodi generati) per
trovare la soluzione.
• Complessità Spaziale: La quantità di memoria richiesta (massimo numero di nodi
memorizzati contemporaneamente).
Questi parametri vengono valutati in funzione di due variabili chiave:
• b: il fattore di ramificazione (branching factor), ovvero il numero massimo di
successori di un nodo.
• d: la profondità del nodo obiettivo più vicino alla radice.
19
Capitolo 3
Strategie di ricerca non informate
Le strategie di ricerca non informate (o ricerca cieca) sono algoritmi che non dispongono
di informazioni aggiuntive sullo stato dell’ambiente oltre a quelle fornite dalla definizione
del problema stesso. L’agente può solo distinguere se uno stato è un obiettivo o meno,
ma non sa quanto uno stato non-obiettivo sia "vicino" alla soluzione.
3.1
Ricerca in ampiezza (Breadth-first search)
La ricerca in ampiezza è una strategia in cui viene espanso per primo il nodo radice, poi
tutti i successori del nodo radice, quindi i loro successori e così via. In termini strutturali,
tutti i nodi a profondità d nell’albero di ricerca vengono espansi prima di passare ai nodi
a profondità d + 1.
3.1.1
Meccanismo di Funzionamento
La ricerca in ampiezza implementa la frontiera come una coda di tipo FIFO (First-In,
First-Out). In questo modo, i nodi che vengono generati per primi (quelli a profondità
inferiore) sono anche i primi ad essere estratti ed espansi.
L’algoritmo procede nel modo seguente:
1. Si inserisce il nodo radice nella frontiera.
2. Si estrae il primo nodo dalla frontiera.
3. Si verifica se il nodo corrisponde allo stato obiettivo.
4. Se non è l’obiettivo, si espande il nodo e si inseriscono tutti i suoi figli in coda alla
frontiera.
5. Si ripete il processo finché non viene trovato l’obiettivo o la frontiera diventa vuota.
3.1.2
Analisi della Strategia
L’efficacia della ricerca in ampiezza viene valutata secondo i criteri standard:
• Completezza: La strategia è completa. Se esiste una soluzione a una profondità finita, la ricerca in ampiezza la troverà sicuramente, dato che esplora sistematicamente
ogni livello.
20
• Ottimalità: È ottimale se il costo di ogni arco è identico (ad esempio, tutti i costi
sono pari a 1). In questo caso, il primo obiettivo trovato sarà necessariamente quello
a profondità minima, e quindi il cammino più breve.
• Complessità Temporale: Nel caso peggiore, l’agente deve generare tutti i nodi
fino alla profondità d del primo obiettivo. Se b è il fattore di ramificazione, il numero
totale di nodi generati è:
T (b, d) = 1 + b + b2 + b3 + · · · + bd = O(bd )
• Complessità Spaziale: Ogni nodo generato deve essere mantenuto in memoria
(nella frontiera o nell’albero già esplorato). Pertanto, la memoria richiesta è la
stessa della complessità temporale:
S(b, d) = O(bd )
3.1.3
Considerazioni Critiche
Il limite principale della ricerca in ampiezza non è il tempo di esecuzione, bensì il consumo
di memoria. Poiché la complessità spaziale cresce esponenzialmente con la profondità
della soluzione, per problemi con un fattore di ramificazione elevato o obiettivi situati a
profondità consistenti, la memoria necessaria può eccedere rapidamente le capacità dei
sistemi hardware attuali.
3.2
Ricerca in profondità (Depth-first search)
La ricerca in profondità (DFS) è una strategia che privilegia l’espansione dei nodi a
profondità maggiore. L’algoritmo parte dal nodo radice e procede lungo un singolo ramo
dell’albero di ricerca fino a raggiungere un nodo foglia (un nodo senza successori). A quel
punto, effettua il backtracking, tornando indietro al nodo precedente per esplorare rami
alternativi non ancora visitati.
3.2.1
Meccanismo di Funzionamento
La frontiera per la ricerca in profondità è implementata come una coda di tipo LIFO
(Last-In, First-Out). I successori di un nodo appena espanso vengono inseriti all’inizio
della frontiera, garantendo che l’ultimo nodo generato sia il primo ad essere selezionato
per l’espansione successiva.
3.2.2
Analisi della Strategia
La ricerca in profondità presenta caratteristiche peculiari in termini di risorse e garanzie:
• Completezza: La strategia non è completa. In presenza di spazi degli stati
infiniti o di cicli, l’algoritmo può disperdersi lungo cammini di profondità infinita
senza mai trovare una soluzione esistente altrove.
• Ottimalità: Non è ottimale. L’algoritmo restituisce la prima soluzione individuata, che potrebbe trovarsi su un cammino molto più lungo rispetto a una soluzione
ottimale situata in un ramo non ancora esplorato.
21
• Complessità Temporale: Nel caso peggiore, è proporzionale al numero di nodi
fino alla profondità massima m: O(bm ).
• Complessità Spaziale: È il vero punto di forza della DFS. La memoria richiesta
cresce solo linearmente con la profondità massima: O(b×m). Ciò è dovuto al fatto
che l’agente deve memorizzare solo il cammino corrente dalla radice alla foglia, oltre
ai nodi fratelli non ancora espansi per ogni livello.
3.2.3
Varianti della Ricerca in Profondità
Ricerca a profondità limitata
Per ovviare al problema dei cammini infiniti, questa variante impone un limite prefissato
L. I nodi a profondità L sono trattati come foglie.
• È completa solo se L ≥ d (dove d è la profondità della soluzione).
• Risulta difficile da applicare se d è ignoto a priori.
Ricerca ad approfondimento iterativo (Iterative Deepening)
Questa strategia combina i vantaggi della ricerca in ampiezza e in profondità. Esegue
ripetute ricerche a profondità limitata, incrementando il limite L a ogni iterazione (L =
0, 1, 2, . . . ).
• Completezza e Ottimalità: Come la ricerca in ampiezza (se i costi sono unitari).
• Efficienza spaziale: Come la ricerca in profondità, con complessità O(b × d).
• Complessità temporale: O(bd ). Nonostante la ripetizione dei calcoli ai livelli
superiori, il costo è dominato dall’ultimo livello espanso.
3.2.4
Ricerca Bidirezionale
La ricerca bidirezionale consiste nell’eseguire due ricerche simultanee: una in avanti dallo
stato iniziale e una all’indietro dallo stato obiettivo. La soluzione viene trovata quando
le frontiere delle due ricerche si intersecano in uno stato comune.
Sebbene riduca drasticamente la complessità temporale a O(bd/2 ), non è sempre applicabile perché richiede che lo stato obiettivo sia ben definito e che le azioni siano reversibili
(possibilità di calcolare i predecessori).
3.3
Ricerca senza stati ripetuti
Nelle strategie di ricerca analizzate precedentemente, è possibile che vengano generati più
nodi corrispondenti al medesimo stato. Questo fenomeno è inevitabile nei problemi in
cui le azioni sono reversibili, ovvero dove per ogni azione esiste un’inversa che permette
di tornare allo stato precedente. La ripetizione degli stati può rendere l’albero di ricerca
infinito anche in presenza di uno spazio degli stati finito, causando una grave inefficienza
computazionale.
22
3.3.1
La Lista Chiusa
Per ovviare alla ridondanza e ai possibili cicli infiniti, si introduce una struttura dati
denominata lista chiusa.
• La lista chiusa memorizza tutti gli stati corrispondenti ai nodi che sono già stati
estratti dalla frontiera ed espansi.
• Prima di procedere all’espansione di un nodo selezionato, l’agente verifica se lo stato
associato è già presente nella lista chiusa.
• Se lo stato è già stato visitato, il nodo viene scartato per evitare cicli; in caso
contrario, lo stato viene aggiunto alla lista e il nodo viene espanso.
3.3.2
Algoritmo di Ricerca con Gestione dei Cicli
L’integrazione della lista chiusa modifica l’algoritmo generale di ricerca nei seguenti passaggi:
1. Inizializzazione: Si imposta il nodo radice nella frontiera e si inizializza la lista
chiusa come insieme vuoto.
2. Controllo di Esistenza: Estratto un nodo dalla frontiera, si verifica se il suo stato
appartiene alla lista chiusa.
3. Espansione e Aggiornamento: Se lo stato non è in lista, lo si aggiunge ad essa
e si espande il nodo, inserendo i nuovi successori nella frontiera.
3.3.3
Impatto sulle Strategie di Ricerca
L’adozione di un meccanismo per evitare gli stati ripetuti influenza le proprietà delle
strategie non informate:
• Ricerca in ampiezza: Mantiene le proprietà di completezza e ottimalità.
• Ricerca a costo uniforme (UCS): Mantiene completezza e ottimalità, garantendo di trovare il cammino di costo minimo.
• Ricerca ad approfondimento iterativo: Rimane completa, ma perde la proprietà di ottimalità a causa della natura stessa delle iterazioni a profondità
limitata combinate con il salto di stati già visitati.
3.3.4
Esempio: Ricerca a costo uniforme (UCS)
Si consideri uno spazio degli stati {S, A, B, C, G} con costi d’arco variabili e S come stato
iniziale.
• Espandendo S (costo 0), si generano A (costo 1), B (costo 5) e C (costo 15).
• L’algoritmo sceglie il nodo A (minimo costo attuale) e genera il successore G (obiettivo) con costo totale 11. Grazie alla lista chiusa, non viene rigenerato S come
successore di A.
23
• Prima di dichiarare G come soluzione, l’algoritmo valuta gli altri nodi in frontiera.
Sceglie B (costo 5) e la sua espansione genera un secondo nodo per lo stato G con
costo totale 10.
• Infine, l’algoritmo estrae dalla frontiera il nodo G con costo 10, che essendo inferiore
a 11, viene restituito come soluzione ottima.
24
Capitolo 4
Strategie di ricerca informate
Le strategie di ricerca informate utilizzano la conoscenza specifica del problema, non
contenuta nella sua formulazione standard, per guidare l’esplorazione. Queste strategie
selezionano i nodi dalla frontiera in base a una funzione di valutazione f (n), che stima
quanto un nodo sia promettente per raggiungere la soluzione.
Per convenzione, i nodi migliori hanno un valore di f (n) basso; pertanto, la frontiera
viene implementata come una coda ordinata secondo valori crescenti di f (n).
4.1
Ricerca Best-first (greedy)
Nella ricerca Best-first Greedy (o ricerca "avida"), la funzione di valutazione coincide
esclusivamente con una funzione euristica h(n):
f (n) = h(n)
La funzione h(n) rappresenta il costo stimato del cammino più breve dal nodo n a un
nodo obiettivo. È importante sottolineare che si tratta di una stima: se il costo reale
fosse noto a priori, il problema di ricerca sarebbe banale.
4.1.1
Esempi di euristiche nel gioco dell’otto
Per il gioco dell’otto si possono definire diverse funzioni euristiche per valutare la distanza
di un nodo dallo stato obiettivo:
• Euristica h1 (n) (Tasselli fuori posto): Conta il numero di tasselli che non si
trovano nella loro posizione finale. La cella bianca non viene conteggiata.
• Euristica h2 (n) (Distanza di Manhattan): Somma le distanze di ogni tassello dalla sua posizione finale, calcolate considerando solo spostamenti orizzontali e
verticali.
L’utilizzo di un’euristica più informativa come la distanza di Manhattan (h2 ) permette
solitamente di espandere una porzione minore dell’albero di ricerca rispetto a h1 , rendendo
l’algoritmo più efficiente.
25
4.1.2
Il problema dei minimi locali
Un limite fondamentale della ricerca Greedy emerge nei problemi di pianificazione del
cammino (path-planning). Se l’agente utilizza la distanza in linea retta come euristica,
tenderà a muoversi direttamente verso l’obiettivo. In presenza di ostacoli (ad esempio
un muro), l’agente può trovarsi bloccato in un minimo locale: una posizione che l’euristica valuta come ottima, ma che non permette di proseguire senza prima allontanarsi
temporaneamente dall’obiettivo per aggirare l’ostacolo.
4.1.3
Valutazione della strategia
Le caratteristiche della ricerca Best-first Greedy sono le seguenti:
• Completezza: Non è completa, poiché può rimanere intrappolata in minimi locali
o cammini infiniti.
• Ottimalità: Non è ottima, in quanto non garantisce di trovare il cammino a costo
minimo.
• Complessità: Nel caso peggiore, sia la complessità temporale che quella spaziale
sono O(bm ), dove m è la profondità massima dell’albero di ricerca.
4.2
Ricerca A-star (A∗)
La ricerca A∗ è la strategia di ricerca informata più diffusa, poiché combina il costo
per raggiungere un nodo con l’euristica per arrivare all’obiettivo. A differenza della ricerca Greedy, A∗ tiene conto del cammino già percorso, evitando di fare scelte basate
esclusivamente su una stima futura.
4.2.1
La funzione di valutazione f (n)
In A∗ , la funzione di valutazione f (n) è definita come la somma di due componenti:
f (n) = g(n) + h(n)
Dove:
• g(n): è il costo del cammino dal nodo radice al nodo corrente n.
• h(n): è la stima del costo del cammino dal nodo n al nodo obiettivo più vicino.
Di conseguenza, f (n) rappresenta la stima del costo totale della soluzione più conveniente
che passa per il nodo n. Per applicare questa strategia, è necessario che la funzione
euristica h(n) sia nota.
4.2.2
Esempio: Il gioco dell’otto
Considerando il gioco dell’otto con l’euristica dei tasselli fuori posto:
• Il nodo iniziale ha g(n) = 0. Se i tasselli fuori posto sono 4, allora f (n) = 0 + 4 = 4.
• Espandendo il nodo, i successori avranno g(n) = 1. Se un successore ha 3 tasselli
fuori posto, la sua f (n) sarà 1+3 = 4. Se un altro ne ha 5, la sua f (n) sarà 1+5 = 6.
• L’algoritmo sceglierà sempre il nodo con il valore di f (n) più basso nella frontiera.
26
4.2.3
Amissibilità e Ottimalità
La condizione fondamentale affinché A∗ sia ottimale (ovvero trovi sempre il cammino di
costo minimo) è che l’euristica h(n) sia ammissibile. Un’euristica si definisce ammissibile
se non sovrastima mai il costo reale per raggiungere l’obiettivo.
Se h∗ (n) è il costo reale minimo dal nodo n all’obiettivo, l’euristica deve soddisfare:
0 ≤ h(n) ≤ h∗ (n)
Le euristiche dei tasselli fuori posto e della distanza di Manhattan sono entrambe ammissibili, poiché ogni movimento richiesto dalla stima è necessario anche nella realtà.
4.2.4
Comportamento in presenza di ostacoli
Nel problema del path-planning, A∗ dimostra una superiorità netta rispetto alla ricerca
Greedy. Mentre la ricerca Greedy può rimanere bloccata davanti a un ostacolo cercando
di puntare sempre direttamente al goal, A∗ valuta il costo totale.
[Image: Comparison between Greedy and A* path planning around an obstacle]
Se un ostacolo blocca la strada diretta, il valore di g(n) aumenta man mano che
l’agente cerca di aggirarlo. A∗ esplorerà i nodi che permettono di aggirare l’ostacolo (ad
esempio in senso orario o antiorario) trovando un percorso complessivo notevolmente più
corto rispetto a quello di una ricerca puramente avida.
4.2.5
Analisi della strategia
• Completezza: A∗ è completo (trova sempre la soluzione se esiste).
• Ottimalità: È ottimale se l’euristica è ammissibile.
• Complessità: La complessità temporale e spaziale rimane il limite principale, poiché nel caso peggiore può essere esponenziale rispetto alla profondità della soluzione.
4.3
Ottimalità della ricerca A-star
L’efficacia e l’efficienza dell’algoritmo A∗ dipendono strettamente dalle proprietà della
funzione euristica adottata. Per garantire che l’agente trovi sempre la soluzione migliore,
è necessario che l’euristica rispetti i criteri di ammissibilità e consistenza.
4.3.1
Amissibilità e Consistenza
Le funzioni euristiche possono essere classificate in base alla loro accuratezza rispetto al
costo reale:
1. Amissibilità: Una funzione euristica h(n) si dice ammissibile se non sovrastima
mai il costo reale h∗ (n) per raggiungere l’obiettivo dal nodo n. Deve quindi valere:
0 ≤ h(n) ≤ h∗ (n)
In altre parole, un’euristica ammissibile è "ottimista", poiché ipotizza sempre un
costo inferiore o uguale a quello effettivo.
27
2. Consistenza (o Monotonicità): Una funzione euristica è consistente se, per ogni
nodo n e ogni suo successore n′ generato da un’azione con costo c(n, n′ ), soddisfa la
disuguaglianza triangolare:
h(n) ≤ c(n, n′ ) + h(n′ )
Questo significa che la stima del costo non diminuisce in modo ingiustificato lungo
il cammino. Ogni funzione consistente è per definizione anche ammissibile.
4.3.2
Teoremi di Ottimalità
Le garanzie di A∗ variano a seconda che l’algoritmo gestisca o meno gli stati ripetuti:
• Ricerca con ripetizione degli stati: A∗ è completa e ottima se l’euristica h(n)
è ammissibile.
• Ricerca senza ripetizione degli stati (Graph Search): A∗ è completa e ottima
se l’euristica h(n) è consistente.
L’assunzione di base per la completezza è che i costi d’arco siano tutti maggiori di una
costante positiva , impedendo cammini infiniti a costo nullo.
4.3.3
Efficienza Ottima
L’algoritmo A∗ è definito ottimamente efficiente. Questo significa che, data una specifica funzione euristica, nessun altro algoritmo di ricerca ottimo è in grado di trovare la
soluzione espandendo un numero inferiore di nodi.
In particolare, A∗ :
• Espande tutti i nodi con f (n) < C ∗ (dove C ∗ è il costo della soluzione ottima).
• Espande i nodi con f (n) = C ∗ necessari a trovare il traguardo.
• Non espande mai alcun nodo con f (n) > C ∗ .
4.3.4
Dominanza tra Euristiche
Considerando due euristiche ammissibili h1 e h2 , se per ogni nodo n vale h2 (n) ≥ h1 (n),
si dice che h2 domina h1 . Un’euristica dominante è più informativa e permette ad A∗ di
essere più efficiente, riducendo il numero di nodi espansi prima di raggiungere l’obiettivo.
28
Capitolo 5
Ricerca con avversari
La ricerca con avversari analizza contesti in cui più agenti operano in un ambiente
competitivo. In Intelligenza Artificiale, queste situazioni vengono modellate come giochi.
5.0.1
Il modello dei giochi in IA
I giochi presi in esame presentano caratteristiche formali ben precise che permettono
l’applicazione di algoritmi di ricerca:
• Due giocatori: Le azioni si alternano tra due entità contrapposte.
• Somma zero: Il vantaggio di un giocatore corrisponde esattamente allo svantaggio
dell’altro (se uno vince, l’altro perde).
• Informazione perfetta: L’ambiente è completamente osservabile e deterministico;
non vi sono elementi di casualità nascosti o incertezza sullo stato del mondo.
Esempi classici includono gli scacchi, la dama, l’otello e il tris. Al contrario, sport fisici
come il calcio o il tennis non rientrano in questa categoria a causa della componente
stocastica e della non completa osservabilità.
5.0.2
Formulazione del gioco come problema di ricerca
Un gioco può essere formalizzato definendo i seguenti elementi:
1. Stato iniziale: La configurazione di partenza del tavoliere (es. la scacchiera vuota
nel tris).
2. Giocatori: Convenzionalmente chiamati MAX (colui che muove per primo e punta
a massimizzare il punteggio) e MIN (che punta a minimizzare il punteggio di MAX).
3. Funzione successore: Restituisce le mosse legali e gli stati risultanti.
4. Test obiettivo (Stato terminale): Determina se il gioco è concluso e definisce il
vincitore.
L’incertezza in questi problemi non deriva dall’ambiente, ma dall’imprevedibilità delle
mosse dell’avversario. Per questo motivo, si costruisce un albero di gioco in cui i livelli
si alternano tra nodi MAX e nodi MIN.
29
5.1
L’algoritmo Minimax
L’algoritmo Minimax è la tecnica fondamentale per determinare la mossa ottimale. Poiché
esplorare l’intero spazio degli stati è spesso computazionalmente impossibile, la ricerca
viene limitata a una profondità massima H.
Il processo si divide in due fasi principali:
• Valutazione delle foglie: Si applica una funzione di valutazione E(S) agli
stati terminali o ai nodi alla profondità H.
• Propagazione dei valori (Back-up): I valori vengono riportati verso l’alto lungo
l’albero fino alla radice.
5.1.1
La funzione di valutazione E(S)
Questa funzione stima il guadagno atteso per il giocatore MAX in uno stato S:
• E(S) > 0: Stato favorevole a MAX.
• E(S) < 0: Stato favorevole a MIN.
• E(S) = 0: Stato neutrale.
Nel gioco del tris, un’efficace funzione E(S) può essere calcolata come la differenza tra il
numero di righe/colonne/diagonali ancora aperte per il tris di MAX e quelle aperte per
MIN.
5.1.2
Calcolo dei valori Minimax
Il valore di un nodo viene determinato in base al tipo di giocatore che deve muovere in
quello stato, assumendo che entrambi giochino in modo ottimo:
• Nodo Foglia: Il valore coincide con il risultato della funzione di valutazione E(S).
• Nodo MAX: Si sceglie il massimo tra i valori dei figli (MAX sceglie la mossa che
lo porta nello stato migliore).
• Nodo MIN: Si sceglie il minimo tra i valori dei figli (MIN sceglie la mossa che
penalizza maggiormente MAX).
Una volta propagati i valori fino alla radice, il giocatore MAX sceglie l’azione che
conduce al nodo figlio con il valore Minimax più elevato. Ad ogni turno successivo,
l’agente ripete il processo di costruzione dell’albero e propagazione per adattarsi alla
mossa effettivamente compiuta dall’avversario.
5.2
Potatura alfa-beta
La ricerca minimax soffre di una crescita esponenziale dei nodi dell’albero di gioco in funzione della profondità massima H, con una complessità pari a O(bH ). Questo limite deriva
dalla necessità di costruire l’albero nella sua interezza prima di poter propagare i valori
verso la radice. La tecnica della potatura alfa-beta permette di ridurre drasticamente
il numero di nodi esplorati, garantendo lo stesso risultato della ricerca minimax pura ma
eliminando i rami che non possono influenzare la decisione finale.
30
5.2.1
Principio di Funzionamento
L’obiettivo è determinare se una mossa è peggiore di una già individuata precedentemente.
Se un ramo porta a un valore che non sarà mai scelto (perché MAX ha già una mossa
migliore o MIN ha già una mossa che lo penalizza di più), quel ramo può essere "potato".
La tecnica utilizza due parametri fondamentali:
• Alfa (α): Rappresenta il valore della mossa migliore (massima) trovata finora per
un nodo MAX. È un estremo inferiore del valore minimax e non può mai diminuire.
• Beta (β): Rappresenta il valore della mossa migliore (minima) trovata finora per
un nodo MIN. È un estremo superiore del valore minimax e non può mai aumentare.
5.2.2
Algoritmo Generale di Potatura
L’algoritmo opera aggiornando i parametri durante la visita in profondità e interrompendo
la ricerca secondo le seguenti regole:
1. Aggiornamento: I valori α e β degli antenati vengono aggiornati non appena i
valori vengono propagati dai figli.
2. Interruzione su nodo MAX: La ricerca sotto un nodo MAX si interrompe quando
il suo valore α è maggiore o uguale al valore β di uno dei nodi MIN suoi antenati
(α ≥ β).
3. Interruzione su nodo MIN: La ricerca sotto un nodo MIN si interrompe quando
il suo valore β è minore o uguale al valore α di uno dei nodi MAX suoi antenati
(β ≤ α).
5.2.3
Analisi della Complessità
L’efficienza della potatura dipende dall’ordine con cui vengono esaminati i successori di
ogni nodo:
• Caso Peggiore: Se l’ordine è casuale o sfavorevole, la complessità rimane identica
alla ricerca minimax pura: O(bH ).
• Caso Migliore: Si verifica quando i figli di MAX sono esaminati in ordine decrescente di valore e i figli di MIN in ordine crescente. In questo scenario, la complessità si riduce a O(bH/2 ), permettendo di dimezzare l’esponente e quindi di esplorare
l’albero a una profondità doppia a parità di risorse.
• Caso Medio: In una situazione con ordine casuale dei nodi, la complessità si attesta
mediamente su O(b3/4H ).
5.3
Esempi e applicazioni
Dalla metà degli anni Cinquanta, i giochi sono stati definiti la "drosofila" dell’intelligenza
artificiale: sistemi apparentemente semplici che però incorporano un elevato grado di
incertezza, rappresentando l’ambiente ideale per testare nuove tecniche algoritmiche.
31
5.3.1
Lo stato dell’arte: Scacchi e Dama
Il successo più celebre nella storia della ricerca con avversari è rappresentato da Deep
Blue, il programma dell’IBM che nel 1997 sconfisse il campione mondiale Garri Kasparov.
Le caratteristiche tecniche che hanno permesso tale risultato includono:
• Ricerca Minimax con Potatura Alfa-Beta: Implementata su hardware dedicato per massimizzare la velocità di calcolo.
• Approfondimento Iterativo: Per gestire dinamicamente il tempo a disposizione
per ogni mossa.
• Funzione di Valutazione Complessa: Una somma pesata di diverse caratteristiche posizionali e materiali (numero di pezzi, occupazione del centro, ecc.).
• Quiescence Search: La ricerca veniva interrotta solo in "posizioni quiescenti", ovvero stati della scacchiera stabili dove non erano possibili catture o scacchi immediati
che avrebbero distorto la valutazione.
• Estensioni Singole: Una tecnica per approfondire l’esplorazione di un unico ramo
quando una mossa risultava palesemente superiore alle alternative.
• Database di Aperture e Chiusure: L’utilizzo di memorie storiche per le fasi
iniziali e finali della partita.
Similmente, nel gioco della dama, il programma Chinook riuscì a sconfiggere il campione Marion Tinsley, che in quarant’anni di carriera aveva perso solo tre partite prima
di incontrarlo.
5.3.2
Il problema del Go
A differenza degli scacchi, il gioco del Go rappresenta ancora una sfida complessa per gli
algoritmi basati puramente su alberi di ricerca. Ciò è dovuto al fattore di ramificazione estremamente elevato (b ≈ 300), che impedisce la costruzione di alberi sufficientemente profondi con le attuali capacità di calcolo, rendendo i programmi basati su ricerca
tradizionale facilmente battibili dai professionisti umani.
5.3.3
Giochi stocastici: Expected Minimax
Molti giochi (come il Backgammon) introducono elementi casuali, solitamente modellati
tramite il lancio di dadi o monete. Per gestire questa incertezza, il modello Minimax viene
esteso con l’introduzione dei nodi di possibilità (o nodi chance).
In questo modello, i nodi si alternano tra MAX, MIN e nodi di possibilità. Il valore
di un nodo di possibilità non viene calcolato come un estremo (minimo o massimo), ma
come un valore atteso (expected minimax ):
V (n) =
P (si ) · V (si )
i
Dove P (si ) è la probabilità che si verifichi l’evento che porta allo stato si . Il giocatore
MAX sceglierà quindi la mossa che massimizza il valore atteso del guadagno, considerando
le probabilità associate ai rami casuali.
32
Capitolo 6
La rappresentazione delle conoscenze
6.1
Agenti e conoscenze
Il concetto di conoscenza è una colonna portante dell’Intelligenza Artificiale, strettamente
interconnesso alla definizione stessa di intelligenza. Sebbene l’intelligenza sia un fenomeno multidimensionale difficile da circoscrivere, è possibile identificarne alcune componenti essenziali: la capacità di apprendere, la comprensione del linguaggio, la facoltà di
ragionamento e, in ultima istanza, la capacità di agire in modo razionale.
6.1.1
L’azione razionale e il ruolo della conoscenza
Agire in modo razionale implica che un agente sia in grado di operare per raggiungere
determinati obiettivi basandosi sulle informazioni di cui dispone. Un agente razionale
deve possedere:
• Obiettivi: Gli stati finali o i target che l’agente intende conseguire.
• Conoscenze: Un insieme di informazioni su sé stesso e sull’ambiente circostante.
• Ragionamento: La capacità di elaborare obiettivi e conoscenze per determinare
la sequenza di azioni ottimale.
La conoscenza può quindi essere definita operativamente come informazione disponibile per l’azione. Affinché un’informazione sia considerata "disponibile" per un agente
artificiale, devono essere soddisfatti tre requisiti fondamentali:
1. Rappresentazione: L’informazione deve essere codificata internamente tramite
strutture di dati e procedure algoritmiche (la "mente" del sistema).
2. Reperimento (Retrieval): Il sistema deve poter individuare in modo rapido ed
efficiente la conoscenza necessaria all’interno di una vasta base di dati.
3. Uso: Le informazioni devono essere utilizzabili da procedure di ragionamento per
pianificare il comportamento futuro.
6.1.2
Tipologie di Rappresentazione
Le rappresentazioni si dividono primariamente in interne (utilizzate per il processo
deliberativo dell’agente) ed esterne (utilizzate per la comunicazione o come supporto
33
mnemonico). Per quanto riguarda la natura della codifica, si distinguono tre modelli
principali:
Rappresentazioni Proposizionali (o Linguistiche)
Sono costituite da frasi di un linguaggio, formule logiche o espressioni matematiche. Pur
essendo estremamente precise, richiedono una traduzione simbolica che può risultare meno
immediata per la comprensione di relazioni spaziali.
Rappresentazioni Iconiche
Si basano su immagini, disegni o mappe. A differenza di quelle proposizionali, queste
rappresentazioni permettono una comprensione istantanea delle relazioni topologiche e
spaziali (ad esempio, un disegno di una scena rispetto a una sua descrizione testuale).
Rappresentazioni Miste
Combinano i due approcci precedenti. Un esempio tipico sono i diagrammi tecnici
(come quelli ingegneristici), in cui elementi geometrici e simboli iconici (frecce, riquadri)
sono integrati da frasi, etichette o formule matematiche.
[Image comparing propositional vs iconic representation]
6.1.3
Rappresentazione negli Agenti Artificiali
Negli agenti artificiali, la conoscenza viene tradotta in strutture informatiche ispirate a
diversi paradigmi:
• Modelli Biologici: Come le reti neurali artificiali, che imitano l’organizzazione del
sistema nervoso.
• Modelli Cognitivi: Come i sistemi di produzione, derivati dalla psicologia dei
processi cognitivi.
• Modelli Logici: Basati su rappresentazioni dichiarative (formule della logica)
che richiedono sistemi di ragionamento automatico per essere utilizzate.
• Modelli Iconici Informatici: Ad esempio, l’uso di array bidimensionali per rappresentare una scacchiera, dove la struttura del dato mappa direttamente la realtà
fisica.
L’uso della conoscenza dipende dalla sua natura: le rappresentazioni procedurali
sono programmi eseguiti direttamente, mentre quelle dichiarative sono dati passivi su
cui operano algoritmi di inferenza.
6.2
Tipi di conoscenze
Nell’analisi dei requisiti per un comportamento razionale, è fondamentale distinguere tra
diverse tipologie di informazioni a disposizione dell’agente. La distinzione primaria risiede
tra due grandi famiglie di conoscenze, spesso identificate come "knowing that" (sapere che)
e "knowing how" (sapere come), ovvero conoscenze dichiarative e conoscenze procedurali.
34
6.2.1
Conoscenza Dichiarativa e Procedurale
Le conoscenze dichiarative e procedurali presentano caratteristiche tra loro complementari. Sebbene nella pratica esistano casi misti — come la conoscenza dei vini, che integra nozioni concettuali (conoscere le zone di produzione) ad abilità sensoriali (saper distinguere
un vitigno all’assaggio) — la loro distinzione formale è netta.
Conoscenze Dichiarative
Le conoscenze dichiarative (knowing that) riguardano fatti, concetti e relazioni. Le loro
caratteristiche principali sono:
• Verbalizzabilità: Possono essere comunicate e descritte facilmente attraverso il
linguaggio.
• Flessibilità d’uso: Una singola informazione dichiarativa può essere impiegata per
molteplici scopi. Ad esempio, sapere che una persona si trova a Londra permette di
decidere se telefonarle, se chiederle di acquistare un prodotto locale o di non cercarla
presso la propria abitazione.
• Necessità di ragionamento: Per essere tradotta in azione, la conoscenza dichiarativa deve essere elaborata attraverso un processo di ragionamento esplicito.
Conoscenze Procedurali
Le conoscenze procedurali (knowing how) riguardano abilità e capacità pratiche.
distinguono per:
Si
• Difficoltà di verbalizzazione: Non sono facilmente trasmissibili tramite la sola
spiegazione verbale (ad esempio, è impossibile imparare a nuotare o a suonare il
pianoforte solo ascoltando una descrizione della tecnica).
• Specificità: Sono legate a un’abilità specifica e non sono direttamente trasferibili
ad altri domini applicativi.
• Uso automatico: Una volta acquisite, l’agente è in grado di applicarle senza la
necessità di un ragionamento conscio durante l’esecuzione (ad esempio, un nuotatore
esperto non deve ragionare sulla coordinazione dei movimenti mentre nuota).
6.2.2
Classificazione della Conoscenza Dichiarativa
Le conoscenze dichiarative possono essere suddivise in tre categorie in base alla natura
del contenuto:
1. Conoscenze Terminologiche: Riguardano il significato dei termini e dei concetti
(es. "la capitale di uno stato è la città dove ha sede il governo"). Rappresentano la base indispensabile per la comunicazione e per l’espressione di altri tipi di
conoscenza.
2. Conoscenze Nomologiche: Riguardano leggi generali, regolarità e meccanismi
che governano il mondo (es. "quando c’è il sole fa più caldo" o "ogni stato ha una
sola capitale").
35
3. Conoscenze Fattuali: Riguardano fatti singoli, specifici e contingenti (es. "la
capitale del Nepal è Katmandu" o "l’attuale capo del governo islandese è una
donna").
6.2.3
Classificazione della Conoscenza Procedurale
Le conoscenze procedurali si manifestano attraverso diverse tipologie di abilità:
• Abilità Percettive: Capacità di riconoscere, distinguere e categorizzare oggetti,
colori, suoni, odori o fisionomie.
• Abilità Percetto-Motorie: Azioni che richiedono l’integrazione continua tra percezione e movimento, come mantenere l’equilibrio, correre o il tracking visivo di
oggetti in movimento.
• Abilità Cognitive: Capacità puramente mentali che non coinvolgono necessariamente input sensoriali o output motori immediati, come eseguire calcoli aritmetici
complessi a mente o risolvere problemi logici.
6.3
Le fonti delle conoscenze
Per agire in modo razionale, un agente deve acquisire informazioni sul mondo e su sé
stesso. Tali conoscenze derivano da tre fonti primarie: l’esperienza, la comunicazione e
l’inferenza. Ognuna di queste fonti contribuisce in modo differente alla formazione del
patrimonio conoscitivo dell’agente.
6.3.1
L’esperienza individuale
L’esperienza rappresenta la fonte elettiva per l’acquisizione delle conoscenze di tipo procedurale. Abilità come il nuoto, la guida o il riconoscimento percettivo vengono apprese
attraverso un processo pratico di prova ed errore, spesso supportato da una guida esterna,
ma basato essenzialmente sulla sperimentazione diretta.
Tuttavia, l’esperienza è anche un’importante fonte di conoscenze dichiarative. Un
agente può apprendere regolarità del mondo (ad esempio, che il fuoco scotta) o fatti
specifici (ad esempio, che oggi c’è il sole) osservando direttamente l’ambiente circostante.
Una conoscenza acquisita per esperienza diretta può successivamente essere verbalizzata
e comunicata ad altri.
6.3.2
La comunicazione
La comunicazione permette il passaggio di conoscenze tra agenti. Per gli esseri umani,
questa fonte è ineliminabile e comprende dialoghi, lettura di testi (comunicazione asincrona con l’autore) e fruizione di contenuti audiovisivi. Sebbene il linguaggio abbia anche
funzioni di coesione sociale, la sua utilità primaria nell’ambito dell’IA è la trasmissione
di:
• Conoscenze terminologiche: Apprendimento dei significati e delle definizioni del
linguaggio.
36
• Conoscenze nomologiche: Apprendimento di leggi e regolarità non osservate
direttamente (ad esempio, leggi fisiche complesse come la gravitazione).
• Conoscenze fattuali: Acquisizione di dati su eventi o stati del mondo comunicati
da terzi.
6.3.3
L’inferenza
L’inferenza è il processo mentale che permette di generare nuova conoscenza operando su
informazioni già acquisite. Si tratta di un meccanismo di elaborazione interna che non
richiede nuovi input esterni. Si distinguono tre tipologie principali di inferenza:
1. Deduzione: È un processo logico-formale che garantisce la verità della conclusione
se le premesse di partenza sono vere. È il metodo utilizzato nelle dimostrazioni dei
teoremi matematici.
2. Abduzione: Consiste nel formulare ipotesi sui fatti partendo dai sintomi o dagli
effetti osservati (ad esempio, ipotizzare una diagnosi medica a partire da febbre
e dolori). È un’inferenza di tipo plausibile, utile per generare conoscenze fattuali
probabili ma non certe.
3. Induzione: Permette di astrarre leggi o regolarità generali partendo dall’osservazione di una molteplicità di fatti specifici. Pur essendo fondamentale per l’apprendimento, l’induzione è fallibile: le conclusioni induttive sono plausibili ma possono
essere smentite da esperienze successive che richiedono una revisione della legge
formulata.
6.3.4
Mappatura tra fonti e tipologie di conoscenza
Le fonti alimentano in modo specifico i diversi rami della tassonomia della conoscenza:
• Comunicazione: Contribuisce alle conoscenze dichiarative (terminologiche, nomologiche e fattuali).
• Inferenza: L’induzione produce nuove leggi (nomologiche); la deduzione può generare sia leggi che fatti; l’abduzione è orientata alla generazione di ipotesi su fatti
specifici (fattuali).
• Esperienza: È l’unica fonte per le abilità procedurali (percettive, motorie e cognitive) e alimenta la conoscenza di fatti contingenti (fattuali).
37
Capitolo 7
Le conoscenze procedurali
Le conoscenze di tipo procedurale rappresentano una componente fondamentale dell’architettura di un agente intelligente, distinguendosi nettamente dalle conoscenze dichiarative
per la loro natura operativa. Tali conoscenze non vengono utilizzate all’interno di un
processo di ragionamento conscio, ma vengono direttamente eseguite per manifestare una
specifica abilità.
7.1
Sistemi di produzione
Il modello dei sistemi di produzione rappresenta uno dei paradigmi più rilevanti e
storicamente consolidati per la rappresentazione delle conoscenze procedurali nell’ambito
dell’Intelligenza Artificiale. Introdotto originariamente da Newell e Simon come modello
per descrivere i processi cognitivi umani, ha trovato ampia applicazione ingegneristica
grazie a sistemi come OPS5, CLIPS (implementato in C) e JESS (implementato in Java).
Un sistema di produzione è un sistema basato su eventi, in cui un insieme di regole
reagisce dinamicamente a variazioni della base di conoscenza.
7.1.1
Architettura del Sistema
L’architettura di un sistema di produzione si fonda sulla cooperazione di tre componenti
principali:
1. Base delle regole: Un insieme non ordinato di unità di computazione denominate
regole di produzione.
2. Base dei fatti: Una successione ordinata di strutture dati (fatti ) che rappresentano
lo stato corrente dell’ambiente.
3. Interprete (o Supervisore): Il programma che gestisce il ciclo di esecuzione del
sistema, decidendo quali regole attivare e quali mandare in esecuzione attraverso
una struttura dati denominata agenda.
7.1.2
La Base dei Fatti
La base dei fatti funge da database dinamico. In linguaggi come CLIPS, i fatti sono
rappresentati come tuple racchiuse tra parentesi tonde:
(elemento1
elemento2
38
...
elementon )
Ogni fatto è univocamente identificato da un indice progressivo. Le operazioni fondamentali sono:
• Assert: Funzione utilizzata per inserire un nuovo fatto nella base. L’indice viene
incrementato automaticamente.
• Retract: Funzione utilizzata per eliminare un fatto esistente tramite il suo indice.
7.1.3
La Base delle Regole
Le regole definiscono il comportamento dell’agente e seguono tipicamente la sintassi
condizione-azione (if-then). La struttura di una regola in CLIPS è la seguente:
(defrule nome-regola
(condizione_1)
(condizione_n)
=>
(azione_1)
(azione_n))
Pattern Matching e Variabili
Il processo di riconoscimento degli eventi è noto come pattern matching. Le condizioni
di una regola cercano corrispondenze tra i propri schemi e i fatti presenti nella base dei
fatti. Le variabili (identificate dal prefisso ?, come ?porta) permettono di legare valori
specifici durante il riconoscimento. Se una variabile compare in più condizioni della stessa
regola, deve assumere lo stesso valore in tutte le occorrenze perché la regola si attivi.
7.1.4
Il Ciclo di Riconoscimento-Azione
L’interprete gestisce l’esecuzione del sistema attraverso un ciclo iterativo che si conclude
solo quando non vi sono più regole attivabili o viene imposto un comando di arresto.
1. Fase di Riconoscimento (Match): L’interprete confronta i fatti con le condizioni
delle regole. Se una regola vede soddisfatte tutte le sue condizioni, essa produce
un’attivazione.
2. Gestione dell’Agenda: L’attivazione (che contiene il nome della regola, gli indici
dei fatti coinvolti e i legami delle variabili) viene inserita nell’agenda.
3. Conflitto e Selezione: L’interprete decide quale attivazione eseguire seguendo una
determinata strategia (es. LIFO - Last-In First-Out o FIFO - First-In First-Out).
Viene sempre eseguita l’attivazione in testa all’agenda.
4. Fase di Azione (Act): La regola selezionata esegue le proprie azioni (che possono
essere chiamate a procedure esterne o modifiche alla base dei fatti tramite assert e
retract).
39
7.1.5
Esempio Pratico: Sistema di Allarme
Si consideri un sistema progettato per segnalare un allarme se una porta protetta (di tipo
A) viene aperta durante l’orario notturno.
• Fatti: La base contiene il tipo delle porte, ad esempio (tipo P02 A), e i dati di
apertura inseriti da sensori esterni, come (apertura P02 76200).
• Regola: La regola allarme verifica se lo stato di apertura coincide con una porta
il cui tipo è registrato come A e se il timestamp è compreso nei limiti notturni.
• Esecuzione: Se il pattern matching ha successo (?porta viene legato a P02), la
regola si attiva. Una volta selezionata dall’agenda, l’azione esegue una procedura
specifica, ad esempio segnala-allarme P02.
7.2
L’interprete e la pianificazione
I sistemi di produzione non si limitano alla reazione a eventi isolati, ma possono essere
utilizzati per la pianificazione di sequenze di azioni complesse. Attraverso l’uso
coordinato di regole e fatti, è possibile scomporre un obiettivo primario in una serie di
sotto-obiettivi necessari alla sua realizzazione.
7.2.1
Esempio: Il mondo dei cubetti
Un caso di studio classico è la manipolazione di cubetti (A, B, C) su un ripiano. In questo
modello, un cubetto può essere spostato solo se è libero, ovvero se non vi sono altri
cubetti posizionati sopra di esso.
La configurazione del sistema viene rappresentata nella base dei fatti tramite:
• Fatti di stato: Descrivono la posizione attuale (es. (posizione A su B), (posizione
B su ripiano)).
• Fatti di azione: Descrivono l’obiettivo da conseguire (es. (sposta B su C)).
7.2.2
Gestione degli Indici e Variabili
Per consentire all’interprete di modificare la base dei fatti, le regole devono identificare
univocamente quali fatti hanno attivato la condizione. In linguaggi come CLIPS, si associa
una variabile d’indice alla condizione tramite l’operatore freccia (<-):
?f1 <- (sposta ?x ?y)
?f2 <- (posizione ?x ?z)
...
=>
(retract ?f1 ?f2)
(assert (posizione ?x ?y))
In questo modo, le variabili ?f1 e ?f2 memorizzano gli indici numerici dei fatti, permettendo alla funzione retract di rimuoverli con precisione dalla memoria una volta che
l’azione è stata eseguita.
40
7.2.3
Meccanismi di Concatenamento (Chaining)
È fondamentale distinguere tra il funzionamento operativo dell’interprete e la logica di
ragionamento del sistema di regole:
• Concatenamento Anterogrado (Forward Chaining): È il meccanismo nativo
di interpreti come CLIPS. Il sistema parte dai fatti esistenti e, quando le condizioni
sono soddisfatte, esegue le azioni corrispondenti ("ragionamento in avanti").
• Concatenamento Retrogrado (Backward Chaining): È una logica di ragionamento che parte dall’obiettivo finale per identificare le pre-condizioni mancanti.
Sebbene l’interprete operi in avanti, è possibile progettare le regole affinché il sistema
si comporti in modo retrogrado a livello di compito. Ad esempio, se l’obiettivo è spostare
B su C ma B è coperto da A, una regola di liberazione del cubetto interviene asserendo
un nuovo fatto: (sposta A su ripiano). Questo processo scompone l’azione desiderata
in passi elementari propedeutici.
7.2.4
Evoluzione Dinamica della Base dei Fatti
Durante il ciclo di riconoscimento-azione, la base dei fatti subisce continue trasformazioni:
1. Gli indici dei fatti rimossi non vengono mai riutilizzati, mantenendo la coerenza
temporale della computazione.
2. Le azioni eseguite possono essere registrate come nuovi fatti (es. (eseguito spostamento
A)) per mantenere una traccia storica del piano d’azione.
3. L’esecuzione termina quando l’agenda si svuota, indicando che non vi sono più azioni
possibili o che l’obiettivo è stato raggiunto.
41
Capitolo 8
Le conoscenze dichiarative
Le conoscenze dichiarative si distinguono per la loro facilità di verbalizzazione, definizione e comunicazione. Rispetto alle conoscenze procedurali, esse risultano estremamente
versatili e flessibili, in quanto un singolo elemento di conoscenza può essere integrato
in molteplici processi e compiti differenti. Tuttavia, la loro efficacia operativa dipende
strettamente dalla capacità del sistema di eseguire processi di ragionamento esplicito.
8.1
La logica simbolica
Per la rappresentazione delle conoscenze dichiarative all’interno di un sistema artificiale
si ricorre alla logica moderna, nota anche come logica simbolica, formale o matematica.
Tra i vari sistemi logici esistenti, la logica predicativa del primo ordine (First Order
Logic - FOL) si distingue per la sua generalità e per la capacità di tradurre enunciati
linguistici in formule simboliche regolate da una sintassi rigorosa.
8.1.1
Componenti di un sistema logico
Ogni sistema logico è strutturato su tre componenti fondamentali:
1. Linguaggio formale: L’insieme di simboli e regole sintattiche che permettono di
scrivere enunciati come formule simboliche.
2. Regole di verità: Un insieme di norme che consentono di attribuire a ogni formula
un valore di verità (Vero o Falso).
3. Calcolo (o procedura di prova): Un algoritmo che permette di dedurre nuove
formule (conclusioni) partendo da un insieme di formule preesistenti (premesse),
realizzando così il processo di inferenza deduttiva.
8.1.2
La Logica dei Predicati del Primo Ordine (FOL)
Il linguaggio della FOL permette di modellare la realtà identificando individui e le proprietà o relazioni che intercorrono tra di essi.
Formule atomiche
Le formule atomiche rappresentano le unità minime di significato nel linguaggio logico:
42
• Proprietà: Vengono espresse tramite predicati a un solo posto d’argomento. Ad
esempio, l’enunciato "Alberto è uno studente" viene formalizzato come S(A), dove
A è una costante che identifica l’individuo (Alberto) e S è il predicato che ne esprime
la proprietà.
• Relazioni: Vengono espresse tramite predicati a due o più posti d’argomento. Ad
esempio, "Alberto possiede l’oggetto B" viene formalizzato come P (A, B), dove P
rappresenta la relazione binaria di possesso.
Formule complesse
La combinazione di formule atomiche attraverso operatori logici permette di costruire
espressioni più articolate:
• Connettivi booleani: Includono la negazione (¬), la congiunzione (∧), la disgiunzione (∨), il condizionale (→, "se... allora") e il bi-condizionale (↔, "se e solo
se").
• Quantificatori: Il quantificatore esistenziale (∃, "esiste") e il quantificatore universale (∀, "per ogni").
Esempio di traduzione: "Ogni studente possiede un telefonino". In FOL, questo
enunciato si esprime come:
∀x(S(x) → ∃y(T (y) ∧ P (x, y)))
Ovvero: per ogni individuo x, se x è uno studente, allora esiste un oggetto y tale che y è
un telefonino e x possiede y.
8.1.3
Definizione formale del linguaggio logico
La struttura del linguaggio logico è definita da un dizionario dei simboli e da una grammatica.
Dizionario dei simboli
Il dizionario comprende le diverse categorie di simboli utilizzabili:
• Simboli referenziali: Costanti (per riferimenti a individui specifici) e variabili
(utilizzate tipicamente in combinazione con i quantificatori).
• Simboli predicativi: Predicati con un numero variabile di argomenti (da zero a
n).
• Operatori logici: Connettivi booleani e quantificatori.
• Simboli di delimitazione: Parentesi e virgole per definire la corretta gerarchia e
struttura delle formule.
43
Grammatica
La grammatica stabilisce le regole per la concatenazione dei simboli in formule ben
formate:
• Termini: Costituiti esclusivamente da costanti e variabili.
• Formule atomiche: Formate applicando un predicato a un numero di termini
corrispondente ai suoi posti d’argomento.
• Formule complesse: Generate applicando operatori logici a formule esistenti o
quantificando variabili all’interno di esse.
8.2
Logica e conoscenza
L’utilizzo della logica per la rappresentazione della conoscenza permette di strutturare una
Base di Conoscenza (Knowledge Base - KB), ovvero un insieme di enunciati espressi in
un linguaggio logico formale. Gli enunciati inseriti inizialmente nella KB sono considerati
assiomi: premesse assunte come vere all’interno di un’applicazione specifica, dalle quali
è possibile derivare nuove informazioni attraverso procedure di deduzione.
8.2.1
Predicati Primitivi e Derivati
Nella progettazione di una KB, è prassi consolidata distinguere i predicati in due categorie
per ottimizzare l’efficienza e la chiarezza della rappresentazione:
• Predicati Primitivi: Esprimono concetti fondamentali non definibili attraverso
altri termini più semplici (es. P ersona(x), Sesso(x, y), Genitore(x, y)).
• Predicati Derivati: Esprimono concetti complessi definiti interamente a partire
dai predicati primitivi o da altri predicati già derivati (es. M adre(x, y), Zio(x, y),
Antenato(x, y)).
8.2.2
Assiomi Nomologici e Terminologici
La conoscenza generale all’interno di una KB si manifesta attraverso due tipologie di
assiomi:
Conoscenza Nomologica
Esprime leggi generali e regolarità del dominio. Ad esempio, nel dominio delle relazioni
familiari, si possono definire assiomi che stabiliscono che ogni persona possiede un sesso
(maschio o femmina) e che tale attributo è esclusivo, oppure che ogni individuo possiede
esattamente due genitori biologici di sesso opposto.
∀x(P ersona(x) → (Sesso(x, F emmina) ∨ Sesso(x, M aschio)))
∀x(P ersona(x) → ¬(Sesso(x, F emmina) ∧ Sesso(x, M aschio)))
44
Conoscenza Terminologica (Definizioni)
Fornisce la definizione formale dei predicati derivati. Un esempio è la definizione di
"madre", definita come una donna che è genitore di un individuo:
∀x, y(M adre(x, y) ↔ (Donna(x) ∧ Genitore(x, y)))
8.2.3
Definizioni Ricorsive
La logica del primo ordine permette la creazione di definizioni ricorsive, dove un predicato
è definito, in parte, in funzione di sé stesso. Un caso tipico è la relazione di antenato:
un individuo x è antenato di y se è suo genitore, oppure se è genitore di un individuo z
che è a sua volta antenato di y.
∀x, y(Antenato(x, y) ↔ (Genitore(x, y) ∨ ∃z(Genitore(x, z) ∧ Antenato(z, y))))
8.2.4
Conoscenze Fattuali e Deduzione
Mentre gli assiomi descrivono regole generali valide per l’intero dominio, le conoscenze
fattuali descrivono istanze specifiche (es. "Alice è madre di Bernardo"). Queste sono
solitamente espresse tramite formule atomiche che utilizzano costanti per identificare gli
individui.
Attraverso un calcolo logico, il sistema può dedurre nuove conoscenze:
• Deduzione di conoscenze generali: Ad esempio, dimostrare che la relazione di
parentela tra fratelli è simmetrica.
• Deduzione di fatti impliciti: Se la KB contiene i fatti relativi alla genitorialità
di una specifica famiglia, il sistema può dedurre automaticamente chi sia lo zio di
un individuo o chi siano i suoi antenati, senza che tali relazioni siano state inserite
esplicitamente.
8.3
La deduzione
La deduzione è il processo logico-inferenziale che permette di derivare una conclusione
(o tesi) a partire da un insieme di premesse. In un contesto di Intelligenza Artificiale,
la rilevanza di questo processo risiede nella possibilità di automatizzare la generazione di
nuova conoscenza attraverso un computer, a condizione che premesse e conclusioni siano
espresse in un linguaggio formale adeguato. Tale automazione è resa possibile dall’impiego
di un calcolo, ovvero un algoritmo preposto alla costruzione di prove formali.
8.3.1
Il calcolo della deduzione naturale
Un esempio classico di calcolo logico è la deduzione naturale. In questo paradigma,
una dimostrazione (o prova) è strutturata come una successione di righe numerate, dove
ogni riga contiene:
1. Un identificatore numerico della riga.
2. Una formula logica.
45
3. Una giustificazione, che specifica la regola di inferenza applicata o se la formula
rappresenta una premessa (ipotesi).
Il calcolo opera mediante regole di inferenza, le quali definiscono le modalità di
inserimento o eliminazione degli operatori logici (connettivi booleani e quantificatori).
Ad esempio:
• Eliminazione del quantificatore universale: Se una proprietà vale ∀x, è possibile sostituire alla variabile x una costante specifica (es. A), ottenendo una riga
valida per quell’individuo.
• Eliminazione del condizionale (Modus Ponens): Se sono presenti le formule
α → β e α, è possibile dedurre validamente β.
8.3.2
Conoscenza e deducibilità
Formalmente, si afferma che un agente conosce un enunciato α se e solo se α è deducibile
dalla sua Base di Conoscenza (KB) tramite un calcolo logico. Tale relazione viene espressa
simbolicamente come:
KB ⊢ α
Questa definizione implica che la conoscenza di un agente non è limitata agli assiomi
espliciti, ma si estende a tutto ciò che è implicitamente contenuto in essi e recuperabile
attraverso il ragionamento deduttivo.
8.3.3
Assunzioni per basi di conoscenza pratiche
L’analogia tra basi di conoscenza e basi di dati è parziale, poiché la deduzione logica
standard può fallire nel derivare conclusioni intuitivamente ovvie se non vengono adottate
specifiche assunzioni di contesto.
Unique Name Assumption (UNA)
In logica classica, l’uso di due costanti differenti (es. Bernardo e Bruno) non garantisce che esse si riferiscano a individui distinti. Senza l’indicazione esplicita della diversità
(¬(Bernardo = Bruno)), il sistema non può dedurre relazioni che dipendono dalla distinzione tra i soggetti. Per ovviare a questo problema senza aggiungere eccessivi assiomi
di diversità, si adotta la Unique Name Assumption: si assume per convenzione che a
nomi diversi corrispondano individui diversi.
Closed World Assumption (CWA)
Una Base di Conoscenza è solitamente corretta ma raramente completa. Se la KB non
afferma che un individuo ha fratelli, la logica standard non può concludere che non ne
abbia (potrebbero esistere informazioni mancanti). La Closed World Assumption
risolve questa ambiguità assumendo che tutto ciò che non è esplicitamente affermato come
vero nella KB debba essere considerato falso. Questa assunzione trasforma il sistema
da un modello a "mondo aperto" (dove l’assenza di informazione equivale a incertezza)
a un modello a "mondo chiuso", rendendo la deduzione molto più efficiente in domini
circoscritti.
46
Capitolo 9
La pianificazione dell’azione
La pianificazione è un aspetto centrale dell’intelligenza artificiale, strettamente legato alla
capacità di agire in modo razionale. Agire razionalmente spesso presuppone la capacità
di decidere in anticipo una sequenza di mosse, ovvero formulare un piano d’azione da
eseguire nel futuro per raggiungere determinati traguardi.
9.1
Piani d’azione
Un agente in grado di pianificare deve integrare diverse componenti cognitive e operative:
motivazioni che generano obiettivi, conoscenze generali e fattuali sull’ambiente, capacità
percettive per monitorare lo stato del mondo e capacità esecutive per intervenire su di
esso.
9.1.1
Architettura di un agente razionale
L’architettura di un agente che pianifica può essere suddivisa in processi (motivazione,
percezione, pianificazione, esecuzione) e prodotti di tali processi (obiettivi, conoscenze,
piani).
L’impulso all’azione deriva dalla percezione di una discrepanza tra lo stato attuale
dell’ambiente e gli obiettivi prefissati. L’agente agisce per eliminare o ridurre tale differenza. Ad esempio, la motivazione della sete genera l’obiettivo di "non avere più sete";
l’agente rileva la discrepanza tra lo stato attuale ("ho sete") e quello desiderato, attivando il processo di pianificazione per produrre una sequenza di azioni (alzarsi, prendere un
bicchiere, versare l’acqua) atta a colmare il divario.
9.1.2
Rappresentazione della conoscenza per la pianificazione
Per costruire piani efficaci, è necessario adottare rappresentazioni formali per i diversi
elementi del problema:
• Conoscenze fattuali: Rappresentano lo stato attuale del mondo tramite un insieme di formule atomiche della logica (predicati applicati a costanti). In un "mondo dei cubetti", lo stato è descritto da fatti come su(A, B), libero(A) o su(B,
ripiano).
47
• Obiettivi: Sono anch’essi rappresentati come fatti o stati desiderati, ma solitamente
in modo incompleto. L’agente specifica solo i fatti che vuole rendere veri (es. su(B,
C)), ignorando lo stato degli altri elementi non rilevanti per il successo del compito.
• Azioni: Una singola azione è rappresentata come un termine funzionale (es. sposta(x,
y, z)).
• Piani d’azione: Un piano è una sequenza di azioni. Nel caso più semplice, si parla
di piani lineari, ovvero successioni temporali di passi elementari (es. spostare A
sul ripiano, poi spostare B su C).
9.1.3
Schemi d’azione
La conoscenza generale su come le azioni modificano il mondo è codificata negli schemi
d’azione. Uno schema d’azione definisce tre componenti fondamentali:
1. Precondizioni: I fatti che devono essere necessariamente veri affinché l’azione
possa essere eseguita (es. per spostare un cubetto, esso deve essere libero).
2. Effetti negativi: I fatti che diventano falsi dopo l’esecuzione dell’azione e che
devono essere rimossi dalla rappresentazione dello stato (es. la posizione precedente
del cubetto).
3. Effetti positivi: I fatti che diventano veri in seguito all’azione e che devono essere
aggiunti alla base di conoscenza (es. la nuova posizione del cubetto).
9.1.4
Processi cognitivi e operativi
Mentre nei modelli astratti e simbolici si assume spesso che la percezione sia fedele (l’agente "vede bene") e che l’esecuzione sia perfetta (le azioni non falliscono mai), nelle
applicazioni robotiche reali questi processi sono critici e soggetti a errori o incertezze.
Il processo di pianificazione propriamente detto è un’attività puramente cognitiva
e di ragionamento. Una delle tecniche tradizionali è l’ analisi mezzi-fini (means-ends
analysis), un processo scatenato dalla discrepanza tra stato attuale e obiettivi, che utilizza
gli schemi d’azione per identificare i mezzi (azioni) necessari a raggiungere i fini (obiettivi).
9.2
Il pianificatore di STRIPS
Il modello di pianificazione STRIPS (Stanford Research Institute Problem Solver), introdotto nel 1971, definisce un processo di ragionamento automatizzato volto a colmare il
divario tra la situazione presente e quella desiderata. Il nucleo dell’algoritmo risiede nella
gestione della discrepanza, ovvero la differenza rilevata tra lo stato attuale dell’ambiente
e gli obiettivi da raggiungere.
9.2.1
Meccanismo di riduzione delle discrepanze
Il pianificatore opera confrontando i fatti che descrivono l’obiettivo con quelli che descrivono lo stato attuale. Ogni elemento presente nell’obiettivo ma mancante nello stato
di partenza viene identificato come una discrepanza da eliminare. Il processo segue una
logica ricorsiva:
48
1. Ricerca dell’azione: Il sistema individua uno schema d’azione che includa il fatto
desiderato tra i propri effetti positivi.
2. Verifica delle precondizioni: Viene controllato se le precondizioni necessarie per
l’azione scelta sono soddisfatte nello stato corrente.
3. Generazione di sotto-obiettivi: Se una precondizione non è verificata, essa diventa un nuovo sotto-obiettivo. Il sistema mette temporaneamente in attesa l’azione principale e cerca una nuova azione in grado di soddisfare tale precondizione,
ripetendo il ciclo.
9.2.2
Esempio: Risoluzione di un conflitto nel mondo dei cubetti
Si consideri il compito di portare il cubetto b sopra il cubetto c (su(b, c)), sapendo che
nello stato iniziale il cubetto a si trova sopra b.
• Identificazione del problema: L’obiettivo su(b, c) richiede l’azione sposta(b,
y, c).
• Analisi delle precondizioni: L’azione richiede che b sia libero (libero(b)).
Tuttavia, nella situazione iniziale, b non è libero perché occupato da a.
• Pianificazione del sotto-obiettivo: Il sistema identifica la necessità di liberare
b come una nuova discrepanza. Viene scelta l’azione sposta(a, b, ripiano) per
rimuovere a dalla cima di b. La scelta del ripiano come destinazione è spesso dettata
da criteri euristici (posizionare un cubetto in un luogo neutro per non creare ulteriori
ostacoli).
• Piano finale: Poiché a è libero nello stato iniziale, la prima azione è eseguibile. Il piano risultante è la sequenza: 1. sposta(a, b, ripiano), 2. sposta(b,
ripiano, c).
9.2.3
Proiezione del piano
Una fase fondamentale della pianificazione è la proiezione del piano. Questa operazione
consiste nel ricostruire mentalmente la sequenza completa degli stati intermedi che si
verranno a creare applicando le azioni previste.
Partendo dallo stato iniziale, l’agente applica gli schemi d’azione (rimuovendo gli effetti
negativi e aggiungendo quelli positivi) per calcolare la rappresentazione completa di ogni
stato successivo. La proiezione permette all’agente di simulare l’esecuzione del piano
prima di intervenire fisicamente sull’ambiente, verificando che la situazione finale coincida
effettivamente con gli obiettivi prefissati.
49
Capitolo 10
La pianificazione dell’azione, parte 2
10.1
Alcuni problemi di STRIPS
Il modello di pianificazione STRIPS, pur essendo un riferimento fondamentale per l’analisi
mezzi-fini, si basa su alcune assunzioni semplificative che ne evidenziano i limiti strutturali
in contesti complessi.
10.1.1
Assunzioni fondamentali
Il funzionamento logico di STRIPS è regolato da tre assunzioni principali che garantiscono
l’efficienza del calcolo ma ne limitano la flessibilità:
• Assunzione del mondo chiuso (Closed-World Assumption): Si assume che
la descrizione dello stato sia completa. Tutto ciò che non è esplicitamente affermato
come vero nella base di conoscenza viene considerato falso.
• Assunzione di unicità dei nomi (Unique Name Assumption): A costanti
o nomi differenti corrispondono necessariamente individui distinti. Non è ammesso
che due nomi diversi (ad esempio A e B) si riferiscano allo stesso oggetto fisico.
• Assunzione di completezza degli effetti: Gli effetti di un’azione sono esattamente ed esclusivamente quelli specificati nello schema d’azione (effetti positivi e
negativi). Ogni altro aspetto dello stato che non viene menzionato esplicitamente
rimane invariato durante l’azione.
10.1.2
Limiti dei piani lineari
STRIPS produce esclusivamente piani lineari, i quali presentano restrizioni operative
significative che impediscono di modellare situazioni reali più articolate:
• Assenza di parallelismo: Viene eseguita una sola azione per volta, escludendo la
possibilità di compiere azioni simultanee.
• Assenza di condizionali: Il piano non può contenere punti di test o biforcazioni
(ad esempio: "se la porta è chiusa, usa la chiave, altrimenti apri direttamente").
• Assenza di cicli: Non è possibile inserire iterazioni nella sequenza di azioni (ad
esempio: "ripeti l’azione finché il contenitore non è pieno").
50
10.1.3
Indeterminatezza e obiettivi congiunti
Durante il processo di analisi mezzi-fini, emergono due problematiche critiche nel coordinamento delle azioni:
• Indeterminatezza (Non-determinismo): Qualora più schemi d’azione possano
soddisfare un obiettivo, o lo stesso schema possa essere applicato con diverse variabili, il sistema deve ricorrere a strategie di ricerca (come profondità o A∗ ) per
esplorare le alternative tramite backtracking.
• Obiettivi congiunti: STRIPS non è in grado di elaborare più obiettivi simultaneamente. Essi vengono ordinati e affrontati singolarmente; tuttavia, poiché gli
obiettivi spesso non sono indipendenti, il soddisfacimento di uno può distruggere un
obiettivo già raggiunto in precedenza.
10.1.4
L’anomalia di Sussman
Il problema degli obiettivi congiunti è esemplificato dall’anomalia di Sussman nel mondo dei cubetti. Data una configurazione iniziale con A sopra B e C sul ripiano, l’obiettivo
è ottenere la torre composta da B sopra C e C sopra A (BCA).
Nonostante il piano ottimale richieda solo 3 azioni (spostare A sul ripiano, posizionare
C sopra A, e infine B sopra C), STRIPS fallisce nel trovarlo a causa dell’interferenza tra
gli obiettivi:
• Se il sistema affronta prima l’obiettivo B su C, deve necessariamente spostare A per
liberare B; una volta raggiunto l’obiettivo, per soddisfare C su A dovrà smontare
la torre appena creata, producendo un piano di 5 mosse.
• Con l’ordinamento opposto (prima C su A), il conflitto tra gli stati intermedi porta
a un piano ancora più inefficiente, composto da 7 mosse.
Questo dimostra che la strategia di STRIPS, basata sull’analisi di un obiettivo per volta,
non garantisce l’ottimalità in presenza di obiettivi che interagiscono tra loro.
10.2
Piani parzialmente ordinati
Una soluzione efficace all’anomalia di Sussman e ai limiti strutturali di STRIPS consiste
nell’adozione dei piani parzialmente ordinati. Invece di forzare un ordinamento lineare
immediato, questo approccio permette di costruire piani separati per i diversi obiettivi
congiunti e di integrarli successivamente in modo intelligente.
10.2.1
Il parallelismo nella pianificazione
L’idea fondamentale è quella di trattare gli obiettivi (ad esempio su(C, A) e su(B, C))
inizialmente come processi in parallelo. Il piano viene visualizzato come una struttura
che parte da un nodo di Inizio e termina in un nodo di Fine, dove le azioni per i vari
traguardi sono disposte su rami indipendenti.
51
10.2.2
Interferenze e vincoli di precedenza
Un piano parzialmente ordinato è un "semilavorato" che deve essere trasformato in una
sequenza lineare per poter essere eseguito. Tale trasformazione avviene attraverso l’analisi delle interferenze, ovvero i conflitti che si generano quando un’azione su un ramo
distrugge una precondizione necessaria per un’azione su un altro ramo.
L’individuazione di queste interferenze impone dei vincoli di precedenza:
• Se l’azione A ha come effetto negativo la rimozione di una condizione necessaria
affinché l’azione B possa essere eseguita, allora B deve necessariamente precedere
A.
• Se l’azione A produce un effetto positivo che è precondizione per l’azione B, allora
A deve precedere B.
10.2.3
Linearizzazione e ottimalità
La linearizzazione è il processo di conversione del piano parzialmente ordinato in un
piano lineare che rispetti tutti i vincoli di precedenza accumulati. Nel caso dell’anomalia
di Sussman, l’analisi delle precondizioni e degli effetti porta a definire un ordine univoco
che coincide con il piano ottimale di tre mosse:
1. sposta(A, B, ripiano): libera il cubetto B.
2. sposta(C, ripiano, A): posiziona C sopra A.
3. sposta(B, ripiano, C): completa la torre posizionando B sopra C.
Questo metodo evita il problema del "ragionamento un obiettivo alla volta", permettendo al sistema di gestire l’interdipendenza tra i traguardi senza distruggere i risultati
già ottenuti.
52
Capitolo 11
Sistemi esperti
Un sistema esperto è un’architettura informatica basata sulla conoscenza, progettata con
l’obiettivo di emulare le capacità decisionali e di risoluzione di problemi di un esperto
umano in un dominio specifico. La finalità di tali sistemi è replicare competenze specialistiche per renderle disponibili in diverse sedi e consultabili anche in assenza dell’esperto
fisico.
11.1
Cos’è un sistema esperto?
Un sistema esperto non è un semplice programma procedurale, ma un sistema che separa
nettamente la conoscenza (le regole) dal meccanismo che la utilizza (il motore inferenziale).
11.1.1
Architettura del sistema
L’architettura classica di un sistema esperto si compone di quattro moduli fondamentali:
• Base di Conoscenza (Knowledge Base): Contiene il sapere specialistico del
dominio, solitamente codificato sotto forma di regole di inferenza (se-allora). È
il prodotto del lavoro dell’ingegnere della conoscenza, che estrae e modella il sapere
dell’esperto.
• Base dei Fatti (Fact Base): Fornisce la descrizione della situazione specifica che
il sistema deve affrontare. Contiene i dati iniziali e i fatti derivati durante il processo
di ragionamento.
• Meccanismo Inferenziale: Rappresenta l’unità di elaborazione che applica le
regole della Base di Conoscenza ai dati della Base dei Fatti per produrre nuovi fatti
e conclusioni.
• Interfaccia Utente: Svolge il duplice compito di acquisire i fatti dall’utente e fornire spiegazioni sul percorso logico seguito dal meccanismo inferenziale per giungere
a un determinato risultato.
11.1.2
Meccanismi di inferenza: Concatenamento
Il meccanismo inferenziale può operare secondo due modalità principali di concatenamento
delle regole:
53
Concatenamento all’indietro (Backward-chaining)
In questa modalità, il sistema parte da un obiettivo o da un sintomo (il conseguente della
regola) e cerca di risalire alle cause (gli antecedenti). I conseguenti delle regole vengono
confrontati con i fatti presenti; se un conseguente è unificabile con un fatto, la regola entra
nel conflict-set (l’insieme delle regole attivabili) e si tenta di verificare se l’antecedente
è vero.
• Applicazione tipica: Sistemi di diagnosi, dove si parte dai sintomi osservati per
individuare le cause scatenanti.
Concatenamento in avanti (Forward-chaining)
Il sistema parte dai fatti noti (gli antecedenti) per derivare nuove conclusioni (i conseguenti). Si confrontano i fatti della base dei fatti con gli antecedenti delle regole; se la
condizione è soddisfatta, la regola può scattare e il suo conseguente viene aggiunto alla
base dei fatti come nuova informazione.
• Applicazione tipica: Sistemi di previsione, dove da una situazione iniziale si
proiettano le possibili evoluzioni o conseguenze.
11.1.3
Risoluzione dei conflitti
Quando più regole sono contemporaneamente attivabili (ovvero presenti nel conflict-set),
l’interprete deve adottare una strategia di selezione per decidere quale regola far scattare
per prima. Le strategie più comuni includono:
1. Priorità cronologica di inserimento: Viene attivata la prima regola che è entrata
nel conflict-set, basandosi spesso sull’ordine in cui le regole sono state scritte dal
progettista.
2. Recenza dei fatti: Si privilegia la regola che utilizza i fatti inseriti più recentemente nella base dei fatti. Questa strategia permette al sistema di seguire una linea
di ragionamento focalizzata sugli ultimi sviluppi.
3. Specificità (Regola più ricca): Viene data precedenza alla regola che possiede il
maggior numero di antecedenti. L’obiettivo è sfruttare la conoscenza più dettagliata
e specifica disponibile prima di ricorrere a regole più generali.
11.2
Progettazione di un sistema esperto
La realizzazione di un sistema esperto è un processo metodologico complesso che richiede
il coordinamento di diverse figure professionali e l’adozione di un ciclo di vita strutturato,
incentrato sull’estrazione e sulla formalizzazione della conoscenza.
11.2.1
Il team di progetto
Lo sviluppo coinvolge un team specializzato con ruoli ben definiti:
54
• Ingegnere della conoscenza: È la figura centrale responsabile della raccolta,
dell’analisi e della formalizzazione del sapere specialistico. Il suo obiettivo primario
è la creazione di un modello concettuale della conoscenza necessaria.
• Programmatore della conoscenza: Partendo dal modello concettuale, si occupa
dell’implementazione tecnica del sistema, codificando le regole e le strutture dati
all’interno del calcolatore.
• Esperto: È il detentore della conoscenza specialistica. Collabora con l’ingegnere
della conoscenza per esplicitare le euristiche e le procedure risolutive tipiche del
dominio.
• Utente: Colui che utilizzerà il sistema finale. La sua partecipazione è cruciale per
definire i requisiti funzionali e decretare il successo operativo dell’applicazione.
• Committente: Fornisce le risorse necessarie al progetto e ne valuta i risultati sulla
base delle specifiche e degli obiettivi definiti inizialmente.
11.2.2
Fasi di sviluppo
Il processo di realizzazione si articola in diverse fasi sequenziali:
1. Studio di plausibilità: Si valuta se l’applicazione è sensata, verificando che la
conoscenza necessaria sia circoscritta e che le risorse a disposizione siano adeguate.
2. Acquisizione della conoscenza e prototipo dimostrativo: Una fase esplorativa
volta a codificare una prima base di conoscenza per testare la validità del progetto
su un sottoinsieme del problema.
3. Prototipo completo: Sviluppo del sistema integrale con tutta la conoscenza acquisita, senza tuttavia aver ancora completato l’integrazione con l’ambiente operativo
finale.
4. Implementazione e installazione: Il sistema viene ingegnerizzato, ottimizzato e
integrato nei sistemi informativi aziendali per l’uso quotidiano.
5. Manutenzione ed estensione: Gestione dei malfunzionamenti ed eventuale ampliamento della base di conoscenza per coprire nuovi casi d’uso emersi durante
l’attività operativa.
11.2.3
Acquisizione della conoscenza
L’acquisizione della conoscenza è l’attività cardine dell’ingegnere della conoscenza. Egli
attinge da diverse fonti (esperti, manuali tecnici, osservazione diretta del comportamento
professionale) per far emergere sia la conoscenza esplicita che quella implicita. Quest’ultima rappresenta il sapere che l’esperto utilizza intuitivamente ma che non è in grado di
verbalizzare direttamente senza l’ausilio di tecniche di indagine specifiche.
55
11.2.4
Strumenti per lo sviluppo
Gli strumenti software per costruire sistemi esperti si dividono principalmente in:
• Shell (Gusci): Pacchetti software pronti all’uso che contengono il motore inferenziale e l’interfaccia utente, ma sono privi di conoscenza specifica. Permettono uno
sviluppo rapido ma sono vincolati alle caratteristiche strutturali della shell stessa.
• Linguaggi di rappresentazione: Strumenti più versatili che offrono una vasta
gamma di primitive (regole, oggetti, relazioni). Un esempio di rilievo è CLIPS, un
linguaggio sviluppato dalla NASA distribuito liberamente, che permette di gestire
l’incertezza e supporta estensioni per agenti o sistemi distribuiti.
11.3
Applicazioni di sistemi esperti
I sistemi esperti rappresentano una delle prime e più significative applicazioni commerciali dell’Intelligenza Artificiale, con uno sviluppo che ha avuto inizio alla fine degli anni
Settanta. La loro capacità di catturare e replicare l’esperienza umana li ha resi strumenti fondamentali in domini dove la conoscenza è specialistica e le decisioni richiedono
euristiche complesse.
11.3.1
Sistemi di diagnosi
La diagnosi è stata storicamente la prima area di applicazione effettivamente realizzata.
Questi sistemi mirano a identificare le cause di un comportamento anomalo (sintomo)
rilevato in un organismo o in un apparato tecnologico.
• Mycin: Sviluppato all’Università di Stanford nei primi anni Settanta, è il prototipo
dei sistemi di diagnosi medica. Specializzato nelle malattie infettive del sangue,
Mycin ha dimostrato di poter superare le prestazioni di un singolo medico integrando
l’esperienza di più specialisti, sebbene la sua efficacia sia strettamente limitata al
suo dominio specifico.
• DELTA: Creato dalla General Electric per la manutenzione dei locomotori diesel.
Il sistema ha permesso di ovviare alla scarsità di esperti veterani, rendendo la loro
competenza accessibile ai meccanici in diverse sedi attraverso supporti visuali e
procedure guidate che risalgono dai sintomi ai guasti meccanici.
11.3.2
Analisi dei dati e Data Mining
Questi sistemi vengono utilizzati per classificare e interpretare moli elevate di dati, identificando pattern o giacimenti informativi non immediatamente visibili.
• Prospector: Celebre per essere stato il primo sistema esperto a generare un significativo ritorno commerciale, veniva impiegato nell’analisi di prospezioni geologiche
per individuare giacimenti minerari. Utilizzando le euristiche dei geologi, ha permesso di ridurre i costi di esplorazione aumentando la probabilità di successo degli
scavi.
• Expert Data Mining: Si occupa di estrarre regolarità nascoste nei dati, guidando
il processo di ricerca tramite la competenza di esperti che conoscono le dinamiche
del mercato o del fenomeno analizzato.
56
11.3.3
Configurazione di sistemi
A differenza della diagnosi (che spesso opera in concatenamento retrogrado), i sistemi di configurazione utilizzano tipicamente regole in avanti per comporre un sistema
funzionante partendo da un insieme di componenti e requisiti utente.
• Xcon (R1): Sviluppato per la configurazione dei calcolatori VAX, è stato uno dei
sistemi più longevi e famosi, capace di gestire migliaia di componenti hardware per
produrre schemi di assemblaggio privi di errori tecnici.
11.3.4
Supporto alle decisioni
In questa categoria, il sistema non sostituisce il decisore, ma lo assiste fornendo suggerimenti e rendendo espliciti i criteri di scelta in contesti qualitativi.
• Finanza e Marketing: Sistemi per il supporto all’acquisto di azioni o per la
definizione di strategie pubblicitarie, basati sulla sensibilità di esperti analisti di
borsa e mercato.
• Valutazione del personale: Applicazioni volte a uniformare i criteri di selezione tra diversi esaminatori, portando alla luce la conoscenza implicita (e talvolta
distorta) dei decisori umani per rendere il processo di assunzione più oggettivo e
trasparente.
11.3.5
Limiti e gestione dell’incertezza
L’applicazione dei sistemi esperti al mondo reale ha evidenziato come la logica lineare (vero/falso) sia spesso insufficiente per modellare la complessità dei fenomeni fisici o umani.
Molte situazioni richiedono la valutazione di gradi di verità e la gestione dell’incertezza,
tematiche che vengono affrontate integrando modelli di logica fuzzy o probabilistica per
riflettere più fedelmente il processo decisionale dell’esperto.
57
Capitolo 12
Trattamento dell’incertezza
Il trattamento dell’incertezza è un aspetto cruciale nella progettazione di sistemi basati
sulla conoscenza, poiché permette di gestire la discrepanza intrinseca tra i modelli formali
e la complessità del mondo reale.
12.1
Perché trattare l’incertezza?
Ogni sistema di intelligenza artificiale opera su un modello della realtà. Per definizione,
un modello è una semplificazione che seleziona solo gli aspetti rilevanti per una specifica
applicazione. Come sintetizzato nel celebre aforisma "la mappa non è il territorio", il
modello non coincide mai esattamente con la realtà che intende rappresentare.
12.1.1
Ignoranza e Incertezza
Dalla differenza tra modello e realtà scaturisce quella che viene definita ignoranza, intesa
come carenza di informazione. Tale mancanza può essere:
• Voluta: Quando si decide deliberatamente di non modellare dettagli irrilevanti per
l’efficienza del sistema.
• Intrinseca: Derivante dall’impossibilità di catturare ogni singola sfumatura o dinamica dell’ambiente esterno.
Riconoscere e rappresentare esplicitamente ciò che non si conosce (la cosiddetta "conoscenza dell’ignoranza") conferisce robustezza al sistema, permettendogli di agire in
modo più simile al ragionamento umano e di gestire situazioni impreviste invece di fallire
categoricamente davanti a informazioni mancanti.
12.1.2
Sorgenti di incertezza
Le principali cause che rendono un’informazione incerta possono essere classificate in tre
categorie:
1. Incompletezza: Si verifica quando non è possibile (o è troppo oneroso) elencare
tutte le premesse e le conseguenze di un fenomeno, oppure quando mancano dati su
eventi futuri o non osservabili.
58
2. Approssimazione e Imprecisione: Deriva dalla natura qualitativa della percezione umana (es. definire una temperatura "alta" senza specificare i gradi) o dai
limiti tecnologici degli strumenti di misura che forniscono dati con un certo margine
di errore.
3. Incoerenza: Si manifesta quando il sistema riceve informazioni contrastanti tra
loro, derivanti da percezioni errate o da diverse linee di ragionamento che portano
a conclusioni opposte.
12.1.3
Approcci alla rappresentazione
Per gestire questi fenomeni, l’Intelligenza Artificiale adotta due tipologie di modelli:
Approcci Logici
Questi modelli estendono la logica classica (che ammette solo i valori Vero o Falso) per
gestire le eccezioni e i conflitti:
• Logica per Default: Distingue tra fatti osservati (certi) e fatti ricavati per inferenza (presunti). In caso di conflitto, l’informazione osservata prevale sempre su
quella inferita (ad esempio, se so che "gli uccelli volano" ma osservo un uccello con
un’ala spezzata, il sistema conclude che quell’esemplare non può volare).
• Mondi Possibili: Mantengono rappresentazioni parallele e alternative della realtà
per esplorare diverse ipotesi in conflitto tra loro.
Modelli Quantitativi
In questo approccio, ad ogni elemento di conoscenza viene associata una grandezza numerica che ne esprime il grado di certezza, affidabilità o credenza.
• Modelli probabilistici: Basati sulla frequenza statistica degli eventi.
• Modelli di credenza e possibilità: Misurano quanto un agente ritiene plausibile
un’affermazione.
• Logica Fuzzy (Verità graduale): Gestisce concetti sfumati dove la verità non è
binaria ma si distribuisce su un intervallo continuo (es. il grado di "altezza" di una
temperatura).
12.2
Modelli per il trattamento dell’incertezza
Il trattamento dell’incertezza richiede l’associazione di misure quantitative agli elementi
di conoscenza per caratterizzare gli aspetti di ignoranza rispetto alla realtà. Tali misure
possono essere espresse tramite valori numerici (singoli o in coppie) o valori linguistici
(es. "credo molto", "poco probabile"), a condizione che siano definiti una metrica e degli
operatori formali per la loro manipolazione.
59
12.2.1
Misure del Grado di Credenza: La Probabilità
Il modello probabilistico è lo strumento principale per quantificare quanto si crede che
una proposizione sia vera.
• Caratteristiche: I valori sono compresi nell’intervallo [0, 1]. In questo modello,
la somma delle probabilità delle ipotesi alternative deve essere sempre uguale a 1;
ciò implica che non è possibile rappresentare esplicitamente l’ignoranza, poiché ogni
"vuoto" conoscitivo viene distribuito tra le alternative esistenti.
• Gestione dell’Incertezza: L’assenza di informazione viene trattata in modo identico alla contraddizione: se non si hanno evidenze a favore o contro un fatto, gli viene
assegnata una probabilità di 0, 5 (equiprobabilità).
Inferenza e Reti Bayesiane
L’inferenza probabilistica si basa sul Teorema di Bayes, che permette di calcolare la
probabilità a posteriori (P (H|E)) di un’ipotesi H data un’evidenza E:
P (H|E) =
P (H) · P (E|H)
P (E)
Questa logica viene estesa nelle Reti Bayesiane, grafi diretti aciclici dove i nodi rappresentano proposizioni e gli archi i legami causali. La probabilità di un evento viene propagata nella rete assumendo che ogni nodo dipenda esclusivamente dai suoi genitori diretti.
Nonostante il calcolo sia computazionalmente oneroso (NP-hard), l’uso di euristiche e
topologie controllate permette di gestire reti con migliaia di nodi.
12.2.2
Teoria della Credenza (Dempster-Shafer)
Questo approccio estende la probabilità per modellizzare il supporto che l’evidenza fornisce alle ipotesi. Invece di distribuire la probabilità solo sui singoli eventi, la massa di
probabilità M (pari a 1) viene distribuita su tutte le possibili disgiunzioni (sottoinsiemi)
delle alternative.
• Supporto (Belief ): Rappresenta la somma delle masse assegnate a tutti i sottoinsiemi di un’ipotesi A.
• Plausibilità (Pl): Indica quanto un’ipotesi è compatibile con l’evidenza totale,
calcolata come 1 − Supporto(¬A).
La probabilità effettiva di un fatto è contenuta nell’intervallo definito dai limiti [Supporto, P lausibilit].
All’aumentare dell’evidenza, questo intervallo si restringe, convergendo verso il valore di
probabilità reale.
12.2.3
Teoria della Possibilità
È un’estensione della teoria precedente utilizzata quando i sottoinsiemi a cui è assegnata
la massa di probabilità sono inclusi l’uno nell’altro (nested). In questo caso, la plausibilità
di un insieme corrisponde al valore massimo delle possibilità dei suoi elementi. Se non si
dispone di alcuna evidenza, la possibilità di un evento A e quella della sua negazione ¬A
sono entrambe pari a 1 (entrambi gli esiti sono "pienamente possibili").
60
12.2.4
Probabilità Soggettive e Certainty Factors
Tipico dei sistemi esperti di diagnosi (come MYCIN), questo modello utilizza la valutazione di esperti umani per raccogliere evidenze indipendenti:
• MB (Measure of Belief ): Evidenza a favore di un’ipotesi (0 − 1).
• MD (Measure of Disbelief ): Evidenza contro un’ipotesi (0 − 1).
• Certainty Factor (CF): Calcolato come CF = M B − M D. Il valore varia da −1
(falsità certa) a +1 (verità certa).
I valori forniti dagli esperti non sono puramente statistici, ma risentono della sensibilità
soggettiva e di fattori culturali (es. la tendenza a raggruppare le valutazioni intorno a
certi valori basandosi sull’esperienza pregressa).
12.2.5
Grado di Credenza vs Grado di Verità
Un errore concettuale comune è confondere quanto crediamo che una cosa sia vera con
quanto questa cosa sia intrinsecamente vera:
• Grado di Credenza (Probabilità): Indica l’incertezza sulla verità di una proposizione binaria (es. "Credo all’80% che Mario sia alto").
• Grado di Verità (Logica Fuzzy): Indica quanto una proposizione sfumata sia
vera rispetto a una definizione (es. "Mario è alto al 90%" perché la sua altezza di
1,78m non è pienamente corrispondente allo stereotipo ideale di ’alto’).
Questi due aspetti possono coesistere: è possibile definire formalmente la probabilità che
una proposizione abbia un certo grado di verità graduale.
61
Capitolo 13
Insiemi fuzzy
La tecnologia degli insiemi fuzzy nasce dall’esigenza di costruire modelli formali che utilizzino il linguaggio naturale per descrivere e manipolare grandezze fisiche, permettendo di
operare a un livello di astrazione superiore rispetto alla semplice elaborazione numerica.
13.1
Motivazioni: programmare con le parole
Un modello è una rappresentazione selettiva della realtà che isola gli aspetti rilevanti per
una specifica applicazione. Nei sistemi artificiali, la scelta della modalità di rappresentazione determina la capacità del sistema di interagire con l’ambiente e con l’utente.
13.1.1
Modelli linguistici e variabili ordinali
Gli insiemi fuzzy forniscono il formalismo necessario per costruire modelli linguistici,
in cui la conoscenza è espressa tramite termini qualitativi anziché esclusivamente tramite
valori numerici. Questo approccio si applica alle variabili ordinali, ovvero grandezze
per le quali esiste una relazione d’ordine definita tra i valori. Esempi tipici includono:
• Variabili numeriche: Grandezze misurate su scale continue, come la temperatura
o la pressione di un impianto industriale.
• Variabili simboliche ordinate: Sequenze di termini come i livelli di scolarità
(elementari, medie, superiori, laurea), dove pur non essendoci un numero, è possibile
stabilire una gerarchia "prima-dopo".
L’interpretazione linguistica consiste nell’associare termini come "alto", "medio"
o "basso" a determinati valori di una variabile ordinale. Tale associazione è strettamente
dipendente dal contesto: il significato di "temperatura alta" varia radicalmente se applicato a un reattore nucleare, a un sistema di refrigerazione o alla rilevazione della febbre
in un paziente.
13.1.2
Ragionamento e astrazione
L’uso di termini linguistici permette di implementare il cosiddetto "ragionare a parole"
(computing with words). Questo offre vantaggi significativi nella modellizzazione di sistemi
complessi:
62
• Compattezza del modello: Una singola regola linguistica (es. "Se la temperatura
è alta e la pressione è media, allora l’allarme è arancione") può sostituire centinaia
di righe di codice basate su valori puntuali o elenchi di soglie numeriche.
• Gestione della sfumatura: I modelli basati su intervalli rigidi (es. temperatura >
450◦ C) falliscono nel gestire i casi limite (es. 449.9◦ C). Un modello fuzzy riconosce
che un valore molto prossimo alla soglia è "quasi alto", garantendo una transizione
fluida e una maggiore robustezza del sistema.
• Efficacia concettuale: Il modello cattura la logica sottostante al problema senza
richiedere una precisione numerica che spesso è superflua o non disponibile.
13.1.3
Il problema del Symbol Grounding
Un limite storico dell’intelligenza artificiale simbolica classica è stato il symbol grounding, ovvero la difficoltà di collegare i simboli manipolati dal computer alla realtà fisica percepita. Senza questo collegamento, i simboli restano concetti astratti privi di un
significato "fondato" sull’esperienza.
Gli insiemi fuzzy risolvono questa criticità facilitando la trasformazione segnalesimbolo. I dati grezzi provenienti dai sensori (segnali) vengono mappati su concetti
linguistici (simboli), fornendo alla macchina un’ancora con la realtà fisica. Ad esempio,
i valori numerici di rosso, verde e blu catturati da una telecamera vengono trasformati,
tramite un processo di classificazione fuzzy, nel simbolo concettuale "rosso", permettendo
al sistema di ragionare sul colore degli oggetti in modo simile all’essere umano.
13.2
Cos’è un insieme fuzzy?
Un insieme classico, definito in questo contesto come insieme crisp (rigido o netto),
è un’entità che partiziona gli elementi di un universo del discorso in modo binario: un
elemento appartiene o non appartiene all’insieme sulla base di una proprietà caratteristica.
Tale appartenenza è regolata da una funzione che restituisce esclusivamente i valori {0, 1}
(Vero o Falso).
Al contrario, un insieme fuzzy (sfumato o sfocato) permette di modellare concetti
le cui definizioni non hanno confini netti, come "adulto", "giovane" o "caldo". In questi
insiemi, l’appartenenza è una questione di grado.
13.2.1
La funzione di appartenenza
Un insieme fuzzy è definito univocamente dalla sua funzione di appartenenza, solitamente indicata con il simbolo µ. Questa funzione mappa ogni elemento dell’universo del
discorso U su un intervallo continuo di numeri reali compreso tra 0 e 1:
µ : U → [0, 1]
Il valore restituito rappresenta il grado di appartenenza dell’elemento all’insieme:
• µ(x) = 1: L’elemento appartiene pienamente all’insieme.
• µ(x) = 0: L’elemento non appartiene affatto all’insieme.
63
• 0 < µ(x) < 1: L’elemento appartiene parzialmente all’insieme con una certa
gradualità.
Nelle applicazioni pratiche, per ottimizzare il carico computazionale, è possibile definire una soglia di significatività (ad esempio 0, 5). In questo caso, il sistema prende in
considerazione solo le interpretazioni linguistiche il cui grado di appartenenza supera tale
valore, tralasciando le altre.
13.2.2
Definizione di un insieme fuzzy
Il processo di costruzione di un insieme fuzzy per una specifica applicazione segue una
metodologia strutturata:
1. Selezione della variabile: Si identifica la grandezza di interesse e il suo intervallo
di valori (es. distanza da 0 a 10 metri).
2. Identificazione delle etichette (Label): Si scelgono i termini linguistici significativi (es. "vicino", "medio", "lontano").
3. Individuazione dei punti caratteristici: Si determinano i valori della variabile
in cui la funzione di appartenenza assume valori critici (0, 1 o cambiamenti di
pendenza).
4. Scelta della forma della funzione: Si stabilisce l’andamento analitico della
funzione.
5. Verifica: Si valuta se il modello cattura correttamente i requisiti dell’applicazione.
13.2.3
Tipologie di funzioni di appartenenza
Le funzioni di appartenenza possono assumere diverse forme geometriche e analitiche a
seconda del fenomeno da modellare:
• Trapezoidale e Triangolare: Le più comuni per la loro semplicità computazionale, definite da segmenti lineari.
• Campana e Gaussiana: Utilizzate per modellare transizioni più morbide e naturali.
• Singleton (Singoletto): Un insieme fuzzy che ha un grado di appartenenza pari a
1 per un unico valore puntuale e 0 per tutti gli altri. Viene usato per rappresentare
numeri "crisp" all’interno di un sistema fuzzy.
• Intervallo: Rappresentato come una funzione rettangolare dove tutti i membri
all’interno di un range hanno grado 1.
13.2.4
Insiemi fuzzy su scale ordinali non numeriche
L’applicazione degli insiemi fuzzy non è limitata a variabili numeriche continue. È possibile definire funzioni di appartenenza anche su scale ordinali composte da simboli, come
il livello di scolarità. In questo caso, la funzione associa un grado di verità a categorie
discrete (es. nessuna educazione, elementari, medie, ecc.) per definire concetti come "educazione scarsa" o "educazione elevata", permettendo di trattare linguisticamente dati che
non hanno una natura originariamente metrica.
64
13.3
Operazioni su insiemi fuzzy
L’idea degli insiemi fuzzy rappresenta un’estensione diretta della teoria degli insiemi classici. Di conseguenza, le operazioni fondamentali definite sugli insiemi crisp — complemento, unione e intersezione — trovano il loro analogo nel dominio fuzzy attraverso l’uso
di operatori matematici applicati alle funzioni di appartenenza.
La relazione tra insiemi fuzzy e logica fuzzy è speculare a quella esistente tra insiemi classici e logica booleana: le operazioni insiemistiche costituiscono la base per la
definizione degli operatori logici necessari al ragionamento sfumato.
13.3.1
Operatori Standard
Sebbene sia possibile definire intere classi di operatori con diverse proprietà matematiche,
gli operatori standard (noti anche come operatori di Zadeh) sono i più diffusi:
• Complemento: L’appartenenza di un elemento x al complemento di un insieme
fuzzy F (indicato come ¬F ) è definita dalla differenza rispetto all’unità:
µ¬F (x) = 1 − µF (x)
• Unione: Il grado di appartenenza di un elemento all’unione di due insiemi fuzzy
F1 e F2 è determinato dal valore massimo tra i rispettivi gradi di appartenenza:
µF1 ∪F2 (x) = max(µF1 (x), µF2 (x))
• Intersezione: Il grado di appartenenza all’intersezione di due insiemi fuzzy è
determinato dal valore minimo tra i gradi di appartenenza ai singoli insiemi:
µF1 ∩F2 (x) = min(µF1 (x), µF2 (x))
13.3.2
Caratteristiche delle Operazioni Fuzzy
L’applicazione di questi operatori può generare insiemi con proprietà differenti rispetto a
quelli di partenza:
• Normalità: Un insieme si dice "normale" se il suo valore massimo di appartenenza
è 1. L’intersezione di due insiemi fuzzy può produrre un insieme "non normale" (il
cui picco è inferiore a 1) se i due insiemi originali non condividono alcun elemento
con grado 1.
• Convessità: Operazioni come il complemento possono trasformare un insieme convesso (con un unico picco o una zona piatta centrale) in uno non convesso (es. il
concetto di "non-medio" può risultare in una funzione con due picchi separati).
13.3.3
Esempi Applicativi su Forme Particolari
Le operazioni producono risultati geometricamente intuitivi a seconda della forma delle
funzioni di appartenenza coinvolte:
• Rettangoli: L’unione di due rettangoli adiacenti o sovrapposti genera un unico rettangolo che copre l’intero intervallo. L’intersezione di due rettangoli che si toccano
in un solo punto produce un singleton.
65
• Singoletti (Singleton): Il complemento di un singoletto è rappresentato dall’intero universo del discorso con grado 1, ad eccezione del singolo punto di definizione
che assume grado 0.
• Campane e Gaussiane: Il complemento di una funzione a campana assume
una forma a "valle", dove il grado di verità è minimo in corrispondenza del picco
originale.
• Insiemi Disgiunti: L’intersezione di due insiemi fuzzy completamente disgiunti
(senza alcuna sovrapposizione nelle basi) restituisce un insieme vuoto (µ = 0 per
ogni x).
66
Capitolo 14
Logica fuzzy e regole fuzzy
La logica fuzzy rappresenta un’estensione della logica booleana classica, superando il
limite dei due soli valori di verità (Vero o Falso) per permettere la rappresentazione di
conoscenze incerte o non ancora determinate.
14.1
Introduzione alla logica fuzzy
Mentre la logica booleana è limitata da una struttura binaria che non consente di esprimere
il valore di verità di proposizioni riguardanti eventi futuri o concetti sfumati, la logica
fuzzy è una logica a infiniti valori. In questo paradigma, la verità di una proposizione
può assumere qualsiasi valore reale all’interno dell’intervallo [0, 1], dove lo 0 corrisponde
al falso assoluto e l’1 al vero assoluto.
La logica fuzzy è isomorfa alla teoria degli insiemi fuzzy, il che permette di trasporre
i risultati e gli operatori della teoria degli insiemi direttamente nel dominio logico.
14.1.1
Proposizioni e variabili linguistiche
In logica fuzzy, le proposizioni seguono la forma canonica x is L, dove x rappresenta una
variabile linguistica e L è un’etichetta (label) che denota un insieme fuzzy.
Una variabile linguistica è definita formalmente da una quintupla 〈x, T (x), U, G, M 〉:
• x: Il nome della variabile (es. Temperatura).
• T (x): L’insieme dei valori linguistici che la variabile può assumere (es. {freddo,
medio, caldo}).
• U : L’universo del discorso definito sulla variabile di base u (es. i gradi Celsius).
• G: La grammatica che genera i termini linguistici.
• M : La regola semantica che associa ogni valore linguistico al suo significato (ovvero
al corrispondente insieme fuzzy).
14.1.2
Determinazione del valore di verità
Il valore di verità di una proposizione fuzzy P , indicato con T (P ), è direttamente derivato
dal grado di appartenenza dell’elemento u all’insieme fuzzy F definito dall’etichetta L. Se,
ad esempio, una temperatura di 30◦ C appartiene all’insieme fuzzy "Alta" con un grado
di 0, 75, allora il valore di verità della proposizione "la temperatura è alta" sarà 0, 75.
67
14.1.3
Operatori logici di composizione
Gli operatori logici della logica fuzzy sono definiti in analogia con le operazioni insiemistiche:
• NOT (¬): Implementato come complemento, µ¬A = 1 − T (A).
• AND (∧): Implementato tramite una T-norma. L’operatore standard è il minimo,
ma è frequente anche l’uso del prodotto algebrico.
• OR (∨): Implementato tramite una T-conorma. L’operatore standard è il massimo, ma si utilizza anche la somma probabilistica (T (A) + T (B) − T (A) · T (B)).
14.1.4
Differenze con la logica booleana e superamento dei paradossi
L’ammissione di valori di verità intermedi comporta la caduta di alcune tautologie fondamentali della logica classica:
• Legge del terzo escluso: In logica fuzzy, A ∨ ¬A non è necessariamente uguale a
1. Se T (A) = 0, 7, allora T (A ∨ ¬A) = max(0, 7; 0, 3) = 0, 7.
• Legge di non contraddizione: A ∧ ¬A non è necessariamente uguale a 0. Con
T (A) = 0, 7, l’intersezione fornisce min(0, 7; 0, 3) = 0, 3.
Un vantaggio significativo della logica fuzzy è la risoluzione del paradosso del mentitore (l’asserzione "io sto mentendo"). Mentre in logica classica questa frase genera
un’instabilità insolubile, in logica fuzzy è possibile assegnare alla proposizione e alla sua
negazione un valore di verità pari a 0, 5. Tale assegnamento risulta consistente con gli
assiomi e privo di contraddizioni interne, permettendo al sistema di rappresentare stati
della realtà intrinsecamente ambivalenti.
14.2
Regole fuzzy
I sistemi basati su regole fuzzy implementano meccanismi di inferenza tra valori di ingresso e valori di uscita, permettendo di modellare processi decisionali complessi tramite
il linguaggio naturale. Una regola fuzzy è composta da clausole che seguono la forma
canonica V is L, dove V è una variabile linguistica e L è l’etichetta associata a un insieme
fuzzy.
In genere, le clausole dell’antecedente sono collegate esclusivamente dall’operatore
AND, sebbene la logica fuzzy permetta teoricamente l’uso di qualsiasi connettivo.
14.2.1
Tipologie di regole
Esistono due modelli principali di regole fuzzy, che differiscono per la natura del conseguente:
68
Regole di Mamdani (Linguistiche)
Introdotte nel 1972, queste regole presentano un conseguente espresso anch’esso in termini linguistici. Mettono in relazione una configurazione di ingresso con una descrizione
simbolica delle uscite desiderate. Un esempio tipico è il controllo di un robot: "Se la
distanza dalla palla è lontana e la direzione è davanti, allora la velocità è alta".
Regole di Sugeno (Matematiche o di Modello)
In questo modello, il conseguente non è un’etichetta linguistica ma una funzione matematica delle variabili di ingresso. Queste regole legano l’interpretazione linguistica delle condizioni di applicabilità a un modello specifico (lineare o non lineare). Ad esempio: "Se la temperatura è alta e la pressione è alta, allora il calore richiesto è pari a
2000 + 3 · Temp + 7 · Pres".
14.2.2
Il processo di inferenza fuzzy
L’attivazione delle regole e la generazione dell’uscita seguono un processo strutturato in
cinque fasi:
1. Matching degli ingressi: I valori numerici (o ordinali) in ingresso vengono confrontati con le funzioni di appartenenza per determinare il grado di verità delle
singole clausole linguistiche.
2. Combinazione dell’antecedente: I gradi di verità delle clausole dell’antecedente vengono combinati utilizzando una T-norma (solitamente il minimo) per
determinare quanto la regola sia adatta alla situazione corrente.
3. Combinazione con il peso della regola: Se alle regole è associato un peso
(grado di importanza), questo viene combinato con il grado dell’antecedente tramite
un’altra T-norma.
4. Aggregazione delle uscite: Poiché più regole possono fornire indicazioni sulla
stessa variabile di uscita, i loro contributi vengono aggregati utilizzando una Tconorma (solitamente il massimo).
5. Defuzzificazione: Se l’applicazione richiede un’uscita numerica puntuale, l’insieme
fuzzy risultante dall’aggregazione deve essere convertito in un numero.
14.2.3
Metodi di defuzzificazione
La scelta del metodo di defuzzificazione è un passaggio critico della progettazione, poiché
algoritmi diversi possono produrre valori numerici sensibilmente differenti. Tra i metodi
più comuni si annoverano:
• Media pesata (Centroide): Calcola il baricentro dell’area o dei singleton risultanti. È il metodo più utilizzato per la sua capacità di bilanciare i contributi di
tutte le regole attivate.
• Bisezione: Individua il valore che divide l’area dell’insieme fuzzy in due parti
uguali.
69
• Media dei massimi (MOM): Calcola la media dei valori della variabile che
presentano il massimo grado di appartenenza.
• Massimo più alto o più basso: Seleziona l’estremo superiore o inferiore dell’intervallo con il massimo grado di verità.
14.3
Progettazione di sistemi a regole fuzzy
La progettazione di un sistema a regole fuzzy si articola in fasi sequenziali che permettono
di passare dalla definizione astratta degli obiettivi alla realizzazione di codice eseguibile
su architetture hardware specifiche .
14.3.1
Definizione del problema
La fase iniziale richiede la delimitazione rigorosa del dominio d’azione:
• Variabili di ingresso e uscita: Identificazione delle grandezze misurabili fornite
dai sensori e dei segnali da inviare agli attuatori [cite: 2622-2624].
• Obiettivi del modello: Definizione del comportamento atteso del sistema (es.
stabilizzazione di una temperatura o controllo di un movimento)[cite: 2624].
14.3.2
Parametrizzazione del sistema
Questa fase riguarda la definizione delle componenti logiche e matematiche del sistema:
Design delle funzioni di appartenenza (MF)
Per ogni variabile, è necessario stabilire il numero e la forma dei fuzzy-set [cite: 2625-2626].
Alcune euristiche consolidate includono:
• Granularità: Il numero di funzioni è solitamente compreso tra 3 e 7, riflettendo i
limiti di discriminazione della mente umana [cite: 2628-2629].
• Copertura e stabilità: Le funzioni devono coprire l’intero universo del discorso
dell’ingresso, garantendo un grado di appartenenza pari a 1 agli estremi dell’intervallo [cite: 2629-2631].
• Robustezza degli incroci: Per garantire una risposta fluida, le funzioni adiacenti
devono sovrapporsi in modo che la somma dei gradi di appartenenza per ogni punto
sia idealmente pari a 1 (es. incrocio al livello 0,5)[cite: 2633].
Selezione del meccanismo inferenziale
La scelta degli operatori (T-norme e T-conorme) determina la "psicologia" del ragionamento del sistema [cite: 2634-2636]:
• Minimo vs Prodotto: L’operatore minimo agisce in modo pessimistico, dando
risalto alla clausola dell’antecedente con il matching peggiore [cite: 2639-2642]. Il
prodotto è invece inclusivo, permettendo a tutti i gradi di matching di contribuire
al risultato finale [cite: 2641-2643].
70
• Massimo vs Somma pesata: Analogamente per l’aggregazione, il massimo è un
operatore ottimista che privilegia la regola con l’uscita migliore, mentre la somma
pesata integra i contributi di tutte le regole attivate [cite: 2645-2646].
14.3.3
Verifica e testing
Il sistema viene sottoposto a test per garantire che non presenti picchi o avvallamenti
indesiderati nella risposta[cite: 2647, 2660]:
• Simulazione dinamica: Il controllore viene testato in un ambiente virtuale accoppiato a un modello matematico del processo reale[cite: 2653].
• Analisi delle superfici di controllo: Verifica statica della relazione ingressiuscite tramite visualizzazione tridimensionale. Tale analisi permette di identificare
plateau (zone di saturazione) e transizioni non lineari [cite: 2655-2659].
• Test in tempo reale: Validazione finale sul processo fisico in condizioni di sicurezza
controllata [cite: 2662-2663].
14.3.4
Strumenti e implementazione
Gli strumenti di sviluppo moderni offrono interfacce grafiche per la definizione di regole
e funzioni, fornendo poi generatori di codice automatici [cite: 2664-2667]:
• Generazione di codice: Il sistema può produrre codice in linguaggio C o codice
macchina ottimizzato per microprocessori estremamente piccoli (embedded), come
quelli presenti in fotocamere digitali o elettrodomestici [cite: 2672-2673].
• Sistemi generici: Mentre i sistemi di controllo operano in un "unico colpo" (ingressi → uscita), i sistemi fuzzy generici possono gestire catene inferenziali complesse,
dove le uscite di alcune regole alimentano gli antecedenti di altre [cite: 2675-2677].
71
Capitolo 15
Controllo fuzzy e altre applicazioni
Il controllo fuzzy rappresenta l’ambito di applicazione di maggior successo commerciale
per le tecnologie basate sulla logica sfocata, grazie alla sua capacità di gestire sistemi
complessi senza la necessità di modelli matematici precisi.
15.1
Controllo fuzzy
Un sistema di controllo ha l’obiettivo di regolare il comportamento di un sistema fisico o
sociale fornendo ingressi appropriati basati sul comportamento desiderato e sulle variabili osservate. Mentre i controllori tradizionali (PID - Proporzionali Integrali Derivativi)
utilizzano formule matematiche rigide basate sull’errore istantaneo, derivato e integrale,
il controllo fuzzy opera tramite una base di regole linguistiche.
15.1.1
Architettura e vantaggi
Un controllore fuzzy si interfaccia con il sistema reale tramite due unità fondamentali:
l’interfaccia di fuzzificazione, che traduce i dati numerici dei sensori in insiemi fuzzy, e l’interfaccia di defuzzificazione, che riconverte i risultati dell’inferenza in segnali
numerici per gli attuatori.
I principali motivi del successo di questa tecnologia sono:
• Robustezza: Il sistema è intrinsecamente resistente al rumore poiché piccole variazioni negli ingressi producono variazioni limitate nelle uscite.
• Ampio campo di applicabilità: A differenza dei PID, tarati su una specifica
condizione di funzionamento, un sistema fuzzy può coprire diverse zone operative
attivando regole differenti per ogni situazione.
• Definizione euristica: Permette di catturare e codificare direttamente l’esperienza
di un operatore umano sotto forma di regole linguistiche.
15.1.2
Esempi applicativi storici e industriali
Trasporto e Automazione
Un esempio storico è il controllo della frenata della metropolitana di Sendai (1985), dove
il sistema fuzzy ha permesso di gestire diverse condizioni di carico dei vagoni garantendo
comfort per i passeggeri, precisione nell’arresto e risparmio energetico. Analogamente,
72
nel 1990 Sugeno ha realizzato un mini-elicottero controllato vocalmente in grado di volare
stabilmente anche in presenza di forti raffiche di vento, grazie alla capacità del controllo
fuzzy di contrastare disturbi non previsti dal modello.
Processi termici complessi
Nel 1996 è stato sviluppato un sistema per il controllo di forni per la stagionatura dei
profilati d’alluminio. Il sistema doveva gestire migliaia di profili con caratteristiche termiche diverse e dati di scarsa qualità. Attraverso l’auto-adattamento, il controllore fuzzy
è riuscito a ridurre i tempi di riscaldamento e a ottenere un risparmio energetico del 30
15.1.3
Elettrodomestici e sistemi a basso costo
Dagli anni Novanta, il controllo fuzzy è stato integrato in prodotti di largo consumo per
semplificare l’interazione con l’utente a costi ridotti:
• Lavatrici: Riconoscono il tipo di materiale e la quantità di carico misurando il
tempo di assorbimento dell’acqua tramite pressostati, ottimizzando i cicli di lavaggio
e risciacquo.
• Telecamere e Fotocamere: Mantengono il fuoco su oggetti in rapido movimento
adattando la distanza focale in tempo reale.
• Frigoriferi e Aspirapolveri: Ottimizzano i consumi energetici e la potenza di
aspirazione in base all’uso e alla superficie rilevata.
15.1.4
Integrazione e sistemi complessi
Nei grandi impianti come i cementifici, dove è difficile definire modelli matematici completi
a causa delle reazioni chimiche variabili, si ricorre alla cattura dell’esperienza dell’operatore esperto tramite regole linguistiche. Inoltre, il controllo fuzzy viene spesso affiancato
ai controllori PID esistenti per migliorarne le prestazioni, modificandone dinamicamente
i parametri di funzionamento in base alle condizioni ambientali.
15.2
Altre applicazioni fuzzy
Oltre al controllo industriale, le tecnologie fuzzy trovano applicazione in numerosi settori
dove la conoscenza è intrinsecamente qualitativa o i dati risultano incompleti e incerti.
15.2.1
Information Retrieval e Basi di Dati Fuzzy
L’integrazione della logica fuzzy nei sistemi di reperimento dell’informazione permette di
effettuare query flessibili che riflettono la sensibilità dell’utente. A differenza dei sistemi
tradizionali che richiedono intervalli rigidi (ad esempio, "investimenti > 2 milioni"), un
sistema fuzzy permette l’uso di termini come "molto" o "recente". Questo approccio evita
di escludere risultati "quasi" corrispondenti (come un investimento di 1,99 milioni) che
verrebbero ignorati in presenza di soglie nette.
Nelle basi di dati fuzzy, gli attributi stessi possono essere definiti tramite etichette
linguistiche (ad esempio, un database di auto usate con età recente, costo basso, consumi
73
molto bassi ). Il sistema è in grado di restituire una lista di record ordinati per grado di
rilevanza rispetto alla query formulata dall’utente.
15.2.2
Sistemi di Supporto alle Decisioni (DSS)
I sistemi esperti fuzzy fungono da "consiglieri" in domini dove i processi decisionali sono
basati su valutazioni qualitative:
• Controllo di Qualità: Viene utilizzato per prodotti le cui caratteristiche sono
apprezzate soggettivamente (come birra, caffè o finiture di automobili). Il sistema
traduce i giudizi degli esperti (ad esempio, "troppo amara" o "troppo gasata") in
indicazioni operative per correggere i parametri del processo produttivo.
• Diagnosi in fase di Commissioning: Trova applicazione durante l’avviamento
di impianti industriali complessi, dove i dati sono spesso scarsi, incerti o derivanti
da malfunzionamenti transitori non previsti durante la normale fase operativa.
• Gestione del Personale e Finanza: Supporta la valutazione di candidati o la
selezione di investimenti azionari, contesti in cui i dati di mercato o le interviste
attitudinali sono ampiamente qualitativi e soggetti a interpretazione.
15.2.3
Pianificazione della Produzione
In ambito industriale, la logica fuzzy permette di gestire la pianificazione in presenza di
vincoli sfumati, come i tempi di lavorazione variabili. Questo approccio offre vantaggi
significativi:
• Flessibilità: Consente di accettare ed elaborare piani con diversi livelli di rischio
calcolato.
• Efficienza computazionale: Fornisce soluzioni soddisfacenti ("piani buoni") in
tempi estremamente rapidi, evitando l’esplosione combinatoria tipica degli algoritmi
di ricerca dell’ottimo globale.
15.2.4
Trasparenza e Condivisione dei Modelli
Uno dei principali vantaggi dell’approccio fuzzy nelle applicazioni decisionali è la creazione
di un modello linguistico esplicito. Rendere evidenti le regole della decisione in termini
naturali permette di condividere, discutere e validare i criteri di scelta con i decisori umani
in modo trasparente e comprensibile.
74
Capitolo 16
Apprendimento automatico
L’apprendimento automatico (Machine Learning) è l’area di ricerca che si occupa della definizione di algoritmi atti a sviluppare programmi capaci di migliorare le proprie
prestazioni nel tempo attraverso l’elaborazione di dati ed esperienze.
16.1
Paradigmi di apprendimento
Il concetto di apprendimento in ambito informatico può essere formalizzato secondo la
definizione proposta da Tom Mitchell: si dice che un programma apprende da un’esperienza E rispetto a una classe di problemi T e a una misura di performance P , se le sue
prestazioni nel completare i compiti in T , misurate da P , migliorano con l’esperienza E.
16.1.1
Componenti fondamentali
Per descrivere rigorosamente un processo di apprendimento è necessario identificare tre
elementi chiave:
1. Compito (T ): L’attività specifica o la classe di problemi che il sistema deve
risolvere (ad esempio, giocare a dama).
2. Esperienza (E): L’insieme di dati, esempi o interazioni accumulate dal sistema
(ad esempio, le partite giocate).
3. Performance (P ): La metrica quantitativa che valuta l’efficacia del sistema (ad
esempio, la percentuale di partite vinte).
16.1.2
Tipologie di apprendimento
Esistono tre paradigmi principali che differiscono per la natura dell’esperienza e per le
modalità con cui il sistema estrae la conoscenza.
Apprendimento non supervisionato
In questo paradigma, l’esperienza è costituita da un insieme di esempi privi di etichette o interpretazioni predefinite. Il compito del sistema è individuare autonomamente
regolarità, pattern o strutture nascoste nei dati.
75
• Esempio: L’analisi automatizzata degli scontrini di un supermercato per identificare associazioni frequenti tra prodotti (Market Basket Analysis).
• Obiettivo: Scoperta di giacimenti informativi o raggruppamento (clustering) di
dati simili.
Apprendimento supervisionato
L’esperienza è composta da esempi etichettati da un supervisore esterno ("docente").
Ogni dato di ingresso è associato a una risposta corretta, e il sistema deve estrarre una
descrizione compatta (un modello) in grado di mappare correttamente nuovi ingressi non
ancora visti.
• Esempio: Un sistema che analizza fotografie di animali già classificate da un utente
(ad esempio, "gradito" o "non gradito") per dedurre un modello dei gusti dell’utente
stesso.
• Obiettivo: Classificazione o regressione basata sull’accuratezza della previsione.
Apprendimento per rinforzo
Questo modello si basa sull’interazione dinamica tra un agente e un ambiente. L’agente
compie azioni e riceve in risposta un "premio" (rinforzo positivo) o una "punizione"
(rinforzo negativo). L’agente non apprende seguendo una spiegazione esplicita, ma agisce
per massimizzare il valore del rinforzo totale accumulato nel tempo.
• Esempio: L’addestramento di un animale che riceve una ricompensa ogni volta
che esegue correttamente un esercizio. L’animale stabilizza il comportamento per
ottenere il premio.
• Obiettivo: Ottimizzazione di una politica di comportamento in contesti dinamici
e interattivi.
16.2
Classificazione
All’interno del paradigma dell’apprendimento automatico, la classificazione (nota anche come classificazione supervisionata) rappresenta un problema specifico volto a
identificare l’appartenenza di un’istanza a una determinata categoria sulla base delle sue
caratteristiche osservabili.
16.2.1
Dalla realtà fisica ai dati: il processo di modellizzazione
Il passaggio dalla realtà fisica alla rappresentazione informatica richiede l’identificazione
di variabili significative che descrivano il fenomeno oggetto di studio. Consideriamo, a
titolo esemplificativo, l’analisi del comportamento di un individuo (il "signor Rossi") nel
decidere se giocare a tennis in base alle condizioni meteorologiche.
Per elaborare una spiegazione di tale comportamento, si procede alla misurazione di
diverse variabili:
76
• Attributi: Rappresentano gli aspetti del fenomeno che vengono misurati. Nel caso
in esame, includono lo stato del cielo (sereno, piovoso, nuvoloso), la temperatura
(caldo, freddo, mite), l’umidità e il vento.
• Classe (o attributo di classe): È la variabile specifica che rappresenta il concetto
o il fenomeno a cui siamo interessati, ovvero la decisione finale ("gioca" o "non
gioca").
• Istanze (o esempi): Rappresentano le singole osservazioni raccolte (le righe di
una tabella dati).
16.2.2
Estrazione e applicazione del modello
L’obiettivo della classificazione è estrarre dalle osservazioni un modello capace di spiegare
il fenomeno e di effettuare previsioni su situazioni future.
Un modello può essere espresso, nella sua forma più semplice, tramite una regola
if-then. Ad esempio:
• "Se il cielo è nuvoloso, allora il signor Rossi andrà a giocare a tennis".
Queste regole confrontano il valore di un attributo con una condizione specifica per
assegnare un valore di classe.
16.2.3
Struttura del processo di classificazione
Il processo si articola in fasi distinte per garantire l’affidabilità del sistema:
1. Dati di Train (Addestramento): L’insieme iniziale di dati raccolti, utilizzato
dall’algoritmo di classificazione per estrarre le regole e costruire il modello.
2. Algoritmo di Classificazione: La procedura computazionale che analizza i dati
di addestramento per identificare le correlazioni tra attributi e classe.
3. Dati di Test: Dati nuovi, non precedentemente mostrati al sistema, utilizzati per
verificare la validità del modello. Applicando il modello a questi dati, si ottengono
previsioni sul fenomeno.
4. Valutazione dell’accuratezza: Misura quanto il modello sia in grado di catturare
correttamente la realtà. L’obiettivo finale è lo sviluppo di modelli con la massima
accuratezza possibile.
16.3
Ipotesi induttiva e generalizzazione
Dopo aver introdotto il problema della classificazione, è necessario definire formalmente
il quadro teorico e le problematiche legate all’estrazione di modelli a partire dai dati.
77
16.3.1
Formalizzazione del problema
Per analizzare il processo di apprendimento si utilizza la seguente notazione:
• Dominio (x): Rappresenta l’insieme di tutte le possibili configurazioni delle variabili misurate (attributi).
• Valori del concetto (d): L’insieme dei valori che definiscono l’obiettivo dell’apprendimento (ad esempio, "si" o "no").
• Concetto (c): Una funzione c : x → d che mappa ogni configurazione del dominio
sul valore corrispondente. È l’obiettivo reale che il sistema cerca di comprendere.
• Insieme di esempi (e): Una collezione di coppie composte dalle variabili misurate
e dalla decisione osservata.
• Ipotesi (h): Una funzione o modello estratto dal sistema per spiegare gli esempi.
• Spazio delle ipotesi (H): L’insieme di tutte le possibili ipotesi esplorabili dall’algoritmo.
L’apprendimento può essere visto come un processo di ricerca all’interno dello spazio
H per individuare l’ipotesi h che meglio rappresenta l’insieme degli esempi e.
16.3.2
Tipologie di problemi
A seconda della natura dell’insieme d, si distinguono tre classi di problemi:
1. Concept-learning: Quando d contiene solo due valori (es. classificazione binaria).
2. Classificazione: Quando d contiene un numero finito di etichette categoriche.
3. Predizione o Regressione: Quando d è un sottoinsieme dei numeri reali (si cerca
di prevedere un valore numerico continuo).
16.3.3
L’ipotesi induttiva
Il presupposto fondamentale dell’apprendimento automatico è l’ipotesi induttiva: se
un’ipotesi h approssima adeguatamente il concetto c su un insieme sufficientemente grande di esempi, allora tale ipotesi sarà in grado di spiegare e prevedere correttamente il
medesimo concetto anche su casi futuri mai visti in precedenza.
16.3.4
Generalizzazione e valutazione
Il concetto di generalizzazione rappresenta la capacità del modello di estendere la
propria efficacia oltre i dati utilizzati per la sua costruzione.
Il processo si divide operativamente in:
• Dati di Train: Utilizzati per costruire l’ipotesi e la spiegazione del fenomeno.
• Dati di Test: Esempi non mostrati durante la fase di addestramento, essenziali
per verificare se il modello ha effettivamente "imparato" o se ha semplicemente
memorizzato gli esempi iniziali.
78
La bontà di un’ipotesi non viene misurata sui dati di addestramento, poiché ciò risulterebbe banale e poco indicativo. La vera performance P (h) viene calcolata come la
percentuale di casi spiegati correttamente sui dati di test, garantendo così la robustezza
e la validità previsionale del sistema.
79
Capitolo 17
Alberi di decisione
Gli alberi di decisione rappresentano uno dei paradigmi più diffusi per la risoluzione di
problemi di classificazione. Essi costituiscono una modalità di rappresentazione delle
ipotesi che spiegano un insieme di esempi, fornendo un modello strutturato per mappare
le osservazioni sugli attributi verso le classi di appartenenza.
17.1
Introduzione
Un albero di decisione è un modello predittivo che descrive una gerarchia di test su variabili
osservabili per giungere a una conclusione logica. Dal punto di vista della classificazione
supervisionata, l’albero rappresenta la logica con cui un fenomeno viene interpretato sulla
base dei dati di addestramento disponibili.
17.1.1
Struttura dell’albero
L’architettura di un albero di decisione si compone di tre elementi fondamentali:
• Nodi interni: Rappresentano i test effettuati sui valori dei singoli attributi del
dominio (ad esempio, una verifica sullo stato del cielo o sul livello di umidità).
• Rami: Rappresentano gli esiti dei test effettuati nel nodo superiore. Ogni ramo
indirizza il processo decisionale verso un sotto-albero o una foglia specifica in base
al valore assunto dalla variabile.
• Foglie: Costituiscono i nodi terminali dell’albero e contengono l’assegnazione definitiva della classe (ad esempio, la decisione "gioca" o "non gioca").
Per determinare la classe di una nuova istanza, si segue il percorso dalla radice verso
il basso: per ogni nodo si esegue il test corrispondente e si imbocca il ramo relativo al
valore osservato, fino a raggiungere una foglia che fornisce il risultato della previsione.
17.1.2
Processo di costruzione e ottimizzazione
La generazione di un albero di decisione è un processo che si articola tipicamente in due
fasi:
1. Fase Top-Down (Costruzione): Si parte dalla radice, che contiene la totalità
degli esempi di addestramento. Gli esempi vengono partizionati ricorsivamente in
80
sotto-insiemi sempre più piccoli scegliendo, di volta in volta, l’attributo che meglio
suddivide i dati.
2. Fase Bottom-Up (Semplificazione o Pruning): Una volta costruito l’albero
completo, si procede dalle foglie verso l’alto per rimuovere i sotto-alberi che non
contribuiscono significativamente a migliorare la performance del modello. Questa
fase è cruciale per evitare fenomeni di overfitting e garantire la generalizzazione del
sistema.
17.1.3
Criteri di selezione degli attributi
Il problema centrale nella costruzione top-down è la scelta dell’attributo ottimale per ogni
nodo. Gli attributi vengono valutati in base alla loro capacità di separare efficacemente
gli elementi appartenenti a classi differenti.
Questa capacità viene misurata tramite misure di purezza: un attributo è considerato preferibile se i nodi figli che genera risultano essere "più puri", ovvero contengono
esempi appartenenti prevalentemente a una singola classe. Le metriche più utilizzate in
letteratura per quantificare questa separazione sono:
• Information Gain: Basato sul concetto di entropia, misura la riduzione dell’incertezza sulla classe dopo la partizione.
• Gini Index: Misura la frequenza con cui un elemento scelto casualmente verrebbe
etichettato in modo errato.
Attraverso l’applicazione sistematica di questi criteri, il sistema partiziona i dati originali in sotto-insiemi sempre più omogenei, costruendo una spiegazione logica e accurata
del fenomeno osservato.
17.2
Entropia e Information Gain
La costruzione di un albero di decisione efficace richiede un criterio rigoroso per determinare quale attributo sia il più idoneo a partizionare l’insieme degli esempi in ogni nodo.
L’obiettivo è massimizzare la "purezza" dei sotto-insiemi risultanti, ovvero la concentrazione di istanze appartenenti a una singola classe. Per quantificare questo obiettivo si
utilizzano i concetti di Entropia e Information Gain.
17.2.1
L’Entropia come misura di disordine
L’entropia è una funzione matematica che misura lo stato di disordine o di incertezza di
un insieme di dati. In un problema di classificazione binaria (come il caso del signor Rossi,
con classi SI/NO), l’entropia dell’insieme E è definita dalla seguente formula:
Entropia(E) = −p+ log2 (p+ ) − p− log2 (p− )
dove p+ rappresenta la percentuale di esempi positivi e p− la percentuale di esempi
negativi.
Caratteristiche fondamentali dell’entropia:
81
• Entropia minima (0): Si ottiene quando l’insieme è perfettamente puro, ovvero contiene solo elementi di una classe (es. 100% SI e 0% NO). In questo stato,
l’informazione è ordinata.
• Entropia massima (1): Si ottiene quando l’insieme è equamente distribuito tra
le classi (50% SI e 50% NO). In questo stato, il disordine è massimo e l’incertezza
sulla classe è totale.
Riprendendo l’insieme dei 14 esempi del signor Rossi, l’entropia totale risulta essere
pari a 0,94, indicando un elevato livello di disordine iniziale.
17.2.2
Information Gain (Guadagno di Informazione)
Mentre l’entropia misura il disordine di un singolo insieme, l’Information Gain (Guadagno di Informazione) misura la riduzione di entropia che si ottiene partizionando l’insieme originale E rispetto a un determinato attributo A. Esso rappresenta, in sostanza,
la quantità di "ordine" guadagnata tramite la suddivisione.
La formula per il calcolo dell’Information Gain è:
Gain(E, A) = Entropia(E) −
v∈Valori(A)
|Ev |
Entropia(Ev )
|E|
dove Ev è il sotto-insieme di esempi per cui l’attributo A assume il valore v. Il peso della
sommatoria è dato dalla cardinalità dei sotto-insiemi: partizioni più grandi influenzano
maggiormente il risultato finale.
17.2.3
Selezione dell’attributo migliore
Il criterio di selezione dell’algoritmo consiste nello scegliere, per ogni nodo, l’attributo che
garantisce il massimo Information Gain. Un guadagno elevato indica che l’attributo
scelto è in grado di separare le classi in modo netto, portando a partizioni con entropia
molto più bassa rispetto all’originale.
17.2.4
Esempio di calcolo: L’attributo "Cielo"
Per determinare quale variabile debba occupare la radice dell’albero, si calcola il Gain per
ogni attributo disponibile. Prendendo come esempio l’attributo "Cielo", si ottengono tre
partizioni:
1. Cielo = Sereno: Produce un sotto-insieme con entropia 0,97.
2. Cielo = Nuvoloso: Produce un sotto-insieme perfettamente puro (tutti gli esempi
appartengono alla stessa classe), con entropia pari a 0.
3. Cielo = Piovoso: Produce un sotto-insieme con entropia 0,97.
Applicando la formula del Gain con l’entropia iniziale di 0,94 e pesando le entropie
delle tre partizioni, il Guadagno di Informazione per l’attributo "Cielo" risulta essere di
0,247.
Confrontando questo valore con gli altri attributi:
82
• Temperatura: Gain = 0,029
• Umidità: Gain = 0,152
• Vento: Gain = 0,048
Essendo 0,247 il valore più alto, l’attributo "Cielo" viene selezionato come radice
dell’albero, poiché è quello che fornisce la migliore separazione iniziale tra i casi in cui il
signor Rossi decide di giocare o meno a tennis.
17.3
Costruzione e semplificazione
La generazione di un albero di decisione avviene attraverso un processo ricorsivo di partizionamento dello spazio dei dati, seguito da una fase di ottimizzazione volta a migliorare
la capacità di generalizzazione del modello.
17.3.1
L’algoritmo ricorsivo di costruzione
Il procedimento fondamentale per la creazione di un albero può essere descritto tramite
una procedura denominata crea-albero, che opera su un insieme di esempi, un attributo
di classe e un insieme di attributi descrittivi. Il processo inizia con la creazione di un
nodo radice che contiene l’intero set di addestramento.
La procedura si arresta in presenza di tre condizioni specifiche (casi base):
1. Purezza assoluta: Se tutti gli esempi nel nodo appartengono alla medesima classe,
il nodo viene etichettato come foglia con il valore di quella classe.
2. Esiguità dei dati: Se il numero di esempi nel nodo è troppo ridotto per giustificare
un ulteriore partizionamento, si interrompe lo sviluppo e si assegna al nodo la classe
di maggioranza (la classe che compare più frequentemente).
3. Esaurimento degli attributi: Se tutti gli attributi disponibili sono già stati utilizzati nei livelli superiori dell’albero, non è più possibile suddividere i dati. Anche
in questo caso si assegna la classe di maggioranza.
Qualora i casi base non siano verificati, l’algoritmo calcola l’Information Gain per ogni
attributo rimanente, seleziona quello con il valore massimo e partiziona gli esempi in tanti
sotto-insiemi quanti sono i valori possibili di tale attributo. La procedura viene quindi
applicata ricorsivamente a ciascun sotto-insieme.
17.3.2
Il problema dell’overfitting e le tecniche di potatura
La costruzione di un albero completo che classifichi perfettamente i dati di addestramento porta spesso a modelli eccessivamente complessi e profondi, che soffrono del fenomeno dell’overfitting. Un modello in over-fitting descrive accuratamente i dati di
addestramento (train) ma fallisce nel fornire previsioni corrette su dati nuovi (test).
Per mitigare questo problema si ricorre alle tecniche di pruning (potatura):
• Pre-pruning (o halting): Consiste nel bloccare la crescita dell’albero prima del
completamento, basandosi su criteri di arresto preventivi o simulazioni (look-ahead).
Tuttavia, è difficile prevedere in anticipo se la prosecuzione del partizionamento
porterebbe a vantaggi informativi reali.
83
• Post-pruning: È la tecnica più efficace e diffusa. Prevede la generazione dell’albero nella sua massima profondità e la successiva semplificazione dei rami tramite
metodi statistici, rimuovendo le ramificazioni che non migliorano significativamente
la performance complessiva.
17.3.3
L’Inductive Bias negli alberi di decisione
Ogni algoritmo di apprendimento automatico è influenzato da un Inductive Bias, ovvero l’insieme di assunzioni che giustificano la classificazione di elementi mai visti prima.
Conoscere il bias permette di motivare e spiegare i risultati ottenuti dal modello.
Negli alberi di decisione, l’inductive bias si manifesta in due direzioni principali:
1. Preferenza per alberi poco profondi: Il sistema favorisce modelli più semplici
poiché garantiscono una migliore protezione contro l’overfitting.
2. Gerarchia dell’informazione: Gli attributi con il maggiore potere discriminante
(massimo Information Gain) sono posizionati più vicino alla radice, definendo così
i criteri prioritari del processo decisionale.
84
Capitolo 18
Regole di classificazione
Le regole di classificazione costituiscono un paradigma alternativo agli alberi di decisione
per la rappresentazione delle ipotesi in un problema di apprendimento supervisionato.
Esse permettono di formalizzare la conoscenza estratta dai dati in una forma modulare e
facilmente interpretabile.
18.1
Gli algoritmi di Sequential Covering
L’approccio basato sulle regole di classificazione mira a definire una spiegazione del fenomeno tramite una sequenza di clausole logiche. Una regola di classificazione segue
la struttura if-then: la parte antecedente (if) specifica una condizione sui valori degli
attributi, mentre il conseguente (then) assegna il valore della classe.
18.1.1
Struttura e funzionamento
In un modello basato su regole, gli esempi vengono valutati sequenzialmente. Il sistema scorre la lista delle regole finché non ne trova una i cui antecedenti sono soddisfatti
dall’istanza in esame.
• Se una regola "scatta", l’istanza viene classificata secondo il conseguente della regola
stessa.
• Se nessuna delle regole specifiche risulta applicabile, interviene la regola di default,
che assegna all’istanza la classe predefinita (solitamente la classe di maggioranza).
18.1.2
L’algoritmo di Sequential Covering
Il Sequential Covering è la classe di algoritmi più utilizzata per generare automaticamente queste regole a partire da un insieme di esempi di addestramento. Il processo si
basa su un ciclo iterativo:
1. Generazione: Viene ricercata una singola regola accurata che spieghi un sottoinsieme degli esempi correnti (procedura learn-one-rule).
2. Verifica della performance: La regola viene mantenuta solo se la sua accuratezza
supera una determinata soglia di qualità predefinita.
85
3. Rimozione degli esempi: Una volta accettata una regola, tutti gli esempi positivi
da essa coperti vengono rimossi dall’insieme di addestramento. Gli esempi negativi
rimangono invece disponibili per le iterazioni successive, per garantire che le nuove
regole imparate siano comunque in grado di discriminarli.
4. Iterazione: Il processo ricomincia sull’insieme di esempi rimanenti (copertura sequenziale) finché non è più possibile generare regole che soddisfino la soglia o finché
tutti gli esempi positivi non sono stati coperti.
18.1.3
Ottimizzazione e ordinamento
Al termine del processo di apprendimento, le regole vengono ordinate tramite una procedura di sort basata sulla loro performance individuale. Questo garantisce che, in fase di
esecuzione, le regole più affidabili e con maggiore potere discriminante vengano valutate
prima di quelle più specifiche o meno accurate.
18.1.4
La procedura Learn-one-rule
Il nucleo dell’algoritmo è la procedura learn-one-rule, responsabile della creazione di
una singola regola di classificazione. Essa opera cercando la migliore combinazione di
attributi e valori che massimizzi l’accuratezza della regola su una porzione dei dati, agendo
come un motore di ricerca nello spazio delle possibili ipotesi.
18.2
Algoritmo Learn-one-rule
L’algoritmo learn-one-rule costituisce il nucleo operativo dei sistemi di Sequential Covering, avendo il compito di generare una singola regola di classificazione che sia il più
accurata possibile o che superi una determinata soglia di performance prestabilita.
18.2.1
Funzionamento del processo di ricerca
Il processo di generazione della regola segue una strategia di raffinamento progressivo:
• Inizializzazione: L’algoritmo parte dalla regola più semplice possibile, caratterizzata da una condizione vuota, che assegna l’appartenenza alla classe positiva
(ovvero il concetto di interesse, come ad esempio "tennis = sì").
• Espansione iterativa: Partendo dalla condizione vuota, l’algoritmo aggiunge sistematicamente clausole di test alla condizione antecedente tramite il confronto di
coppie attributo-valore.
• Criterio di arresto: L’aggiunta di nuove clausole prosegue finché l’accuratezza della regola continua ad aumentare o finché non viene raggiunta la soglia di performance
minima richiesta.
18.2.2
Misura della Performance
Per valutare la bontà di una regola durante la fase di espansione, si utilizza una metrica
di accuratezza basata sulla copertura degli esempi:
86
• T (Total): Numero totale di esempi a cui la regola si applica, definendo la "copertura" della regola.
• P (Positive): Numero di esempi che la regola classifica correttamente all’interno
del set coperto.
• Accuratezza (P/T ): Rappresenta la percentuale di esempi classificati correttamente rispetto al totale dei casi su cui la regola interviene.
18.2.3
Strategia di esplorazione e limiti
L’algoritmo learn-one-rule adotta una strategia di ricerca da generale a specifico, muovendosi da una regola estremamente generale verso una via via più specifica e restrittiva.
L’esplorazione dello spazio delle regole avviene in modalità greedy (locale): il sistema genera la regola migliorando costantemente la migliore candidata del momento.
Questa procedura tende tuttavia a convergere verso ottimi locali, poiché il sistema potrebbe ignorare combinazioni di attributi globalmente superiori in favore di guadagni di
accuratezza immediati e parziali.
18.2.4
Estensioni: Beam Search
Per superare i limiti intrinseci della ricerca locale e ridurre il rischio di stallo in ottimi
locali, è possibile implementare una beam search (ricerca a fascio). In questa modalità
operativa, l’algoritmo non si limita a considerare la singola regola migliore a ogni passo,
ma mantiene un insieme di k candidati promettenti, esplorando parallelamente diverse
traiettorie nello spazio delle ipotesi per individuare la soluzione ottimale.
18.3
Regole e alberi
Il confronto tra le regole di classificazione e gli alberi di decisione permette di evidenziare
differenze strutturali e metodologiche, nonostante entrambi i paradigmi abbiano lo stesso
potere predittivo e siano, in ultima analisi, equivalenti dal punto di vista funzionale.
18.3.1
Confronto strutturale e metodologico
Le due tecniche divergono radicalmente nelle modalità di analisi dei dati e nelle scelte
logiche effettuate durante l’apprendimento:
• Gestione degli esempi: Negli algoritmi per le regole (come il Sequential Covering), il sistema apprende su un sotto-insieme di esempi e, una volta generata
una regola, rimuove gli esempi positivi coperti. Al contrario, gli alberi di decisione
operano su tutti gli esempi contemporaneamente per generare la partizione globale.
• Spazio delle scelte: Le regole di classificazione pongono un numero maggiore
di scelte possibili, poiché devono individuare la migliore coppia attributo-valore per
arricchire una condizione specifica. Gli alberi di decisione hanno uno spazio di scelta
più limitato, dovendo identificare unicamente l’attributo migliore su cui effettuare
la partizione.
87
• Volume dei dati: In letteratura, le regole di classificazione sono considerate più
efficaci quando il numero di esempi disponibili è scarso, mentre gli alberi di decisione
tendono a fornire prestazioni superiori in presenza di grandi moli di dati.
18.3.2
Trasformazione di alberi in regole
Esiste una proprietà di derivazione diretta: da ogni albero di decisione è sempre possibile
estrarre un insieme di regole equivalente. Ogni percorso che conduce dalla radice a una
foglia corrisponde esattamente a una regola di classificazione, dove i test sui nodi interni
formano l’antecedente (if) e la classe della foglia costituisce il conseguente (then).
18.3.3
Vantaggi della rappresentazione a regole
Nonostante l’equivalenza predittiva, le regole di classificazione presentano vantaggi pratici
significativi:
• Espressività e leggibilità: Le regole sono considerate più naturali e facilmente
interpretabili da un operatore umano rispetto alla struttura gerarchica di un albero.
• Compattezza: I modelli a regole evitano la ridondanza strutturale tipica degli alberi, che possono presentare sotto-alberi duplicati in rami differenti per rappresentare
la stessa logica.
• Gestione delle classi: Mentre gli alberi gestiscono tutte le classi simultaneamente,
gli algoritmi a regole si concentrano su una classe alla volta (gli elementi positivi),
permettendo una modellazione più mirata del concetto di interesse.
18.3.4
Semplificazione e Pruning
Anche per le regole di classificazione è necessario applicare tecniche di semplificazione per
contrastare l’overfitting. Queste si dividono in due strategie:
1. Semplificazione incrementale: Viene eseguita durante la generazione della singola regola per eliminare condizioni troppo specifiche che non migliorano l’accuratezza
generale.
2. Semplificazione globale: Viene applicata all’intero insieme di regole già generate
per ottimizzare la struttura complessiva del modello e rimuovere ridondanze.
Oltre all’approccio dal generale allo specifico (Sequential Covering), esistono algoritmi
che esplorano lo spazio delle ipotesi in direzione opposta, partendo da regole estremamente
specifiche (basate sui singoli esempi) e semplificandole progressivamente per aumentarne
il grado di generalizzazione.
88
Capitolo 19
Neuroni naturali e artificiali
L’introduzione delle reti neurali artificiali nasce dal desiderio di superare i limiti dei modelli
computazionali tradizionali, cercando ispirazione nell’architettura biologica del cervello
per realizzare sistemi paralleli, resistenti ai guasti (fault-tolerant) e capaci di apprendere
autonomamente dai dati.
19.1
Dal neurone naturale al percettrone
Mentre i calcolatori convenzionali basati sull’architettura di Von Neumann eccellono nel
calcolo aritmetico veloce, le reti neurali mirano a emulare le funzioni cognitive umane
attraverso unità di computazione semplici e interconnesse.
19.1.1
Il neurone biologico
Il cervello umano comprende circa 100 miliardi di neuroni, ognuno dei quali è collegato a
quelli circostanti tramite circa 10.000 sinapsi. Il funzionamento del neurone biologico può
essere riassunto in un processo elettrochimico di accumulo e rilascio di carica:
• Dendriti: Filamenti che raccolgono i segnali in ingresso dagli altri neuroni.
• Sinapsi: Punti di contatto tra i neuroni. Possono essere eccitatorie (aumentano
la carica interna) o inibitorie (riducono la carica).
• Soma (Corpo cellulare): Accumula la carica elettrica ricevuta.
• Assone: Un filamento più spesso attraverso il quale il neurone rilascia un impulso elettrico (spike) quando la carica accumulata supera una determinata soglia di
attivazione definita dalla membrana.
19.1.2
Il neurone artificiale
Il modello matematico del neurone artificiale semplifica la complessità biologica in una
struttura composta da un meccanismo di accumulo e una funzione di attivazione:
1. Ingressi (Si ): Rappresentano i segnali provenienti da altri neuroni o dall’ambiente
esterno.
2. Pesi (Wji ): Simulano l’efficacia delle sinapsi, pesando l’importanza di ogni segnale
in ingresso.
89
3. Potenziale di attivazione (Zj ): La somma pesata degli ingressi (
Wji Si ).
4. Bias (Bj ): Una soglia di attivazione che deve essere superata affinché il neurone
produca un’uscita significativa.
5. Funzione di attivazione (G): Una funzione non lineare che determina il segnale
in uscita sulla base del potenziale netto.
19.1.3
Funzioni di attivazione
Le funzioni di attivazione più comuni includono:
• Scalino (Step function): L’uscita è binaria (es. -1 o 1), simulando lo "sparo" del
neurone biologico.
• Sigmoide: Una funzione continua che approssima lo scalino nell’intervallo [0, 1].
È fondamentale per dimostrare le proprietà delle reti neurali come approssimatori
universali.
• Tangente iperbolica: Una versione simmetrica della sigmoide con output tra -1
e 1.
19.1.4
Il Percettrone di Rosenblatt
Presentato da Frank Rosenblatt nel 1957, il percettrone è il primo modello di neurone
artificiale capace di apprendere. Esso utilizza una somma pesata degli ingressi seguita da
una funzione a scalino.
Storicamente, il percettrone è stato testato sulla sua capacità di implementare operatori logici fondamentali (AND, OR):
• AND logico: Impostando pesi opportuni (es. W1 = 1.5, W2 = 1, Bias = −2), il
neurone produce un’uscita positiva solo quando entrambi gli ingressi sono veri.
• Separabilità lineare: Geometricamente, il percettrone definisce un confine di
decisione rappresentato da una retta (o un iperpiano in dimensioni superiori) che
separa lo spazio degli ingressi in due classi.
19.1.5
Apprendimento dei pesi
La caratteristica rivoluzionaria del percettrone non risiede solo nella sua capacità di calcolo, ma nell’esistenza di un algoritmo in grado di apprendere i pesi a partire dagli
esempi. Esattamente come i neuroni biologici adattano le proprie sinapsi in base all’esperienza, il percettrone modifica i propri parametri interni per minimizzare l’errore e fornire
l’uscita desiderata.
19.2
Apprendimento nel percettrone
La capacità di apprendimento di un neurone artificiale si fonda sulla possibilità di modificare i propri parametri interni (i pesi) in risposta all’esperienza. Questo processo è
modellato sulla base delle osservazioni biologiche effettuate da Donald Hebb nel 1949.
90
19.2.1
L’apprendimento hebbiano
Secondo la teoria di Hebb, la forza di una sinapsi tra due neuroni aumenta se l’attivazione
del neurone di origine è concorde con quella del neurone di destinazione. Nel modello del
percettrone, questo principio viene tradotto in una regola matematica per l’aggiornamento
dei pesi:
Wi (n + 1) = Wi (n) + ∆Wi
Dove la variazione del peso ∆Wi è definita come:
∆Wi = η · T · Xi
• η (Learning Rate): Il passo di apprendimento, un parametro che determina la
velocità di adattamento dei pesi.
• T (Target): L’uscita desiderata (es. 1 o −1).
• Xi : Il segnale di ingresso associato al peso i-esimo.
Se l’uscita prodotta dal neurone coincide con il target T , il peso non viene modificato. Se invece il neurone commette un errore, il peso viene aumentato o diminuito per
correggere la risposta futura.
19.2.2
L’algoritmo di addestramento
Il processo di apprendimento è iterativo e si articola in diverse epoche (passate complete
sull’intero set di dati):
1. Inizializzazione: I pesi vengono impostati su valori casuali.
2. Verifica dell’output: Per ogni esempio nel dataset, si confronta l’uscita del percettrone con il valore desiderato.
3. Aggiornamento: Se l’output è errato, si applica la regola di Hebb per ricalcolare
i pesi.
4. Criterio di arresto: L’algoritmo termina solo quando il sistema è in grado di
classificare correttamente l’intero dataset in un’unica epoca senza effettuare alcuna
modifica ai pesi.
19.2.3
Il problema dello XOR e la separabilità lineare
Nonostante il successo iniziale nell’implementazione di operatori logici come AND e OR,
nel 1969 Marvin Minsky e Seymour Papert dimostrarono i limiti strutturali del percettrone
semplice. Essendo un classificatore lineare, il percettrone può risolvere solo problemi in
cui le classi sono linearmente separabili, ovvero distinguibili tramite una retta (o un
iperpiano).
L’operatore logico XOR (OR esclusivo) non è linearmente separabile: i punti della sua
tavola di verità sono disposti in modo tale che non esiste alcuna retta in grado di dividere
i casi positivi da quelli negativi. Questa scoperta portò a una temporanea interruzione
della ricerca nel settore.
91
19.2.4
Verso le reti multi-strato e la Back-propagation
Per risolvere problemi complessi e non lineari come lo XOR, è necessario abbandonare il
singolo neurone in favore di topologie multi-strato. In queste strutture, i percettroni
sono organizzati in strati (input, strati nascosti e output), permettendo di definire regioni
di decisione arbitrarie e convesse.
La sfida tecnica di questo approccio risiedeva nella difficoltà di apprendere i pesi
per i neuroni degli strati intermedi, per i quali non è noto a priori un "target" diretto. La soluzione definitiva fu introdotta nel 1986 con l’algoritmo di Back-propagation
(retro-propagazione dell’errore), che permette di distribuire l’errore rilevato in uscita a
ritroso attraverso la rete, rendendo possibile l’addestramento di architetture feed-forward
complesse.
92
Capitolo 20
Reti neurali artificiali
Le reti neurali artificiali rappresentano un’evoluzione dei modelli di classificazione lineare,
introducendo architetture capaci di modellare relazioni non lineari complesse attraverso
più strati di neuroni .
20.1
Richiami su stima a massima verosimiglianza
Per comprendere i meccanismi di apprendimento delle reti neurali moderne, in particolare
del percettrone multi-strato (MLP) o reti feed-forward, è fondamentale analizzare i principi
statistici della stima dei parametri .
20.1.1
Il concetto di stima a massima verosimiglianza (MLE)
La stima a massima verosimiglianza (Maximum Likelihood Estimation) è un metodo statistico utilizzato per stimare i parametri che caratterizzano una distribuzione di probabilità
partendo da un campione di dati osservati .
L’obiettivo è individuare i valori dei parametri (ad esempio la media µ o la varianza σ)
che rendono il campione osservato il più "verosimile" possibile, ovvero che massimizzano
la probabilità che quel particolare insieme di dati sia stato generato dalla distribuzione
ipotizzata . Se, ad esempio, osserviamo un insieme di punti, sceglieremo la media della
distribuzione che meglio si sovrappone alla densità dei punti stessi .
20.1.2
Procedura formale di calcolo
Il processo di stima segue un protocollo matematico strutturato:
1. Funzione di verosimiglianza (L): Si definisce la probabilità congiunta di osservare i dati dato un vettore di parametri θ. Se i campioni sono indipendenti e identicamente distribuiti (iid), la verosimiglianza è il prodotto delle singole
probabilità.
2. Log-verosimiglianza (log L): Si applica il logaritmo alla funzione L per trasformare i prodotti in sommatorie, semplificando il calcolo delle derivate e migliorando
la stabilità numerica contro problemi di underflow .
3. Calcolo delle derivate: Si calcola il gradiente della funzione rispetto a ogni
parametro.
93
4. Risoluzione del sistema: Si pongono le derivate pari a zero per trovare i punti
stazionari.
5. Verifica: Si accerta che il punto individuato sia effettivamente un massimo.
Applicando questa procedura a una distribuzione gaussiana con varianza nota, lo stimatore a massima
verosimiglianza per la media risulta coincidere con la media campio1
naria (µ̂ = n xn ) .
20.1.3
Minimizzazione numerica: la discesa del gradiente
In molti casi reali, specialmente con funzioni non lineari complesse, non è possibile trovare
una soluzione analitica (chiusa) al problema di ottimizzazione . Si ricorre quindi a metodi
numerici iterativi come la discesa del gradiente (Gradient Descent) :
• Si parte da un’inizializzazione casuale dei parametri.
• Si calcola il gradiente della funzione di errore nel punto corrente.
• Si aggiornano i parametri muovendosi nella direzione opposta al gradiente (direzione
di massima discesa) secondo la formula: θnew = θold − γ∇L, dove γ è il passo di
apprendimento.
• Si itera il processo fino alla convergenza verso un minimo .
20.1.4
Problematiche dei metodi numerici
L’utilizzo della discesa del gradiente comporta alcune sfide tecniche:
• Convergenza lenta: Se il gradiente è molto basso, sono necessarie molte iterazioni.
Si può ovviare utilizzando informazioni del secondo ordine (concavità) .
• Instabilità (Oscillazioni): Se il passo γ è troppo elevato, il sistema può "rimbalzare" attorno al minimo senza mai raggiungerlo .
• Minimi locali: In funzioni non lineari, l’algoritmo può fermarsi in punti di minimo relativo che non rappresentano la soluzione ottimale globale. Per mitigare il
problema si utilizzano spesso più inizializzazioni casuali.
Questi principi di stima e ottimizzazione costituiscono l’impalcatura teorica su cui
poggia l’apprendimento delle reti neurali artificiali .
20.2
Reti neurali a topologia Feed-Forward
Le reti neurali a topologia feed-forward, note anche come percettroni multi-strato (MLP),
rappresentano una classe di modelli computazionali non lineari strutturati in livelli gerarchici di unità di calcolo. La caratteristica fondamentale di questa architettura è la
direzionalità del flusso informativo: i segnali si propagano esclusivamente dagli ingressi
verso le uscite, escludendo la presenza di cicli o retroazioni tra i neuroni.
94
20.2.1
Struttura e organizzazione in strati
I neuroni sono raggruppati in strati, definiti in base al numero di connessioni necessarie
per raggiungerli a partire dall’input. Un modello feed-forward standard comprende:
• Strato di input: È il livello che riceve i dati esterni. La sua funzione principale è
la replica dei segnali verso i livelli successivi, utilizzando tipicamente una funzione
di attivazione identità.
• Strati nascosti: Sono i livelli intermedi le cui connessioni sono interne al modello.
Questi strati permettono alla rete di estrarre e combinare caratteristiche dai dati di
ingresso per modellare relazioni non lineari.
• Strato di output: Costituisce il livello finale che fornisce la risposta del sistema.
Il comportamento complessivo della rete dipende dalla topologia delle connessioni,
dalle funzioni di attivazione scelte e, in misura determinante, dai valori dei pesi sinaptici
che collegano le varie unità.
20.2.2
L’apprendimento come ottimizzazione statistica
Il processo di addestramento di una rete neurale può essere formalizzato come un problema di stima statistica. L’obiettivo è individuare il vettore dei pesi sinaptici che minimizza
la discrepanza tra le uscite generate dal modello e i valori target forniti nel set di addestramento. A seconda dell’applicazione, il problema viene ricondotto a diverse cifre di
merito:
1. Regressione: Nel caso di approssimazione di funzioni continue, assumendo che i
dati siano affetti da rumore gaussiano, il principio della stima a massima verosimiglianza conduce alla minimizzazione dello scarto quadratico medio (minimi
quadrati).
2. Classificazione: Per compiti di classificazione binaria, il target è modellato tramite una distribuzione di Bernoulli. La funzione di errore derivante dalla massima
verosimiglianza è la cross-entropia (entropia incrociata). Tuttavia, è frequente
l’impiego dello scarto quadratico medio anche in questo ambito, ipotizzando una
funzione di classificazione continua tra i valori discreti delle classi.
L’ottimizzazione numerica di queste funzioni di errore viene eseguita tramite l’algoritmo di back-propagation, il quale retro-propaga l’errore rilevato in uscita attraverso
i vari strati per aggiornare i pesi sinaptici in direzione discendente rispetto al gradiente
della funzione di costo.
20.3
Back-propagation
L’algoritmo di back-propagation (retro-propagazione dell’errore) rappresenta la tecnica
fondamentale per l’addestramento delle reti neurali feed-forward. Esso è un’istanza del
metodo di ottimizzazione numerica della discesa del gradiente, applicato in modo iterativo
per minimizzare una funzione di errore (o cifra di merito).
95
20.3.1
Principio di funzionamento
L’idea centrale dell’algoritmo consiste nel calcolare l’errore commesso dalla rete in corrispondenza dello strato di uscita e nel "retro-propagarlo" attraverso i vari livelli della
rete, risalendo verso gli ingressi. Durante questo percorso a ritroso, i pesi sinaptici vengono modificati per ridurre progressivamente la discrepanza tra l’output generato e quello
desiderato.
La formula di aggiornamento dei pesi è espressa come:
∆W = −η
∂E
∂W
• η (Learning Rate): Definisce la velocità di apprendimento, ovvero l’ampiezza del
passo compiuto nella direzione di discesa del gradiente.
∂E
• Gradiente ( ∂W
): Indica la direzione e l’intensità della variazione necessaria per
raggiungere il minimo della funzione di errore.
20.3.2
Formalismo matematico e derivazione
L’algoritmo sfrutta la regola della catena (chain rule) per calcolare le derivate parziali
dell’errore rispetto a ogni singolo peso.
1. Pesi dello strato di uscita: La derivata dipende direttamente dallo scarto tra
target e output e dalla derivata della funzione di attivazione del neurone di uscita.
2. Pesi degli strati nascosti: La derivata viene calcolata pesando l’errore retropropagato dagli strati successivi per l’uscita dello strato corrente.
Questo meccanismo permette di assegnare a ogni neurone interno la propria "responsabilità" nell’errore totale rilevato in uscita.
20.3.3
Requisito di derivabilità
A differenza del percettrone semplice di Rosenblatt, che utilizzava una funzione a scalino
non derivabile, la back-propagation richiede che le funzioni di attivazione siano continue
e derivabili. Le funzioni più utilizzate sono:
• Sigmoide: Per output compresi tra 0 e 1.
• Tangente iperbolica: Per output simmetrici tra -1 e 1.
• Lineare: Utilizzata prevalentemente nello strato di uscita per problemi di regressione con valori continui non limitati.
20.3.4
Apprendimento Batch vs. Online
Una differenza metodologica rilevante rispetto al percettrone riguarda la frequenza di
aggiornamento dei pesi:
• Apprendimento Batch: L’aggiornamento dei pesi avviene a livello di epoca,
ovvero solo dopo aver presentato alla rete l’intero dataset. I pesi vengono modificati
in funzione della sommatoria degli errori accumulati su tutti i record.
96
• Apprendimento Online: I pesi vengono aggiornati dopo ogni singola istanza
(record). Sebbene la back-propagation sia nativamente batch, può essere adattata
alla modalità online per gestire flussi di dati in tempo reale (streaming data).
97
Capitolo 21
Reti neurali: scelta del modello
L’applicazione pratica delle reti neurali feed-forward richiede la risoluzione di problematiche progettuali non banali che influenzano direttamente la capacità di apprendimento
del modello. La progettazione si articola attorno a tre quesiti fondamentali: la definizione
della topologia, la scelta dell’algoritmo di ottimizzazione e la determinazione del numero
ottimale di neuroni.
21.1
Tecniche di apprendimento per reti neurali FeedForward
La configurazione di una rete neurale non dispone di soluzioni definitive univoche, ma
si basa su euristiche e teoremi consolidati che guidano lo sviluppatore verso un modello
efficace.
21.1.1
Topologia della rete
La scelta della topologia riguarda il numero di strati e le funzioni di attivazione da
adottare:
• Funzioni di uscita: In problemi di regressione, lo strato di uscita utilizza tipicamente neuroni lineari per coprire un dominio reale illimitato. In problemi di classificazione, si impiegano funzioni sigmoidali o tangenti iperboliche per mappare
l’output negli intervalli [0, 1] o [−1, 1].
• Numero di strati: È teoricamente dimostrato che un singolo strato nascosto è
sufficiente per apprendere qualsiasi funzione non lineare.
• Teorema di approssimazione universale: Ogni funzione continua su un insieme
compatto può essere approssimata con precisione arbitraria da una rete multi-strato
con un unico hidden layer, a condizione che i neuroni abbiano attivazioni non lineari (sigmoidi o tangenti iperboliche) e che il numero di neuroni possa crescere
adeguatamente.
98
21.1.2
Algoritmi di ottimizzazione e accelerazione
L’apprendimento è formalizzato come un problema di minimizzazione di una funzione non
lineare di errore. Oltre alla back-propagation standard, possono essere applicati algoritmi
di ottimizzazione numerica più avanzati per accelerare la convergenza:
• Metodi di secondo ordine: Utilizzano informazioni sulla concavità della funzione,
come gli algoritmi di Gauss-Newton e Quasi-Newton.
• Levenberg-Marquardt: Una variante dei metodi Gauss-Newton specifica per
funzioni di errore di tipo scarto quadratico.
• Gradiente Coniugato: Offre elevate prestazioni in termini di velocità di convergenza e complessità computazionale, risultando applicabile a diverse funzioni di
errore.
21.1.3
Il problema dei minimi locali
Tutti i metodi basati sul gradiente soffrono del rischio di convergere verso minimi locali
anziché verso l’ottimo globale. Per mitigare questo limite si adottano diverse strategie:
• Inizializzazioni multiple: Si esegue l’addestramento più volte partendo da pesi
iniziali casuali differenti, selezionando infine la rete con le migliori prestazioni.
• Algoritmi genetici e randomizzati: Effettuano una ricerca quasi esaustiva dello
spazio dei parametri senza sfruttare l’informazione del gradiente, puntando all’ottimo globale.
• Discesa del gradiente con momento: Si aggiunge un termine di "inerzia" che
tiene conto della direzione di aggiornamento al passo precedente.
La tecnica del Momento
Il momento simula il comportamento fisico di un corpo che accumula energia cinetica
scendendo lungo un pendio, permettendo di superare piccoli avvallamenti (minimi locali).
Matematicamente, la variazione dei pesi include un termine α moltiplicato per la variazione del passo precedente. Sebbene efficace, l’algoritmo richiede la corretta taratura del
parametro α e non garantisce l’evitamento di tutti i minimi locali.
21.1.4
Determinazione del numero di neuroni nascosti
La scelta della dimensione dello strato nascosto è critica per bilanciare la capacità del
modello e il rischio di overfitting. La letteratura propone diverse regole euristiche:
• Dimensioni comprese tra il numero di ingressi e quello delle uscite.
• Due terzi della somma tra ingressi e uscite.
• Un limite massimo pari al doppio del numero di neuroni di input.
• Numero di nodi pari alle componenti principali necessarie per catturare il 70-90
Tuttavia, tali regole sono spesso limitate poiché non considerano la quantità di informazioni (numero di record) effettivamente presenti nel dataset di addestramento.
99
21.2
Overfitting: limitiamo i danni
Il problema dell’**overfitting** (sovra-addestramento) rappresenta una delle sfide centrali
nell’apprendimento di modelli non lineari e, in particolare, delle reti neurali. Esso si
verifica quando il modello, a causa di un’eccessiva complessità o di un addestramento
prolungato, impara non solo la funzione target sottostante ma anche il rumore intrinseco
presente nei dati di addestramento.
21.2.1
Complessità del modello e Generalizzazione
Il bilanciamento tra la semplicità del modello e la sua capacità di approssimazione è
fondamentale per garantire la **generalizzazione**, ovvero la capacità della rete di fornire
prestazioni adeguate su dati nuovi mai visti in precedenza .
Un esempio paradigmatico è l’interpolazione di dati generati da una parabola (polinomio di secondo ordine) affetti da rumore:
• **Sotto-approssimazione (Under-fitting):** Se il modello è troppo semplice (ad
esempio una retta), le prestazioni saranno insufficienti poiché il modello non riesce
a catturare la struttura dei dati .
• **Sovra-approssimazione (Over-fitting):** Se il modello ha un grado troppo elevato
(troppi neuroni o parametri), passerà perfettamente per ogni punto del dataset
di addestramento ma risulterà estremamente lontano dal modello reale, perdendo
capacità predittiva .
Storicamente, questo dilemma richiama il principio del rasoio di Ockham, secondo
cui tra più modelli che spiegano la realtà è opportuno scegliere il più semplice. Tuttavia, come osservato da Einstein, la semplicità non deve compromettere la completezza
necessaria del modello.
21.2.2
Tecniche di valutazione della generalizzazione
Poiché le reti neurali sono modelli non lineari, non è possibile applicare criteri classici
come l’Akaike Information Criterion (AIC) o il Bayesian Information Criterion (BIC) . Si
ricorre quindi a tecniche di validazione empirica:
• Hold-out validation: Si suddivide il dataset originale nascondendone una parte
(solitamente il 30
• Cross-validation: Si ripete l’addestramento su diverse suddivisioni del dataset per
mediare le prestazioni e ottenere una stima più robusta .
21.2.3
Strategie di mitigazione dell’overfitting
Esistono due approcci principali per limitare i danni di un numero eccessivo di neuroni o
di parametri:
100
Early Stopping
Questa tecnica interrompe l’apprendimento prima che il modello inizi a memorizzare il
rumore. Mentre l’errore sul set di addestramento (training error) diminuisce monotonicamente, l’errore calcolato su un set di validazione (validation error) comincia ad aumentare
dopo un certo numero di epoche . Il punto di minimo dell’errore di validazione indica il
momento ottimale per fermare l’addestramento .
Regolarizzazione (Weight Decay)
Invece di fermare l’apprendimento, si aggiunge un termine di regolarizzazione alla funzione
di errore originale (scarto quadratico medio):
Etotal = EM SE + γ
w2
Il termine γ penalizza i pesi sinaptici con valore assoluto elevato . Limitando la grandezza dei pesi, si riduce la varianza della rete, impedendole di oscillare bruscamente per
passare attraverso ogni punto di rumore e favorendo una curva più fluida che approssima
meglio la funzione target.
21.2.4
Fondamenti statistici: Stima Massima a Posteriori (MAP)
L’inserimento del termine di regolarizzazione non è arbitrario, ma deriva dall’approccio
bayesiano della **Stima Massima a Posteriori**. A differenza della massima verosimiglianza (MLE), la stima MAP massimizza la probabilità dei pesi dati i dati osservati,
incorporando una conoscenza a priori (prior) sullo spazio dei pesi .
Assumendo che i pesi seguano una distribuzione gaussiana con media nulla (ovvero
che preferiscano valori piccoli), l’applicazione del logaritmo alla funzione di probabilità a
posteriori conduce matematicamente alla formula della regolarizzazione quadratica . La
scelta del parametro γ ottimale viene solitamente effettuata tramite metodi di validazione
su dataset aggiuntivi .
21.3
Radial Basis Functions
Le **Radial Basis Functions** (RBF) rappresentano una particolare classe di reti neurali
a topologia feed-forward che si configurano come una specifica istanza di approssimanti a
base radiale.
21.3.1
Principi di funzionamento e architettura
In questo modello, la funzione approssimante F (x) viene ottenuta attraverso una combinazione lineare pesata di **funzioni kernel**. Una funzione kernel è caratterizzata dal
fatto che il suo valore decresce proporzionalmente all’aumentare della distanza tra il punto
di valutazione e i centri della funzione stessa, denominati **prototipi** o centroidi.
Strutturalmente, è possibile mappare questo modello su una rete neurale multi-strato
dove:
• I neuroni dello **strato nascosto** implementano le funzioni kernel (solitamente di
tipo gaussiano) come funzioni di attivazione.
101
• Lo **strato di uscita** è di tipo lineare e combina i contributi pesati provenienti
dal livello precedente.
Analogamente ai modelli multi-strato standard, esiste un teorema di approssimazione universale che garantisce la capacità delle RBF di approssimare con precisione arbitraria qualsiasi funzione non lineare continua, a condizione di impiegare un numero
sufficientemente elevato di kernel e prototipi.
21.3.2
Processo di apprendimento e ottimizzazione
L’apprendimento nelle reti a base radiale è un processo estremamente rapido che si articola
in due fasi distinte:
1. **Posizionamento dei centroidi:** Vengono fissati i pesi a monte dello strato nascosto, i quali definiscono la posizione dei centri delle funzioni kernel nello spazio degli
ingressi.
2. **Ottimizzazione dei pesi di uscita:** Una volta fissati i centri, la determinazione
dei pesi a valle dello strato nascosto si riduce alla risoluzione di un sistema lineare
classico tramite inversione di matrice, minimizzando l’errore quadratico medio.
21.3.3
Gestione della complessità e regolarizzazione
La determinazione del numero ottimale di neuroni è critica per evitare il fenomeno
dell’**overfitting**. Se si utilizzasse un neurone per ogni record del dataset, il numero di parametri supererebbe la capacità informativa dei dati, portando a una scarsa
generalizzazione.
Per ovviare a questo problema, si adotta spesso un approccio iterativo:
• Si inizia con una singola base radiale e si addestra il modello.
• Si aggiungono progressivamente nuovi neuroni laddove il modello mostra le performance peggiori (errore di approssimazione più alto), fino a raggiungere la precisione
desiderata.
Un altro parametro fondamentale è l’**ampiezza del kernel**: un kernel più ampio
produce una curva più morbida e meno ondulata, agendo di fatto come un termine di
regolarizzazione. La scelta dell’ampiezza ottimale viene solitamente effettuata tramite
tecniche di **hold-out validation**, testando diverse configurazioni per individuare il
grado di "morbidezza" che garantisce la migliore capacità di generalizzazione.
102
Capitolo 22
Apprendimento per rinforzo
L’apprendimento per rinforzo (Reinforcement Learning) si distingue dai paradigmi supervisionati e non supervisionati per il fatto che l’agente non riceve una spiegazione esplicita
o esempi etichettati, ma deve apprendere autonomamente il comportamento ottimale
interagendo direttamente con un ambiente incerto.
22.1
Agenti stimolo-risposta e apprendimento per rinforzo
L’obiettivo fondamentale di questo paradigma è l’identificazione di una politica (policy)
che guidi un agente verso il raggiungimento di un obiettivo specifico (goal) massimizzando
il segnale di ritorno ricevuto.
22.1.1
Caratteristiche del paradigma
A differenza dell’apprendimento supervisionato, l’agente dispone di un’informazione estremamente esigua: il rinforzo. Questo segnale indica esclusivamente se l’azione compiuta
è stata positiva o negativa rispetto al fine ultimo. Le azioni dell’agente hanno la capacità
di modificare lo stato dell’ambiente, influenzando così le probabilità di ricevere rinforzi
futuri in un contesto caratterizzato da incertezza intrinseca.
22.1.2
Il ciclo Agente-Ambiente
L’interazione avviene in istanti di tempo discreti:
1. Percezione dello stato (st ): L’agente riceve uno stimolo che rappresenta la
situazione attuale dell’ambiente.
2. Selezione dell’azione (at ): In risposta allo stimolo, l’agente seleziona un’azione
da un insieme di opzioni possibili.
3. Ricezione del rinforzo (rt+1 ): L’ambiente restituisce un valore reale che quantifica
la bontà dell’azione intrapresa.
4. Transizione allo stato successivo (st+1 ): L’ambiente evolve verso una nuova
configurazione, parzialmente determinata dall’azione dell’agente.
103
22.1.3
La proprietà di Markov e i processi decisionali di Markov
(MDP)
Un ambiente si dice che rispetta la proprietà di Markov se lo stato attuale riassume
esaustivamente tutta la storia passata. In tale contesto, la probabilità di transizione allo
stato successivo e il relativo rinforzo dipendono unicamente dallo stato attuale e dall’azione
intrapresa, e non dalla sequenza di eventi che hanno portato a quello stato.
Un processo decisionale che gode di questa proprietà è formalizzato come un Markov
Decision Process (MDP), definito dalla quadrupla 〈S, A, T, R〉:
• S: Insieme finito degli stati possibili.
• A: Insieme delle azioni che l’agente può compiere.
• T : Matrice delle probabilità di transizione (modello dell’ambiente).
• R: Funzione di rinforzo che associa una ricompensa a ogni transizione stato-azione.
22.1.4
Politica ottima e rinforzo scontato
La politica (π) è la funzione che mappa ogni stato sulla migliore azione da compiere. L’apprendimento mira a individuare la politica ottima (π ∗ ), ovvero quella che massimizza il
rinforzo atteso nel lungo periodo.
Poiché l’agente opera su un orizzonte temporale potenzialmente infinito, si utilizza il
concetto di rinforzo scontato atteso. Tale misura introduce un fattore di sconto γ (con
0 ≤ γ < 1) per "attualizzare" il valore dei premi:
• Un rinforzo immediato ha un peso maggiore rispetto a un rinforzo futuro.
• Maggiore è la distanza temporale del premio, maggiore è l’incertezza sulla sua
effettiva ricezione a causa della stocasticità dell’ambiente.
22.1.5
Metodologie di risoluzione: Programmazione Dinamica
Se il modello MDP è completamente noto (ovvero se si conoscono perfettamente T e
R), è possibile calcolare la politica ottima attraverso algoritmi iterativi derivanti dalla
programmazione dinamica, come:
• Value Iteration: Mira a trovare il valore ottimale di ogni stato per derivarne la
politica.
• Policy Iteration: Valuta e migliora iterativamente la politica corrente fino alla
convergenza verso l’ottimo globale.
22.2
Apprendere la politica ottima: Value Iteration
La Value Iteration è un algoritmo di programmazione dinamica fondamentale per risolvere i processi decisionali di Markov (MDP). Lo scopo dell’algoritmo è stimare, per
ogni stato s, il valore del rinforzo scontato atteso su un orizzonte infinito, ipotizzando che
l’agente inizi il suo percorso proprio da quello stato.
104
22.2.1
La Value Function e l’equazione di Bellman
L’idea centrale è la stima della value function ottima (V ∗ ), ovvero la funzione che
rappresenta il massimo valore ottenibile seguendo la politica ottima. Tale funzione è la
soluzione dell’equazione di Bellman:
V (s) = max
P (a, s, s′ )[R(s, a, s′ ) + γV (s′ )]
a
s′
Dove:
• P (a, s, s′ ): È la probabilità di transizione allo stato s′ eseguendo l’azione a nello
stato s.
• R(s, a, s′ ): È il rinforzo ottenuto per tale transizione.
• γ: È il fattore di sconto.
22.2.2
L’algoritmo iterativo
L’algoritmo di Value Iteration approssima la soluzione valutando iterativamente il valore
degli stati attraverso una serie di passi temporali finiti:
1. Inizializzazione: Si assegna un valore iniziale casuale (spesso pari a 0) alla value function per ogni stato. Si definisce inoltre una soglia di errore (delta) per
determinare la convergenza.
2. Aggiornamento iterativo: Per ogni stato s, si calcola il nuovo valore Vk+1 (s)
cercando l’azione che massimizza la somma del rinforzo immediato e del valore
scontato degli stati successivi stimati al passo precedente (Vk ).
3. Verifica della convergenza: Si calcola la variazione massima (∆) tra la vecchia
e la nuova value function. Il ciclo termina quando ∆ < .
Sebbene teoricamente il processo richiederebbe un tempo infinito per la precisione
assoluta, l’algoritmo converge verso la value function ottima in un numero finito di passi.
22.2.3
Estrazione della politica ottima
Una volta raggiunta la convergenza e stimati correttamente i valori di V ∗ (s), è possibile
derivare la politica ottima π ∗ . Essa associa a ogni stato s l’azione a che massimizza il valore
atteso della transizione (ovvero l’azione che ha generato il valore massimo nell’ultima
iterazione della value function).
22.2.4
Esempio applicativo: Gestione aziendale
Si consideri un agente che deve gestire una ditta operando in quattro stati possibili:
Povero/Sconosciuto (PU), Povero/Famoso (PF), Ricco/Sconosciuto (RU) e Ricco/Famoso
(RF). Le azioni disponibili sono Risparmiare (Save) e Fare pubblicità (Advertise).
Attraverso le iterazioni, l’algoritmo propaga il valore degli stati "Ricchi" (che forniscono un rinforzo immediato elevato, es. +10) verso gli stati "Poveri" che possono
raggiungerli nel tempo. Ad esempio, pur non avendo un rinforzo immediato, l’azione di
105
fare pubblicità nello stato PU acquisisce valore perché aumenta la probabilità di passare
a uno stato Famoso, il quale a sua volta facilita la transizione verso la ricchezza nelle
iterazioni successive.
Al termine della convergenza (nel caso specifico dell’esempio, dopo circa 4-9 passi), la
politica ottima risulta essere:
• Se Sconosciuti (PU, RU): Fare pubblicità, per aumentare la visibilità.
• Se Famosi (PF, RF): Risparmiare, per massimizzare l’accumulo di capitale una
volta consolidata la fama.
22.3
Apprendere la politica ottima: Policy Iteration
L’algoritmo di Policy Iteration rappresenta un approccio alternativo alla Value Iteration per la determinazione della politica ottima in un processo decisionale di Markov.
Mentre la Value Iteration si concentra sulla stima della funzione di valore ottimale per poi
derivarne la politica, la Policy Iteration opera direttamente sulla politica stessa, cercando
di migliorarla in modo iterativo.
22.3.1
Il ciclo di valutazione e miglioramento
L’algoritmo si basa su un’alternanza continua tra due fasi fondamentali, partendo da una
politica iniziale scelta arbitrariamente (anche casuale):
1. Valutazione della politica (Policy Evaluation): In questa fase viene calcolata
la value function V π associata alla politica corrente π. A differenza della Value
Iteration, qui non si cerca il valore massimo tra tutte le azioni possibili, ma si
calcola il rinforzo scontato atteso applicando rigidamente la politica attuale in ogni
stato.
2. Miglioramento della politica (Policy Improvement): Una volta ottenuta la
valutazione della politica corrente, si procede ad aggiornare la politica stessa. Per
ogni stato, si seleziona l’azione che massimizza il rinforzo atteso sulla base della
value function appena calcolata. Se l’azione scelta è diversa da quella prevista dalla
politica precedente, la politica viene aggiornata.
22.3.2
Convergenza e prestazioni
Il processo prosegue finché la fase di miglioramento non produce più alcun cambiamento
nella politica. Quando la politica rimane invariata tra due iterazioni consecutive, l’algoritmo ha raggiunto la convergenza e la politica corrente è garantita essere quella ottima
(π ∗ ).
Sebbene la fase di valutazione richieda internamente un processo iterativo per stimare
correttamente V π , la Policy Iteration tende a convergere alla politica ottima in un numero di passi complessivi (iterazioni esterne) spesso inferiore rispetto alla Value Iteration,
risultando particolarmente efficiente in molti scenari.
106
22.3.3
Esempio: Evoluzione della politica aziendale
Riprendendo l’esempio della ditta (stati: Povero/Ricco e Famoso/Sconosciuto), l’algoritmo potrebbe iniziare con una politica inefficiente, come quella di "risparmiare sempre"
(Save) in ogni condizione.
• Durante la valutazione, il sistema calcolerebbe che tale politica porta a un benessere limitato poiché non permette di acquisire fama e accedere ai grandi guadagni
dello stato "Ricco".
• Nella fase di miglioramento, l’algoritmo si accorgerebbe che negli stati "Sconosciuto", l’azione di "fare pubblicità" (Advertise) porterebbe a una value function
futura decisamente migliore.
• La politica verrebbe quindi aggiornata e rivalutata fino a stabilizzarsi sulla strategia
ottimale (pubblicità se sconosciuti, risparmio se famosi).
22.3.4
Limiti e presupposti
Così come la Value Iteration, anche la Policy Iteration appartiene alla categoria degli
algoritmi di programmazione dinamica offline. Ciò significa che l’agente può calcolare la
soluzione solo se possiede una conoscenza completa e perfetta del modello dell’ambiente
(MDP), inclusi tutti gli stati, le probabilità di transizione e le funzioni di ricompensa.
La comprensione di questi meccanismi è tuttavia il presupposto necessario per introdurre
algoritmi online in grado di apprendere direttamente dall’esperienza sul campo.
107
Capitolo 23
Apprendere per iterazione
Gli algoritmi di programmazione dinamica, come Value e Policy Iteration, presentano
un limite applicativo fondamentale: richiedono la conoscenza completa del modello dell’ambiente, ovvero della funzione di rinforzo R(s, a) e della matrice delle probabilità di
transizione T (s, a, s′ ). Per superare questa necessità, si ricorre ad algoritmi di apprendimento per rinforzo online, in grado di apprendere direttamente dall’interazione con
l’ambiente senza un modello a priori.
23.1
L’algoritmo Q-Learning
L’algoritmo Q-Learning è una delle tecniche più efficaci per permettere a un agente di
apprendere il comportamento ottimale interagendo con un mondo incerto e sconosciuto.
23.1.1
La funzione Valore Stato-Azione (Q)
Il nucleo dell’algoritmo è la definizione della funzione Q(s, a) (state-action value function).
Mentre la value function V (s) esprime il valore di uno stato, la funzione Q indica quanto
sia vantaggioso compiere una specifica azione a in un determinato stato s.
Formalmente, Q(s, a) è definita come il rinforzo immediato ottenuto compiendo l’azione a nello stato s, più il valore del rinforzo scontato atteso su orizzonte infinito. La
relazione tra V e Q è la seguente:
V ∗ (s) = max Q(s, a)
a
Il vantaggio principale della funzione Q è che, se nota, permette all’agente di selezionare
l’azione ottima semplicemente scegliendo quella che massimizza il valore Q nello stato
corrente, senza dover conoscere le probabilità di transizione del sistema.
23.1.2
Il concetto di Temporal Difference (TD)
L’apprendimento per interazione si basa sulla Temporal Difference (TD), un metodo
per aggiornare le stime correnti basandosi sulla differenza tra la stima precedente e i nuovi
dati campionati (rinforzo ricevuto e valore dello stato successivo).
La formula di aggiornamento della stima V̂ (s) è una combinazione convessa:
V (s) ← V (s) + α[r + γV (s′ ) − V (s)]
Dove:
108
• α: È il parametro di apprendimento.
• r + γV (s′ ): Rappresenta il valore osservato (target).
• V (s): È la stima precedente.
È dimostrato che tale stima converge al valore reale se il parametro α decresce nel
tempo (ad esempio come 1/n) e se l’agente visita tutti gli stati infinitamente spesso.
23.1.3
L’algoritmo di apprendimento
Il Q-Learning applica il principio della Temporal Difference direttamente alla funzione Q.
Il processo si articola in una serie di trial (episodi), sequenze di azioni che partono da
uno stato iniziale e terminano al raggiungimento di un obiettivo.
I passi fondamentali dell’algoritmo sono:
1. Inizializzazione: La tabella dei valori Q(s, a) viene inizializzata (solitamente a
zero o con valori elevati per incoraggiare l’esplorazione iniziale).
2. Selezione ed esecuzione: In ogni stato s, l’agente seleziona un’azione a e la
esegue.
3. Osservazione: L’agente percepisce il nuovo stato s′ e il rinforzo r ottenuto.
4. Aggiornamento: La stima di Q(s, a) viene aggiornata tramite la regola:
Q(s, a) ← Q(s, a) + α[r + γ max
Q(s′ , a′ ) − Q(s, a)]
′
a
23.1.4
Il dilemma Esplorazione vs. Sfruttamento (Exploration
vs. Exploitation)
Una sfida critica nell’apprendimento online è la selezione dell’azione. Se l’agente scegliesse sempre l’azione che ritiene migliore (exploitation), rischierebbe di ignorare azioni
potenzialmente superiori ma ancora non scoperte. Se scegliesse sempre azioni a caso
(exploration), non massimizzerebbe mai il guadagno.
Per risolvere questo dilemma si utilizzano strategie probabilistiche:
• Politica -greedy: Con probabilità 1 − l’agente sceglie l’azione migliore attuale, mentre con una piccola probabilità sceglie un’azione casuale per esplorare
l’ambiente.
• Distribuzione di Boltzmann: La probabilità di scegliere un’azione è pesata esponenzialmente in base al suo valore Q, permettendo una preferenza verso le azioni
migliori ma mantenendo una probabilità non nulla per tutte le altre.
L’utilizzo di valori iniziali elevati nella Q-table realizza un’esplorazione implicita: se
un’azione si rivela meno vantaggiosa del previsto, il suo valore Q calerà drasticamente,
spingendo naturalmente l’agente a provare le altre azioni che hanno ancora valori alti.
109
23.2
Q-Learning: un esempio
Per comprendere la dinamica operativa dell’algoritmo Q-Learning, si consideri un ambiente a griglia (grid-world) composto da 20 celle, in cui un agente deve apprendere il percorso
ottimale per raggiungere un obiettivo, rappresentato da una ricompensa di +1000.
23.2.1
Configurazione e Inizializzazione
Il sistema è definito dai seguenti parametri tecnici:
• Stati (S): Le 20 celle libere della griglia, inclusa la cella obiettivo.
• Azioni (A): I quattro punti cardinali (Nord, Sud, Est, Ovest). Qualora l’agente
tenti di dirigersi verso un ostacolo o oltre i bordi della griglia, l’azione non produce
spostamento, traducendosi in un auto-anello sul nodo di stato attuale.
• Parametri di apprendimento: Fattore di sconto γ = 0, 9 (per l’attualizzazione
dei premi futuri) e tasso di apprendimento α = 0, 5 (per la pesatura della Temporal
Difference).
• Q-Table: Inizialmente la tabella viene riempita con valori nulli per ogni coppia
stato-azione.
23.2.2
Dinamica dei Trial
L’apprendimento evolve attraverso una successione di tentativi o trial, intesi come sequenze di interazioni che terminano al raggiungimento dello stato obiettivo.
• Primo Trial: Inizialmente, l’agente si muove in modo casuale poiché la Q-Table
non fornisce alcuna indicazione preferenziale (tutti i valori sono a zero). Solo quando
l’agente raggiunge fortuitamente l’obiettivo riceve il rinforzo positivo. Questo evento
permette di aggiornare per la prima volta l’ultima azione compiuta: applicando la
formula della Temporal Difference, il valore Q passa da 0 a 500.
• Trial successivi: L’informazione sulla ricompensa inizia a propagarsi a ritroso
(retro-propagazione). Nel secondo trial, se l’agente raggiunge lo stato immediatamente precedente a quello finale, rileva un valore Q non nullo e può quindi aggiornare
la stima dello stato ancora precedente in base al valore futuro atteso.
• Convergenza: Dopo circa 10 trial, l’agente ha costruito una mappatura di valori
Q sufficientemente strutturata da delineare un tragitto funzionale verso il goal.
23.2.3
Il dilemma tra Exploitation ed Exploration
L’esempio evidenzia la criticità nella selezione della politica ottimale globale quando sono
presenti più percorsi, ad esempio una strada lunga e una scorciatoia più breve.
• Exploitation (Sfruttamento): Se l’agente segue una politica puramente greedy
(ingorda) basata sulla conoscenza parziale acquisita, continuerà a percorrere il primo
sentiero scoperto che garantisce un rinforzo. In questa fase, l’agente "sa cosa lascia
ma non sa cosa trova", rischiando di stabilizzarsi su una soluzione sub-ottimale e
non scoprendo mai l’esistenza di percorsi più efficienti.
110
• Exploration (Esplorazione): Se l’agente accetta di compiere azioni diverse da
quelle ritenute migliori al momento, ha la possibilità di esplorare stati non visitati
e identificare scorciatoie.
L’equilibrio tra queste due strategie è l’unico meccanismo che garantisce matematicamente il raggiungimento dell’ottimo globale, permettendo all’agente di identificare la
traiettoria più veloce verso l’obiettivo finale.
23.3
Q-Learning: tracce d’eleggibilità
Sebbene l’algoritmo Q-Learning rappresenti un approccio efficace per l’apprendimento
online, la sua implementazione standard presenta dei limiti strutturali che ne condizionano
l’applicabilità in contesti reali complessi.
23.3.1
Limiti del Q-Learning tabulare
La versione base del Q-Learning, definita "tabulare" poiché memorizza i valori di statoazione in una matrice esplicita, soffre di tre problematiche principali:
• Propagazione lenta del rinforzo: Nello schema standard, solo l’ultima azione che
conduce direttamente al traguardo riceve un aggiornamento immediato dal segnale
di rinforzo; tutti gli altri stati-azione nel percorso vengono aggiornati solo tramite
la retro-propagazione dei valori Q nei trial successivi.
• Esplosione dello spazio degli stati: In applicazioni reali, il numero di possibili
combinazioni stato-azione può diventare talmente elevato da rendere la rappresentazione tabulare ingestibile sia in termini di memoria che di efficienza computazionale.
• Mancanza di generalizzazione: L’approccio tabulare tratta ogni stato come
un’entità isolata, ignorando simmetrie o somiglianze strutturali nell’ambiente che
potrebbero accelerare il processo di apprendimento.
23.3.2
Le tracce di eleggibilità
Per accelerare la convergenza e migliorare la propagazione dei premi, vengono introdotte le
tracce di eleggibilità (E). Esse fungono da memoria temporanea degli stati attraversati
dall’agente, permettendo di retro-propagarne il rinforzo ricevuto non solo all’ultimo stato,
ma a tutti quelli che hanno contribuito al raggiungimento dell’obiettivo.
Matematicamente, la traccia di eleggibilità di uno stato decade nel tempo seguendo
una funzione esponenziale controllata dal fattore di sconto γ e dal fattore di decadimento
λ. Esistono due tipologie principali:
• Tracce accumulanti: Incrementano il valore di eleggibilità ogni volta che l’agente
visita uno stato, rischiando però una crescita eccessiva se il decadimento è troppo
lento.
• Tracce limitate (Replacing Traces): Impongono un tetto massimo al valore di
eleggibilità (solitamente pari a 1) ogni volta che lo stato viene visitato, garantendo
una maggiore stabilità numerica.
111
23.3.3
L’algoritmo Q-lambda
L’integrazione delle tracce di eleggibilità nel Q-Learning dà origine all’algoritmo Q-lambda.
In questo schema, ad ogni passo l’agente aggiorna l’intera tabella Q proporzionalmente
alle tracce di eleggibilità correnti.
Un aspetto critico riguarda la gestione delle azioni esplorative: se l’agente compie
un’azione non ottimale per esplorare l’ambiente, le tracce di eleggibilità accumulate devono essere azzerate per evitare di rinforzare comportamenti casuali che hanno portato
fortunosamente al premio.
23.3.4
Approssimazione di funzioni e TD-Gammon
Per superare i limiti di memoria della rappresentazione tabulare, è possibile sostituire
la tabella Q con un approssimatore di funzioni, come una rete neurale. Tuttavia, tale
approccio è complesso poiché i risultati di convergenza garantiti per il caso tabulare non
si estendono automaticamente a quello con approssimatori.
Un esempio storico di successo è il TD-Gammon, sviluppato da Tesauro nel 1992.
Data l’enormità dello spazio degli stati (1020 ), Tesauro utilizzò una rete neurale per approssimare la value function, addestrando il sistema facendolo giocare contro sé stesso per
oltre un milione e mezzo di partite. Il sistema raggiunse il livello dei campioni mondiali,
scoprendo nuove strategie di apertura che divennero standard nel gioco professionale.
112
Capitolo 24
Calcolo evoluzionistico
Il calcolo evoluzionistico costituisce un’area dell’intelligenza artificiale che raggruppa modelli computazionali ispirati alla genetica delle popolazioni e alla teoria darwiniana dell’evoluzione. Trova applicazione in settori critici come l’ottimizzazione stocastica, il
problem-solving e l’apprendimento automatico.
24.1
La metafora evolutiva
La metafora di fondo del calcolo evoluzionistico trasla i meccanismi della selezione naturale
nel dominio della risoluzione di problemi matematici e ingegneristici.
24.1.1
Principi biologici e trasposizione artificiale
Nell’evoluzione naturale, una popolazione è composta da individui che devono adattarsi
all’ambiente per sopravvivere e riprodursi. Allo stesso modo, un problema computazionale
può essere visto come un "ambiente" abitato da una popolazione di potenziali soluzioni
(individui).
Il grado di adattamento di un individuo al proprio ambiente viene definito fitness.
Nella biologia artificiale, la fitness corrisponde alla bontà di una soluzione rispetto agli
obiettivi del problema da risolvere. Secondo i principi della selezione naturale, gli individui
con fitness più elevata hanno maggiori probabilità di sopravvivere e di trasmettere il
proprio patrimonio genetico alle generazioni successive.
24.1.2
Confronto tra biologia reale e artificiale
La terminologia e i processi biologici trovano una corrispondenza diretta nei modelli
evolutivi artificiali:
• Organismi → Soluzioni: L’entità base che interagisce con l’ambiente.
• Cromosomi → Stringhe o Strutture dati: La codifica formale (spesso binaria)
del patrimonio informativo della soluzione.
• Genetica → Operatori genetici: Algoritmi di mutazione e ricombinazione che
agiscono sulle stringhe per generare nuove soluzioni.
113
• Sopravvivenza → Risoluzione del problema: Lo scopo ultimo del processo
evolutivo artificiale non è la mera persistenza, ma l’individuazione della soluzione
ottima.
24.1.3
Evoluzione naturale vs. Evoluzione artificiale
Esiste una differenza fondamentale nella finalità dei due processi:
• Evoluzione naturale: Non è diretta né guidata; gli individui migliorano solo in
funzione del loro adattamento contingente all’ambiente, senza uno scopo predefinito.
• Evoluzione artificiale: È un processo diretto e paragonabile all’allevamento selettivo. L’utente o il problema definiscono i criteri di eccellenza, guidando l’evoluzione verso individui che massimizzano la funzione obiettivo.
24.1.4
Esempio: Massimizzazione di una funzione
Si consideri il problema di massimizzare una funzione f (x) di cui non si conosce la struttura interna (problema black-box ). L’unico dato accessibile è il valore dell’output per un
dato input x.
Se codifichiamo l’input x come una stringa binaria (cromosoma), l’algoritmo evolutivo
può esplorare lo spazio delle soluzioni analizzando la relazione tra configurazioni di bit e
valori di fitness:
• La presenza di determinati schemi di bit in corrispondenza di valori alti della funzione suggerisce che quegli schemi appartengano al "patrimonio genetico" della
soluzione ottima.
• Al contrario, bit ricorrenti in soluzioni a bassa fitness indicano tratti genetici da
eliminare attraverso la selezione.
Attraverso la valutazione di diversi input e l’applicazione di operatori di scambio di
patrimonio genetico, l’algoritmo converge verso la configurazione di bit che rappresenta
la soluzione ottimale al problema.
24.2
Algoritmi evolutivi
Gli algoritmi evolutivi sono procedure di ottimizzazione stocastica basate sui principi
della selezione naturale darwiniana e della genetica delle popolazioni. Essi operano su una
popolazione di soluzioni candidate, evolvendole nel tempo verso configurazioni ottimali
attraverso l’applicazione di operatori probabilistici.
24.2.1
Paradigmi storici
Sebbene esistano innumerevoli varianti moderne, la letteratura riconosce tre paradigmi
fondamentali che hanno dato origine al settore:
• Algoritmi Genetici (GA): Introdotti da Holland nel 1975, pongono l’enfasi sulla
ricombinazione del patrimonio genetico.
114
• Strategie Evolutive (ES): Definitive da Rechenberg nel 1973, focalizzate principalmente sull’ottimizzazione di parametri numerici.
• Programmazione Evolutiva (EP): Definita da Fogel nel 1966, inizialmente concepita per evolvere automi a stati finiti.
24.2.2
Elementi costitutivi
Ogni algoritmo evolutivo è definito da quattro componenti essenziali:
• Rappresentazione: È il modo in cui le variabili del problema vengono codificate. L’individuo (o cromosoma) è la stringa che rappresenta la soluzione; i singoli
elementi della stringa sono i geni, mentre i valori specifici che possono assumere
sono detti alleli. Il fenotipo rappresenta la soluzione candidata effettiva derivata dal
codice genetico.
• Funzione di Fitness: È la metrica che quantifica il grado di adattamento o "bontà"
di una soluzione rispetto al problema. Può essere oggettiva (basata su modelli matematici o simulazioni), soggettiva (valutata da un operatore umano) o co-evolutiva
(basata sulla competizione o cooperazione tra individui).
• Popolazione: Rappresenta l’insieme di tutte le soluzioni candidate presenti in una
determinata generazione.
• Operatori genetici: Algoritmi che simulano i meccanismi della selezione e della
variazione genetica.
24.2.3
Operatori genetici
Il processo di evoluzione è guidato da quattro tipologie di operatori:
1. Selezione: Implementa la sopravvivenza del più adatto, allocando un numero maggiore di discendenti agli individui con fitness elevata. Può essere proporzionale
(basata sul valore assoluto della fitness) o ordinale (basata sulla graduatoria).
2. Ricombinazione (Crossover): È responsabile dell’innovazione all’interno della
popolazione. Combina i tratti genetici di due o più genitori per generare nuovi
discendenti che ereditano caratteristiche da entrambi.
3. Mutazione: Agisce su un singolo individuo modificandone casualmente alcuni tratti con una probabilità p(m). Insieme alla selezione, garantisce un miglioramento
continuo e previene la convergenza prematura verso ottimi locali.
4. Sostituzione: Determina quali individui faranno parte della generazione successiva.
Può essere generazionale (i discendenti sostituiscono interamente i genitori), steadystate (i migliori discendenti sostituiscono i peggiori genitori) o elitaria (le migliori
soluzioni vengono preservate a prescindere).
115
24.2.4
Ciclo di esecuzione e terminazione
Il funzionamento di un algoritmo evolutivo segue uno schema ciclico iterativo: si parte
da una popolazione iniziale (solitamente casuale), se ne valuta la fitness, si applicano
selezione, ricombinazione e mutazione, e infine si genera la nuova popolazione tramite
l’operatore di sostituzione.
Il ciclo prosegue fino al soddisfacimento di un criterio di terminazione, che può coincidere con:
• Il raggiungimento di un numero massimo di generazioni o di un tempo limite.
• L’individuazione di una soluzione che soddisfi parametri di qualità predefiniti.
• L’assenza di miglioramenti significativi della fitness media o massima nelle ultime
generazioni (stasi evolutiva).
24.3
Algoritmi genetici
Gli algoritmi genetici (GA), formalizzati da Holland nel 1975, rappresentano la declinazione più celebre dei modelli evolutivi. Essi si fondano prevalentemente sui meccanismi
di selezione e ricombinazione per esplorare lo spazio delle soluzioni.
24.3.1
Rappresentazione e inizializzazione
Negli algoritmi genetici classici, gli individui sono codificati come stringhe binarie di
lunghezza fissa. Ogni bit della stringa rappresenta un gene, mentre il valore del bit (0
o 1) costituisce l’allele. Il processo inizia con la generazione di una popolazione composta
da n individui creati in modalità stocastica (casuale).
24.3.2
Esempio: Massimizzazione di una funzione discreta
Si consideri il problema di individuare il massimo di una funzione f (x) nell’intervallo
x ∈ [0, 31].
• Codifica: Dato che il dominio comprende 32 valori interi, ogni individuo è rappresentato da una stringa binaria di 5 bit (ad esempio, 01101 per il valore 13).
• Fitness: La bontà di un individuo coincide direttamente con il valore assunto dalla
funzione f in corrispondenza della x decodificata.
24.3.3
Il meccanismo di Selezione a Roulette
Uno dei metodi di selezione più diffusi è la selezione a roulette (roulette wheel selection).
Il procedimento si articola come segue:
1. Si calcola la fitness totale della popolazione (T =
fi ).
2. Si determina la probabilità di selezione di ogni individuo come il rapporto tra la sua
fitness e il totale (pi = fi /T ).
3. Si costruisce una roulette virtuale in cui ogni individuo occupa un settore proporzionale alla sua probabilità.
116
4. Si effettua un numero di "lanci" pari alla dimensione della popolazione.
Questo metodo garantisce che gli individui più adatti abbiano una maggiore probabilità
di essere replicati nella generazione successiva, mentre quelli meno adatti tendono a essere
eliminati (pressione selettiva).
24.3.4
Operatori di variazione: Crossover e Mutazione
Dopo la selezione, si applicano gli operatori responsabili della variazione genetica:
• Ricombinazione (Crossover a un punto): Vengono selezionate coppie di individui dalla nuova popolazione con una probabilità di crossover Pc (tipicamente
intorno a 0.6). Si individua un punto di taglio casuale lungo la stringa: le parti dei
due genitori vengono scambiate per generare due nuovi discendenti che combinano
i tratti genetici originali.
• Mutazione: Ogni bit di ogni individuo della popolazione ha una probabilità estremamente bassa Pm (probabilità di mutazione) di essere invertito (da 0 a 1 o viceversa). Questo operatore assicura la diversità genetica e permette di esplorare aree
del dominio non raggiungibili tramite il solo crossover.
24.3.5
Sostituzione e ciclo evolutivo
Nella fase finale del ciclo, l’operatore di sostituzione generazionale rimpiazza integralmente la vecchia popolazione con i nuovi individui ottenuti dai processi di selezione,
ricombinazione e mutazione. Il tempo viene incrementato (t = t + 1) e il ciclo ricomincia
dalla valutazione della fitness, proseguendo fino al raggiungimento di un criterio di arresto
(numero di generazioni, tempo limite o convergenza della soluzione).
117
Capitolo 25
Calcolo evoluzionistico 2
25.1
Programmazione genetica
La programmazione genetica (Genetic Programming) rappresenta un’estensione degli algoritmi genetici applicata specificamente all’evoluzione automatica di programmi per computer. Introdotta da John Koza nel 1992, questa metodologia condivide la medesima
struttura di esecuzione dei modelli evolutivi standard, ma adotta una diversa rappresentazione degli individui: in questo paradigma, ogni membro della popolazione è costituito
da un programma.
25.1.1
Rappresentazione e Struttura
Tradizionalmente, la programmazione genetica utilizza strutture ad albero per rappresentare gli individui, spesso implementate tramite le S-espressioni del linguaggio LISP. Tali
alberi sono definiti attraverso due componenti fondamentali:
• Simboli terminali (T ): Costituiscono le foglie dell’albero e includono variabili di
input, costanti numeriche o parametri specifici del problema.
• Insieme di funzioni (F ): Rappresentano i nodi interni che operano sui risultati
dei rami figli, comprendendo operatori aritmetici, istruzioni condizionali, cicli di
iterazione, ricorsioni o chiamate a sotto-funzioni.
Per garantire l’efficacia del modello, è necessario imporre vincoli sulla correttezza sintattica degli archi e sulla coerenza dei tipi di dati passati alle funzioni.
25.1.2
Valutazione della Fitness
La funzione di fitness viene determinata eseguendo il programma rappresentato dall’individuo e misurandone la bontà rispetto a un comportamento target. La definizione della
fitness dipende strettamente dal dominio applicativo:
• Errore di output: Misura la discrepanza tra il risultato prodotto dall’individuo e
un output desiderato.
• Efficienza computazionale: Quantità di risorse (come memoria o tempo di calcolo) richieste per l’esecuzione.
118
• Accuratezza predittiva: Capacità del programma di classificare correttamente
oggetti in un insieme di classi prefissato, tipica delle applicazioni di data mining.
• Performance in scenari complessi: Numero di vittorie in applicazioni di gioco
o adeguatezza di una struttura fisica (come antenne o circuiti) a criteri definiti
dall’utente.
Una sfida tecnica rilevante è la gestione di programmi che non terminano l’esecuzione,
rendendo necessaria la definizione di parametri di interruzione forzata.
25.1.3
Operatori Genetici
Gli operatori sono adattati per manipolare la struttura gerarchica degli alberi:
• Crossover: Consiste nella selezione casuale di due sotto-alberi in due individui
genitori e nel loro reciproco scambio per generare nuovi discendenti. Viene applicato
con una probabilità elevata, solitamente compresa tra l’85
• Mutazione: Prevede la sostituzione di un sotto-albero con uno generato casualmente, oppure la modifica del valore di un singolo nodo. La sua probabilità di
applicazione è tipicamente molto bassa, intorno allo 0.01.
• Operatori ausiliari: Includono la permutazione degli argomenti, l’incapsulazione
di sotto-alberi in nuove funzioni, la decimazione della popolazione e la semplificazione di espressioni matematiche (ad esempio sostituendo l’espressione x + 0 con x
tramite proprietà algebriche).
Un esempio celebre di applicazione pratica è lo sviluppo di un’antenna per la NASA,
progettata interamente tramite programmazione genetica. Nessun progettista umano era
riuscito a concepire una struttura capace di eguagliare le prestazioni ottenute da questo
modello evolutivo.
25.2
Sistemi e classificatori
I sistemi a classificatori (Classifier Systems) rappresentano un’applicazione avanzata degli
algoritmi genetici nell’ambito dell’apprendimento automatico, specificamente orientata alla risoluzione di problemi di apprendimento per rinforzo. In questo paradigma, l’obiettivo
dell’agente è massimizzare il rinforzo cumulativo derivante dall’interazione continua con
un ambiente dinamico.
25.2.1
Architettura e Rappresentazione
Il nucleo del sistema è costituito da una popolazione di classificatori, ovvero regole logiche strutturate secondo lo schema condizione-azione-predizione. Ogni classificatore
associa un insieme di stati ambientali a una specifica azione, fornendo contestualmente
una stima del rinforzo futuro atteso.
La rappresentazione interna utilizza stringhe di lunghezza fissa:
• Stato dell’ambiente: Codificato come stringa binaria (es. 0011).
• Azioni: Codificate anch’esse come stringhe binarie.
119
• Condizioni: Definite su un alfabeto ternario {0, 1, #}. Il simbolo # agisce come
wildcard (carattere jolly), permettendo alla regola di coprire più stati contemporaneamente (es. la condizione 01#1 è compatibile sia con lo stato 0101 che con
0111).
25.2.2
Ciclo Operativo
Il funzionamento di un sistema a classificatori segue un processo iterativo articolato in
diverse fasi:
1. Fase di Match: Dato lo stato attuale s(t), il sistema individua tutte le regole della
popolazione le cui condizioni sono soddisfatte. Queste regole formano il match set
(M ).
2. Valutazione della Predizione: Per ogni azione presente nel set di match, il
sistema calcola il valore atteso del rinforzo futuro.
3. Selezione ed Esecuzione: Viene selezionata l’azione da intraprendere (spesso
quella con la predizione più alta) e le regole che la propongono vengono inserite nel
set delle regole attivate.
4. Distribuzione del Rinforzo: Una volta ricevuta la ricompensa dall’ambiente, il
valore viene distribuito tra le regole responsabili dell’azione eseguita. Questo aggiornamento viene tipicamente gestito tramite algoritmi di apprendimento per rinforzo,
come il Q-Learning, che modificano la "forza" (fitness) dei singoli classificatori.
25.2.3
Evoluzione delle Regole
L’algoritmo genetico interviene periodicamente sulla popolazione dei classificatori per
generare nuove ipotesi e scartare quelle meno efficaci. Il processo di evoluzione si concentra
sulle regole che sono state attivate e che hanno contribuito all’ottenimento del rinforzo:
• Selezione: Due classificatori vengono scelti come genitori con una probabilità
proporzionale alla loro fitness (predizione di rinforzo).
• Crossover: Le stringhe (ottenute concatenando condizione e azione) vengono spezzate e ricombinate tramite un punto di taglio singolo per generare due nuovi discendenti.
• Mutazione: Modifica stocastica di singoli bit o simboli nelle nuove regole per
esplorare nuove strategie.
• Sostituzione: I nuovi classificatori vengono inseriti nella popolazione, eliminando
le regole con le prestazioni peggiori per mantenere costante la dimensione del set.
Grazie a questa sinergia tra apprendimento per rinforzo e algoritmi evolutivi, il sistema
è in grado di scoprire e perfezionare autonomamente insiemi di regole capaci di interpretare
correttamente gli stati ambientali e rispondere con le azioni più vantaggiose nel lungo
periodo.
120
25.3
Strategie evolutive
Le strategie evolutive (Evolutionary Strategies, ES) sono state sviluppate in Germania
negli anni Settanta, parallelamente agli algoritmi genetici, con l’obiettivo primario di
risolvere problemi di ottimizzazione di funzioni reali di variabili reali. Rispetto ad altri
paradigmi evolutivi, le ES presentano solide basi teoriche e sono caratterizzate da una
minore enfasi sulla metafora biologica a favore dell’efficacia computazionale in domini
continui.
25.3.1
Rappresentazione degli individui
Nelle strategie evolutive, gli individui sono codificati tramite vettori di numeri reali. La
struttura di un individuo è più complessa rispetto ai modelli classici poiché comprende
non solo le variabili obiettivo, ma anche i parametri necessari per governare il processo di
variazione genetica:
• Variabili obiettivo (x1 , . . . , xn ): Rappresentano i parametri reali del problema da
ottimizzare.
• Passi di mutazione (σ1 , . . . , σn ): Parametri che definiscono l’ampiezza della perturbazione gaussiana per ogni coordinata.
• Angoli di rotazione: In versioni estese, vengono utilizzati per definire la matrice
di covarianza della distribuzione congiunta, permettendo mutazioni correlate tra le
variabili.
L’aspetto fondamentale di questa rappresentazione è che i parametri di mutazione (σ)
sono parte integrante del "genoma" dell’individuo: essi co-evolvono insieme alle variabili
obiettivo, permettendo al sistema di adattare automaticamente la propria capacità di
esplorazione durante la ricerca dell’ottimo.
25.3.2
Operatori genetici e Selezione
Le strategie evolutive invertono alcune priorità tipiche degli algoritmi genetici, ponendo
la mutazione come operatore principale:
• Selezione dei genitori: A differenza degli algoritmi genetici, la selezione dei genitori è uniforme. Ogni individuo della popolazione ha la stessa probabilità di essere
scelto per la riproduzione; la pressione selettiva non viene applicata nella scelta dei
genitori, ma esclusivamente nella fase di sostituzione.
• Ricombinazione: Può essere discreta (ogni componente del discendente è scelta
casualmente da uno dei genitori) o intermedia (il discendente è ottenuto tramite
una combinazione lineare, ovvero una media, dei tratti dei genitori).
• Mutazione: È l’operatore cardine. Ogni gene viene perturbato aggiungendo un
rumore gaussiano con media nulla e varianza definita dai parametri σ. Poiché anche σ viene mutato, l’ampiezza dei passi di ricerca si auto-adatta dinamicamente:
passi ampi favoriscono l’esplorazione globale, mentre passi piccoli permettono il
raffinamento locale.
121
25.3.3
Strategie di sostituzione
La pressione selettiva viene esercitata tramite l’operatore di sostituzione, che seleziona i µ
individui migliori per la generazione successiva tra i λ discendenti generati. Si distinguono
due strategie elitarie principali:
• Strategia (µ, λ): I µ migliori individui sono scelti esclusivamente tra i λ discendenti.
In questo caso, i genitori vengono sistematicamente sostituiti; la competizione è
limitata alla prole.
• Strategia (µ + λ): I µ migliori individui sono selezionati dall’unione dell’insieme
dei genitori e dei discendenti (per un totale di µ + λ candidati). Questa strategia è
più conservativa poiché garantisce la sopravvivenza dei genitori se questi sono più
adatti dei figli.
25.3.4
Programmazione evolutiva
Strettamente correlata alle strategie evolutive è la Programmazione Evolutiva (Evolutionary Programming, EP). Sebbene originariamente concepita per evolvere macchine a stati finiti, l’enfasi attuale si è spostata sull’ottimizzazione in domini reali. Le
caratteristiche distintive della EP sono:
1. Assenza di ricombinazione: La generazione di nuovi individui avviene esclusivamente tramite mutazione.
2. Selezione deterministica e sostituzione probabilistica: A differenza delle ES,
il meccanismo di rimpiazzo della popolazione segue logiche stocastiche.
3. Auto-adattamento: Come nelle strategie evolutive, anche la programmazione
evolutiva sfrutta la mutazione dei parametri di perturbazione per ottimizzare la
ricerca.
122
Capitolo 26
Riflessioni conclusive
In questa parte conclusiva vengono proposte alcune riflessioni di carattere generale per
inquadrare l’intelligenza artificiale non solo come insieme di tecniche, ma come disciplina
scientifica e filosofica.
26.1
Il problema della definizione
Uno dei problemi centrali della disciplina è l’assenza di una definizione univoca e universalmente accettata di "Intelligenza Artificiale". Esistono molteplici definizioni che pongono
l’accento su aspetti differenti, rendendo necessaria una classificazione per comprenderne
le caratteristiche essenziali.
26.1.1
Le due dimensioni della definizione
Le definizioni di intelligenza artificiale possono essere classificate lungo due assi o dimensioni principali:
1. Pensiero vs. Comportamento: Alcune definizioni si focalizzano sui processi interni e sul modo di ragionare del sistema, mentre altre si concentrano esclusivamente
sull’output e sulle azioni esterne osservabili.
2. Prestazioni Umane vs. Prestazioni Razionali: Una dimensione contrappone
il "fare come un essere umano" (seguendo i limiti e le peculiarità biologiche) al "fare
la cosa giusta" secondo un concetto ideale di razionalità.
26.1.2
I quattro approcci fondamentali
Dall’incrocio di queste dimensioni derivano quattro gruppi di definizioni:
• Pensare come gli esseri umani (Modellizzazione cognitiva): Questo approccio mira a determinare come pensano gli esseri umani per riprodurre tali processi
nelle macchine. È strettamente legato alle scienze cognitive e alla sperimentazione
psicologica.
• Agire come gli esseri umani (Approccio convenzionale): In questo caso,
un sistema è definito intelligente se è in grado di realizzare prestazioni tipicamente
umane. Il riferimento storico principale è il test di Turing, che sposta l’attenzione
dal pensiero puro all’agire complesso.
123
• Pensare razionalmente (Leggi del pensiero): Si basa sulla codifica del pensiero
corretto attraverso standard logici esatti. Un sistema è razionale se, date le sue conoscenze, raggiunge conclusioni corrette. Questo approccio è tipico della tradizione
logicista.
• Agire razionalmente (Agenti razionali): È l’approccio oggi più seguito. Un
agente razionale è un sistema che agisce per raggiungere i propri obiettivi date le
proprie credenze, elaborando percezioni in azioni.
26.1.3
Razionalità limitata e prospettive comuni
Recentemente, la ricerca si è spostata dal concetto di razionalità assoluta a quello di
razionalità limitata, ovvero la capacità di agire in modo appropriato anche in condizioni
di informazione incompleta o tempo limitato.
Nonostante le diverse definizioni, emergono alcuni punti di incontro fondamentali:
• Convenzionalità: L’intelligenza artificiale utilizza una nozione di intelligenza convenzionale, distinta da quella puramente umana.
• Dinamismo: I confini della disciplina sono in costante espansione poiché la percezione di "ciò che è intelligente" muta con il progresso tecnologico.
• Dualità: L’IA è contemporaneamente una scienza (volta a comprendere l’essenza
dell’intelligenza) e un’ ingegneria (volta a costruire sistemi capaci di agire in modo
intelligente).
26.2
Il problema delle origini
L’intelligenza artificiale ha una data di nascita ufficiale, fissata nell’estate del 1956, ma
la sua genesi è il risultato di una lunga tradizione di ricerca e dell’influenza di diversi
precursori che hanno tentato di formalizzare il pensiero e rappresentare la mente umana.
26.2.1
La tradizione di ricerca e i precursori
Il percorso verso l’intelligenza artificiale affonda le radici in tentativi storici di meccanizzazione della ragione e della rappresentazione del sé:
• Leibniz: Propose il calculus ratiocinator, un primitivo sistema assiomatico deduttivo volto a rappresentare l’intera conoscenza umana attraverso un linguaggio formale
universale.
• Charles Babbage: Realizzò la macchina alle differenze per calcoli complessi e
progettò la macchina analitica, considerabile un antenato del moderno computer
grazie all’integrazione di un magazzino di memoria.
• Alan Turing: Fondò la teoria della computabilità e la nozione di algoritmo attraverso il concetto di macchina universale, stabilendo i pilastri dell’informatica
moderna.
124
Negli anni Quaranta, lo sviluppo dell’ingegneria dei calcolatori (con macchine come
lo Z3 in Germania e l’ENIAC negli USA) e la nascita della cibernetica — lo studio del
controllo e della comunicazione negli organismi viventi e nelle macchine — fornirono il
substrato tecnologico e teorico necessario per la nascita della disciplina.
26.2.2
La nascita e l’evoluzione storica
L’intelligenza artificiale nacque formalmente nel 1956 durante un seminario presso il Dartmouth College. John McCarthy propose la congettura secondo cui ogni aspetto dell’apprendimento o dell’intelligenza potesse essere descritto con tale precisione da permetterne
la simulazione da parte di una macchina.
Il percorso storico della disciplina è stato caratterizzato da alterne fasi di sviluppo:
1. Entusiasmo iniziale (1956-1966): Grande fiducia nei meccanismi di ricerca
generali e nella possibilità di riprodurre l’intelligenza umana in tempi brevi.
2. Fase di declino: Gli obiettivi iniziali si rivelarono più complessi del previsto.
L’insuccesso dei programmi di traduzione automatica portò a una crisi di fiducia e
al ritiro di cospicue sovvenzioni.
3. Sistemi esperti (Anni Settanta): La disciplina si risollevò focalizzandosi su aree
ristrette di competenza. Nacquero i sistemi basati sulla conoscenza, in cui l’enfasi si
spostò sull’integrazione del sapere degli esperti umani in domini specifici per scopi
commerciali e di supporto alla decisione.
4. Rivoluzione scientifica (Anni Ottanta): L’IA divenne una scienza rigorosa,
adottando metodologie sperimentali e teoremi formali. In questo periodo si affermò
l’approccio probabilistico, in particolare attraverso lo sviluppo delle reti di credenza
per la gestione del ragionamento in condizioni di incertezza.
26.2.3
Il paradigma attuale e direzioni future
Oggi la disciplina è dominata dal paradigma degli agenti intelligenti. Non ci si limita più
a considerare le facoltà cognitive di pensiero, ma si attribuisce un ruolo centrale alla capacità di azione nell’ambiente. Di conseguenza, robotica, visione artificiale e apprendimento
automatico sono integrati in una visione unitaria dell’agente.
L’attenzione si è inoltre estesa dagli agenti singoli ai sistemi di agenti, dove gruppi di
entità interagiscono e comunicano tra loro. Le direzioni future della ricerca puntano a una
gestione sempre più sofisticata dell’evidenza incerta e a una contaminazione interdisciplinare con settori quali la teoria del controllo e l’economia per modellare comportamenti
razionali complessi.
26.3
Fondamenti filosofici dell’IA
L’intelligenza artificiale intrattiene un rapporto di reciproco arricchimento con la filosofia,
traendo ispirazione da essa e, al contempo, offrendo nuovi strumenti per rileggere questioni
classiche. Le relazioni tra queste due discipline possono essere suddivise in tre aree di
interesse principali: le problematiche fondazionali, le tematiche centrali e le conseguenze
significative.
125
26.3.1
Problematiche fondazionali
In questa categoria rientrano i quesiti nati prima dell’IA stessa, come l’origine della
conoscenza, il modo in cui essa si trasforma in azione e la definizione di intelligenza.
Un esempio celebre è il Test di Turing, proposto da Alan Turing nel 1950. L’idea
di Turing era quella di sostituire l’indeterminatezza della domanda "le macchine possono
pensare?" con un criterio comportamentale preciso: la capacità di un programma di
ingannare un essere umano durante una conversazione, facendosi scambiare per un suo
simile. Sebbene potente nel fornire un obiettivo concreto, il test è stato criticato perché
non spiega cosa sia l’intelligenza, ma ne valuta solo la simulazione esterna.
26.3.2
Tematiche centrali
Questa area riguarda le interazioni dirette tra filosofia e IA su temi quali la simulazione
degli stati mentali, il problema mente-corpo e l’emergere della mente dal cervello.
Il riferimento principale è l’esperimento mentale della Stanza Cinese, introdotto da
John Searle nel 1980. Searle descrive un sistema che, pur essendo in grado di manipolare
simboli cinesi seguendo istruzioni sintattiche (un programma) e superando potenzialmente
il Test di Turing, non possiede alcuna reale comprensione semantica del contenuto. L’argomento evidenzia come l’esecuzione di un programma appropriato non sia condizione
sufficiente per essere considerati una "mente".
26.3.3
Conseguenze significative
Questa area analizza i problemi derivanti dall’adozione e dall’uso dei paradigmi dell’IA,
con particolare enfasi sull’etica e sulla prevenzione di ricadute negative.
Un tema di rilievo è la Machine Ethics, che può essere interpretata secondo due
prospettive:
• Etica computabile: L’obiettivo di rendere l’etica un processo di calcolo inserito
nei sistemi per garantirne il comportamento corretto.
• Allargamento dell’etica tradizionale: La necessità di estendere i confini della
filosofia morale per includere le nuove problematiche poste dalla diffusione di agenti
artificiali intelligenti.
126
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )