Intelligenza Artificiale

Neuroscienze.net

Una breve introduzione

UN PO’ DI STORIA

L’Intelligenza Artificiale nasce ufficialmente negli anni 50 con la redazione di un documento, a seguito di un seminario tenutosi al Dartmouth College di Hannover, in cui si descriveva il progetto di poter ricreare l’Intelligenza in un essere artificiale . Il termine stesso, Artificial Intelligence, pare sia stato coniato da un giovane professore di matematica, John McCarthy, nel tentativo di trovare un’etichetta accattivante e appetibile per supportare la richiesta dei fondi da destinare all’organizzazione del seminario che avrebbe dovuto studiare delle tecniche per “riprodurre l’intelligenza” in un essere non umano. Ecco come suonava tale richiesta: “Proponiamo che uno studio (di due mesi, con dieci uomini) dell’intelligenza artificiale venga condotto durante l’estate del 1956 al Dartmouth College di Hannover, New Hampshire. Lo studio procederà sulla base della congettura che, in linea di principio, ogni aspetto dell’apprendimento o di qualsiasi altra caratteristica dell’intelligenza possa venir descritto in modo così preciso da mettere una macchina in grado di simularlo.” La richiesta fu finanziata dalla fondazione Rockfeller e il seminario vide la partecipazione, tra gli altri, di Marvin Minsky, Allen Newell, Herbert Simon. Il progetto non ebbe risultati consistenti per quanto riguarda la ‘creazione’ di macchine intelligenti. Si è trattato di un coraggioso, pionieristico tentativo, di affrontare un problema forse inaffrontabile allora (e forse ancora oggi), con le armi dell’impegno e della multidisciplinarità. Facendo un salto di quasi cinquant’anni, è lecito chiedersi cosa abbia prodotto questa scienza ancora giovanissima, e quali siano le nuove frontiere della ricerca in quest’ambito. È importante sottolineare che l’IA è tutt’altro che una disciplina omogenea e ben definita. L’anima originale dell’IA si basa sull’ipotesi del sistema fisico di simboli (physical symbol system). Nella definizione degli stessi Newell e Simon: “un sistema fisico di simboli consiste in un insieme di entità, dette simboli, le quali sono delle strutture fisiche che possono apparire come componenti di un altro tipo di entità dette espressioni (o strutture simboliche). Così una struttura simbolica è composta da un certo numero di esemplari (o token) di simboli che sono fisicamente in relazione tra loro in un certo modo (per esempio per il fatto che un token si trova accanto ad un altro token). In ogni istante il sistema conterrà una collezione di queste strutture simboliche. Oltre a queste strutture, il sistema conterrà anche una collezione di processi che operano sulle espressioni per produrre altre espressioni: processi di creazione, modifica, riproduzione e distruzione. Un sistema fisico di simboli è una macchina che produce nel corso del tempo una serie mutevole di strutture simboliche. Questo sistema esiste in un mondo di oggetti più ampio rispetto a queste espressioni simboliche (Newell e Simon, 1976). Questa ‘branca’ dell’Intelligenza Artificiale (comprendente moltissime sotto-aree) viene chiamata Intelligenza Artificiale Classica o Simbolica. L’intelligenza Artificiale Classica comprende sotto di sé numerosi campi di ricerca. Come abbiamo visto il proposito originario dell’ IA era quello di ridurre il ragionamento ad un calcolo, intendendo per calcolo un qualcosa che abbia una struttura finita e ben definita, e che possa in questo modo essere implementato su una macchina. Il primo passo è quello di definire cosa intendiamo per comportamento intelligente. Un comportamento intelligente è un comportamento organizzato, e quindi complesso. Al di là di questa definizione intuitiva, la Teoria della Commutabilità è in grado di darci una misura di quanto un problema sia difficile da risolvere. A volte ci rendiamo conto che le macchine sembrano più intelligenti di noi; una qualsiasi calcolatrice tascabile ha delle capacità di calcolo che chiunque di noi si sognerebbe di avere. Ma non dobbiamo cedere alla tentazione: bisogna spostare l’attenzione su che cosa è da considerare intelligente, e che cosa no. Alan Turing ha proposto un test, da cui emerge una visione operazionale dell’intelligenza: stretto ai minimi termini, il ragionamento di Turing era che se una macchina è in grado di sostenere una conversazione con un agente umano via terminale oltre un certo limite di tempo, senza che questi si accorga che sta comunicando con una macchina, allora la macchina ha un comportamento intelligente. La macchina in questo caso deve riuscire a derivare una semantica dal linguaggio naturale, in modo da dare delle risposte adeguate. Uno dei punti cruciali su cui era focalizzata l’attenzione dell’IA delle origini era l’elaborazione del linguaggio. Ai tempi di Turing era ancora difficile che una macchina fosse in grado di ‘parlare’ con una persona. Anche per questo l’interazione linguistica poteva plausibilmente rappresentare un buon criterio di valutazione per l’intelligenza, quanto meno per quella di una macchina. Così nacque Eliza. Eliza, un programma scritto da Joseph Weizenbaum, è un terapeuta virtuale col quale si poteva (e si può tuttora, io l’ho scaricato da Internet) dialogare dei propri problemi, ricevendo risposte plausibili per i primi scambi di battute, ma artificiose e totalmente non-psicologicamente realistiche subito dopo. Eliza funziona più o meno in questo modo: analizza aree di significato all’interno della frase che viene immessa nel calcolatore, e dà in uscita risposte in base a regole del tipo “quando ricevo in input la parola padre  dare in uscita la risposta “mi parli ancora della sua infanzia” o “mi parli ancora del rapporto coi suoi genitori”. Si tratta di un comportamento non intelligente, ma di tipo associativo.

 

