Sei sulla pagina 1di 9

Macchine intelligenti

Dispensa 3: Il ragionamento e la soluzione dei problemi


Introduzione
Nella dispensa precedente abbiamo visto in che modo nell’ambito dell’intelligenza
artificiale si sia tentato di riprodurre sul computer alcune delle facoltà simboliche che
caratterizzano il comportamento intelligente, come l’uso del linguaggio naturale e
l’organizzazione della conoscenza sui fatti del mondo mediante complesse strutture
rappresentazionali.

Ma evidentemente questi due domini, per quanto importanti, non esauriscono


l’insieme di facoltà che attribuiremmo ad un essere intelligente. Infatti un agente
intelligente deve anche esser in grado di usare le conoscenze di cui è dotato per
elaborare altre conoscenze, per orientare il suo comportamento e per risolvere
problemi di varia natura. Sin dagli anni cinquanta molti ricercatori e studiosi di
intelligenza artificiale hanno rivolto la loro attenzione proprio a questo tipo di facoltà,
cercando di sviluppare dei programmi che fossero in grado di effettuare ragionamenti
e di affrontare problemi complessi.

Il ragionamento e la soluzione dei problemi


Per capire in che modo si sia tentato di sviluppare programmi in grado di ragionare
e di risolvere problemi, esaminiamo questi tre casi: un matematico che debba
dimostrare un teorema, un giocatore di scacchi nel corso di una partita e un normale
individuo che debba scegliere che modello di computer acquistare.

Il matematico parte da un insieme di conoscenze preesistenti (tutti i teoremi della


matematica dimostrati) e – applicando alcune regole o conoscenze operative – cerca
di dedurre da esse un nuovo teorema (il quale a sua volta andrà ad aumentare le
conoscenze). Nel fare questo procede per tentativi, esplorando molte possibili strade
di dimostrazione prima di individuare quella giusta. Allo stesso modo il giocatore di
scacchi di fronte ad una situazione di gioco cerca di prevedere le conseguenze di ogni
possibile mossa ragionevole sfruttando la sua conoscenza delle regole del gioco e la
sua esperienza1. Infine anche il nostro compratore cerca di acquisire la maggiore
quantità possibile di informazioni per valutare tutti i pro e i contro delle varie scelte di
acquisto che ha a disposizione, prendendo in considerazione fattori complessi come la
sua disponibilità finanziaria, l’utilità di una configurazione piuttosto che di un’altra per
la sua attività professionale o ricreativa etc.

Tutti e tre questi casi, se osservati in modo astratto, presentano alcuni tratti in
comune. Sembra insomma che vi sia un modello generale di ragionamento
soggiacente a queste attività. L’analisi di questo modello e la sua riproduzione
mediante sistemi informatici è il dominio di molte ricerche che si collocano nell’ambito
intelligenza artificiale e che vengono di norma rubricate sotto le etichette di soluzione
di problemi (problem solving), dimostrazione automatica, ricerca selettiva.
Naturalmente ognuna di queste ricerche ha degli aspetti peculiari legati al particolare
oggetto di ciascuna di esse. Tuttavia si può individuare un corpo comune di
metodologie e di strumenti. Questo corpo comune consiste nella ricerca di una serie di
procedimenti generali per la risoluzione di problemi formalmente definibili. Per capire

1 Sulla singolare attrazione che moltissimi ricercatori di intelligenza artificiale hanno mostrato verso il
gioco degli scacchi torneremo nel prossimo paragrafo.
di cosa si tratti, cominciamo con un esempio di ‘ricerca della soluzione di un problema’
piuttosto comune e banale.

Immaginiamo che Marco sia in procinto di uscire di casa. Proprio mentre sta per
aprire la porta si accorge di avere perduto le chiavi della sua automobile. Egli è
tuttavia sicuro che le chiavi siano da qualche parte nel suo piccolo appartamento di
tre stanze. Si mette così a cercarle. Per evitare di girare a vuoto, però, decide di
procedere in modo sistematico nella sua ricerca. Inizia così a cercare dall’ingresso.
Naturalmente anche per effettuare la sua ricerca nella stanza di ingresso adotta il
medesimo approccio sistematico. Si mette pertanto ad esplorare ogni singolo mobile
presente nell’ingresso, e per ogni singolo mobile guarda in ogni possibile cassetto,
piano o anta. Poiché la ricerca nell’ingresso non ha avuto esito, passa in cucina. Anche
qui guarda prima sul tavolo, poi sul frigorifero, poi sul piano di cottura. Non avendo
ancora trovato le chiavi si mette ad esplorare l’ultima stanza, quella da letto, essendo
ormai sicuro che le chiavi debbano essere li dentro. Ovviamente anche nella camera
da letto adotta la sua strategia sistematica: comodino, cassetto del comodino,
superficie del letto, sotto il letto…

