| 
Indice
Introduzione all'intelligenza artificiale
Il termine Intelligenza Artificiale
è stato coniato da John McCarthy della Stanford University durante uno storico
simposio a cui hanno partecipato altri studiosi di questa disciplina tra Marvin
Minsky e Herbert Simon.
L'Intelligenza Artificiale è una
disciplina scientifica il cui scopo è studiare i meccanismi che sono alla base
delle attività cognitive degli esseri umani come il ragionamento, la capacità di
risolvere problemi, il linguaggio, etc. e l'eventuale loro riproduzione tramite
programmi per computer. Tutto questo è nato dal fatto che molti scienziati
considerano il pensiero umano come una forma di "calcolo" e che, quindi, è
possibile riprodurlo con dei programmi per calcolatore. Anzi, alcuni di essi,
credono che, in futuro, sarà possibile dotare un computer di un'intelligenza
equivalente a quella umana.
L'Intelligenza Artificiale classica
è costituita da due discipline: la prima è l'intelligenza artificiale forte
che ritiene che un calcolatore, dotato di programmi opportuni, possa essere
dotato di un'intelligenza vera indistinguibile da quella umana. Alla base di
questa convinzione vi è la teoria che il pensiero umano sia una forma di calcolo
non troppo diversa da quella usata per risolvere un problema e quindi
perfettamente riproducibile attraverso uno o più algoritmi; la seconda è
l'intelligenza artificiale debole che sostiene che un elaboratore
opportunamente programmato sia solo in grado di simulare alcuni dei processi
mentali e non di riprodurli effettivamente. In tal caso un computer sembrerà
possedere capacità intellettive ma in realtà eseguirà solamente una serie di
operazioni pre-impostate che hanno lo scopo di fornire un risultato identico a
quello che produrrebbe il cervello umano. Entrambe le discipline
condividono alcuni concetti come il fatto che per riprodurre o simulare il
comportamento intelligente sia necessario realizzare dei programmi in grado di
elaborare delle informazioni.
Recentemente è nata una nuova disciplina,
chiamata connessionismo la quale sostiene che per riprodurre o simulare
il comportamento intelligente sia necessario replicare, tramite un elaboratore,
il funzionamento del cervello umano a livello cellulare. In tal modo si replica
il funzionamento dei singoli neuroni e si simulano le connessioni che
trasmettono le informazioni fra un neurone e l'altro. Le applicazioni reali di
questa tecnologia hanno dato origine alle reti neurali: sistemi in grado
di evolversi e di apprendere in base agli stimoli a cui vengono sottoposti
(saranno oggetto di uno dei prossimi dossier).
Un'applicazione di Intelligenza
Artificiale deve essere in grado di acquisire e rappresentare le informazioni
(la conoscenza) relative al compito da eseguire e di elaborarle utilizzando
meccanismi che possono sembrare intelligenti. L'immagazzinamento delle
informazioni e la loro elaborazione avviene utilizzando i meccanismi tipici
dell'intelligenza umana come la deduzione, l'inferenza, il ragionamento logico,
la generazione e la valutazione di ipotesi e l'apprendimento.
Nell'ambito dell'intelligenza
artificiale si possono distinguere le seguenti sottoaree principali che prendono
il nome di applicazioni di primo livello dell'IA:
-
comprensione del linguaggio naturale
parlato e scritto;
-
manipolazione di oggetti;
-
visione e riconoscimento delle forme;
-
giochi (scacchi, dama,...);
-
dimostrazione di teoremi matematici non
banali;
-
scrittura automatica di programmi per
l'elaborazione delle informazioni.
Gli obiettivi delle applicazioni di primo
livello sono il chiarimento dei meccanismi base che sottendono l'intelligenza
umana e la verifica sperimentale dei meccanismi intellettuali già conosciuti.
Esistono poi i temi centrali
dell'Intelligenza Artificiale. Essi sono:
-
ragionamento comune; risoluzione di
problemi; deduzione;
-
modelli e rappresentazione della
conoscenza;
-
sistemi di programmazione e linguaggi per
la realizzazione di sistemi intelligenti;
-
ricerca euristica.
Il test di Turing
Ma come fare per capire se un sistema è realmente intelligente? Come fare per
sapere se il sistema "ragiona" effettivamente o se esegue una serie di
operazioni predefinite? Una soluzione a questo problema è stata formulata da
Alan Turing nel 1950 ed è tuttora il metodo considerato più efficace. Turing
iniziò il saggio in cui descrisse la sua teoria con queste parole: "Mi propongo
di considerare la domanda: «Possono le macchine pensare?»" dopo di che formulò
la seguente soluzione basata su quello che viene chiamato il gioco
dell'imitazione. Al gioco partecipano tre persone estranee. Uno di
loro esegue delle domande e gli altri due, un maschio e una femmina, rispondono.
Le tre persone vengono messe in stanze separate e possono comunicare fra loro
solo tramite un terminale (all'epoca si utilizzava una telescrivente). Lo scopo
dell'interrogante e capire quale è l'uomo e qual è la donna. A questo punto
Turing afferma: "immaginiamo di mettere al posto di uno dei candidati una
macchina considerata intelligente. Se l'interrogante non è in grado di capire
qual è l'uomo e qual è la macchina allora possiamo affermare che la macchina è
realmente intelligente".
Il gioco dell'imitazione con una macchina
al posto dell'uomo è noto come test di Turing.
Il test di Turing non può affermare con
certezza che una macchina sia intelligente ma può stabilire senza ombra di
dubbio se una macchina non è intelligente. In ogni caso riesce a fornire indizi
abbastanza forti sull'eventuale intelligenza di una macchina. Questo test ha
avuto molti oppositori che hanno utilizzato programmi "presunti intelligenti"
per cercare di ingannarlo. Tali programmi, i più noti dei quali sono Eliza e
Parry, in realtà non avrebbero mai potuto superare il test ma i loro ideatori
avevano barato sulle assunzioni iniziali.
Lo psicologo e il
paranoico
Nel
1964 Joseph Weizenbaum, giovane ricercatore del MIT, realizzò un programma di
pseudo-intelligenza artificiale (in quanto non disponeva di alcuna funzione
realmente intelligente) chiamato ELIZA.
Si
trattava di un programma molto semplice che era in grado di simulare brevi
discorsi in lingua inglese (ma sono state realizzate delle versioni in italiano)
con un interlocutore umano senza avere la reale necessità di comprendere
realmente il linguaggio.
Il
programma era costituito da due componenti principali: l'analizzatore del
linguaggio e un copione: il primo aveva lo scopo di analizzare le
frasi specificate dall'utente e di comporre le risposte in modo coerente con le
eventuali domande. Il copione costituiva la "base della conoscenza" del sistema
e consentiva all'analizzatore del linguaggio di comporre frasi e domande che
consentivano un dialogo che, all'apparenza, sembrava intelligente.
Ovviamente il "dominio" del discorso era limitato ed ELIZA non era in grado di
trattare argomenti diversi da quelli ineriti nel copione. Gli argomenti di cui
era in grado di parlare erano molti ma l'esempio più famoso é stato
l'implementazione di uno psicoterapeuta di scuola rogersiniana. Questi terapeuti
cercano di interagire il meno possibile nel discorso terapeuta-paziente per
evitare di influenzare le risposte e, normalmente si limitano a ripetere le
risposte del paziente con l'aggiunta di qualche parola o di qualche domanda.
Questo era un meccanismo molto semplice da implementare sotto forma di
programma.
Un
esempio di dialogo potrebbe essere il seguente:
Eliza: Qual é il
tuo problema.
Paziente: Le
donne.
Eliza: Per quale
motivo?
Paziente: Trovano
sempre il modo ti usarti per i loro scopi.
Eliza: Puoi farmi
un esempio?
Paziente: Mia
moglie riesce sempre a convincermi a farmi fare quello che vuole.
Eliza: Riesce
sempre a convincerti a farti fare quello che vuole?
Paziente: Sí
Eliza: In che
modo riesce a convincerti?
... e
cosí via....
Il
programma venne testato da parecchie persone tra cui diversi pazienti reali e
diversi terapeuti. La maggior parte di essi credeva di avere a che fare con un
vero psiachiatra. Sembrava quindi che il programma avesse superato il Test di
Turing.
Successivamente Weinzenbaum scrisse un secondo programma, chiamato Parry, che
simulava il comportamento di un paranoico utilizzando gli stessi algoritmi di
Eliza.
Il
programma fu testato da diversi psichiatri che ebbero l'impressione di trovarsi
realmente di fronte ad un paziente reale. Anche in questo caso si pensò che
il programma avesse superato il Test di Turing.
Fu pure
progettata una seduta psichiatrica fra Eliza (il terapeuta) e Parry (il
paziente): i due programmi iniziarono a dialogare fra loro senza problemi
simulando un dialogo che ai testimoni dell'impresa sembrava reale.
Tali
programmi erano realmente intelligenti? NO! In realtà i due programmi non
avrebbero mai potuto superare il Test di Turing che non pone limiti agli
argomenti da trattare. Gli interlocutori umani di Parry ed Eliza venivano
ingannati dall'ambito del problema (una seduta psichiatrica) e non pensavano,
per tale motivo, a porre domande su argomenti diversi da quelli proposti dallo
sperimentatore. In tal caso, né Parry, né Eliza avrebbero superato il test.
Rappresentazione
della conoscenza
Ogni
programma di Intelligenza Artificiale ha i suoi metodi e i suoi formalismi per
rappresentare le informazioni necessarie per il suo funzionamento. Gli studiosi
della comprensione del linguaggio e della visione artificiale (riconoscimento
delle forme, guida automatica,...) sono stati i primi a comprendere che per
realizzare sistemi intelligenti era necessario immagazzinare enormi quantità di
informazioni. Oltre alla quantità di memoria necessaria, che per l'epoca era
quasi fantascientifica oltre che costosa, vi era la necessità di comprendere in
che modo la base della conoscenza fosse in grado di evolvere basandosi sulle
esperienze calcolate in precedenza dal programma.
Per
molto tempo gli scienziati hanno discusso se fosse meglio rappresentare le
informazioni sotto forma di asserzioni o sotto forma di procedure. Ad esempio in
che modo rappresentare il concetto di un cerchio? La rappresentazione sotto
forma di asserzioni descriverebbe il cerchio come l'insieme dei punti che lo
compongono. Sarebbe quindi necessario memorizzare le coordinate di tutti i punti
che sullo schermo o su un foglio di carta rappresentano questa figura
geometrica. La rappresentazione procedurale consiste invece nell'algoritmo di
tracciatura del cerchio. Si dovrebbe quindi memorizzare l'equazione della
geometria analitica che lo descrive e il procedimento da attuare per disegnarlo.
Ultimamente si è scoperto che l'unione delle due rappresentazioni, normalmente,
fornisce i risultati migliori.
Si sono
pensate, quindi, diverse strutture dati da utilizzare per rappresentare le
informazioni, la maggior parte delle quali basate sulle strutture informatiche
già esistenti quali gli alberi e i grafi. Tra le rappresentazioni più note ci
sono le reti semantiche che hanno lo scopo di rappresentare in una struttura ad
albero i concetti e i significati di frasi e testi. Esse sono state il mezzo di
rappresentazione principale per le applicazioni di comprensione dei testi e di
analisi lessicale. Altri programmi hanno pensato di introdurre le informazioni
in strutture testuali standard, come i frame di Minsky, raggruppate poi fra loro
con link che simulano un grafo.
Tali meccanismi sono molto
complessi e, per essere trattati in modo esaustivo, richiederebbero un libro
intero. Per tale motivo in questo dossier vengono solo menzionati. In ogni caso
se tali argomento desteranno un certo interesse potranno essere trattati ad un
livello superiore nei prossimi dossier.
Sistemi esperti
Un sistema esperto è un sistema software
in grado di risolvere dei problemi all'interno di un dominio limitato con
prestazioni simili o superiori a quelle di un esperto umano. L'applicazione dei
sistemi esperti è molto utile in quei casi dove il dominio, cioè l'ambito di
utilizzo del sistema, è mal strutturato ed è complesso e quindi il
"ragionamento", visto come deduzione o induzione logica, è
essenziale.
Le figure professionali coinvolte nello
sviluppo di un sistema esperto sono l'ingegnere della conoscenza,
che in collaborazione con l'esperto del dominio provvede a realizzare le
due basi di dati e a creare l'insieme delle regole per il motore inferenziale.
L'ingegnere della conoscenza è una figura professionale nuova che opera in
campi in cui l'automazione è difficile, lavora con problemi mal strutturati e
deve conoscere bene le tecniche tradizionali di programmazione (principalmente
per costruire l'interfaccia con il mondo esterno). Egli sviluppa i contenuti
informatici e gli algoritmi di supporto. L'esperto del dominio descrive la base
della conoscenza e crea tutte le regole necessarie per descrive il dominio del
problema e i percorsi necessari per trovare una soluzione.
A queste figure professionali si aggiunge
l'utente che fornisce al sistema esperto, costituito dalla base di
conoscenza e dalle procedure informatiche costruite dall'ingegnere della
conoscenza e dall'esperto del dominio, la specifica dell'obiettivo e che riceve
la soluzione del problema (se questa esiste).
Un sistema esperto è composto
essenzialmente da tre moduli:
1 - un motore inferenziale, cioè
un modulo in grado di eseguire deduzioni e derivazione logiche in base a una
serie di assunzioni iniziali e in base ad una serie di regole da applicare al
problema. Esso è composto da algoritmi generici (detti meta-algoritmi) che sono
in grado di costruire l'algoritmo specifico per la soluzione del problema in
esame.
2 - un meccanismo di spiegazione
che ha lo scopo di spiegare in modo corretto i risultati ottenuti dal motore
inferenziale.
3 - un'interfaccia con l'utente che
ha lo scopo di mettere in comunicazione il software con l'utilizzatore. E'
costituita dagli algoritmi che consentono all'utente di sottoporre il problema
al sistema esperto e di ricevere da questo la soluzione.
Il sistema esperto dispone normalmente di
due basi dati denominate basi della conoscenza costruite tramite i
meccanismi per la rappresentazione della conoscenza descritti nel capitolo
precedente. Esse sono la conoscenza sul dominio che può essere
paragonata alla memoria a lungo termine di un cervello umano (long term memory
- LTM) e la conoscenza sul caso in esame che può essere paragonata alla
memoria a breve termine degli esseri umani (short term memory - STM).
La conoscenza sul dominio è costituita
dalla rappresentazione di una serie di conoscenze elementari, formalizzate con
tecniche descrittive (schede testuali tipiche dei sistemi esperti), che
descrivono un'area applicativa (il dominio) all'interno della quale verranno
formulati diversi problemi da risolvere.
La conoscenza sul caso in esame è
costituita dalla descrizione di uno specifico problema appartenente alla classe
dei problemi descritti dalla conoscenza sul dominio. A partire da questa
descrizione, il motore inferenziale, navigando fra le regole descritte dalla
conoscenza sul dominio cercherà una o più soluzioni del problema.
L'obiettivo del sistema esperto è quello
di simulare, almeno in parte, il processo di ragionamento seguito dall'esperto
umano e di suggerire all'utente una conclusione invocando la parte di conoscenza
generale rilevante per il caso in esame e applicando su di essa, tramite il
motore inferenziale, le opportune regole di deduzione.
Il motore inferenziale è costituito dalle
seguenti componenti:
1 - meta-algoritmi di ricerca
associativa: hanno il compito di estrarre dalla base della conoscenza sul
dominio degli elementi utili alla costruzione dell'algoritmo risolutivo del
problema. Questi algoritmi forniscono la risposta alla domanda "Quale
conoscenza mi serve per risolvere il problema?".
2 - meta-algoritmi di ricerca
comparativa: hanno il compito di trovare la giusta sequenza e la modalità
di applicazione delle informazioni estratte dagli algoritmi di ricerca
associativa. Essi forniscono la risposta alla domanda "Come posso
utilizzare la conoscenza che ho a mia disposizione per risolvere il
problema?".
3 - meta-algoritmi di apprendimento:
hanno lo scopo di far evolvere, modificandone il funzionamento, i meta-algoritmi
di ricerca associativa e i meta-algoritmi di ricerca comparativa sulla base
dell'esperienza che il sistema ha acquisito. Un sistema esperto, quindi,
"impara" durante il suo funzionamento e le informazioni acquisite per
la soluzione di un problema vanno ad aumentare la conoscenza del dominio in modo
da essere riutilizzate in futuro per la soluzione di altri problemi.
Alcuni esempi di utilizzo dei sistemi
esperti sono la diagnosi di malattie, il monitoraggio di sistemi di sicurezza,
la pianificazione di attività, la gestione di informazioni.

Conclusioni
Le applicazioni dell'intelligenza
artificiale sono molteplici. Si va dalla gestione automatica di sistemi robotici
(che saranno il tema di uno dei prossimi dossier) fino al controllo automatico
delle sonde spaziali. Gli scienziati hanno capito che, con la tecnologia
attuale, è impossibile implementare, in modo informatico, l'equivalente di
un cervello umano ma gli studi sulle reti neurali e sulle tecnologie
dell'intelligenza artificiale fanno pensare che in un futuro lontano la
creazione di macchine dotate di capacità cognitive sempre più raffinate non sarà
più fantascienza.
Riferimenti
-
Bernstein, J., Uomini e macchine intelligenti,
Adelphi, Milano 1990
-
Dreyfus, H. L., Che cosa non possono fare i computer.
I limiti dell’intelligenza artificiale, Armando, Roma 1988
-
Lolli, G. (a cura di), Mente e macchine, «Le
Scienze quaderni», n. 66, giugno 1992
|