PDF ridotto a 750 KB - Dipartimento di Informatica

Laurea Magistrale in “Cinema e Media”
Corso di “Rappresentazione e Algoritmi” 2014-15
Modulo I - 6 CFU
mutuato da
Laurea Magistrale in “Scienze del Corpo e della Mente”
6 CFU
Laurea Magistrale in “Scienze della Mente”
Corso di “Intelligenza artificiale” 2013-14
Modulo I - 4 CFU
Vincenzo Lombardo
Note per il corso
Queste note per i corsi di “Rappresentazione e algoritmi” sono parte del
programma d’esame 2014/15. L’idea di scrivere le note scaturisce dalla
considerazione che, essendo frequentato il corso anche da studenti provenienti da
altre sedi in Italia o all’estero, spesso la preparazione di base dell’informatica non
è sufficiente per affrontare lo studio dei testi adottati (come da guida degli studi).
Dopo una ricerca sul web di testi e dispense possibili, mi sono convinto che sono
tutti pensati per scopi diversi da un corso nell’ambito dei media o della psicologia.
Gli esempi riportati, la presentazione degli argomenti, l’obiettivo a cui è destinato
lo studio non sono familiari agli studenti di “Cinema e media” e di “Scienze del
Corpo e della Mente”.
BOZZA: MODELLAZIONE FORMALE DI DATI,
CONOSCENZA, PROCESSI
Commenti benvenuti!
Aggiornamento: 22 ottobre 2014
1
Capitolo 4
La logica dei predicati
Come abbiamo visto nel capitolo precedente, la logica proposizionale non riesce a
cogliere la struttura interna delle proposizioni, anche se queste presentano
similarità molto forti. Ad esempio, non si riesce a generalizzare sulla
rappresentazione che ci sia un pozzo in una cella qualsiasi. Le rappresentazioni in
logica proposizionale di “C’è un pozzo in [1,2].” e “C’è un pozzo in [2,1].”, che
noi abbiamo rappresentato con i simboli proposizionali P1,2 e P2,1 rispettivamente,
non hanno alcuna relazione tra di loro. L’idea di associare un fatto simile,
l’esistenza di un pozzo in una cella, a più istanze di cella, è una conoscenza di cui
gli esseri umani dispongono e, dal punto di vista della rappresentazione, evita il
proliferarsi di espressioni logiche. In poche parole, la logica proposizionale manca
del potere espressivo sufficiente a rappresentare la conoscenza che è di interesse
nella maggior parte dei domini delle attività umane.
Tuttavia, la logica proposizionale ha contribuito a rendere esplicita la conoscenza
impiegata (conoscenza dichiarativa) che negli algoritmi tradizionali è nascosta nel
codice. Occorre avvicinarsi un po’ di più a come l’uomo rappresenta la
conoscenza, rivolgendoci ad altri formalismi logici. Rammentiamo che non
possiamo usare il linguaggio naturale (che rimane un nostro importante termine di
paragone) perché siamo interessati a linguaggi formali non ambigui, su cui si
possano innestare procedure di inferenza. Il candidato immediato è la logica dei
predicati (o del prim’ordine), su cui si sono concentrati gli sforzi dei ricercatori in
ambito filosofico, matematico e informatico per più di un secolo (se consideriamo
la sua versione moderna). Dopo le premesse introduttive, affrontiamo lo studio del
linguaggio della logica dei predicati e delle procedure di inferenza ad essa
associate.
Indice
1.
2.
3.
4.
La questione dell’impegno ontologico
Sintassi e semantica della logica dei predicati
Inferenza con la logica dei predicati
Esempio di rappresentazione della conoscenza e di inferenza con la logica
dei predicati
2
1. La questione dell’impegno ontologico
La logica proposizionale, nella rappresentazione della conoscenza, presenta molti
vantaggi e qualche svantaggio. Innanzitutto è dichiarativa, cioè consente di separare la
conoscenza, esprimendola in modo esplicito. Ricordiamo la differenza con gli algoritmi
tradizionali incontrati nel Capitolo 1, che “occultano” nella logica della procedura la
conoscenza implicata. Inoltre, la logica proposizionale, grazie soprattutto ai connettivi di
negazione e di disgiunzione, permette la rappresentazione della conoscenza parziale
(“Non so per colpa di quale pozzo ho una corrente d’aria in una cella, ma sarà uno di
questi due o entrambi.”). Poi, la logica proposizionale ha la proprietà di essere
composizionale, cioè il significato di proposizioni complesse si ricava dalle proposizioni
semplici, associando un significato ai connettivi (formulato mediante le tabelle di
verità). Ad esempio il significato di
si ricava dai significati di B1,1 e di P1,2. Infine, in logica proposizionale, il significato è
indipendente dal contesto (a differenza del linguaggio naturale, che è dipendente dal
contesto linguistico - “Signori si nasce e io modestamente lo nacqui”, e extra-linguistico
- “In questa classe ci sono alcuni studenti preparati.”). Questo è un vantaggio perché
permette di superare i problemi dovuti all’ambiguità e la difficoltà di reperire i referenti
coinvolti dalle espressioni pronominali o deittiche, rispettivamente.
Contro tutti questi vantaggi, la logica proposizionale ha un potere espressivo limitato (il
confronto si fa almeno con il linguaggio naturale, in cui è espressa la maggior parte della
nostra conoscenza). Non si può dire, ad esempio, “I pozzi causano correnti d’aria nelle
celle adiacenti.”, ma occorre scrivere un enunciato o proposizione per ogni cella. A
questi aspetti di generalizzazione, risponde, con un po’ di sacrificio, la logica dei
predicati (o del prim’ordine, presto si capirà perché), che si presenta con un maggiore
impegno ontologico. L’ontologia, lo studio dell’esistente, determina le categorie
fondamentali mediante le quali si interpreta il mondo. Laddove la logica proposizionale
assume che il mondo si possa rappresentare come un insieme di fatti, atomici o composti
con l’introduzione dei connettivi, la logica dei predicati (come fa del resto il linguaggio
naturale) assume che il mondo sia fatto di
•
•
•
Oggetti o individui, che popolano il mondo: persone, palazzi, numeri, colori,
partite di calcio, guerre, stanze, squadre di calcio, …; si tratta di oggetti concreti
e astratti, detti anche entità, eventualmente con estensione spaziale e/o temporale
(nel caso di oggetti concreti);
Funzioni che individuano oggetti a partire da altri oggetti: “madre di”, “miglior
amico di”, “la gamba sinistra di”, “il primogenito di”, …; si tratta di un modo
indiretto di identificare oggetti del mondo (gli oggetti di partenza sono argomenti
della funzione, l’oggetto che si intende identificare è il valore della funzione);
Relazioni e proprietà, che valgono tra gli oggetti del mondo: la proprietà di un
oggetto di essere “rosso”, “rotondo”, “primo”, …; le relazioni tra due o più
oggetti, ad esempio, “madre di”, “parte di”, “ama”, “in mezzo a”…, “regala”,
“…; le relazioni sono o proprietà, cioè attributi, qualcosa che si predica, di un
singolo oggetto, o legami tra più oggetti del mondo;
3
Notiamo come “madre di” sia stato riportato sia tra le funzioni sia tra i predicati: come
funzione, si intende l’oggetto “madre di x” che viene individuato a partire dall’oggetto
“x”; come predicato, si intende la relazione tra due individui, “x” e “y”. Come
significato, le funzioni sono individui, mentre le relazioni sono vere e o false (si veda
dopo).
2. Sintassi e semantica della logica dei predicati
Come nel calcolo proposizionale, anche la logica dei predicati è priva di assiomi, cioè
non si esprimono contenuti veri e propri, ma si definiscono solo gli aspetti formali, con i
quali viene codificata una KB. Inoltre, anche qui c’è bisogno di definire il sottoinsieme
di tutte le stringhe, partendo dagli atomi. Si parla di enunciati o formule. Cominciamo
dalla sintassi, esemplificando i concetti introdotti, ricorrendo di nuovo al mondo del
Wumpus.
Costanti:
,
,
, ...
Variabili: , , , , ...
Funzioni:
,
, ...
Predicati:
,
,
Connettivi: , , ,
Uguaglianza:
Quantificatori: ,
,
,
,
,
,
,
, ...
,
,
Una costante è un singolo e noto oggetto del dominio; una variabile è un singolo e non
noto oggetto del dominio; una funzione individua univocamente un oggetto del dominio
tramite una relazione tra altri n oggetti del dominio (detti argomenti, che abbiamo
indicato con dei segnaposto “_”); un predicato è una relazione tra n oggetti (argomenti)
del dominio; i connettivi, gli stessi della logica proposizionale, permettono di costruire
predicati complessi a partire da predicati semplici, in modo ricorsivo; l’uguaglianza tra
oggetti è un tipo speciale di predicato con due argomenti, riportato con una notazione
simmetrica per comodità, invece di parentesi di argomenti; infine, i quantificatori,
come vedremo determinano il comportamento delle variabili.
Sintassi della logica dei predicati
Un enunciato (o formula o predicato) atomico è formato da un predicato (che ha una
determinata arità) e da un numero di argomenti pari all’arità del predicato stesso:
Predicato (Termine1, Termine2, ..., Terminen)
oppure
Termine1 = Termine2
dove Termine è una costante, una variabile o una funzione (simbolo funzionale e
argomenti) applicata un certo numero di termini. Per cui il Termine ha una definizione
ricorsiva.
4
Costante
oppure
Variabile
oppure
Simbolo di funzione (Termine1, Termine2, ..., Terminem)
Vediamo alcuni esempi.
Si noti che non tutti gli enunciati riportati come esempio sono veri (della semantica ci
occupiamo tra un attimo).
Gli enunciati composti sono formati da enunciati atomici mediante l’uso dei
connettivi:
•
•
•
•
•
Se è un predicato o un uguaglianza,
è un predicato (negazione);
Se e sono predicati o uguaglianze,
è un predicato (congiunzione);
Se e sono predicati o uguaglianze,
è un predicato (disgiunzione);
Se e sono predicati o uguaglianze,
è un predicato (implicazione);
Se
e
sono predicati o uguaglianze,
è un predicato (bicondizionale).
Alcuni esempi:
5
Semantica della logica dei predicati
Gli enunciati sono veri o falsi rispetto a un modello e a un’interpretazione. Nella figura
sottostante abbiamo un modello in cui sono indicati gli oggetti e le relazioni; inoltre, è
indicata un’interpretazione, che mette in relazione costanti, funzioni e predicati con gli
elementi del modello. Le costanti sono posizionate vicino agli oggetti, le funzioni sono
indicate con linee tratteggiate (dall’argomento alla funzione, dalla funzione al valore), i
predicati sono indicati con linee solide verso gli argomenti.
Quindi, il modello contiene oggetti (cioè elementi del dominio) e relazioni tra di essi;
l’interpretazione specifica i referenti per
• simboli di costante, che sono interpretati come oggetti;
• simboli di funzione, che sono interpretati come relazioni funzionali, cioè
relazioni che identificano un solo oggetto a partire da altri oggetti come
argomenti;
• simboli di predicato, che sono interpretati come relazioni tra un certo numero di
oggetti.
Un enunciato atomico
Predicato (Termine1, ..., Terminen)
oppure
Termine1 = Termine2
è vero se e solo se gli oggetti a cui si riferiscono i termini Termine1, ..., Terminen sono
tra di loro nella relazione a cui si riferisce Predicato. Gli enunciati composti sono
valutati secondo le tabelle di verità dei singoli connettivi, che abbiamo studiato per la
logica proposizionale.
6
Quantificatori
I quantificatori sono utili per esprimere caratteristiche di interi insiemi di oggetti, senza
dovere introdurre predicati che enumerano gli oggetti uno per uno. Ad esempio, i
quantificatori possono esprimere una conoscenza del tipo “I pozzi causano correnti
d’aria nelle celle adiacenti.”, riportato in precedenza. Esistono due quantificatori nella
logica dei predicati, il quantificatore universale e il quantificatore esistenziale .
Cominciamo dal primo.
Le formule con la quantificazione universale delle variabili sono del tipo:
L’esempio “Tutti gli studenti di Rappresentazione e Algoritmi sono intelligenti.” si può
codificare nel modo seguente:
La semantica delle formule quantificate universalmente è la seguente:
La formula
è vera in un modello m se e solo
riferirsi a ogni possibile oggetto del mondo.
è vera con x che può
E’ come se l’espressione con il quantificatore universale fosse equivalente alla
congiunzione delle istanziazioni di . Cioè, se nel nostro modello abbiamo oggetti (in
questo esempio non ci sono funzioni, solo costanti),
inserire
il
quantificatore
universale
davanti
alla
formula
, è equivalente, dal punto di vista del significato,
ad avere una KB fatta in questo modo:
La variabile è stata sostituita con tutti i cosiddetti termini ground, cioè termini che non
contengono variabili.
7
Si può osservare che:
L’implicazione (
universale .
è il principale connettivo in uso con il quantificatore
Se consideriamo il significato della formula
notiamo che essa è vera quando l’antecedente è falso (e ciò vale per tutte le costanti che
non sono studenti) e quando sono veri sia l’antecedente che il conseguente (sono sia
studenti sia intelligenti). Corrisponde alla seguente espressione in linguaggio naturale:
“Per ogni individuo del modello, se è uno studente di ReA, allora è intelligente.”. Si noti
anche che la formula è vera anche se non esiste nessuno studente al corso di ReA; nel
momento in cui esista, deve essere anche intelligente. Vediamo cosa succede se usiamo
gli altri connettivi nella formula.
•
o Corrisponde all’espressione “Tutti gli individui del modello sono studenti
di ReA e sono intelligenti.”.
o Si capisce che è un’interpretazione molto vincolante rispetto alla frase
italiana di partenza “Tutti gli studenti di ReA sono intelligenti.”
•
o Corrisponde all’espressione “Tutti gli individui del modello o sono
studenti di ReA o sono intelligenti o entrambe le cose.”.
o Continua a essere molto vincolante perché richiede che tutti gli individui
siano una delle due cose o entrambe.
•
o Corrisponde all’espressione “Tutti gli individui del modello sono studenti
di ReA se e solo se sono intelligenti.”.
o Vincola gli studenti di ReA a essere intelligenti (come succede per
l’implicazione sopra), ma purtroppo vincola gli individui intelligenti a
essere studenti di ReA (e questo non era nell’enunciato originale).
Le formule con la quantificazione esistenziale delle variabili sono del tipo:
L’esempio “Qualche studente di Rappresentazione e Algoritmi è preoccupato.” si può
codificare nel modo seguente:
La semantica delle formule quantificate esistenzialmente è la seguente:
La formula
è vera in un modello m se e solo se
un qualche oggetto del modello (almeno uno).
è vera con
legato a
E’ equivalente alla disgiunzione delle instanziazioni di . Cioè, con gli oggetti del
modello sopra, si ha che l’espressione è equivalente alla KB seguente:
8
Si può osservare che:
La congiunzione (
esistenziale .
è il principale connettivo in uso con il quantificatore
Per esempio, se consideriamo il significato inteso della formula
notiamo che essa è vera solo quando entrambi i congiunti sono veri (un individuo esiste
davvero che è sia studente di ReA sia intelligente). Corrisponde alla seguente
espressione in linguaggio naturale: “Esiste almeno un individuo del modello, che è sia
uno studente di ReA sia intelligente.”. Si noti che stavolta la formula è vera solo se
esiste veramente almeno uno studente al corso di ReA che è anche intelligente. Vediamo
cosa succede se usiamo gli altri connettivi nella formula.
•
o Corrisponde all’espressione “Esiste un individuo tale che se si tratta di
uno studente di ReA allora è intelligente.”.
o Si capisce che è un’interpretazione poco vincolante rispetto alla frase
italiana di partenza “Qualche studente di ReA è intelligente.”, che
richiede l’effettiva esistenza dell’individuo.
•
o Corrisponde all’espressione “Esiste un individuo tale che o è uno
studente di ReA o è intelligente o entrambe le cose.”.
o Continua a essere poco vincolante, perché va bene anche se lo studente
non è intelligente o addirittura se esiste uno intelligente che non sia
studente.
•
o Corrisponde all’espressione “Esiste un individuo tale che è uno studente
di ReA se e solo se è intelligente.”.
o E’ molto vicina alla congiunzione, ma è vera anche se l’individuo non è
né studente di ReA né intelligente.
Alcune proprietà comuni dei quantificatori sono le seguenti:
9
•
•
•
Dire
o
è equivalente, dal punto di vista logico, a
o
, rispettivamente, dato il carattere indipendente dei due quantificatori;
è invece diverso da
, in quanto l’interpretazione dipende
dall’ordine dei quantificatori. Si consideri ad esempio la frase “Tutti amano
qualcuno.”
o La formula
interpreta la frase come se il qualcuno x
dipenda dall’individuo y selezionato di volta in volta (“Ognuno ama
qualcuno.”).
o La formula
interpreta la frase come se il qualcuno x
esista indipendente dall’individuo y selezionato di volta in volta
(“Qualcuno è amato da tutti.”).
Dualità dei quantificatori: ogni quantificatore si può esprimere con l’altro
quantificatore e la negazione (leggi di De Morgan per i quantificatori)
o
è
come
dire
;
ad
esempio
, cioè “a tutti piace il
gelato” è come dire che “non esiste qualcuno a cui non piaccia il gelato”;
o
è
come
dire
;
ad
esempio
, cioè “a qualcuno
piace il baccalà” è come dire che “non è vero che a nessuno piace il
baccalà”;
Concludiamo questa rassegna sulla rappresentazione della conoscenza con la logica del
prim’ordine con l’uguaglianza, un predicato di arità due, che si può scrivere in modo
simmetrico.
Termine1 = Termine2 è vero sotto una data interpretazione se e solo se Termine1
e Termine2 si riferiscono allo stesso oggetto.
Esempi di rappresentazione della conoscenza con la logica dei predicati
1) Esempio: variazione sull’arringa dell’avvocato
Se il mio cliente è colpevole, allora il coltello era nel cassetto. Ma, o il coltello non era
nel cassetto o chiunque lo avrebbe visto, il coltello. Tuttavia, se il coltello non era lì il
10 ottobre, allora non lo ha visto nessuno, il coltello. Inoltre, se il coltello fosse stato lì il
10 ottobre, allora non solo il coltello sarebbe stato nel cassetto ma anche il martello
sarebbe stato nel ripostiglio. Ma tutti sappiamo che gli utensili non erano nel
ripostiglio. Per cui, signore e signori della giuria, il mio cliente è innocente.
adattato da
[http://nicolas.thiery.name/macs358/Notes/1_FormalLogic/PropositionalLogic.pdf]
Si possono identificare le seguenti proposizioni atomiche (scorporando i connettivi
analizzati nel linguaggio naturale e riportando le espressioni a una forma neutra al
presente).
•
•
•
P1: Il mio cliente è colpevole.
P2: Il coltello è nel cassetto.
P3: Chiunque vede il coltello.
10
•
•
•
P4: Il coltello è lì il 10 ottobre.
P5: Il martello è nel ripostiglio.
P6: Gli utensili sono nel ripostiglio.
Predicati: Colpevole(_), In(_,_), Vedere(_,_), Lì(_,_)
Costanti: MioCliente, Coltello, Cassetto, Ripostiglio, Martello, 10oct
Una possibile KB è la seguente (si ricordi che la KB dipende dal compito, che nel nostro
caso è limitato a verificare α):
•
R1:
•
R2:
o Se il mio cliente è colpevole, allora il coltello è nel cassetto.
o
o O il coltello non è nel cassetto o chiunque vede il coltello.
o
•
R3:
•
R4:
o Se il coltello non è lì il 10 ottobre, allora nessuno vede il coltello.
o
o Se il coltello è lì il 10 ottobre, allora il coltello è nel cassetto e il martello
è nel ripostiglio.
o
•
Con
•
R5:
α:
o Gli utensili non sono nel ripostiglio.
o
o Il mio cliente è innocente.
o
Si noti che sarà difficile fare qualche inferenza significativa se non si aggiungono alla
base di conoscenza la formule che rappresenta il fatto che il martello sia un utensile,
cioè:
•
R6 (conoscenza aggiuntiva)
o Il martello è un utensile.
o
[Esercizio: Trasformare la costante Martello in un oggetto generico della categoria dei
Martelli e usarlo negli altri enunciati della KB.]
2) Esempio: dominio della parentela
11
Si assumo come primitivi (non definiti) i predicati
e
•
Definizione di Consanguineo, basandosi sul predicato Genitore:
•
•
I fratelli sono consanguinei:
La madre di qualcuno è il suo genitore femmina:
•
La consanguineità è una proprietà simmetrica:
.
3. Inferenza con la logica dei predicati
L’approccio seguito per le inferenze con la logica dei predicati è di rendere la KB in
termini proposizionali e quindi agire come per la logica proposizionale vista in
precedenza. La cosiddetta proposizionalizzazione prevede la sostituzione delle variabili
in termini ground, cioè termini che non contengono variabili. Un predicato
proposizionalizzato è come se fosse una proposizione vera e propria della logica
proposizionale. Con l’ottica della proposizionalizzazione, introduciamo due regole di
inferenza.
Istanziazione universale (Universal instantiation – UI)
Ogni istanziazione di un enunciato quantificato universalmente è
conseguenza logica di esso:
per ogni variabile
e termine ground .
Ad esempio, riconsiderando il caso dell’enunciato:
con le costanti:
si ha che i seguenti enunciati sono tutti conseguenze logiche:
12
Istanziazione esistenziale (Existential instantiation - EI)
Dati l’enunciato α, la variabile v e il simbolo di costante k che non è
presente nella KB, si ha che:
dove k è un nuovo simbolo di costante, detta costante di Skolem.
Ad esempio, riconsiderando il caso dell’enunciato:
con l’insieme solito di costanti:
per skolemizzare, occorre introdurre una nuova costante (C1) non presente in KB.
Applicando le istanziazioni universale ed esistenziale, si riesce quindi a
proposizionalizzare la KB. Notiamo infatti che un enunciato che contiene solo termini
ground altri non è che una proposizione: solo gli umani assegnano a una stringa come
un significato che dipende dalle sottostringhe
e
; per la macchina, non vi
è alcuna differenza con
. Il significato di una stringa non dipende dalle componenti
delle stringhe stesse, ma da come una stringa si relaziona con altre stringhe.
Per fare delle inferenze con una KB che è stata proposizionalizzata, si possono applicare
le tecniche utilizzate per la logica proposizionale. Supponiamo che la KB contenga solo
le seguenti formule:
Usando l’instanziazione universale con tutte le costanti della KB, la KB contiene le
seguenti formule:
13
Questa nuova KB si dice proprio KB proposizionalizzata, come se contenesse i
seguenti simboli “proposizionali” (diversi dai soliti P1, P2, …, solo perché possiedono
una struttura di predicato, comprensibile dagli umani per i nomi scelti):
Ogni KB in logica dei predicati può essere proposizionalizzata in modo da mantenere la
nozione di conseguenza logica. In particolare si può dimostrare facilmente che:
Un enunciato ground è conseguenza logica della KB proposizionalizzata se
e solo se è conseguenza logica della KB originale.
Quindi, l’idea è di proposizionalizzare la KB e applicare i metodi di inferenza della
logica proposizionale.
Esiste però un problema con i simboli di funzione, perché possono rendere la
proposizionalizzazione un processo infinito (in particolare, si possono creare infiniti
termini ground). Ad esempio, se ho la funzione
e la costante
, non
so quando fermarmi nella generazione degli individui ottenuti applicando la funzione
anche a tutti gli individui generati:
Il problema è stato risolto (parzialmente) nel 1930 da Herbrand, che dimostrò il suo
teorema:
Se un enunciato α è conseguenza logica di una KB in logica dei predicati,
allora esso è conseguenza logica di un sottoinsieme finite della KB
proposizionalizzata.
L’idea del teorema, come della dimostrazione, è simile all’idea che sta alla base
dell’algoritmo di ricerca detto approfondimento iterativo: a ogni iterazione, si fissa un
14
livello di profondità n e si generano i termini ground applicando funzioni fino alla
profondità di annidamento n. Ora, visto che α è conseguenza logica della KB originale
per ipotesi di teorema, esiste necessariamente un tale n al cui livello la KB
proposizionalizzata ha α come conseguenza logica. Il livello di profondità aumenta di 1
a ogni ciclo; o prima o poi raggiungeremo il livello giusto, quel livello tale che la KB
proposizionalizzata di quel livello ha come sua conseguenza logica α. A questo punto,
sembra tutto risolto, ma non è vero.
Come si può notare, il problema esiste quando α non è conseguenza logica, perché in
questo caso la ricerca del livello di profondità n proseguirà all’infinito. E, infatti, Turing
e Church dimostrarono nel 1936 che per la logica dei predicati la nozione di
conseguenza logica è semi-decidibile. Cioè in generale,
se α è conseguenza logica di KB, allora esiste un algoritmo (nel caso di
Herbrand, trovare una KB proposizionalizzata adatta) in grado di
rispondere “Si. E’ conseguenza logica!”; se, invece, α non è conseguenza
logica, non si riesce a trovare un algoritmo in grado di rispondere “No.
Non è conseguenza logica!”.
Anche nel caso positivo, comunque, esiste un problema di performance. Il processo di
proposizionalizzazione genera comunque una marea di enunciati irrilevanti che non
vengono presi in considerazione per dimostrare una certa conseguenza logica: infatti,
così come avveniva per le “inutili” righe della tabella di verità che contenevano simboli
proposizionali necessariamente falsi, istanziare il predicato
su
,
,
, … non è utile per la dimostrazione della conseguenza logica
. Per questo motivo, si può proposizionalizzare in modo mirato.
L’operazione opportuna si chiama unificazione. In questo caso, si può calcolare
l’inferenza applicando una sostituzione θ che renda uguali due predicati. Ad esempio,
se consideriamo i predicati
e
e applichiamo la sostituzione
, otteniamo l’uguaglianza dei
due predicati, in quanto diventano entrambi
, in cui la variabile è
stata sostituita dalla costante
e la variabile è stata sostituita dalla costante
. L’unificazione di due predicati è quindi una sostituzione delle variabili che renda
i due predicati uguali.
Cioè l’unificazione dei predicati α e β è una sostituzione θ che applicata a α e β,
producendo αθ e βθ li rende uguali.
Nella seguente tabella si hanno un po’ di casi possibili.
15
NON UNIFICA
Come si vede, in presenza di variabile e costante, la variabile viene sostituita
semplicemente dalla costante, anche nel caso di più sostituzioni o se la variabile è
utilizzata all’interno di una funzione (vedi
); nel caso in cui si
cerca di sostituire la stessa variabile con due valori diversi, l’unificazione fallisce.
Osserviamo un paio di questioni operative.
1. Prima di procedere all’unificazione, conviene sempre rendere i nomi delle variabili
unici in modo da non introdurre vincoli che non ci sono nella KB originale: ad esempio,
se in un enunciato abbiamo il predicato
e in un altro enunciato abbiamo
il predicato
, le variabili non sono vincolate a essere unificate con la
stessa costante perché provengono da due enunciati diversi (si dice che lo “scope”, cioè
l’ambito in cui vale la variabile, è limitato all’enunciato, e non va oltre l’enunciato);
procedendo a una sostituzione di variabili prima di procedere all’unificazione – cioè,
diventa
, si evita il problema di imporre che sia
necessario sostituirli con la stessa costante.
2. Si noti infine che nell’ultima riga della tabella, si ha un caso in cui una variabile è
sostituita da un’altra variabile (y/z). Sarebbero possibili altre unificazioni, cioè
sostituzioni che rendono uguali i due predicati (
e
): ad
esempio la sostituzione
è anche un’unificazione, ma sarebbe meno generale della prima, in quanto la prima non
vincola a una costante specifica i valori di
e , ma solo a essere uguali.
Nell’unificazione, si prende sempre la sostituzione più generale (si chiama Most General
Unifier, MGU).
Se, grazie all’unificazione, riusciamo a rendere uguali due predicati, allora si può
procedere a lavorare con le regole di inferenza. Come nel caso della logica
proposizionale, noi possiamo utilizzare sia equivalenze logiche sia conseguenze logiche
per inferire dalla KB la proposizione cercata. Per la logica dei predicati, ci concentriamo
su una sola regola di inferenza, che si rivela molto utile nelle applicazioni comuni della
logica nel Semantic Web. E’ una forma generalizzata del Modus Ponens.
Nel Capitolo 3, abbiamo introdotto il Modus Ponens per la logica proposizionale:
l’enunciato
) è valido.
16
Ora lo generalizziamo nel senso di applicarlo alla logica dei predicati, mediante il
supporto dell’unificazione, per implementare l’uguaglianza tra due predicati. La regola
del Modus Ponens Generalizzato (GMP) si può schematizzare nel seguente modo:
dove
, per tutte le i.
Si intende che le sono uguali a meno della sostituzione , che viene applicata alla
conclusione . Infatti, la conclusione vale solo per la con la sostituzione (cioè per ).
Facciamo un esempio. Consideriamo le due proposizioni:
“Tutti gli studenti di ReA che hanno consegnato gli esercizi possono sostenere
l’orale. Giorgio Rossi è uno studente di ReA e ha consegnato gli esercizi.”
La rappresentazione del Modus Ponens Generalizzato (GMP) in questo caso sarà:
dove
•
•
•
,
,
.
GMP è un metodo corretto e completo quando la KB consiste di clausole definite.
Assumendo che tutte le variabili siano quantificate universalmente e la quantificazione
esistenziale sia stata sostituita da una skolemizzazione, una clausola definita ha la
forma di disgiunzione di proposizioni di cui una sola positiva:
Se raccogliamo in parentesi (per l’associatività della disgiunzione) e applichiamo De
Morgan (vedi Capitolo 3), otteniamo
che corrisponde in forma di implicazione (vedi equivalenze nel Capitolo 3) a
Una clausola definita senza proposizioni negate (ad esempio, ) è detta fatto. Quindi,
se riusciamo a esprimere una KB in forma di clausole definite possiamo applicare la
regola del Modus Ponens Generalizzato (GMP).
Per dimostrare che l’enunciato è conseguenza logica di KB, si procede applicando la
regola di inferenza GMP. Per rappresentare il processo di inferenza, si può usare un
grafo and/or e il metodo di concatenazione all’indietro (Backward Chaining).
17
p1'θ!$!
p2'θ!$!
…!
pn'θ!$!
qθ!$!
In questa parte del grafo AND/OR troviamo una rappresentazione dell’applicazione del
Modus Ponens. In alto ci sono i predicati dell’antecedente, a cui è stata già applicata la
sostituzione ; in basso, il conseguente (unico, nelle clausole definite) dell’implicazione,
anch’esso con la sostituzione già applicata; l’arco disegnato tra le connessioni indica
che tutte i predicati dell’antecedente sono in AND. Il grafo AND/OR di un’inferenza
prevede più applicazioni del Modus Ponens, diventando di più livelli connessi tra loro.
Più in basso vediamo un esempio.
4. Esempio di rappresentazione della conoscenza e di inferenza con la
logica dei predicati
Ora applichiamo tutto ciò che sappiamo sulla formalizzazione in logica dei predicati a
un esempio di rappresentazione della conoscenza e di inferenza. La conduzione della
soluzione completa dell’esempio ci consente di introdurre le pratiche dell’ingegneria
della conoscenza, che traducono la conoscenza da un testo alla formalizzazione logica, e
di eseguire dei test di inferenza con la regola del Modus Ponens Generalizzato in modo
immediato. Saremo molto attenti a usare predicati che sono nella forma delle clausole
definite e introdurremo delle linee guida che il lettore potrà usare in futuro nella
costruzione eventuale di basi di conoscenza. Cominciamo dal testo, la nostra fonte di
conoscenza espressa in linguaggio naturale, e dal problema da risolvere.
Il crimine del Colonnello West [Russell, Norvig]
La legge americana dice che è un crimine per un americano vendere armi a
nazioni ostili. Il paese Nono, un nemico dell’America, possiede alcuni
missili. Tutti i suoi missili gli sono stati venduti dal Colonnello West, che è
americano. Dimostrare che il Colonnello West è un criminale.
Nella pratica dell’ingegneria della conoscenza (knowledge engineering), occorre
innanzitutto identificare il compito, l’obiettivo per cui si costruisce la base di
conoscenza. E’ un passo fondamentale per un semplice motivo: ogni volta che si
rappresenta della conoscenza, occorre porsi dei limiti sulla profondità dei nostri
enunciati. Se, per esempio, devo parlare del calore e della temperatura, scenderò al
livello di descrizione dell’agitazione termica delle molecole, se l’obiettivo è inferire la
nozione del passaggio di stato di un materiale, ma mi limiterò a dire che sono in
proporzione diretta se devo solo inferire che la temperatura di un corpo scende quando il
corpo perde calore. Nel nostro esempio, l’obiettivo è già richiesto dall’esercizio, cioè
dimostrare che il Colonnello West è un criminale.
Una volta che l’obiettivo è individuato, occorre recuperare tutta la conoscenza possibile
sull’argomento. Si possono studiare le enciclopedie e i manuali specialistici (scritti in
linguaggio naturale e/o tecnico), consultare siti web specialistici, intervistare gli esperti
18
di dominio, per comprendere la relazione tra la conoscenza e l’obiettivo, astrarre gli
aspetti importanti per il compito, evitare di essere troppo specifici, … nella codifica
successiva della conoscenza. Nel nostro esempio (è un esercizio!), la conoscenza viene
comunicata dal testo stesso (anche se occorrerà aggiungere delle informazioni) per
riuscire a completare il compito. Tornando invece all’esempio citato in precedenza,
occorre mettere insieme la conoscenza fisica intorno a calore e temperatura al livello
richiesto dal compito.
A questo punto, inizia la fase di codifica vera e propria. Consiste di tre sotto-fasi che
operano in parallelo, influenzandosi l’una con l’altra, con andate e ritorni:
•
•
•
compilare un vocabolario di predicati, funzioni e costanti;
codificare la conoscenza generale sul dominio;
codificare la conoscenza specifica (cioè la descrizione) del problema.
Si procede spezzando, come abbiamo già fatto nel caso dell’arringa dell’avvocato, in
enunciati in linguaggio naturale. Si identificano gli oggetti del dominio, che
diventeranno costanti, nel caso in cui siano identificabili direttamente,
•
•
•
•
“la Repubblica Italiana” –
“la guerra di Crimea” –
“Claudia” –
,
…
,
,
e funzioni, per gli oggetti identificati in relazione ad altri oggetti,
•
•
•
•
“il presidente della Repubblica Italiana” –
“il luogo della guerra di Crimea” –
“la stanza di Claudia” –
,
…
,
,
Si identificano quindi le relazioni tra gli oggetti, considerando la conoscenza generale,
che coinvolge variabili e quantificatori (soprattutto universali) e scritte, nel nostro caso,
in forma di clausole definite. Vediamo due esempi.
•
“Se uno fa una lesione al suo prossimo, si farà a lui come egli ha fatto all'altro”
[legge del taglione, Codice di Hammurabi, Bibbia]
Per ogni coppia di persone <x,y> e un’azione z compiuta da x su y che procura
una lesione a y, esiste un qualcuno o qualcosa y’ che compirà l’azione simmetrica
di z su x. Notare che AzioneSimmetrica è una funzione che data z, restituisce
un’azione simmetrica ad essa. Non avessimo avuto il vincolo delle clausole
definite, la versione più adeguata sarebbe stata:
•
“I cetacei sono animali acquatici dotati di respirazione polmonare.” [Aristotele]
19
interpretata come condizione necessaria, ma non sufficiente.
Infine si codifica la descrizione specifica del problema, tipicamente con fatti, cioè
clausole definite che sono formate solo dalla proposizione positiva. Di nuovo, vediamo
due esempi.
•
“Pasquale ha ferito Ciro, rompendogli un dente.”
•
“Moby Dick è una balena.”
Durante queste codifiche, si fa crescere un vocabolario, in modo da tenere conto delle
costanti, funzioni e predicati che vengono introdotti dalle formule che descrivono la
conoscenza generale e la situazione specifica.
•
Costanti:
,
,
•
•
,
,
,
,
, …;
Funzioni:
Predicati:
,
,
,
,
,
,
,
,…
Costruendo il vocabolario, si nota che
sarà distinto da
e che
è distinto da
, per cui bisogna introdurre altri
predicati per fare in modo che si possa realizzare una corrispondenza che il Modus
Ponens possa sfruttare per realizzare le inferenze. In particolare, occorrono due formule
simili del tipo:
•
“Le lesioni ai denti sono lesioni.”
•
“Le balene sono cetacei.”
In alternativa, se il contesto dell’obiettivo si limita a un solo tipo di Cetaceo, si può
rinunciare a rappresentare le Balene e introdurre direttamente il fatto:
La codifica generale e specifica e il vocabolario vengono corretti e integrati
opportunamente in modo mutuo, fino a che la base di conoscenza è completa e si può
procedere alle inferenze. Codifichiamo ora la conoscenza del nostro esempio.
E’ un crimine per un americano vendere armi a nazioni ostili.
Nono è un nemico dell’America.
20
Nono possiede alcuni missili.
Con la skolemizzazione (M1 costante di Skolem) diventa
Ricordando che tutta la KB è una congiunzione di formule, si ha che l’ultima formula si
può considerare come due congiunti della KB.
Tutti i suoi missili gli sono stati venduti dal Colonnello West.
West è americano.
Dimostrare che il Colonnello West è un criminale.
A questo punto si lavora per dimostrare che è conseguenza logica di KB. Si applica la
regola di inferenza (nel nostro caso, GMP). Per rappresentare il processo di inferenza,
usiamo il grafo and/or e il metodo di concatenazione all’indietro (Backward Chaining).
Si parte da
poco
sopra
, che viene posizionato in basso. A esso si connettono
i
predicati
congiunti
nell’antecedente
del
condizionale
, a cui è
stata applicata la sostituzione
. L’arco disegnato tra le connessioni sta a
indicare che tutte le condizioni sono in AND.
Il predicato
possibile connettere
con
dell’implicazione. Le variabili e del predicato
alle costanti
e
, rispettivamente.
i
predicati
rende
dell’antecedente
vengono legate
21
Per concludere la dimostrazione, occorre dimostrare i due fatti
e
, che però non sono presenti in KB. Tuttavia, questi due fatti si possono
derivare da una KB estesa rispetto a quella attuale, in cui si aggiungono due nuovi
enunciati.
I missili sono armi.
I nemici dell’America sono ostili.
Grazie a questi due enunciati, di tipo generale, che codificano una conoscenza di tipo
classe-sottoclasse (i missili sono un sottoinsieme di tutte le armi) e di tipo attributo (un
nemico dell’America è un paese ostile, nella prospettiva Americo-centrica dell’esercizio
– “La legge americana dice che …”).
Le ultime fasi descritte corrispondono alla realizzazione di inferenze e all’eventuale (nel
nostro esercizio, effettiva) correzione della KB, che può rivelarsi in più stadi di sviluppo
errata, incompleta rispetto al compito, troppo ad hoc. Quindi, a ogni rilascio della KB,
occorre far seguire una sessione di calcolo di inferenze e di eventuale
debug/integrazione/correzione della KB.
Conclusioni
Questo esempio conclude questo capitolo sulla logica dei predicati. In particolare,
abbiamo applicato, come regola di inferenza, il Modus Ponens Generalizzato, che è un
22
metodo corretto e completo per le clausole definite, una forma ristretta della logica dei
predicati.
Questa forma è di uso molto comune nella rappresentazione della conoscenza e ha avuto
molte implementazioni efficienti. Sarà alla base delle logiche descrittive e delle
ontologie computazionali, alla base del Semantic Web.
[Esercizio: Ulisse e la maga Circe]
Formalizzare in logica dei predicati (clausole definite) la seguente conoscenza:
La leggenda dice che chi incontra Circe e beve la pozione magica viene
trasformato in un maiale. Alcuni marinai di Ulisse incontrarono Circe e
bevvero la pozione magica. Ulisse riuscì però a bere un antidoto, che gli era
stato donato dal dio Ermes, e chi beve l’antidoto libera le vittime
dell’incantesimo.
Dimostrare, quindi, che i marinai furono liberati da Ulisse.
Suggerimento: procedere come per l’esercizio svolto in precedenza (“colonnello West”);
aggiungere eventualmente della conoscenza mancante (connessione tra la “coloro che
sono trasformati in maiali” e “le vittime dell’incantesimo”).
Bibliografia utile per questa sezione
Stuart Russell, Peter Norvig, Intelligenza artificiale 3/Ed. - Vol. 1, Un approccio
moderno, Pearson Education, 2010, pp. 704. Capitoli 8 e 9.
http://www.logicinaction.org/
http://people.hofstra.edu/stefan_waner/realworld/logic/logicintro.html
Voci utili di Wikipedia: Clausole di Horn e definite, Ontologia e voci correlate.
23