Lasciamo il nostro amico alla sua ricerca e proviamo ad analizzare il suo


comportamento. Il problema in questione è la ricerca delle chiavi. Obiettivo della
ricerca, ovviamente, è trovare le chiavi. Le possibili soluzioni al problema nel momento
iniziale della ricerca sono tutti i luoghi in cui le chiavi possono essere riposte.
Chiamiamo questo lo spazio del problema. Per conseguire l’obiettivo Marco ha iniziato
ad esplorare in modo sistematico tutte le possibili soluzioni suddividendo lo spazio del
problema in modo gerarchico. Per ogni passo della sua ricerca ha naturalmente
verificato se l’obiettivo non fosse conseguito.

Un procedimento di ricerca come questo, può facilmente essere rappresentato


mediante un cosiddetto grafo ad albero. Un grafo ad albero è costituito da un insieme
di punti o nodi, connessi da segmenti orientati (cioè dotati di un verso di percorrenza)
e tale che esiste un solo nodo (detto radice) al quale non arriva nessun segmento. Se
esistono dei nodi dai quali non parte nessun segmento, essi sono detti nodi terminali o
foglie. Per associare un albero ad un processo di soluzione di un problema come quello
che abbiamo visto è sufficiente associare ogni singolo passo della ricerca con un nodo.
Figura 1 - Il grafo ad albero che rappresenta il processo di ricerca di una soluzione

La ricerca di una soluzione corrisponde alla esplorazione dei percorsi che legano i
nodi dell’albero finché non si raggiunge un nodo foglia che rappresenta lo stato finale
o obiettivo della ricerca.

Ci sono due cose interessanti che possiamo capire grazie a questo modo di
rappresentare la ricerca della soluzione di un problema. In primo luogo esso può
essere applicato a moltissimi problemi di ambito diverso. Ad esempio potremmo
rappresentare allo stesso modo la ricerca del migliore investimento da fare in borsa. O
la scelta della mossa migliore durante una partita di scacchi. In secondo luogo ci
accorgiamo che è possibile seguire diverse strategie nella ricerca delle soluzioni di un
problema, ovvero diversi modi di esplorare l’albero.

Le due principali sono la ricerca in profondità (depht-first) e la ricerca in ampiezza


(breath-first). Nella ricerca in profondità ogni percorso viene esplorato
sistematicamente (in genere a partire da sinistra) fino ad arrivare ad una foglia. Se
non si è trovata una soluzione si torna indietro fino alla prima biforcazione e si ripete
l’operazione. Ad esempio nell’albero in figura la ricerca in ampiezza procederebbe in
questo modo: Prima si esplorerebbe il percorso 1-2-5-10. In caso di esito negativo dal
nodo 10 si tornerebbe al 2 per esplorare i percorsi 2-6-11 e 2-6-12. Se anche questa
ricerca avesse un esito negativo si tornerebbe fino a 1 per esplorare i percorsi
passanti per 3. Il processo continuerebbe fino al raggiungimento della soluzione. Per
contro nella ricerca in ampiezza vengono valutati prima tutti i rami che partono da un
dato nodo (ad esempio 1-2, 1-3, 1-4) e poi si scende di un livello e si ricomincia il
processo. Ciascuna di queste due strategie presenta dei lati negativi e dei lati positivi.
Per la ricerca in profondità, ad esempio, se l’albero scende per molti livelli e la
soluzione si trova in uno dei nodi alti dei rami più a destra si perde moltissimo tempo
per esplorare lunghi percorsi improduttivi. Inoltre se un percorso non arriva mai ad
una foglia (l’albero cioè è infinito) il programma continuerebbe ad esplorarlo
egualmente senza fermarsi. D’altra parte se una soluzione si trova in un nodo molto
basso, è la ricerca in ampiezza a rivelarsi inefficiente.