IMPIEGO DELLE RETI NEURALI

Lo studio dei linguaggi naturali è una delle linee di evoluzione fondamentali dell’IA. Esistono tuttavia altri settori in cui l’IA classica di è espressa, alcuni tuttora studiatissimi. Abbiamo così la Teoria dei Giochi, la Risoluzione di Problemi, le Basi di Conoscenza, che vedremo in seguito, insieme ad alcune informazioni di base circa il linguaggio della Logica dei Simboli. L’”altra” Intelligenza Artificiale è quella in seno alla quale sono nate le Reti Neurali Artificiali (dall’inglese Artificial Neural Networks), e si chiama Intelligenza Artificiale sub–simbolica o Intelligenza Artificiale ‘soft’ in contrapposizione a quella hard.

 

COME FUNZIONA UNA RETE NEURALE

Una Rete Neurale è un sistema di elaborazione, caratterizzato da funzionamento parallelo degli elementi che lo compongono, e strutturata in modo tale da ricordare vagamente il sistema nervoso umano (Reti Neurali Naturali). Le Reti Neurali Artificiali affondano le radici teoriche nel Connessionismo, che accetta la critica al modello di mente centrata sul calcolatore inteso come macchina di von Neumann. Il cuore del Connessionismo è, appunto, la modellizzazione in termini di reti neurali, ricercando plausibilità neurologica, assente nei modelli rappresentazionali precedentemente descritti. Una descrizione esaustiva del funzionamento delle reti neurali, dei vari tipi di reti, e della loro storia è un obiettivo alquanto pretenzioso, e oltretutto ci sono un sacco di bei libri su quest’argomento, esaurienti e pieni di formule dettagliate e di illustrazioni. Una descrizione sommaria però è necessaria. Una rete neurale è formata da nodi (vengono chiamati anche unità, o neuroni) collegati tra loro da legami, o connessioni. Le reti possono essere formate da più strati di neuroni, collegati tra loro in svariati modi. Il livello di neuroni in cui entra l’informazione data dallo sperimentatore, o contenuta nell’“ambiente” della rete è detto ‘strato dei nodi di input o input layer. Quello da cui esce la risposta della rete lo strato dei nodi di output, o output layer. Se una rete è formata da più di due strati, gli strati interposti tra quelli di input e di output sono detti ‘hidden’, o striati dei nodi nascosti. Nei programmi che simulano reti neurali è possibile scegliere o modificare le architetture e i pattern di connettività, ovvero in che modo i neuroni che compongono una rete interagiscono tra di loro. Compiti diversi possono richiedere architetture e tipi di connessioni diversi. Il punto è: cos’è che la rete apprende? La risposta è: qualsiasi cosa. O meglio, qualsiasi associazione. Insisto ancora nel ribadire che sto parlando in modo veramente semplificato di un argomento molto complesso, e di alcuni aspetti più specifici avrò occasione di parlare in futuro. Tornando a noi: la rete impara ad associare pattern. Per fare un esempio, possiamo insegnare ad una rete neurale ad associare un’immagine a un nome. Dobbiamo quindi presentare alla rete per un numero finito di volte questa associazione, nella fase cosiddetta di addestramento (training) della rete. L’input deve essere codificato in modo tale che la rete possa ‘comprenderlo’. Possiamo codificare ad esempio un immagine come una matrice i cui elementi sono valori interi, che costituiscono il grado di intensità dell’illuminazione di ogni punto (pixel); il nome a cui l’immagine deve essere associata può essere codificato arbitrariamente, per esempio col codice binario, associando ad ogni fonema un vettore i cui elementi possano assumere valore binario (1 o 0) o bipolare (1, 0 ,-1); l’attivazione di un nodo di input rappresenta quindi la presenza di una certa caratteristica fonologica, la non attivazione la sua assenza. Rientreremo più avanti nell’intricato settore della codifica. Mi limito ad aggiungere che esistono fondamentalmente due tipi di rappresentazione, quella locale e quella distribuita (rappresentazione localist vs distributed). Quando l’input è rappresentato in maniera locale, significa che ad ogni nodo della rete corrisponde un elemento. La perdita di quel nodo dovuta a danneggiamento determina la perdita definitiva dell’informazione. Codificare un’informazione in modo distribuito significa invece lasciare che concetto, una parola, un immagine, sia, appunto, distribuito a livello rappresentazionale su tutti i nodi che costituiscono l’input. Questo tipo di rappresentazione è biologicamente più plausibile e resistente al danneggiamento, perché la perdita di un nodo, e quindi di una parte dell’informazione, vedrà la rete comunque in grado di ricostruire il pattern originale. Questa è una delle caratteristiche che ha suscitato maggior interesse nel campo delle reti, perché le rende strumenti di analisi estremamente flessibili e robusti per le applicazioni, diciamo, più pratiche (data-mining, previsioni meteorologiche, analisi della Borsa), nonché un metodo simulativo che si è mostrato in molte occasioni estremamente utile allo studio sulle facoltà mentali, sui circuiti cerebrali, sugli effetti delle lesioni al cervello. La memoria della rete è costituita dalle connessioni tra i vari strati (o layer) di unità. Queste connessioni, alle quali è associato un peso, sono rappresentate da una matrice i cui elementi sono organizzati, alla fine dell’apprendimento, in una configurazione ottimale per la risoluzione del problema che la rete deve affrontare. Se ad esempio la rete deve imparare a separare un set di fotografie in due categorie, uomini e donne, noi dobbiamo presentarle n volte il corpus di fotografie in cui ad ogni immagine è associato il nome della classe di appartenenza. Questo è un compito alquanto difficile, dato che la rete non ha un’informazione esplicita sulle foto che vede, ma deve in un certo modo ‘capire’ la regola che sta sotto all’associazione. Una rete neurale artificiale è in grado di fare questo se riesce a capire le invarianze caratteristiche di ciascuna classe. Addestreremo la rete finché non produrrà un errore sufficientemente basso; verificheremo se la rete ha imparato a distinguere tra le due classi presentandole delle foto nuove, di uomini e di donne, che la rete non ha mai visto, e osservando se ha imparato a categorizzare quindi in modo adeguato i nuovi dati. Questa è la cosiddetta fase di test. La rappresentazione risiede nella matrice dei pesi associati ai legami tra le unità e i cambiamenti di rappresentazione sono dati dall’evoluzione di tale matrice. Dobbiamo notare che la rete è composta da unità relativamente semplici, e che le funzioni complesse emergono dalle interazioni dei singoli elementi. Nel singolo nodo non c’è niente della complessità manifestata dal sistema di cui fa parte. Nel caso della capacità di scegliere tra due categorie in cui mettere una fotografia di una persona, si tratta proprio di una funzione emergente dalle interazioni reciproche tra i nodi, sotto forma di operazione algebriche che vedremo più da vicino in una sezione specifica.

 

