Una moda molto diffusa in questo periodo è quella di appioppare una etichetta di “smart” a qualsiasi tipo di oggetto: abbiamo telefoni smart, televisori smart, lavatrici smart, tostapane smart e probabilmente arriveranno anche i gabinetti smart, se già non ci sono. Tutto ciò, oltre a essere alquanto buffo, mi riporta sempre alla mente due articoli piuttosto datati, ma terribilmente attuali: il primo è “
Artificial Intelligence Meets Natural Stupidity”, pubblicato da Drew McDermott nel 1976, e il secondo è la presentazione del programma
ELIZA, pubblicata nel 1966 dal suo creatore, Joseph Weizenbaum. Era un periodo che si può considerare vicino all’età antica, nel campo della ricerca sull’intelligenza artificiale, eppure erano già emersi alcuni difetti, nel modo di pensare umano, che sono tuttora presenti e attivi e, complice una pubblicità ingannevole, ci fanno considerare “smart” più o meno qualsiasi cosa. Oggi parlerò di ELIZA.
ELIZA è il nonno (o la nonna, come preferite) degli attuali
chatbot, ossia quei programmi che simulano una conversazione con un essere umano, cercando di suonare il più possibile “umani” agli occhi del loro interlocutore. In linea di massima, è la (discutibile) idea alla base del celebre test di Turing: un computer è intelligente se riesce a emulare l’intelligenza umana al punto da ingannare un vero essere umano. Per mostrare quanto fosse illusoria questa idea, perlomeno nella formulazione che aveva assunto in quegli anni, il professor Weizanbaum preparò e presentò un programma che sapesse dialogare con gli esseri umani, imitando la personalità di uno psicanalista di scuola rogeriana: è la nascita di ELIZA.
Se avete una copia di
Emacs sul vostro computer, potete farvi una idea molto precisa di come funzionasse ELIZA, grazie al suo clone che
Richard Stallman ha inserito in Emacs: lo trovane nel menu “
Help”, sotto la voce “
Emacs Psychoterapist”, ed è una buona riproduzione del vecchio programma ELIZA. A titolo di esempio, ecco come si può presentare una normale discussione:
Non suona molto naturale, vero? Dipende tutto dall’argomento di cui si parla: se l’utente umano sta al gioco e parla come farebbe con un autentico psicanalista, si può ottenere una passabile illusione di dialogo, perché alcune risposte di ELIZA sembrano davvero attinenti al tema in discussione. Altre, invece, suonano fin troppo generiche e vaghe rispetto a quelle che darebbe un vero essere umano. O meglio, rispetto a quelle che darebbe un vero essere umano con cui stiamo dialogando: un essere umano che fingesse di ascoltarci, mentre in realtà sta pensando ai fatti suoi, probabilmente ci darebbe risposte analoghe. Tutto ciò dipende dal modo in cui funziona ELIZA: ELIZA non capisce davvero ciò che diciamo, ma si limita ad analizzare la struttura della frase, cercare alcune parole chiave e costruire una risposta sulla base di ciò. Un principio che rimane tuttora valido in buona parte di quanto etichettiamo come “smart”.
La tecnica su cui si fonda ELIZA è il
pattern-matching, che può essere schematizzata nelle seguenti quattro fasi:
- il programma riceve un input (nel caso di ELIZA, l’input è la frase che noi scriviamo);
- il programma cerca un modello a cui sia possibile far corrispondere l’input;
- il programma traduce l’input in risposta;
- il programma ci fornisce una risposta (un output, se preferite).
Come è facile da capire, i punti fondamentali sono il secondo e il terzo. Il secondo punto può essere sviluppato in vari modi, ma il più semplice e generale consiste nel preparare una serie di modelli di frasi di uso comune, che il programma potrà utilizzare per trovare una risposta a ciò che l’utente gli sta dicendo. Un esempio classico potrebbe essere il modello “io mi chiamo X”, dove X rappresenta una variabile: quando il programma incontra una frase strutturata su questo modello, per esempio un utente che scrive “io mi chiamo Pincopallino” come frase di input, potrà sovrapporre la frase di input al modello corrispondente.
Una volta trovato un modello per la frase di input, si può passare al terzo punto e costruire la risposta, di nuovo utilizzando lo stesso principio. Alla frase “io mi chiamo X”, ad esempio, potrebbe essere abbinata una risposta del tipo “piacere di conoscerti, X”: il programma utilizzerà dunque il nome che ha abbinato a X, nella fase precedente, e costruirà una risposta adeguata, che potrebbe essere “piacere di conoscerti, Pincopallino”. Non siamo molto lontani dall’unificazione, che già abbiamo visto parlando del
Prolog. Se poi nella seconda fase non è stato possibile abbinare alcun modello all’input ricevuto, nella terza fase sarà previsto un “caso generale”, per gestire questo tipo di eventi: potrebbe essere una risposta sul modello “non ho capito, potresti ripetere?”, per esempio. In questo modo, si può ottenere una parvenza di dialogo, senza che il programma capisca davvero ciò che stiamo dicendo: si limita a cercare un modello per le nostre frasi e ci risponde col modello corrispondente. La regola che ne governa il funzionamento può essere riassunta così: “se vedi X, allora rispondi con Y”. Si può poi perfezionare inserendo una scelta multipla tra le risposte, trasformandolo in un “se vedi X, allora rispondi con Y, Z o W, scegliendo a caso tra le tre soluzioni”, oppure inserendo una graduatoria di risposte, dalla più specifica alla più generale, per dare una maggiore parvenza di intelligenza. Sempre illusione resta, in ogni caso.
In sostanza, ELIZA è un programma che funziona come “spalla” in una conversazione con un essere umano: non sa formulare frasi autonome, ma può replicare in modo più o meno sensato agli input che riceve dall'utente umano. Finché l’utente continua a stare al gioco e fornire input sensati, ossia frasi di senso compiuto e coerenti col discorso, l’illusione di un dialogo con una intelligenza artificiale si mantiene; quando l’utente comincia a fornire input insensati, l’illusione si sgretola, perché non c’è mai stata alcuna traccia di intelligenza dall’altra parte dello schermo. Tutto ciò che avevamo era un programma capace di riconoscere alcuni modelli nelle nostre frasi, per risponderci con altri modelli di frase, più o meno riadattati in base agli input ricevuti: una intelligenza non molto superiore a quella di una poltrona che si adatta alla forma del nostro sedere, insomma.
A cosa serviva ELIZA? A mostrare quanto fosse facile illudersi (e illudere) di aver raggiunto grandi risultati nelle ricerche sull'intelligenza artificiale, quando in realtà si stavano solo realizzando progetti che, per quanto utili e funzionali, di intelligenza non avevano alcuna traccia. Più o meno la stessa cosa che dirà, dieci anni dopo, Drew McDermott nel suo già citato articolo “
Artificial Intelligence Meets Natural Stupidity”, ma anche la stessa cosa che si potrebbe ripetere oggi, davanti alla pletora di oggetti “smart” che vediamo pubblicizzati in tutte le salse. Per ironia della sorte, ELIZA è stato ricevuto a suo tempo come “un enorme passo avanti verso la realizzazione di un computer pensante”, con somma disperazione di Weizenbaum, ma questo è un altro discorso. Per inciso, ELIZA è stato anche uno dei primi esempi di programma con interfaccia in linguaggio naturale, ossia un programma a cui si potevano dare istruzioni in una lingua umana (inglese, in questo caso), ma di queste interfacce parlerò semmai in un’altra occasione.