Un altro aspetto da considerare è che alcuni problemi (è questo il caso della


esplorazione di tutte le possibili mosse di una partita di scacchi per trovare la mossa
giusta) generano un numero enorme di nodi. In questo caso una esplorazione
sistematica lungo tutti i percorsi potrebbe richiedere tempi enormi. Per questi motivi i
ricercatori impegnati nell’ambito del problem solving e della dimostrazione automatica
hanno cercato di elaborare delle strategie di ricerca selettiva, mediante le quali un
programma potesse limitare in anticipo i percorsi da esplorare per trovare una
soluzione. Queste strategie sono denominate euristiche.

Uno dei procedimenti euristici più noti è l’analisi mezzi-fini, formalizzata da Allen
Newell, Cliff Shaw e Herbert Simon durante lo sviluppo di un programma battezzato
modestamente General Problem Solver (GPS, o ‘solutore generale di problemi’).
Nell’analisi mezzi-fini la ricerca procede in questo modo. Si prende in considerazione lo
stato iniziale del problema e il suo obiettivo, cercando di individuare in che cosa
consista la differenza. Poi si applicano una serie di regole di trasformazione per
cercare di ridurre tale differenza: questo equivale al darsi una sorta di obiettivo
parziale. Una volta conseguito l’obiettivo parziale si comincia da capo finché lo stato
del problema non coincida con l’obiettivo dato. Secondo Newell, Shaw e Simon, questo
tipo di ragionamento euristico sarebbe alla base del ragionamento umano.

In realtà il GPS, e i principi su cui era basato, si sono rivelati troppo semplicistici.
Come mette in evidenza Haugeland, due in particolare sono le idee ingannevoli 2. La
prima è la tesi che malgrado le diversità di superficie tutti i problemi, o almeno tutte le
strategie di soluzione dei problemi, siano sostanzialmente equivalenti. Ben presto ci si
è resi conto, al contrario, che ogni classe di problemi ha delle euristiche specifiche che
si applicano esclusivamente al dominio di quei problemi. La seconda è la convinzione
che la formulazione di un problema e del suo dominio nei termini formali richiesti dai
programmi di problem solving sia tutto sommato un compito semplice. Invece il vero
‘problema’ nella risoluzione dei problemi consiste proprio nel trovare il modo migliore,
più efficiente e, perché no, più elegante per formularlo.

Computer che giocano a scacchi


Molti dei nostri lettori avranno sicuramente visto il film di Stanley Kubrick 2001
Odissea nello spazio. Uno dei protagonisti del film, ricorderete, è il computer HAL
9000. HAL è un computer dotato di una stupefacente intelligenza: è in grado di
conversare amabilmente in linguaggio naturale, di esprimere giudizi su opere d’arte,
di interpretare lo stato d’animo dei suoi compagni di viaggio umani, oltre che di
governare da solo l’astronave.

In una sequenza del film, viene messa in scena una partita di scacchi: una partita
tra HAL e Dave, uno degli astronauti, che viene naturalmente vinta dal computer.
Perché Kubrick decise di inserire quella sequenza nel film? Perché la vittoria di HAL al
gioco degli scacchi poteva dare una idea assai chiara di quanto egli fosse intelligente.

Infatti il gioco degli scacchi, nella percezione comune, è considerato il gioco


intelligente per eccellenza. Sebbene si tratti di un gioco, esso richiede una elevata
capacità di ragionamento logico e una grande quantità di conoscenze. Non a caso, sin
dalle origini dell’intelligenza artificiale moltissimi ricercatori hanno speso il loro
ingegno nel tentativo di realizzare un programma che fosse in grado di giocare a
scacchi. E soprattutto che fosse in grado di giocare allo stesso livello dei grandi
maestri.

La storia degli scacchi al computer ha raggiunto il suo culmine un paio di anni fa,
quando per la prima volta un computer è stato in grado di sconfiggere il più grande
giocatore vivente, Gary Kasparov. Protagonista di questo storico risultato è stato Deep
Blue, un computer progettato e programmato nei laboratori di ricerca della IBM.
Kasparov e Deep Blue si sono scontrati due volte. Il primo match si è svolto nel
febbraio 1996. In quella occasione Kasparov riuscì a sconfiggere il suo sfidante
artificiale senza troppa fatica. Ma nella rivincita, che si è svolta nel maggio del 1997, è
finalmente avvenuto ciò che si attendeva da anni: Deep Blue è riuscito a vincere due
partite e a pareggiarne tre, battendo Kasparov.

