Intelligenza artificiale

 

Collegamenti utili gratuiti

 

    Intelligenza artificiale

 

  • Macchine intelligenti

  •  

  • Prima dispensa

  •  

  • Che cosa è l’intelligenza artificiale

     

  • Introduzione

    Talvolta, quando ci mettiamo di fronte ad un computer e lo osserviamo mentre esegue i suoi compiti, può accadere di avere l’impressione che esso sia dotato di una specie di intelligenza. Tuttavia sappiamo che questa impressione è sbagliata. Un computer, infatti, non fa altro che eseguire una sequenza di istruzioni, esplicitate in un programma, in maniera meccanica. Senza dubbio esistono programmi che possono eseguire operazioni molto complicate. Persino un comune programma di videoscrittura può avere centinaia o migliaia di comandi, alcuni dei quali possono apparire, specialmente all’occhio di un utente inesperto, incomprensibili. Ma appena si acquista un po’ di confidenza qualsiasi programma, per quanto complicato, perde tutta la sua aurea di mistero. Non a caso il computer viene considerato dalla maggior parte della gente solo un utile strumento. E sicuramente nessuno riterrebbe che uno strumento, per quanto complesso, sia dotato di intelligenza. D’altra parte nella considerazione generale nemmeno gli esseri viventi più vicini a noi, come i cani, i gatti o le scimmie, vengono ritenuti in possesso di vere e proprie capacità intellettive.

    A questo punto dobbiamo affrontare un piccolo excursus filosofico (non sarà l’unico, ma il tema lo richiede). Nella considerazione comune l’intelligenza umana rientra tra quei fenomeni che trascendono il mondo fisico e le sue leggi. Anche coloro che non professano alcuna credenza religiosa raramente sono disposti ad accettare l’idea che il pensiero, la coscienza, il ragionamento possano essere spiegati mediante qualche tipo di teoria scientifica. La formulazione più esplicita (e famosa) di questa credenza la dobbiamo al filosofo Cartesio, vissuto nel ‘600. Egli infatti, pur essendo stato uno dei fondatori del moderno pensiero scientifico, quando arrivò a trattare il problema della ragione umana non volle estendere anche ad essa la sua concezione meccanicista. Sostenne così che la mente e la realtà materiale sono fatti di due sostanze diverse, e che rispondono a leggi del tutto diverse.

    Questa visione, che prende il nome di dualismo, esercita tuttora un fascino notevole e, come abbiamo rilevato, è condivisa anche a livello di senso comune. Essa tuttavia va incontro ad una grossa difficoltà: se la mente è irriducibilmente separata dalla materia (e dunque dal corpo), come è possibile che queste due entità interagiscano? Il fatto che l’interazione esista è innegabile: quando io penso di avere fame e decido di voler mangiare il mio corpo si alza, va in cucina e mangia. La causa del movimento del mio corpo, dunque, è un mio pensiero. Ma come può una sostanza immateriale esercitare una azione causale su una sostanza materiale? Lo stesso Cartesio si rese conto di questa difficoltà, e cercò di trovare una spiegazione, senza molto successo.

    A questo punto non restava che accettare un atto di fede (mente e corpo interagiscono, pur essendo distinti, in virtù di un processo misterioso e inspiegabile) o risolvere il dualismo in un senso o nell’altro. Alcuni filosofi scelsero di negare (in vari modi) l’esistenza autonoma (o l’attingibilità) della realtà, dando vita alla tradizione filosofica che prende il nome di idealismo. Altri pensatori invece, cercarono di elaborare una teoria della mente che fosse compatibile con le leggi della realtà materiale. Non possiamo soffermarci sulla evoluzione di questa complessa vicenda intellettuale, durata oltre quattrocento anni. Tuttavia su una cosa ci preme attirare l’attenzione dei nostri pazienti lettori: una delle idee ricorrenti in molti pensatori della tradizione meccanicista è che il pensiero (per la precisione il ragionamento, ma ai nostri fini non fa differenza) sia in ultima analisi una forma di calcolo che la mente effettua manipolando qualche tipo di simboli, o idee.

    Questa idea (che abbiamo espresso in una forma assai semplificata) pur non essendo immune da problemi teorici e aporie, ha attraversato la tradizione culturale occidentale fino alla metà del nostro secolo, quando si è incontrata con la nascente scienza dei calcolatori. Un incontro decisivo: i computer infatti dimostravano che una macchina materiale era in grado di effettuare calcoli, anche molto complessi, senza fare appello a nessuna sostanza o influenza misteriosa o spirituale. Possiamo dunque chiudere questa nostra (prima) parentesi filosofica e ritornare al nostro argomento iniziale.

    Abbiamo detto che quando attribuiamo intelligenza ad un computer che esegue un comune programma, in realtà siamo preda di un abbaglio. Ma se fosse corretto identificare il pensiero con una qualche forma di calcolo, non vi sarebbe alcuna ragione di principio che impedirebbe di sviluppare programmi tanto complessi e potenti da dotare veramente la macchina di un comportamento ‘intelligente’. Anzi potremmo anche spingerci oltre: non esiste nessuna ragione di principio per cui un computer non possa avere una mente intelligente in tutto e per tutto uguale a quella di un essere umano. Per conseguire tale obiettivo ‘basterebbe’, per così dire, capire che genere di calcoli sono alla base della nostra mente, e trasformarli in programmi per un computer. A partire dagli anni 50, con l’emergere della nuova disciplina chiamata intelligenza artificiale, alcuni scienziati e ricercatori si sono posti esattamente questo obiettivo.

    Cosa è l’intelligenza artificiale

    Prima di procedere con la nostra trattazione riteniamo opportuno fissare (nei limiti del possibile) alcuni termini di base. Cominciamo proprio con ‘intelligenza artificiale’. Di norma questo termine (che viene comunemente contratto nell’acronimo ‘IA’) viene utilizzato per designare una disciplina scientifica (talvolta considerata una branca della più generale scienza dei calcolatori) il cui obiettivo può essere definito l’indagine sui meccanismi soggiacenti alle facoltà cognitive degli esseri umani (come il linguaggio, il ragionamento, la capacità di risolvere problemi, la percezione) e la loro riproduzione mediante computer opportunamente programmati . Il primo ad usare l’espressione ‘artificial intelligence’ per indicare questo genere di ricerche è stato John McCarty, durante uno storico convegno che si tenne nella città statunitense di Dartmouth nel 1956. Non di rado lo stesso termine viene usato per indicare la capacità di un computer o di un programma di eseguire compiti intelligenti, o per qualificare un programma dotato di tali capacità (ed esempio nell’espressione ‘programma di intelligenza artificiale’).

    Con il passare degli anni la disciplina designata come ‘intelligenza artificiale’ ha subito una divisione in due aree, che si distinguono in relazione al senso del termine ‘riproduzione’ che abbiamo usato nella precedente definizione.

    La prima area è la cosiddetta ‘intelligenza artificiale forte’, la quale ritiene che un computer opportunamente programmato possa veramente essere dotato di una genuina intelligenza, non distinguibile in nessun senso importante dall’intelligenza umana. Come scrive John Haugeland: “La «IA» vuole solo originali: macchine dotate di mente in senso pieno e letterale” . Alla base di questa concezione vi è la teoria che anche la mente umana sia il prodotto di un complesso insieme di procedimenti di calcolo, eseguiti dal cervello. Resta naturalmente da stabilire rispetto a quale livello di descrizione cervelli e computer possano essere considerati la stessa cosa (escludendo, almeno per  ora, il livello dell’hardware!); nondimeno i sostenitori dell’IA forte sono convinti che un tale livello debba esistere. Questa area dell’IA è l’erede diretta della tradizione filosofica cui accennavamo nella premessa.

    La seconda area, per contro, viene chiamata ‘intelligenza artificiale debole’. Essa sostiene che un computer opportunamente programmato possa solamente simulare i processi cognitivi umani (o alcuni di essi), nello stesso senso in cui un computer può simulare il comportamento di un evento atmosferico, o di una fissione nucleare (nessuno direbbe che un computer che simula una tempesta è una tempesta!). In questo caso dunque l’accento viene posto su ciò che un programma è in grado di fare, senza fare assunzioni sul fatto che il modo in cui lo fa coincida ad un qualche livello con i processi mentali umani. E d’altra parte non si pretende che un programma, per quanto complesso ed efficiente, possa veramente dirsi un esempio di ‘mente’. Ovviamente i sostenitori di questa forma di IA sono interessati anche alle molte applicazioni pratiche delle tecnologie che vengono sviluppate nella loro disciplina.

    Le due declinazioni dell’intelligenza artificiale, pur differenziandosi profondamente rispetto agli assunti filosofici di base e alle finalità, condividono metodologie, strumentazioni e tecnologie. In particolare entrambe sostengono che per riprodurre e/o simulare un comportamento intelligente al computer sia necessario elaborare informazione (rappresentata da simboli discreti) mediante un programma . In questo senso esse costituiscono quella che viene chiamata ‘intelligenza artificiale classica’ (o più scherzosamente ‘Good Old Artificial Intelligence’, cioè ‘Buona vecchia intelligenza artificiale’).

    Ad essa si oppone una scuola più recente, che parte da presupposti teorici affatto diversi: per ottenere un comportamento intelligente mediante una macchina occorre riprodurre e/o simulare il funzionamento del cervello a livello cellulare. Questa area di ricerca è conosciuta come connessionismo, poiché cerca di ricostruire con strumenti informatici la fitta rete di connessioni che legano le cellule neuronali.

    Vale la pena, infine, accennare ad un’altra disciplina: la scienza cognitiva. Si tratta di una area di studi che si è venuta costituendo negli ultimi venti o trenta anni grazie alla convergenza di esponenti di varie discipline (intelligenza artificiale, linguistica, filosofia del linguaggio e delle mente, psicologia cognitiva, neuroscienze), e il cui oggetto è lo studio dei sistemi intelligenti, naturali o artificiali che siano. In un certo senso la scienza cognitiva rappresenta l’erede della IA forte, soprattutto per la concezione che i sistemi intelligenti (qualunque essi siano) siano fondamentalmente sistemi di elaborazione dell’informazione che interagiscono con un ambiente complesso. D’altra parte la compresenza di diverse tradizioni disciplinari ha fatto si che in questa nuova area si riconoscessero anche molti studiosi fortemente critici verso i fondamenti dell’IA.

    In queste e nelle successive dispense del corso ci soffermeremo su alcuni aspetti più strettamente legati alla intelligenza artificiale propriamente detta. Tuttavia i lettori che fossero interessati ad approfondire i temi qui trattati, troveranno nella bibliografia spunti relativi a tutte le aree di ricerca che abbiamo fin qui menzionato.

    I fondamenti teorici dell’Intelligenza artificiale

    La prima formulazione esplicita del fondamento teorico dell’intelligenza artificiale si può forse rintracciare nel filosofo empirista inglese Thomas Hobbes (vissuto nel 600), che nel Leviatano, il suo libro più famoso, scrisse: “Ragionare non è nient’altro che calcolare” . Con questa affermazione Hobbes intendeva dire che il ragionamento è una specie di operazione interna condotta mediante la manipolazione di quelle che egli stesso chiamò ‘particelle mentali’. Questa manipolazione, per Hobbes, era molto simile alle operazioni che si effettuavano quando si calcolavano numeri mediante un abaco. Si trattava, insomma di una serie di spostamenti delle particelle mentali eseguiti in base a regole ben precise. Le particelle mentali, infatti, erano concepite da Hobbes come dei minuscoli corpi fisici. Ma, a differenza delle palline di un abaco, non si limitavano a rappresentare numeri: potevano rappresentare molte altre cose.

    Non seguiremo oltre quello che è stato definito ‘il nonno dell’intelligenza artificiale’ nelle sue riflessioni, e nelle difficoltà in cui incorse. Infatti già da questa semplice sinossi possiamo enucleare i fondamenti teorici che sono alla base della moderna IA:

    • l’idea che il ragionamento, e in generale ogni tipo di attività della mente, sia un calcolo
    • il concetto di simbolo o rappresentazione
    • il concetto di calcolo inteso come manipolazione di simboli in base a regole
    • l’idea (implicita in Hobbes) che possa esistere qualcosa come un manipolatore automatico di simboli

    Se ci pensate, alcuni dei concetti che compaiono in queste proposizioni teoriche fanno parte del bagaglio di concetti del senso comune: calcolo, rappresentazione o simbolo sono parole che si usano abitualmente. Tuttavia in questo contesto essi assumono dei sensi ben precisi, che non sono coincidenti con l’uso comune. Varrà dunque la pena soffermarci su di essi per considerarli sotto una nuova luce.

    Il concetto di rappresentazione e di simbolo

    Cominciamo con l’analisi del concetto importantissimo di ‘rappresentazione’. Intuitivamente, tutti siamo in grado di indicare esempi di rappresentazione:

    • un quadro è una rappresentazione
    • una foto è una rappresentazione
    • una cartina stradale è una rappresentazione

    Che cosa hanno in comune questi esempi? Il fatto di essere delle cose che ci mostrano (in vario modo) altre cose, persone o luoghi. Un ritratto, ad esempio, ci mostra l’aspetto di una persona. Una cartina stradale, invece, ci mostra la disposizione delle strade in una città o in una porzione di territorio. Generalizzando possiamo dire che una rappresentazione è un oggetto che sta per, o raffigura un altro oggetto. Una proprietà interessante delle rappresentazioni è che esse non sono delle copie esatte dei loro oggetti. Tornando ai nostri esempi, un ritratto rappresenta l’aspetto di una persona, ma non il suo tono di voce, la morbidezza della pelle, o il profumo dei capelli, per non parlare del suo carattere. Una rappresentazione dunque è sempre il prodotto di un processo di selezione tra le molte (infinite) caratteristiche dell’oggetto da raffigurare, ovvero di un processo di astrazione.

    Le rappresentazioni si dividono in due classi in base al rapporto che esiste tra oggetto rappresentante e oggetto rappresentato. In alcuni casi, come per le foto, esiste una relazione fisica che determina il modo in cui l’oggetto viene rappresentato. La luce emessa dall’oggetto, ad esempio una casa, impressiona la pellicola imprimendovi sopra l’immagine. In altri casi, come per il disegno siamo noi che scegliamo come rappresentare la casa, usando delle linee verticali, orizzontali o oblique. Tuttavia tanto il disegno quanto la fotografia mantengono un rapporto di somiglianza o analogia con il loro oggetto. Questo tipo di rappresentazioni sono appunto definite analogiche.

    Ora, prendiamo il disegno di una casetta, uno di quelli fatti dai bambini. Se analizziamo il disegno ci accorgiamo che la sua forma può essere descritta come un quadrato a cui viene sovrapposto un triangolo. Chiaramente abbiamo ancora a che fare con qualcosa che assomiglia vagamente alla casa reale. Tuttavia arrivati a questo punto possiamo fare un vero e proprio salto nel processo di astrazione. Infatti grazie alla geometria analitica (inventata da Cartesio!) le figure geometriche sul piano possono essere rappresentate mediante insiemi di equazioni. E quando consideriamo queste equazioni, costruite utilizzando i simboli algebrici e matematici, ci troviamo di fronte ad una rappresentazione della casa che fisicamente non ha nulla a che fare con la casa stessa, ma che in qualche modo continua a raffigurare alcune sue caratteristiche. Questo tipo di rappresentazioni sono denominate analitiche.

    intelligenza artificiale

    Figura 1 - La rappresentazione di una casa mediante equazioni

    La rappresentazione della casa fatta mediante formule matematiche ha alcune interessanti caratteristiche. In primo luogo essa si basa su un insieme di segni ben definiti e distinti, cioè discreti (i segni dell’algebra lineare): possiamo indicare questi segni con il termine di simboli e possiamo dire che abbiamo una rappresentazione simbolica della casa. In secondo luogo questi simboli non hanno nulla a che fare con ciò che rappresentano: il fatto che siano usati per rappresentare una certa figura geometrica, che assomiglia a una casa, è frutto delle convenzioni e stipulazioni del sistema algebrico che utilizziamo, ed è da questo punto di vista arbitrario. Infine, ci accorgiamo facilmente che questi stessi simboli possono essere usati per rappresentare altri oggetti: ad esempio una scatola o un televisore. Basta che ci mettiamo d’accordo prima su che cosa vogliamo rappresentare, e sul significato dei simboli utilizzati.

    Se ci pensiamo bene, anche le parole di una lingua possono essere considerate rappresentazioni simboliche in questo senso. Se prendiamo una parola, ad esempio «gatto», ci accorgiamo che è composta da una sequenza di elementi distinti chiaramente l’uno dall’altro: i singoli caratteri dell’alfabeto . Possiamo dire che si tratta di un simbolo composto. Noi usiamo questo simbolo per parlare e scrivere sui gatti e ci capiamo perfettamente. Ma la parola «gatto», per quanto ci mettiamo a guardare, non mostra alcuna somiglianza con alcun gatto reale. Come i simboli matematici, anche i simboli della lingua rappresentano ciò che rappresentano in virtù di una convenzione.

    Il calcolo come manipolazione di simboli e i sistemi formali

    Torniamo a considerare la rappresentazione di una casa per mezzo di equazioni lineari. Molti di voi sapranno che grazie alle regole dell’algebra possiamo usare queste equazioni per calcolare ad esempio l’altezza della casa o la sua superficie. O meglio, per calcolare l’altezza o la superficie delle figure geometriche che rappresentano la casa. Ma che cosa facciamo quando effettuiamo questi calcoli? Di norma scriviamo su un pezzo di carta delle formule iniziali (le nostre equazioni), poi iniziamo a riscriverle trasformando i simboli che le compongono in base a regole ben precise. Che tipo di trasformazioni applichiamo? Spostiamo un simbolo da una parte ad un’altra della formula; introduciamo nuovi simboli o ne cancelliamo di esistenti. Tutto questo finché arriviamo a scrivere una formula che costituisce il risultato dei nostri calcoli. Quando si calcola dunque non si fa altro che manipolare, nel senso che abbiamo visto, simboli (eventualmente raccolti in formule) in base a regole esplicite. A ben vedere, potremmo anche non sapere niente dell’algebra, della risoluzione delle equazioni o dei sistemi di equazioni: basterebbe disporre di un manuale che ci dicesse che tipo di trasformazioni possiamo applicare in una determinata situazione, e saremmo in grado di calcolare.

    Questo modo di considerare il calcolo, che potrebbe sembrare piuttosto limitativo, si dimostra invece una estensione notevole della nozione di calcolo del senso comune. Essa infatti ci consente di far rientrare nel dominio dei calcoli una serie di fenomeni che normalmente non vengono considerati tali. Per capire che cosa intendiamo con questa affermazione prendiamo, ad esempio, un gioco banale come il tris. Come ognuno di voi saprà, nel tris due giocatori scrivono a turno uno dei due simboli (di norma una crocetta e un pallino) su una scacchiera composta da nove caselle. Per ogni turno di gioco ciascun giocatore può scrivere il suo simbolo in una qualunque delle caselle, purché sia libera. Lo scopo del gioco è allineare tre simboli eguali sulla scacchiera in verticale, orizzontale o diagonale; in alternativa il gioco finisce quando tutte le caselle sono state riempite. Se analizziamo questo gioco ci accorgiamo che abbiamo:

    • due simboli che si distinguono per la loro forma
    • una posizione iniziale del gioco: nel nostro caso, la scacchiera vuota
    • una regola precisa che ci dice per ogni singolo turno del gioco quali sono le mosse consentite. La regola è semplicissima: è possibile scrivere il proprio simbolo su ogni casella che non sia occupata
    • un insieme di posizioni finali che dicono quand’è che una partita finisce, e chi ha vinto.

    Giocare un gioco come il tris, dunque, corrisponde ad effettuare un processo di calcolo nel senso che abbiamo visto sopra. Per verificarlo proviamo a trasformare il gioco del tris in questo modo: rappresentiamo le caselle della scacchiera usando le nove cifre della numerazione decimale; la prima casella in alto a sinistra diventa ‘1’, la seconda ‘2’ e così via. Per i caratteri che vanno scritti nella scacchiera potremo usare i simboli ‘X’ e ‘Y’. Infine, per indicare in quale casella è stato inserito un carattere scriveremo prima il simbolo del carattere poi la cifra della casella, in questo modo: ‘X1’ significa che la X è stata scritta nella prima casella in altro a sinistra.

    intelligenza artificiale

    Figura 2 - La traduzione del tris in un sistema formale

    Il gioco consiste nello scrivere per passi successivi una sequenza di coppie simbolo/cifra con il vincolo che ogni cifra può essere usata solo un volta, e in due coppie adiacenti simbolo/cifra non deve comparire due volte lo stesso simbolo (quest’ultima condizione corrisponde al fatto che i due giocatori devono alternarsi nell’effettuare le loro ‘mosse’). La partita finisce quando si verifica una di queste due condizioni:

    • nella sequenza di coppie uno dei due simboli di carattere compare, in qualsiasi ordine, insieme alle cifre delle seguenti terne: (1 – 2 – 3), (4 – 5 – 6), (7 – 8 – 9), (1 – 4 – 7), (2 – 5 – 8), (3 – 6 – 9), (1 – 5 – 9), (3 – 5 – 7);
    • la sequenza è costituita da nove coppie.

    Cominciamo a giocare. Al primo passo scriviamo X1. Al secondo passo introduciamo Y9, ottenendo X1Y9. Al terzo passo introduciamo X5, ottenendo X1Y9X5. Andando avanti per sei passi possiamo trovare questa sequenza: X1Y9X5Y8X6Y7. Bene, il gioco è finito: infatti il simbolo Y in questa sequenza si trova associato ai numeri di una delle terne che avevamo elencato sopra. Se volete potete trasformare questa sequenza nella corrispondente situazione della scacchiera: verificherete che ci saranno tre Y in sequenza nell’ultima riga!

    L’esempio che abbiamo fatto è piuttosto banale, ma ci permette di capire in che senso la nozione di calcolo, intesa come manipolazione di simboli in base a regole è una nozione molto vasta. Essa infatti descrive il funzionamento di tutti quei sistemi che operano in base ad un insieme (finito) di elementi di base formalmente distinti e ad un insieme (finito) di regole che specificano le possibili trasformazioni di quei simboli. I sistemi di questo tipo sono denominati sistemi formali. Un’altra conseguenza che possiamo trarre dal nostro esempio è che i sistemi formali (tra cui il tris) per funzionare non dipendono da nessuna caratteristica del mezzo con cui sono costruiti. Per giocare a tris non ha alcuna importanza di che materiale siano fatti la scacchiera e i simboli: possiamo disegnare la scacchiera su un foglio di carta; possiamo immaginare di costruire il tutto in legno come una piccola dama cinese; o possiamo trasformare il gioco come abbiamo visto, nella scrittura di una sequenza di formule.

    La classe dei sistemi formali è molto vasta. Giochi come la dama, gli scacchi, i giochi di carte, sono sistemi formali. Ma anche l’aritmetica e la logica sono sistemi formali. Secondo i teorici dell’intelligenza artificiale, infine, anche il pensiero può essere descritto come un sistema formale.

    La macchina di Turing e la teoria rappresentazionale della mente

    Se osserviamo il sistema formale che abbiamo costruito nel paragrafo precedente, notiamo che il suo funzionamento è completamente determinato dalla forma dei simboli e dalle regole di manipolazione. Non bisogna sapere nient’altro per farlo funzionare; soprattutto, non è richiesto nessun intervento creativo o intelligente. Questo vale per tutti i sistemi formali, per quanto complessi e articolati essi possano essere. Ma allora, nulla ci vieta di costruire una macchina che sia in grado di funzionare come un sistema formale.

    Naturalmente questa macchina deve essere una macchina particolare: un’automobile, ad esempio, non farebbe al caso nostro. Le caratteristiche di una macchina in grado di eseguire questo genere di compiti sono state definite in modo rigoroso dal logico e matematico Alan Turing in saggio pubblicato nel 1936 dal titolo Sui numeri computabili con una applicazione al “problema della decisione”. L’obiettivo di Turing quando scrisse questo saggio era quello di risolvere alcuni complicati problemi logici che erano di grande interesse a quei tempi.

    Ma l’interesse di questo breve scritto non consiste solo in questo. Ciò che veramente è interessante è il metodo utilizzato da Turing. In tale metodo, infatti, troviamo per la prima volta molte delle idee alla base della moderna scienza dei calcolatori da un lato e della intelligenza artificiale dall’altro. Nel suo saggio infatti, Turing immagina una specie di macchina teorica, molto semplice, che facendo delle banali operazioni doveva essere in grado compiere qualunque tipo di calcolo, di qualsiasi genere. Oggi questa macchina viene comunemente denominata macchina di Turing.

    Una macchina di Turing è costituita da un dispositivo, una specie di testina, che può scrivere e leggere simboli, ad esempio 0 e 1, su un nastro. Il nastro è diviso in celle, ognuna della quali contiene un solo simbolo, e può avere una lunghezza potenzialmente infinita. La testina, oltre a scrivere, può spostarsi a destra o a sinistra, una cella alla volta. Inoltre può assumere un certo numero di stati interni distinti.

    intelligenza artificialeintelligenza artificiale

    Figura 3 - La macchina di Turing simulata da un applet Java (disponibile all’indirizzo http://www.bvu.edu/faculty/schweller/tmachine.html)

    Il funzionamento della macchina avviene per passi successivi. Il suo comportamento ad ogni passo è determinato da regole, che tengono conto del simbolo che la testina legge sul nastro e del suo stato interno. Ad esempio: se la testina legge il simbolo 0 e si trova nello stato A, la regola potrà dirle di scrivere 1 al posto dello ‘0’ e di spostarsi a destra, passando allo stato B. Specificando opportunamente una serie di regole come questa, la macchina di Turing è in grado di calcolare moltissime cose. Di più: è in grado di svolgere tutti i calcoli che sappiamo eseguire con altri metodi. Ma non basta. Non c’è alcuna ragione per cui i simboli di Una Macchina di Turing debbano rappresentare numeri. Anzi, come sappiamo, di per sé un simbolo può rappresentare qualsiasi cosa. E se esistono delle regole che ci dicono come manipolare tali simboli in modo sensato, ebbene, una macchina di Turing può farlo.

    In effetti si può dimostrare che una macchina di Turing, dotata delle opportune istruzioni, è in grado di simulare il funzionamento di qualsiasi sistema formale. Anzi, la classe dei sistemi formali corrisponde esattamente alla classe delle funzioni che una macchina di Turing può calcolare. Potremmo anche dire che una macchina di Turing è una specie di sistema formale automatico. Inoltre, sappiamo anche che tutti i moderni calcolatori digitali sono equivalenti a una macchina di Turing, nel senso che un computer può fare tutto quello che una macchina di Turing può fare. Di conseguenza possiamo dire che un computer digitale è in grado di far funzionare (o di funzionare come) qualsiasi sistema formale.

    Non ci possiamo soffermare ulteriormente su queste considerazioni, poiché si tratta di argomenti di notevole complessità che richiederebbero una competenza specialistica. Ma quanto abbiamo detto ci è sufficiente per tornare al nostro discorso sui fondamenti dell’intelligenza artificiale.

    Infatti, se ipotizziamo che i processi che avvengono nella nostra testa quando pensiamo, ragioniamo, parliamo e capiamo possono essere descritti come sistemi formali, potremmo concludere che anche il cervello è una specie di macchina equivalente a una macchina di Turing e inter alia a un computer digitale. Questo non vuol dire che nel nostro cervello ci deve essere una testina che scrive simboli su un nastro infinito, o una CPU. Stiamo soltanto dicendo che – se partiamo da questa prospettiva - le operazioni che avvengono nel nostro cervello quando pensiamo sono manipolazioni di simboli, fisicamente rappresentati, secondo regole; detto in altri termini, sono una specie di programmi .

    Questa teoria sulla natura del pensiero viene comunemente indicata come teoria rappresentazionale della mente, e costituisce uno dei fondamenti teorici di molta parte dell’intelligenza artificiale. Infatti, se la suddetta teoria è vera, il problema di riprodurre su un computer digitale le capacità cognitive degli esseri umani si ‘ridurrebbe’ a quello di trovare le regole con cui il nostro cervello elabora i simboli mentali, e trasformarle in programmi.

    Ma non solo. Un filosofo che riteneva possibile assimilare il pensiero al calcolo lo abbiamo già conosciuto: è Leibniz, che non era un meccanicista in senso filosofico.

    In realtà la limitazione allo studio delle facoltà cognitive degli esseri umani non è condivisa da tutti i ricercatori di questa area. Sono anzi sempre più numerosi gli studiosi che si occupano di studiare le facoltà cognitive di varie specie animali.

    J. Haugeland, Intelligenza Artificiale, Bollati Boringhieri 1988, p. 9.

    Nel prossimo paragrafo torneremo con maggiore dettaglio su questi concetti.

    T. Hobbes, The Leviathan, Cap. V (tr. it T. Hobbes, Il Leviatano, Editori Riuniti 1982).

    In realtà il nostro esempio si riferisce alle parole scritte delle lingua. A essere precisi dunque ci troviamo in presenza di un duplice livello di rappresentazione: il primo è quello della scrittura che rappresenta la lingua parlata, ed il secondo quello della lingua che rappresenta oggetti o situazioni del mondo. Tuttavia i linguisti hanno dimostrato che anche il linguaggio parlato è costituito da elementi di base discreti, i fonemi, e dunque l’argomento varrebbe egualmente. Tenere conto di queste distinzioni, e delle molte considerazioni e punti di vista che potrebbero suggerire formulazioni alternative o più precise di quelle qui utilizzate, renderebbe tuttavia più complicata l’esposizione; abbiamo quindi preferito… essere un po’ generici.

    I simboli mentali, naturalmente, sarebbero diversi da quelli usati dai computer, ma per quel che concerne la loro utilizzazione nell’ambito dei processi di calcolo ciò che conta è solo la loro forma. Abbiamo visto infatti che il mezzo con cui viene costruito un sistema formale non ha alcuna influenza sul suo funzionamento.

 

Macchine intelligenti

Dispensa 2: Dalla comprensione del linguaggio alla rappresentazione della conoscenza

Introduzione

Nella dispensa precedente abbiamo supposto che per costruire una macchina intelligente sia ‘sufficiente’ trovare le regole con cui il nostro cervello elabora i simboli mentali, e trasformarle in un programma per computer. Tuttavia, se ‘guardiamo’ dentro un cervello non riusciamo a trovare qualcosa di immediatamente simile a un programma. Non abbiamo alcuna idea di come il cervello rappresenti internamente i suoi programmi, e dunque non abbiamo modo di confrontare i programmi che potremmo scrivere noi con quelli eseguiti (presumibilmente) dal cervello. Ma allora, ammesso che sia realmente possibile realizzarlo, come possiamo essere sicuri che un computer sia effettivamente intelligente?

Il test di Turing

Una possibile soluzione al problema di decidere se un computer sia intelligente o meno potrebbe consistere nel trovare una definizione precisa di ‘intelligenza’, una specie di elenco che dica: l’intelligenza è questo e quest’altro. Una volta in possesso di questa definizione potremmo prendere il computer che ‘asserisce’ di essere intelligente, e vedere se veramente presenta tutte le caratteristiche presenti nell’elenco. Sfortunatamente, tra gli studiosi dell’intelligenza (psicologi, filosofi, neuroscienziati, antropologi etc.) non vi è molto consenso su tale definizione. Ogni volta che se ne è proposta una, qualcuno è saltato sulla sedia dicendo: eh no, non avete tenuto conto di questo aspetto! Oppure: avete dato troppa importanza a quest’altro aspetto! E così via.

Una via di uscita molto elegante da questa situazione di stallo è stata proposta, ancora una volta, da Alan Turing che, tra i tanti meriti, può sicuramente esser fregiato del titolo di ‘padre dell’intelligenza artificiale’. In un articolo del 1950 intitolato Macchine Calcolatrici e Intelligenza , il grande scienziato inglese inizia proprio con questa frase: “Mi propongo di considerare la domanda: «Possono le macchine pensare?»”. Dopo avere espresso la sua scarsa fiducia nei tentativi di definizione astratti, egli propone un metodo per rispondere al quesito che si basa su una specie di gioco, il gioco dell’imitazione.

Si tratta di un gioco a cui partecipano tre persone tra loro estranee. Due di loro, di sesso opposto, sono i candidati; il terzo (di cui è indifferente il sesso) è l’interrogante. L’interrogante viene chiuso in una stanza in modo che non abbia alcun contatto, di nessun tipo, con gli altri. Lo scopo del gioco per l’interrogante è capire quale dei due candidati sia l’uomo e quale la donna. A tale fine egli può solo fare delle domande ai candidati mediante una telescrivente (oggi useremmo magari un computer collegato in rete). Scopo dei candidati invece è ingannare l’interrogante. Simmetricamente le loro risposte saranno ‘telescritte’. Questo vincolo è ovviamente dettato dalla necessità di evitare che l’aspetto, la voce, o persino la calligrafia dei candidati possano influenzare il giudizio. Ora, dice Turing, immaginiamo di mettere al posto di uno dei due candidati una macchina ‘presunta intelligente’. Se l’interrogante non è in grado di capire quale tra i suoi interlocutori sia un uomo e quale una macchina, allora possiamo asserire tranquillamente che la macchina è intelligente.

È importante che le domande dell’interrogante durante il gioco riguardino vari argomenti e abbiano un carattere generale. Infatti se chiedessimo “quanto fa 10 elevato alla 23 diviso 5” pensando che la macchina risponderebbe pressoché subito mentre l’uomo (o la donna) impiegherebbe molto più tempo, potremmo essere tratti in inganno da un trucco banale: basterebbe programmare il computer per aspettare alcuni minuti prima di rispondere a domande sui numeri. Mentre se una macchina fosse veramente in grado di superare il test rispondendo a domande sulla poesia, o sui suoi gusti gastronomici, o sull’amore, allora il successo ci dovrebbe far ammetter che essa sia intelligente.

Il gioco dell’imitazione nella versione con il giocatore artificiale è divenuto noto come test di Turing, e secondo il suoi ideatore sarebbe in grado di sostituire in tutto e per tutto la domanda astratta “Possono pensare le macchine?”. Esso è cioè un test per l’intelligenza. A dire il vero questa convinzione è stata sottoposta a diverse critiche. Ad esempio, quando nella metà degli anni ’60 una grande quantità di persone furono tratte in inganno da un semplice programma – noto come Eliza – in grado di sostenere brevi e banali conversazioni in inglese, molti ritennero che si fosse confutata l’adeguatezza del test. Tuttavia ancora oggi la maggior parte degli studiosi di intelligenza artificiale è incline a credere cha il superamento del test di Turing, opportunamente condotto, costituisca, se non una prova definitiva, almeno un forte indizio dell’intelligenza di un computer.

Il caso di Eliza il dottore e Parry il paranoico

Tra i molti programmi sviluppati nell’ambito dell’intelligenza artificiale, quello che ha goduto della massima notorietà è senza dubbio Eliza, realizzato nel 1964 da Joseph Weizenbaum, a quei tempi giovane ricercatore del MIT. Si trattava di un programma, piuttosto semplice, che simulava una limitata competenza linguistica in inglese, ma che non aveva alcuna pretesa di comprendere realmente il linguaggio. Per semplificare il suo compito Weizenbaum aveva pensato di circoscrivere notevolmente l’ambito di argomenti su cui di volta in volta il suo programma era in grado di conversare:

Siccome ogni conversazione deve avere un argomento, il programma era organizzato su due piani: il primo conteneva l’analizzatore del linguaggio, il secondo un copione. In questo modo, Eliza poteva essere messo in grado di sostenere una conversazione su come si cucinano le uova, o sulla gestione di un conto corrente bancario e così via. Ogni particolare copione permetteva a Eliza di assumere un ruolo diverso nella conversazione. Il primo copione che Weizenbaum diede ad Eliza fu quello per recitare la parte di uno psicoterapeuta di scuola rogersiana. Gli psicoterapeuti di questa scuola durante una seduta cercano di intervenire il meno possibile e, quando lo fanno, spesso si limitano a ripetere le affermazioni del paziente in forma di domanda. Si trattava dunque di un comportamento linguistico abbastanza semplice da simulare.

Una volta terminato il programma, Weizenbaum lo installò su un computer del suo istituto, e iniziò a farlo provare da varie persone, tra cui la sua stessa segretaria. Questa è la traduzione italiana di una conversazione tra Eliza, o meglio Doctor, come fu soprannominato il programma nella sua veste da psicoterapeuta, e una ragazza:

Ragazza: Gli uomini sono tutti uguali

Eliza: In che senso

Ragazza: Trovano sempre il modo di tormentarci

Eliza: Può farmi un esempio

Ragazza: Beh è il mio ragazzo che mi ha fatto venire qui

Eliza. È il suo ragazzo che l’ha fatta venire

Ragazza: Dice che sono depressa

Eliza: Mi dispiace sentire che è depressa

Ragazza: È vero. Sono infelice

Eliza: Pensa che il fatto di venire qui l’aiuterà a non essere infelice

Con grande stupore di Weizenbaum, Eliza ebbe un enorme successo. La gente che conversava con lui credeva veramente di avere a che fare con uno psicoterapeuta e provava persino sollievo dopo le sedute! Uno psichiatra, Kenneth Colby, scrisse persino che di lì a pochi anni programmi come Eliza sarebbero stati pronti per l’uso clinico. Lo stesso Colby poco dopo realizzò un programma non dissimile da Eliza, che battezzò Parry. Parry simulava il comportamento linguistico di un paranoico. E anche lui ebbe un buon successo, tanto da riuscire ad ingannare molti psichiatri che, dopo averlo intervistato via telescrivente, si dissero convinti di avere avuto a che fare con un vero paranoico. Ad un certo punto fu organizzata persino una seduta di Parry da Eliza!

Sembrava dunque che questi due programmi avessero superato il test di Turing. In realtà né Eliza né tantomeno Parry erano dotati della sia pur minima intelligenza. Si trattava in entrambi i casi di un insieme di trucchi di programmazione (ad esempio Eliza nella maggior parte dei casi prende le affermazioni del paziente e le rovescia in forma di domanda cambiando semplicemente i pronomi, cosa che in inglese, peraltro, è piuttosto semplice) che facevano affidamento sulla credulità dei loro interlocutori. E a ben vedere nessuno dei due programmi avrebbe mai superato il test nella forma in cui Turing lo aveva immaginato. Le persone che credettero veramente nelle capacità di Eliza infatti, non prestavano attenzione a ciò che il programma diceva loro, ma erano piuttosto intenti a sfogarsi. E inoltre l’ambito della conversazione era tanto ristretto da non essere valido per il test. In ogni caso, se volete provare a fare due chiacchere con Eliza o Parry potete scaricarne una versione al seguente indirizzo (utilissimo anche per il reperimento di molti altri programmi di intelligenza artificiale): http://www.cs.cmu.edu/Groups/AI/areas/classics.

L’elaborazione del linguaggio naturale

Nell’affrontare il tema dei fondamenti teorici dell’intelligenza artificiale abbiamo detto che la capacità di elaborare simboli è alla base del comportamento intelligente. L’esempio di elaborazione simbolica che in misura maggiore caratterizza gli esseri umani è senza dubbio il linguaggio verbale.

In realtà la capacità di comunicare mediante simboli non è una prerogativa della nostra specie. Tuttavia nessuna specie vivente conosciuta è dotata di un sistema di comunicazione simbolica così sviluppato e complesso come il linguaggio verbale. Secondo molti studiosi, dobbiamo proprio alla comparsa del linguaggio, avvenuta tra 100 e 200 mila anni fa, quell’enorme salto evolutivo che ha differenziato l’homo sapiens, la nostra specie, da tutte le altre specie di ominidi. Linguaggio e intelligenza, infatti, sono fenomeni strettamente interconnessi. Lo stesso test di Turing assume che un eventuale computer intelligente deve sapere comunicare mediante il linguaggio naturale, come facciamo noi esseri umani.

È dunque ovvio che sin dalle origini uno degli obiettivi principali dell’intelligenza artificiale sia stato lo sviluppo di programmi in grado di produrre e comprendere discorsi in linguaggio naturale. A dire il vero, i primi passi mossi in questa direzione furono motivati più da interessi pratici che da stimoli teorici. Infatti, alcuni fra i primi finanziamenti che arrivarono ai progetti di ricerca nell’allora nascente campo dell’intelligenza artificiale furono attratti dalla prospettiva di sviluppare dei sistemi di traduzione automatica tra varie lingue, la cui applicazione commerciale era (ed è ) evidente. Tuttavia dopo un iniziale e ottimistico entusiasmo, il compito di insegnare le lingue ai computer si dimostrò tanto complesso da far abbandonare il miraggio di un traduttore automatico. Ma le ricerche sulla elaborazione del linguaggio naturale (natural language processing) proseguirono egualmente, e ancora oggi costituiscono uno dei settori di punta dell’intelligenza artificiale, oltre ad essere divenuti oggetto di una ulteriore disciplina che si chiama linguistica computazionale.

Le grammatiche di Chomsky e l’analisi automatica del linguaggio naturale

L’elaborazione automatica del linguaggio naturale prende le mosse dalla teoria linguistica di Noam Chomsky, una delle personalità scientifiche più rilevanti del nostro secolo. In questa sede naturalmente non potremo dilungarci su tutti i complicati aspetti della teoria chomskiana, che peraltro ha subito nel corso degli anni numerose revisioni da parte del suo stesso artefice e dei suoi tanti seguaci.

In estrema sintesi possiamo dire che secondo Chomsky la capacità che ogni essere umano ha di capire e produrre frasi e discorsi nella sua lingua è dovuta ad un insieme di conoscenze presenti nella sua mente: definiamo questo insieme di conoscenze implicite competenza linguistica. È evidente che tale competenza è almeno in parte inconsapevole: infatti la maggior parte delle persone sono in grado di produrre e capire le frasi corrette, così come di individuare immediatamente gli usi scorretti della loro lingua, pur senza sapere il modo in cui questo avviene. Inoltre, sostiene Chomsky, la maggior parte di questa competenza deve essere innata: non si spiegherebbe altrimenti la velocità con cui un bambino in pochi anni riesca a parlare una lingua in modo sostanzialmente corretto semplicemente imitando chi lo circonda.

La competenza linguistica, a sua volta, si suddivide in tre componenti: competenza fonologica, competenza sintattica e competenza semantica. La prima riguarda la capacità di un parlante di produrre e capire i suoni della lingua parlata; la seconda riguarda la capacità produrre o riconoscere frasi grammaticalmente corrette; la terza riguarda la capacità di assegnare o di estrarre significato dalle frasi. Tutte queste capacità derivano dalla presenza nelle mente di un insieme di regole ben precise, che sono simili alle regole di un sistema formale.

Per vari motivi, nella loro teoria della lingua Chomsky e i suoi seguaci hanno assegnato un ruolo prioritario alla competenza sintattica. È grazie ad essa che ogni parlante è in grado di percepire immediatamente che

(a) «il gatto mangia il topo»

è una frase grammaticalmente corretta, mentre

(b) «il gatto topo il mangia»

non lo è. Come detto, questo riconoscimento è determinato dal fatto che nella formazione di una frase (o nel processo simmetrico di comprensione di una frase) vengono seguite delle regole formali che complessivamente costituiscono la grammatica di una lingua. Tali regole, che si articolano in diversi gruppi (o componenti), vengono applicate (non necessariamente in modo sequenziale) per arrivare alla costruzione di frasi corrette, o alla verifica di frasi pronunciate da altri parlanti. Il gruppo principale di regole (o componenti di base) della teoria chomskiana determina la struttura generale di una frase e dà conto del fatto che ognuno è in grado di raggruppare in modo intuitivo le parole che la compongono in gruppi funzionali detti sintagmi. Ad esempio, chiunque tende a raggruppare le parole dell’esempio (a) in questo modo: «Il gatto» - « mangia il topo». Ma vediamo, attraverso un esempio concreto, la forma che possono assumere queste regole.

F à SN – SV

SN à DET – N

SV à V – SN

DET à il

N à gatto, topo

V à mangia

Così espresse, le regole possono sembrare un po’ oscure. Ma acquistano subito il loro significato se le interpretiamo in questo modo:

  • una frase (F – nel nostro eempio, ‘il gatto mangia il topo’) consiste di un sintagma nominale (SN – nel nostro esempio ‘il gatto’) seguito da un sintagma verbale (SV, nel nostro esempio ‘mangia il topo’)
  • un sintagma nominale (SN, nel nostro esempio ‘il gatto’ oppure ‘il topo’) è costituito da un determinante (DET, nel nostro esempio ‘il’) e da un nome (N, nel nostro esempio ‘gatto’ o ‘topo’)
  • un sintagma verbale (SV, nel nostro esempio ‘mangia il topo’) è costituito da un verbo (V – nel nostro esempio ‘mangia’) seguito da un sintagma nominale (SN, nel nostro esempio ‘il topo’)
  • un determinante (DET) è un elemento del seguente insieme: (il)
  • un nome (N) è un elemento del seguente insieme: (gatto, topo)
  • un verbo (V) è un elemento del seguente insieme: (mangia)

Le regole vengono applicate per passi successivi a partire dalla prima (anche se alcune regole possono essere applicate più volte se necessario) fino ad arrivare a una regola che a destra contenga un simbolo terminale, un simbolo cioè che non può essere ulteriormente scomposto (nel nostro caso hanno questa forma le ultime tre regole): in questo modo esse generano una frase completa. Possiamo verificare senza troppi sforzi che queste regole ci consentono di generare la frase (a) e non la frase (b). Per rendercene conto usiamo la classica rappresentazione ad albero con cui di norma i linguisti rappresentano la struttura sintagmatica di una frase.

intelligenza artificiale

Figura 1 - La rappresentazione ad albero della struttura sintagmatica di una frase

Per quanti tentativi facciate non sarete in grado di generare la frase «il gatto topo il mangia». D’altra parte non potreste nemmeno generare una frase come «il gatto il topo mangia», che suona un po’ strana, ma è comunque ammissibile in italiano. Per questo alle regole generative del componente di base nelle teoria di Chomsky si affiancano altre regole che applicate alla frase standard la trasformano in diversi modi corretti (ad esempio rendono la frase passiva: «Il topo è mangiato dal gatto»).

Appare evidente che un programma non avrebbe difficoltà ad usare regole come queste per generare frasi. E simmetricamente un programma potrebbe, data una frase, analizzarla al fine di ricostruire la sua struttura e verificare se essa è tra quelle ammesse dalla grammatica: questi programmi si chiamano parser, o analizzatori sintattici, e sono alla base di tutti i sistemi di elaborazione del linguaggio naturale. Se dunque fosse possibile costruire grammatiche generative-trasformazionali (così vengono chiamate) per una data lingua, avremmo un metodo efficiente ed elegante per realizzare un programma in grado di elaborare almeno la sintassi di quella lingua. Tuttavia il compito di costruire queste grammatiche per le lingua storico naturale si è rivelato assai più improbo di quanto Chomsky non ritenesse. Attualmente esistono porzioni di grammatica abbastanza complete per varie lingue (soprattutto l’inglese), ma si è ben lontani dall’obiettivo di una formalizzazione completa.

Il problema del significato

Abbiamo visto che, almeno in teoria, è possibile realizzare un programma in grado di generare o di analizzare le frasi grammaticalmente corrette di una lingua. Ma come forse avrete capito, tale programma di fronte a una frase come «Il topo mangia il gatto» non farebbe una piega. Infatti questa è un frase grammaticalmente corretta. Tuttavia, a meno che non compaia in una favola o in un racconto fantastico, chiunque la giudicherebbe priva di senso.

Per fare in modo che un computer capisca veramente il linguaggio naturale, dunque, dobbiamo essere in grado di specificare anche il significato delle parole: la competenza semantica. A questo punto però, i problemi teorici si fanno assai più ardui. In primo luogo: che cosa è il significato? Su questo problema i filosofi hanno lungamente discusso, almeno dai tempi di Aristotele. E ancora oggi nessuno ha proposto una teoria soddisfacente di cosa sia il significato. Vogliamo far notare, per inciso, che il problema del significato è un po’ il convitato di pietra che si nasconde nell’intero edificio concettuale dell’intelligenza artificiale. Infatti, quando abbiamo detto che per la teoria rappresentazionale della mente il pensiero corrisponde alla manipolazione di simboli secondo regole, non ci siamo preoccupati di dire che cosa e in che modo questi simboli significhino. Anzi, più volte si è ripetuto che per quanto attiene alle computazioni, ciò che conta è solo la forma dei simboli e delle configurazioni di simboli, ovvero la sintassi. Ma allora come mai quando parliamo sentiamo di esprimere qualche cosa che va al di là della semplice sequenza di suoni che esce dalla nostra bocca? E come è possibile che nella maggior parte dei casi le nostre frasi si riferiscano a oggetti e a situazioni del mondo, e che gli altri possano ad esempio verificare se ciò che diciamo corrisponde alla realtà?

Al problema filosofico di specificare che cosa sia, in ultima analisi, il significato o i concetti che abbiamo nella mente sono state date diverse soluzioni, su cui non possiamo soffermarci. Tuttavia, possiamo provare a delineare, almeno nei suoi aspetti generali, la strategia che è stata seguita nel campo dell’intelligenza artificiale per dare una semantica ai computer.

Cominciamo con il significato delle parole, o significato lessicale: esso può essere descritto mediante la scomposizione in una serie di componenti più semplici, in questo modo:

gatto à oggetto+fisico+animato…

I puntini stanno ad indicare che la descrizione dovrebbe proseguire per molti (quanti?) componenti prima di esaurire il significato della parola. Naturalmente tale descrizione dovrebbe tenere conto dei casi di ambiguità, di sinonimia etc. Ma è possibile immaginare dei sistemi per farlo.

Per descrivere il significato delle frasi e le relazioni logiche tra più parole, poi, si è fatto ricorso alla logica. La logica studia il modo in cui viene condotto il ragionamento valido, ovvero il modo in cui a partire da premesse valide possono essere tratte conclusioni valide. Per fare questo, a partire dalla fine del secolo scorso i logici hanno pensato di costruire dei linguaggi artificiali formalizzati (ancora!) per evitare di incorrere nei rischi di ambiguità del linguaggio naturale. L’idea in sostanza è quella di individuare la forma logica sottostante alle frasi del linguaggio naturale (in cui essa viene in un certo senso mascherata) in un linguaggio rigoroso e soprattutto governato da regole precise. Per formalizzare le asserzioni (o enunciati) del linguaggio naturale, si è pensato di operare in questo modo: prendiamo la frase «il gatto è nero». Essa esprime una proprietà relativa ad un oggetto (animato!): l’oggetto è «gatto» e la proprietà è «essere nero». Per mettere in evidenza questa struttura potremmo riscrivere l’enunciato in questo modo:

(a) essere nero ( gatto )

L’enunciato (a) dice o predica che la proprietà «essere nero» si applica ad un oggetto e che questo oggetto è un «gatto». La parte di (a) che specifica la proprietà viene chiamata predicato; la parte che indica a chi si applica la proprietà si chiama argomento. Una volta fatta questa traduzione della frase italiana sotto forma di predicato e argomento, ci accorgiamo che il predicato «essere nero» si può applicare non solo ai gatti, ma anche a tante altre cose, come i vestiti, l’inchiostro, i capelli. Possiamo dunque generalizzare la forma (a) scrivendo in questo modo:

(b) essere nero (x)

D’altra parte la forma di questo predicato non vale solo per la proprietà «essere nero»: anche la proprietà «essere affamato» ha la medesima forma. Possiamo dunque generalizzare la forma del predicato riscrivendo (b) come:

(c) p (x)

La formula (c) esprima la forma generale di tutti i predicati che si applicano ad un solo argomento. La traduzione delle espressioni del linguaggio naturale in formule di un linguaggio formale potrebbe proseguire prendendo in considerazione asserzioni come «il gatto mangia il topo». In questo caso l’enunciato esprime una relazione tra due oggetti: la relazione «mangiare» che un soggetto (il gatto) ha con un oggetto (il topo). Siamo dunque in presenza di un predicato a due argomenti:

(d) mangiare ( gatto , topo )

Anche per questi predicati valgono le considerazioni sulla generalizzazione fatte sopra. Naturalmente la formalizzazione dei singoli enunciati non è sufficiente per dare una forma logica al linguaggio. Occorre anche formalizzare quelle parole che servono a collegare tra loro enunciati semplici per formarne di complessi come «il gatto è nero e mangia il topo». Nel linguaggio comune queste tipo di parole sono conosciute come congiunzioni: ‘e’, ‘oppure’, “se … allora”. Se ci pensiamo le congiunzioni possono essere considerate una sorta di operatori che permettono di connetter enunciati. In logica dunque le particelle del linguaggio comune sono state trasformate in operatori o connettivi: ovviamente per fare questo è stato necessario fissare il loro significato. Gli operatori logici fondamentali sono ‘AND’, che corrisponde alla congiunzione ‘e’; ‘OR’, che corrisponde alla congiunzione ‘o’ quando viene usata in senso non esclusivo (quando cioè si intende sostenere o una cosa o l’altra o tutte e due); ‘NOT’, che cattura il senso dell’avverbio di negazione ‘non’. Alla luce di questo ulteriore passaggio siamo in grado di dare una traduzione logica della frase «il gatto è nero e mangia il topo», che diverrebbe:

(e) essere nero (gatto) AND mangiare ( gatto , topo )

Oltre a escogitare un modo per formalizzare la struttura logica degli enunciati, i logici hanno anche dimostrato che – una volta accettate certe assunzioni abbastanza naturali sul funzionamento dei connettivi utilizzati per costruire enunciati complessi a partire da enunciati più semplici - la verità o falsità di enunciati complessi può essere valutata in modo meccanico a partire dalla verità o falsità degli enunciati che li compongono.

La formalizzazione logica, unita a un dizionario di termini che dia significato ai predicati e agli argomenti degli enunciati semplici, dunque, può essere usata per analizzare il significato e la verità o falsità di frasi del linguaggio naturale. Per farlo, è però necessario ‘riscrivere’ queste frasi attraverso la corrispondente forma logica. I modi in cui questa operazione viene fatta sono molti, e non possiamo soffermarci su di essi. In generale possiamo dire che il procedimento si articola in varie fasi: la prima consiste nel fare l’analisi grammaticale di una frase e nel riportarla alla sua forma standard. Questa forma standard poi viene tradotta in forma di predicati e argomenti. Infine i vari predicati e argomenti vengono ridotti in componenti di base, facendo ricorso a una specie di dizionario, in modo tale da rispettare la forma logica. La riduzione in componenti verifica anche che l’associazione di un argomento non infranga dei vincoli, espressi anche essi in forma logica. Essi ad esempio specificano che i possibili soggetti di «mangiare» sono esseri animati: un tavolo non può mangiare alcunché!

I micromondi e SHRDLU

La rappresentazione del significato basata sulla analisi logica delle frasi e sulla scomposizione in componenti dei termini lessicali, che pure comporta delle notevoli difficoltà, si è dimostrata ben presto insufficiente al fine di dotare i computer della capacità di comprendere veramente il significato del linguaggio. I problemi di questo modo di procedere sono molteplici. In primo luogo, come scegliere i componenti minimi del significato dei termini? Su questo aspetto le proposte sono state molteplici, ma nessuna si è rivelata soddisfacente.

Ma il problema più rilevante è un’altro. Prendiamo ad esempio la frase

(a) Fabio era stato invitato al compleanno di Ugo, ma quando agitò il suo salvadanaio non sentì nessun rumore

Per capire il senso di (a), che ogni parlante italiano è in grado di interpretare senza troppi sforzi, non basta conoscere il significato delle singole parole e ricostruire la sua forma logica (ammesso che sia possibile). Infatti essa sottintende una mole notevole di informazioni che non sono espresse esplicitamente dalle singole parole. Ad esempio, occorre sapere che di norma quando si è invitati ad una festa di compleanno si porta un regalo al festeggiato; che per comperare regali occorre del denaro; che alcune persone tengono i loro risparmi nei salvadanai; e che il denaro dentro il salvadanaio, in genere, fa rumore se viene scosso. Insomma, per capire il linguaggio dobbiamo anche essere in grado di collocare le frasi in un contesto di riferimento, dal quale possiamo estrapolare tutte le informazioni implicite nella frase.

Generalizzando, potremmo dire che un agente intelligente (naturale o artificiale che sia) deve possedere una dettagliata conoscenza del mondo nel quale vive per essere in grado di parlare, ragionare e, a maggior ragione, agire su di esso. A questo punto si pongono due questioni: quanto dettagliata deve essere tale conoscenza? E in che modo possiamo rappresentarla in forma simbolica?

Intorno al 1970 una serie di ricercatori pensò che per rispondere a queste domande la strada migliore fosse quella di circoscrivere e semplificare il problema generale costruendo dei programmi che avessero una conoscenza perfetta di mondi molto piccoli e semplici, o micromondi:

Un micromondo è un dominio artificiale limitato, i cui possibili oggetti, le possibili proprietà e i possibili eventi sono definiti in anticipo in modo ristretto ed esplicito. Gli scacchi, per esempio, sono un micromondo: ci sono solo un numero limitato di pezzi e mosse lecite, e tutto è chiaramente definito dalle regole. A differenza di un vero condottiero medievale, uno stratega degli scacchi non deve mai preoccuparsi di epidemie, scomuniche, malcontento fra le file dei suoi guerrieri o della comparsa di cosacchi all’orizzonte: perché nulla può accadere in un micromondo che non sia permesso espressamente nella sua definizione.

L’idea era quella di eliminare il problema del livello di dettaglio delle conoscenze (il mondo reale è veramente complicato, e le conoscenze che perfino un bambino di soli quattro o cinque anni possiede sono sterminate) per concentrarsi sul modo in cui tali conoscenze sono rappresentate e utilizzate. In un secondo momento si sarebbe passati ad estendere la conoscenza per renderla abbastanza vasta e complessa da dare conto del mondo reale.

Il più famoso tra i programmi che abitavano nei micromondi è SHRDLU realizzato da Terry Winograd all’inizio degli anni 70. Il mondo di SHRDLU è noto come mondo dei blocchi: si trattava di un ambiente costituito da una tavola su cui erano appoggiati una serie di blocchi, piramidi e scatole colorati.

intelligenza artificiale

Figura 2 - Due raffigurazioni del mondo dei blocchi di SHRDLU

Naturalmente la conoscenza che il programma aveva di questo mondo era puramente simbolica: insomma il mondo di SHRDLU era un ambiente virtuale. Tuttavia per il programma esso era un mondo a tutti gli effetti, tanto che SHRDLU era in grado non solo di parlare correntemente in inglese su di esso, ma anche di agire mediante un braccio virtuale. In sostanza SHRDLU avrebbe potuto senza problemi controllare un robot che manipolava elementi reali su un tavolo .

Grazie alla sua profonda ‘conoscenza del mondo’ SHRDLU era in grado sostenere lunghe conversazioni in inglese, eseguire i compiti che gli venivano indicati (naturalmente in modo virtuale) e perfino motivare le sue azioni. Quello che segue è un breve estratto da una delle sue conversazioni, a cui abbiamo aggiunto una traduzione in italiano:

Persona:           how many things are on top of green cubes?

            [quante cose ci sono sopra i cubi verdi?]

SHRDLU      i'm not sure what you mean by "on top of "in the phrase "on top of green cubes" . Do you mean:

1 - directly on the surface

2 - anwhere on top of?

[non sono sicuro su cosa intendi con ‘sopra’ nell’espressione ‘sopra i cubi verdi’. Intendi

  • direttamente sulla superficie
  • ovunque sopra ai cubi?]

Persona:                 2

SHRDLU:             three of them

                                   [ci sono tre cose]

Persona:                 had you touched any pyramid before you put the green one on the little cube?

                                   [avevi toccato qualche piramide prima di mettere quella verde sul cubo piccolo?]

SHRDLU:             yes, the green one

                                   [si quella verde]

Persona:                 when did you pick it up?

                                   [quando l’hai presa?]

SHRDLU:             while i was stacking up the red cube, a large red block and a large green cube

[mentre stavo mettendo l’uno sopra l’altro il cubo rosso, un blocco rosso grande e un cubo verde grande]

Persona:                 why?

                                   [perché?]

SHRDLU:             to get rid of it

                                   [per toglierlo di mezzo]

Persona:                 why did you do that?

                                   [perché l’hai fatto?]

SHRDLU:             to clean off the red cube

                                   [per liberare il cubo rosso]

Persona:                 why did you clear off that cube?

                                   [perché hai liberato il cubo rosso]

SHRDLU:             to put it on a large green cube

                                   [per metterlo su un cubo verde grande]

Persona:                 why did you do that?

                                   [perché l’hai fatto?]

SHRDLU:             to stack up the red cube, a large red block and a large green cube

                                   [per mettere uno sopra l’altro il cubo rosso, un blocco rosso grande e un cubo verde grande]

Persona:                 why did you do that?

                                   [perché l’hai fatto?]

SHRDLU:             because you asked me to

                                   [perché me lo hai chiesto]

Come potete vedere SHRDLU è in grado di considerare retrospettivamente ciò che ha fatto, e riesce anche a trovare delle motivazioni per quelle azioni che non gli sono state richieste esplicitamente ma che ha dovuto eseguire al fine di obbedire ad un comando. In altre conversazioni il programma mostra anche la capacità di imparare il significato di parole nuove che non sono presenti nel suo vocabolario, posto che esse vengano definite dal suo interlocutore mediante termini conosciuti.

Un programma come SHRDLU costituisce senza dubbio un notevole passo in avanti rispetto ad Eliza o Parry. Tuttavia non si può in alcun modo dire né che SHRDLU capisca veramente ciò che dice, né che la sua organizzazione interna sia in qualche modo una plausibile spiegazione del comportamento intelligente umano. Ad esempio SHRDLU ricorda tutto ciò che accade nel suo mondo, mentre è evidente che un essere umano seleziona le cose da immagazzinare in memoria in base a ciò che ritiene importante. Il fatto è che il mondo dei blocchi è troppo povero e soprattutto è del tutto prevedibile. SHRDLU non si deve aspettare sorprese, mentre qualsiasi creatura vivente (più o meno intelligente) ha un controllo limitato sul suo ambiente. E con tutta probabilità è proprio la necessità di migliorare la capacità di prevedere il comportamento di un ambiente ostile che ha determinato nel corso dei millenni l’emergenza di comportamenti intelligenti nella nostra specie.

La rappresentazione della conoscenza

Gli evidenti limiti di SHRDLU (e di altri suoi simili) resero ben presto evidente che la scorciatoia dei micromondi era un vicolo cieco. Se veramente si intendeva sviluppare programmi intelligenti, era necessario affrontare in modo diretto il problema di fornire alle macchine digitali una conoscenza esaustiva del mondo reale, e possibilmente anche una conoscenza di se stesse.

Proprio su questi temi, a partire dagli anni 70, si è concentrata l’attenzione di moltissimi ricercatori e studiosi di intelligenza artificiale. Ne sono derivati una grande mole di teorie relative al modo in cui la nostra mente rappresenta e organizza le informazioni sul mondo, e una altrettanto grande (se non più grande) quantità di formalismi e linguaggi specializzati nella rappresentazione della conoscenza (knowledge representation).

Le reti semantiche

Uno dei formalismi per la rappresentazione delle conoscenze più diffusi nella IA sono le cosiddette reti semantiche. La prima formulazione del concetto di rete semantica si deve a Ross Quillian, che lo elaborò nel 1968 per costruire un modello dell’organizzazione dei significati delle parole nella memoria e della capacità di associare concetti. Successivamente molti altri studiosi hanno proposto evoluzioni e potenziamenti del modello originale, senza però distaccarsi delle primitive intuizioni di Quillian.

Ma che cosa è una rete semantica? Secondo Quillian i concetti (o significati delle parole, che per quanto ci concerne possono essere considerati la stessa cosa) nella nostra mente sono organizzati in una struttura reticolare. Solo che in questa rete esistono due tipi di nodi: i nodi tipo e i nodi occorrenza. I nodi tipo corrispondono ai significati delle singole parole. Da ogni nodo tipo si dipartono una serie di collegamenti o archi che terminano nei nodi occorrenza. Questi ultimi hanno la funzione di descrivere il significato della parola in questione. Tale descrizione, come avviene nei dizionari, si basa sull’uso di altre parole che sono il contenuto dei nodi occorrenza. A sua volta ciascun nodo occorrenza è collegato mediante un arco al nodo tipo che ne specifica il significato. Insomma nella rete ogni parola deriva il suo significato da un certo numero di altre parole.

intelligenza artificiale

Figura 3 - La rete semantica di Quillian per la parola ‘food’

Inoltre gli archi che collegano i nodi specificano diversi tipi di relazione: ci sono archi che indicano relazioni di sottoclasse, o di appartenenza ad un genere: ad esempio l’arco che da «cibo» porta a «cosa». Gli archi di questo tipo sono successivamente divenuti noti come archi ‘IS A’, ovvero archi ‘è un(a)…’. Vi sono poi archi che indicano una relazione di congiunzione tra due componenti del significato di una parola. Archi che invece indicano una disgiunzione tra più significati e così via.

Appoggiandosi ad una rete semantica (opportunamente tradotta in un linguaggio informatico) un programma è in grado non solo di risolvere il significato delle espressioni lessicali, ma anche rispondere a domande come: «è vero che il cibo è una cosa che si mangia?». Infatti nella rete della figura esiste un percorso che permette di dedurre proprio questa conclusione.

I frame di Minsky

Le reti semantiche come quelle cui abbiamo accennato nel paragrafo precedente hanno due limiti. In primo luogo ogni singolo concetto è considerato come un elemento unitario. Sebbene gli archi che collegano un nodo ad un altro possano essere considerati una rappresentazione articolata del significato di un termine, questa articolazione sembra comunque troppo limitata per rendere conto di tutte le varie componenti di un concetto. In secondo luogo la specificazione del significato di un concetto è estremamente rigida: ogni concetto infatti viene descritto mediante una serie di componenti obbligatori, un po’ come avviene nelle definizioni di un dizionario.

Questo modo di rappresentare la conoscenza è inadeguato per rendere conto del modo assai rapido in cui un essere umano è in grado di accedere alle conoscenze immagazzinate nella sua memoria e di utilizzarle per ragionare, comprendere un discorso in lingua naturale o riconoscere gli oggetti e le situazioni che gli si presentano. Per capire che cosa intendiamo dire, prendiamo in considerazione la seguente frase:

(a) Fabio entrò in cucina e si mise a sedere

Ognuno di noi è in grado capire perfettamente il suo significato. A nessuno verrebbe in mente di chiedere con aria stupefatta «si mise a sedere dove?». Tuttavia se analizzassimo il significato stretto di ogni singola parola della frase, non troveremmo da nessuna parte il concetto di «sedia». Questo significa che nella nostra memoria il concetto di cucina deve avare una struttura assai più ricca di quanto non preveda un dizionario, e che questa struttura deve comprendere tra le altre cose una sorta di descrizione di una cucina standard in cui si dica (o si mostri) che in una cucina si trovano di norma una tavolo e delle sedie.

D’altra parte, se qualcuno ci dicesse:

(b) Fabio era stanchissimo ma quando entrò in cucina non trovò nulla su cui sedere

non troveremmo nulla da obiettare. Evidentemente il fatto che il concetto di cucina preveda che in una cucina ci siano di norma un tavolo e delle sedie non deve essere vincolante ai fini della comprensione. Siamo disposti a concedere che in una cucina sedie e tavoli possano anche mancare. Un fenomeno simile avviene quando ascoltiamo una frase come

(d) «Lo struzzo è un uccello che non può volare».

La proprietà di essere un «essere animato che vola» sembra essere parte integrante del concetto di uccello. Ma il fatto che (d) non sia giudicata una contraddizione (sebbene ci stupisca) mostra chiaramente che la struttura del concetto di uccello deve essere piuttosto flessibile, fino al punto da concedere che possa esistere un uccello che non può volare.

Per rendere conto di queste caratteristiche della nostra memoria concettuale, e per riprodurla su un computer, Marvin Minsky, uno dei pionieri dell’intelligenza artificiale, ha elaborato la nozione di frame (che in inglese significa struttura o cornice). Si tratta di una nozione molto simile a quella di stereotipo. Un frame infatti è una struttura che raccoglie e organizza secondo vari livelli di obbligatorietà tutte le informazioni che sembrano comporre un determinato concetto. Alcune informazioni sono considerate necessarie, altre probabili e altre solo opzionali. Ad esempio il frame per il concetto di cucina potrebbe avere questa struttura:

Cucina

                        Sottoclasse di: stanza

                        Funzioni (sempre): preparare cibo

                        Funzioni (probabile): consumare cibo

                        Ha come costituenti (sempre): pareti, soffitto, pavimento

                        Contiene (sempre): macchina a gas o elettrica oppure camino

                             Posizione (quasi sempre): a ridosso di parete

Contiene (quasi sempre): frigorifero, lavandino

                  Posizione (quasi sempre): a ridosso di parete

                        Contiene (probabilmente): tavolo

                             Posizione (probabile): centro stanza oppure a ridosso di parete

                        Contiene (probabilmente): sedie

                             Posizione (probabile): intorno a tavolo

                        Etc.

In realtà questo è un abbozzo estremamente grossolano di quello che dovrebbe essere un vero frame, che dovrebbe avere un numero assai maggiori di informazioni e che soprattutto dovrebbe specificare in modo molto più rigoroso proprietà e relazioni per essere utilizzato da un computer (e da un cervello, se esso lavora in modo non troppo dissimile da un computer). Comunque, ci permette di capire quale dovrebbe essere la sua struttura.

In primo luogo vediamo che le componenti del frame sono articolate in varie tipologie, che corrispondono alle diverse proprietà dell’oggetto reale cucina. In secondo luogo, possiamo notare come alcune componenti della rappresentazione siano qualificate come obbligatorie, altre come probabili e altre ancora come opzionali. Tutte le componenti non obbligatorie sono presenti nel frame per default: sono cioè considerate parte del prototipo di cucina fina a prova contraria.

Quando leggiamo in un testo o ascoltiamo in un discorso la parola «cucina», il frame viene richiamato dalla memoria nella sua forma standard. Se tuttavia procedendo nella lettura o nell’ascolto si riceve l’informazione che nella tale cucina non sono presenti sedie, allora la componente relativa viene cancellata. Questo non produce alcuna contraddizione, poiché il fatto di contenere sedie era una informazione per default e dunque rinegoziabile. Viceversa se si apprende che nella presunta cucina non vi sono né una macchina a gas né un camino, ma un letto, un comodino e un armadio, il frame cucina risulterebbe in contraddizione con le nuove informazioni e dunque concluderemmo che quella stanza non era una cucina ma una stanza da letto.

Un ultimo aspetto importante dei frame su cui vale pena soffermare l’attenzione è che essi sono interconnessi tra loro in un modo molto ricco e articolato. Infatti, ogni componente di ciascun frame è collegato al frame che ne descrive la struttura: il componente ‘sedia’ del frame ‘cucina’ dunque è collegato con il frame ‘sedia’, così come il componente ‘stanza’ è collegato con il frame ‘stanza’. I frame insomma costituiscono una rete di concetti . I collegamenti tra frame non sono casuali ma organizzano lo spazio concettuale in base a precise relazioni: alcune di esse sono più marcate (ad esempio le relazioni gerarchiche con i concetti iponimi e iperonimi), altre meno (ad esempio le relazioni associative o analogiche). In questo modo i frame possono essere usati per condurre sia i classici ragionamenti di tipo deduttivo, sia forme di ragionamento più complesse come l’induzione o l’analogia.

Gli script di Schank

Una nozione (e un formalismo) simile a quella di frame è la nozione di script o copione, elaborata da Roger Schank (un'altro eminente studioso nel campo dell’intelligenza artificiale) e dal suo collaboratore Abelson. Come il nome scelto per queste strutture lascia immaginare, a differenza dei frame (in cui si rappresentano oggetti o stati di cose), gli script servono a rappresentare eventi o sequenze di eventi tipici, come ‘andare al ristorante’, ‘andare dal dottore’ e così via.

Essi infatti furono sviluppati da Schank per consentire ad un programma di comprendere o parafrasare delle storie o delle brevi narrazioni. Prendiamo ad esempio la seguente storiella:

(a) Fabio andò in un ristorante. Ordinò alla cameriera una bistecca ai ferri. Pagò il conto e se ne andò.

Ora, se dopo aver letto questa storia, qualcuno ci chiedesse «che cosa ha mangiato Fabio?» senza alcuno sforzo risponderemmo «una bistecca ai ferri». Tuttavia nessuna delle frasi che compone (a) dice esplicitamente che Fabio ha effettivamente mangiato la bistecca. Evidentemente la nostra risposta è stata inferita da un insieme di conoscenze di contesto che ci dicono che di norma quando si va al ristorante e si ordina qualcosa poi lo si mangia. Ebbene, secondo Schank queste conoscenze di contesto sono organizzate proprio sotto forma di script:

… uno script è un insieme di scanalature pronte a ricevere certi eventi e non altri. Lo script usato per comprendere qualcosa ci aiuta a sapere che cosa aspettarci. Uno script dice che cosa probabilmente seguirà in una catena di eventi stereotipati. Non solo, ci permette di capire la rilevanza di ciò che di fatto succede subito dopo: garantisce il collegamento fra gli eventi.

Come vediamo la nozione di script rassomiglia molto a quella di frame, con la differenza che pone l’enfasi sul succedersi di eventi piuttosto che sulle proprietà di oggetti. Uno script infatti è costituito da una serie di scene, che specificano con estremo dettaglio la sequenza (o la concorrenza ) di eventi che sono pertinenti per ogni scena. Inoltre lo script specifica anche i luoghi, i tempi, i personaggi e gli oggetti previsti dalla storia e indica le condizioni (o motivazioni) di inizio e i risultati finali (ovvero gli obiettivi conseguiti) della storia. Alcuni script possono essere divisi in diversi ‘sotto-script’ (denominati da Schank ‘binari’) che si adattano a diverse possibili versioni della stessa storia. Ad esempio il frame ‘ristorante’ si articola in diversi binari in base al tipo di ristorante: c’è così un binario ‘fast food’, uno ‘trattoria rustica’, uno ‘ristorante di lusso’ e così via. Questo è un esempio estremamente semplificato di una parte dello script ‘ristorante’ :

Script:                   Ristorante

Binario:                 Trattoria

Oggetti:                Tavoli

                                         Menu

                                         Cibo

                                         Conto

                                         Denaro

Personaggi:     Cliente

                                         Cameriera

                                         Cuoco

Condizioni di entrata:       Il cliente ha fame

                                                     Il cliente ha denaro

Risultati:                           Il cliente ha meno denaro

                                                     Il proprietario ha più denaro

                                                     Il cliente non ha fame

                                                     Il cliente è soddisfatto

 

Scena 1: Ingresso

Entrare nel ristorante

Guardare i tavoli

Decidere dove sedersi

Andare al tavolo

Mettersi a sedere

 

 

Scena 2: Ordinazione

(menu sul tavolo)

Prendere il menu

(la cameriera porta il menu)

(chiedere il menu)

Chiamare la cameriera

La cameriera arriva al tavolo

Chiedere il menu

La cameriera dà il menu

 

Leggere il menu

Decidere (il cibo scelto)

Chiamare la cameriera

La cameriera arriva

Dire alla cameriera «Voglio (il cibo scelto)»

 

 

 

Nella seconda scena possiamo notare come in alcuni casi possano darsi diverse possibilità, che implicano a loro volta diverse sequenze di eventi. Naturalmente uno script per essere utilizzato da un programma andrebbe scritto mediante un opportuno linguaggio, e soprattutto dovrebbe essere assai più dettagliato di quanto non sia il nostro esempio. Uno dei programmi basati sul formalismo degli script è SAM (Script Applier Mechanism), sviluppato dallo stesso Schank e da un gruppo di suoi collaboratori. Esso era in grado di leggere dei brevi racconti, compresi resoconti giornalistici, e di farne un sommario in inglese e in spagnolo. Inoltre poteva rispondere in modo incredibilmente sensato a domande relative ai fatti narrati nelle storie.

Successivamente al lavoro sugli script, Schank ha elaborato un’altra serie di formalismi il cui fine era di consentire ad un programma di individuare il tema di una storia anche senza possedere nessuna sceneggiatura predefinita. Questi formalismi si basano sulle nozioni di piano e di scopo e sono state applicate nella creazione di PAM (Plan Applier Mechanism). Questo programma, analizzando le frasi di un racconto qualsiasi, era in grado di individuare le motivazioni dei vari personaggi e di prefigurare i possibili piani di azione che tali personaggi potevano cercare di metter in atto per raggiungere i loro obiettivi. Anche PAM si è dimostrato sorprendentemente efficiente ed ha rappresentato il modello di riferimento per numerosi programmi di IA sviluppati nel corso del passato decennio.

A. Turing, “Macchine Calcolatrici e Intelligenza”, in V. Somenzi e R. Cordeschi, La filosofia degli automi, Bollati Boringhieri 1996.

J. Weizenbaum, Il potere del computer e la ragione umana, Edizioni Gruppo Abele 1987, p. 22.

Ivi, p. 23.

J. Haugeland, Intelligenza Artificiale, Bollati Boringhieri 1988, p. 173.

Naturalmente la costruzione del robot avrebbe comportato molti altri problemi sia a livello software (ad esempio avrebbe dovuto essere dotato di un programma per la visione) sia a livello hardware.

Nel suo libro La società della mente (Adelphi 1989), Marvin Minsky ha ipotizzato che una rete di questo genere costituisca la struttura della memoria umana.

R. C. Schank, Il computer cognitivo, Giunti 1989, p. 123.

Tratto con qualche rielaborazione da R. C. Schank, op. cit., p. 128-129.

 

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

intelligenza artificiale

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 . 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? 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 comune , 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 opposta .

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;

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.

Sulla singolare attrazione che moltissimi ricercatori di intelligenza artificiale hanno mostrato verso il gioco degli scacchi torneremo nel prossimo paragrafo.

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

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.

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

 

Macchine intelligenti

Quarta dispensa
Le critiche all’intelligenza artificiale e i nuovi paradigmi

Introduzione

L’obiettivo di fondo della ricerca sull’intelligenza artificiale, era quello di costruire computer almeno in parte intelligenti. E questo progetto, come abbiamo già rilevato nella precedente dispensa, è andato incontro a molte delusioni. Analizzare il comportamento intelligente, e riuscire a farlo riprodurre da una macchina, si è rivelato assai più complicato di quanto non sembrasse in prima istanza, soprattutto quando si è cercato di riprodurre al computer l’intelligenza comune, quella capacità che orienta il comportamento quotidiano di ogni essere umano. I sostenitori dell’intelligenza artificiale, però, non si sono scoraggiati. Il compito di costruire una macchina intelligente, dicono, è certo difficile, ma non è impossibile, e con il tempo sarà possibile conseguire risultati soddisfacenti. A questo atteggiamento ottimistico si sono opposti diversi filosofi e scienziati, che hanno sollevato critiche radicali all’intelligenza artificiale. Tra di essi vi è il filosofo americano John Searle, che ha cercato di confutare i fondamenti teorici stessi del progetto dell’intelligenza artificiale.

La critica all’intelligenza artificiale elaborata da John Searle non è l’unica. Un atteggiamento altrettanto scettico verso questa disciplina è molto diffuso anche tra gli scienziati e i medici che studiano la struttura ed il funzionamento del cervello. Per quale ragione?

Secondo l’intelligenza artificiale il pensiero è una specie di ‘programma’ eseguito dal nostro cervello. Come un normale PC esegue il sistema operativo e i vari programmi applicativi, così il nostro cervello ‘eseguirebbe’ dei programmi per il linguaggio, per il ragionamento e così via. Per quanto riguarda i computer sappiamo che la capacità di eseguire programmi non dipende dai materiali con cui essi  vengono costruiti ma solo dalla loro organizzazione logica. I primi computer erano basati su valvole simili a quelle usate nelle vecchie radio dei nostri nonni. Quelli moderni invece si basano su piccolissimi microcircuiti stampati su una lastra di silicio. E sono già in corso degli studi per realizzare computer ‘molecolari’ o ‘quantici’.

Ma è possibile dire che il pensiero e la mente non hanno nulla a che fare con il modo in cui è fatto il cervello? Ebbene la maggior parte degli scienziati che studia il cervello sono convinti che questo non è possibile. È solo grazie alla meravigliosa e complicatissima struttura di questo organo, al modo in cui esso funziona e in cui è collegato al resto del corpo che noi esseri umani possiamo pensare. Il nostro cervello è costituito da una enorme quantità di cellule, i neuroni, collegate fra loro a formare una specie di rete tridimensionale lungo la quale si scambiano incessantemente segnali. Una rete talmente intricata che probabilmente non riusciremo mai a sapere quante possibili connessioni possa avere. Molti studiosi sono convinti che una macchina, per essere intelligente, dovrebbe simulare proprio questo incessante brulichio mediante delle reti neurali artificiali.

Collegato a questo nuovo paradigma nello studio dei sistemi intelligenti, chiamato connessionismo, c’è una disciplina consolidatasi negli ultimi dieci anni. Si tratta della ‘vita artificiale’ (artificial life, o alife) che, come potrete immaginare, affronta il tema dello studio e della simulazione informatica dei sistemi biologici e dell’evoluzione.

Searle e l’argomento della stanza cinese

Come abbiamo visto nella prima dispensa, i fondamenti teorici di molta parte dell’intelligenza artificiale sono la teoria rappresentazionale della mente e l’equivalenza formale tra cervello e macchina di Turing. Queste due teorie hanno avuto una larghissima diffusione sulla scena della filosofia della mente per oltre quaranta anni e sono tuttora sostenute, in varie forme, da molti importanti filosofi e studiosi, e in particolare dalla maggioranza dei ricercatori e degli scienziati che operano nel campo della IA.

Non sono tuttavia pochi i filosofi che vi si sono opposti strenuamente. Tra di essi uno dei più autorevoli e tenaci è il filosofo John Searle che a più riprese ha cercato di confutare l’idea che il pensiero umano sia riducibile ad una semplice elaborazione di simboli. La sua argomentazione propone fra l’altro un gioco ideale: il gioco della stanza cinese, che funziona in questo modo.

Immaginiamo di prendere una persona qualsiasi che non sappia una parola di cinese. Ora, supponiamo che la persona in questione venga messa una stanza. Nella stanza ci sono un’infinità di piccole scatole che contengono dei foglietti di carta su cui sono disegnati tutti i possibili ideogrammi della scrittura cinese. La persona nella stanza non conosce il cinese. Dunque per lei questi simboli sui fogli non sono che scarabocchi privi di significato.

A questo punto immaginiamo che insieme ai fogli con gli ideogrammi al nostro personaggio venga fornito un manuale in italiano che contiene un insieme di istruzioni come questa: se ricevi il simbolo che ha la stessa forma di quello nella scatola X allora restituisci il simbolo nella scatola Y. Anche senza capire nulla del cinese il soggetto potrebbe eseguire queste istruzioni, basandosi esclusivamente sulla forma dei simboli.

Ora, immaginiamo che fuori dalla porta ci sia una persona che conosce il cinese. Questa persona di tanto in tanto manda dentro alla stanza una serie di simboli cinesi che corrispondono a frasi perfettamente sensate. Ad esempio: “che colore preferisci?” La persona dentro alla stanza, naturalmente, non capisce questi messaggi. Tuttavia, guarda attentamente i simboli ricevuti, e cerca nel manuale se esiste una regola che li riguardi; se c’è, la esegue scrupolosamente. Supponiamo che le regole scritte sul manuale siano fatte in modo tale che la serie di simboli che la persona nella stanza estrae dalla scatola e restituisce siano riposte sensate alle domanda. Ad esempio: “Il colore che preferisco è l’azzurro”. Ebbene in questo caso la persona fuori dalla stanza sarebbe convinta di parlare con qualcuno che conosce perfettamente il cinese, anche se in realtà la persona dentro la stanza non sa una sola parola di quella lingua!

Se riflettiamo sul gioco proposto da Searle ci rendiamo conto che esso assomiglia alla descrizione funzionale di un computer. Infatti:

  • la persona nella stanza è assimilabile al computer (o al processore)
  • il manuale è il programma eseguito dal processore e scritto nel suo linguaggio macchina,
  • i simboli nelle scatole sono i dati usati dal programma per ‘rispondere’ alle domande in cinese

L’argomentazione proposta da Searle voleva appunto dimostrare questo: anche se fosse possibile trovare tutte le regole che ci permettono di parlare una lingua, di ragionare, o di fare ogni altra attività intelligente che desideriamo, comunque i computer non potrebbero mai capire veramente quello che fanno. Il problema secondo Searle consiste nel fatto che i computer manipolano i simboli esclusivamente in base alla loro forma o sintassi, ma non al loro significato, o semantica. Il significato infatti è una proprietà primaria che deriva ai simboli dal fatto di essere usati in riferimento al (o di intendere il) mondo esterno. E questa facoltà di riferimento al mondo o intenzionalità è una qualità non riducibile o spiegabile in termini puramente simbolici o sintattici. Solo un cervello fatto così e così,  collocato dentro ad un corpo dotato di certi apparati sensoriali e in grado di entrare in relazione con l’ambiente può causare i fenomeni mentali. Caratteristiche che i computer non hanno:

Il cervello è un organo biologico specifico e le sue proprietà biochimiche specifiche gli consentono di causare la coscienza e altri tipi di fenomeni mentali. Le simulazioni al calcolatore dei processi cerebrali forniscono modelli degli aspetti formali di questi processi, ma la simulazione non va confusa con la riproduzione. Il modello computazionale dei processi mentali non è più reale di quello di qualsiasi altro fenomeno naturale.

Naturalmente i fautori dell’intelligenza artificiale, o in generale della teoria rappresentazionale della mente, hanno reagito proponendo diverse controargomentazioni all’attacco di Searle. Molte di queste risposte hanno un carattere tecnico che non possiamo affrontare in questa sede. Ci limiteremo a ricordarne solo due.

La prima, un po’ paradossalmente, sostiene che sebbene la persona nella stanza non capisca il cinese, la stanza nel suo complesso sì. Detto in termini più formali, è il sistema di elaborazione nel suo complesso che gode della proprietà di essere intelligente. Esattamente come nel nostro cervello le singole cellule nervose (che, vedremo, svolgono compiti di elaborazione di informazione, anche se in modo affatto diverso dai calcolatori digitali) prese singolarmente non mostrano intelligenza, mentre il sistema cerebrale innegabilmente è intelligente. Secondo Searle, tuttavia, questa mossa teorica, che egli definisce ardita, non regge. Basterebbe una semplice modifica dell’esperimento mentale della stanza cinese per confutarla: ad esempio, potremmo immaginare che la persona imparasse a memoria le forme dei simboli e il prontuario delle regole. A questo punto essa potrebbe lavorare anche all’aperto e non ci sarebbe nessun sistema più complesso a cui appellarsi.

Una seconda serie di obiezioni alle tesi di Searle si basano su un argomento ancora più radicale. Il problema messo in evidenza dal filosofo americano è la mancanza di semantica o di intenzionalità dei sistemi formali. Ma ci si può domandare, che cosa è questa semantica? Esiste un fenomeno naturale spiegabile scientificamente che risponde alla definizione di semantica? In effetti sia la critica di Serale, sia quelle simili di altri studiosi come Richard Dreyfus, fanno appello a una facoltà primaria irriducibile e dunque non spiegabile scientificamente, se non mediante petizione di principio: le semantica esiste, e siccome un computer non ha semantica allora un computer non può essere intelligente. Ma se la semantica non esistesse come fenomeno primario? In fondo, moltissimi fenomeni fisici che sembravano determinati da proprietà irriducibili sono stati spiegati o ridotti a fenomeni fisici più semplici (si pensi alla natura della luce o del magnetismo). Dunque nulla ci vieta di immaginare che in realtà la semantica non sia altro che il prodotto osservabile di una complessa serie di interrelazioni tra processi puramente sintattici posti su vari livelli gerarchici.

E per l’obiezione che il computer è privo di corpo, basta semplicemente dotare la macchina di strumenti di percezione e di effettori (dispositivi in grado di agire sul mondo circostante), per risolvere il problema. Non a caso le recenti tendenze nel campo dell’intelligenza artificiale hanno ripreso la sperimentazione nel campo della robotica, cercando di realizzare agenti artificiali dotati di corpi meccanici strutturalmente simili a quelli degli organismi naturali.

Naturalmente il dibattito sui fondamenti (o sulle pretese, a seconda dei punti di vista) dell’intelligenza artificiale è proseguito a lungo e prosegue ancora oggi, sebbene molto dell’entusiasmo dei primi anni sia scemato. Ma una analisi approfondita di questo dibattito esula dagli scopi di questo corso. I lettori interessati potranno far riferimento ai testi citati nella bibliografia per approfondire questi aspetti.

Un nuovo paradigma: le reti neurali e il connessionismo

L’intelligenza artificiale, come abbiamo detto più volte, sostiene che le facoltà cognitive di un agente intelligente derivino dalla sua natura di ‘manipolatore’ automatico di simboli. Abbiamo visto che questo genere di sistemi, a partire dalla macchina di Turing fino ad arrivare al computer digitale, sono totalmente indipendenti dal mezzo materiale con cui vengono realizzati. Un computer può essere fatto tanto con componenti elettronici al silicio quanto con componenti meccanici (leve, ruote, alberi di distribuzione e pulegge, come la macchina di Babbage ) o elettromeccanici (come i primi computer che usavano valvole termoioniche). Ma potrebbe anche essere costituito da un semplice insieme di molecole in grado di interagire mediante reazioni chimiche, o da cellule organiche che si scambiano proteine ed enzimi . Ciò che conta in un computer è la sua struttura formale e funzionale: se in una macchina, comunque essa sia costruita, vi sono dei componenti che svolgono le funzioni previste dal modello teorico di Von Neumann , essa funzionerà esattamente come un normale PC.

Questo ovviamente vale anche per i processi mentali, posto che la mente sia veramente il ‘prodotto’ delle computazioni simboliche del cervello. La struttura biologica di quest’ultimo, dunque, sarebbe completamente irrilevante ai fini di spiegare la natura dell’intelligenza. Tuttavia questa affermazione così radicale non è ovviamente condivisa da tutti gli studiosi. Sembra strano che la struttura biologica e le fisiologia di un organo complesso come il nostro cervello (e della sua ramificata propaggine, il sistema nervoso) non abbia niente che fare con l’intelligenza.

In primo luogo, si osserva, allo stato attuali delle conoscenze circa il funzionamento del cervello, risulta piuttosto arduo individuare al suo interno un qualche meccanismo che sia funzionalmente equivalente ad una macchina formale automatica a stati discreti e sequenziali. Anzi, per quanto si è potuto verificare, nel cervello si verificano miliardi di processi contemporanei (o paralleli) e caratterizzati da variazioni di stato continue. In secondo luogo, esistono delle capacità cognitive come la percezione (visione, udito, tatto) che ragionevolmente non sembrano riducibili a processi computazionali simbolici. Infine abbiamo visto come, nonostante i cinquanta anni di ricerche e sperimentazioni, l’intelligenza artificiale classica non sia ancora riuscita a costruire dei modelli computazionali delle varie facoltà cognitive umane plausibili ed effettivamente funzionanti.

Tutte queste considerazioni hanno portato, a partire dalla fine degli anni ’70, alla nascita di una nuova impostazione nello studio della mente (e parallelamente nella costruzione di macchine intelligenti). Questa nuova impostazione si chiama connessionismo. Il fondamento teorico del connessionismo, che rovescia completamente le tesi della IA classica, in estrema sintesi è il seguente: per spiegare e/o riprodurre l’intelligenza e tutte le facoltà cognitive di un essere umano (o di qualche altra specie animale) è necessario emulare le proprietà e la fisiologia del cervello, ovvero il funzionamento delle sue cellule.

La struttura cellulare del cervello e la sua fisiologia

Studiare la struttura biologica e la fisiologia del cervello è un compito tutt’altro che facile. Tuttavia a partire dall’inizio del nostro secolo sono stati fatti dei grandissimi passi in avanti in questo campo. Oggi disponiamo di apparecchiature, come la TAC, che ci consentono di ottenere immagini dettagliate del cervello in attività. E molte conoscenze sono venute anche studiando i danni e le disfunzioni riportate da persone cerebrolese.

In questo modo i neuroscienziati sono riusciti a capire che tutte le attività intelligenti sono controllate dalla parte esterna del cervello, quella parte caratterizzata da un superficie involuta di colore grigiastro e chiamata corteccia cerebrale. E sappiamo anche che la corteccia è a sua volta divisa in diverse regioni specializzate: ogni regione controlla una determinata facoltà cognitiva. Ma le conoscenze sul cervello non si fermano qui. I neuroscienziati, infatti, sono riusciti a ricostruire anche la struttura cellulare del cervello e a capirne almeno in parte il funzionamento.

Il cervello è costituito da un enorme insieme di cellule, denominate neuroni. I neuroni sono costituiti da un corpo centrale o soma, dal quale si dipartono una serie di prolungamenti filiformi; alcuni di questi prolungamenti sono piuttosto ‘corti’ e terminano a loro volta in strutture fortemente ramificate: essi sono denominati dendriti. Uno dei prolungamenti invece è molto più lungo degli altri (talvolta, come avviene nelle cellule collegate direttamente agli organi sensoriali esso può estendersi persino per diverse decine di centimetri) e si chiama assone. Anche l’assone termina in una o più ‘code’ alla cui estremità si trova una sorta di rigonfiamento, detto sinapsi. Ogni neurone è collegato mediante le sue terminazioni sinaptiche ai dendriti di molti altri neuroni. In questo modo i neuroni, che nel cervello umano sono circa dodici miliardi, formano un reticolo di interconnessioni fittissimo: secondo alcune stime il numero di connessioni possibili (che ovviamente non sono pari a quelle realmente esistenti) sarebbe superiore al numero degli atomi nell’universo!

Ma come funzionano queste cellule, ed in che modo determinano l’attività del cervello? Ebbene, si è scoperto che i neuroni comunicano tra loro scambiandosi dei segnali elettrici e attivandosi reciprocamente. Il rilascio di un segnale da parte di un neurone non è automatico e immediato: affinché avvenga è necessario che il neurone venga eccitato da altri neuroni fino al superamento di una certa soglia; solo allora la cellula invia un segnale agli altri neuroni con cui è collegata. I segnali in uscita da un neurone viaggiano sotto forma di minuscoli impulsi elettrici cha vanno dal nucleo della cellula, lungo l’assone, fino alle sinapsi. Quando le cariche giungono alle terminazioni sinaptiche esse inducono la liberazione di particolari molecole dette neurotrasmettitori; queste a loro volta raggiungono le terminazioni dendritiche dei neuroni collegati all’assone, e scatenano una reazione chimica che permette il passaggio del segnale elettrico da un neurone all’altro.

Studiando l’attività biochimica dei neuroni mediante dei raffinati sistemi di rilevamento, si è notato che ogni diversa facoltà cognitiva e locomotoria corrisponde ad una aumento di attività in particolari aree del cervello. Si suppone perciò che il cervello abbia una struttura modulare: ogni modulo è specializzato per un certo tipo di attività.

Le reti neurali

Le ricerche di impostazione connessionista hanno cercato di emulare il comportamento delle cellule neuronali facendo ricorso alle cosiddette reti neurali:

Una rete neurale è una struttura formata da un certo numero di unità collegate tra loro da connessioni. Attraverso le connessioni un’unità influenza fisicamente le altre unità con cui è collegata. Le unità hanno alcune caratteristiche essenziali delle cellule nervose, i neuroni del sistema nervoso reale, mentre le connessioni alcune delle caratteristiche essenziali dei collegamenti sinaptici tra neuroni .

Una rete neurale è costituita da un insieme di nodi collegati. Per ogni nodo vi sono dei collegamenti di input (da cui arrivano segnali) e dei collegamenti di output (attraverso cui la rete emettte segnali). I nodi possono assumere due stati: stato di riposo e stato di attivazione. Quando un nodo è in stato di attivazione esso invia dei segnali ai nodi con cui è collegato. Un aspetto importante della microfisiologia cerebrale che viene emulato dalle reti neurali è il sistema di eccitazione. Infatti i collegamenti tra i nodi di una rete neurale sono di due tipi: collegamenti eccitatori e collegamenti inibitori. Ogni collegamento tra un nodo della rete e un altro, inoltre, è dotato di un peso. Il peso del collegamento che assegna diversi valori ai segnali che li attraversano. Ogni nodo diventa attivo e dunque manda un segnale ai nodi ad esso connessi solo se i messaggi che gli arrivano (nel computo tra segnali inibitori e segnali eccitatori) lo portano oltre una certa soglia di attivazione (misurata mediante una scala numerica). Visto nel suo complesso, il comportamento di una rete neurale può essere descritto come un processo in cui, una volta fornita in ingresso alla rete una configurazione di segnali-stimolo (mediante l’attivazione di alcuni suoi nodi, detti nodi in input), la rete rilascia in uscita un’altra configurazione di segnali.

Le reti neurali si differenziano in base alla loro architettura, cioè in base al modo in cui i nodi si dispongono su uno o più strati: in particolare si distinguono reti a uno strato, reti a due strati reti a tre o più strati. In questi ultimi due tipi gli strati esterni svolgono rispettivamente la funzione di strato di input e strato di output, un po’ come nel cervello ci sono cellule che sono in contatto diretto con gli organi di senso e cellule che governano il movimento e l’emissione di messaggi vocali.

Un altro aspetto che differenzia le reti neurali è rappresentato dalla tipologia delle connessioni tra i nodi: in alcuni casi le connessioni viaggiano solo in un senso; in altri, i messaggi possono andare sia in avanti sia indietro; in altri ancora, nodi topologicamente distanti possono avere dei collegamenti diretti. Dal punto di vista della implementazione, una rete neurale può essere simulata interamente ‘via software’ mediante un normale calcolatore digitale; oppure può essere realizzata direttamente a livello hardware, mediante la connessione di molti semplici microprocessori in grado di lavorare in parallelo.

Quali proprietà hanno le reti neurali che le rendono, oltre che un modello (a dire il vero ancora ‘alla lontana’) del cervello, un possibile modello dei comportamenti intelligenti?

Una prima proprietà interessante è che le reti neurali, a differenza dei computer digitali, funzionano in modalità parallela, nel senso che in ogni istante molti nodi cambiano il loro stato simultaneamente. Questo tipo di elaborazione sembra essere molto più aderente al funzionamento reale del cervello rispetto al modello di elaborazione sequenziale proprio delle macchine di Turing e Von Neumann. Ma la proprietà più interessante delle reti neurali è la loro capacità di apprendimento: esse cioè possono imparare a svolgere dei compiti senza bisogno di essere programmate esplicitamente.

Il processo di apprendimento avviene in questo modo: per un dato periodo di tempo vengono forniti alla rete una serie di stimoli in entrata e i corrispondenti stimoli in uscita che essa dovrebbe generare. Ad esempio, in entrata vengono fornite le rappresentazioni in formato bitmap dei caratteri di un certo sistema di scrittura, e in uscita le corrispondenti posizioni della tavola ASCII . Durante questo periodo nella rete vengono modificati i pesi assegnati ai collegamenti tra nodi. Superata un certa soglia di autorganizzazione interna la rete è in grado di riconoscere da sola le configurazioni di input: essa ha cioè imparato a riconoscere i caratteri della scrittura.

Un’altro aspetto estremamente interessante delle reti neurali (soprattutto in relazione al discorso sui fondamenti dell’intelligenza artificiale classica e sulla teoria rappresentazionale della mente) è che in esse la conoscenza necessaria a svolgere un dato compito non è rappresentata da simboli distinti che vengono trasformati in base a regole, ma è diffusa tra tutti i nodi della rete che concorrono ad elaborala. In altri termini, la conoscenza insita in una rete neurale e la sua elaborazione sono subsimboliche.

Anche da questa nostra breve trattazione, appaiono evidenti le ragioni in virtù delle quali si afferma che il connessionismo rappresenti un paradigma teorico radicalmente diverso dalla teoria computazionale classica: esso in primo luogo sostiene che per ottenere un comportamento intelligente è necessario emulare la struttura fisica (cellulare per la precisione) del cervello; ma soprattutto sostiene che i processi cognitivi e, inter alia,il pensiero, non sono il prodotto di processi computazionali simbolici, ma emergono dal comportamento complessivo di moltissime unità subsimboliche che, prese singolarmente, non rappresentano niente.

Sulla base di questo paradigma, la cui prima formulazione risale ad un lungimirante (visto da oggi) saggio di W. McCulloch e W. Pitt risalente al 1943 , sono state realizzate numerose applicazioni delle reti neurali in vari domini: per esempio nella simulazione dei comportamenti elementari di specie inferiori, spesso associata alla costruzione di robot reali. In questo settore specifico il primo esperimento importante è stato il Perceptron di Rosenblatt (1958) che era un robot in grado di muoversi in un ambiente evitando gli ostacoli. Un altro settore in cui il paradigma connessionista ha avuto larga diffusione è quello dello studio e della emulazione dei processi soggiacenti alla percezione, ambito nel quale l’impostazione computazionale classica ha mostrato notevoli limiti. E non sono mancate anche le applicazioni pratiche, soprattutto nel campo dei software per il riconoscimento dei caratteri (OCR, su cui ci siamo soffermati nel primo capitolo), e, negli ultimi anni, anche nel campo dell’analisi finanziaria.

Intorno a queste sperimentazioni, poi, è proliferata una ingente mole di letteratura teorica e filosofica che considera il connessionismo la strada maestra per la creazione di macchine intelligenti e per lo studio dell’intelligenza naturale. Naturalmente i sostenitori dell’IA classica e della teoria rappresentazionale hanno reagito, producendo una pari mole di confutazioni delle tesi connessioniste. E in realtà, sebbene il connessionismo abbia riportato dei buoni successi nei domini che abbiamo appena ricordato, quando si è tentato di applicarlo alla riproduzione artificiale delle facoltà cognitive superiori ha rivelato non pochi limiti. Infatti, è innegabile che molte di queste attività consistano in qualche specie di elaborazione simbolica (non necessariamente di tipo computazionale): e finora nessuno è stato in grado di capire come dalla concorrenza di moltissimi processi di elaborazione paralleli e subsimbolici possa effettivamente emergere una qualche forma di elaborazione simbolica, come la competenza linguistica o la capacità di ragionare in modo deduttivo.

Per questa ragione molti studiosi sono convinti che se una prospettiva di sviluppo e di successo per l’intelligenza artificiale esiste veramente, questa scaturirà dalla convergenza tra il modello computazionale e modello connessionista. Infatti i processi che avvengo nel cervello, almeno allo stato attuale delle conoscenze, sembrano disporsi su vari livelli: ai livelli bassi (che corrispondo alla percezione e ai processi di elaborazione degli stimoli provenienti dall’ambiente) avvengono molte elaborazioni veloci e parallele di elementi subsimbolici; ai livelli alti invece si collocano dei processi che trasformano l’output dei livelli bassi in simboli e con tali simboli eseguono quelle elaborazioni che la Buona Vecchia IA ha studiato da mezzo secolo ai giorni nostri.

La vita artificiale

In questo corso abbiamo visto come negli ultimi cinquanta anni un intero esercito di studiosi abbia cercato di riprodurre mediante i computer quel complesso di fenomeni che chiamiamo mente o intelligenza.. Un obiettivo assai difficile, e tuttora ben lontano dall’essere conseguito.

Negli ultimi anni però c’è stato qualcuno che ha pensato di andare oltre: sono i ricercatori impegnati in una curiosa disciplina che si chiama vita artificiale, o Alife (contrazione dall’inglese artficial life). Non si tratta di novelli emuli del dottor Frankenstein, né di arditi sperimentatori delle tecnologie genetiche. La vita artificiale infatti ha come obiettivo la simulazione del comportamento di organismi ed ecosistemi reali sul computer. La data di nascita ufficiale di questo campi di studi a cavallo tra biologia, genetica e informatica è stata fissata nel 1987, quando in una conferenza tenuta all’Oppenheimer Study Center di Los Alamos (New Mexico) il biologo Christopher Langton riunì circa 160 studiosi provenienti da molteplici campi disciplinari.

Esattamente come l’intelligenza artificiale studia i principi e la natura dell’intelligenza cercando di riprodurne alcune caratteristiche mediante i computer, così la vita artificiale cerca di rispondere a domande sulla natura della vita e dei processi che caratterizzano un organismo vivente (o una popolazione di organismi), e di capire come si siano svolti i processi evolutivi che da forme di vita semplici hanno portato all’evoluzione di forme di vita sempre più complesse e intelligenti, mediante simulazioni realizzate al computer.

In un certo senso il programma della vita artificiale estende quello dell’intelligenza artificiale. L’intelligenza, infatti, è una caratteristica di alcune specie viventi superiori (e, in senso pieno, solo dalla nostra specie) che si sono evolute a partire da forme di vita più semplici. Dunque lo sviluppo e la natura dei sistemi intelligenti rientra tra gli obiettivi della vita artificiale. Tuttavia, allo stato attuale, la maggior parte delle ricerche in questa disciplina è rivolta allo studio di processi biologici elementari (assimilabili a quelli dei virus o degli esseri monocellulari) o alla simulazione del comportamento di esseri più complessi ma comunque assai in basso nella scala evolutiva, come gli insetti.

La maggior parte delle creature studiate dalla vita artificiale sono pure simulazioni software che vivono in ambienti digitali. Tuttavia non mancano applicazioni di sistemi di vita artificiali a piccoli robot che sono in rado di muoversi in ambienti reali ancorché semplici. Già abbiamo citato il caso del Perceptron di Rosenblatt, un robot tartaruga che, governato da una rete neurale, poteva muoversi in un appartamento evitando gli ostacoli e individuando le fonti di energia necessarie al suo ‘sostentamento’. Da allora numerose sono state le creature meccaniche realizzate dai ricercatori per studiare le basi del comportamento degli esseri viventi.

La somiglianza nei comportamenti tra alcune delle forme di vita artificiale (digitali o robotiche che siano) sviluppate dai ricercatori di Alife e le creature organiche cui esse si richiamano ha portato alcuni studiosi in questo settore ad assumere una posizione che può sembrare paradossale: per conto loro gli esseri artificiali sono ‘vivi’ tanto quanto quelli organici. Altri studiosi, invece, si limitano ad asserire che le sperimentazioni condotte con i computer ci possono far capire meglio alcuni dei misteri della vita organica, senza assumere che le forme di vita artificiale possano dirsi viventi in un senso pieno. Insomma, come nell’intelligenza artificiale, anche nella vita artificiale vi è una posizione ‘forte’ e una ‘debole’.

La teoria dell’evoluzione di Charles Darwin

Un elemento fondamentale degli studi di vita artificiale è lo studio e la simulazione dei processi evolutivi teorizzati da Charles Darwin nel secolo scorso. Come forse saprete Darwin è l’artefice della teoria evoluzionista attualmente condivisa da pressoché tutti i biologi, sebbene vi siano vari punti di vista su diversi aspetti interni alla teoria stessa.

Il cuore della teoria darwiniana è costituito dal concetto di ‘selezione naturale’. Secondo questa teoria tutte le forme di vita attualmente esistenti si sono evolute nel corso del tempo in virtù di una serie di variazioni casuali intervenute tra gli individui di generazioni successive. Alcune di queste variazioni, in determinati momenti, si sono rivelate dei vantaggi competitivi per gli individui che le subivano, favorendone la sopravvivenza e la riproduzione. In sostanza nella competizione per le risorse in un dato ambiente, questi individui ‘mutanti’ si sono rivelati più efficienti nel procurarsi il cibo e nella cura della progenie. In seguito a molteplici variazioni di successo da una unica specie se ne generano altre, alcune delle quali sono premiate dal processo di selezione naturale, mentre altre vengono punite e si estinguono.

È importante ribadire che secondo la teoria di Darwin le mutazioni che differenziano ogni individuo di una specie vivente sono puramente casuali: non esiste nessuno scopo o nessuna direzione preferenziale nell’evoluzione. In un certo senso l’evoluzione è una specie di programma eseguito dalla natura. Un processo insomma, che si presta ad essere simulato abbastanza facilmente mediante i computer.

Automi cellulari e algoritmi genetici

Naturalmente gli organismi che vengono simulati negli esperimenti di vita artificiale sono estremamente semplici, molto più semplici dei più semplici batteri che vivono sulla terra. I più noti enti artificiali studiati nell’ambito della vita artificiale sono gli automi cellulari, le cui basi teoriche si debbono, indovinate un po’, ad Alan Turing e a John Von Neumann. Un automa cellulare è una macchina software autodiretta che di norma ‘vive’ in ambienti simulati bidimensionali, è dotata di alcuni semplici comportamenti simili a basilari processi vitali (mangiare, spostarsi alla ricerca di cibo, difendersi da altri automi) ed è in grado di autoreplicarsi assemblando elementi inerti tratti dall’ambiente in base a regole semplicissime (come avviene nella mitosi cellulare, diretta dal DNA). La duplicazione di un automa cellulare non è completamente deterministica (altrimenti ci troveremmo di fronte a un programma che copia se stesso ). Nel processo di replica, infatti, possono occorrere delle mutazioni che simulano le variazioni degli organismi reali previste dalla teoria darwiniana.

In questo modo un sistema in cui ‘vivono’ degli automi cellulari simula il corso di un processo evolutivo per selezione naturale, con il vantaggio che i tempi che regolano l’andamento del processo possono essere controllati dai ricercatori, a differenza di quanto avviene negli esperimenti effettuati con organismi reali.

Un esempio di applicazione dei principi degli automi cellulari, estremamente semplice – ma altrettanto pieno di sorprese – è costituito dall’ambiente artificiale conosciuto come ‘gioco della vita’, ideato dal matematico John Horton Conway nel 1960. L’ambiente del gioco è costituito da una scacchiera bidimensionale. Gli organismi che vivono nell’ambiente sono rappresentati da una o più celle piene nella scacchiera. Le celle vuote sono invece considerate morte. Questi organismi si evolvono in base a tre semplici regole:

  • ogni cella con nessuna o una sola cella adiacente muore (questa regola simula la morte per isolamento);
  • ogni cella con quattro celle adiacenti piene muore (questa regola simula la morte per sovraffollamento);
  • ogni cella morta con tre celle adiacenti piene torna in vita alla generazione successiva (questa regola simula la nascita).

Seguendo queste semplici regole, il sistema si evolve da solo e durante questa evoluzione genera forme di vita sempre più complesse battezzate con strani nomi: alianti, lampeggiatori, fulmini, bombardieri. A un certo punto alcune di queste forme di vita assumono comportamenti che possono essere descritti (ad un livello di descrizione alto) come dare la caccia alle forme più semplici, difendere porzioni di territorio e così via.

Un altro tipo di strutture digitali autoreplicantesi ed evolutive studiate in vita artificiale sono gli algoritmi genetici. L’idea degli algoritmi genetici è stata sviluppata da John Holland, intorno alla metà degli anni ’70, come metodo per individuare e ottimizzare gli algoritmi usati nel calcolo di alcune funzioni. A tale fine Holland si è rifatto al meccanismo della selezione naturale: si generano in modo casuale alcuni algoritmi genitori, dotati di un certo ‘patrimonio genetico digitale’ espresso in termini di sequenze di bit. A questi algoritmi vengono applicati due tipi di processi evolutivi: la mutazione casuale di un o più bit del patrimonio genetico originale; il crossing-over, ovvero la generazione di un individuo figlio il cui patrimonio genetico è costituito da parte del patrimonio di due algoritmi ‘genitori’ (come avviene nella riproduzione sessuata degli organismi viventi).

Una volta ottenuta una generazione di algoritmi ‘figli’ si stima, in base a una funzione di valutazione, quali tra i nuovi individui siano più adatti alla risoluzione del problema che è stato affidato loro (come nella selezione naturale l’adattamento all’ambiente premia alcuni degli individui mutanti): gli individui ‘migliori’ vengo mantenuti per essere sottoposti ad un nuovo processo di mutazione, mentre gli altri sono eliminati. Il processo prosegue finché l’evoluzione non genera degli algoritmi in grado di risolvere il problema.

Molto spesso le tecnologie alla base degli algoritmi genetici vengono applicate anche a popolazioni di reti neurali che, come abbiamo visto, presentano per conto loro alcune interessanti proprietà di autoapprendimento. In questo modo, ad esempio, sono state generate delle specie di ‘formiche digitali’ che sono in grado di svolgere compiti quali la ricerca del cibo, la capacità di lottare e di sopraffare i simili, la capacità di evitare il contatto con ‘sostanze velenose’.

Lo spazio a disposizione di questa dispensa e gli scopi di questo corso non ci consentono di approfondire ulteriormente questi argomenti, che al pari dell’intelligenza artificiale (su cui siamo soffermati in modo particolare) evocano interrogativi e curiosità di non poco rilievo. I lettori che sono interessati ad avere ulteriori notizie, oltre che dai libri citati in bibliografia (in particolare quelli di Silvi Antonimi e di Parisi), potranno trovare una grande quantità di informazioni (e di programmi di vita artificiale da provare sul proprio computer di casa) sul sito Artificial Life online, realizzato dalla Santa Fe University, il cui indirizzo è http://alife.santafe.edu.

Bibliografia

Barr, A., Feigenbaum, E. A., The Handbook of Artificial Intelligence (vol. 1), William Kaufmann, Los Altos (Calif.) 1981

Bernstein, J., Uomini e macchine intelligenti, Adelphi, Milano 1990

Bobrow, D. G., Collins, A., Representation and Understanding: Studies in Cognitive Sciences, Academic Press, New York 1975

Boden, M. A., Artificial Intelligence and Natural Man, Basic Books, New York 1987

Chomsky, N., Saggi linguistici. Vol. 2 – La grammatica generativa trasformazionale, Bollati Boringhieri, Torino 1979

Cook, V., Newson, M., Grammatica universale. Introduzione a Chomsky, Il Mulino, Bologna 1996

Dennet, D. C., Coscienza. Che cosa è, Rizzoli, Milano 1993

Dennet, D. C., La mente e le menti, Sansoni, Firenze 1997

Di Francesco, M., Introduzione alla filosofia della mente, Nuova Italia Scientifica, Firenze 1996

Dreyfus, H. L., Che cosa non possono fare i computer. I limiti dell’intelligenza artificiale, Armando, Roma 1988

Feigenbaum, E., Feldman, J., (a cura di), Computers and Thought, McGraw-Hill, New York 1963

Fodor, J., Concetti. Dove sbaglia la scienza cognitiva, McGraw-Hill Italia, Milano 1999

Frixione, M., Logica, significato e intelligenza artificiale, Franco Angeli, Milano 1994

Haugeland, J., Intelligenza Artificiale, Bollati Boringhieri, Torino 1988

Haugeland, J., Progettare la mente. Filosofia, psicologia, intelligenza artificiale, Il Mulino, Bologna 1989

Hobbes, T., The Leviathan, (tr. it Il Leviatano, Editori Riuniti, Roma 1982)

Hodges, W., Logica, Garzanti, Milano 1986

Hofstadter, D. R., Dennet, D. C., L’io della mente. Fantasie e riflessioni sul sé e sull’anima, Adelphi, Milano 1985

Hofstadter, D. R., Gödel, Escher, Bach: un’Eterna Ghirlanda Brillante, Adelphi, Milano 1984

Johnson-Laird, P. N., La mente e il computer. Introduzione alla scienza cognitiva, Il Mulino, Bologna 1990

Kodarkowsky, M. e Shamkovich, L., A New Era. How Garry Kasparov Changed the World of Chess, Ballantine Books, New York 1997

Lolli, G. (a cura di), Mente e macchine, «Le Scienze quaderni», n. 66, giugno 1992

McClelland, J. L., Rumelhart, D. E., Parallel Distributed Processing. Exploration in the Microstructure of Cognition, MIT Press, Cambridge (Mass.) 1986

McCorduck, P., Storia dell’intelligenza artificiale. Gli uomini, le idee, le prospettive,Franco Muzzio, Padova 1987

McCulloch, W. S., Pitt, W. S., A Logical Calculus of the Ideas Immanent in Nervous Activity, in «Bul. Math. Biophys.», vol. 5, 1943, p. 115-133

Minsky, M., (a cura di), Semantic Information Processing,MIT Press, Cambridge (Mass.) 1968

Minsky, M., Framework for Representing Knowledge, in Winston 1975 (tr. it. in Haugeland 1989)

Minsky, M., La società della mente, Adelphi, Milano 1989

Mishkoff, H. C., Understanding Artificiale Intelligence, Sams, Indianapolis 1985

Parisi, D., Mente. I nuovi modelli della Vita Artificiale, Il Mulino, Bologna 1999

Pessa, E., Intelligenza artificiale. Teorie e sistemi, Bollati Boringhieri, Torino 1992

Picardi, E., Le teorie del significato, Laterza, Roma-Bari 1999

Pratt, V., Macchine pensanti. L’evoluzione dell’intelligenza artificiale, Il Mulino, Bologna 1990

Rich, E., Intelligenza Artificiale, McGraw-Hill Italia, Milano 1986

Rolston, D. W., Sistemi esperti. Teoria e sviluppo, McGraw-Hill Italia, Milano 1991

Rose, S., Il cervello e la coscienza, Mondadori, Milano 1977

Schank, R. C., Abelson, R. P., Script, Plans, Goals, and Understanding,Lawrence Erlbaum, Hillsdale (N.Y.) 1977

Schank, R. C., Il computer cognitivo, Giunti, Firenze 1989

Searle, J., Mente, cervello, intelligenza, Bompiani, Milano 1999

Searle, J., Menti cervelli e programmi, Clup-Clued, Milano 1984

Searle, J., La mente è un programma?, in  «Le Scienze quaderni», n. 66, giugno 1992

Silvi Antonini, S., Vita artificiale. Dal Golem agli automi cellulari, Apogeo, Milano 1995

Smolensky, P., Connessionismo tra simboli e neuroni, Marietti, Milano 1992

Somenzi V., Cordeschi, R. (a cura di) , La filosofia degli autom, Boringhieri, Torino 1986 (2° ed. 1994)

Tabossi, P., Intelligenza naturale e intelligenza artificiale introduzione alla scienza cognitiva, Il Mulino, Bologna 1994

Tagliasco, V., Dizionario degli esseri umani fantastici e artificiali, Mondadori, Milano 1999

Turing, A. M., Computing Machinery and Intelligence, in «Mind», Vol. 59, 433-60, 1950 (tr. it Macchine calcolatrici e intelligenza, in Somenzi e Cordeschi 1986)

Vallar, G. (a cura di), I misteri della mente. «Le Scienze quaderni», n. 101, aprile 1998

Weizenbaum, J., Il potere del computer e la ragione umana, Edizioni Gruppo Abele, Torino 1987

Winograd, T., Calcolatori e conoscenza,Mondadori, Milano 1987

Winograd, T., Understanding Natural Language,University Press - Academic Press, New York 1972

Winston, P., The Psychology of Computer Vision, McGraw-Hill, New York 1975

Searle, J., La mente è un programma?, in  «Le Scienze quaderni», n. 66, giugno 1992, p. 8.

Si veda la relativa scheda nel secondo capitolo.

Non si tratta di esempi un po’ fantasiosi. Esistono veramente dei progetti di ricerca volti alla costruzione di computer molecolari o biologici, che sarebbero assai più veloci degli attuali computer elettronici.

Anche su questo modello ci siamo soffermati nel secondo capitolo.

D. Parisi, Mente. I nuovi modelli della vita artificiale, Il mulino 1999, p. 80.

Della tavola ASCII abbiamo parlato nel primo capitolo.

W. McCulloch e W. Pitt, “A Logical Calculus of the Ideas Immanent in Nervous Activity”, in Bul. Math Biophys., vol. 5, p. 115-133.

Che pure mostrano in alcuni casi dei comportamenti sociali assai articolati: si pensi alle formiche o alle api!

I virus informatici hanno esattamente questo comportamento, ma a differenza dei virus organici, non possono mutare e dunque evolversi da soli: ogni nuovo virus deve essere esplicitamente programmato da un programmatore umano, che svolge un po’ il ruolo che i creazionisti attribuiscono a Dio.

Un algoritmo è la sequenza finita e ben definita di passi che sono necessari per calcolare una certa funzione.

 

Intelligenza artificiale

 

Luciano Bazzocchi

Intelligenza e intelligenza artificiale

Intenti

Lo scopo principale del presente intervento è quello di discutere la possibilità e il senso di una “intelligenza artificiale”. Inevitabilmente, si finirà per riflettere su ciò che si può intendere per “intelligenza” in generale, a partire da quei processi logico-razionali che anche storicamente sono stati considerati lo zoccolo duro del ragionamento intelligente.  Si è ipotizzato che i procedimenti razionali potessero essere automatizzati, o che comunque fossero sottoposti a regole certe; il passo conseguente è tentare di svolgere ragionamenti “intelligenti” al di fuori del cervello umano: su supporti meccanici, come cerca di fare Babbage, oppure, a partire dal ventesimo secolo, mediante componenti elettromeccanici ed elettronici.  Da questo punto di vista, il computer, che nasce appunto col nome di “cervello elettronico”, costituisce il coronamento di questo sogno millenario; nello stesso tempo, è la base per una evoluzione ancora inimmaginabile, per una simulazione via via più interessante dei processi intelligenti: una simulazione che potrebbe divenire indistinguibile dal modello naturale, o che potrebbe più verosimilmente superarlo di varie lunghezze.
Fornendo alcuni elementi storici e tecnici, si intendono indicare riferimenti culturali utili ad una più consapevole valutazione della rivoluzione in atto.  Si ritiene inoltre che l’attenzione rivolta ai procedimenti “intelligenti” comporti l’approfondimento di tecniche e temi didattici immediatamente spendibili nel quotidiano scolastico, di cui verrà proposta qualche esemplificazione.

Il cappello del signor Veneranda
Il sig. Veneranda, di Carlo Manzoni (1909-1975) [leggere un paio di episodi da Carlo Manzoni, Il signor Veneranda, Rizzoli 1984: “Il cappello non c’entra”, pag.37; “Vuol dire forse che piove”, pag.115;  “Lei è seduto sul mio cappello”, pag.171].
Sono esempi di logica dell’assurdo: Veneranda è indubbiamente “intelligente”; qual è allora il suo difetto? (sempre che il difetto sia il suo, e non sia invece il mondo ordinario a difettare di coerenza e di razionalità).  Si dice che manca di buon senso (o piuttosto di senso comune).  Teniamo da parte questa considerazione e concentriamoci invece sulla componente logico-razionale. Immaginiamo una situazione di questo genere:
Il sig. Veneranda, personaggio decisamente meticoloso, tutti i giorni alle 10 attraversa la piazza del paese. A volte porta il cappello, a volte no; ma quando piove, come è naturale, lo porta immancabilmente.
Tutti noi comprendiamo il contenuto dell’episodio; proviamo però ad esprimerlo in modo univoco, evidenziando i rapporti logici tra gli eventi.  Per semplificare, focalizziamo l’attenzione su due soli elementi: il signor Veneranda porta / non porta il cappello e piove / non piove.  Proviamo a utilizzare il costrutto più noto della deduzione logica, cioè l’implicazione materiale:

Se  ….   Allora  ….

È possibile esprimere interamente il contenuto di verità della relazione con uno schema di questo tipo?
Per esempio:
Se il signor Veneranda  [non] porta il cappello, allora  [non]  piove            ~ cappello É ~ piove
È la stessa cosa di..?
il signor Veneranda  [non] porta il cappello, solo se  [non]  piove
oppure di … ?
piove solo se  il signor Veneranda  porta il cappello                                    piove É cappello 

Si provi ora ad esprimere lo stesso “valore di verità” con i connettivi “e” , “o”  [[intanto à­ ]]

 

Per esempio:
il signor Veneranda  porta il cappello  oppure non piove                            cappello Ú ~ piove
Ha lo stesso valore di verità della versione precedente?

Non accade mai che piova e il signor Veneranda non porti il cappello       ~ (piove Ù ~ cappello)

C’è un metodo sicuro per non confondersi: le tavole di verità. Si tratta di tecniche molto semplici, che i bambini di solito capiscono ed apprezzano.  Il punto  è: dobbiamo espressamente insegnare l’uso della negazione e dei connettivi logici; l’intelligenza logico-linguistica va allenata e stimolata, con tecniche e giochi.  Per esempio: tradurre un episodio di Veneranda in proposizioni della logica formale.
Proposta per il prossimo anno: un corso di logica proposizionale e dimostrazioni tramite tavole di verità.
La mia tesi non è che abilità logica e intelligenza siano la stessa cosa; se volessi semplificare in uno slogan, direi che la coerenza logica è condizione necessaria per l’intelligenza, ma non sufficiente. A proposito, come esprimere una “condizione necessaria” con la relazione “se… allora…”?
Attenzione: non
Se sono logicamente coerente, allora sono intelligente         (condizione sufficiente!)
bensì
Se sono intelligente, allora sono logicamente coerente         (logica come condizione necessaria)

L’organo del pensiero

 

Questi test di abilità linguistica possono sembrare di marginale interesse; eppure, per secoli sono stati messi in relazione con le basi stesse del pensiero razionale.  Aristotele, per esempio, dedica la parte propedeutica a tutto il suo lavoro proprio ad aspetti logici di questo genere.  È noto che non usa il termine “logica”, di origine medievale, ma considera tali aspetti come appartenenti all’organo stesso del pensiero, costitutivi della capacità di ragionamento e presupposto di ogni altra scienza e conoscenza. “Organon” è appunto il titolo del libro che dedica all’analisi delle strutture logiche del discorso; in particolere, Aristotele tratta del sillogismo, che corrisponde più al calcolo delle classi che al calcolo proposizionale; riguarda l’uso della negazione e di termini di quantificazione, come “tutti”, “alcuni”, “nessuno”, oltre che la derivabilità di alcune forme da altre ammesse per ipotesi.  Potremmo proporre esempi, analoghi a quanto abbiamo visto a proposito del cappello di Veneranda.
Il calcolo proposizionale, che abbiamo esemplificato, non tiene conto della forma delle frasi atomiche ma solo del rapporto tra verità delle singole proposizioni e verità di proposizioni composte tramite connettivi logici.  È la scuola stoica, in particolare il gruppo attivo intorno alla città di Megara (IV-II secolo a.c.), a focalizzare l’attenzione sul calcolo proposizionale e a individuare le relative forme di ragionamento deduttivo (modus ponens, modus tollens).  Anche per gli stoici, non si tratta di un calcolo astratto, ma delle basi effettive dell’intelligenza razionale, per esempio della capacità di dedurre coerentemente verità importanti, persino difficili e dolorose, da premesse per altre vie accettate o dimostrate.  La coerenza logica è coessenziale alla coerenza morale.
Attraverso tutto il Medioevo e il Rinascimento, l’identificazione di intelligenza e capacità logico-deduttiva non è stata messa in discussione.  Parimenti, bisognerebbe riflettere meglio sul fatto che persino Spinoza (1632-1677), certamente più vicino a sensibilità e problematiche politiche, morali e metafisiche piuttosto che matematiche, titola il suo capolavoro “Ethica ordine geometrico demonstrata” (1674), adottando così la forma dimostrativa caratteristica degli Elementi di Euclide; effettivamente, anche le sue proposizioni di etica appaiono strettamente inserite in un impianto logico rigoroso e le considerazioni di supporto terminano preferibilmente con la formula “QED”, “quod erat demonstrandum” (in italiano, “CVD”, “come volevasi dimostrare”). Arriviamo a Leibniz (1646-1716), un punto di riferimento non solo in filosofia, ma anche per la ricerca matematica (v. il calcolo infinitesimale, in antagonismo a Newton): ebbene, il sogno di Leibniz è quello di tradurre tutte le tesi, e non solo quelle della matematica, in un linguaggio rigorosamente ineccepibile (mathesis universalis), in modo che il ragionamento possa essere in linea di principio automatizzato.  Per Leibniz, cioè, tutto il pensiero razionale possiede una struttura logica, e soltanto a causa dei nostri limiti espressivi cadiamo in errori e fraintendimenti.  A fronte di due tesi contrapposte, gli studiosi dovrebbero semplicemente esprimerle in modo logicamente rigoroso e poi, con carta e matita, proporsi: “Calculemus!”. (De arte combinatoria, 1666) L’aspirazione a definire un linguaggio univoco, una “caratteristica universale” in grado di formulare e confrontare in maniera oggettiva qualsiasi fatto o pensiero, rivela la convinzione che la razionalità consista principalmente in capacità logico-deduttive, di cui il nostro apologo su Veneranda è un piccolo esempio.  Tra parentesi: cosa direbbe Leibniz di fronte alla capacità computazionale del moderno elaboratore d’informazione?  Non sarebbe oltremodo interessato alla sua natura e alle sue effettive possibilità?  Ecco un punto su cui varrebbe la pena riflettere con più pacatezza.

Le leggi del pensiero

Evidentemente, nella tendenza a classificare la logica come un gioco astratto, lontano da problemi reali e quindi marginale rispetto alla nostra intelligenza naturale, è presente il riflesso della logica moderna, da molti identificata col formalismo assiomatico e convenzionalista.  La verifica delle relazioni logiche è diventata effettivamente un calcolo, nel senso che ai valori di verità delle proposizioni elementari, tradotti nei valori numerici 0 e 1, si possono applicare operazioni di matematica binaria associate ai vari connettivi logici.  Il primo a proporre questa traduzione matematica delle espressioni logiche è stato Boole (1815-1864); il suo intervento è risultato talmente radicale che da allora in poi la logica classica, del vero e del falso, è chiamata “logica binaria” o “logica booleiana”.  I contributi tecnici di Boole sono racchiusi nel testo L’analisi matematica della logica (1847), ma sono profondamente relati alle considerazioni svolte nella sua opera fondamentale, Le leggi del pensiero (1854). Curiosamente, proprio nell’investigare i processi reali del pensiero razionale Boole ha avvertito l’esigenza di raffinare alcuni aspetti di matematica binaria e ha aperto il filone “formalista” della logica contemporanea.  In Boole la problematizzazione del pensiero naturale è ancora in primo piano.  In particolare, compare la questione se si possano ipotizzare “leggi del pensiero”, intese non solo come descrittive dei fenomeni, ma prescrittive: che senso ha dire che l’intelligenza consiste nell’azione di regole inesorabili, addirittura irriflesse e inconscie?  Come può il meccanismo razionale, che è appunto “meccanico”, constituire il fondamento dell’intelligenza? Eppure Boole scrive nel 1854: “Le leggi del ragionamento hanno un’esistenza reale come leggi della mente umana”.  D’altro canto, se la razionalità ha costituzionalmente qualcosa di “meccanico”, significa che può essere almeno in parte automatizzata, può essere riprodotta su un supporto artificiale, su una macchina abbastanza ingegnosa e complessa.  A quanto pare, proprio le forme della logica che per secoli sono state identificate con l’essenza del pensiero razionale, o per lo meno con un suo prerequisito imprescindibile, costituiscono il ponte tra intelligenza naturale e la sua riproduzione nel regno dell’artificiale.

Schede e programmi
A questo punto, la riflessione teorica sul pensiero astratto si incontra con un altro processo che ha a sua volta una lunga storia: la costruzione di automi, cioè di meccanismi semoventi che riproducono alcune funzioni animali o, tendenzialmente, umane.  È nota l’esplosione della moda degli automi che nel ‘700 invase le corti europee: artigiani abilissimi si studiavano di stupire i nobili committenti con i loro giocattoli meccanici, costruiti con la tecnologia degli orologi a molla.  A parte qualche tentativo chiaramente fraudolento, tali automi non avevano però alcuna capacità di riprodurre processi logici o decisionali.  L’avvento dell’era industriale, se da un lato indusse un vasto progresso tecnologico, chiuse l’esperienza degli “automi”, che non trovavano una concreta applicazione produttiva.  La tecnologia meccanica fu invece perfezionata in particolare nell’industria tessile, con l’introduzione del telaio automatico.  Fu proprio l’esigenza di rendere più flessibile la lavorazione a separare l’aspetto esecutivo, che sfruttava l’energia del vapore, dal sistema di controllo, dapprima manuale, poi a sua volta automatizzato.  La rivoluzione concettuale divenne evidente con il telaio Jacquard, in grado di adattarsi a differenti programmi di lavorazione: il tipo di tessitura era rappresentato su schede perforate, interpretate dal sistema di controllo.  Nel 1830, un geniale tecnico inglese, Charles Babbage (1792-1871), intuì le caratteristiche universali del procedimento: costruendo un interprete più duttile, la macchina avrebbe potuto eseguire qualsiasi compito, a seconda del programma perforato nelle schede.  La prima versione della sua creatura, denominata “macchina alle differenze” (l’unica in realtà finanziata dal governo inglese), era in funzione del calcolo numerico.  Ben presto Babbage concepì un progetto molto più ambizioso: la “Macchina analitica”, che per esempio poteva essere programmata per giocare a filetto, poi a dama, poi a scacchi.  La continua evoluzione delle ambizioni di Babbage, a fronte di problemi meccanici sempre più ostici, non gli consentì di portare a termine nessuna versione completa del meccanismo.
La più convinta sostenitrice, nonché finanziatrice, della macchina analitica fu Ada Byron, figlia del poeta Lord Byron, poi nota come Lady Lovelace, la quale portò il dibattito sul piano culturale e teorico; di fronte però agli eccessivi entusiasmi dei profani o ai timori che la macchina sfuggisse ad ogni controllo, Lady Lovelace amava ribadire: “La macchina analitica non ha alcuna pretesa di creare alcunché. Può fare qualsiasi cosa che si sia in grado di ordinarle di eseguire”.  Questa frase si presta in realtà a due interpretazioni, una riduttiva (può solo eseguire degli ordini), una più suggestiva: può eseguire tutto ciò che le si ordina di fare, tutto ciò che noi siamo in grado di ordinarle.  La questione diventa di natura logico-linguistica: se riusciamo ad esprimere nel linguaggio delle schede compiti sempre più complessi e difficili, in linea di principio la macchina li realizzerà.   Siamo al paradosso della programmazione, che non è necessariamente una serie di ordini banali e ripetitivi; se siamo capaci a definire compiti di alto livello, potremmo “ordinare” alle nostre macchine qualsiasi cosa, tipo “cura quel paziente”, “progetta un’automobile ad emissioni zero”, oppure, chissà: “pensa”.  Se sapessimo esattamente cos’è il pensiero, potremmo riprodurre sulla macchina un pensiero artificiale.

Il cervello elettronico

Con la morte di Babbage, il suo grandioso progetto si arenò definitivamente; con la tecnologia dell’epoca non era possibile raggiungere la precisione necessaria.  Oggi è evidente che nessun sistema puramente meccanico, composto cioè di parti in movimento, di incastri e di ruote dentate, può ragionevolmente disporre della resistenza all’usura e dei sistemi di distribuzione dell’energia implicati da strutture così complesse.  Con l’avvento dell’elettronica, l’informazione può essere rappresentata e trattata senza implicare il movimento di parti di massa rilevante, ma attraverso lo spostamento di elettroni; le potenzialità diventano indefinitamente più grandi.
Per il nostro discorso, c’è un anno emblematico: il 1943.  Nel 1943 Pitts e McCulloch pubblicano un articolo sulla struttura dei neuroni cerebrali. La loro ricerca chiarisce che i neuroni hanno tipicamente due soli stati, e ogni sinapsi semplicemente trasmette o non trasmette il segnale.  Non vi è alcuna modularità nel singolo segnale nervoso, ma semplicemente l’impulso o c’è, o non c’è. Pitts e McCulloch suggeriscono di rappresentare l’elaborazione nervosa mediante un calcolo di tipo logico.  La natura binaria dei segnali nervosi getta una prima luce sul funzionamento del cervello; inevitabilmente, l’aspetto binario richiama le considerazioni di Boole e la sua interpretazione delle “leggi del pensiero”.   Nel 1943, John von Neumann conclude la sua prima revisione dei sistemi di calcolo elettronico e, influenzato anche dal lavoro di Pitts, individua i componenti essenziali dell’elaboratore moderno: l’unità di elaborazione, composto di unità logiche di “and”, “or” e “not”, i registri di lavoro, la memoria, i dispositivi di input e di output.  “Abbastanza curiosamente – si scrive sulla relazione finale – il progetto è in parte basato su ciò che sappiamo sul funzionamento del sistema nervoso centrale nel corpo umano” . Von Neumann adotta una terminologia antropomorfa, che Babbage aveva accuratamente evitato: “elaborazione” e non “calcolo di differenze”, “memoria” e non “magazzino”, “organi di controllo” e non “mulino”, “funzioni di ingresso e di uscita” e non “schede e visore”.
Pur se condizionati dai finanziamenti, essenzialmente militari e governativi, i pionieri della nuova tecnologia non persero di vista la speranza di riprodurre in qualche modo capacità logiche e elaborative tipicamente umane.  Ancora nel 1950, Arthur Samuel, progettatore all’IBM, era principalmente interessato all’analisi dei giochi e ad un progetto per il gioco della dama.  Nella sua analisi, la rappresentazione di una singola mossa richiedeva almeno 36 bit di informazione (32 per rappresentare la scacchiera, gli altri 4 per indicare il colore, il turno di gioco e simili); ebbene, l’IBM 701 uscì appunto con registri di 36 bit, e tra parentesi riusciva ad eseguire ottimamente il programma per la dama.  Anzi, poiché era necessario testare le singole macchine su programmi sufficientemente complessi, prima di essere consegnate gli IBM 701 giocavano interminabili partite in solitario, in modo da garantire il perfetto funzionamento di ogni singolo componente.  La versione successiva, il 702, uscito quando Samuel non era più all’IBM, adottò ovviamente il registro a 32 bit, a indirizzamento più efficiente; poiché però non esistevano programmi altrettanto complessi, fu chiesto a Samuel di fornire una versione a 32 bit del suo programma per il test delle macchine in uscita dalla fabbrica.

I limiti del calcolabile

Perché rifarsi alle origini? Cosa hanno a che vedere i primi costosissimi, elefantiaci e fragili elaboratori con un odierno PC, che è un milione di volte più veloce?  Ebbene, c’è di mezzo un noto teorema, dimostrato da Alan Turing (1912-1954) nel 1936: un qualsiasi elaboratore sequenziale, ovvero che esegue le operazioni una dopo l’altra, seguendo un programma deterministico, è equivalente (purché dotato di una memoria di appoggio di dimensioni adeguate) a qualsiasi altro elaboratore sequenziale, di qualsiasi capacità o velocità.  Qualunque programma, opportunamente tradotto, può essere eseguito indifferentemente sull’uno o sull’altro.   Perciò Turing potè definire un elaboratore sequenziale estremamente semplice, costituito di tre stati, cinque o sei regole base (istruzioni-macchina) ed una unica sequenza di zeri e uno (per esempio perforati su una porzione di un nastro di carta di lunghezza infinita), il quale è equivalente ad ogni altra macchina di von Neumann.  I teoremi di calcolabilità validi per questa “macchina di Turing” valgono anche per i più moderni computer, e per qualsiasi altro che potrà essere costruito in futuro.
Questa è la vera ragione per cui la distinzione tra software ed hardware non è una questione di parole: indipendentemente dai progressi del supporto fisico, la capacità di rappresentare o realizzare qualsiasi funzione dipende esclusivamente dal programma, risiede totalmente nella capacità del programmatore di inventare nuovi mondi, nuovi interpreti, nuove soluzioni.  I nostri fallimenti, diversamente che per Babbage, non possono trovare scuse nell’errore della macchina.
È quindi comprensibile che i progetti più complessi e i dubbi più astratti abbiano fin da subito piena cittadinanza: non parliamo di un futuro imprevedibile, ma di ciò che un genio sconosciuto potrebbe da un momento all’altro escogitare.
Non stupisce allora che proprio Alan Turing si sia dedicato ai programmi più avanzati e abbia discusso, in un famoso articolo del 1950, la possibilità di riprodurre artificialmente il pensiero umano su un processore di von Neumann. L’articolo merita una lettura più attenta; lo si può reperire nel testo a cura di Vittorio Somenzi e Roberto Cordeschi, La filosofia degli automi, Boringhieri 1986.
La natura pragmatica e costruttiva del logico Turing lo porta ad una impostazione comportamentista: definire un test che consenta di riconoscere l’eventuale presenza di un “pensiero artificiale”. Il metodo è interessante: Turing propone di indicare a priori le singole prestazioni che ci convincerebbero di colloquiare con un sistema intelligente (a posteriori, si potrebbe sempre ribattere che “non è ancora abbastanza”). Il “test di Turing”, anche se non esattamente formalizzato, è diventato una presenza costante nella eventuale presunzione di intelligenza di un programma di computer.  Turing butta là un previsione: 60 esperti (come Turing?) che lavorassero per 50 anni porterebbero a termine un programma in grado di superare il suo test.  Nel 2000 il termine è dunque scaduto: anche se nessun gruppo organizzato ha lavorato su questo obiettivo, oggi è senz’altro possibile che un programma superi la forma ingenua del test di Turing (“una persona di media cultura viene ingannata al 70% dopo 5 minuti di conversazione”).  Più difficile forse è ingannare un esperto, magari per un tempo indefinito.

 

“Intelligenza artificiale”

Il termine è proposto nel 1956, nel corso del congresso di Dartmouth; da allora si discute se l’accostamento sia sensato, provocatorio o paradossale.  Il filone principale di ricerca ha contribuito a definire il cosiddetto “cognitivismo”: l’intelligenza tratta con “cognizioni”, elabora idee, intesse relazioni tra concetti.  L’ingegnere della conoscenza favorisce la traduzione del sapere umano in simboli che la macchina è in grado di interpretare; l’elaboratore manipola i simboli fino a produrre risposte operative analoghe a quelle che fornirebbe l’esperto umano.  Una realizzazione tipica è appunto il sistema esperto, tanto più efficace quanta più informazione riesce ad assimilare.  L’accento si va spostando dai processi alle loro condizioni logiche; la programmazione ad oggetti e la programmazione logica si focalizzano sulla descrizione della realtà e dei vincoli a cui è sottoposta.
Una differente linea di ricerca preferisce uscire dalla logica di von Neumann: come nel nostro cervello, l’elaborazione è essenzialmente parallela, e il comportamento del sistema dipende dall’interazione di un grande numero di processi; la difficoltà principale risiede nel coordinamento dei vari procedimenti.  Si arriva a modificare la struttura del sistema di elaborazione, a partire dalle stesse componenti fisiche,  Nacono le “reti neurali”, o  “connessionistiche”: anziché i processi di alto livello, si simulano le componenti elementari del meccanismo cerebrale, ovvero i neuroni e le loro innumerevoli sinapsi.  Mediante un procedimento di apprendimento retroattivo, che sostanzialmente premia i flussi informativi che hanno successo e penalizza le conclusioni erronee, progressivamente il sistema connessionistico assume comportamenti sempre più efficaci.
Le due prospettive, quella cognitivista e quella connessionista, possono essere visualizzate come percorsi orientati in direzioni opposte. Il cognitivismo parte dalla teorizzazione, da concetti e modelli di alto livello, e via via li articola e li disseziona verso il basso, in direzione delle funzioni più elementari; può quindi essere schematizzato come percorso top-down, “dall’alto verso il basso”.  Viceversa, il connessionismo parte dalla simulazione delle sinapsi e dei neuroni, organizzandoli poi in sottosistemi e sistemi sempre più complessi: ovvero bottom-up, dal basso “verso l’alto”.  Si può immaginare che le due strategie finiscano per incontrarsi a mezza via; in effetti già oggi i sistemi più completi trattano mediante sistemi esperti le strategie decisionali, le finalità di fondo, l’orientamento teleologico dell’automa, mentre l’analisi dell’input sensoriale, il riconoscimento vocale o visivo, la simulazione degli stessi processi emozionali sono demandati a reti neurali specifiche.  Non è detto che le due strade siano destinate all’incontro; possono procedere indipendentemente, incrociandosi e sovrapponendosi in tutte le aree intermedie.  Il sistema connessionistico può aspirare a completare il tragitto, arrivando alla scelta delle strategie e alla giustificazione teorica delle scelte compiute; l’automa cognitivista può procedere nell’applicazione della conoscenza, fino ad interpretare e schematizzare immagini, frasi, flussi emotivi.  Siamo solo ai primi passi di un processo che supera di gran lunga la nostra stessa immaginazione.
I termini “top-down” e “bottom-up” derivano dall’informatica applicata: nel costruire una procedura, si può partire dalla struttura di alto livello, richiamando macrofunzioni che verranno definite successivamente, oppure si può partire dalle istruzioni effettivamente disponibili, costruendo con esse funzioni semplici, con le quali fabbricare poi funzioni di alto livello e ottenere alla fine l’intera procedura. Come informatico praticante che predilige il metodo “dall’alto verso il basso”, ho adottato spontaneamente l’interpretazione “top-down” e “bottom-up” in intelligenza artificiale (L.Bazzocchi, Intelligenza artificiale e sistemi esperti, in “Nuova civiltà delle macchine”, n.3-4 del 1987).  Per un riferimento più autorevole, si veda Jerome Bruner in La ricerca del significato (1990, ed. it. Boringhieri 1992, pag.24), dove in modo analogo connessionismo e cognitivismo vengono associati rispettivamente al procedere “bottom-up” e  “top-down”. Il testo di Bruner è molto indicato per approfondire l’argomento della presente comunicazione, compresa la discussione sulla plausibilità dell’intelligenza artificiale.  Bruner propone una versione modificata di cognitivismo, che non si limita alla asetticità di una psicologia “scientifica” ma intende farsi carico dell’intera semantica della “psicologia popolare” e dei termini mentalistici in essa inevitabili.  Il suo conseguente scetticismo su certe pretese dell’informatica cognitivista potrebbe però dipendere da una scarsa frequentazione delle emulazioni più avanzate.
La proposta di Bruner fa riferimento esplicito alla crescente attenzione per la cosiddetta “intelligenza emotiva”; se non vi può essere una reale intelligenza dei fenomeni senza una qualche partecipazione emozionale, un approccio cognitivista classico sembra destinato a restare ai margini del problema. È il momento però di tirare fuori la frase di Lady Lovelace: “la macchina può fare qualsiasi cosa che si sia in grado di ordinarle di eseguire”.  Nella misura in cui riusciamo a comprendere il cervello emotivo, possiamo anche emularlo su un sistema artificiale.  A questo proposito, è uscito un articolo interessante di Federico Rampini su “La Repubblica” dell’ 8 maggio (che può essere recuperato sul sito www.larepubblica.it), Il computer che legge l’anima, articolo che illustra le ultime ricerche di Palo Alto (California).  Avendo memorizzato oltre 30.000 visi umani, il programma di computer è in grado di riconoscere lo stato emotivo di un soggetto attraverso l’espressione della faccia, su una scala estremamente precisa di differenti stati d’animo (paura, sorpresa, aggressività, rabbia, depressione, noia, soddisfazione, trionfo, ecc.); anzi, non essendo “disturbato” dall’empatia o dall’antipatia come un esaminatore umano, la macchina risulta molto più penetrante, e difficile da ingannare.  Se quindi l’interpretazione di un messaggio non può prescindere dalle sfumature emotive, ecco ora la possibilità di una interpretazione automatica estremamente efficace e completa.  Non si tratta evidentemente di una “intelligenza emotiva” nel senso di Goleman (Daniel Goleman, Intelligenza emotiva, 1994, ed. it. Rizzoli 1994), ma, a quanto pare, di qualcosa di ancora più efficiente.
Tralasciando per il momento il percorso connessionistico, se non per avvertire che potrebbe alla fine emulare in toto il cervello umano, la linea cognitivista si conferma come epigona di tutta la linea di pensiero occidentale a proposito dell’intelligenza logico-linguistica.  Lo stesso Bruner, pur critico verso la versione ingenua del cognitivismo, non rinnega affatto la componente logica: la deriva logico-formale del primo ‘900 è stata un passo obbligato, esaspera fino alle estreme conseguenze un aspetto che resta costitutivo dell’intelligenza, per quanto non esaustivo.  Siamo quindi autorizzati a lavorare sull’aspetto del ragionamento deduttivo e della coerenza formale, perché senza di esso il termine “intelligenza” perde ogni consistenza e non è più distinguibile da altri concetti, come “autocoscienza”, “pensiero astratto”, “comprensione” ecc.

Deduzione e coerenza

Riportiamo dunque l’attenzione su un’accezione più circoscritta del termine “intelligenza”, per la quale un soggetto (pur appartenente all’homo sapiens e dunque genericamente “intelligente” per definizione) può apparire più o meno intelligente a seconda della sua capacità di tenere conto di situazioni complesse, di verificare la loro coerenza, di dedurre conseguenze logiche.
Riprendiamo l’amico Veneranda e aggiungiamo un terzo elemento, oltre il cappello e la pioggia: a volte tira vento.  Supponiamo allora che l’implacabile Veneranda non metta mai il cappello quando c’è vento.  Come abbiamo imparato, questa ulteriore relazione si riassume, per esempio, con l’espressione

Il signor Veneranda porta il cappello solo se non tira vento

 

Si rammenti che, dato il carattere puntiglioso di Veneranda, le nostre due premesse

Il signor Veneranda non porta il cappello solo se non piove
e
Il signor Veneranda porta il cappello solo se non tira vento

sono assolutamente affidabili e vere.  Su tali basi, proponiamo questo quesito: oggi giovedì 23 maggio al paese di Veneranda piove a dirotto; possiamo dedurre qualcosa sul vento, e precisamente che tira vento, oppure possiamo dedurre che non tira vento, oppure non possiamo dedurre alcunché sul vento?  In attesa di risposta, volevo accennare a un recente linguaggio molto utilizzato per realizzare sistemi esperti, il PROLOG (ovvero: PROgrammazione LOGica); l’anagramma non è all’americana perché l’interprete PROLOG è di origine francese (PROgrammation LOGique).  Questo interprete è in grado di utilizzare correttamente i connettivi logici ed assegnare valori di verità alle proposizioni semplici; con poca fatica, gli si può insegnare un minimo di sintassi italiana, in modo da trattare le frasi di cui sopra. Ma teniamo pure la versione base di un PROLOG con connettivi italiani e cominciamo a conversare:

< Se non porta_il_cappello allora non piove

  • OK  [risponde il Prolog, prendendo atto della relazione]

< Se porta_il_cappello allora non tira_vento

  • OK  [risponde il Prolog, prendendo atto della relazione]

< piove

  • OK  [risponde il Prolog, prendendo atto del fatto]

Proviamo ora ad insinuare qualche cosa sul vento, per esempio
< tira_vento

  • NO [risponde prontamente il Prolog, rifiutando il fatto]

Se invece proponiamo la frase in negativo,
< non tira_vento

  • SI’ [risponde il Prolog, rivelando che il fatto è già noto; si noti la differenza tra OK, che inserisce un fatto nuovo, non derivabile dalla base di conoscenza, e il SI’, che conferma la derivabilità del fatto sottoposto al sistema]

Dunque, un interprete nudo, cioè senza nessuna conoscenza di cappelli o di meteorologia, è in grado di rispondere al nostro quesito: se al paese di Veneranda piove, allora certamente non tira vento. Questa relazione è implicita nelle due precedenti, tanto è vero che se la sottoponiamo al PROLOG
< se piove allora non tira_vento

  • SI’ [risponde prontamente il Prolog, deducendo dalle precedenti]

È vero anche l’inverso? Tanto vale chiederlo direttamente al Prolog:
< se tira_vento allora non piove

  • SI’ [risponde prontamente il Prolog, deducendo dalle precedenti]

Nessuno sosterrà che un nudo interprete Prolog è più intelligente di un essere umano acculturato, anche se è più rapido nel manipolare quelle relazioni logiche che per millenni l’uomo ha considerato il fondamento del comportamento razionale.  Forse dovremmo deporre un po’ di prosopopea sulla nostra intelligenza innata, allenarci meglio a padroneggiare il ragionamento logico e lavorare con più considerazione accanto al nostro allievo computer.

 

Bibliografia

Luciano Bazzocchi, Intelligenza artificiale e sistemi esperti, in “Nuova civiltà delle macchine, n.3-4 del 1987
Luciano Bazzocchi, Appunti di intelligenza artificiale, in “Office Automation”, set.1991, ott.1991, dic.1991, gen.1992, feb.1992, mar.1992
Francesco Barone, Logica formale e logica trascendentale, Unicopli, Milano 2000
Edoardo Boncinelli, Cervello, mente e anima, Mondadori 2000
Jerome Bruner, La ricerca del significato, Boringhieri 1992
Pietro Calissano, Mente e cervello: un falso dilemma?, Il Melangolo, Genova, 2001
Antonio Damasio, L’errore di Cartesio, Adelphi 1995
Joseph LeDoux, Il cervello emotivo, Baldini&Castoldi 1998
John Haugeland, Intelligenza artificiale, Boringhieri 1988
Douglas R.Hofstadter, Gödel, Escher, Bach, Adelphi 1984
Bart Kosko, Il fuzzy-pensiero, Baldini&Castoldi 1997
McCorduck Pamela, Storia dell’intelligenza artificiale, Muzzio 1987
Carlo Manzoni, Il signor Veneranda, Rizzoli 1984
Marvin Minsky, La società della mente, Adelphi 1989
Federico Rampini, Il computer che legge l’anima , in “La Repubblica”, 8 maggio 2002
Alan Turing, Macchine calcolatrici e intelligenza, 1950, in Vittorio Somenzi e Roberto Cordeschi (a cura di), La filosofia degli automi, Boringhieri 1986

Fonte: www.usprimini.it


Per gli scopi della presente comunicazione, non è il caso di premettere una definizione del termine “intelligenza”.  Risulterà evidente che si intende distinguere l’intelligenza da altri aspetti della mente umana, e a maggior ragione dalla mente tout court.  E’ importante invece sottolineare la differenza tra “distinguere” e “separare”.  In nessuna maniera si vuole separare l’intelligenza dalla sensibilità, dal sentimento, dalla emotività ecc.; fondamentale è invece non stancarsi mai di distinguere, discernere, sceverare (chi non distingue, spesso confonde).

 

 

Intelligenza artificiale

 

1 - INTRODUZIONE ALL’INTELLIGENZA ARTIFICIALE

Discipline coinvolte:

        • Filosofia
        • Matematica
        • Psicologia
        • Linguistica
        • Neuroscienze
        • Teoria del controllo

Che cos’è l’AI ?

  • Lo studio di facoltà mentali attraverso l’uso di modelli computazionali ?
  • Uso di strumenti per far pensare i computer ?
  • Emulazione del comportamento intelligente in termini di processi computazionali ?

 

  • Modi di vedere l’AI: quattro obiettivi possibili
  • Sistemi che agiscono come gli esseri umani
  • Sistemi che pensano come gli esseri  umani
  • Sistemi che agiscono razionalmente (“nel modo giusto”)
  • Sistemi che pensano razionalmente

 

Ogni corrente di pensiero ritiene che le altre siano in torto.

 

a) Turing 1950:
- Le macchine possono pensare ? possono comportarsi in modo intelligente ?

  • Test operativo:

 

intelligenza artificiale

Turing predisse che entro il 2000 una macchina avrebbe avuto il 30% di possibilità di ingannare un uomo per 5 minuti
Suggerì le componenti fondamentali dell’AI:

        • rappresentazione della conoscenza,
        • ragionamento automatico,
        • comprensione del linguaggio naturale
        • apprendimento automatico.

Nel test di Turing “totale”, il sistema deve avere capacità percettive elaborando i segnali provenienti da una telecamera, e spostare oggetti per identificarli: deve quindi acquisire funzionalità della
Visione artificiale
Robotica.

Problema: il test di Turing non è riproducibile, non è costruttivo, non è rappresentabile e analizzabile formalmente.

b)1960: la “rivoluzione cognitiva”
Per dire se un programma pensa come un essere umano dobbiamo sapere come pensa un essere umano.

Sono richieste teorie delle attività cerebrali, ma:

  • a quale livello di astrazione ? a livello di conoscenza o di circuiti elettrici ?
  • Come validarle ?
        • TOP-DOWN: predicendo e testando il comportamento di soggetti (scienze cognitive)
        • BOTTOM-UP: identificando direttamente strutture neurologiche (neuroscienze cognitive)

Sia scienze che neuroscienze cognitive sono ora discipline distinte dall’AI, ma si muovono nella stessa direzione : ricercare gli aspetti generali dell’intelligenza.

  • L’information processing sostituisce il comportamentismo quando studia  il comportamento umano come una scatola nera con input/output e cerca di costruire programmi che vi si uniformano (General Problem Solver, GPS, Newell e Simon 1961).
  • Spesso si cerca di capire anche quali passi la ente compie per arrivare all’output.

 

c) Le leggi del pensiero.
Aristotele : quali sono i processi di pensiero corretti ? Nasce la logica.
Sillogismi: modelli che danno conclusioni corrette date premesse corrette:
Socrate è un uomo. Tutti gli uomini sono mortali. Socrate è mortale.
Diverse scuole greche hanno sviluppato varie forme di logica: notazioni o regole di derivazione (mancava l’idea di automatizzazione)

  • Verso il 1965 l’AI sviluppa una corrente logicista: i programmi che scrivono un problema in notazione logica e trovano la soluzione.
  • Ma la conoscenza spesso non è esprimibile in termini formali.
  • Inoltre questo metodo è computazionalmente onerosissimo se non si danno direttive al computer su quali strade percorrere per prime.

 

C’è una linea diretta fra matematica, filosofia ed AI.

Problema: Non tutti i comportamenti intelligenti sono mediati da ragionamenti logici.

  • Comportamento razionale: agire verso ciò un obiettivo massimizzando il risultato, date le informazioni disponibili.

 

Un agente (entità che agisce, e per poter agire percepisce) deve poter prendere decisioni anche s non ha a disposizione un’inferenza corretta sul problema posto.
Dunque il comportamento razionale non coinvolge necessariamente il pensiero (v. riflessi), ma il pensiero deve essere presente.

AI COME METODO PER COSTRUIRE AGENTI RAZIONALI

  • Un agente è un’entità che percepisce ed agisce
  • Possiamo vedere l’AI come studio dei metodi per costruire agenti razionali

 

In astratto, un agente è una funzione da storie di percezione in azioni:

f : P* à A

Per ogni classe di ambienti e di compiti,cerchiamo l’agente (o la classe di agenti) con le migliori prestazioni.

Problema: le limitazioni computazionali rendono irraggiungibile la razionalità perfetta, quindi si progettano i migliori programmi possibili in base alle risorse computazionali presenti.

 

STORIA DELL’AI
….fino al XX secolo: filosofia:

  • Aristotele (1596-1650): logica
  • Cartesio (1596-1650): dualismo (mente e materia)
  • Leibniz (1646-1716) : materialismo
  • Bacone(1561-1626), Locke (1632-1704): empirismo

(la realtà è ciò che percepiamo)

  • Hume(1711-1776): induzione
  • Russell (1872-1970): positivismo logico (la conoscenza è esprimibile in termini logici che analizzano frasi di osservazione (percezioni)
  • Carnap (1891-1970): teoria della conferma (natura delle connessioni fra frasi di osservazione e teorie).

Dunque si cerca la connessione fra conoscenza ed azione.

 

XIX – XX secolo: matematica

  • Boole  linguaggio formale per le inferenze logiche
  • Frege logica del primo ordine
  • Goedel: mostra che esiste una procedura  per dimostrare le proposizioni vere nella logica del primo ordine, ma che un linguaggio che descriva le proprietà dei numeri naturali contiene proposizioni vere ma indecidibili per via algoritmica (teorema di incompletezza)
  • Turing: nessuna macchina può prevedere se un programma terminerà. 

Nasce il  problema della computabilità e della trattabilità (esecuzione in tempi non esponenziali):

  • Cook-Karp: teoria della NP completezza.

Teoria della probabilità:
Cardano (1501-1576) : concetto di probabilià
Pascal (1623-1662), J. Bernoulli(1654-1705), Laplace (1749-1827), Bayes(1702-1761) fanno progredire la teoria. Il metodo bayesiano fonda la base del trattamento dell’incertezza in AI.
Von Neumann(1903-1957) : teoria delle decisioni , sistema che combina probabilità con utilità: base per le azioni degli agenti.

 

Psicologia:
Helmholtz(1821-1894): primo laboratorio di psicologia sperimentale
Watson (1842-1910): comportamentismo (l’introspezione non basta,  valgono solo le misure oggettive di stimolo e risposta)
James, Helmholtz, Craik (1842/1943): psicologia cognitiva (allo stimolo corrisponde una rappresentazione interna, che viene manipolata da processi cognitivi, che danno luogo ad un’azione.)

Linguistica:
Skinner (1957): approccio comportamentista al linguaggio
Chomski : formalizzazione in linea di principio automatizzabile, utilizzata poi in rappresentazione della conoscenza.
Procedono parallelamente linguistica computazionale ed elaborazione del linguaggio naturale.

1943 McCulloch Pitts: modello di neurone a circuiti booleani
1949 Hebb: regola di apprendimento del neurone
1952–69 Entusiasmo iniziale
1950 Primi programmi di AI: Giocatore di dama (con capacità di apprendimento) (Samuel), LogicTheorist (Newell & Simon), Geometry Engine (Gelernter) (che riduce lo spazio delle soluzioni)
1956 Scuola di Dartmouth: McCarthy, Minsky, Shannon, Rochester: nasce il nome “Artificial Intelligence”
1958 McCarthy crea il LISP (List Processing)
1958 Minsky  studia il mondo dei blocchi, base per i primi progetti sulla propagazione dei vincoli, sulla visione, sulla gestione linguaggio naturale
1962 Rosenblatt: perceptrone (prima rete neurale)
1965 Robinson introduce il metodo di risoluzione per le inferenze logiche
1966–74 L’AI scopre la complessità computazionale: molti problemi reali sono intrattabili
1969 Minski prova i limiti del perceptrone e la ricerca sulle reti neurali si ferma
1969–79 Primi sviluppi dei sistemi basati sulla conoscenza (DENDRAL, Feigenbaum e Buchanan 1969; MYCIN, Feigenbaum Buchanan e Shortliffe 1971,  che introduce i fattori di certezza).
1980–88 Esplode l’industria dei Sistemi Esperti
1988–93 Crolla l’industria dei Sistemi Esperti: “Inverno dell’AI”
1985– Le reti neurali risorgono: Hopfield (1982) , Rumelhart-McClelland (backpropagation) 1986.
1988– Metodi probabilistici e teoria delle decisioni;  pianificazione (applicazioni industriali)
1990- Sviluppo della Robotica ,della visione artificiale, dell’apprendimento automatico; SOAR (Newell) agente AI generale; i sottocampi dell’AI vanno componendosi.
1995– Agenti e Multi-agenti
1997– Progetto RoboCup (torneo con giocatori veri entro il 2050)
Rapida crescita della tecnologia applicata all’ AI
“Nouvelle AI”: Artificial Life, algoritmi genetici, soft computing.

 

QUESTIONI APERTE:

Le macchine possono pensare ?
Le macchine potranno avere emozioni ?
Le macchine potranno avere una coscienza ?

Fonte: www.dti.unimi.it

 

Intelligenza artificiale

 

TEORIE  E  SISTEMI  DI  INTELLIGENZA  ARTIFICIALE

Prof. Richard  WALKER

 

MODULO  1.a

 

Il computer - modello o strumento

 

Come organizzeremo questo corso.
La lezione che faremo tra oggi e domani è soprattutto introduttiva; voglio distinguere tra il computer come modello dell'intelligenza e il computer come strumento di indagine.
Cosa voglio dire ?   Lo approfondiremo molto, mi ripeterò più volte su questo argomento.
Quando parlo del computer come modello dell'intelligenza parlo di coloro che ritengono che la mente mia, o la mente di una formica, sia un computer, che funzioni secondo meccanismi che sono in qualche modo analoghi a quelli del computer che voi usate per scrivere la vostra tesi o del computer che si usa in uno studio contabile. Secondo me (ma ho detto che non sono del tutto obiettivo) questa visione del mondo è radicalmente falsa, la mente non è un computer. Ma dovete sapere che ci sono persone che pensano il contrario, per noi invece il computer è uno strumento di simulazione, vedremo che sul computer possiamo simulare qualunque cosa: posso simulare il moto dei pianeti, posso simulare il moto delle maree, posso simulare il traffico di una grande città, non per questo i pianeti sono un computer, non per questo le maree sono un computer, non per questo il traffico di una città è un computer, sarebbe ridicolo. Posso simulare anche il funzionamento del cervello, forse non molto bene quello per il cervello umano, ma fino al cervello della formica, forse, ci arrivo, non per questo il cervello della formica è un computer, almeno questa è la mia tesi.
Quindi utilizzo il computer come strumento di lavoro, non come modello del cervello (? o della vita?). A questo punto studieremo alcuni diversi approcci all'utilizzo del computer come strumento. Il primo che studieremo è quello che chiamo Intelligenza Artificiale Classica, soprattutto per motivi storici perché secondo me, ormai, è abbastanza obsoleto, ed è la visione più vicina all'idea che davvero il cervello è un computer.
L'Intelligenza Artificiale Classica è nata negli anni '60 e ha dato luogo al cognitivismo, che è stato un movimento estremamente importante ed ha creato anche dei modelli al computer molto interessanti, però sosterrò che questi modelli hanno fallito come spiegazione, che non funzionano. Questo però è già un risultato scientifico importante, il fatto che non funzionano ci dice delle cose molto importanti, in negativo, su come funzioniamo noi. È un po’ come il modello leonardiano del volo. Leonardo da Vinci disse che se faccio così e così volo, questo è un modello scientificamente rispettabile. Si prova a fare una macchina così, non vola, questo è un risultato scientifico fondamentale, il volo non è dovuto all'agitazione delle ali. Io credo che l'Intelligenza Artificiale Classica raggiunga lo stesso risultato, è la dimostrazione in negativo che un certo modello della mente è falso.
A questo punto cominciamo ad arrivare a modelli un pochino più credibili. Vi presenterò le cosiddette " reti neurali ". La rete neurale è un modello del funzionamento dei neuroni dentro un sistema nervoso centrale o dentro un cervello. Ha moltissime semplificazioni, è infinitamente più semplice di una rete neurale reale, ma vedremo che, nonostante queste semplificazioni, ci sono dei comportamenti umani che possiamo modellare con modelli molto semplici, con grande successo.
Do un esempio su cui torneremo nella terza lezione, l'apprendimento del passato del verbo inglese. In inglese i verbi hanno dei passati estremamente complessi, si è tentato di fare dei modelli di questo con l'Intelligenza Artificiale Classica, ma sono enormi, complicati e poco credibili. Invece abbiamo fatto dei piccoli modelli con reti neurali, stranamente funzionano, sono piccolissimi eppure riescono non solo a riprodurre l'apprendimento del passato del verbo ma anche a riprodurre esattamente gli stessi stadi e gli stessi errori che fanno i bambini in laboratorio. Quindi ritengo che questa sia una dimostrazione che questo modello è perlomeno interessante. Vedremo con le reti neurali molto sull'apprendimento, sulla memoria, sull'azione; vedremo come posso modellare memoria, apprendimento e azione, ma vedremo anche che ci sono dei limiti, non si riesce a progettare reti neurali molto complesse. Riesco a fare il modello di un comportamento molto semplice ma quando tento di modellare qualcosa di complesso non ci riesco. I sistemi complessi in natura sono frutto dell'evoluzione biologica, quindi il prossimo passo di questa nostra storia sarà di studiare l'evoluzione dell'intelligenza e vedremo che con il computer posso non solo simulare il funzionamento di un sistema intelligente, posso anche simulare l'evoluzione di questo sistema, quindi non devo progettarlo io, come progettista, ma lo faccio progettare dalla natura. Questa sembra una cosa strana, difficile da capire, ma lo dimostreremo nella lezione. E questo mi consente di arrivare a livelli di complessità che non posso raggiungere quando lavoro da solo.
Qui ho invertito l'ordine dei due moduli, in realtà arrivo adesso a cognizione e corpo.
Ho la mia rete neurale, che è frutto dell'evoluzione, faccio un modello che fa evolvere questa rete neurale, che la fa nascere, però è ancora qualcosa di irreale, di astratto. Perché?  Gli manca un corpo, non si stanca, è solo una cosa sullo schermo, non ha desideri, non ha fame, non ha sete, non si danneggia, se casca dalla scrivania non gli succede niente. Questa è una debolezza, cioè è un modello di intelligenza troppo astratto, la vostra intelligenza dipende terribilmente dal vostro corpo, come la mia, cioè il corpo è una parte imprenscindibile dell'intelligenza. E vedremo che ci sono delle cose che non riusciamo a studiare solo sul computer, bisogna prendere quel computer e metterlo dentro una vera e propria creatura. Spero, addirittura, di portarvi qualcuno di questi in aula, sto cercando dei fondi per farlo, non prometto ma spero di portare qualcuno di questi robot in aula.
Vedremo che quando il robot ha un corpo da un lato questo fa sì che i problemi dell'intelligenza siano molto più difficili di quello che pensavamo, ma per uno strano trucco della natura sono anche molto più semplici; avere un corpo mi aiuta, vivere nel mondo fisico mi aiuta. E qui stiamo arrivando verso questa nuova visione dell'intelligenza di cui dicevo all'inizio. Gli inglesi la chiamano " embodied intelligence ", intelligenza con il corpo, e anche questo faremo al computer, il che mi porta all'ultima lezione dove parlerò dei problemi filosofici dell'intelligenza, torneremo alla domanda iniziale: cos'è l'intelligenza ?  e vedremo le risposte che il computer ci ha dato, i modelli.
Parleremo di alcuni problemi classici: mente e corpo cosa significa; l'intelligenza: natura oppure apprendimento; la coscienza: cos'è la coscienza, cos'è l'inconscio, il mio robot può avere un inconscio?, il mio robot può sentire dolore? o piuttosto quali sono le condizioni perché il mio robot possa sentire dolore. Questi sono problemi che mi affascinano da quando avevo 16 anni e vi avverto subito non ho la risposta; esamineremo la domanda ma non vi darò la risposta perché non la so ancora però è quello dove vorremmo arrivare.
Questo è il percorso che voglio percorrere insieme e sarà lungo, sarà il corso forse più interdisciplinare che farete mai durante il vostro cammino di studi. Toccheremo pezzi di biologia, di psicologia, di filosofia, di matematica (prometto che non sarà complicata), di neuroanatomia, del funzionamento del cervello, di medicina, toccheremo tutto, tenterò di farlo ad un livello che sia comprensibile e chiaro, ma visto che siamo pochi vorrei trattare questo molto di più come una discussione fra di noi che non come una cosa dove io insegno e voi imparate, perché anch'io, se qualcuno mi contesta, rischio di imparare qualcosa, il che è molto utile.
Per quanto riguarda i libri ve ne ho indicati 3 come testi d'esame.
C'è un libro di Domenico Parisi, "La mente", editore Il Mulino, che è abbastanza facile. Forse non sarebbe una cattiva idea cominciare da là.
Poi c'è un'antologia, si chiama  "La filosofia degli automi", di tutti gli scritti classici in questo campo.
Non avete l'obbligo di leggere per intero nessuno di questi libri, voglio soprattutto che ascoltiate e impariate.
Il terzo è un libro bellissimo, di un tale che si chiama Andy Clark, che si intitola   "Essere là".
Vi consiglio di leggere tutto il libro di Parisi e di andare saggiando anche senza leggerla tutta l'antologia. Quello di Clark è un libro molto difficile, se riuscite a leggerlo tutto e a capirlo è veramente un'esperienza arricchente, è un bellissimo libro, però non verrete puniti se non ci  riuscirete. È come leggere un'importante opera della letteratura, ve lo consiglierei anche se non fareste il corso perché è veramente un libro importante e la nuova visione dell'intelligenza che vi darò è molto simile a quello che sostiene Clark. Comunque partirei con Parisi, che è un libro abbordabile, dopodiché se vorrete ulteriori approfondimenti basterà chiedermelo, sono felicissimo quando gli studenti leggono. Mi rendo conto che le biblioteche hanno grandi problemi quindi vi porterò le fotocopie di tutto il necessario, ma nessuno verrà punito per non aver studiato le 200 fotocopie che vi darò, se qualcuno però lo vorrà fare lo incoraggerò moltissimo; per cui per chi vuole ulteriore materiale lo porto io. Nei limiti del possibile userò materiale italiano, chi può leggere l'inglese senza difficoltà ha un piccolo vantaggio perché purtroppo le cose in italiano sono sempre 4-5 anni indietro rispetto a quello che esce in inglese. D'altronde l'articolo medio in questa materia è lungo 3/4 pagine, per cui se sapete leggere l'inglese, anche male, ci riuscirete.
Questo è il programma del corso, adesso vediamo invece il programma di oggi.
Inizierò chiedendomi e chiedendovi che cos'è l'intelligenza. Vedremo che è qualcosa di molto controverso e tenterò di definire, con un po’ più di precisione rispetto a quello che ho fatto poc'anzi qual è la sfida dell'Intelligenza Artificiale, cos'è che vogliamo fare.
Poi parlerò, abbastanza brevemente, del cognitivismo, ne parlerò brevemente perché poi nella prossima lezione ci andremo in profondità, per cui oggi vi darò solo il contorno, ed è il cosiddetto programma dell'Intelligenza Artificiale forte, di cui più avanti.
(Se avete un indirizzo e-mail vi mando direttamente tutto il materiale molto volentieri, rispondo anche a domande fuori lezione molto volentieri).
Poi parlerò dei limiti dell'Intelligenza Artificiale classica, vedremo che ha parecchi limiti e presenterò un metodo alternativo.
La scuola a cui appartengo si chiama Nuova Intelligenza Artificiale, non abbiamo un nome, alcuni ci chiamano "connessionismo", altri parlano di  "vita artificiale", ci sono tanti nomi ma i nomi hanno poca importanza, altri ancora parlano di  "embodied intelligence", intelligenza col corpo.
Vedremo un inizio di approccio alternativo, vi presenterò dei piccoli veicoli, dei piccoli robot, che si chiamano  "veicoli di Braitenberg", che vi daranno un piccolo assaggio in anticipo di quello che faremo nelle prossime settimane.
Questo è quello che faremo tra oggi e domani, è il programma per questa settimana.
LUCIDO  5
Iniziamo con la domanda:   Che cosa è l’intelligenza?
Ho guardato in un dizionario di psicologia di lingua inglese ed ho trovato questo:

“Esistono pochi concetti in psicologia che abbiano ricevuto un’attenzione così dedicata e pochi che abbiano resistito così bene ad ogni tentativo di chiarificazione”

(Penguin Dictionary of Psychology, Reder 1995)

In altre parole giornalisti, politici, scrittori, polemici, ogni giorno parlano di intelligenza però ognuno usa questa parola in modo diverso, cioè non c'è consenso su cosa significhi intelligenza, e quando passo dai non addetti ai lavori agli psicologi la situazione non migliora, peggiora. Un'idea che il mio cane è intelligente, il mio bambino è intelligente, eccetera,  più o meno ogni persona la ha. Gli psicologi mettono questo in dubbio, non ne sono sicuri, per cui c'è molto dubbio su cosa sia questa intelligenza. C'è un manuale che non ho messo nel vostro elenco dei libri da leggere perché è troppo lungo, è lunghissimo e poi la traduzione italiana ancora non esiste, di un tale Pfeiffer, che è un mio amico, lavora in Svizzera, che è andato ad intervistare grandi psicologi e ha chiesto loro cos'è l'intelligenza.
LUCIDO  6
Qualcuno ha risposto: intelligenza è capacità di pensiero astratto, per cui, per esempio, se dico che c'è una persona che fa 300 metri a piedi, poi gira a destra con angolo retto, fa 200 metri andando in un'altra direzione e domando: quanto è lontana dal punto di partenza ?  Un matematico penserà: ah è un triangolo con un angolo retto, risolvo con il teorema di Pitagora e calcolo la distanza. Questa è capacità di pensiero astratto, è chiaro che io la  possiedo, il mio cane invece molto probabilmente no. Questa è una definizione di intelligenza.
Però posso pensare ad una capacità totalmente diversa: posso prendere il mio gatto, posso lasciarlo in mezzo ad una campagna, quel gatto non sa nulla di quella campagna, è abituato a vivere in casa, eppure girerà, catturerà topi, uccelli e cose del genere, vivrà, probabilmente felicemente e qualcuno potrebbe dire che questa è una capacità di intelligenza, il gatto la ha ma il mio bambino no. Perché se il mio bambino lo porto nella stessa campagna muore di stenti, per cui questa è un'altra definizione di intelligenza che porta a un altro risultato.
Adattamento a cambiamenti nella vita: gli esseri umani hanno colonizzato ogni concepibile nicchia ecologica sulla faccia della Terra, abbiamo esseri umani nell'Artico, nel deserto, nella giungla, perfino a Roma. Riusciamo a vivere in questi ambienti, riusciamo ad adattarci a grossissimi cambiamenti. Gli esseri umani sopravvivono a guerre, sopravvivono a traumi, sopravvivono a enormi cambiamenti nella società, nell'economia; questo potrebbe essere un segno di intelligenza. Ci sono molti insetti, invece, per esempio c'è un insetto, che si chiama vespa Sphex, che in un certo senso è molto capace perché prende una preda, la anestetizza con un blando veleno e la lascia nel nido dove ha deposto le uova. Quando le uova nascono trovano questa preda ancora fresca e se la mangiano. La vespa Sphex dopo che ha messo la preda nel nido ogni tanto torna a controllare che tutto sia a posto. Se sposto la preda e la metto in vista la vespa riprende la preda e la rimette dentro e lo fa in modo ripetitivo anche 200 volte. Non si rende conto che questa cosa è inutile, io le ho cambiato l'ambiente, ho fatto sì che la preda non rimanga mai nel nido, ma la vespa non impara, anche con 200 tentativi. Quindi è poco adattiva, per cui in questo caso l'uomo è intelligente, la vespa no.
Andiamo ad un altro esempio: fusione di diversi stimoli in modo da produrre comportamenti coerenti. Ieri sera stavo guidando la macchina, in campagna, sotto una pioggia fortissima, non ero molto contento e vedevo pochissimo. Vedevo ogni tanto un pezzo della strada, ogni tanto sentivo un rumore, da questo il mio cervello è riuscito comunque a ricostruire tutte le informazioni necessarie per orientarmi. Questo lo faccio io, anche il gatto lo fa e probabilmente anche la formica. Quindi anche questa è una possibile visione dell'intelligenza.
Capacità di acquisire nuove capacità: sappiamo tutti che i bambini imparano, sappiamo tutti che i cani, i gatti possono imparare e anche animali piuttosto semplici. Forse non sapete che è possibile fare condizionamento pavloviano persino su animali estremamente primitivi. C’è una cosa che si chiama Aplysia, è una lumaca, che è stata studiata a proposito dei meccanismi della memoria perché ha dei neuroni piuttosto grandi. Perfino a questo organismo posso insegnare che un certo riflesso è negativo, è avversivo e lui impara. E questo è veramente un animale di una semplicità più unica che rara, per cui anche questa è una capacità dell’intelligenza che è condivisa da una immensa gamma di creature diverse.
LUCIDO  7
Possiamo vedere altre caratteristiche dell’intelligenza. L’intelligenza è qualcosa di quantitativo. Sappiamo tutti che ci sono molte controversie su come quantizzare l’intelligenza. C’è chi sostiene che esiste un fattore g, un’intelligenza generale comune a tutti, che si può misurare su un’unica dimensione. C’è chi, come Gardner, sostiene, invece, che abbiamo molteplici intelligenze, posso avere un’intelligenza relazionale, un’intelligenza spaziale, un’intelligenza musicale, un’intelligenza linguistica e tutte queste sono indipendenti l’una rispetto all’altra. È un dibattito aperto ma quello che non è veramente in dubbio è il fatto che l’intelligenza si possa misurare in qualche modo, è discutibile come ma il fatto che si possa misurare è abbastanza accettato da tutti.

Domanda:  …………..

Prof. WALKER:    secondo me è una questione di parole. Bisogna dire molto chiaramente cosa si sta misurando. L’intelligenza è un concetto tremendamente astratto. Almeno nell’intelligenza umana c’è la capacità di pensiero astratto, c’è il problem solving. In quasi tutte le creature c’è apprendimento e memoria, per alcuni c’è intuizione e creatività, sicuramente per gli esseri umani, per gli animali boh!
Non so se qualcuno di voi ha letto il libro di Damasio che si intitola “L’errore di Cartesio” (non è un libro del corso e non vi dà nemmeno mezzo punto) che vi consiglio molto animatamente. In questo libro Damasio, che è un neurologo, studia dei pazienti che hanno subìto dei danni neurologici ai lobi frontali che limitano la loro capacità affettiva senza nessun effetto sulla capacità intellettiva, per cui possono risolvere problemi astratti bene quanto una persona normale. Però nella loro vita di tutti i giorni vivono malissimo: buttano via i soldi, hanno una vita affettiva rovinata, eccetera, e pare che non siano capaci di avvertire il pericolo, di percepire cose attraenti o cose pericolose, fanno scelte sbagliate. Quindi c’è chi sostiene che senza avere emozioni sane non si può avere una vera intelligenza, riconoscibile come tale.
Possibilità di sopravvivere in un mondo complesso, capacità percettive e motorie, e potremmo andare ancora avanti per tantissimo, potrei fare altri lucidi di altre definizioni.
Un paio di distinzioni comunque si possono fare.
LUCIDO  8
Facciamo qualche distinzione tra intelligenza animale e intelligenza umana.
Una premessa: l’intelligenza è frutto dell’evoluzione, ed io prendo come base che esistono comunque degli elementi di continuità fra intelligenza animale e intelligenza umana. Non è che gli esseri umani sono nati intelligenti e tutto ciò che è venuto prima era privo di intelligenza, mi sembra biologicamente insostenibile. Quando parliamo di intelligenza animale, di che tipo di cosa stiamo parlando ?  Qualcuno di voi sa qualcosa sulla danza delle api ?
Le api stranamente sono abbastanza intelligenti. Le api vanno in cerca di nettare e tutte le api singolarmente volano, abbastanza casualmente, intorno all’alveare fin quando una di loro non trova fiori del tipo che piacciono a quelle api (alcuni fiori sono migliori di altri). Dopodiché torna all’alveare, incontra un’altra ape e fa un ballo. In questo ballo punta il corpo in una certa direzione, che indica la direzione in cui si trovano questi fiori. Non solo, ma se il nettare è poco buono oppure è poco balla lentamente, se invece è buono o è ricco balla velocemente. A questo punto l’altra ape va anche lei verso questi fiori e se incontra altre compagne lo indica anche a loro così dopo un po’ ci sono migliaia di api  a prendere il nettare da quei fiori. Quando hanno preso tutto i balli cessano e quindi devono andare a prendere il nettare da un’altra parte. Questo sembra un linguaggio, è un linguaggio. Avevamo imparato da qualche parte che il linguaggio è un prerequisito dell’intelligenza umana, questi invece sono degli insetti, con un cervello microscopico rispetto al nostro, eppure mostrano alcuni segni di intelligenza.
Do un altro esempio. Voi conoscete il prof. Miglino ?   Io e il prof. Miglino facciamo esperimenti su una cosa che si chiama  “comportamento di detour” (su questo torneremo verso la fine di questo corso perché parleremo proprio degli esperimenti che abbiamo fatto).
Cos’è un detour ?   Prendo un animale e gli do un bersaglio, che può essere cibo (normalmente è cibo o nella natura può anche essere un partner per accoppiarsi, queste sono le due cose più attraenti per gli animali), e lo metto davanti a lui. L’animale lo vede, ci va dritto e lo mangia (o si accoppia); questo è facile. Dopo, però, fra il cibo e l’animale metto un muro e in mezzo al muro metto una finestra, così che l’animale vede il cibo ma non riesce ad arrivarci. Cosa fa?  In una marea di specie diverse l’animale gira lungo il muro (lo si può vedere con il cane di casa) finché non trova un buco, passa per il buco, rigira e va fino al cibo. Se pensiamo a questo comportamento, quando l’animale gira lungo il muro non vede più il cibo, questo significa che da qualche parte si è ricordato che deve andare a cercarsi il cibo e in qualche modo ha un’idea di dove sta quel cibo. Anche questo è un comportamento intelligente. Non è tanto apprendimento ma memoria breve, per quei 5 secondi l’animale ricorda quello che deve fare. Questo comportamento lo troviamo nei ratti, negli scimpanzé, nei cani, lo troviamo perfino nei pulcini di 3 giorni. C’è un elegante esperimento italiano, di Regolin, che ha dimostrato che perfino pulcini di 3 giorni hanno un comportamento di
detour. Detour significa aggirare, anche questo è intelligenza, però è chiaro che questa intelligenza è molto diversa rispetto all’intelligenza umana.
Cosa ha di distintivo l’intelligenza umana (almeno così si sostiene) ?
Innanzitutto c’è l’utilizzo del linguaggio che veramente ci contraddistingue. Noi abbiamo un linguaggio ricco con semantica, con sintassi e sembra che, in qualche modo, creare un linguaggio è connaturato ad essere un essere umano. Non so se avete studiato il linguaggio dei sordi, il linguaggio dei segni. Questo è un vero e proprio linguaggio con una vera e propria sintassi ed ha una grammatica come la lingua italiana o la lingua inglese. Gli studiosi hanno trovato pochi anni fa, in Nicaragua, una casa di orfani che durante la rivoluzione nicaraguense era stata abbandonata da Dio e dagli uomini. In pratica questi bambini hanno vissuto da soli, senza nessun contatto né con persone che conoscevano il linguaggio dei segni, né con psicologi o insegnanti, in qualche modo riuscivano solo a mangiare. Questi bambini avevano evoluto da soli un linguaggio dei segni con tutte le caratteristiche linguistiche di un linguaggio umano, quindi con il tempo passato, il tempo futuro, il condizionale, il plurale, eccetera. Questo nell’arco di 10/15 anni.

Domanda: come le scimmie ?

 

Prof. WALKER:     è diverso. Ci sono interessantissime ricerche sul linguaggio delle scimmie.
C’è un gorilla e qualche scimpanzé a cui hanno effettivamente insegnato il linguaggio dei segni, però lo usano in modo molto meno grammaticale rispetto agli esseri umani. Fanno frasi estremamente brevi, mentre questi bambini fanno frasi complicate con subordinate, esattamente come noi, e questo lo hanno creato in 15 anni, stando da soli, non in milioni di anni. Questo sembra indicare che l'eesere umano è predisposto, in qualche modo, non solo a capire il linguaggio ma perfino a crearlo (tesi di Chomsky e compagnia).
Creatività artistica o scientifica:   ho grande rispetto per il mio cane ma non ha mai scritto musica classica. Noi creiamo opere d’arte, creiamo opere della letteratura, creiamo teorie scientifiche, creiamo perfino modelli dell’intelligenza sul computer. Tutte queste sono attività creative, scientifiche, teoriche che, per quel che sappiamo, gli animali non fanno.
Pianificazione:     voi 4 anni fa avete preso la decisione sciagurata di studiare psicologia. Lo avete fatto, forse, ma ne dubito, perché avevate un obiettivo chiaro in mente, avete pensato: mi iscrivo all’Università a Caserta, faccio questi 5 anni di gioia e di diletto, alla fine uscirò con una laurea e questa laurea la utilizzerò per qualcosa. Questa è pianificazione, per quel che sappiamo a questo livello gli animali non ci arrivano; c’è pianificazione negli animali ma a distanza di minuti o di ore, sicuramente non di giorni o di anni.
Problem solving:     voi avete studiato come le scimmie o i gatti possono risolvere i problemi.
Gli animali risolvono problemi. C’è un esperimento famoso con uno scimpanzé, a cui è stata messa una banana che pende dal soffitto del laboratorio. L’animale allunga la mano, la prende e la mangia. A questo punto viene messa un’altra banana, ma molto più in alto in modo tale che lo scimpanzé non ci arrivi, neanche saltando, però lascio in mezzo alla stanza una scatola. Lo scimpanzé, esattamente come farebbe un bambino, si guarda intorno, vede la scatola, ci pensa un po’, poi prende la scatola, ci salta su e prende la banana. Questo è esattamente un problem solving, è risoluzione di problemi da parte dello scimpanzé. C’è risoluzione di problemi anche da parte di animali un pochino più semplici dello scimpanzé, ma probabilmente da parte degli insetti no, gatti, cani sì, ma comunque con problemi molto, molto semplici. La maggior parte delle cose che fanno gli animali sembrano farle più o meno di riflesso, senza pensarci troppo mettono in atto un qualche comportamento che hanno escogitato. Quindi tra intelligenza umana e intelligenza animale ci sono queste differenze.
LUCIDO  9
Però ci sono anche dei punti in comune e qui stiamo arrivando al dunque, cioè a qual è l'intelligenza che studieremo in questo corso. Studieremo quella parte dell'intelligenza che gli esseri umani hanno in comune con gli animali.
Un essere intelligente, secondo me, è un essere autonomo che è in grado di risolvere tutti i problemi che gli pone un ambiente complesso. Quindi una macchina che gioca a scacchi per me non è intelligente. Questa macchina risolve benissimo un problema, il gioco degli scacchi, però non sa nulla di un altro gioco, tanto meno di come vivere. Se penso invece a quanti problemi un cane deve risolvere nel corso di una giornata: deve trovare cibo, deve mangiarlo, deve mantenere rapporti affettivi buoni o cattivi con il padrone e con gli altri cani del vicinato, deve nascondersi al momento giusto, deve aggredire al momento giusto, deve risolvere problemi enormi. E il cane fondamentalmente è autonomo, non c'è nessun aspetto della sua vita che non sappia risolvere, certo ogni tanto non risolve e finisce sotto una macchina. Questo vale per tutti gli animali, anche la vespa o il pesciolino risolvono i loro problemi in un ambiente complesso, sono più semplici del cane, però, per me, il pesciolino è più intelligente della macchina per giocare a scacchi. È autonomo quindi si adatta all'ambiente, però direi che questa è una condizione necessaria per l'intelligenza ma non sufficiente, perché il pesciolino autonomo lo è, tanto intelligente forse no.
L'altro aspetto è intelligenza come creatività.  Non intendo con questo la capacità di scrivere l'ultima canzone dei Beatles, ma significa la capacità di trovare soluzioni nuove a situazioni nuove. Quando  citavo l'esempio della vespa Sphex che tornava a fare la stessa cosa 1000 volte anche se non serviva a nulla ………….. fondamentalmente stupida. Ci sono dei buoni motivi ecologici per quel comportamento, però fondamentalmente è stupido. Quando penso allo scimpanzé con la scatola e la banana non c'è nulla nella storia né di quello scimpanzé, né della specie degli scimpanzé, né dei primati, che lo ha equipaggiato per risolvere quel problema. Quel problema è realmente nuovo. Quando prendo uno scimpanzé e gli insegno a produrre piccole frasi al computer è chiaro che l'evoluzione non ha dato allo scimpanzé la capacità di lavorare sulla tastiera. Ha trovato una situazione radicalmente nuova ed ha trovato la soluzione. Noi lo facciamo meglio, lo scimpanzé peggio. Noi abbiamo la capacità di affrontare problemi per i quali non siamo preprogrammati. Allora, per me, un essere, un programma, un sistema intelligente è un sistema capace di risolvere i problemi per i quali non è stato preprogrammato. Quindi da un lato è autonomo (e vedremo che molti dei sistemi di cui discuteremo??) e dall'altro è creativo, in qualche misura. Non deve essere tremendamente creativo, non deve risolvere tutti i problemi nuovi, perché neanche gli esseri umani riescono a fare questo, però deve poter ogni tanto risolvere un problema nuovo.

Domanda:      E se invece fosse sempre creativo ?

Prof. WALKER :       come si fa ad essere sempre creativi ? Non è adattivo essere sempre creativo. Quando guidavo la macchina, l'altra sera, non stavo pensando: oh adesso c'è una curva a sinistra, devo girare a sinistra, devo frenare un poco ma non troppo perché c'è pioggia. Non faccio questo, guido da 30 anni e l'ho totalmente automatizzato, fa parte della mia memoria procedurale (quando avete studiato i meccanismi della memoria). Quindi su questo la creatività sarebbe tremendamente antiadattiva perché la creatività richiede tempo, mentre in molte problematiche degli esseri viventi quello che conta è essere veloci. Se c'è una tigre che sta per saltarmi addosso, non voglio fare una profonda analisi …………… della natura della tigre e delle possibili strategie per evitare tigri ma voglio spostarmi e in fretta. Quindi essere creativi sempre non è positivo, a volte serve essere schematici. Le cose schematiche sono molto veloci e molto efficienti, però a volte lo schematismo non funziona. Mi posso trovare in situazioni dove quello schematismo …………… sempre guidando, l'altro giorno, dato che vivo in campagna ,c'era del ghiaccio sulla strada; sul ghiaccio non devo comportarmi nel mio modo solito, altrimenti finisco fuori strada. Quindi in quella situazione devo cominciare un'altra volta a pensare con la testa su cosa devo fare. Per cui un essere intelligente a volte lavora secondo schematismi e a volte lavora in modo creativo pensando e analizzando. E per sopravvivere bisogna avere equilibrio fra queste due cose. Solo schematismo divento come la vespa, solo creativo finisco morto, bisogna in qualche modo trovare una via di mezzo.
Fin qui solo chiacchiere, solo parole, e come scienziati siamo diffidenti rispetto alle parole. In psicologia si chiede di fare degli esperimenti, esperimenti che dimostrino qualcosa o che misurino qualcosa. Ci sono stati molti tentativi per  ……………..  in termini sperimentali, operativi come posso determinare se un sistema è intelligente o meno.
Negli anni '30 c'era un uomo geniale, su cui torneremo più volte nel corso di queste lezioni, che si chiamava Turing, era un inglese, una persona strana, assolutamente geniale, uno dei  grandi matematici di questo secolo che ha fatto due invenzioni, che non dovete confondere: una si chiama "macchina di Turing", l'altra si chiama "test di Turing". Qui stiamo parlando del test di Turing, di come posso determinare se un sistema è intelligente o meno.
LUCIDO  10
Lui dice: prendo il mio sistema, il mio computer, di cui voglio dimostrare l'intelligenza, e lo metto in una stanza in modo che nessuno lo possa vedere, poi prendo un essere umano e lo metto in un'altra stanza e infine prendo un secondo essere umano e lo metto in una terza stanza con un telex (come dice Turing, ma potrebbe essere un fax o un computer) che è collegato sia con l'altro essere umano che con il computer. Il secondo essere umano pone delle domande, dice per esempio: "ti piace il tè ?" e il computer e l'essere umano nell'altra stanza devono rispondere. Il computer può dire: "sì mi piace moltissimo il tè" e l'essere umano può dire "no, non mi piace il tè, preferisco il caffè". Il secondo essere umano interrogando il computer e l'altro essere umano deve determinare quale è il sistema intelligente, cioè confrontando le risposte deve determinare qual è il computer e qual è l'essere umano. Se riesce a distinguerli significa che il computer non è veramente intelligente, se invece sono indistinguibili o metà delle volte sbaglia nella distinzione significa che realmente è stato fatto un sistema intelligente. Questo è il test di Turing. Come potrei distinguere tra l'essere umano e il calcolatore ?  Potrei dire quanto è il quadrato di 236,214 ?  Se il computer risponde istantaneamente e la persona umana ci mette un quarto d'ora non ci siamo. Potrei dare una piccola poesia e chiedere: "come la trovi?", andando a vedere come rispondono. L'essere umano dirà: è bella o è brutta, è troppo lunga, mi piace la metrica, il computer cosa risponderà? 
Il giorno in cui, secondo Turing, il computer sarà indistinguibile nelle sue risposte rispetto all'essere umano a quel punto, e a quel punto soltanto, avrò creato un sistema intelligente, secondo la sua definizione. Però questo è un po’ in contrasto con la visione dell'intelligenza che vedevamo prima. Prima parlavamo di intelligenza di cani, di ratti, di vespe ed è chiaro che se metto un cane in quella stanza distinguo molto facilmente tra il cane e il computer, il cane non manda fax. Quindi il test può essere ritenuto non molto convincente. Qui c'è da fare una distinzione: il test di Turing si basa solo sull'intelligenza astratta, simbolica e non a caso comunicavo con il computer soltanto mediante fax, mediante simboli, mediante caratteri scritti. Questo è un limite, perché non funzionando con gli animali esclude una marea di  intelligenze che realmente esistono.
LUCIDO  11
Questa intelligenza astratta, simbolica funziona benissimo in un gioco, come il gioco degli scacchi, dove ci sono le regole formali, però non c'è nessun coinvolgimento del corpo, cioè non è come il problema del detour, di cui parlavamo prima. Lì c'è un vero muro, una vera finestra e c'è una vera cagna di là da cui il maschio vuole arrivare in fretta.
L'intelligenza embodied, l'intelligenza con il corpo si riferisce a un altro tipo di intelligenza, come quella del gioco del calcio. È pensabile almeno giocare a calcio senza linguaggio, forse a volte sarebbe meglio, il calcio però richiede una grande possibilità di soluzione di problemi: devo avere una strategia, non mi devo stancare troppo nel primo quarto d'ora, devo decidere le mie posizioni, le mie zone, c'è tattica, c'è movimento motorio, c'è l'autonomia di cui si parlava prima, cioè il calciatore deve risolvere una marea di problemi nel corso della partita e c'è anche il pensiero creativo, il calciatore da una certa posizione pensa siamo qui, lì attacchiamo e lì facciamo gol. Quindi ci sono tutti gli aspetti dell'intelligenza, per cui vi propongo un altro test, scritto dal mio amico Pfeiffer.
LUCIDO  12
Pfeiffer ha detto che il test di Turing è troppo astratto, per cui ne ha proposto un altro. Faccio una squadra di robot che devono giocare a basket. Il giorno che creo una squadra di robot che giocano a basket, calcio o qualunque gioco umano, che riesce a battere una squadra umana a quel punto davvero avrò realizzato qualcosa di intelligente. E si tratta di intelligenza embodied perché devono correre, devono mirare, devono vedere dove si trovano gli altri. Quindi il giorno che faccio una squadra di agenti artificiali che giocano a basket e che vincono, ma io dico anche che perdono poco male, ho fatto davvero un sistema intelligente.
LUCIDO  13
Questo mi porta a quello che chiamo la sfida dell'intelligenza artificiale. Parto dall'assunto materialista, penso che voi abbiate fatto un po’ di storia della psicologia, cioè circa 100 anni fa molti pensavano che l'intelligenza e la vita stessa fossero emanazione di un qualche spirito vitale, c'era questa cosa misteriosa che girava nel cuore, nel cervello, nell'anima e si era vivi grazie a questa sostanza misteriosa. Oggi praticamente nessuno crede più a questo. Noi crediamo, io credo profondamente, che ogni aspetto dell'intelligenza, quindi compreso il corpo, compresa la coscienza, comprese le emozioni, compreso tutto, si basa ed è compatibile con le leggi della fisica e della chimica. Non solo, ma non c'è bisogno di nessuna spiegazione che va al di là di questo, tutto questo è sufficiente per spiegare l'intelligenza, questo è il mio assunto. Può darsi che fra 50 anni qualcuno dimostrerà che non è vero. Noi crediamo in questo che è un assunto basilare della scienza moderna. Se questo è vero, perché potrebbe dimostrarsi falso, non c'è nulla, in via di principio, che mi impedisce di creare un sistema intelligente, perché le leggi della fisica e della chimica le conosco. Può darsi che sia tecnologicamente difficile, può darsi che non lo sappia fare oggi, però in via di principio non c'è nulla che mi impedisca di farlo.
Allora la sfida dell'Intelligenza Artificiale (da 30 anni ci stiamo provando) è quella di creare sistemi veramente intelligenti, intelligenti nel senso di Pfeiffer. Ci piacerebbe tanto fare una squadra di agenti che possa battere una squadra umana a basket. Noi crediamo che sia possibile fare questo. Crediamo anche un'altra cosa, che nel tentativo di fare questo capiremo tantissimo su come veramente funziona la mente umana. Noi scienziati non lo stiamo facendo a scopo pragmatico, non stiamo facendo macchine perché vogliamo  ……………  le fabbriche, lo stiamo facendo perché pensiamo che creare queste cose ci insegni qualcosa su noi stessi, è quindi un'impresa di conoscenza, un'impresa scientifica e un'impresa se vogliamo filosofica, perché  noi una volta fatto questo, se ci riusciamo, oppure una volta fallito, ma in modo interessante, avremo capito molto di più quello che siamo. È una sfida veramente grande. Noi non lo facciamo per sostituire l'uomo ma perché vogliamo capire. Poi ci possono essere persone che usano questi risultati per tentare di sostituire l'uomo. Visto che oggi abbiamo grandi problemi ad imitare un topo, siamo molto lontani dall'imitare un topo, devo aprire una parentesi: c'è un signore che si chiama Demetts??, che è un filosofo della scienza, il quale dice: io vedo degli animali che giocano oppure dei robot che giocano ed ho la forte tendenza, come essere umano, ad interpretare questo gioco come se loro avessero coscienza, come se loro avessero obiettivi, come se loro avessero intenzioni e mi comporto così perché tutta la mia storia,  la mia cultura mi porta mi porta ad interpretare così. Lui la chiama " intentional stamps??" cioè è una funzione intenzionale per cui interpreto il mondo intenzionalmente.
Se vedo questi giocattoli  ho una forte tendenza ad attribuire al giocattolo cose che non ha: intelligenza, intenzioni, obiettivi. Quello che l'Intelligenza Artificiale insegna è anche come costruire cose che sembrano avere questi requisiti; con sistemi molto semplici possiamo imitare comportamenti apparentemente molto complessi, lo vedremo in questo corso. Però di fatto tutto ciò che esiste a livello di giocattolo oggi è incredibilmente semplice, perfino rispetto all'intelligenza degli insetti, per cui è vero che un giorno faremo forse delle cose che entreranno in competizione con l'uomo ma siamo molto, molto lontani oggi. Per cui non dico che non è una preoccupazione, un giorno bisognerà pure pensarci, ma non è un problema immediato di oggi e non penso che lo vedrò io.
Domanda :  ma quando è nata l'Intelligenza Artificiale ?

 

Prof. WALKER :      ci arriviamo con il prossimo lucido.
LUCIDO 14
Modelli dell'intelligenza:  vi ricordate di Cartesio ? 
Per Cartesio l'uomo era una macchina, lui pensava all'uomo come a una specie di orologio super, con tante ruote che giravano e girando queste ruote avrebbero prodotto movimento e pensiero. Però il pensiero era una cosa molto complessa, bisognava avere la ghiandola pineale per trasmetterlo verso la mente. Nel 600 quando lui scriveva la meccanica c'era e lui pensava all'intelligenza come qualcosa che poteva nascere dalla meccanica della sua epoca. Negli anni '30 di questo secolo l'uomo ha cominciato a pensare ai primi computer e Turing, che abbiamo già incontrato e lo rivedremo fra qualche minuto, ha cominciato a pensare che magari il computer poteva essere un modello del cervello. Quindi Turing ha cominciato a pensare che fosse possibile modellare il pensiero in un computer e questo è l'inizio dell'Intelligenza Artificiale come oggi la conosciamo. Inizia molto lentamente negli anni '30 con grossi salti in avanti dagli anni '50 in poi, fino ad oggi. Negli anni '40 è nata la cosiddetta scuola cibernetica, di questo parleremo più avanti, che vedeva il cervello come un sistema autoregolato. Questa era una visione minoritaria per tutti gli anni '40, '50, '60 e '70. Oggi è tornata in voga, è molto importante e su questo torneremo perché certi elementi delle nostre teorie, dell'Intelligenza Artificiale Nuova, vengono da là, ne parleremo già oggi. E poi c'è quella che io chiamo Nuova Intelligenza Artificiale, dove l'intelligenza è vista come il prodotto di un sistema adattivo complesso. Cosa significa questo lo vedremo più avanti, non c'è bisogno di vederlo subito. Per cui la storia dell'Intelligenza Artificiale nasce …… con Cartesio, ma nasce in senso moderno negli anni '30 e diventa seria negli anni '40 e '50. Guardando indietro possiamo dire che nasceva allora, ma nessuno se ne rendeva conto all'epoca.
LUCIDO  15
Vorrei partire con l'Intelligenza Artificiale classica e con la cosiddetta macchina di Turing. Ho detto che Turing ha inventato due cose: una è il test e l'altra è la macchina, le due cose non si devono confondere. La macchina è scienza pura, il test è speculazione, cioè quest'ultimo lo ha inventato per divertimento, la macchina no. Vi aggiungo una parentesi su chi era questo Turing. Era un grande matematico, non era un ingegnere e negli anni '30 ha dimostrato, in matematica, alcuni risultati fondamentali, in particolare ha dimostrato che ci sono delle cose che in matematica non sono dimostrabili, esistono cioè delle verità in matematica non dimostrabili, ma questa è una parentesi. Secondo:  durante la Seconda guerra mondiale ha lavorato in campo matematico, per gli inglesi, nel tentativo di decifrare i codici dei tedeschi e a questo scopo lui utilizzava questi computer di cui discuteva negli anni '30.  E' riuscito a decodificare un codice che si chiamava "enigma", che veniva generato dalla macchina che avevano i tedeschi e in questo modo gli inglesi, dal '43 in poi, sono riusciti a leggere tutte le comunicazioni dei tedeschi verso i loro eserciti. Quindi questo lo si deve a Turing, che oltre ad essere un grande matematico ha anche aiutato gli inglesi a vincere la guerra. Purtroppo era gay, è stato condannato per questo, in Inghilterra era penalmente condannabile e lui si è suicidato, per cui ha avuto una vita molto triste. Però è veramente uno dei grandi di questo secolo. Torniamo a quello che lui ha fatto.
La macchina di Turing:   immaginiamo di avere un grande nastro di carta, un nastro di lunghezza infinita e una piccola stampante, con cui si può scrivere sulla carta o un 1 oppure uno 0. La carta ha un motore quindi si può portarla avanti o indietro. A questo punto decido che certe combinazioni di 1 e di 0 rappresentano delle istruzioni. Posso dire per esempio che se scrivo 1 0 0 questo significa scrivere 0 sulla ………posizione sul nastro, se scrivo 1 0 1 questo significa scrivere 1 sulla prossima posizione sul nastro e posso creare delle parole di un linguaggio che dicano al computer cosa fare. È una codifica binaria di istruzioni, queste istruzioni sono tutte nella forma:
- scrivere qualcosa sul nastro,
- correggere qualcosa sul nastro,
- leggere qualcosa sul nastro,
- se leggi fare qualcosa, che magari è scrivere di nuovo o leggere di nuovo, spostare il motore,   saltare da un'altra parte.
Lui ha creato un insieme molto piccolo di istruzioni e ha dimostrato che in questo modo non c'è nessun problema risolvibile che non possa essere risolto da una macchina di questo genere. Questo si chiama computabilità universale, cioè una macchina con questo nastro di lunghezza infinita, con un numero molto limitato di istruzioni ( nel suo sono 10 o 12 ma altre persone hanno proposto diversi insiemi di istruzioni ) posso risolvere qualsivoglia problema computabile: 2 più 2, oppure tradurre un testo dall'inglese al francese, oppure determinare l'orario delle lezioni all'Università di Caserta. Qualunque cosa che abbia una soluzione questa macchina la può risolvere e questo è un risultato matematico, non opinabile. Lui chiamò questo " computer universale" e questa è la base di tutta l'informatica moderna. Però lui non fece mai questa macchina, questa fu solo un piccolo scritto su una rivista scientifica.

Questo è linguaggio informatico: se <condizione> allora <azione>, più avanti vedremo l'esempio di un programma, ma la condizione può essere: 

se il numero che hai appena letto è 1 allora scrivi un altro 1 sul nastro,

se è uno 0 scrivi uno 0 sul nastro, oppure

se i prossimi tre numeri sono 1 0 0 saltare tre passi, come nel gioco dell'oca.

Quindi la condizione è qualcosa che deve essere scritto sul nastro, l'azione è quello che deve fare la macchina una volta scritto questo sul nastro. Penso che qualcosa del genere in informatica ve l'abbiano insegnato. Vedremo molto più concretamente tra pochi secondi. Dunque dicevo che questa cosa era soltanto un modello nella mente del signor Turing, non c'era negli anni '30 né la tecnologia né i soldi per realizzare la sua macchina. Durante la Seconda Guerra Mondiale invece i computer servivano per scopi militari, fondamentalmente due.

Uno per criptologia: tutti, i tedeschi volevano leggere le comunicazioni degli inglesi e gli inglesi volevano leggere le comunicazioni dei tedeschi.

Secondo per puntamento di artiglieria: dato un bersaglio che sta là, conoscendo le leggi della balistica bisognava calcolare come puntare l'artiglieria.

Entrambe queste cose avevano bisogno del computer, quindi si è cominciato a tentare di fare una macchina seguendo il modello di Turing.

LUCIDO  16
Allora il nastro cosa poteva essere ?   Poteva essere davvero di carta. All'inizio hanno fatto dei nastri di carta con dei buchi, carta traforata. Poteva anche essere un nastro magnetico, nessuno diceva che doveva essere per forza un nastro di carta, quindi si scriveva con un impulso magnetico su questo nastro.
Come potevo leggere ?   Potevo leggere magneticamente, potevo leggere anche otticamente, c'erano diversi modi.
Come c'erano diversi modi per codificare le istruzioni e per codificare l'output. Turing ha dato un esempio di un insieme di istruzioni, ma non era l'unico esempio possibile, ne sono stati inventati diversi.
Ma c'è una cosa che è importante: come fai il nastro, come codifichi le istruzioni, come codifichi i dati non ha nessuna importanza, a prescindere da questo una macchina fatta in questo modo sarà sempre e comunque un calcolatore universale. Quindi se scrivo su di un nastro magnetico o su di un nastro di carta non importa,  la macchina continuerà a funzionare, questo è facile da capire. Se dico che il numero 1 si scrive 0 1 oppure se dico che il numero 1 che si scrive 1 0, cioè se deve iniziare dall'inizio o dalla fine del codice binario non ha nessuna importanza, la macchina continuerà a funzionare. Se decido che 1 1 1 significa addizione o che 1 1 1 significa moltiplicazione non ha nessuna importanza, basta che quelle operazioni esistano.
Quindi c'è un concetto di fondo: come è fatto questo oggetto ingegneristicamente, come è implementato, è irrilevante al suo funzionamento. Quando studieremo il cervello troveremo che questo è un assunto molto importante e in biologia è falso ma per il computer no ( poi vedremo perché è falso ). Se per esempio il computer ha le valvole o i transistor è importante per l'ingegnere perché il transistor è possibile farlo piccolo, la valvola no, ma ai fini del funzionamento non cambia nulla, dieci transistor o dieci valvole sono esattamente equivalenti.
Quello che conta è il software, le istruzioni. Una macchina fatta così non è in grado di far nulla, perché faccia qualcosa bisogna darle le istruzioni. Ogni volta che lavorate con un computer lavorate con un programma.
Un programma non è altro che una lunga sequenza di istruzioni, quindi in questa visione del calcolatore quello che conta non è l'hardware, non è la macchina, ma il software, le istruzioni.  Questo …………… un passo molto importante della psicologia. A questo punto, visto che i computer funzionavano, visto che il software funzionava, qualcuno ha cominciato a pensare : e se la mente fosse software ? se vedessi il cervello come hardware? 
Questa è una visione di Intelligenza Artificiale classica, la mente come software.

Seconda cassetta
Come abbiamo visto nella prima metà della lezione la macchina universale si poteva implementare in tanti modi diversi: nastri magnetici, nastri di carta, valvole, transistor, quello che contava non era l'hardware bensì il software e questo ha suggerito a qualcuno l'idea che anche la mente fosse software. Su questa idea della mente come software torneremo tra qualche minuto, ma prima di tornarci voglio parlare un po’  di più di computer perché è essenziale per quello che segue.

LUCIDO  17
Dopo Turing venne un altro genio questa volta ungherese, si chiamava John Van Neumann.
John Van Neumann fu tremendo, fu uno dei fondatori dell'economia moderna, della matematica moderna, ha creato l'informatica moderna, era un esperto di robotica, ha inventato gran parte della teoria dei giochi, cioè fondamentalmente in metà della scienza lui ha dato il suo contributo, era un fisico di grande successo, era veramente uno dei geni del XX secolo.
Ai fini dell'informatica ha inventato quello che si chiama il modello Van Neumann che è il computer che tutti noi utilizziamo oggi.  Il  99,99 %  di tutti i computer del mondo sono computer Van Neumann. 
In cosa consiste un computer Van Neumann ?
Possiede quello che si chiama  " Central Processing Unit ", che è il microprocessore in un computer moderno, cioè quello che fa i conti. Se gli do due numeri lui addiziona questi due numeri oppure li moltiplica oppure può leggere un pezzo della memoria, può scrivere nella memoria, per cui lui fa fondamentalmente tutte quelle operazioni che fa una macchina di Turing: scrive su un nastro, che non è più un nastro, legge da un nastro, che non è più un nastro, fa piccole operazioni aritmetiche, ma molto semplici (più avanti vedremo quali fa), fa piccoli salti sul nastro, salta da un pezzo della memoria a un altro ma fondamentalmente è semplice.
Poi ci sono due tipi di memoria. C'è quella che si chiama memoria volatile (che in termini semplici è la memoria che se ne va quando spegnete il computer) che è molto rapida. E poi c'è la memoria permanente che invece è la memoria che può essere su un floppy disk,  può essere sul disco rigido di un computer,  può essere su un nastro. Quindi Van Neumann ha diviso la memoria di Turing, che era tutta su un unico nastro, in due pezzi. Dal punto di vista della logica questo poco importa, lui poteva avere tutto su un nastro, l'unico motivo per cui ha fatto in questo modo è che così è più veloce. La memoria volatile in un computer moderno risponde in circa 10 nanosecondi, cioè milionesimi di milionesimi di secondo, il nastro risponde in millisecondi, quindi è molto, molto più lento. E poi quello che è fondamentale: questo computer è controllato da un programma. Un programma è una sequenza di istruzioni che sono scritte in quello che si chiama  "linguaggio macchina", cioè sono scritte come serie di 0 e 1, una certa sequenza ha un certo significato.
LUCIDO  18
Allora quali sono queste istruzioni ?  Sono sempre molto semplici, per esempio sul personal computer, come quello che usate voi oggi, ci sono circa 250 istruzioni ma sono solo 10 o 20 quelle che si usano sempre.
Ci sono istruzioni come ADD che significa:  prendo un numero che sta nella memoria e lo aggiungo ad una cosa che si chiama l'accumulatore che sta nel processore. Per cui se c'era 1 nel processore ed io prendo il numero 6, ADD fa  1 + 6  uguale 7.
MOV significa che prendo qualcosa che sta scritto nel processore e lo metto su un certo indirizzo di memoria per cui quel 7 lo scrivo da qualche parte in memoria.
JMP ( jump ) significa che vado ad una certa istruzione, quindi salto magari dalla quinta istruzione alla duecentesima istruzione.
Molto importante è il concetto di locazione di memoria: se esamino quella memoria volatile, ogni pezzo della memoria ha quello che si chiama indirizzo, una locazione, quindi se voglio un certo numero vado a leggerlo in un certo indirizzo della memoria, se voglio un'istruzione dal computer anche l'istruzione sta nella memoria, la vado a leggere in un certo indirizzo della memoria. Quindi il C P U legge un'istruzione, decodifica un'istruzione, fa quello che dice l'istruzione e poi legge la prossima e così prosegue. Così funzionano le macchine Van Neumann, che sono tutti i computer moderni. Allora queste istruzioni: lì ho scritto ADD o MOV, queste si chiamano istruzioni assembler, in realtà le istruzioni non sono scritte così ma sono scritte in codice binario. Ogni istruzione è un numero, però esiste un rapporto biunivoco tra numeri e istruzioni. Questo rapporto non è lo stesso per ogni computer, diversi computer hanno diversi insiemi di istruzioni, ma un numero corrisponde sempre  ad una istruzione in assembler. Quindi MOV su un certo computer si codifica sempre allo stesso modo, su di un altro computer può essere codificato in modo diverso.
LUCIDO  19
Con queste istruzioni posso:
- assegnare un valore ad una variabile, quindi fondamentalmente scrivere qualcosa su un nastro;
- leggere il valore di una variabile quindi posso leggere qualcosa che sta sul nastro;
- sommare due variabili;
- confrontare due variabili, e questo è fondamentale, posso dire: se il numero che sta nell'indirizzo uno è maggiore del numero che sta nell'indirizzo due fai una certa cosa, se è minore fai un'altra cosa;
-  dire se una variabile assume un certo valore salta ad una certa istruzione.
Quindi queste sono istruzioni scritte in assembler. Se si scriveva un programma per computer negli anni '50 lo si faceva proprio in assembler: MOV, ADD e altri. Gli assembler sono molto facili ma questi programmi erano assolutamente orribili. Gli esseri umani non ragionano in termini di MOV, ADD, JMP, eccetera, noi ragioniamo in altri termini.
LUCIDO  20
Per cui a metà degli anni '50 sono stati inventati i cosiddetti linguaggi ad alto livello.
Un linguaggio ad alto livello è un linguaggio che rassomiglia molto di più a un linguaggio naturale. Non è un linguaggio naturale perché è assolutamente formalizzato. Se faccio un piccolissimo sbaglio in un linguaggio ad alto livello fallisco, cioè il computer non lo capisce più. Devo scrivere esattamente come vuole il computer, però è più umano rispetto ad assembler o al linguaggio macchina. Quindi scrivo un programma nel mio linguaggio ad alto livello e poi c'è un programma speciale, che si chiama compilatore, che legge quello che ho scritto e lo traduce in assembler, che è invece quello che capisce la macchina. Quindi io posso ragionare nei miei termini mentre il computer lo trasforma in una forma che è in grado di risolvere. Invece di avere tutto in binario comincio ad avere tipi di variabili, posso avere ad esempio i numeri real. Un numero real è un numero con punto decimale, ad esempio dico 22.7, questo invece di codificarlo direttamente in binario in qualche modo complicato, che nessuno capisce, lo scrivo esattamente come si scrive in matematica 22.7, ci pensa il computer a trasformarlo in binario. Posso dichiarare che è un integer, un integer è un numero intero, quindi ho dichiarato che quello è un numero intero, il computer lo codifica in numero intero in un certo modo. La stringa è fondamentalmente una sequenza di caratteri, quindi se dovete scrivere un testo in italiano per farlo tradurre in inglese o viceversa, quelle sono stringhe. Posso avere quindi diversi tipi di variabili e ci pensa il computer a codificare ogni tipo nel modo più giusto. E queste variabili non le chiamo più con nomi di indirizzi ma gli do dei nomi, per cui se ho un programma commerciale, posso mettere nome della variabile nome oggetto e in quella locazione di memoria scrivo scarpe e in quello di tipo stringa. Poi prezzo oggetto, quella è un'altra variabile, un'altra locazione di memoria e scrivo 230.000 lire. Poi posso mettere garanzia e scrivo 6, che significa sei mesi di garanzia. Ognuna di queste informazioni è una variabile che ha un certo suo indirizzo e ha un nome e il nome consente a me utente umano di capire meglio quello che sto facendo. Fra un attimo vedremo un programma scritto in un linguaggio ad alto livello e voi vedrete che grosso modo capirete cosa c'è scritto, se vi facessi vedere un programma scritto in assembler non ci capireste nulla.
Quindi fondamentalmente l'obiettivo di questi programmi è di rendere la programmazione più semplice, è sempre un linguaggio tecnico ma è meno tecnico, è più comprensibile agli esseri umani. In realtà non esiste un solo programma ad alto livello ma ne esistono molto per cui per esempio le cose scientifiche si fanno in un linguaggio che si chiama Fortran, le cose commerciali si facevano in un .linguaggio che si chiama Cobol, oggi molti programmi per Internet si fanno in un linguaggio che si chiama Java. Quando si scrive il sistema operativo di un computer spesso si scrive in un linguaggio che si chiama C. Ci sono diversi linguaggi per i vari usi e poi ci sono anche le mode.
Ci sono cose che vanno di moda oggi, ma fondamentalmente sono tutti uguali perché c'è sempre un compilatore e questo compilatore traduce sempre il programma in assembler e alla fine è sempre una macchina Von Neumann che lo esegue, per cui nonostante sembra cambiare tantissimo, a livello teorico non c'è nessun cambiamento reale.
LUCIDO  21
Vediamo un programma tipico. Voglio scrivere un programma per determinare se un certo numero n è un numero primo. Voi sapete che cos'è un numero primo, spero. Un numero primo è un numero che è divisibile solo per se stesso e per 1, quattro ad esempio può essere diviso per due quindi non è un numero primo, cinque può essere diviso solo per cinque o per 1 quindi è un numero primo, sette è un numero primo, undici è un numero primo. Allora scrivo una function ( questo è scritta in un linguaggio che si chiama Pascal, che è il mio linguaggio preferito e si usa fondamentalmente per l'insegnamento perché è un linguaggio molto chiaro), una funzione che chiamo ePrimo, cioè è una domanda: è primo il numero ? e gli do in pasto un numero n, che dichiaro un integer ( che significa che è un numero intero ).

Function ePrimo(n:integer):boolean

Var

i:integer;

Begin

  For i:=1 to int(sqrt(n)) do

   if  n/i-int(n/i)=0 then begin

ePrimo:=false;

exit

   End;

  End;

ePrimo:=True;

End.

Poi c'è questa parola misteriosa boolean, è un tipo di variabile e significa che il risultato di questa funzione sarà qualcosa o vera o falsa, mi deve rispondere dicendo o è vero o è falso.
Cosa faccio ?  Gli dichiaro che ho una variabile che si chiama i, che è un integer. Mettiamo che gli ho dato n = 100 in pasto, radice quadrata di 100 è 10, quindi questo copre i = 1. Poi dice  n/i, quindi if 100/1, questo è sbagliato come programma, dovevo cominciare da due, era meglio. Vedo se n/i, quindi 100/1 meno la parte intera di questo è uguale a 0, se lo è non è primo, il programma finisce, exit, esci e sto a posto, se no torno sopra e provo con il prossimo numero, 2, 3, etc., con la stessa operazione, qui c'è il resto, si divide in modo  giusto ?  Se sì significa che non è primo, esce se no provo con un altro e vado avanti fino a 10, perché una volta che ho provato tutti quelli fino a 10 ho provato tutti i possibili, quindi fino a radice             quadrata di 100 e questo mi determinerà se il numero 100 che gli ho dato in pasto è un numero primo o meno. In questo caso chiaramente 100 non è un numero primo, perché 10 x 10 o 5 x 20 fa 100. Se gli avessi dato 11, mi avrebbe risposto molto rapidamente che 11 è un numero primo. Quindi questo è un tipico programma al computer. Questo è un linguaggio ad alto livello, è scritto in inglese infatti. Questo è Pascal, Pascal è scritto praticamente in inglese. Una volta ho scritto un bel programma al computer che aveva tutte le istruzioni in italiano invece che in inglese, ma comunque non cambia niente dal punto di vista teorico.
LUCIDO  22
Vediamo le caratteristiche del computer.
È un calcolatore universale perché abbiamo visto che nonostante i linguaggi, la traduzione da linguaggio ad alto livello ad assembler, nonostante tutto questo, fondamentalmente è sempre una macchina di Turing ed essendo una macchina di Turing può risolvere qualunque problema computabile. Quindi per esempio il problema del commesso viaggiatore di cui parlavamo prima riesce a risolverlo, il problema invece del programma per cercare se il teorema di ……….. si sarebbe fermato o meno non riesce a risolverlo. Comunque se posso risolvere tutti i problemi computabili è già un grande numero di problemi.
Secondo: c'è un'estrema precisione del calcolo, se chiedo di dividere due numeri, 267 diviso 37,278 istantaneamente mi risponde e mi dà un risultato assolutamente preciso. E con il programma posso decidere quanto lo voglio preciso, posso decidere qualunque grado di precisione mi pare e piace, è solo una decisione del programma di quanto deve essere preciso.
Il computer è tremendamente veloce. Tutti   questi calcoli matematici li può fare con estrema velocità. Il computer che avete a casa, se lo avete, oggi fa intorno a 100 milioni di istruzioni al secondo. Quello che si usa per i calcoli scientifici fa 1 milione di milioni di istruzioni al secondo, cioè 1000 miliardi di istruzioni al secondo, quindi sono tremendamente veloci.
Però sono limitati ai problemi per i quali disponiamo di un algoritmo.
Cos'è un algoritmo ?   Un algoritmo è una parola complicata per dire un programma. Noi dobbiamo specificare in modo molto preciso come possiamo tradurre il problema in programma. Se devo risolvere un problema matematico questo è quasi sempre possibile, per il problema del numero primo, provo a dividere per 1, per2, per3, per 4, per 5, per 6, per 7, per 8 e per 9, se non si divide per nessuno di questi numeri so che è un numero primo, quindi è facile, spiegare questo algoritmo è facile. Mettiamo che il problema invece sia vedere 10 fotografie e scegliere quale rassomiglia più a me, riuscite a scrivere un programma per questo ?  Oppure vedere 10 fotografie e dire qual è la fotografia in cui c'è la macchina di marca Mercedes, riuscite a pensare un programma per questo ?  E' duro.
Quindi c'è una marea di problemi, che gli esseri umani risolvono, a volte anche gli animali, per i quali però non disponiamo di un algoritmo, cioè non sappiamo come scrivere un programma per risolvere questo problema. Quindi su questi problemi ancora siamo impotenti, non sappiamo cosa fare, non possiamo risolvere il problema con il computer.
Aggiungerei un altro limite che non ho scritto sul lucido: ci sono dei problemi che il computer può risolvere però ci mette un tempo infinito. Torno all'esempio del problema del commesso viaggiatore. Noi sappiamo risolvere in modo esatto il problema del commesso viaggiatore con qualcosa come 1000 città, di più il tempo diventa impossibile, cioè il computer ci mette anni e anni a risolverlo. Vi faccio un altro esempio. Quando fate una transazione su Internet e date il vostro numero di carta di credito, questo numero viene emicriptato, significa cioè che viene codificato. Ma posso dimostrare matematicamente che per decodificare quel numero, se non si conosce il codice, ci vogliono milioni di anni con i computer di oggi. Per questo la transazione su Internet può essere molto sicura, perché le tecniche che utilizziamo per codificare quei numeri sono estremamente sicure. È possibile decodificare ma ci vogliono veramente milioni di anni, sui computer più potenti che abbiamo. Quindi ci sono problemi che possono sì essere risolti in teoria ma in pratica no perché non si riesce a risolverli in tempo, sono troppo complessi per il computer.
LUCIDO  24
Avevo detto che si era pensato che ciò che era importante nel computer non era l'hardware bensì il software e che qualcuno ha pensato al software come a un modello della mente, anzi qualcuno ha sostenuto che proprio la mente è software. Questa è la visione di quella che si chiama Intelligenza Artificiale classica che ha prodotto una scuola di psicologia che si chiama cognitivismo. Noi vedremo il cognitivismo molto più approfonditamente nelle lezioni della prossima settimana. Invece nelle lezioni di questa settimana continueremo a trattare i temi introduttivi, come oggi. Però vorrei già accennarvi qualcosa per capire di cosa stiamo parlando.
Per il cognitivismo il cervello è una specie di CPU, fatto esattamente come la macchina di Van Neumann e la memoria di un animale può essere vista come analoga alla memoria di un computer. In questa memoria, secondo il punto di vista del cognitivismo, i dati sono memorizzati in un modo fondamentalmente simbolico. Quindi se vedo una faccia, in qualche modo nella memoria, non dicono come, è scritta la descrizione della faccia. La faccia è: piccola, grossa, due occhi, un naso, gli occhi sono blu, le sopracciglia sono fatte in un certo modo, eccetera. Questa è una descrizione simbolica. Secondo questo punto di vista le operazioni della mente, quindi il pensiero, sono algoritmici.
Quindi cosa faccio quando penso ?  Innanzitutto vedo, acquisisco informazioni dal mondo esterno, le rappresento nella mente in forma simbolica, esattamente come un computer le mette nella sua memoria, e poi le manipolo esattamente come fa il computer. Quindi ne leggo un pezzettino, lo esamino, dato il risultato di quello che vedo faccio certe operazioni e certe altre no. Quindi il pensiero è fondamentalmente algoritmico. Posso fare qualche esempio. Pensiamo alla visione.  Nella visione io vedo lui con la retina. La mia retina ha qualche milione di coni e di bastoncelli ognuno dei quali mi dà una certa intensità di luce. Immaginiamo che l'output di ognuno di questi coni e di questi bastoncelli sia rappresentato da un piccolo indirizzo nella mia memoria, e scrivo su quell'indirizzo quanto è intensa la luce che ricevo guardando la sua faccia. Finito questo, che in genere avviene molto rapidamente, devo confrontare quella faccia con altre facce. Quindi il cervello leggerebbe nella memoria quella immagine che ho visto, poi andrebbe confrontandola con tante altre immagini che ha già in memoria dal passato, farebbe un qualche calcolo per dire quale è la più simile, esattamente come prima si cercavano i numeri primi, ad un certo punto arriverebbe a dire:
" ah, quello è Giovanni", perché ha trovato qualcosa che gli rassomiglia. Questo per la visione.
Immaginiamo la navigazione. Devo arrivare da qui fino alla stazione. Cosa faccio per prima ?  Secondo questa visione cognitivista creo una mappa dello spazio simbolico, rappresentato nella mia testa esattamente come una mappa scritta sulla carta. Dico: qui c'è un edificio, qui c'è un corridoio, qui devo girare a destra, poi c'è la segreteria, devo girare a destra di nuovo, devo attraversare il parcheggio, andare per la strada, girare a sinistra e arrivo alla stazione. Questa è una mappa; per stabilire cosa fare, decido dove sono su quella mappa, guardo dove voglio arrivare, pianifico un'azione che mi porta vicino a dove voglio arrivare. Quindi adesso sto al cancello, vedo che la stazione sta a sinistra, giro a sinistra. Quindi il mio CPU, il mio cervello, la mia mente, legge nella memoria dove c'è la mappa, fa delle operazioni matematiche su questa mappa e decide dove devo andare. Questo secondo i cognitivisti è come funziona la navigazione nell'uomo.
Prendiamo ancora un altro esempio: il linguaggio. Voi mi sentite, io pronuncio fonemi, che sono onde di suoni, il vostro cervello analizza questo, fa un'analisi molto complessa, alla fine arriva nella vostra testa qualcosa di analogo al linguaggio scritto, le frasi che Richard Walker ha pronunciato durante questa lezione. Io analizzo quelle frasi, trovo il sostantivo, trovo il soggetto, trovo il verbo, trovo anche le analogie semantiche a cui mi sto riferendo, a quel punto passo dopo passo riesco a capire quello che sta dicendo Richard Walker, facendo delle operazioni matematiche sulle stringhe che ho nel mio cervello che rappresentano quello che io ho detto. Quindi di nuovo, secondo questo punto di vista, la mente sta agendo come un computer, anche nell'analisi del linguaggio.
LUCIDO  25
Sintetizzando il cognitivismo vede l'intelligenza come elaborazione di informazioni. Quando parliamo del computer diciamo che è una macchina per elaborare informazioni.
Quindi cosa succede ?  C'è un input, questi sono i dati, ad esempio il numero che do per vedere se è un numero primo o meno, c'è un input che arriva dagli organi di senso, quindi dagli occhi, dal senso olfattivo, dall'udito, dal senso tattile e magari da qualche organo interno che mi dice come sta il mio corpo( i propriocettori). Questo è l' input e secondo il cognitivismo viene rappresentato nel cervello simbolicamente quindi come se fosse un libro scritto. Non ci dicono esattamente come, hanno grandissime difficoltà a dirci come, ed io sostengo perché non è fatto così. Ci dicono che è rappresentato in qualche modo con simboli discreti che possono essere manipolati. Questa manipolazione sarebbe opera del cervello. Il cervello è analogo al CPU del modello di Van Neumann. L'output, il risultato, è la mia attività motoria e il mio comportamento. Questo è il modello di intelligenza del cognitivismo.
LUCIDO  26
Questo modello, che è un modello scientificamente valido, non nel senso che è vero ma nel senso che è chiaro (perché fra essere vero e chiaro c'è una grandissima distinzione), ha delle importantissime conseguenze.
Innanzitutto significa indipendenza dell'intelligenza rispetto all'implementazione, cosa vuol dire questo ? Ricordatevi il modello di Turing. Nel modello di Turing non si diceva su che tipo di nastro doveva essere scritto, non si diceva come  codificare i dati o le istruzioni, si diceva solo che doveva essere codificato in qualche modo. Non si diceva nulla sulla meccanica del funzionamento della macchina, tant'è che hanno fatto mille tipi di macchine di Turing diverse.
Il cognitivismo dice la stessa cosa: non importa come è fatto il cervello. Infatti non parlano mai di neuroni o di sinapsi o della memoria studiata nelle lumache. Tutto questo per il cognitivismo è assolutamente irrilevante, quello che è importante sono le funzioni che vengono calcolate dal cervello. Quindi quando io riconosco lui come lui e lo distinguo rispetto a voi, ho fatto, secondo loro, un calcolo matematico. Ho preso dei simboli che rappresentano lui, li ho confrontati con altri simboli, che rappresentano voi, e ho deciso che lui è diverso. È matematico, ma sul meccanismo, sull'hardware, su come questo è fatto biologicamente solo silenzi, anzi dicono che non importa, non ha nessuna importanza. Per loro il cervello è soltanto un particolare tipo di hardware, piuttosto avanzato, piuttosto efficiente, che non è ancora in vendita, ma è solo un pezzo di hardware.
Se questo è vero significa che è possibile implementare l'intelligenza sul computer, se l'hardware non importa posso trasferire l'intelligenza che sta nel cervello, che è un certo tipo di hardware, e portarlo sul computer, che è un altro tipo di hardware. Il programma rimane lo stesso ma l'hardware è cambiato. Questo significa che il programma potrebbe andare più veloce o più lentamente però fondamentalmente, logicamente, matematicamente, non cambierebbe nulla. Questo è quello che dicono i sostenitori di quella che si chiama Intelligenza Artificiale forte. Questi lavoravano già negli anni '50 e annunciavano cose strabilianti e false.
Vediamo un tale Herbert Simon che era un po’ meno geniale di Neumann. La differenza tra Simon e Neumann è che entrambi pensavano di essere geni, ma Neumann lo era.

 

LUCIDO  27
Nel '58 Simon disse:

“L’intuito e l’apprendimento non sono più un possesso esclusivo degli esseri

        umani. Un qualsiasi calcolatore potente può essere programmato per esibire le stesse capacità”

(H.A. Simon & A. Newell 1958)

Quindi secondo lui basta scrivere un programma e abbiamo computer che imparano e anzi hanno anche intuito, per cui ad esempio potrei prendere uno psicoanalista, sostituirlo con un computer, lo programmo bene, risparmio un sacco di soldi, è utilissimo, lo metto sul World Wide Web e sto a posto. Questo è quello che ha previsto nel '58.   Errare è umano, ma Simon ha anche perseverato.
LUCIDO  28
Nel '65, non smetteva mai, ha spostato il bersaglio di vent'anni, il che significa quindici anni fa.

 “Entro vent’anni le macchine saranno capaci di compiere qualunque lavoro oggi accessibile all’uomo”

 

(H.A. Simon “The shape of automation for men and management”, 1965)

Quindi avremmo sostituito gli operai, poi avremmo proseguito sostituendo gli impiegati, poi avremmo sostituito i programmatori, avremmo finito sostituendo i professori universitari, così lui poteva andare in pensione, e alla fine saremmo arrivati anche alla squadra di basket, citata prima da Pfeiffer. Però tutto questo doveva succedere entro il 1985, sono passati quindici anni e io non lo vedo. Vediamo cosa è successo davvero.
LUCIDO  29
L'Intelligenza Artificiale classica ha fatto delle cose molto importanti. Quando utilizzate il computer, il 90 % di voi utilizza una cosa che si chiama Windows, l'altro 10 % utilizza una cosa che si chiama Machintosh??, qualcuno adopera anche Linux, ma lasciamo perdere.
Tutti questi hanno quella che si chiama un'interfaccia utente/grafica, cioè quando usate il computer lavorate manipolando icone sullo schermo. Questo è stato inventato dall'Intelligenza Artificiale perché li aiutava a scrivere i loro programmi. Era una cosa molto pragmatica, era più facile scrivere i programmi in questo modo. È quindi un risultato molto importante ma che nulla ha a che vedere con l'intelligenza, è semplicemente un modo per far comparire i dati di un computer su di uno schermo, niente di più.
Hanno inventato nuovi linguaggi di programmazione. Prima ho parlato di Cobol, di Fortran, loro hanno inventato linguaggi di programmazione per l'Intelligenza Artificiale che sono molto importanti. Uno si chiama List??, poi c'è la cosiddetta programmazione ad oggetti, è una cosa che interessa solo gli informatici, non mi dilungo qui. Anche questi sono strumenti tecnologici molto interessanti, molto importanti, io li utilizzo nella mia ricerca ma che, di nuovo, nulla hanno a che fare con l'intelligenza, sono semplicemente strumenti, molto efficienti e molto belli ma niente di più che strumenti.
Hanno fatto i cosiddetti sistemi esperti che lavorano in domini limitati. Mi spiego meglio.
Un sistema esperto ( li vedremo in profondità la prossima settimana) è un sistema che risolve i problemi in un certo dominio. Faccio un esempio: c'è qualcuno con una malattia infettiva, bisogna decidere che antibiotico dargli per la terapia. Questo è un compito abbastanza difficile
, bisogna tener conto delle analisi, bisogna tener conto delle condizioni del paziente, l'anamnesi del paziente, eccetera. Hanno scritto un sistema che si chiama MYCIN, che fa questo e lo fa piuttosto benino.
Lo fa meglio della maggior parte dei medici. Però lo fa perché è un problema abbastanza circoscritto, deve considerare 10/15 tipi di analisi, 10/15 tipi di dati del paziente, un centinaio di tipi di antibiotici diversi, dopodiché ha finito, è un problema circoscritto. Confrontiamo questo con i problemi che si devono risolvere per essere autonomo, che abbiamo citato prima quando  parlavamo di intelligenza. Un animale, anche un animale stupido, risolve problemi molto più complessi di questo ogni minuto della sua vita e risolve problemi in decine di domini diversi. Problemi di alimentarsi, di muoversi, di riconoscere oggetti, problemi affettivi, eccetera. Quindi questo sistema riesce sì a risolvere i problemi in un dominio ma secondo me e secondo i tipi di intelligenza di cui parlavamo, questo non è intelligente.
Hanno creato sistemi per fare la traduzione a macchina. Non sono male, se vi mando articoli in inglese, ci sono dei programmi che trovate su Internet con cui li potete tradurre in qualcosa che assomiglia vagamente all'italiano, vagamente è la parola giusta, a volte con risultati comici. 
Però questo è molto faticoso e i livelli sono molto bassi, siamo ancora anni luce lontani dalla capacità di un traduttore umano anche mediocre. Quindi abbiamo grandi problemi a fare la traduzione a macchina.
E poi ci sono i cosiddetti giochi intelligenti. Qualcuno prima parlava di cani robot che si possono comprare, e cose del genere. Si sono fatte queste cose e realmente queste cose utilizzano i risultati dell'Intelligenza Artificiale.
Ma io sostengo che tutto ciò che ho descritto qui sono prodotti esclusivamente tecnologici, ingegneristici. Ci dicono molto poco su come funziona la mia intelligenza o come funziona l'intelligenza di un animale.
Quali sono le difficoltà dell'Intelligenza Artificiale.
LUCIDO   30
Difficoltà scientifiche: quasi tutti i sistemi di Intelligenza Artificiale lavorano in quelli che si chiamano " mondi dei giocattoli ", mondi assai semplificati, molto più semplici del mondo reale dove vive un essere umano o dove vive un animale.
Do un esempio: c'è un programma che si chiama  SHRDLU, è un robot simulato, non è un robot fisico, sta sullo schermo, che vive in un mondo a blocchi. In questo mondo ci sono delle scatole di diverse forme, scatole rettangolari, cubi, delle sfere, cilindri, ognuno dei quali ha un colore (ci sono pochi colori, mi sembra sedici). Si possono dare comandi al robot dicendo: prendi la scatola blu e mettila sopra la scatola rossa, butta giù la torre che ha tre scatole rosse, trovami un cilindro giallo.
I comandi sono di questo genere, è un linguaggio molto semplificato, si parla con il robot attraverso la tastiera, il robot effettivamente riesce a compiere queste operazioni. Però già se cambio l'illuminazione della scena, la rendo peggiore, non funziona più nulla, non è che funziona un po’ peggio, non funziona più. Se quando gli do il comando sbaglio comando e invece di dirgli prendi la scatola gli dico prendi il cubo e lui non sa cos'è il cubo, non fa niente, non è in grado di impararlo mai. È tremendamente fragile, quindi appena rendo più complesso il problema questi sistemi di intelligenza artificiale falliscono.
Se per esempio prendo il programma MYCIN, il programma per la scelta degli antibiotici, e gli dico che oltre agli antibiotici deve scegliere anche un antivirale, lui ha già perso. Questi sono sistemi classici in cui si modella il mondo come un programma al computer. Quando arriveremo alle reti neurali vedremo che questi problemi si possono risolvere, ma con il metodo classico non si riesce. Questa si chiama difficoltà del " scaling up ", che significa in inglese fare più grande il problema.
È facile far funzionare questi sistemi su domini molto limitati, molto semplici.
Però gli animali, gli esseri umani non vivono in un solo dominio, vivono in molti domini diversi e non sono mai semplici e questo l'Intelligenza Artificiale non riesce a farlo.
C'è una difficoltà di generalizzazione. Il sistema è programmato per risolvere un problema, molto, molto preciso, ma appena cambio la natura di quel problema anche di poco, appena cambio un piccolo dettaglio di quel problema, il programma fallisce, non funziona più. Questo non è vero per gli esseri umani. Se imparo l'italiano e trovo qualcuno che parla il dialetto è vero che magari non capisco tutto, ma qualcosa capisco, anche se parla spagnolo qualcosa capisco. Per cui l'essere umano quando si cambia la natura del problema deteriora la sua prestazione ma non è binario, non va da tutto a niente, deteriora gradualmente. Questi sistemi invece deteriorano in modo rapidissimo. Cosa significa questo: significa la realtà dell'anno 2000.
LUCIDO  31
Abbiamo il moltiplicarsi di macchine che i venditori chiamano macchine intelligenti. Ogni volta viene presentato il giocattolo intelligente, la lavatrice intelligente, la macchina intelligente, ma sono stupidissimi. Cosa sono di fatto ?
Abbiamo per esempio l'ABS sulle automobili, che è una cosa utilissima. L'ABS è un sistema intelligente per impedire che perda il controllo dell'auto quando freno troppo rapidamente.
Ma cosa fa ?  Molto banalmente confronta la velocità della ruota mentre gira rispetto alla velocità effettiva con cui la macchina si sta spostando sul terreno. Se la ruota sta girando più velocemente della macchina c'è qualcosa che non va, significa che la ruota sta perdendo aderenza, a quel punto toglie il freno. Questo è un programma di tre righe, ed è per questo che funziona sempre ed è molto sicuro, perché è semplice. Ma non è quello che faccio quando scio e scopro che sto perdendo il controllo, in quel caso faccio cose molto più complesse. Quindi funziona in quanto stupido, non in quanto intelligente.
Ci sono le lavatrici intelligenti che mi impediscono di rovinare vestiti: ho messo dentro la lana e lei rifiuta di mettere acqua troppo calda. Ma è una cosa stupida, lei ha pesato quanta roba c'è, ha detto: è lana, quindi: quanto pesa ?, più di 5 chili, è lana, io non la lavo a 90 gradi. Di nuovo di intelligente non c'è niente, è un programma stupidissimo di due righe.
Ci sono gli autopiloti per gli aerei. Punto l'aereo verso Washington, l'autopilota sa che deve andare a Washington, sa dove sta l'aereo e ogni volta che succede qualcosa corregge la rotta. Ma è un semplice meccanismo di retroazione, appena è un po’ fuori rotta, lo corregge, appena va un po’ troppo giù o troppo su lo corregge. Di nuovo intelligenza zero, questo è un programma che tutti voi siete in grado di scrivere. Potrei insegnarvi a scrivere queste cose in poche settimane.
Questi sistemi non hanno nessuna capacità adattiva, se si portano fuori degli ambienti per i quali sono stati progettati, non è che funzionano male, ma non funzionano per nulla.
E non hanno nessuna capacità creativa, queste cose non creano nulla di nuovo. Ogni tanto sentendo il telegiornale…….fine lato A seconda cassetta…………..magari si usano per accudire gli anziani oppure per fare lavori in fabbrica e cose di questo genere. Sono tutte balle, questi robot fanno pochissimo. Già oggi fare un robot che può andar da qui fino all'uscita, evitando gli ostacoli, è più o meno il massimo che riusciamo a fare. Poi li vestono, fanno sì che parlino, magari c'è una voce registrata che parla, ma qui sfruttano la vostra intelligenza umana che tende ad attribuire intenzioni  a macchine che  non ne hanno. Di fatto questi robot sono tutti rappresentati da programmi molto, molto semplici, che se ve li scrivessi qui si comincerebbe a capire cosa fanno. Quindi sono poco intelligenti.

 

LUCIDO  32
Sintetizzando la realtà dell'anno 2000: non c'è nessuna macchina capace di superare il test di Turing, perché se metto la macchina in una stanza e uno studente nell'altra stanza vi garantisco che entro cinque secondi distinguo fra lo studente e la macchina. Questo significa che a maggior ragione non c'è nessuna squadra di macchine che è capace di superare il test di Pfeiffer, una squadra di macchine che gioca a basket per il momento ce la scordiamo. In realtà il meglio che siamo riusciti a fare è squadre che giocano a calcio e questa invece è la Nuova Intelligenza Artificiale. Ogni anno si tiene la Robocup, è un torneo, di squadre di tre robot (solo tre perché costa troppo), fra i fabbricanti di robot di tutto il mondo, in cui una squadra gioca contro l'altra a calcio. Ma sono di una stupidità più unica che rara. Tenterò prima della fine del corso di portarvi un video di questi robot che giocano, si vede un robot che si piazza davanti alla palla e poi la tira fuori porta. Sono tremendi, cioè è veramente molto primitivo e questo è il meglio che la scienza riesce a produrre. Spiegazioni.
LUCIDO  33
Se sono un sostenitore dell'Intelligenza Artificiale classica dico che il problema è che non ho abbastanza potenza di calcolo, sono troppo lento. Il mio computer non è ancora abbastanza potente. Però è un'argomentazione molto debole. I microprocessori che abbiamo nei computer oggi sono, in ordine di grandezza, milioni di volte più veloci dei neuroni che abbiamo nel nostro cervello.
Quindi dire che è lento è veramente tremendo. Posso fare milioni, a volte centinaia di milioni di volte, più calcoli sul computer rispetto a quello che fa un neurone, per cui la trovo debole come tesi. Poi esiste la legge di Moore, che è una legge dell'economia dei computer, la quale dice che ogni anno a pari potenza i computer costano il 40 % in meno. Oppure invertendo a parità di costo ogni anno il computer è il 40 % più veloce, questo significa che c'è una crescita esponenziale della velocità dei computer. E quindi mi rifiuto di credere che semplicemente con computer più veloci risolveremo i problemi. Questi hanno provato negli anni '50, negli anni '60, negli anni '70, negli anni '80, negli anni '90, e ancora siamo a questo livello, nonostante i computer siano milioni di volte più veloci di quello che erano. Per cui sostengo, non lo posso dimostrare, ma sostengo che il problema non sia di pura tecnologia, di pura velocità. Hanno la velocità e non la sanno usare.
Seconda spiegazione (bisogna lasciare che l'avvocato della difesa parli poi lo condanniamo) : il cervello è parallelo. È vero, nel cervello l'essere umano ha qualcosa come 10 alla dodicesima, quindi 10 con dodici zeri, neuroni. Ognuno di questi neuroni può essere visto come un piccolo Central Processing Unit, un piccolo computer e il cervello ne ha centinaia di miliardi mentre il computer ne ha uno. Questo effettivamente è un problema, non riesco a fare veri computer paralleli oggi, nel cervello ognuno di questi neuroni lavora in simultanea con tutti gli altri, questo sul computer non lo posso fare. Però c'è un teorema nell'informatica che dimostra che, se ho pazienza, qualunque processo parallelo posso farlo anche su un computer seriale, solo più lentamente. Quindi se sul mio computer l'intelligenza fosse più lenta rispetto a quella di un animale, rispetto a quella di un essere umano potrei accettarlo. Il problema è che proprio non c'è, non è che è più lenta, proprio non ci riescono a farla funzionare, per cui anche questa è, secondo me, una spiegazione molto debole.
Terza spiegazione: loro dicono che il problema è che non si conoscono gli algoritmi, non sappiamo come il cervello rappresenta le sue cose. Secondo loro esistono queste rappresentazioni simboliche nel cervello ma non sanno come sono fatte, quindi non sono ancora riusciti a scoprire i programmi. Questo può essere vero ma è anche molto debole come spiegazione perché se loro vogliono sostenere che la mente è  un programma, devono dimostrarmelo, lo voglio vedere, voglio le prove provate. Vogliamo vedere questo programma, esempi anche semplici, noi non chiediamo che ci dimostrino un computer che può scrivere un trattato di filosofia, ci basterebbe un computer che potesse imitare i comportamenti di un semplice animale. E questo non riescono a farcelo vedere per cui al momento, secondo me, non avendo la prova sta dall'altra parte???.  Io sosterrò che in realtà ci sono dei limiti fondamentali all'Intelligenza Artificiale di tipo classico.
LUCIDO  34
Innanzitutto c'è l'astrazione. Loro dicono che i dati sono rappresentati simbolicamente e da qualche parte c'è la mappa che mi aiuta a navigare, da qualche parte c'è la rappresentazione del linguaggio che poi elaboro per capire il linguaggio, da qualche parte c'è la rappresentazione della visione nel cervello che elaboro. Ok, grazie, ma come si arriva a questo. Un cervello biologico non riceve input simbolici, mai, riceve input dai sensori biologici, quindi ci sono sensori che sparano. Nella mia pelle ho sensori del calore e quando sentono calore questi sparano impulsi, non sparano dicendo caldo, non c'è caldo, freddo ma c'è un tot impulsi al secondo. E la codifica usata da questi impulsi è molto complessa, non la conosciamo. Per loro invece questo non è un problema, dicono subito che è caldo, ma cavolo hai risolto metà del problema quando hai detto questo. Tutto il problema di tradurre l' input da qui nella parola caldo hanno detto: non conta. Grazie, ma così rendi tutto troppo semplice. Un essere umano, un animale deve fare questa traduzione e, secondo noi, hanno l'obbligo di dirci come fanno e non sanno rispondere.
Secondo: nell'Intelligenza Artificiale classica c'è tutta una serie di problemi che fanno parte dell'intelligenza e che loro danno per scontati. Innanzitutto la scelta del problema: faccio il sistema esperto che deve decidere quale antibiotico devo dare a un malato con una malattia infettiva.
Chi ha deciso che questo è un problema interessante ?  Questo fa parte dell'intelligenza, cioè l'idea che quello è un problema semplice che può essere risolto (un medico che ha deciso questo) è già un risultato dell'intelligenza. La scelta dei problemi che si possono risolvere è un aspetto fondamentale dell'intelligenza. Vi do un esempio.
Se dico ad un bambino: tu sarai un ottimo violinista, quale è la possibilità che ci riesca ?  Bassa, cioè qualcuno ci riesce pure, ma il violino è strumento molto difficile, si fa un suono orribile per anni, i genitori, gli amici non lo sopportano e prima di fare bella musica ci vogliono anni e anni di esercizi. Però se dico al bambino: tu sarai molto bravo in qualcosa, ma senza dire in che cosa, gli lascio libera scelta, la probabilità che da qualche parte il bambino trovi un argomento, un tema, uno sport, una musica, un interesse a cui appassionarsi e diventare bravo, è sicuramente più alta, non è certezza ma è piuttosto probabile. Il bambino nel fare questo usa la sua intelligenza per scegliere un campo dove lui può eccellere, quindi quando scelgo il problema per il computer ho fatto astrazione dell'operazione più importante, che è scegliere il problema.
È la stessa cosa che fa lo scienziato. non è vero che allo scienziato gli dai un problema e lui lo risolve. Lui sceglie un problema che pensa di poter risolvere con i suoi strumenti. Noi oggi stiamo facendo tutte queste cose di genetica perché abbiamo inventato alcuni strumenti che ci consentono di risolvere quei problemi. Ci sono altre cose tipo la coscienza dove facciamo pochissimi progressi perché non abbiamo gli strumenti. Lo scienziato è intelligente in quanto sceglie i problemi che sa risolvere. In un sistema di intelligenza artificiale dove è lo sperimentatore a scegliere il problema, c'è troppa intelligenza nello sperimentatore e non abbastanza nel sistema. Un sistema autonomo sceglie i problemi che sa risolvere, quindi il cane che cerca il giardino affronta solo problemi che lui sa risolvere, e questo fa parte dell'intelligenza.
Secondo: c'è la traduzione dell' input in forma simbolica. L'animale sa già usare l' input che riceve mentre sul sistema di intelligenza artificiale l'abbiamo già battuto su una tastiera, questo non è realistico. Quando a MYCIN do i dati del paziente, in realtà è un medico che ha già parlato con quel paziente, in realtà è un medico che ha chiesto: sua nonna si è mai ammalata di quello o lei ha precedenti per l'asma oppure lei ha mai avuto reazioni allergiche alla penicillina, è un medico che ha fatto queste domande. È facile quando è già tutto battuto su di una scheda, 3/4 del lavoro è già fatto. Un sistema intelligente deve fare la parte del medico non solo di quello che analizza soltanto la scheda.
E infine c'è l'output, quel computer cosa fa alla fine, dice: gira a sinistra, dai la penicillina al tuo paziente e lo scrive. Ma un essere umano o un animale si muove, parla, muove i muscoli della bocca, e anche questo è un problema molto complesso. Vedremo quando parleremo di robot che il semplice fatto di muoversi in una certa direzione non è per niente semplice e anche questo è un'astrazione tremenda. I problemi che risolve l'Intelligenza Artificiale sono troppo semplici eppure non riescono a fare neppure quelli. Allora do una spiegazione alternativa.
LUCIDO  35
Non credo che il problema sia di mancanza di potere tecnologico, non penso sia un problema di mancanza di scienza, non penso perché le teorie non sono abbastanza buone, penso che il problema vero sia il seguente. L'intelligenza, sosterrò e tutto il resto del corso sarà basato su questo, non si può modellare come un processo soltanto simbolico e logico. Quando noi pensiamo, pensiamo in modo profondamente diverso dal computer e non pensiamo in modo simbolico se non ogni tanto. Quando devo risolvere un problema matematico penso simbolicamente, ma questo è solo il 2 % del mio pensiero forse molto meno. Il resto del tempo utilizzo altri meccanismi. L'intelligenza non si può modellare come semplice elaborazione di informazioni, c'è altro. Quindi non posso semplicemente pensare input astratto, elaborazione, output astratto, c'è altro, per cui il computer non è un modello adeguato per il cervello. In particolare ho il problema della rappresentazione, come rappresento l' input che vedo nel mondo, come definisco, come scelgo i problemi.
Allora domani inizieremo a vedere modi alternativi per avvicinarci a questo problema. Vedremo come posso utilizzare il computer non come modello ma come strumento di indagine. Posso creare dei modelli dell'intelligenza che sono radicalmente diversi da un programma al computer. Però per indagare  posso utilizzare altri programmi al computer. Vedremo una visione dell'intelligenza come sistema cibernetico, vedremo poi una prima visione della Nuova Intelligenza Artificiale, di nuovi modi per modellare la mente. Ma su questo torneremo domani, per ora vorrei chiudere qua.

 

Fonte: laral.istc.cnr.it/rwalker/Naplestexts

 

 

Intelligenza artificiale

 

TEORIE  E  SISTEMI  DI  INTELLIGENZA  ARTIFICIALE

Prof. Richard  WALKER

 

MODULO  2.a

 

Modelli razionalistici dell’intelligenza umana: intelligenza artificiale “classica”.

 

In questa lezione non parleremo di nuova intelligenza artificiale, parleremo della nascita dell’intelligenza artificiale. Vedremo come quest’intelligenza artificiale è molto legata ad una certa filosofia della mente, non è un problema solo tecnico o informatico. Vedremo anche alcuni problemi e come, nonostante questi problemi, questo modello d’intelligenza artificiale ci ha dato qualcosa.
Parliamo innanzi tutto di “problem solving” e di quello che io chiamo l’orientamento razionalistico, che non nasce in informatica ma in filosofia, poi segue in economia e approda in intelligenza artificiale.
Vedremo le strategie utilizzate dall’intelligenza artificiale classica: i tentativi che nascono a metà degli anni ’50, e come questi tentativi hanno portato ad un nuovo modello della mente come calcolatore, pensare alla nostra mente come ad una specie di computer. Questa è quella che si chiama intelligenza artificiale “forte”.
Vedremo le conseguenze culturali di questo modello, nella cultura in generale e più specificamente nella psicologia. C’è un interscambio molto bello fra intelligenza artificiale e quello che chiamo cognitivismo. Vedremo però che il cognitivismo e questa intelligenza mostrano forti limiti, che ritengo che non siano superabili. Questi limiti hanno portato al fallimento, l’intelligenza artificiale classica non ha raggiunto i suoi scopi. Questo ha messo in dubbio non solo la validità di una certa tecnologia ma anche la validità di tutto l’orientamento razionalistico.
Vedremo che quest’esperimento fallito non è stato del tutto negativo, ci ha dato in ogni modo dei contributi che sono stati utilizzati nelle ricerche degli ultimi 20 anni.
Vorrei cominciare con gli esperimenti di Thorndike. 
Lui prende un animale, un gatto, un pulcino, e lo chiude in una gabbia. Le gabbie di Thorndike avevano sempre un premio, normalmente il cibo, ed esisteva un meccanismo a volte molto semplice a volte complesso, per uscire dalla gabbia: corde, lucchetto o altro.
Thorndike ha studiato come fanno gli animali ad uscire dalle gabbie. Ha studiato soprattutto il gatto, ha visto che si agitava, fa quello che lui chiama tante  “prove ed errori” e alla fine, se l’esperimento è stato ben progettato, il gatto riesce a trovare il modo per uscire dalla gabbia. Ripetendo questa esperienza molte volte ogni volta il gatto ci mette meno tempo. Quindi gradualmente impara come uscire dalla gabbia. Gli animali, quindi, molto spesso riescono a risolvere i problemi. È una soluzione, io direi, non molto intelligente, è un agitarsi casuale e all’imparare da queste agitazioni cosa fare. La maggior parte delle persone non vedrebbero questo come un comportamento intelligente.
Un altro esperimento classico ma di segno diverso:
prendo una scimmia e la metto in una gabbia e in mezzo alla gabbia è appesa una banana, da qualche altra parte in qualche angolo c’è una sedia o una scatola, qualcosa su cui la scimmia può salire. La scimmia vuole la banana, ma saltando non ci arriva. Passa un po’ di tempo, si illumina d’immenso e prende la scatola, la porta in mezzo alla stanza, ci sale sopra e prende la banana. ha fatto qualcosa di molto diverso dal gatto, ha attuato una strategia, ha prodotto quello che chiunque chiamerebbe un comportamento intelligente.
Quando l’intelligenza artificiale classica, quando i filosofi classici da Aristotele in poi pensavano alla “presa di decisioni”, alle soluzioni di un problema, non pensavano al gatto ma alla scimmia, quindi in qualche modo hanno creato un modello di cos’è la soluzione di un problema e come si può risolvere un problema.
Vediamo come fa la scimmia a trovare la soluzione.
La prima cosa che fa secondo questi pensatori è di caratterizzare la situazione in termini di oggetti identificabili che possiedono proprietà ben definite. Innanzi tutto: banana, in alto, gialla, desiderabile. Secondo: scatola, angolo sinistro della gabbia, me stesso, riesco a raggiungere banana, no non ci riesco. Prova le regole generali che sono applicabili nei tempi con gli oggetti di quelle proprietà di situazioni. Allora, regola generale: le scatole si possono spostare, posso manipolare le scatole e metterle in qualsiasi posizione della stanza. A questo punto applica queste regole e invece di fare come il gatto che si agita e tenta senza pensare, le applica nella sua mente e comincia ad immaginare che cosa accadrebbe se spostasse la scatola: la sposto, ci salto su, e prendo la banana, è risolto. Quindi ha una sua rappresentazione mentale della situazione, ha delle regole che gli consentono di immaginare altre situazioni diverse da quella in cui è, e di come andare dalla situazione attuale a quelle immaginarie, esplora tutta la gamma di possibili scenari delle cose che potrebbe fare per cambiare la situazione fin quando non trova la possibile azione che da i risultati desiderati. A questo punto à Azione à lo fa.
Questo modo di fare è stato formalizzato da un tale Simon, grande psicologo ed economista. Lui dice come si può arrivare alla soluzione razionale del problema. Innanzi tutto devo elencare tutte le strategie possibili, questo significa che devo pensare, sfruttando le mie conoscenze del mondo, a tutte le regole che generano nuovi scenari, immaginando uno scenario dopo l’altro. Dopo di che vado a vedere che cosa succede se io applico uno di questi scenari: raggiungo il mio obiettivo, non lo raggiungo, lo raggiungo parzialmente; li ordino: questa è una conseguenza ottima, questa è abbastanza buona, questa è pessima. Dopodiché, dopo aver ordinato questi scenari scelgo lo scenario migliore e tento di metterlo in atto. Questo secondo Simon è il modo secondo cui un essere razionale prende le decisioni. Se io, per esempio, dovessi decidere come andare da qui a Roma penserei: potrei prendere l’aereo à andare a Napoli à 2 ore à pagare l’aereo, oppure potrei prendere il treno, oppure potrei arrivarci con l’autostop. Alla fine scelgo come andare da Caserta fino a Roma. Questo secondo Simon perché sono un essere razionale.
Questo modo di considerare il problema è profondamente radicato nella nostra cultura, così tanto che T. Winograd e F Flores (1987), che sono dei ricercatori di intelligenza artificiale sostengono che “l’orientamento razionalistico non sta soltanto alla base della scienza pura e di quella applicata, ma è anche considerata il paradigma stesso di ciò che significa pensare ed essere intelligenti”.
Non sono d’accordo perché, vedremo più avanti, alcuni risultati d’intelligenza artificiale suggeriscono che questa formulazione è falsa, l’intelligenza non è fatta così. Ci sono dei dubbi sia teorici sia empirici che mettono in dubbio questa visione dell’intelligenza.
Teorici: è molto raro, quando prendo una decisione reale, nel mondo reale, ho appena informazioni necessarie per formulare scenari e per valutarli. Esempio: mi hanno 3 differenti offerte di lavoro e devo decidere quali di queste 3 accetterò. Per Simon dovrei esaminare: pensare a quale sarà la paga, a come sarà il capo, alle possibilità di carriera, ecc. Ma in realtà non ho nessuno di questi dati in forma attendibile e ho solo 5 minuti per decidere e rispondere un si o un no, e non posso esaminare quindi tutte le possibili alternative. Devo decidere senza elementi informativi esaustivi. Queste sono le condizioni in cui un essere normale prende una decisione. In mancanza di informazioni, in questo caso, non ho le basi per eseguire le procedure suggerite da Simon.
Secondo elemento teorico: nel mondo naturale le decisioni devono essere prese in fretta. Se sono una gazzella ed ho un leone davanti e inutile per me fare complicati calcoli per decidere se fuggire a destra o a sinistra, perché mentre calcolo il leone mi mangia. Quindi è meglio scegliere senza molte complicazioni uno dei due casi in modo da avere almeno qualche possibilità di non essere mangiati. Questo comportamento porterà comunque ad una certa percentuale di gazzelle ad essere mangiate, ma un’altra percentuale sopravvivrà e riprodurrà la specie.
Con il metodo razionalistico di Simon devo considerare un’enorme quantità di dati in quanto devo considerare tutte le possibili alternative, e nella maggior parte delle scelte da fare non vi è la possibilità di fare ciò.
Empirici: ci sono moltissime componenti irrazionali nelle scelte ( qui non parlo di comportamenti patologici, ma di comportamenti di tutti i giorni ). Ci sono bellissimi esperimenti in laboratorio dove è possibile chiedere alle persone se preferiscono A o B, oppure ai bambini la scelta è tra 2 giocattoli. Poi gli si chiede se preferiscono B o C. Per la proprietà transitiva ci si aspetterebbe che se una persona ha preferito A a B ed B a C preferisca A a C, ed invece nel 50% dei casi hanno preferito C ad A. Questi esperimenti sono stati condotti in laboratorio e sono riproducibili, tale fenomeno è vero sia per gli uomini sia per i bambini, anche negli animali sono presenti tali comportamenti.
Il comportamento razionale è uno dei comportamenti possibili ma non l’unico. Questi non sono soggetti malati, ma soggetti assolutamente normali. Questi esperimenti sonno stati fatti, hanno dei risvolti anche in economia, ed in concordanza a tantissimi esperimenti fatti in laboratorio dimostrano che la visione di voler ordinare le cose al modo di Simon non funziona.
Impenetrabilità intuitiva di molti comportamenti: sto guidando di notte e mi compare un animale davanti, giro, freno e lo evito. Se voi vedesse in un film il comportamento direste che ho fatto delle scelte razionali ottimali, che veramente ho pianificato il mio comportamento, peccato però che se mi chiedete cosa ho fatto io non ne so nulla, non ne ho idea. Per moltissimi comportamenti che sono razionali, che sono adattativamente validi, noi non abbiamo idea di come li facciamo. Allo steso modo se noi chiediamo ad una persona che non è un atleta come corre egli non avrà nessuna consapevolezza di come muove i muscoli, anche se il comportamento è ottimale e sembra razionale. Molti comportamenti sembrano razionali, ma di fatto sono impenetrabili da parte dell’intuizione.
Di nuovo da studi di laboratorio sappiamo che gli essere umani utilizzano tantissime euristiche.
Noi nella scienza preferiamo quello che è semplice a quello che è complesso.
Se voi mi date 2 teorie dello stesso fenomeno, una ha 20 pagine di spiegazione e l’altra ne ha 2, gli scienziati dicono arbitrariamente che la migliore è quella di 2 pagine, anzi affermano di più,che quella di 2 pagine è vera e quella di 20 è falsa. Non c’è nessuna spiegazione, giustificazione, logica per questo tipo di regole, è una regola euristica che mi aiuta a decidere, che ho utilizzato spesso in passato e spesso mi ha dato ottimi risultati. Noi nel nostro comportamento quotidiano usiamo continuamente le euristiche per decidere cosa fare.queste non entrano nella visione di Simon. Vedi gli ordini di preferenza: i bambini che preferiscono A a B e B a C, ma preferiscono C ad A.
Ho detto che per descrivere i vari scenari che debbono essere esaminati durante la soluzione di un problema c’è bisogno di rappresentarli, e per la visione razionalistica questo è fatto attraverso il linguaggio. Può essere fatto attraverso l’italiano o con un linguaggio matematico, ma in ogni modo sono sempre simboli organizzati. Dal momento in cui rappresentiamo un fenomeno con il linguaggio posso applicare a questa rappresentazione attraverso i simboli delle operazioni logiche. Se dico che tutti gli uomini sono mortali, e poi dico che Socrate è un uomo, posso applicare un sillogismo e dedurrò che Socrate è mortale.
Io rappresento il mondo attraverso il linguaggio, manipolo il mondo attraverso la logica e questo porta ad una visione dell’intelligenza come applicazione della logica, come un concatenamento di sillogismi.
Questo porta alla visione che il pensiero è logico, e a questo siamo arrivati al V secolo avanti Cristo e da lì per parecchi secoli non siamo andati molto avanti. Nel 600 / 700 si comincia a pensare alla mente come ad una macchina, non una macchina elettronica ma del tipo di un orologio. La mente funziona secondo rigide regole logiche e doveva quindi essere possibile applicarvi in modo attendibile le leggi della logica.
Solo un paio di secoli dopo arriva un tale Boole che crea l’algebra booleiana. Boole ha tentato di formalizzare la logica e ha proposto quelle che lui chiama leggi del pensiero. Una qualunque logica può essere espressa attraverso ciò che noi oggi chiamiamo funzioni booleiane, funzioni come AND, OR, NOT, XOR, ecc.
Quindi Socrate è un uomo AND gli uomini sono mortali, implica Socrate è mortale.
Quindi Boole prende l’intuizione aristotelica e la formalizza, scrivendo tutto ciò in simboli.
Dice che il contenuto dei sillogismi non contano.
Se io dico che Socrate è un uomo o che un gatto è un uomo non cambia niente, si possono applicare sopra le stesse operazioni logiche. Il contenuto dei sillogismi, delle affermazioni logiche, non conta, quello che conta è la “forma” ed è per questo che si chiama logica formale o logica formalizzata.
Questa visione che per noi non è del tutto chiara viene chiarita con

Russell e Wittgenstein: le proposizioni logiche sono prive di contenuto.
Può essere utile dire, invece di Socrate è un uomo, P è un Q. Sono variabili logiche, non importa quali sono i loro contenuti, e possono essere manipolate. Il concetto di manipolazione di simboli è alla base dell’intelligenza artificiale.
Studieremo il “sistema MIU”.
Consideriamo che abbiamo un alfabeto fatto di 3 sole lettere: M, I e U.
Un sistema formale consente di combinare queste lettere in certi modi. Definisco delle lettere, la definizione delle regole è assolutamente arbitraria, posso definire qualunque regola, quello che non è arbitrario è la forma con cui le scrivo. Un’espressione valida la chiamiamo teorema: una frase ben fatta secondo le regole che io sto definendo.
Prima regola: se xI è una regola xIU è un teorema. Quindi se MI è un teorema, MIU è un teorema.
Questo significa che se io trovo una sequenza di simboli MI e so che MI è un teorema io posso dedurre una seconda sequenza di simboli che è anch’essa un teorema, cioè MIU, quindi da MI passo ad MIU. Non so che cosa significano M, I, e U, sono simboli privi di contenuto e la manipolazione è puramente formali, cambio le forme di questi simboli.
Seconda regola: se Mx è un teorema, Mxx è un teorema. Quindi se NI è un teorema anche MII è un teorema, potremmo sostituire x con II e MI è un teorema anche MIII è un teorema.
Ho delle regole dove partendo da alcuni teoremi posso generarne altri, è un sistema aperto posso generare teoremi all’infinito.
Utilizzando queste 2 regole posso allungare il teorema MI e farlo diventare MIU, quindi da un teorema a 2 caratteri passo ad un teorema a 3 caratteri. Posso anche generare teoremi più corti sempre utilizzando le regole di manipolazione. Mettiamo che qualunque teorema III si possa sostituire con U, quindi se ho MIII posso togliere III e mettere U e arrivo ad MU, che è un altro teorema. Poi UU si possono cancellare da qualsiasi teorema. Queste sono le regole.
Oltre le regole ci sono i punti di partenza che chiamiamo assiomi del sistema: cose che non devono essere generate. Io parto con MI, applicando le regole posso generare altre teoremi, da MI posso passare per esempio ad MIU, da MIU posso passare ad MIUU e così avanti. Quindi partendo semplicemente d da questo insieme di teoremi, da questi assiomi, simboli, posso creare infiniti teoremi. Ci sono delle deduzioni: quando prendo un teorema e lo trasformiamo in un altro.
La logica può essere ridotta ad una manipolazione di simboli senza che il manipolatore abbia alcuna idea di cosa significano questi simboli. Questo vuol dire che anche una macchina può fare logica, dato che una macchina può solo manipolare simboli.      
Il signor Turing, che abbiamo studiato nella scorsa lezione, ha dimostrato che è possibile creare una macchina che può risolvere qualunque problema computabile, questo significa che qualunque problema che può essere risolto con la logica,manipolando simboli, può essere risolto da una macchina di Turing. La macchina di Turing non dipende dalla sua implementazione fisica. La stessa macchina può essere fatta di transistor, valvole, ecc.  Quello che è importante è che i simboli sono sostituiti da altri simboli secondo le regole della macchina di Turing.
Quando si vuole eseguire un certo tipo di calcolo si definiscono le regole, quindi eseguire un calcolo significa definire le regole poi eseguirle, ma con quali macchine eseguirle è del tutto irrilevante. C’è una separazione netta tra corpo e mente, tra logica e cervello. In questa visione del mondo vediamo che la logica diventa modello della mente.
La mente può essere modellata come una macchina che manipola simboli.
Conseguenze: in questo modello dell’intelligenza non c’è nessun ruolo per il cervello, ed è evidente che non c’è nessun neanche per il corpo, è un’operazione senza corpo, senza sangue, senza sensazioni, è puramente formale.
Questo è controintuitivo, non è quello che pensiamo dell’intelligenza, però non sempre le idee controintuitive sono false in scienza.
Questa è la visione dei pionieri dell’intelligenza artificiale, a metà degli anni ’50 erano sicuri che da lì a 10/20 anni avrebbero creato dei cervelli elettronici.
Storicamente la nascita dell’intelligenza artificiale e dell’informatica coincide con la crisi del comportamentismo, cioè la mente non è osservabile, quindi non ne vogliamo sapere nulla, noi studiamo solo gli input che arrivano al cervello. Stimolo à Risposta.
I cognitivisti erano interessati ad esplorare la scatola nera e a creare modelli di come potesse funzionare. L’informatica in quegli anni diventa fonte di modello per i cognitivisti.
I primi tentativi di intelligenza artificiale sono i 2 modelli di Allen Newell ed Herbert Simon.
Questi autori hanno proposto due sistemi: il primo si chiama Logic Theorist, per la dimostrazione di teoremi matematici, e il secondo si chiama General Problem Solver ( sistema generale per la soluzione dei problemi, titolo ambizioso), per la dimostrazione di teoremi matematici, per trovare la soluzione di giochi, e per fare la criptoaritmetica ( si sostituiscono ai numeri delle lettere ).
Esempio: un labirinto.
Io sono un gatto e devo attraversare il labirinto, cosa faccio secondo Simon?
Faccio un elenco di tutte le possibili traiettorie attraverso il labirinto. Questo presuppone che prima abbia fatto una mappa del labirinto. Fatto poi l’elenco di tutte le possibili traiettorie, le confronto con un indice che mi dice qual’è la migliore, e quindi scelgo la traiettoria più breve che mi porta al bersaglio. Questo procedimento lo possiamo formalizzare in forma astratta: dato un insieme P di elementi, cioè le possibili traiettorie attraverso il labirinto, trovare un elemento di un sottoinsieme S, cioè di tutte quelle traiettorie che sono per me soddisfacenti, di P che ha le proprietà richieste ( cioè che sia la più breve e senza ostacoli ).
Posso darvi un paio di esempi:
•Risolvere un cruciverba
P: tutte le possibili combinazioni di lettere che potrebbero riempire le caselle vuote
S: tutte le combinazioni in cui tutte le  successioni lineari successive, orizzontali e verticali soddisfanno le condizioni richieste
•Tradurre una frase dal tedesco in italiano
–P: tutte le successioni possibili di parole italiane
–S: tutte le successioni che
•a) sono grammaticalmente valide in italiano, e già ho ridotto tantissimo
•b) e rappresentano il senso della frase tedesca.
Quindi per tradurre una frase dal tedesco all’italiano il metodo di Simon prevede che sia fatto prima l’elenco di tutte le possibili combinazioni di parole presenti nel vocabolario italiano e poi che a tale insieme vengano applicate le regole a) e b). Pensate che veramente un traduttore umano farebbe così? No, secondo me no, ma questa è la visone di Simon, ed è quello che io ho chiamato un ragionamento anti-intuitivo.
Questa operazione la posso fare in due modi e non c’è il modo per scegliere tra il primo modo ed il secondo. La prima si chiama ricerca in avanti, io parto da un assioma, l’assioma nel nostro caso può essere una parola in italiano ( la metodologia è la stessa di quella utilizzata nell’applicazione della logica formale ), partendo dalla quale posso generare combinazione sempre più nuove, posso aggiungere una seconda parola, poi una terza, e così avanti. Ho delle regole di produzione che mi consentono di trasformare un assioma in un’altra espressione, esattamente come abbiamo fatto con il sistema MIU. Quindi prendendo il nostro esempio della traduzione dal tedesco all’italiano, si procede generando una sequenza di frasi in italiano che obbediscono alle regole della grammatica italiana ( regole di produzione ), in questo modo sono sicuro che queste frasi almeno grammaticalmente sono corrette. Da notare bene: non c’è nessuna regola di produzione che garantisce che queste frasi abbiano un senso, per questo se io dico che il formaggio mangia ferocemente il topo questo grammaticalmente è corretto. Come si procede: parto dagli assiomi, che sono le parole della lingua italiana, poi applico le regole di produzione che consentono di combinare le parole per formare frasi, ad ogni ciclo le applico una sola volta in modo da espandermi un pochino, quindi al primo ciclo passo da parole singole a frasi della lunghezza di due parole, poi le confronto ad un criterio per avere soluzioni soddisfacenti, e se le due parole traducessero la frase di tedesco in modo soddisfacente il programma si fermerebbe, altrimenti se il risultato è insoddisfacente il programma proseguirebbe ad applicare di nuovo le regole e così avanti fino alla soluzione soddisfacente.
La seconda soluzione si chiama Back-tracking o ricerca all’indietro. Questo metodo non è adeguato a risolvere problemi di traduzione, è indicato per esempio quando si devono dimostrare teoremi matematici. Parto dal teorema, che io già conosco, che rappresenta il mio punto di arrivo. Ho delle regole di produzione che consentono di arrivare da un’espressione ad un’altra, come da un teorema ad un altro teorema, ed ho un elenco di punti di partenza soddisfacenti, che sono espressioni matematiche o teoremi che ho già dimostrato in passato, oppure sono assiomi. La strategia in questo caso è: genero un elenco di tutti i possibili teoremi che hanno come conseguenza il punto di arrivo, quindi applicando le regole di produzione ho il teorema di arrivo, dopodiché confronto questi risultati è vedo se sono soddisfacenti, cioè se uno dei punti di partenza trovati è soddisfacente ed è quindi o un teorema che già posseggo dimostrato o è un assioma che mi consente di dimostrarlo attraverso l’applicazione delle regole di produzione, se fosse così il programma a questo punto si fermerebbe, altrimenti ripartirebbe dall’inizio per ripetere le procedure.
Questa è la strategia in termini generali, ma neanche Simon pensava che potesse essere applicabile in questa forma per un motivo semplice: questa strategia è resa inapplicabile dal problema dell’esplosione combinatoriale.
Sia che io faccia il ragionamento in avanti, sia che io faccia il ragionamento all’indietro, avrei un immenso numero di espressioni generate e rapidissimamente perderei il controllo. Esaminiamo per esempio il caso in cui da ogni espressione se ne possono generare solo altre 10, è evidente che da una sola espressione iniziale dopo il primo passo ne avrò già altre 10 e al secondo diventeranno già 100, per arrivare ad averne al solo terzo passo già 1000. C’è una crescita esponenziale del numero di espressioni che ad ogni passo devo valutare e vedere se mi ha dato il risultato desiderato, questo modo di procedere chiaramente non è possibile e si impone quindi la necessità di eliminare i nodi di poco interesse, questa si chiama potatura, in inglese prunning. Newell e Simon propongono le regole euristiche, quindi regole non giustificate secondo un ragionamento teorico, ma secondo loro tendono a riprodurre le modalità del ragionamento umano di fare prunning. Ad esempio se un’espressione è troppo lunga e complicata viene tagliata senz’altra giustificazione e tornando al mio albero posso decidere che questi pezzi qui non sono interessanti e li tolgo e poi proseguo. In questo modo posso limitare il numero di nodi da esaminare ridimensionando il problema ad un numero di dati più facilmente manipolabili.
Vediamo come funziona il Logic Theorist.
Obiettivo del Logic Theorist è dimostrare teoremi matematici partendo da un elenco di assiomi e di teoremi già dimostrati. L’operatore immette un’espressione che la macchina deve dimostrare. Ad esempio si può dimostrare il teorema di Pitagora. Ci sono delle regole di produzione che permettono di dedurre un’altra espressione secondo la logica formale, così come nel sistema MIU. Il sistema utilizza una strategia  di ragionamento all’indietro, parte dall’espressione target e attraverso le regole di produzione genera tutte l’espressione che possono essere trasformate nell’espressione target, poi pota tutte l’espressioni che ritiene troppo complicate, tutte quelle troppo lunghe oppure indimostrabili. Il sistema parte da questo nuovo insieme di espressioni e cerca di dimostrarle con la procedura all’indietro verso gli assiomi, e il procedimento più breve che permette di arrivare ad un assioma soddisfacente è il risultato atteso, cioè la dimostrazione matematica del teorema target.
Alla pubblicazione di tale ricerca gli evidenti risultati molto positivi ebbero un forte impatto sulla gente. Le regole che guidavano tale sistema sono estrapolate dal 2º capitolo di Principia Matematica di Whitehead
e Russell. All’inizio del secolo questa macchina è riuscita a dimostrare 38 su 52 teoremi, ed almeno in un caso la dimostrazione era più elegante di quella originale, al punto che chi aveva scritto il libro disse che la macchina era più intelligente di lui. Quindi la macchia aveva una modalità di funzionamento molto convincente, infatti la maggior parte dei teoremi erano dimostrati in tempi che andavano da 1 a 5 minuti, considerando anche che Whitehead
aveva messo 10 anni per scrivere il libro e che stiamo parlando di computer degli anni ’50, molto più lenti di quelli di oggi. Per alcuni teoremi il tempo saliva fino a 45 minuti, il tempo di soluzione era ancora buono, ma la cosa preoccupante era che più lunga era l’espressione più tempo ci impiegava il computer a dimostrarla, e vedremo nel prosieguo del corso che questa è una caratteristica di questo tipo di programma che lo rende poco biologico, in contrapposizione alla necessità degli organismi viventi di risolvere i problemi che incontrano in tempi estremamente brevi.
Vediamo il secondo sistema, che doveva avere un funzionamento più generale, che si chiama General Problem Solver. Si partiva da un elenco di mezzi e fini ( obiettivi )
. Il sistema definiva degli operatori che consentono di raggiungere l’obiettivo, ad esempio di sostituire il numero 2 al carattere A, e questo il sistema lo effettuava ogni volta che trovava scritto A, dopo di che calcola, quindi genera una possibile soluzione per il problema. Poi calcola quanto è vicina questa soluzione ad una soluzione adeguata con criteri suoi che possono essere molto complicati e poi può scegliere un’altra operazione da compiere per ridurre la distanza, come ad esempio di sostituire 3 invece di 2 ad A. questo modo di procedere continua fino a che non si raggiunge la soluzione giusta o almeno soddisfacente secondo i parametri del sistema. 
Anche con questa macchina i risultati furono buoni. Rompicapo, problemi matematici ed altri erano effettivamente risolti, e questo generava grandi entusiasmi. Per gli studiosi di intelligenza artificiale questi sistemi erano veramente intelligenti, e tra l’altro le soluzioni che generavano non erano sempre evidenti, sembrava perfino che questi sistemi avessero una loro capacità creativa.
Quest’euforia fu così forte che si è imposta per decenni, al punto che Howard Gardner, che è un autore moderno ha scritto:
“Il GPS occupò uno spazio importante anche nelle riflessioni di Simon e Newell sull’impresa in cui erano impegnati.  Nella loro concezione ogni forma di intelligenza implica l’uso e la manipolazione di vari sistemi di simboli come quelli della matematica e della logica…Nella spiegazione di Simon e Newell il computer è un sistema di simboli fisici simile al cervello umano e presenta molte proprietà simili a quelle degli esseri umani…” La Nuova Scienza della Mente, Feltrinelli, 1988.
Questa è la nascita di quello che si chiama “il programma dell’intelligenza artificiale forte”, Strong Artificial Intelligence. In questa visione del mondo quello che contava erano le regole e la manipolazione dei simboli, il programma. Si credeva che l’intelligenza umana si potesse riprodurre in un programma software. Davano pochissima importanza alla macchina su cui questo programma doveva girare, quindi pochissima importanza al cervello, mai nei programmi di questi autori è scritta la parola neurone. Questa è l’intelligenza artificiale classica, che noi chiamiamo Good Old Fashioned Artficial Intelligence ,GOFAI, intelligenza artificiale vecchia moda. Pero non andò tutto come Simon e Newell avrebbero voluto, innanzi tutto i programmi come General Problem Solver si dimostrarono meno potenti del previsto, funzionavano benissimo per fare i cruciverba oppure per piccoli rompicapi, ma appena si arriva a problemi più tipici per l’intelligenza umana biologica non si sapeva come programmarli. Questo comporto una frantumazione nel campo dell’intelligenza artificiale. Si individuarono diversi domini, diverse problematiche, e si formarono delle scuole, delle tecniche fatte ad ok per le singole problematiche. È impossibile esaminarle tutte, ci vorrebbe troppo tempo, ma di 4 di esse vale la pena di scendere più nei particolari.
Iniziamo con quelli che chiamiamo comportamenti esperi ed è qui che ci fermeremo con la lezione di oggi. Domani vedremo come l’intelligenza artificiale classica vede la visione, la robotica, e come si possono creare dei sistemi per fare dei giochi, in particolare il gioco degli scacchi.
Prima di questo vediamo quale è la conseguenza della frantumazione di questa nostra visione del cervello. Se la disciplina dell’intelligenza artificiale si frantuma, e un pezzo si occupa della visione, un pezzo di robotica, ad esempio i movimenti, un pezzo si occupa del linguaggio sembra quindi che il cervello non è più un meccanismo unitario, cioè anche il cervello è fatto di pezzi, ed è quindi un cervello modulare, dove ogni modulo è dedicato ad una specifica capacità umana. Qui comincia a nascere l’idea che nel cervello ci sia una macchia con tante sottomacchine, come ad esempio una sottomacchia per il linguaggio, una per la visione, un processore per controllare il movimento, e così avanti.
Peccato che questa sia una visione molto pericolosa, perché non è plausibile biologicamente che io abbia un processore per giocare a scacchi. Secondo me la natura non ci ha fatto sviluppare questo tipo di struttura del cervello, e che ci abbia fatto sviluppare un modulo per giocare a videogiochi ci credo ancora meno.
Quindi questa visione è pericolosa, ma come vedremo in seguito è sia pericolosa sia uno spunto teorico importante allo stesso tempo.
Torniamo ai comportamenti esperti.
Con Simon e Newell parlavamo di problemi di logica pura, erano problemi risolvibili con la sola manipolazione formale dei simboli, ma il loro programma incorreva in ogni caso nella necessità di avere delle euristiche per effettuare la potatura dei nodi non rilevanti. Quando io devo potare un albero ho bisogno decidere quali rami eliminare, e le euristiche che mi permettono di fare questo derivano dalle così dette conoscenze esperte. Domani esamineremo il gioco degli scacchi, ma noi sappiamo che ogni buon scacchista non esamina ogni possibile mossa, perché lui sa già in partenza che il 99,99% delle mosse sono sicuramente perdenti e neanche le guarda, e neanche esamina ogni possibile mossa del rivale, perché lui sa che uno scacchista di quel livello certe mosse non le farebbe mai per cui non vale la pena guardarle. Questa è una conoscenza esperta rispetto al dominio degli scacchi.
Agli inizi degli ’60 era chiaro che per risolvere problemi realistici nei domini dove lavoravano esperti umani il sistema ha bisogno non soltanto di logica ma anche di conoscenze.
Ad esempio per fare diagnosi medica non mi serve solo di elencare tutte le possibili malattie di cui potrebbe soffrire il mio paziente e scegliere quella più vicina ai sintomi, ma devo conoscere molto di medicina, l’università di medicina dura diversi anni, e devo aver fatto molto tirocinio clinico per acquisire le competenze per fare questo lavoro.
Quindi negli anni ’60 si iniziò a costruire quelli che chiamiamo sistemi esperti.             
L’obiettivo di un sistema esperto è quello di riprodurre il comportamento di un esperto in un determinato dominio di conoscenza, come ad esempio nel campo della diagnosi medica: il paziente presenta questi sintomi di quale malattia sta soffrendo? Oppure la mia macchina si è fermata in mezzo alla strada e fa fumo: che cosa si è rotto e come si ripara? La risposta a questa domanda è una diagnosi esperta. Altro esempio è la prospezione petrolifera: conosco la geologia di una certa zona, faccio dei sondaggi con delle esplosioni e con i sismologhi rilevo dei dati, voglio sapere se sotto c’è il petrolio o meno e lo voglio sapere prima di trivellare per contenere i costi, l’esperto deciderà se trivellare o no.
In tutti e tre questi campi ci sono degli esseri umani che sanno fare questi lavori, ma i loro interventi sono costosi. Tecnologia e conoscenza per creare macchine in grado di sostituire il comportamento di un esperto. Per progettare sistemi esperti si deve implementare una base di conoscenze, che non sono altro che la memorizzazione di tutto ciò che un esperto umano conosce di un certo dominio.
Ad esempio nel caso della diagnosi medica le conoscenze non sono altro che tutto quello che il medico ha imparato all’università, dai libri e dalla clinica.
Per dichiarare queste conoscenze in un sistema esperto ci sono diversi modi: una conoscenza declarativa, questi sono i fatti, questo ad esempio è formalizzato nella forma fuori, casa, bambino per dichiarare la conoscenza che il bambino è fuori di casa, definisco una relazione e ho 2 argomenti che sono in quella relazione. Nel caso della diagnosi medica posso dichiarare i sintomi di ogni malattia, e posso avere per esempio la febbre sia nell’influenza sia nella malaria, quindi se il paziente ha la febbre questo modo di dichiarare le conoscenze non mi da informazioni per sapere se  il paziente ha la malaria o l’influenza.
Poi posso avere le regole di produzione, esattamente come nel caso dell’applicazione della logica formale, e possono essere del tipo: se io ho l’infezione in atto allora la temperatura è maggiore di 38 gradi. Posso creare molte regole di produzione e di dichiarazioni di fatti. 
Nel corso degli anni si sono sviluppate molte tecniche specifiche per rappresentare queste conoscenze e per avere delle regole di produzione, ma che in questo corso non interessa approfondire più di tanto.
Per esempio Minsky ha formalizzato la conoscenza in frames. Ogni oggetto appartiene ad una classe (frame) caratterizzata da attributi che lui chiama slots.
Esempio: una casa ha uno slot per la grandezza, può essere piccola o grande, ha un altro slot per le stanze, ne può avere3, e un altro per indicare la città in cui è situata, che può essere Roma, e si può fare quindi un elenco di tutti gli slot della casa. La casa può essere parte di una casa più grande, che è un edificio, classe di cui si possono rappresentare tutti gli slots a prescindere se sono case o no.
Ci sono altre tecniche per rappresentare queste conoscenze, come quella proposta da Schank con gli script.  Lo script è un racconto. Ad esempio: se vado ad una cena in un ristorante ci sono delle caratteristiche di questo tipo di evento che sono costanti e che sono rappresentate in uno script, come leggere il menù, ordinare al cameriere, pagare il conto. Lo script consente di instanziare una descrizione generale di una situazione specifica.
Queste tecniche ai vostri fini di psicologi interessano relativamente poco, ciò che è importante è di sapere che esistono e che sono tentativi di rappresentare la realtà, ma esattamente come lo fanno a noi interessa limitatamente.
Definita la mia base di conoscenza vado avanti cercando di individuare le tecniche di deduzione e di pianificazione. Queste erano essenzialmente simili a quelle indicate da Simon e di a Newell, si creava uno spazio delle soluzioni, cioè tutte le possibili soluzioni ad un problema, ed esploravo quello spazio. La differenza non è nel procedimento logico, che resta invariato, ma è nel fatto che abbiamo aggiunto una grossa base di conoscenza a monte, quindi non stiamo più parlando di problemi astratti, logici, bensì di problemi concreti del mondo reale, ed anche qui utilizziamo tecniche di potatura. Posso fare un esempio: c’è una regola nella semeiotica medica che dice che non si devono mai diagnosticare ad un paziente 2 malattie alla volta a meno che non sia strettamente necessario. Se si possono spiegare i sintomi con una sola malattia la diagnosi tende ad essere migliore, e la stessa cosa è utilizzata nei sistemi esperti. Una spiegazione semplice è migliore di una spiegazione complessa.
Cosa si è riusciti a raggiungere con questi sistemi esperti?
In alcuni casi questi sistemi realmente riescono a sostituire gli esseri umani in domini molto limitati. Ad esempio non c’è nessun sistema esperto in grado di sostituire un medico, neanche con funzioni di medico di base, invece esistono sistemi esperti che suggeriscono qual’è l’antibiotico migliore in caso di malattia. In domini molto limitati come può essere quello oncologico ci sono sistemi esperti che suggeriscono il trattamento individuale migliore. Quando il dominio è molto limitato, ci si riesce. Quando il dominio diventa più complicato non ci si riesce più. I domini devono essere facilmente formalizzabili, quindi non a caso abbiamo scelto domini come quello della medicina, e la stessa cosa non sarebbe possibile in un dominio come quello psicologico e di psicoterapia. Lo stesso vale per i problemi di diagnosi tecnica, cioè rifacendoci all’esempio di diagnosi di danno meccanico nell’automobile le parti soggette a rottura sono ben definibili. Quindi domini facilmente formalizzabili, e inoltre è importante che l’operatore deve essere lui stesso un ottimo conoscitore della materia per poter dare i dati alla macchina. Ad esempio se la macchina chiede i dati della febbre e della pressione e l’operatore li misura male, la macchina non riuscirà a funzionare bene. Quindi per l’utilizzo della macchina si richiede un operatore molto esperto. Diversamente dall’esperto umano la macchina fa un ragionamento molto trasparente, ed è questa una caratteristica di funzionamento che piaceva molto agli utilizzatori, quindi si può chiedere come ha fatto per raggiungere quel risultato, ed essa che lo esplicita. Ad esempio: come sintomo avevamo la febbre, sintomo che è presente nell’influenza e nella malaria, ma il paziente non aveva mai fatto visita a paesi tropicali, poi abbiamo fatto un esame per evidenziare la malaria che è risultato negativo, quindi l’influenza spiega tutti i sintomi. Conclusione: è influenza.
Questo modo di procedere è un po’ diverso da quello adottato dagli esseri umani per fare delle scelte.
Quali sono le difficoltà di questi sistemi esperti?
Innanzi tutto bisogna scegliere le informazioni rilevanti, in pratica per quanto potente è il computer non può memorizzare tutto. Ad esempio di tutte le conoscenze che ha un medico quali sono da inserire in un sistema esperto. Questo è il primo problema.
C’è il problema di come si acquisisce la conoscenza. Abbiamo già detto prima che molti dei nostri moduli decisionali non sono trasparenti, quindi spesso anche l’esperto ha un’immensa difficoltà a spiegare perché ha raggiunto una certa decisione, lo scacchista sa che quella mossa non è buona, ma non sa il perché, quindi anche l’esperto ha difficoltà a rendere esplicite le sue conoscenze. C’è il problema del senso comune, c’è il problema della rappresentazione. Ad esempio: il modo che io scelgo per rappresentare un tipo di problema non è adeguato ad altri tipi di problemi, quindi cambio problemi ed il sistema esperto non funziona più.
Sono quindi sistemi fragili, sistemi pre-programmati e quindi non creativi.
Finiremo la lezione esaminando questi problemi uno alla volta.        
Scelta delle informazioni rilevanti.
Scegliere informazioni rilevanti di un dominio significa essere già guidati da una teoria
Ad esempio un sistema esperto degli anni ‘50\60 dal nome Mycin sceglieva il tipo di antibiotico utilizzato. Nel fare questo non chiedeva dati sulla genetica del paziente perché le teorie di allora, utilizzate nella scelta delle informazioni rilevanti per costruire tale sistema esperto, non presumevano un’influenza tra antibiotico e genetica del paziente, e siccome oggi noi sappiamo che ci sono relazioni importanti tra questi due dati capiamo perché questo sistema commetteva degli errori nella scelta dell’antibiotico. Quindi le teorie di allora su quel dominio non fecero scegliere adeguatamente quali fossero le informazioni rilevanti. Di conseguenza il sistema non poteva dare risposte corrette perché la teoria del dominio non era corretta.
Il medico, diversamente da un sistema esperto artificiale, può correggere ed aggiornare continuamente ed autonomamente le sue conoscenze sul dominio, leggendo riviste specializzate, partecipando ad aggiornamenti, attraverso la pratica clinica. Le conoscenze di sistema esperto artificiale dipendono esclusivamente dal suo programmatore e dall’esattezza delle informazioni che quest’ultimo da al sistema, ed è questo un primo punto di debolezza. I sistemi esperti artificiali non imparano nulla e questo significa che ogni conoscenza deve essere rappresentata esplicitamente, e qui abbiamo i problemi dei comportamenti non trasparenti, quelli di cui parlavamo prima. L’esperto non sa cosa esplicitare tutto ciò che fa per raggiungere le soluzioni, quindi io dovrei adottare avanzate tecniche di intervista psicologica, tecniche molto costose, per garantire che lui mi espliciti tutto ciò che fa nel suo lavoro. Questo rappresenterebbe un lavoro immane e costoso anche per un dominio molto piccolo, al punto da far essere in molti campi l’esperto umano meno costoso.
Poi c’è un problema enorme, quello che chiamiamo del senso comune. Quando un esperto decide utilizza una enorme quantità di conoscenza implicita. Ha conoscenze espliciti sulla sua materia, ma ha anche una conoscenza più vasta che utilizza nel suo lavoro. Le conoscenze sulla personalità di un paziente, oltre alle conoscenze mediche e ai risultati di analisi oggettive, può essere di estremo aiuto ad un medico per diagnosticare un possibile tumore al cervello o una semplice emicrania ad una persona che si lamenta continuamente, nonostante i sintomi nei due casi potrebbero essere identici.
Problema analogo sono le conoscenze di quella che chiamiamo fisica popolare. Ad esempio conosco che se appoggio una cosa in un determinato modo può cadere, e se spingo un oggetto da un determinato punto si sposterà poco perché c’è l’attrito, quindi conosco una marea di cose del come si comporta il mondo senza che nessuno me le abbia mai insegnate a scuola. Utilizzo queste conoscenze ogni attimo della mia vita, e questo senso comune mi rende più semplice capire quali sono le cose importanti da considerare e quali no, ad esempio mentre parlo con voi non sto pensando se il pavimento dell’aula può cedere o se il soffitto può cadere, un computer non avendo le conoscenze del senso comune non può capire senza analizzarle che queste informazioni possono essere irrilevanti. Ho un senso comune della fisica che mi dice come si comportano gli oggetti nella mia vita quotidiana, cosa questa che il computer non ha.
In questo momento Lenat ha in programma di creare un sistema in cui è codificata tutta la conoscenza del senso comune del mondo, e per fare questo sta creando un immenso programma che si chiama CYC. Lui vuole fare un’immensa base di conoscenza che contenga tutto lo scibile sulla fisica popolare, sulla psicologia popolare, ecc, e ci sta lavorando dall’84 ma non ci sta riuscendo. La sua idea è di innestare su quest’immensa base di conoscenza generale le conoscenze specifiche dei singoli domini in modo da far funzionare meglio i sistemi esperti.
Problema della rappresentazione e della strategia di soluzione dei problemi.
La rappresentazione che io scelgo condiziona le conclusioni che io raggiungo.
Ad esempio in medicina è buona prassi cercare una sola causa per una determinata condizione clinica, ma se un sistema esperto fosse progettato per applicare in ogni caso questa indicazione, le conclusioni  risulterebbero errate ogni volta che due patologie distinte si presentassero insieme nello stesso paziente: un paziente che ha un tumore può avere anche l’influenza.
Altra limitazione è data dal fatto che la rappresentazione scelta è adeguata ad uno specifico dominio e non ad altri. Anni ed anni di ricerca per rappresentare il senso comune possono non servirmi a niente per rappresentare il gioco degli scacchi. Gli scacchi non sono fisica.
Avendo il sospetto che il mio cervello è fatto in modo unico, pieno di neuroni e di sinapsi, credo che si debbano trovare strategie uniche.
Questi sistemi sono fragili in molti casi. Innanzi tutto la qualità dei loro output, la loro decisione, dipende dalla qualità dell’input. Se il paziente spiega male il sintomo o se l’operatore fa un errore di battuta degli input il sistema sbaglia. Gli esseri umani per prendere delle decisioni risultano molto meno fragili. Il medico non tiene conto solo dell’informazione data dai sintomi del paziente, che anzi possono anche essere descritti male, in modo impreciso o anche in modo volutamente inesatto per paura o per dimenticanza, per poter esprimere comunque una diagnosi. In queste condizioni un sistema esperto artificiale sarebbe probabilmente completamente paralizzato, in quanto è un sistema deterministico (nelle stesse circostanze queste macchine raggiungono sempre le stesse conclusioni). 
Questo, più che significare che non si sbagliano mai, significa che non si comportano mai in modo inatteso e in questo modo non hanno nemmeno la base per un possibile apprendimento.
Hanno un’immensa difficoltà a trattare dati incompleti o inesatti, voglio dare un esempio di un metodo che si usa in botanica e non è quindi direttamente un sistema esperto.
In botanica si utilizzano le chiavi dicotomiche per identificare le piante. Questo metodo è composta da domande che hanno solo due alternative e ognuna delle quali porta ad una nuova domanda, fini a che non si hanno dati sufficienti per individuare di che pianta si tratta. Esempio di domanda potrebbe essere quella che chiede se le foglie sono lunghe o corte, o se ha frutti o no, e rispondendo a tutte le domande senza sbagliare si riesce ad individuare la specie della pianta in modo deterministico e sicuro. Il problema di tale metodo consiste nel fatto che le domande non sempre sono facili da decifrare, non in tutti i periodi dell’anno una pianta si presenta allo stesso modo, i frutti non sempre sono presenti, eppure un esperto umano, il botanico, semplicemente guardando la pianta, e in qualsiasi periodo dell’anno, senza difficoltà individua di quale specie è. Suggerisco che il mio esperto non funziona come le chiavi botaniche e riesce a trattare molto più facilmente i dati incompleti, e a giungere a risposte esatte. Il botanico di professione utilizza l’esperienza, oltre che a metodi controintuitivi come quello di utilizzare anche l’odore delle piante per poterle riconoscere, quindi utilizza procedimenti radicalmente diversi, di cui parleremo nelle prossime lezioni.
Ma non abbiamo ancora finito il discorso sull’intelligenza artificiale classica. Domani parleremo di visione, di robotica e tireremo le somme su questo tipo di visione del mondo.         

 

 

 

Fonte: laral.istc.cnr.it/rwalker/Naplestexts

 

 

Intelligenza artificiale

 

Intelligenza umana e intelligenza artificiale

 

Si stenta a credere, sulle prime, che ci siano delle persone seriamente convinte, come i sostenitori della cosiddetta Ipotesi forte dell’intelligenza artificiale (I.F.I.A.), che “tutta l’attività mentale umana sarebbe programmabile su computer” (1).
Poi però, considerando che non vi è errore che non contenga almeno un briciolo di verità, ci si rende conto che esiste, in effetti, un’attività mentale interamente “programmabile su computer”, ma che si tratta, non dell’”attività mentale umana”, bensì appunto di quella dei sostenitori dell’Ipotesi forte dell’intelligenza artificiale.
Ipotesi che non si vede cos’abbia peraltro di “forte” dal momento che impone a coloro che la sostengono di abbandonare il “buon senso”, di spogliarsi della loro umanità, di amputarsi del restante organismo, e di ridursi così a esseri dotati soltanto di una testa: di una testa, oltretutto, la cui intelligenza è “totalmente algoritmica” (2) o “computazionale” (3): vale a dire, “numerabile e puramente meccanica” (4).
Fa bene perciò Francesco Lerda (ordinario, dal 1975 al 1996, di Teoria delle Macchine Calcolatrici presso il Dipartimento di Matematica dell’Università di Torino) a ricordare quanto segue: “E’ certamente vero che diverse attività mentali umane, anche al di fuori dei calcoli numerici, sono di tipo algoritmico: ma non esiste alcun serio argomento scientifico che renda sia pure soltanto plausibile supporre che la stessa cosa valga per tutta l’attività della mente umana” (p.18); e ad aggiungere: “Noi conosciamo bene le linee dell’evoluzione (…) degli sviluppi del pensiero scientifico moderno, i contributi dei singoli scienziati, le situazioni sociali e culturali in cui sono maturati, ma non abbiamo alcuna idea dei processi mentali profondi secondo i quali sono nate e si sono sviluppate tali conoscenze; in altri termini, conosciamo ciò che è avvenuto, le situazioni in cui le cose sono avvenute, le giustificazioni scientifiche delle nuove acquisizioni, la loro collocazione nel contesto filosofico e scientifico generale, ma non i meccanismi di pensiero, le idee secondo cui si sono svolti i fatti (…) Noi non abbiamo una definizione, anzi nemmeno una descrizione soddisfacente della nozione di idea, eppure sono le idee l’elemento fondamentale per la creatività” (6).
Il che vuol dire, insomma, che conosciamo cosa è avvenuto, ma non come è avvenuto. Sarebbe tuttavia più prudente, ignorando la natura dei “processi mentali profondi”, non parlare – come fa Lerda – di “meccanismi” di pensiero. Per quale ragione tale natura dovrebbe essere infatti “meccanica”, e non magari “vivente”?
Afferma il matematico G.C.Rota (citato da Lerda): “ Nessuno ha la più pallida idea di come operi il processo di induzione scientifica, e già nel chiamarlo “processo” stiamo forse facendo un’assunzione pericolosa” (7). Ma l’”assunzione” che quelli del pensiero siano “meccanismi”, è forse meno “pericolosa” dell’”assunzione” che quello dell’induzione sia un “processo”?
Scrive Lerda: “Cosa dire dei rapporti fra la creatività artistica dell’uomo e la pura attività algoritmico-computazionale? Pensiamo un momento a tre fra i più grandi artisti di tutti i tempi e di tutti i paesi: Leonardo, Michelangelo, Raffaello. Sono stati sparsi fiumi di inchiostro sulle loro opere, sugli influssi del primo sugli altri due e del secondo sul terzo; ma quali sono stati i processi mentali attraverso i quali sono pervenuti alla realizzazione dei loro immortali capolavori? (…) Cosa sappiamo dei processi mentali di questi tre grandi? Possiamo sostenere che tali processi siano esclusivamente di natura algoritmico-computazionale?” (8).
D’accordo, ma se ne saprebbe forse di più se si parlasse, anziché di processi “algoritmico- computazionali”, di “meccanismi di pensiero”?
Lerda prende comunque le distanze tanto dai sostenitori dell’I.F.I.A. quanto da alcuni dei suoi più importanti e decisi avversari, quali il fisico inglese Roger Penrose, il filosofo americano John R. Searle e il neurofisiologo, sempre americano, Roger Wolcott Sperry.
Scrive infatti: “La debolezza dei paradigmi di Searle, Penrose, Sperry sta nel fatto che da un lato non si vuole rinunciare ai “processi mentali superiori” quali la coscienza, le idee, i sentimenti, le immaginazioni, ecc.; d’altro canto non si fornisce alcuna pur vaga indicazione di come un ambiente puramente fisico-chimico-biologico possa dar luogo a quei processi mentali superiori. Ricollegandoci al punto di vista del logico sovietico Manin, l’algoritmo non è in grado di giustificare l’intelligenza più di quanto la biologia sia in grado di giustificare la vita. Purtuttavia si continua a rifiutare di prendere in considerazione una realtà “spirituale” distinta da quella matematica, in particolare una mente distinta dal cervello” (9).
Benissimo. Ma è disposto Lerda a prendere in considerazione una realtà spirituale (senza virgolette) come quella che si può ad esempio conoscere e sperimentare grazie alla scienza dello spirito di Rudolf Steiner? O preferisce riferirsi allo spirito solo astrattamente, e mantenersi prudentemente ancorato al “dualismo interazionista” di John Eccles?
Ove si considerasse, infatti, la vivente realtà dello spirito, non solo si dovrebbero distinguere le idee dai sentimenti, i processi conoscitivi dai processi creativi, la “mente computazionale” dal pensiero e il pensiero dal cervello (che si limita a rispecchiarne l’attività), ma, in ordine ai problemi di cui stiamo trattando, occorrerebbe anche rovesciare la prospettiva.
La vera questione non è infatti: “In che modo il pensiero supera i processi algoritmici?”; bensì è: “In che modo il pensiero decade a processo algoritmico?”.
Per cominciare a rispondere a questo interrogativo, si deve però tornare a Hegel. “Il pensiero, che produce solo determinazioni finite – scrive infatti - e che si muove in esse, si chiama intelletto (nel senso più proprio della parola)” (10). Ciò che si usa chiamare oggi “mente” è dunque l’intelletto. Ma che cosa sono quelle “determinazioni finite” che produce e tra le quali si muove? Sono le rappresentazioni. L’intelletto – spiega appunto - si distingue dalla rappresentazione nel porre “relazioni di universale e particolare, o di causa ed effetto, ecc., e quindi relazioni di necessità tra i caratteri isolati della rappresentazione, laddove questa li lascia nel suo campo indeterminato, l’uno accanto all’altro, connessi col semplice anche.” (11).
L’intelletto elabora dunque le rappresentazioni, così come il calcolatore elabora le informazioni. Scrive infatti Lerda: “La precisazione rigorosa della nozione di algoritmo è stata fornita nel 1936 dal matematico e informatico inglese Alan Turing. Egli fa riferimento ad elaborazioni numerabili operanti in modo finito ma non limitato su oggetti numerabili di dimensioni finite ma non limitate (questa è proprio la modalità con cui opera l’uomo quando tratta oggetti singolarmente considerati uno per volta)…” (12).
Va sottolineato, tuttavia, che l’intelletto in tanto procede a “elaborazioni numerabili” in quanto le rappresentazioni sono state appunto “numerate”. Nel calcolatore - spiega infatti Lerda – “le informazioni, cioè i dati o le istruzioni, sono codificate in binario, utilizzando due soli simboli, 0 ed 1, detti bit…”(13).
Ma per quale ragione vengono “codificate in binario”? Perché questo “codice” altro non è che l’espressione, sul piano “computazionale”, della logica (analitica) dell’intelletto e, in particolare, di quel “principio d’identità” (e del “terzo escluso”) per il quale se 0 è 0, non può essere 1, e se 1 è 1, non può essere 0.
Fatto si è, però, che tali elaborazioni, pur se algoritmiche, necessitano di movimento, e che il movimento necessita di energia. Un calcolatore spento non procede infatti ad alcuna elaborazione. Ma se per far funzionare il calcolatore serve energia elettrica, per far funzionare l’intelletto di quale energia c’è allora bisogno? E’ presto detto: dell’energia di quel pensare che sgorga dall’Io (spirituale) in modo vivo, fluente e continuo. Una cosa è dunque il pensare, altra l’intelletto. Quest’ultimo contrassegna infatti un particolare livello di manifestazione o, per essere più precisi, una particolare modalità di movimento del pensiero che non tanto riflette la sua natura quanto quella del piano o del terreno sul quale si attua.
Facciamo un banale esempio. Immaginiamo di dover percorrere ogni giorno, con l’auto, lo stesso tragitto e d’incontrare più semafori che – come può capitare – talvolta sono tutti rossi e talaltra tutti verdi. Nel primo caso il nostro movimento sarà discreto, nel secondo continuo.
Che il movimento assuma l’una o l’altra caratteristica dipende dunque dal fatto che gli vengano o meno frapposti degli ostacoli.
Ebbene, mettendo al posto dell’auto il pensiero, si dovrebbe allora dire: “Il movimento del pensiero è (in sé) uno, ma assume l’una o l’altra fisionomia a seconda che incontri o meno degli ostacoli”. Ma quali sono gli “ostacoli” che può incontrare il pensiero? E’ semplice: le singole e finite rappresentazioni. Queste potrebbero essere infatti paragonate a dei sassi che emergono da un torrente, e che l’acqua, col suo ininterrotto fluire, può bagnare, aggirare, superare e collegare, ma non penetrare. Ove infatti li penetrasse, l’acqua diverrebbe un’interna forza plasmatrice e l’essere minerale dei sassi si muterebbe nell’essere vegetale delle piante. In queste – come insegna la dottrina della metamorfosi di Goethe – la foglia, il calice, la corolla e il frutto si sviluppano appunto l’uno dall’altro, non limitandosi quindi a stare, come i sassi, l’uno accanto all’altro. Anche le rappresentazioni, tuttavia, ove venissero penetrate dalla forza viva del pensiero si muterebbero (nell’accezione di Steiner) in “immaginazioni”. E alla coscienza intellettuale (o rappresentativa), capace di collegare solo in modo sequenziale A a B, B a C, C a D, e così via, verrebbe in tal modo ad aggiungersi quella “immaginativa” capace invece di trasformare, senza soluzione di continuità, A in B, B in C, C in D, e così via.
Ove poi immaginassimo al posto dei sassi dei blocchi di ghiaccio, ci renderemmo conto che la natura di ciò che fluisce non è essenzialmente diversa da quella di ciò che ostacola. L’acqua non è infatti che ghiaccio allo stato liquido, così come il ghiaccio non è che acqua allo stato solido.
Ma questo vale anche per il pensiero. Il “pensare” (quale verbo) non è infatti che pensiero allo stato “liquido” (o vivente), mentre i  “pensati” (o le rappresentazioni) non sono che pensiero allo stato “solido” (o morto).
Qual è però il processo che permette al pensare di coagularsi nel pensato? Quello della percezione. “La rappresentazione – spiega infatti Steiner – non è altro che un’intuizione riferita ad una determinata percezione, un concetto che è stato una volta congiunto con una percezione ed al quale è rimasto il rapporto con tale percezione” (14). E’ la percezione, dunque, a far sì che il pensare precipiti dallo stato “liquido” a quello “solido”, e che il concetto si trasformi in una rappresentazione finita.
Non basta dunque parlare in modo generico – come fa Lerda – di “processi mentali superiori”, ma occorre distinguere – come fa Steiner - i gradi della coscienza superiore (15). Un grado, infatti, è quello in cui si danno i pensati (o le rappresentazioni), un altro quello in cui si dà il pensare, e un altro ancora quello in cui si danno i concetti o le idee (così come, d’altro canto, uno è quello di veglia, un altro quello di sogno, e un altro ancora quello di sonno). Al di sopra di questi c’è poi ovviamente il soggetto: vale a dire l’Io. Si tratta di livelli qualitativamente diversi che, ove si avessero meno pregiudizi, potrebbero essere messi tranquillamente in rapporto, nell’ordine, con i tradizionali elementi “terra”, “acqua”, “aria” e “fuoco”.
Abbiamo detto, in precedenza, che il pensare sgorga dall’Io. Meglio sarebbe stato dire, però, che il pensare è un atto dell’Io o l’Io in atto. L’uno e l’altro sono pertanto presenti e operanti, seppure in modi diversi, a ogni livello di coscienza. Al più basso, ad esempio, il pensare si dà come intelletto e l’Io come ego: cioè a dire, come rappresentazione (“solida”, e quindi corporea) dell’Io.
E’ dunque il pensare, in qualità di forza continua, a collegare tra loro i vari livelli di coscienza, così come sono le scale, volendo esemplificare, a collegare tra loro i diversi piani di un palazzo. Una cosa, tuttavia, sono (in sé) i livelli di coscienza, altra la consapevolezza che l’uomo ne ha. Come è possibile infatti digerire pur ignorando le leggi e le forze che governano la digestione, così è possibile pensare (non però il pensare stesso) pur ignorando le leggi e le forze che governano il pensiero.
L’uomo, in virtù dell’evoluzione naturale, ha già fatto suo il primo di tali livelli: quello intellettuale (o “rappresentativo”). E lo ha fatto suo a tal punto da averlo identificato con il proprio ordinario stato di veglia. Lo ha fatto suo, se ne serve, lo studia, ma non lo comprende, come stanno appunto a dimostrare, loro malgrado, gli attuali studi sull’intelligenza umana e su quella artificiale.
Ma perché non lo comprende? Perché, come per studiare e comprendere gli stati di sonno e di sogno è necessario essere svegli, così per studiare e comprendere quello ordinario di veglia sarebbe allo stesso modo necessario salire di livello. Certo, risvegliarsi dal sonno e dal sogno, superando i limiti di questi due inferiori livelli di coscienza, è un fatto naturale, mentre “risvegliarsi” dalla “veglia”, superando i limiti dell’ordinaria coscienza intellettuale, è una conquista spirituale che esige, in quanto tale, un impegno teorico e pratico extraordinario: quello richiesto appunto dalla scienza dello spirito a ogni suo libero e serio seguace.
Abbiamo detto, all’inizio, che si stenta a credere che ci siano delle persone seriamente convinte che “tutta l’attività mentale umana sarebbe programmabile su computer”. La cosa, tuttavia, potrebbe apparirci a questo punto meno strana, poiché è facile immaginare quante e quali “ipotesi forti del sonno e del sogno” potrebbero formulare degli individui che stessero dormendo o sognando.
Volendo, si potrebbe far qui valere la tesi di Kurt Gödel (ricordato da Lerda) secondo la quale la “coerenza di un sistema” non può essere dimostrata“all’interno del sistema stesso” (16). Una cosa comunque è certa: solo un pensiero vivo può rendere oggetto di scienza il pensiero morto. Chi ama infatti parlare del pensiero vivo stando nel pensiero morto, lo sogna, ma non lo conosce, mentre chi ama parlare del pensiero morto stando nel pensiero morto finisce – come stiamo vedendo – col dare (alla lettera) i “numeri”.
Quanto detto può altresì aiutarci a capire il perché tanto Eccles che Lerda optino, nei riguardi del rapporto mente-cervello, per un “dualismo interazionista”. Anche noi infatti, ove ci fossimo limitati a scoprire quattro livelli di coscienza superiori (“superiori” rispetto al sogno e al sonno), avremmo potuto optare per un “quintuplice interazionismo”. Non lo abbiamo fatto, però, in quanto abbiamo anche trovato, nel pensiero, una sorta di “quintessenza” che, in qualità di “tessuto” connettivo, rende il molteplice “uno” e, nel cervello, un particolarissimo “specchio” deputato a rifletterne l’attività. Come l’occhio – secondo quanto afferma Goethe – è creato dalla luce per la luce, così il cervello è creato dal pensiero per il pensiero.
Anche in questo caso, dunque, non ci si dovrebbe limitare a parlare in modo generico di un’interazione, ma si dovrebbe cercare di capire in virtù di quali forze, e in quale modo, essa si attui. Ci sarebbe da considerare, ad esempio, che il rispecchiamento corticale è già frutto, in qualche modo, di una ”interazione” (anche se non di quella tra “psiconi” e “dendroni” di cui parla Eccles), ma, soprattutto, che quest’ultima è sempre e comunque un fenomeno dinamico: ovvero, l’espressione di un incontrodi forze o di volontà delle quali sarebbe invero decisivo arrivare a discernere i soggetti. Ma come discernerli senza disporre di una scienza della vita, dell’anima e dello spirito (o degli spiriti)?
Un’ultima considerazione. Abbiamo udito Rota affermare: “ Nessuno ha la più pallida idea di come operi il processo di induzione scientifica, e già nel chiamarlo “processo” stiamo forse facendo un’assunzione pericolosa”; e abbiamo sentito Lerda dire: “Noi non abbiamo una definizione, anzi nemmeno una descrizione soddisfacente della nozione di idea, eppure sono le idee l’elemento fondamentale per la creatività”.
Chi ci segue sa che abbiamo dedicato una nota al “moto pendolare vivente” (17) di cui parla Steiner, ne La filosofia della libertà, e che l’abbiamo fatta seguire da una breve appendice intitolata: “Induzione e deduzione” (18). Ebbene, in quest’ultima, neanche a farlo apposta, abbiamo non solo affermato che “senza il “moto pendolare vivente” di cui parla Steiner non avremmo né induzione né deduzione”, ma ci siamo anche domandati: “Che idea ha “dell’”idea” l’odierno scienziato? Forse quella fornitagli dalla neurofisiologia o dalla neurobiologia? E cioè di una specie di “cosa”? Oppure quella fornitagli dalla cibernetica? E cioè di una mera “informazione”? Fatto sta che una cosa sono le idee della scienza (ossia, la coscienza), altra è la scienza delle idee (ossia, l’autocoscienza)”.
Abbiamo voluto sottolinearlo non per “farci belli” (poiché quel poco di buono che riusciamo a fare lo dobbiamo interamente a Steiner), ma per dar modo, a quanti credono che il suo insegnamento, essendo ormai trascorso quasi un secolo, sia in tutto o in parte inattuale, di riflettere, ed eventualmente ricredersi.

Note:

  1. F.Lerda: Intelligenza umana e intelligenza artificiale – Rubbettino, Soveria Mannelli (Catanzaro) 2002, p.8;
  2. ibid., p.12;
  3. ibid., p.13;
  4. ibid., p.29;
  5. ibid., p.18;
  6. ibid., p.36;
  7. ibid., p.43;
  8. ibid., p.46;
  9. ibid., p.61;
  10. G.W.F. Hegel: Enciclopedia delle scienze filosofiche – Laterza, Bari 1989, p.39;
  11. ibid., p.35;
  12. F.Lerda: op. cit., p.10;
  13. ibid., p.9;
  14. R.Steiner: La filosofia della libertà – Antroposofica, Milano 1966, p.89;
  15. cfr. R.Steiner: I gradi della conoscenza superiore in Sulla via dell’iniziazione – Antroposofica, Milano 1977;
  16. F.Lerda: op. cit., p.54;
  17. Del “moto pendolare vivente”, 1 marzo 2003;
  18. Induzione e deduzione, 4 marzo 2003.

F.G.
9 marzo 2003

Fonte: www.ospi.it

 

 

 

Intelligenza artificiale

 

 

Sistemi Intelligenti per il  supporto all’apprendimento

 

 

Per sistema di supporto all’apprendimento , indicati con il termine AI-ED systems, si intende  un sistema di apprendimento tramite computer  con un grado di autonomia delle decisioni in vari   aspetti dell’interazione con l’utente.

Il campo dell’intelligenza artificiale nell’eLearning ha  una  vita breve ma intensa.  Nato intorno al 1970,  i primi tentativi furono caratterizzati da una sorta di  ottimismo entusiastico caratteristico di tutto il settore dell’Intelligenza Artificiale in generale.
Questi primi lavori hanno dato contributi significativi sia all’Intelligenza artificiale che all’educazione. Negli anni ’80, i risultati incoraggianti delle applicazioni dell’intelligenza artificiale ai sistemi esperti e diversi programmi nazionali volti alla capitalizzazione della ricerca sull’ AI condussero alla formulazione di  direttive di sviluppo sui sistemi AI-ED  di natura essenzialmente pratica.   Inevitabilmente, la percezione del fallimento di questi progetti mise in luce che i processi di apprendimento e di insegnamento sono intrinsecamente complessi.
Intanto, l’avvento di nuove tecnologie, in particolare del multimedia e delle Reti, ha promesso altre soluzioni a quelle che erano considerati seri problemi nel campo educativo. Di conseguenza,  divenne inadeguato, all’inizio degli anni ’90, continuare a suggerire lo sviluppo di sistemi AI-ED. Adesso il pendolo ha invertito la direzione e ci si è resi conto che le nuove tecnologie hanno bisogno di una metodologia di analisi dei processi di insegnamento e di apprendimento del tipo di quella contenuta nel paradigma del  AI.

 

Come suggerito da J.S. Bruner, l’apprendimento è innanzitutto un fenomeno che coinvolge la cultura di una società, e ci sono varie situazioni, nelle varie culture dell’apprendimento della società moderna,  in cui  i sistemi AI-ED svolgono un ruolo determinante. Uno di questi è il  supporto alla formulazione e il testing di ipotesi di lavoro  in ambito scientifico.
In generale, esistono  ambienti di apprendimento “specializzati” e nessuno di questi metodi è migliore di un altro, in quanto essi  devono essere tutti integrati in una efficace “esperienza di apprendimento”.

L’intelligenza artificiale nell’educazione

L’intelligenza  artificiale nell’educazione concerne l’applicazione di tecniche AI alla soluzione di problemi educativi. Di conseguenza, questa disciplina è una branca dell’Intelligenza artificiale applicata e gli attuali sistemi di AI-ED sono incentrati a mostrare evidenza che tali tecniche sono efficaci.  Tuttavia l’aspetto applicativo dei sistemi AI-ED  è estremamente difficile da valutare e da studiare perché  l’istruzione e l’apprendimento sono argomenti interdisciplinari e controversi. Di conseguenza, ogni progetto di AI-ED deve essere incentrato su un determinato punto di vista, e questo inesorabilmente scatenerà le critiche di coloro che sostengono un punto di vista differente…. I contributi all’AI-ED vengono da molte direzioni: in primo luogo dall’informatica , ma anche dalla sociologia, dall’antropologia, dalla filosofia e da molti altri campi. Di conseguenza, il dibattito teoretico nel settore è in generale espresso in termini di “minimo comun denominatore”, vale a dire in termini informali
Dati gli inconvenienti  di questo approccio, è quindi urgente elaborare un linguaggio tecnico-formale che possa essere usato per  precisare le argomentazioni e rendere più analitica la progettazione dei sistemi AI-ED.
Il linguaggio della teoria dell’AI, per lo più derivato dalla logica formale,è il punto di vista più promettente perché incorpora una parziale formalizzazione dei processi di apprendimento, diagnosi e comunicazione.

Aspetti e problematiche principali dell’ Intelligenza Artificiale nell’Educazione

Gli aspetti più rilevanti nel settore dell’Intelligenza Artificiale applicata all’educazione sembrano essere i seguenti:

  • Comprendere la natura della conoscenza e la sua rappresentazione.
  •  Comprendere COME la conoscenza può essere imparata.
  • Studiare il ruolo e le funzioni di un sistema AI-ED: tutor, guide o Training?
  • Studiare COME le tecnologie devono essere usate nell’educazione.
  • Studiare le misure di efficienza.

 
Le diverse nature della conoscenza e del suo apprendimento

L’oggettivismo

Sembra naturale che i sistemi AI-ED  si sforzino di specificare la conoscenza nel modo più preciso possibile. A tal fine sono state applicate al AI-Ed tutte le tecniche di rappresentazioni della conoscenza disponibili  nel campo dell’Intelligenza Artificiale. Nel far ciò, i progettisti hanno aderito alla corrente epistemologica dell’oggettivismo, secondo cui la realtà può essere completamente e correttamente strutturata in termini di entità, proprietà e  relazioni, e il pensiero razionale  consiste nella manipolazione di simboli astratti visti come la rappresentazione della realtà.
In questo modo, la rappresentazione della conoscenzanell’AI  può essere considerata come un tentativo di descrivere questa struttura e lo scopo di un sistema AI-Ed potrebbe essere quello di aiutare i discenti ad acquisire in modo corretto le entità , le proprietà e le relazioni di questa struttura.
Gran parte della conoscenza che si  vuol fare acquisire ai discenti è di natura oggettiva, perché è conoscenza che il progettista del sistema stabilisce come corretta. Ad esempio, la sintassi di un linguaggio di programmazione o quella di una serie di operatori algebrici. Non è una caso che la maggior parte di sistemi AI-Ed tuttora esistenti hanno a che fare con questi argomenti.

Costruttivismo

Il costruttivismo è un modo di vedere la conoscenza che è spesso stato presentato in maniera opposta all’oggettivismo. In base al costruttivismo, la conoscenza è costruita  dalla mente umana, piuttosto che esistere in modo indipendente da essa. Di conseguenza, i costruttivisti  enfatizzano il processo di strutturazione attiva del mondo da parte del discente, piuttosto che la sua funzione passiva di soggetto da guidare. Secondo i costruttivisti,  nel processo di apprendimento entrambi gli agenti, docente e discente devono usare un approccio costruttivista. In questo caso il sistema AI-ED non conterrà  una conoscenza considerata corretta a priori, ma tenterà di scoprirla in uno sforzo congiunto con lo studente.

Situazionismo

Come il costruttivismo, il situazionismo  afferma che la conoscenza va costruita ma essa non esiste in memoria in quanto emerge dall’interazione con l’ambiente. A differenza dell’opinione corrente in AI (Newell  e Simon) secondo cui alle rappresentazioni simboliche hanno una realtà psicologica,   le teorie cognitive situazioniste affermano che le rappresentazioni sono create “dinamicamente” nel corso delle attività cognitive, ma non sono “conoscenza”, in quanto la conoscenza  è legata solo alle capacità interattive.

Connessionismo

Il connessionismo sostiene che la conoscenza non esiste a livello simbolico ma è implicitamente rappresentata nei pesi e nei legami tra un grande numero di reti neuronali. I metodi connessionisti sono stati usati per sviluppare componenti di sistemi AI-ED, ma nessuno di questi segue una filosofia di progettazione interamente connessionista, presumibilmente perché le rappresentazioni “implicite” non supportano le interazioni necessarie nei processi di apprendimento.

Processi valutativi e misure di effettività in un AI-ED

Nella costruzione di un sistema AI-ED si possono distinguere due tipi di valutazione : quello dei sistemi completi (valutazioni “sommative” o esterne) che cercano di dimostrare la validità educativa dell’applicazione dal punto di vista “sistemico” , e quella di ogni singolo componente del prototipo,  (valutazione interna o “formativa) che mira a stabilire le proprietà delle parti di un sistema che possano essere migliorate. La valutazione esterna  di un sistema AI-EDU è intrinsecamente difficile e solo di recente sono state stabilite delle tecniche di valutazione empiriche che rendono possibile l’analisi dei benefici di questi sistemi in campo educativo. Nel caso della valutazione interna, è piuttosto promettente l’uso della stessa AI per sviluppare metodi di assesement 
Infatti, ogni AI-Ed è l’implemantazione di una teoria dell’apprendimento in forma implicita. La valutazione comparativa tra diversi approcci è quindi possibile con la metodologia dello “studente simulato” (VanLehn, Ohlsson and Nason ), Con questa tecnica si puo’ determinare quale implementazione è migliore  o quale metodologia didattica è più opportuna per un certo  tipo di studente.

La nuova generazione di sistemi AI-ED: i sistemi multiagenti a base di conoscenza con  interazione strategica

Gli sviluppi conseguiti nell’ultimo decennio dalla teoria matematica dei giochi (game theory), dalla logica epistemica, dall’Intelligenza Artificiale, dalla Computer Science  e dalla psicologia cognitiva   hanno prodotto una convergenza della ricerca verso lo studio delle “interazioni strategiche”.  Di conseguenza , l’Intelligenza Artificiale per l’educazione ha mutato  radicalmente la concezione classica  di un sistema AI-ED.  L’architettura degli ITS degli anni precedenti è stata sostituita dai modelli multiagenti, in cui gli attori del processo comunicativo sono il docente , ovvero il sistema, e i singoli discenti. Inoltre, agli apparati inferenziali sviluppati dall’intelligenza artificiale negli anni ’80, basati sulla nozione di “sistema esperto”, sono stati soppiantati da sistemi deduttivi multi agente in cui l’apprendimento del discente procede attraverso la revisione dinamica di un sistema di credenze, nel contesto di un interazione strategica con un agente che rappresenta il docente.

La principale valenza innovativa di questi modelli è l’allontanamento dei sistemi AI-ED dalle concezioni “comportamentiste”, che per anni hanno dominato la  costruzione dei prototipi , in particolare la messa a punto dei modelli  studente.
Rappresentando un agente come un sistema di credenze soggetto a revisione dinamica, infatti, si puo’ superare la nozione di apprendimento come ciclo del tipo “stimolo-risposta”, caratteristico delle teorie comportamentiste degli anni 60. Al suo posto, subentra un’implementazione delle teorie cognitiviste dell’ apprendimento, in cui l’acquisizione di nuova conoscenza è vista  come  una “evoluzione dei  modelli mentali” tramite processi  di tipo socio-cognitivo.

Allo sviluppo delle  ricerche  sull’interazione ha fatto seguito alla disponibilità di nuovi strumenti matematici per la rappresentazione della conoscenza e dei processi cognitivi,  (le logiche modali ,i modelli di Kripke e  la  “epistemic game theory”) . L’uso di tali strumenti, e la loro diffusione nell’ambito della comunità interdisciplinare dei ricercatori del settore dell’Intelligenza Artificiale per l’Educazione, ha permesso di rappresentare in maniera  uniforme diversi aspetti classici degli AI-ED (ragionamento, meta-cognizione, diagnostica, interazione) che negli anni precedenti erano esprimibili in maniera frammentaria e tipicamente informale.
Di conseguenza, questi strumenti teorici sono i possibili candidati per la formulazione di una teoria generalizzata per la progettazione dei nuovi sistemi  AI-ED.

Fonte: digilander.libero.it/ambientivirtuali

 

 

 

Intelligenza artificiale

 

Collegamenti utili gratuiti

 

Disclaimer : gli obiettivi di questo sito sono il progresso delle scienze e delle arti utili in quanto pensiamo che siano molto importanti per il nostro paese i benefici sociali e culturali della libera diffusione di informazioni utili. Tutte le informazioni e le immagini contenute in questo sito vengono qui utilizzate esclusivamente a scopi didattici, conoscitivi e divulgativi. Le informazioni di medicina e salute contenute nel sito sono di natura generale ed a scopo puramente divulgativo e per questo motivo non possono sostituire in alcun caso il consiglio di un medico (ovvero un soggetto abilitato legalmente alla professione). In questo sito abbiamo fatto ogni sforzo per garantire l'accuratezza dei tools, calcolatori e delle informazioni, non possiamo dare una garanzia o essere ritenuti responsabili per eventuali errori che sono stati fatti, i testi contenuti nel sito sono di proprietà dei rispettivi autori. Se trovate un errore su questo sito o se trovate un testo o tool che possa violare le leggi vigenti in materia di diritti di autore, comunicatecelo via e-mail e noi provvederemo tempestivamente a rimuoverlo.

 


Intelligenza artificiale