Robot pensanti: sogno o incubo?

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:

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 psichiatra.
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

Consigliati dal Club

Il sito personale del nostro presidente.
La farmacia per te!

Ghost Computer Club

Note legali

Tutti i marchi e nomi citati appartengono ai rispettivi proprietari. Ghost Computer Club è associazione senza fini di lucro legalmente riconosciuta.

I contenuti di questo sito appartengono a Ghost Computer Club.Ogni tipo di riproduzione, con ogni mezzo ed in ogni luogo, è espressamente vietata senza consenso scritto del Consiglio Direttivo del Club.