Pillole d’intelligenza artificiale – L’importanza di conoscenza e percezione

Nello scorso articolo, siamo arrivati a parlare dei sistemi esperti, programmi in grado di mostrare grande intelligenza in un campo ridotto. Proseguiamo ora con il nostro excursus sulle tecnologie della ricerca sull’AI.

Negli anni 70 si ha quella che viene comunemente chiamata Knowledge Revolution, ossia rivoluzione della conoscenza. Grazie anche al lavoro svolto dagli scienziati sui sistemi esperti, che ormai avevano ampiamente preso piede, i ricercatori cominciano a comprendere che l’intelligenza si basa anche sul saper usare un’enorme quantità di conoscenza. Non esattamente la migliore delle notizie: immagazzinare grandi quantitativi di dati è difficile e richiede molto tempo, e mantenerli aggiornati ancora di più. Questo è particolarmente vero quando si parla di strong AI (nel abbiamo parlato nel secondo articolo di questa serie), tutti i nostri ragionamenti si basano su una vastissima conoscenza di concetti. Solitamente non ci facciamo caso, ma anche solo per parlare abbiamo bisogno di una conoscenza enorme: conosciamo i concetti che stanno dietro a qualche migliaio di parole e le relazioni che tra queste intercorrono, una quantità enorme di dati.

Si cominciò quindi a cercare un modo per immagazzinare efficacemente questa enorme quantità di dati.  Le prime idee arrivarono dagli studi sul linguaggio: proprio per dare alle macchine la capacità di parlare infatti vennero inventate le semantic networks, traducibile circa come reti semantiche. Si tratta di una rappresentazione simile ad un grafico ad albero: i punti sono le diverse parole e le frecce che le collegano sono le relazioni tra esse. Ad esempio, la parola “canarino” sarà collegata a quella “giallo” dalla freccia “di colore” e alla parola “uccello” dalla freccia “è un”. Al concetto di “uccello” di poi sarà legato quello di “animale”, che verrà quindi indirettamente collegato anche a “canarino”. Questo principio per cui una certa proprietà, essere un animale, può essere passata da una variabile ad una ad esse collegata, da uccello a canarino, viene detta ereditarietà, un altro concetto che viene ad oggi usato in diversi contesti della programmazione. Ovviamente questa segue una gerarchia: un canarino è un animale, ma non è vero che un animale deve per forza essere giallo. Queste reti vennero studiate molto e furono un primo esempio di organizzazione dei concetti basata su una struttura che li metta in relazione.

Nel 1974 M. Minsky in un articolo intitolato “A Framework for Representing Knowledge” propose l’uso dei frame, una sorta di generalizzazione delle semantic networks. Ognuno di essi contiene un dato da memorizzare più le informazioni su come utilizzarlo e le relazioni con altri frame. Queste ultime permettono quindi di organizzare i frame in reti che ne mostrano i collegamenti.

Gli anni ‘70 videro l’affermazione anche di un’altra branca dell’AI, detta Evolutionary Computation (computazione evoluzionistica, letteralmente). Come lascia immaginare il nome, si è cercato di applicare il principio dell’evoluzione, secondo cui solo i più adatti sopravvivono, all’informatica. Inizialmente si crea un insieme di algoritmi che risolvono il problema, detta popolazione. Gli algoritmi considerati migliori per la soluzione del problema vengono poi combinati tra loro e/o mutati (subiscono delle variazioni, spesso casuali o semi-casuali). Ho a questo punto un nuovo insieme di algoritmi, detto generazione, formato, in media, da algoritmi migliori di quelli di partenza. Si procede di nuovo come fatto per la popolazione iniziale e si ottiene così una seconda generazione di algoritmi. Si continua iterando queste operazioni fino a quando non si trova una soluzione. Vengono utilizzati per risolvere problemi senza una soluzione unica, precisa e determinata, come ad esempio quelli di ottimizzazione, dove non ho come obiettivo l’ottenere una soluzione ottima, ma di averne una che soddisfi certi criteri o sia migliore delle precedenti. Proprio per il fatto che non esiste un’unica soluzione ottima, si può scegliere di terminare il processo semplicemente quando sono passati un certo numero di cicli o un certo tempo, oppure ho occupato un certo spazio di memoria per effettuare il processo.

La computazione evoluzionistica non è l’unico esempio di biologia applicata allo studio dell’AI: alla fine degli anni ’80 nasce infatti l’approccio bottom up. Questa visione dell’AI, totalmente nuova, consiste nel cercare di imitare la biologia, invece di cercare di imitare immediatamente il pensiero. I ricercatori, incrociando l’AI con la robotica, cercarono quindi di replicare la struttura del cervello con delle reti neurali (di cui parleremo più diffusamente nel prossimo articolo) e di replicare l’interazione che l’uomo ha con l’ambiente tramite arti e sensori. Questo permetterebbe di replicare i processi cognitivi, lasciando che la macchina impari esattamente come l’essere umano, invece di darlo in pasto concetti organizzati come abbiamo visto nel caso delle semantic networks. Ad esempio, per riconoscere delle lettere scritte a mano e lette da un sensore, con approccio bottom up creeremmo una rete neurale e le insegneremmo a leggere, sostanzialmente, mostrandole molti esempi con soluzione; con un approccio top-down, come quelli che abbiamo visto fino ad ora, invece creeremmo un programma di riconoscimento in cui inseriremmo la descrizione, ad esempio geometrica, di ogni lettera.

In questo articolo, il penultimo di questa serie, dopo esserci soffermati sull’idea che il nostro cervello, ai fini del ragionamento, incamera più dati di un database industriale, abbiamo perfino visto come prestare attenzione alle noiose lezioni di biologia possa farci venire un colpo di genio per risolvere problemi d’informatica. D’altro canto, senza l’intuizione che salato e dolce, poli opposti, possono unirsi non avremmo mai avuto il maiale in agrodolce.

Ultime notizie

Dello stesso autore