Deep Blue è un computer particolarmente potente. si tratta infatti di una


cosiddetta macchina parallela. Come sappiamo ogni computer di norma è dotato di
una unità centrale di calcolo, o CPU, che ne rappresenta il cervello logico e
matematico. Nelle macchine parallele, come Deep Blue, i processori sono molteplici, e
lavorano tutti insieme, in parallelo appunto. Ogni singolo processore esegue una parte
dei calcoli necessaria a risolvere un problema. In questo modo si possono raggiungere
potenze di calcolo elevatissime. Nel caso di Deep Blue, inoltre, alcuni di questi
processori erano stati progettati in modo speciale per affrontare il tipo di problemi
posti dal gioco degli scacchi.

Ma perché gli studiosi di intelligenza artificiale hanno dimostrato così tanto


interesse (e hanno speso tante energie e finanziamenti) verso il gioco degli scacchi?

2 J. Haugeland, Intelligenza Artificiale, Bollati Boringhieri 1988, p. 168 e seg.


Una ragione la abbiamo già citata: si tratta di un gioco che viene considerato un
esempio tipico di attività intelligente. Dunque, riuscire a creare un computer in grado
di giocare a scacchi, e di battere un esperto giocatore umano, rappresenta un buon
successo per l’IA.

Ma ci sono almeno due altre ragioni che rendono gli scacchi così interessanti. In
primo luogo si tratta di un gioco in cui ci sono un insieme limitato di elementi distinti
(le pedine) e delle regole molto precise che specificano quali mosse si possono fare.
Ad esempio l’alfiere si può muovere solo in diagonale. Infine sappiamo con certezza
quando il gioco finisce. Un gioco come questo, come sappiamo, può essere
sicuramente giocato da un computer.

Progettare un programma che sappia giocare a scacchi, dunque, a prima vista non
è così complicato. Basta rappresentare le pedine mediante un insieme di simboli, e poi
tradurre le regole del gioco in una serie di regole per manipolare tali simboli. A questo
punto il programma è in grado di calcolare per ogni mossa tutte le possibili
contromosse dell’avversario e per ognuna di esse tutte le sue possibili contromosse, e
così via. Se il programma potesse veramente operare in questo modo riuscirebbe
senza dubbio a trovare la mossa giusta per ogni turno di gioco. Ma quante sono le
possibili mosse di un partita di scacchi?

In media per ogni turno un giocatore dispone di 35 alternative. Dunque per


valutare tutte le possibili conseguenze di un sola mossa occorre verificare 35 x 35,
cioè 1225 possibilità. Questo significa che per valutare le conseguenze dopo due
mosse bisogna analizzare più di un milione di possibilità. Per farla breve, per
prevedere con questo metodo tutte le mosse di una partita bisognerebbe valutare un
numero come 10120 possibilità. Un fenomeno di crescita come questo viene chiamato
esplosione combinatoria. Anche il computer più veloce che possiamo immaginare
impiegherebbe miliardi di miliardi di anni per fare questo calcolo: e il nostro universo
ha solo 15 miliardi anni!

Evidentemente programmare un computer in questo modo non avrebbe senso. E


soprattutto, è chiaro che un uomo che gioca a scacchi non ragiona in questo modo.
Ben presto gli studiosi che si sono applicati a questo problema si sono resi conto che
bisognava fornire al computer delle strategie di gioco che gli permettessero di limitare
il numero di mosse e contromosse da esplorare. Queste strategie non garantiscono la
certezza assoluta della vittoria: esse indicano solo le strade ragionevolmente più
interessanti per trovare la mossa giusta. Sono dunque delle euristiche per
l’esplorazione dello sterminato (praticamente infinito) albero che rappresenta tutte le
possibili mosse di una partita.

Secondo molti teorici dell’intelligenza artificiale anche un uomo dotato di un livello


poco più che minimo di conoscenza degli scacchi usa delle euristiche quando gioca. I
grandi maestri, dunque sono coloro che hanno elaborato le euristiche più efficaci.

Ma come sappiamo il ragionamento euristico ha dimostrato di avere una portata