MODELLI COMPUTAZIONALI E SISTEMI IBRIDI

Tornando all’Intelligenza Artificiale come “paradigma generale”, diciamo che ci sono due modi di vedere lo scopo di questa disciplina. La visione più pratica dell’IA è quella che trae origine dall’anima ingegneristica e applicativa, e che vede come obiettivo la creazione di calcolatori sempre più potenti e con caratteristiche che li rendano in grado di affiancare e (o sostituire) l’uomo in attività ad elevato contenuto intellettuale. A noi interessa maggiormente l’altra visione dell’IA, quella che promuove lo studio delle facoltà mentali attraverso l’uso di modelli computazionali. Un modello computazionale è (o deve essere) in grado di spiegare in modo esplicito l’ipotesi o la teoria a cui fa riferimento, al punto da poter implementare questa su un calcolatore. Ma la regola non deve essere questa, è troppo rigida; si rischia di sbattere contro il muro della complessità; il cervello è troppo complicato per essere implementato su un calcolatore del tipo macchina von Neumann, almeno in base alle nostre conoscenze attuali. Lo sviluppo di nuovi metodi simulativi permette d’altro canto di riuscire ad ottenere risultati sempre più raffinati nello studio dei processi mentali. Da una parte l’IA classica ha ben presto mostrato i suoi limiti nel campo dello studio della mente (anche se gli algoritmi a cui ha dato vita sono tutt’oggi usatissimi per molte applicazioni). Va quindi fatto un ultimo accenno a una proposta di integrazione tra i due modi di affrontare lo studio e la programmazione di agenti (più o meno) intelligenti. Faccio riferimento alla creazione dei cosiddetti Sistemi Ibridi. Un sistema ibrido è un sistema che integri due approcci differenti. In riferimento a ciò di cui stiamo parlando, si tratta di trarre il maggior beneficio possibile sia dall’approccio simbolico, sia da quello sub–simbolico. La modellizzazione in termini di sistemi ibridi rappresenta un’integrazione di modelli connessionisti, come le Reti Neurali, e , ad esempio, i Sistemi Esperti, che vanno a costituire la parte simbolica del sistema. Possiamo immaginare di utilizzare una rete neurale inserita in diversi moduli pre–programmati, per simulare le funzioni di diverse aree della corteccia cerebrale, senza perdere la caratteristica plasticità di ogni singola area; possiamo variabilmente interconnettere i moduli, per studiarne le interazioni dinamiche e i conseguenti sviluppi strutturali. È possibile inoltre che una rete organizzata in modo completamente connessionista si auto–organizzi in moduli senza l’aiuto di regole esplicite. Nel caso della rete descritta sopra (ancora quella delle foto), può succedere che il modo in cui impara a riconoscere le invarianze di ciascuna delle due categorie consista nello specializzare alcuni gruppi di neuroni, o addirittura singoli nodi, nel riconoscimento di tratti specifici, come linee inclinate, colori, particolari gradienti di intensità della luce, e così via. Vedremo in dettaglio che sono stati raggiunti, in molti casi, risultati straordinari.

 

Bibliografia

  • Floreano, D. e Mattiussi, C (1996). Manuale sulle Reti Neurali. Bologna: il Mulino
  • Burattini, E. e Cordeschi, R.(a cura di) , (2001).Intelligenza Artificiale. Roma: Carocci
  • Fum, D. , (1994). Intelligenza Artificiale, teoria e sistemi. Bologna: il Mulino
  • Luccio, R. (2001). Psicologia Generale: le frontiere della ricerca. Roma-Bari: Laterza

Scarica il PDF 

Author: Enrico Nanni

Share This Post On

Submit a Comment

%d blogger hanno fatto clic su Mi Piace per questo: