Pillole d’intelligenza artificiale – I primi tentativi organizzati

Come detto alla fine dello scorso articolo, passiamo ora a qualcosa di più “pratico”. In questo articolo, più altri due che usciranno nelle prossime settimane, vedremo come gli scienziati hanno affrontato i diversi problemi dell’AI, quali strategie sono state solo un punto di passaggio e quali invece sopravvivono ancora oggi.

I primi tentativi furono ovviamente i più semplici: all’inizio si tentò di risolvere ogni problema con una soluzione step by step, strategia anche detta reasoning as search, tradotto circa con ricerca come ricerca per ragionamento. Questo tipo di algoritmi cercano la soluzione come se percorressero un labirinto: prendono via via delle decisioni che sembrano buone e, se non funzionano, tornando indietro; cercano idealmente tra tutte le possibili combinazioni di decisioni. Per motivi piuttosto ovvi questi algoritmi funzionano, di fatto sono in grado di vagliare letteralmente tutte le possibilità, ma sono estremamente lenti. Soffrono di quella che viene chiamata esplosione esponenziale: il numero di “percorsi” possibili è una potenza del numero di scelte da fare, di tutti gli incroci del labirinto per continuare il parallelo. È quindi possibile usarli solo per problemi molto semplici, tanto da essere in pratica puramente didattici.

Come detto nel precedente articolo, alla fine degli anni 60’ M. Minsky e S. Papert ebbero l’idea di lavorare su piccoli problemi semplificati, detti micro-worlds, per poi usarli come blocchi di base per costruire programmi più complessi. Questo modo di lavorare portò alcuni risultati interessanti: fu ad esempio possibile creare un robot, chiamato Shakey (nell’immagine a sinistra), che era in grado di spostarsi in un ambiente molto semplificato fatto di muri e porte di comunicazione tra diverse stanze e di manipolare alcuni blocchetti di legno. Shakey, in una prova, riuscì a portare un blocchetto da una stanza all’altra del suo ambiente avendo ricevuto solo la consegna di spostare il blocco in una certa stanza. Anche se fu in grado di posizionare una rampa per superare un dislivello, il tutto richiese giorni e si svolse in un ambiente estremamente semplice, con ad esempio colori ad indicare il punto di separazione tra muri e terreno e diverse altre cose. Un altro successo furono i programmi FRUMP e SAM, in grado di capire un testo e rispondere a domande in linguaggio naturale anche su elementi impliciti; per chiarire: se il testo diceva che John era andato al ristorante e aveva mangiato gnocchi, alla domanda “cos’ha ordinato John” i programmi rispondevano “Ha ordinato gnocchi”. Furono anche usati per scrivere dei semplici riassunti, tuttavia, pur riuscendo ad estrapolare le informazioni da un testo, non erano effettivamente in grado di capirle.

Un esempio molto avanzato dell’approccio micro-world sono i sistemi esperti: si tratti di programmi dedicati alla soluzione di problemi e alla consulenza in un’area di conoscenza specializzata, come farebbe uno specialista del settore. I componenti di base di un sistema esperto sono la “knowledge base”, o KB, e il “motore di inferenza”. Le informazioni vengono organizzate in una raccolta di regole, tipicamente di struttura “if-then”, dette di produzione. Il motore di inferenza consente al sistema esperto di trarre deduzioni dalle regole della KB, di “ragionarci sopra”. Ad esempio, se due delle regole fossero “se x poi y” e “se y poi z”, il motore di inferenza sarebbe in grado di dedurre “se x poi z”. Il sistema esperto potrebbe quindi interrogare il suo utente “è x vero nella situazione che stiamo considerando?”, ad esempio “il paziente ha un’eruzione cutanea?”; se la risposta è affermativa, il sistema procederà a dedurre z. Ovviamente la KB deve poter essere espansa, questi programmi devono quindi essere in grado di imparare man mano che lavorano e devono permettere di inserire continuamente nuove informazioni, ad esempio nuove scoperte.

Il campo dei sistemi esperti è tutt’ora molto vivo, molte sono le persone che ci lavorano e continuano a studiarli e svilupparli, così da continuare a migliorarne velocità di risposta e precisione. Essi sono in largo uso commerciale, sono usatti per diagnosi mediche, analisi chimiche, autorizzazioni di credito, gestione finanziaria, pianificazione aziendale, piloti automatici e molto altro ancora.

Ovviamente per essere utili devono essere in grado sia di lavorare con informazioni incomplete che in tempi ragionevoli: posso non essere in grado di fornire alla macchina tutti i dati che servirebbero per una soluzione classica e rigorosa e devo avere tempi di risposta adeguati, per poter ad esempio pilotare un aereo il sistema deve agire qualche frazione di secondo. Proprio per questo i sistemi esperti integrano nella loro programmazione sistemi euristici: sono quelli in grado di prendere decisioni usando metodi non deterministici e imparando passo passo, mentre vengono eseguiti, e fanno scelte tra loro interdipendenti. Mimano di fatto l’intuizione umana e solitamente non danno la soluzione ottima, ma la approssimano. Possono essere usati all’interno di programmi complessi per dare rapidamente e con dati incompleti una prima approssimazione su cui lavorare per poi trovare la soluzione corretta.

Questo articolo finisce qui, lasciandovi con la consapevolezza che forse, un domani non troppo lontano, il “secondo parere” su una terapia medica sarà dato da una macchina. Almeno magari così le prescrizioni diventeranno leggibili anche ai comuni mortali.

Ultime notizie

Dello stesso autore