molto più vasta. E questa è la terza ragione per cui gli scacchi hanno destato tanto
interesse. La capacità di giocare bene a scacchi può essere vista come esempio di una
capacità ben più generale: quella di affrontare e risolvere problemi complessi e di
scegliere di volta in volta le soluzioni migliori. E questa capacità fa senza dubbio parte
di ciò che chiamiamo essere intelligenti.

Va detto comunque che, anche se programmi come quello utilizzato da Deep Blue
incorporano componenti euristiche, siamo ancora molto lontani dal poter dire di aver
costruito una macchina dalla ‘intelligenza scacchistica’ paragonabile a quella di un
giocatore umano. Il punto di forza di Deep Blue – come del resto di tutti i programmi
per il gioco degli scacchi – resta infatti la capacità di calcolo, la ‘forza bruta’. Rispetto
al giocatore umano, in grado di individuare immediatamente le strategie più
promettenti e di limitare fortemente il numero di mosse analizzato, le capacità
euristiche del computer restano grossolane: quanto basta per limitare in qualche
modo l’esplosione combinatoria, e renderla compatibile con le capacità di calcolo della
macchina. Insomma, il computer è in grado di compensare la minore ‘intelligenza’ con
la capacità di analizzare un numero assai maggiore di mosse, molto più velocemente
di un uomo. La sconfitta di Kasparov indica solamente che l’equilibrio di questi due
fattori si è ormai spostato (o si sta spostando) a favore della macchina, ma non che il
computer sia diventato un giocatore dall’intelligenza scacchistica maggiore di quella di
un uomo.

I sistemi esperti
Le ricerche nell’ambito del problem solving, insieme a quelle sulla
rappresentazione delle conoscenze, sono alla base della creazione dei sistemi esperti.
I sistemi esperti rappresentano la più importante (e forse la sola vera) applicazione
dell’intelligenza artificiale che ha avuto una ricaduta pratica (anche e soprattutto a
livello commerciale).

In estrema sintesi, con il termine ‘sistema esperto’ si intende un programma che è


in grado di risolvere problemi complessi che rientrano in un particolare dominio, con
una efficienza paragonabile a quella di uno specialista umano di quel settore. Ad
esempio un sistema esperto potrebbe essere capace di fare diagnosi mediche
esaminando le cartelle cliniche (opportunamente formalizzate) di un paziente; o
potrebbe valutare tutti fattori di rischio e le prospettive di guadagno di un determinato
investimento finanziario.

Come viene realizzato concretamente un programma di questo tipo? Di norma tutti


i sistemi esperti hanno i seguenti componenti:

• una base di conoscenza specialistica su un determinato dominio, che rappresenta il


sapere necessario ad affrontare e risolvere problemi in quel campo. Ovviamente la
base di conoscenza dovrà essere opportunamente rappresentata nella memoria del
calcolatore mediante uno dei formalismi (o altri simili) che abbiamo visto nella
terza dispensa parlando di knwoledge representation;

• un motore inferenziale che sia in grado di dedurre (o inferire), a partire dalla base
di conoscenza, le conclusioni che costituiscono la soluzione a un dato problema che
rientra nel dominio. Il motore inferenziale, che è il vero cuore del programma,
funziona applicando alla base di conoscenze una serie di procedure euristiche simili
a quelle sviluppate nell’ambito del problem solving. Tuttavia nella maggior parte
dei casi alle euristiche generali si affiancano delle euristiche specifiche per
l’argomento di cui il sistema si occupa. Infatti in ogni campo specialistico un
esperto umano è in grado di escludere immediatamente e senza valutarle una
serie di opzioni che sono manifestamente improduttive;

• una interfaccia utente che è costituita da un insieme di moduli informatici grazie ai


quali un essere umano è in grado di interagire con il programma ponendo domande
e leggendo le risposte. In alcun casi l’interfaccia utente può anche prevedere dei
moduli di aggiornamento della conoscenza, che consentono agli utenti di
aggiungere nuovi elementi alla base dati originale.

Il primo sistema esperto ad essere realizzato è stato DENDRAL, sviluppato da


Feigenbaum nel 1965 e in grado di analizzare la struttura chimica delle molecole
organiche. Ma il vero punto di svolta nella storia di questi programmi è rappresentato
dalla creazione (sempre da parte di Feigenbaum insieme a Buchanan e Shortliffe) di
MYCIN, che risale al 1972. MYCIN è un sistema specializzato nella diagnosi di malattie
infettive, ed è sorprendentemente abile. Per lavorare fa ricorso ad una base di
conoscenza molto dettagliata sulla sintomatologia di tutte le sindromi infettive
conosciute, che confronta con la cartella clinica e con dati sulla storia clinica del
singolo paziente sotto esame. Inoltre le euristiche di cui è dotato gli permettono non
solo di ipotizzare una diagnosi, ma anche di dare una valutazione sul grado di
esattezza delle diagnosi (o delle possibili diagnosi) proposte.

Le tecniche impiegate per realizzare MYCIN (che ha avuto un grande successo


commerciale ed è tuttora utilizzati in moltissimi ospedali, soprattutto in ambito
statunitense) hanno dato origine ad una vera e propria famiglia di sistemi esperti:
CASNET ad esempio è un sistema esperto per la diagnosi del glaucoma; PUFF si
occupa delle malattie polmonari (le sue diagnosi si sono rivelate giuste nel 95% dei
casi); un altro medico artificiale, questa volta generico, è CADUCEUS; PROSPECTOR,
invece è un sistema esperto in grado di individuare la posizione di possibili giacimenti
minerari sulla base di dati geologici, ed è riuscito ad individuare miniere e giacimenti
per un valore di miliardi di dollari. Oltre che nell’ambito medico e in quello industriale,
questo genere di programmi si è rivelato molto utile anche nel campo
dell’insegnamento e della didattica.

Insomma i sistemi esperti costituiscono nel loro insieme una delle applicazioni
pratiche più interessanti dell’intelligenza artificiale. Tuttavia, in un certo senso, il
successo di queste applicazioni rappresenta una misura delle difficoltà incontrate
dall’intelligenza artificiale in senso forte. Un sistema esperto infatti, pur essendo molto
abile nel suo campo, non sarebbe mai in grado di applicare la sua abilità ad altri
domini: il suo è una specie di micromondo, solo un po’ più ricco di quello in cui
operava SHRDLU. E soprattutto un sistema, per quanto possa essere esperto in
medicina o geologia, non riuscirebbe mai a trovare la soluzione ad un qualsiasi banale
problema quotidiano che ciascun essere umano risolverebbe con il solo buon senso.

La questione del senso comune e il problema della cornice


Quando il progetto dell’intelligenza artificiale ebbe inizio, nella metà degli anni 50,
molti tra i suoi sostenitori si dissero convinti che entro quaranta o cinquanta anni
sarebbe stato possibile realizzare dei programmi veramente intelligenti. In realtà le
cose sono andate diversamente, e le difficoltà incontrate in questa impresa si sono
rivelate assai più profonde e radicali di quanto non ci si aspettasse. E la difficoltà
maggiore non consiste tanto nel far fare ai computer cose ‘difficili’. Come abbiamo
visto esistono computer che sanno giocare a scacchi come il più bravo giocatore
umano. Così come esistono moltissimi programmi in grado di dimostrare teoremi
matematici, o di risolvere problemi molto specialistici. Ma nessuno di essi sarebbe in
grado di comprendere i fatti più banali e ordinari della vita quotidiana, come ad
esempio andare a prendersi un caffè, o capire una barzelletta.

Ma perché è così difficile fornire ad un computer quell’insieme di conoscenze e


capacità che chiamiamo senso comune e che ognuno di noi acquisisce senza fare
alcuno sforzo? Perché oggi un computer è in grado di sconfiggere il campione del
mondo di scacchi, ma non riuscirebbe mai a districarsi in una normale situazione della
vita quotidiana?

Malgrado le apparenze, i problemi implicati dal conferimento di un barlume di


senso comune ad un computer sono moltissimi e straordinariamente complessi.
Abbiamo visto, ad esempio, che i ricercatori hanno proposto diversi modi per
rappresentare la conoscenza sul calcolatore; ma quanta informazione bisognerebbe
dare al computer per permettergli di interpretare correttamente tutte le possibili
situazioni che gli vengono presentate? Sicuramente moltissima, ma nessuno è stato
finora in grado di stabilire esattamente quale e a individuare dei sistemi per orientare
il comportamento di una macchina in situazioni reali.

Inoltre, ammesso che si riuscisse a formalizzare tutta la conoscenza del senso


comune3, ben altra cosa sarebbe fare in modo che un programma (magari in grado di
controllare un robot) si dimostrasse sempre in grado di selezionare dalla sua memoria
la conoscenza giusta per una data situazione, o di capire dal contesto quale
conoscenze implicite utilizzare per dare un senso ad un atto comunicativo. Un
problema apparentemente simile a quello della selezione delle conoscenze, ma in
realtà ancora più complesso, è il cosiddetto problema della cornice (in inglese frame
problem, ma qui il termine frame non ha nulla a che vedere con il formalismo ideato
da Minsky), sul quale si è accumulata una letteratura scientifica e filosofica
ricchissima. Per capire di cosa si tratti, usiamo una piccola storiella ideata da John
Haugeland:

C’erano una volta tre Scatole: Papà Scatola, Mamma Scatola e il piccolo
Baby Scatola. Papà Scatola stava sul pavimento al centro dello loro modesta
casetta, con Baby Scatola appollaiato sulla spalla; Mamma scatola sedeva
tranquillamente accanto alla porta. All’improvviso, sferragliando sulle sue
rotelline, entrò Cavodoro, tutta desiderosa di risolvere qualche problema. Si
guardò intorno e poi con somma cura spinse Papà scatola fino alla parete
opposta4.

Immaginiamo ora di porre queste tre domande al robot ‘intelligente’ Cavodoro:

• Dov’è ora Papa scatola?

• Dov’è ora Mamma scatola?

• Dov’è ora Baby Scatola?

Cavodoro sa perfettamente dov’è Papa Scatola perché è lei che lo ha spinto fino
alla parete. Per quanto riguarda Mamma Scatola e Baby, non avendoli toccati, il robot
presumerebbe che siano rimasti dov’erano. Il fatto è che la sua azione di spostare
Papà Scatola ha avuto un effetto collaterale: lo spostamento di Baby, poggiato sopra il
papà. Dunque per rispondere alla terza domanda il robot dovrebbe tenere conto di
questo effetto collaterale. Il problema è che i possibili effetti collaterali di una azione
sono tantissimi. Ad esempio:

• Quando si è aperta la porta Baby è caduto per lo spostamento d’aria;

• Quando si è ha aperta la porta il gatto si è spaventato e ha fatto un salto su Papà


Scatola che ha fatto cadere Baby;

• Quando si è aperta la porta la finestra si rotta;

• …
3 Un progetto con tale obiettivo è in effetti in corso. Si tratta del progetto Cyc, ideato e condotto da
Wendy Lenat dal 1984. Cyc è un programma di IA che è stato dotato di una enorme quantità di
conoscenze di senso comune formalizzate in oltre dieci anni di lavoro. Tuttavia i risultati del progetto non
sembrano per ora avere scosso più di tanto la comunità dell’IA.

4 J. Haugeland, Intelligenza Artificiale, Bollati Boringhieri 1988, p. 190


Evidentemente, anche se il robot fosse dotato delle regole necessarie per farlo,
calcolare tutti i possibili effetti collaterali di una azione sarebbe improponibile. Ma
allora, in che modo selezionare tra questo sterminato numero di conseguenze quelle
rilevanti?

Naturalmente in una situazione semplice come quella della famiglia di scatole non
sarebbe difficile dare ad un programma la capacità di tenere conto degli effetti
collaterali rilevanti (ricordate SHRDLU?). Ma nella vita reale l’impresa è molto più
complicata. Ad esempio, se entriamo in una casa e diamo una spinta al padrone di
casa, egli potrebbe reagire, oppure la moglie potrebbe chiamare la polizia, o potrebbe
arrivare un vicino e fermarci. Ogni nostra azione insomma ha una serie di
conseguenze che ci costringono ad aggiornare continuamente la nostra conoscenza. E
talvolta questi aggiornamenti sono radicali. Noi esseri umani siamo capaci di fare
queste cose senza troppa difficoltà e in pochi secondi sin dalla tenera età. Ma finora
nessuno è stato in grado di capire esattamente come questo avvenga e di
trasformarlo in una serie di regole euristiche che un computer potrebbe usare per
aggiornare nel corso del tempo le sue conoscenze sui fatti accidentali del mondo e
sulle conseguenze delle sue eventuali azioni.

Potrebbero piacerti anche