490
SISTEMI INTELLIGENTI Appunti del corso Prof. Raffaella Folgieri Dipartimento di Filosofia, Università Statale di Milano – Italy Riferimenti: ufficio: cortile della Ghiacciaia, Dip. Filosofia, secondo piano via Festa del Perdono 7 email: [email protected] Colloqui: previo appuntamento via email

Prof. Raffaella Folgieri

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Prof. Raffaella Folgieri

SISTEMI INTELLIGENTI Appunti del corso 

Prof. Raffaella Folgieri Dipartimento di Filosofia, Università Statale di Milano – Italy 

Riferimenti: ufficio: cortile della Ghiacciaia, Dip. Filosofia, secondo piano via Festa del Perdono 7 email: [email protected] 

Colloqui: previo appuntamento via email

Page 2: Prof. Raffaella Folgieri

INTRO: LA CONOSCENZA Definizione da vocabolario - Conoscenza: 1) Facoltà, atto, modo, effetto del conoscere. 2) Rapporto tra soggetto e oggetto, tra pensiero ed essere che si può configurare in vari modi (sin. gnoseologia)

gnoseologìa s. f. [dal lat. mod. gnoseologia, termine coniato dal filosofo ted. A. G. Baumgarten (1714-1762) con il gr. γνοσις -εως «conoscenza» e -λογια «-logia»]. – Termine usato (in una partizione ormai desueta della filosofia in metafisica, etica e gnoseologia) per indicare la dottrina o teoria della conoscenza umana, con riferimento soprattutto alla ricerca dei suoi fondamenti, alle sue strutture e modalità, nonché alla sua validità e verità. Anche la dottrina, la teoria del conoscere enunciata da un determinato filosofo, da una determinata corrente di pensiero: g. aristotelico-tomista, g. empiristica, g. kantiana, ecc. Nell'età moderna analizza i fondamenti e la validità della conoscenza nel rapporto tra il soggetto e l'oggetto della conoscenza. Nelle culture anglosassoni è intesa come la teoria della conoscenza.

DISCUSSIONE PRELIMINARE: LE SCIENZE COGNITIVE L’intelligenza è una proprieta' degli individui o della comunicazione (tra individui, tra individuo e ambiente). Richard W. Weyhrauch concorda con la seconda asserzione. Per esercizio, sviluppare una propria analisi/opinione su questo tema (vi interrogherò alla prossima lezione). Facciamo una panoramica introduttiva, che ci spiegherà meglio la necessità di questo corso.

Page 3: Prof. Raffaella Folgieri

Stretto legame tra conoscenza, apprendimento, ragionamento (decision making, problem solving… approfondire in Rete) Questi temi sono da sempre affrontati dalla Filosofia e dalla Psicologia (comprese le varie branche come la pedagogia o la didattica). Se volete approfondire il tema filosofico, basta cercare “conoscenza” su Wikipedia… un discreto punto di partenza per muoversi poi attraverso l’escursus filosofico cercando altro in Rete. Per ora ci interessano i vari approcci in Psicologia, che hanno attinto all’AI per sviluppare le Scienze Cognitive. Lasciamo al passato strutturalisti e funzionalisti. Oggi si seguono principalmente (semplificando, ovviamente) tre linee di pensiero: comportamentista, percettivista, cognitivista (why we are here).

Page 4: Prof. Raffaella Folgieri

COMPORTAMENTISMO: è basato sull'assunto che il comportamento esplicito è l'unica unità di analisi scientificamente studiabile della psicologia. La mente è considerata una black box, di cui non si può conoscere il funzionamento interno che, del resto, non interessa. Ciò che interessa ai cognitivisti è ottenere una comprensione empirica e sperimentale tra stimoli ambientali e risposte comportamentali. Tra gli assunti principali più ricordati del comportamentismo ricordiamo il condizionamento (Pavlov): una forma di apprendimento che dice che l’associazione ripetuta di uno stimolo ad una risposta che non gli è direttamente correlata farà in modo che, dopo un lasso di tempo, a tale stimolo segua la risposta condizionata. Dunque la conoscenza per i comportamentisti si realizza attraverso l’associazione tra ripetuti stimoli ambientali e l’azione da intraprendere. Ci torneremo, ma intanto vi invito a soffermarvi sul concetto di apprendimento con rinforzo.

Page 5: Prof. Raffaella Folgieri

PERCETTIVISMO: la percezione è vista come il processo psichico che opera la sintesi dei dati sensoriali in forme dotate di significato. Diversi assunti a seconda dei tempi storici e delle teorie. Concentriamoci sulla Gestalt (il tutto è più della somma delle singole parti) e sul concetto di insight: intuizione della struttura del problema che porta ad una sua ristrutturazione per poi giungere alla soluzione. Secondo l’approccio comportamentista i problemi (acquisizione della conoscenza) si risolvono con un criterio appreso attraverso tentativi ed errori; per la Gestalt (forma, schema, rappresentazione) il criterio di spiegazione è formato dal pensiero, dalla comprensione e dall’intuizione. Dopo una crisi, la Gestalt oggi è rivalutata da modelli di computazione di chiara ispirazione gestaltica (es, teoria FACADE). La teoria si adatta bene alle reti neurali… Per approfondire il pensiero comportamentista o percettivista è sufficiente saper cercare informazioni in Rete, noi ci soffermeremo maggiormente sull’approccio cognitivista (di nostro maggior interesse, e vedremo perché).

Page 6: Prof. Raffaella Folgieri

COGNITIVISMO: metafora mente come un calcolatore. I cognitivisti vedono il cervello come un elaboratore di informazione (simbolica).

Il cognitivismo nasce da concetti informatici che si sviluppano negli anni ’50… quindi: non vi chiedete perché siete qui a seguire questo corso, FONDAMENTALE per chi studia Scienze Cognitive.

Qui risiedono tutti i motivi per cui siete qui (ricordate?... why we are here). L’architettura di elaboratore cui il cognitivismo fa riferimento è la macchina di Von Neumann (Si veda materiale di altri miei corsi, o si cerchi in Rete. Caratteristiche – in breve: memoria, teoricamente illimitata; CPU, veloce, seriale; procedure codificate, programmi). Modello TOTE: Test-Operate-Test-Exit (verificare, eseguire, verificare, terminare), esposto nel testo Piani e struttura del comportamento di Miller, Pribram, Galanter.

Successivamente il cognitivismo entra in crisi: avvento del calcolo parallelo. L’informazione non è più simbolica o proposizionale e viene codificata nell’architettura secondo un modello di attivazioni e connessioni… reti neurali e, da lì, A.I. (Artificial Intelligence). Si sviluppa un nuovo orientamento di “Scienza Cognitiva”, in gran parte influenzato dalle nuove evoluzioni dell’Informatica.

La Scienza Cognitiva è multidisciplinare ed utilizza metodi, teorie e dati empirici da psicologia, linguistica, neuroscienze, scienze sociali, comunicazione, filosofia, biologia, matematica, fisica e, non messe in ultimo per importanza, Informatica ed Intelligenza Artificiale. Si torna dunque agli scopi del corso.

Page 7: Prof. Raffaella Folgieri

Gli stati (o processi) mentali sono l’oggetto di studio delle scienze cognitive. Il comportamento umano è il risultato di un processo cognitivo di elaborazione delle informazioni (information processing) articolato e variamente strutturato.

- Inciso: mia impostazione in linea con il pensiero di Neisser (seconda riflessione, anni ’80), influenzato da impostazione di James Jerome Gibsson. Approccio ecologico: costruzione della realtà esterna secondo un modello non perseguibile in ambito strettamente di laboratorio, ma in circostanze ambientali quotidiane (Fisica… ecosistemi… ). -

Modello di Von Neumann (semplificato):

Page 8: Prof. Raffaella Folgieri

Dunque cosa vedremo in questo corso? Tutti i concetti relativi a quanto esposto sopra e anche gli strumenti per realizzarli. Faccio mia una citazione di Piaget: “Se ascolto dimentico, se vedo ricordo, se faccio capisco”… Il progetto da presentare a fine corso comporta l’acquisizione di conoscenze informatiche (se la scelta ricade sul progetto tecnico) necessarie per poter costruire un sistema funzionante. Per ottenere le competenze obiettivo del corso è necessario dedicare tempo agli esercizi che saranno proposti durante le lezioni. L’esame non è pensato per accertare la capacità di mandare a memoria questi appunti, ma per verificare la comprensione degli argomenti e la capacità di applicarne i contenuti a specifiche situazioni.

Page 9: Prof. Raffaella Folgieri

MENTE, INTELLIGENZA, CONOSCENZA E APPRENDIMENTO Intelligenza, conoscenza e apprendimento: limiti sfumati… Spesso intelligenza umana e pensiero sono concetti associati. La discussione è ancora aperta. Come apprendono gli umani, quali sono le abilità di ragionamento alla base dei processi di apprendimento?

Page 10: Prof. Raffaella Folgieri
Page 11: Prof. Raffaella Folgieri

Discussione: Le macchine apprendono? Come? Possono definirsi intelligenti? Una macchina può pensare?

Page 12: Prof. Raffaella Folgieri

Discussione 1: L’elaboratore come mente (Definizione di Mente - Definizione di Computer)

Computer o elaboratore? Un elaboratore è una macchina. Un elaboratore è solo una macchina? In che senso un elaboratore digitale è una macchina? Cosa vuol dire elaborare?

Page 13: Prof. Raffaella Folgieri

Contributo per risposte: dalle Scienze Cognitive hanno base nella psicologia e si ispirano inizialmente al modello di elaboratore di Von Neumann, facendo poi propri interrogativi ed in parte modelli e aspirazioni dell’Intelligenza Artificiale. Ma.. l’Intelligenza Artificiale si è ispirata a modelli biologici (es. Reti Neurali). Il mutuo interscambio di concetti e avanzamenti nelle due discipline rende ormai difficile dire se le Scienze Cognitive si ispirino all’Intelligenza Artificiale o viceversa: stretta interdipendenza.

Figura 1 Modello di Von Neumann (semplificato)

Obiettivo delle Scienze Cognitive: realizzare modelli computazionali per simulare sistemi intelligenti (o essere utilizzati da questi) per comprendere e per riprodurre i meccanismi di funzionamento del cervello. Si indagano i componenti di base dei processi cognitivi per trovare pattern comuni per stesso meccanismo mentale, ricercando le relazioni tra l’apparato fisico e la cognizione. Le ricerche riguardano: acquisizione delle informazioni e meccanismi per processarle, ritenerle e richiamarle in memoria, acquisizione ed evoluzione del linguaggio, comprensione ed elaborazione di concetti, ragionamento e problem solving. L’oggetto di studio è l’intelligenza in senso ampio, intesa dall’A.I. in modo particolare come computazione ed elaborazione.

Page 14: Prof. Raffaella Folgieri

Mente umana e mente digitale si assomigliano davvero? Intelligenza e conoscenza sono concetti strettamente collegati e, dunque, quali sono le somiglianze tra esseri viventi e macchine?

Page 15: Prof. Raffaella Folgieri

Si pensi ad un neonato. Programmazione “di base”: mangiare, bere espellere gli scarti, piangere per comunicare. Input e output di base e meccanismi per il reperimento di energia che ne permetta la sopravvivenza. Una macchina esce dalla fabbrica del produttore in grado di assorbire energia e trasformarla in funzione di input e output di base. E la mente? Inizialmente ambo i sistemi, sia quello umano che quello sintetico sono “tabula rasa”: il processo di apprendimento trasformerà un bambino in adulto e una macchina in elaboratore.

Page 16: Prof. Raffaella Folgieri

Che differenze ci sono tra i due meccanismi di apprendimento?

Page 17: Prof. Raffaella Folgieri

Poche. Sia la macchina che l’essere umano possono apprendere secondo meccanismi del tutto simili, che si suole inquadrare in una tassonomia che racchiude tre macro categorie:

- apprendimento supervisionato, - non supervisionato e - con rinforzo.

In realtà quando si parla di esseri umani si parla anche di apprendimento emotivo... la difficoltà maggiore nel condurre il parallelo tra esseri umani e macchine è definire il significato dei termini istinto, conoscenza, emotività, intelligenza... La prima difficoltà nell’affrontare l’argomento è proprio dare la definizione di intelligenza: tutti ne comprendiamo il senso, ma come formalizzare il concetto, considerato l’ampio spettro e l’articolazione dei comportamenti intelligenti?

Page 18: Prof. Raffaella Folgieri

Un aiuto per individuare un comportamento intelligente: test per misurarla (organizzati su attività diverse e pensati per il confronto dei risultati ottenuti da diversi soggetti) soggetti e non individui: un sistema intelligente può essere umano, animale, non umano. elaboratore e non computer: classe di macchine (quelle odierne), non deputata al solo computo Non tutti accettano di includere i sistemi non umani tra quelli intelligenti. Qui si definiranno intelligenti anche quei sistemi non umani che esibiscano comportamenti analoghi a quelli umani, quindi giudicando l’abilità dei sistemi di eseguire compiti intellettuali, indipendentemente dal sistema fisico sotteso.

Page 19: Prof. Raffaella Folgieri

Definizione di sistema intelligente: aggregato complesso di oggetti ed entità, un sistema articolato. Elementi caratterizzanti: robustezza, fault tolerance; flessibilità; calcolo parallelo; dissipazione di poca energia; gestione di informazioni sensoriali affette da rumore. In tabella: capacità associate all’intelligenza per distinzioni tra sistemi. Organismi biologici semplici (virus) e macchine (robot).

Capacità Virus Robot Interazione efficace con ambiente SI NO* Adattamento a modifiche ambientali SI NO* Generalizzazione, inferenza SI NI Analisi NO NI Sintesi NI NI Evoluzione SI NI Interazione con altre entità (intelligenza emotiva) NO NI

Tabella 1 Capacità associate all'intelligenza: virus vs robot

* per il momento… l’efficacia è qui intesa come autonomia e corretto (in senso umano) apprendimento.

Page 20: Prof. Raffaella Folgieri

Sistemi intelligenti: caratterizzati dall’interazione tra le varie parti. Funzionamento interpretato come tutt’uno. Valutazione della dimensione temporale del funzionamento di un sistema e l’interazione funzionale e sostanziale tra le varie parti (rif. tecniche di Brain Imaging). Punti fermi sia per intelligenza biologica che non biologica:

- contrapposizione dell’intelligenza all’istinto e - adattabilità genetica contrapposta all’adattabilità cognitiva.

Prospettive distinguibili per i sistemi intelligenti:

- biologica, capacità di apprendere (es. i neuroni). - robotica: robotica antropomorfa, animatronica (Capeck, 1921;

Asimov, dal 1940): l’A.I. incontra il mondo reale. - cibernetica concerne il comportamento, il controllo e la

comunicazione tra esseri intelligenti e macchine.

Page 21: Prof. Raffaella Folgieri

Temi dell’A.I.: - algoritmi genetici/evolutivi (Darwin, 1859): ispirati da

camaleonti, zebre, falsi occhi, membrana delle dita degli uccelli; - Intelligenza Artificiale stessa, intesa come lo studio di sistemi

che pensano o agiscono come gli uomini (razionalmente); - Artificial Life, ovvero la capacità di organismi sintetici di

interagire con altri esseri (ant colony); giochi (gioco della vita – game of life, Conway, 1970); automi cellulari (modelli della computer graphic). Agli algoritmi si richiede capacità di analisi e sintesi e vicinanza al comportamento intelligente degli esseri viventi.

Page 22: Prof. Raffaella Folgieri

Il comportamento intelligente implica apprendimento: - Inizio discussioni sull’apprendimento: Cartesio (1596 – 1650) che

affronta il tema della separazione corpo-mente. La mente consiste di idee ricordate dalla ghiandola pineale (epifisi); il corpo è parte motoria e parte sensoriale (imitata dagli automi).

- Solo nel 1994 Damasio introduce lo stretto legame esistente tra l’intelligenza razionale e l’intelligenza emotiva. Di tali discussioni si parlerà ampliamente (e si sollecitano approfondimenti).

Page 23: Prof. Raffaella Folgieri

In effetti la distinzione tra ragione ed emozione si può far risalire a Platone. Tutta la filosofia e nostro modo di pensare successivi hanno implicitamente operato questa distinzione: emozioni come “disturbo”, impedimento per razionalità, per ragione. Ma… l’esperienza comune ci dice che le più grandi imprese, scoperte, innovazioni, sono state possibili non tanto per la razionalità delle idee, quanto per la passione nel sostenerle. Però tutti tendiamo a distinguere tra ragione e sentimento, considerandoli in antitesi. (la creatività è vista come un processo irrazionale). Damasio: l’emozione ha legami fortissimi con l’apprendimento, la conoscenza e la sua applicazione.

Page 24: Prof. Raffaella Folgieri

Ma le emozioni possono essere definite in modo digitale? Se sì, un elaboratore può possedere emozioni?

Page 25: Prof. Raffaella Folgieri

Restano ancora altri interrogativi… come definiamo, ad esempio, la personalità? E come la mettiamo con alcune reazioni dovute all’interazione fisica con l’ambiente e alla stessa natura degli esseri viventi (si pensi al dolore)?

Page 26: Prof. Raffaella Folgieri

Eppure tutto quanto abbiamo visto ci fa pensare che i limiti attuali siano superabili, nel tempo. Del resto quando Leonardo progettava macchine avveniristiche, ai tempi poteva essere considerato un visionario, e le sue macchine fantascienza. La domanda che dovremmo porci: “Perché interessa creare macchine intelligenti?”. Principalmente per comprendere la mente umana. E’ più semplice ricostruire un apparato che simuli fedelmente la mente umana e sperimentare (in tutti i campi) e comprendere servendosi di tale apparato.

Page 27: Prof. Raffaella Folgieri

Le Scienze Cognitive si muovono su tre livelli: - logica formale: studia l’intelligenza ed i suoi processi

astraendo dal sistema fisico o biologico; - studiare l’intelligenza umana o animale attraverso

l’osservazione del comportamento degli organismi intelligenti;

- Intelligenza Artificiale: studia gli elaboratori cercando di comprendere i principi computazionali che soggiacciono all’organizzazione e al comportamento di sistemi e programmi intelligenti.

Tutti hanno come obiettivo la comprensione dei meccanismi cognitivi e del cervello.

Page 28: Prof. Raffaella Folgieri

Il punto di vista che qui interessa è quello che possiamo ricondurre alla pubblicazione del saggio “Computing Machinery and Intelligence” (Turing, 1950) che inaugura la nascita dell’Artificial Intelligence come branca della Computer Science che studia l’intelligenza esibita dalle macchine. Turing si pose, e pose agli altri ricercatori, la domanda: “Le macchine possono pensare?” E’ la prima espressione esplicita della visione di elaboratore come mente.

Page 29: Prof. Raffaella Folgieri

Del resto il Cognitivismo nasce assumendo la metafora della mente come calcolatore. Von Neuman; modello TOTE: Test-Operate-Test-Exit (verificare, eseguire, verificare, terminare), Successivamente il cognitivismo entra in crisi, con l’avvento del calcolo parallelo - modello di attivazioni e connessioni… reti neurali e, da lì, A.I. (Artificial Intelligence). Si sviluppa un nuovo orientamento delle Scienze Cognitive, in gran parte influenzato dalle nuove evoluzioni dell’Informatica – logica sub-simbolica. L’elaboratore come mente porta a discussioni sulla conoscenza e quindi sui sistemi intelligenti, contrapponendo il punto di vista antropologico a quello robotico.

Page 30: Prof. Raffaella Folgieri

NOTE FINALI Karel Čapek (1890-1938) è l’autore di R.U.R. (Rossumovi univerzální roboti), in

italiano: "I robot universali di Rossum", dramma fantascientifico pubblicato nel 1920 in cui conia il termine “robot”, derivandolo dalla parola ceca robota (“schiavitù”).

Il gioco della vita (Game of Life) cui si fa riferimento nel testo, è un automa cellulare sviluppato dal matematico John Conway. E’ stato pubblicato nel 1970 su Scientific American, come gioco matematico avente lo scopo di mostrare l’emergere di comportamenti simili a quelli della vita a partire da regole semplici e dall’interazione di molti corpi. Si ispira all’ecobiologia e alla teoria della complessità. Ve ne sono molte versioni, con differenti regole. E’ interessante perché, dal punto di vista teorico, ha le potenzialità di una macchina di Turing universale (infatti ogni elemento può essere elaborato algoritmicamente).

Asimov, infine, scrisse molti racconti riguardanti i robot positronici. La maggior parte è raccolta nell’antologia “Tutti i miei robot”, seguita dalle

antologie “Io robot”, “Il secondo libro dei robot”, “Antologia del bicentenario” e “Tutti i miei robot”.

Il primo racconto che tratta dei robot positronici è Robbie (1940). Si suole ricordare Asimov per le tre leggi della robotica, che sono state di ispirazione per esperti di Robotica, di Intelligenza Artificiale e di Cibernetica.

Page 31: Prof. Raffaella Folgieri

Le tre leggi recitano: Prima legge: “Un robot non può recare danno a un essere umano, né può permettere che, a causa del suo mancato intervento, un essere umano riceva danno.” Seconda legge: “Un robot deve obbedire agli ordini impartiti dagli esseri umani, a meno che questi ordini non contrastino con la Prima Legge.” Terza legge: “Un robot deve salvaguardare la propria esistenza, a meno che questa autodifesa non contrasti con la Prima o la Seconda Legge.” In uno dei suoi ultimi racconti (“I robot e l’Impero”), nonché nell’ultimo capitolo della saga delle Fondazioni, Asimov introduce un legge più generale, che precede le altre, la legge zero, che recita: “Un robot non può danneggiare l'Umanità, né può permettere che, a causa del suo mancato intervento, l'Umanità riceva danno.” Conseguentemente alle tre leggi già elencate viene aggiunta la postilla: “A meno che questo non contrasti con la Legge Zero". E’ significativo, quasi a sottolineare una raggiunta capacità di ragionamento emotivo, che la Legge Zero sia postulata proprio dai robot (in particolare da R. Daniel Olivaw, uno dei più famosi personaggi-robot di Asimov). 

Page 32: Prof. Raffaella Folgieri

Concentriamoci sulla definizione di sistema intelligente. Le discussioni sulla conoscenza portano a discussioni sui sistemi intelligenti: punto di vista antropologico vs robot.

Page 33: Prof. Raffaella Folgieri

Sistema intelligente naturale: - aggregato complesso di oggetti ed entità, sistema articolato, calcolatore (sistema elettronico), cellula,

esseri viventi. - Elementi:

- Robusto e fault tolerant - Flessibile - Calcolo parallelo - Dissipa poca energia - Gestisce informazioni sensoriali affette da rumore

- Apprendimento: - Cartesio (1596 – 1650)

- Separazione corpo-mente - Mente: idee ricordate da ghiandola pineale (epifisi)

- Corpo: parte motoria, parte sensoriale (imitata da automi)… continua - Damasio (1994): intelligenza razionale ed intelligenza emotiva sono strettamente collegati

(approfondimenti qui: http://www.sicap.it/merciai/psicosomatica/students/damasio-s1.htm ) - Capacità associate all’intelligenza:

- Interazione efficace con ambiente: virus – SI; robot – NO - Adattamento a modifiche ambientali: virus – SI; robor – NO - Generalizzazione, inferenza: virus – SI; robot – NI - Analisi: virus – NO; robot – NI - Sintesi: virus – NI; robot – NI - Evoluzione: virus – SI; robot – NI - Interazione con altre entità (intelligenza emotiva): virus – NO; robot - NI

Page 34: Prof. Raffaella Folgieri

Sistemi intelligenti: interazione tra le varie parti. Funzionamento come tutt’uno.

- Dimensione temporale del funzionamento di un sistema - Interazione funzionale e sostanziale tra le varie parti

Punti fermi:

- Intelligenza contrapposta a istinto - Adattabilità genetica contrapposta ad adattabilità cognitiva

Sui sistemi intelligenti si distinguono tre prospettive: biologica, robotica, cibernetica.

Page 35: Prof. Raffaella Folgieri

Biologica: - Capacità di apprendere - Neuroni (unità del sistema nervoso)

Robotica: - Robotica antropomorfa. Animatronica (Capeck, 1921; Asimov, 1944): AI incontra

il mondo reale Cibernetica:

- Comportamento, controllo e comunicazione tra esseri intelligenti e macchine Sviluppi: - Teoria del controllo: stabile, robusto, lineare, non lineare, stocastico - Connessionismo: modelli del funzionamento del sistema nervoso centrale, reti

neurali - Algoritmi genetici/evolutivi (Darwin, 1859): camaleonti, zebre, falsi occhi,

membrana dita uccelli - Intelligenza Artificiale = sistemi che pensano o agiscono come gli uomini

(razionalmente) - Artificial life: capacità di interagire con altri esseri (ant colony); giochi (gioco della

vita); automi cellulari (modelli computer graphics). Nell’uomo si studiano in scienze cognitive.

- Algoritmi: capacità di analisi e sintesi

Page 36: Prof. Raffaella Folgieri

NOTA: Non ci addentreremo direttamente nell’esplorazione della robotica, ma per chi fosse interessato allo sviluppo di un progetto in tal senso, segnalo i seguenti link utili:

- CMU: http://www.cs.cmu.edu/~coral - OpenR Web page: http://www.tekkotsu.org/openr-install.html - Urbi: (Universal Robotics Body Interface)

(https://sourceforge.net/directory/os:windows/?q=urbi): linguaggio basato su reti client/server via Wireless; comandi via Telnet o con programmi in C++ o Java.

- *** Lego Mindstorm: più semplice, anche programmazione “visuale”, più economico delle soluzioni robotiche precedenti http://mindstorms.lego.com/en-us/Default.aspx

Page 37: Prof. Raffaella Folgieri

INTELLIGENZA BIOLOGICA: CENNI STORICI Si va da Aristotele (l’intelligenza risiede nel cuore - mente associazionista):

- Modello funzionale: idee, immagini, sensazioni - Principi associazione: similarità, opposizione, unità aristotelica

tempo/spazio A Galeno: prime osservazioni neurologiche: intelligenza nel cervello (ghiandola i cui umori – ormoni – sono portati in periferia mediante i nervi) Golgi e Cajal: il sistema nervoso dell’uomo è costituito da elementi (cellule) connesse in punti particolari (sinapsi). Von Helmholts scoprì che l’attività elettrica rilevata da Galvani (bisturi sui nervi della zampa di una rana) si trasmetteva da una parte all’altra di un neurone e da neurone all’altro. Bertrard e Lagley dimostrarono che alcuni farmaci potevano inibire la trasmissione del segnale elettrico

Page 38: Prof. Raffaella Folgieri

Localizzazionismo: - Frenologia (Gall, 1825)

- Localizzazione delle funzioni mentali - Modellazione ampiezza delle aree associate con l’uso della funzione (muscolo attivato)

- Se una regione si allarga - Protrude sulle regioni più vicine creando i solchi cerebrali

- Anatomical personology

Page 39: Prof. Raffaella Folgieri

Varie versioni

Page 40: Prof. Raffaella Folgieri

Teorie alternative sono: - Teoria del campo aggregato (Flourenss, 1823):

- Tutte le aree del cervello partecipano a tutte le attività intellettive

- Una lesione affligge tutte le attività intellettive allo stesso modo

- Connessione cellulare (Wernicke e Cajal, fine 1800): - I neuroni sono connessi tra loro in gruppi funzionali - Le connessioni sono in numero definito - Gruppi funzionali diversi danno origine funzioni intellettive

diverse - Quest’ultima è la teoria moderna delle funzioni cognitive

cerebrali circuiti neurali

Page 41: Prof. Raffaella Folgieri

INTELLIGENZA ARTIFICIALE: CENNI STORICI Teoria del controllo retroazionato (Maxwell, 1868): concetto di feedback

Teoria del controllo stocastico (N. Wiener and D. Kolmogorov, 1943) “Behavior, Purpose and Technology”, Rosemblueth, Wiener, Bigelow, articolo scritto a seguito della loro collaborazione.

Tutto nacque dalla necessità di costruire un meccanismo di puntamento aereo basato sul meccanismo di feedback durante la seconda guerra mondiale. Notate le similitudini con il comportamento umano, fu interpellato Roesmblueth. Fu presentata l’idea di una scienza dei meccanismi di controllo unificata per le macchine e gli esseri viventi (battezzata cibernetica dal greco kybernetes – timoniere). Il meccanismo di controllo del timone era uno dei sistemi a retroazione all'epoca meglio sviluppati). Maggiori approfondimenti qui: http://www.murzim.net/notiziario/980406.htm

Page 42: Prof. Raffaella Folgieri

Nel tempo si arriva al Machine learning (apprendimento automatico): area fondamentale dell’AI. Algoritmi e sistemi basati su osservazioni (esempi, dati, sensori) da cui la macchina acquisisce nuova conoscenza. Torneremo sul machine learning, ma occorre prima continuare con alcune conoscenze fondamentali per chi si vuole interessare di A.I. e di scienze cognitive. Intelligenza artificiale: il termine nasce nel 1956 ad opera del matematico americano John McCarthy, durante uno storico seminario interdisciplinare. Le premesse, però, sono molto più antiche.

Page 43: Prof. Raffaella Folgieri

Occorre partire da molto lontano con la “Pascalina” di Blaise Pascal (macchina di calcolo per aiutare il padre, amministratore fiscale della Normania): addizione e sottrazione automatica, primo calcolatore ad ingranaggi. Età vittoriana: Charles Babbage e le macchine calcolatrici a rotelle (fra cui “the difference engine”). Ne inventò una programmabile con schede perforate (per problemi tecnici, tuttavia, non funzionò mai). Inciso: affascinata dalla macchina analitica di Babbage, Ada Lovelace (Augusta Ada Byron), lavora alla sua implementazione. Con il suo lavoro crea quello che è conosciuto come il promo algoritmo pensato per essere elaborato da una macchina. E’ ricordata come la prima programmatrice al mondo (la mamma del software).

Page 44: Prof. Raffaella Folgieri

Seconda metà del XX secolo: è possibile disporre di dispositivi di calcolo e linguaggi di programmazione sufficientemente potenti per sperimentazioni di intelligenza. I relè sono sistituiti da valvole o tubi elettronici. 1946: nasce ENICA, concepito da Von Neumann (elaborazione a lotti – batch – di migliaia di informazioni al minuto. Programmazione tramite schede). Anni ’60: seconda generazione basata sul concetto di time sharing. Si passa dalle valvole ai transistor. Nel decennio ’50-’60 nascono ILP, LISP, POP, linguaggi di manipolazione simbolica. Rivista Mind, 1950: Alan Turing pubblica un articolo che tratta la possibilità di far comportare un computer in modo intelligente: si comincia a parlare del test di Turing.

Page 45: Prof. Raffaella Folgieri

Il test di Turing, per cui una macchina può essere considerata intelligente, oggi è stato comunque più volte superato da programmi (chatterbot, ne parleremo…) – anche se la questione è controversa - ma comportò una vera svolta. Searle, filosofo, ne confutò la validità attraverso la “stanza cinese”. Nello stesso anno: Samuel e primo programma capace di giocare a dama, scritto in Assembly. 1956: Newell, Shaw e Simon presentano il primo dimostratore automatico di teoremi, il programma LT, alla conferenza di Dartmouth, la stessa in cui viene coniato il termine AI. Inizialmente l’AI si concentra su euristiche di ricerca basate su tentativi ed errori e investiga su tecniche di apprendimento efficaci.

Page 46: Prof. Raffaella Folgieri

Grazie a Minsky, dopo il 1962 l’AI pone l’accento non sull’apprendimento, ma sulla rappresentazione delle conoscenza e sul connesso problema del superamento del formalismo e delle costrizioni dei vecchi sistemi. "Il problema della ricerca efficace con euristiche rimane un presupposto soggiacente, ma non è più il problema a quale pensare, per quanto siamo immersi in sotto-problemi più sofisticati, ossia la rappresentazione e modifica di piani" (Minsky, 1968).

Page 47: Prof. Raffaella Folgieri

Grazie a Minsky, dopo il 1962 l’AI pone l’accento non sull’apprendimento, ma sulla rappresentazione della conoscenza e sul connesso problema del superamento del formalismo e delle costrizioni dei vecchi sistemi.

Punti cardine: “società delle menti” (Minsky, rappresentazione distribuita

della conoscenza) e rappresentazione dichiarativa della conoscenza di McCarthy

(basi teoriche dell’AI).

Non è trascurato il punto di vista psicologico. La Carnegie Mellon University ha condotto (e conduce) molte ricerche per riprodurre i meccanismi del ragionamento umano. Un campo che registra molto interesse è quello dell’elaborazione del linguaggio naturale (approfondire), soprattutto per la traduzione di testi.

Page 48: Prof. Raffaella Folgieri

All’inizio degli anni ’70 prendono piede i sistemi di produzione, programmi che organizzano conoscenze (dati) per fornire risposte a precise domande attraverso l’applicazione di regole impostate. Sono presto rimpiazzati dai sistemi esperti (le regole di produzione erano poco flessibili), pensati soprattutto per attività di decision making o risk alarm. Permane, comunque, la questione del trattamento dell’incertezza, tipica delle problematiche reali. Mycin introduce l’uso di “valori di certezza” associati ai dati. Il successo non è quello sperato, per cui l’uso di regole precostituite e di sistemi basati su questo concetto viene lentamente abbandonato. Anche gli algoritmi genetici meriteranno un capitolo a sé.

Page 49: Prof. Raffaella Folgieri

Oggi all’Intelligenza Artificiale si associano le ANN, le SOM, il Machine Learning: tutti concetti che esploreremo approfonditamente senza tralasciare passaggi intermedi chiarificatori. 2006: cinquantesimo anniversario dell’AI. Due congressi: AI@50 "Dartmouth Artificial Intelligence Conference: The Next

Fifty Years" 50 anni di Intelligenza Artificiale - Campus Multidisciplinare in

Percezione e Intelligenza 2006 (CMPI), Albacete (Spagna)

Page 50: Prof. Raffaella Folgieri

MACCHINA E TEST DI TURING. NASCITA DELLE DISCUSSIONI SULL’INTELLIGENZA DELLE MACCHINE Pensiero ed intelligenza sono concetti spesso associati. La domanda che ha dato origine a gran parte degli sviluppi dell’AI è “Le macchine sono in grado di pensare?” La difficoltà nel fornire una risposta risiede in gran parte nella difficoltà di definire cosa vuol dire “pensare” (ci torneremo). Se si conoscessero dettagliatamente tutti i meccanismi della mente e dell’intelligenza umana, si potrebbero riprodurre con una macchina?

Page 51: Prof. Raffaella Folgieri

Molti si sono cimentati nel fornire una risposta e diversi sono gli orientamenti. Per approfondire e formare un vostro pensiero, indagate non solo sulle molte ricerche, ma fate riferimento anche a scienziati-scrittori (uno per tutti: Asimov), libri e film di fantascienza che, nel tempo, hanno interpretato e declinato i vari punti di vista. Quando si pensa all’AI, a chi non viene in mente HAL? (pensate al concetto di intelligenza emotiva di Damasio)

Page 52: Prof. Raffaella Folgieri

Noi siamo macchine, o, meglio, possiamo essere descritti con gli stessi meccanismi che si adottano per descrivere e progettare le macchine?

Ad esempio le Scienze Cognitive asseriscono di sì, visto che adottano un modello informatico.

Un altro esempio è dato dalla decodifica del genoma umano (GATTACA…).

Il genoma del bacterio Haemophilus influentiae e' composto di 1.830.137 coppie di basi (le "lettere" A, G, C e T), ossia circa 3,6x106 bit (poco meno di 0,5 Mbyte) di informazione. La funzione dei suoi 1743 geni non è nota nei dettagli, ma gli addetti ai lavori hanno cominciato a utilizzare da tempo, per la loro descrizione, gli stessi diagrammi temporizzati con cui si descrivono i circuiti elettronici.

Page 53: Prof. Raffaella Folgieri

Un essere umano può essere considerato una macchina? Se la risposta è positiva, allora, per definizione, esiste almeno una macchina “in grado di pensare”… …però alcuni fanno la distinzione tra macchine proteiche e macchine elettroniche… … Altri propongono una base simbolica dell’intelligenza (sistemi di simboli e regole di riscrittura, indipendenti dalla loro successiva materializzazione)… … altri ancora presentano un’ipotesi subsimbolica (l’intelligenza umana è il risultato della manipolazione di segnali, anche multidimensionali come le immagini)…

Page 54: Prof. Raffaella Folgieri

AI “classica” (GOFAI: Good Old-Fashioned AI) si basa più o meno esplicitamente su ipotesi simbolica “nuova” AI: più orientata a subsimbolismo

A George Boole, matematico britannico (1815 – 1864) si deve l’elaborazione di una matematica algebrica (che da lui prese il nome) che consente di effettuare procedure di calcolo grazie ad operatori (AND, OR, NOT…) che esprimono le leggi della logica.

Page 55: Prof. Raffaella Folgieri

Nel 1936 Alan Turing (1919-1954. Molte informazioni su un sito dedicato, fatto molto bene: http://www.turing.org.uk/turing/) crea (a livello teorico) una “macchina” o “automa” per dimostrare formalmente la possibilità di eseguire qualsiasi algoritmo (Abu Ja'far Mohammed ibn Mûsâ al-Khowârizmî) in un numero finito di passi. La prima operazione che secondo Turing occorre fare è scomporre un’operazione in passi semplici. Turing si concentrò sulle operazioni matematiche fondamentali, definendone i passi elementari. Ispirato dalla pascalina (1642) di Blaise Pascal, Turing presenta l’idea del suo “calcolatore universale”.

Page 56: Prof. Raffaella Folgieri

IL CALCOLATORE UNIVERSALE DI TURING La macchina è immaginabile come un registratore a nastro con una testina di lettura, scrittura e cancellazione .

La testina è dotata di un indicatore che, ad ogni passaggio di calcolo, determina lo stato in cui si trova la macchina mentre legge il simbolo posto nella cella del nastro su cui è posizionata.

Una macchina di Turing è composta da: un nastro una testina uno stato interno un programma uno stato iniziale

Il nastro è infinito e suddiviso in celle. In una cella può essere contenuto un simbolo preso da un opportuno alfabeto (che è un insieme di simboli).

Page 57: Prof. Raffaella Folgieri

Una cella deve contenere un simbolo dell’alfabeto o un simbolo speciale.

La testina di lettura/scrittura legge o modifica il contenuto della cella su cui è posizionata.

La macchina ha uno stato interno (che appartiene all’insieme degli stati). La macchina segue regole della forma (A, a, B, b, direz), in cui “A” è lo stato corrente ed “a” è il simbolo letto dalla testina; “B” è lo stato in cui si troverà la macchina con l’applicazione della regola e “b” è quello che di conseguenza dovrà scrivere sul nastro la testina movendosi a destra o a sinistra nella direzione definita da “direz”. Un esempio visivo: aggiungere due X ad una sequenza già esistente di X. Sul nastro sono già presenti tre X:

x x x

Page 58: Prof. Raffaella Folgieri

Passo 1: la testina legge una X, per cui va alla cella successiva. Questo avviene tre volte. La testina mantiene il suo stato interno (2) finchè sul nastro non ci sono X da leggere.

x x x

x x x

x x x

x x x

Page 59: Prof. Raffaella Folgieri

A questo punto la testina non legge una X ma trova una casella vuota. Deve scrivere una lettera X, spostarsi a destra e passare allo stato 1

x x x x  

nello stato 1 non legge una X ma trova una casella vuota, quindi deve scrivere una lettera X, spostarsi a destra e passare allo stato 0. A questo punto l’automa si ferma.  

x x x x x  

Ci fermeremo a questo esempio semplice. Vi sono varie versioni della macchina di Turing e varie evoluzioni. In Rete è possibile trovare anche diversi simulatori e approfondire l’argomento. (approfondire: cosa c’entrano il teorema di completezza di Gödel e la tesi di Church sulla computabilità con la macchina di Turing?)

Page 60: Prof. Raffaella Folgieri

“Le macchine sono in grado di pensare?” Turing se lo chiese e nel 1950 ideò un test per verificare se una macchina fosse in grado di pensare. Il test può riassumersi come segue: tre partecipanti: un esaminatore (A), un uomo (B), una macchina (C) A è tenuto separato da B e C e deve stabilire chi è l’uomo e chi è la

macchina attraverso la risposta alle domande poste ad entrambi. Se A non distingue B e C, allora C ha superato il test e viene considerata “in

grado di pensare”

Approfondire

Page 61: Prof. Raffaella Folgieri

Come è possibile determinare se una macchina è pensante? Il test di Turing ha un approccio sperimentale e molte sono le discussioni a contorno: una macchina esegue programmi e non può originare nulla

di nuovo (però può imparare dall’esperienza – programmi scacchi, machine learning, reinforcement learning);

non è possibile replicare completamente il comportamento intelligente (e se fosse solo una questione di tempo e di progressi nelle Scienze Cognitive?);

le regole formali non possono descrivere completamente il comportamento intelligente (e la rappresentazione subsimbolica della conoscenza?);

un computer che superi il test di Turing non può comunque definirsi intelligente (manca di coscienza).

Page 62: Prof. Raffaella Folgieri

Vi sono due posizioni in AI:

quella debole vede il calcolatore come uno strumento potente per lo studio della mente umana (pensiero razionale, logica, AI);

quella forte asserisce che le macchine in grado di agire intelligentemente sono dotate di mente reale e conscia( il calcolatore è in grado di comprendere e mostrare altri stati cognitivi propri del cervello umano. Thinking humanly. Scienze Cognitive).

Turing, 1944: “Fino a quando una macchina non sarà spinta a comporre un sonetto o un concerto dai suoi stati d’animo e dalla sua conoscenza, e, non semplicemente, da una statistica sulla composizione dei simboli, non possiamo pensare che quella macchina sia uguale alla nostra mente; non potremo cioè affermare che la macchina sia uguale alla nostra mente fino a quando non potremo affermare non solo che ha scritto il componimento, ma anche che sa di averlo scritto”

Page 63: Prof. Raffaella Folgieri

Contro la posizione forte dell’AI, Searle (fu lui a “battezzare” strong AI position quella descritta), nell’articolo “Minds, Brains and Programs” apparso su Behavioral and Brain Science nel 1980 presenta l’argomentazione della Stanza Cinese.

L’esperimento mentale della stanza cinese (approfondire) è un controesempio dell’AI

forte e si basa sull’assunto che la sintassi non è equivalente alla semantica.

Un tizio in una stanza riceve in ingresso dei simboli in cinese (il tizio non conosce il cinese) e li manipola secondo regole che segue pedissequamente (senza conoscerle), fornendo le risposte.

Page 64: Prof. Raffaella Folgieri

Approfondimento: cosa c’entrano I CHAPTCHA con Turing? Cominciare cercando il significato dell’acronimo

Page 65: Prof. Raffaella Folgieri

L’omino segue la sintassi, ma non ha la minima idea di quale sia la semantica delle domande e delle risposte. Nella stanza non c’è conoscenza. Riflettere: gli uomini sono costituiti da molecole. Le molecole non hanno coscienza. L’uomo non ha coscienza? (a questo proposito approfondire la stanza di Maxwell, 1986). Cos’è il Loebner Prize? http://www.loebner.net/Prizef/loebner-prize.html  

Page 66: Prof. Raffaella Folgieri

AI, RAPPRESENTAZIONE DELLA CONOSCENZA E LOGICA Torniamo sul concetto di Rappresentazione della Conoscenza (in Inglese Knowledge Representation – KR). E’ definita come lo studio di come la conoscenza del mondo possa essere rappresentata in un sistema di elaborazione e quali tipi di ragionamento possano essere effettuati con tale conoscenza. Le sfide sono rappresentate dalla commonsense knowledge, la capacità di un sistema knowledge-based di trovare un compromesso tra la complessità computazionale richiesta per ottenere la maggiore accuratezza delle inferenze e l’abilità di rappresentare e manipolare conoscenza incerta ed informazioni. La logica proposizionale e la logica del primo ordine sono uno dei mezzi di base per l’espressione della conoscenza nell’AI.

Page 67: Prof. Raffaella Folgieri

Non tratteremo esplicitamente la logica (proposizionale e del primo ordine) perché già presenti in molti vostri corsi e trattati ampiamente. Vedremo, invece, come la logica trovi applicazione nell’AI.

Page 68: Prof. Raffaella Folgieri

Applicazione della logica all’AI Nell’AI la logica si studia per le sue implementazioni. In particolare lo studio della logica è necessario per poter accedere al LISP (LISt Processor), linguaggio di programmazione usato spesso nei progetti di intelligenza artificiale.

Il LISP fu ideato da John McCarthy (inventore del termine “intelligenza artificiale” e esperto di logica matematica in relazione all’AI) nel 1958 come linguaggio formale per lo studio di equazioni di ricorsione in un modello computazionale (infatti il LISP vede i programmi come funzioni). Il primo editor di testo per terminale (progettato negli anni ’80 da Richard Stallman) con un core LISP fu emacs. Successivamente fu portato su tutti i sistemi operativi.

Logo e mascotte del LISP:

  

Un buon manuale di LISP e qualche esempio (in Rete trovate molte altre risorse): http://www.matteolucarelli.net/lisp/lispintro.htm

Page 69: Prof. Raffaella Folgieri

Non studieremo il LISP durante il corso, ma dovreste essere già in possesso (da precedenti corsi) di tutte le necessarie basi per poterne approfondirne autonomamente la conoscenza. Lo scopo che perseguo in questo corso è mostrarvi diversi modelli cognitivi, adottati o collegabili all’AI e utilizzati-utilizzabili nelle Scienze Cognitive in generale. I sistemi esperti, di cui abbiamo già parlato, sono basati sulla conoscenza, e le sintassi della logica (o comunque i meccanismi) che abbiamo visto sono stati ampiamente utilizzati per la creazione dei primi (soprattutto) sistemi esperti. Possiamo dire che un sistema esperto sia formato da due parti: una knowledge base (base di conoscenza) e un motore inferenziale, che ha il compito di utilizzare un insieme di regole logiche che consentono di dedurre un nuovo fatto a partire dalle informazioni già a disposizione.

Page 70: Prof. Raffaella Folgieri

Spesso l’ostacolo principale è dato dal fatto che l’esperto umano non sa come rappresentare i propri processi mentali tramite un insieme di regole coerente e completo. Da qui l’importanza di comprendere a fondo la logica. Noi parleremo di un’applicazione semplice derivata dall’unione dei concetti della logica all’AI: i chat-bot.

Page 71: Prof. Raffaella Folgieri

I CHAT-BOT Chat-bot è una contrazione di “Chatter Robot” (si trova anche come chatterbot) che è un programma che simula una conversazione intelligente con uno (o più) esseri umani, vocalmente o per iscritto (domande e risposte). Lo scopo primario di questa famiglia di programmi è quello di indurre un essere umano a credere di conversare con un altro umano (Turing test…). Questa categoria di programmi è più genericamente denominata Artificial Conversational Entities, talk bots o chatterboxe.

Page 72: Prof. Raffaella Folgieri

Oggi sono molto utilizzati come assistenti (vendite, help, servizi). Alcuni utilizzano sistemi complessi basati sul processing del linguaggio natural, ma molti rispondono semplicemente in base alla corrispondenza tra parole chiave individuate nelle domande poste dall’utente e parole chiave presenti in una base di dati di risposte. Il termine “ChatterBot” fu introdotto da Mauldin (Verbot Julia) nel 1994. Qui un esempio semplice: http://www.mtcube.com/abinfav2009.asp Sulla scia della notorietà raggiunta dal test di Turing, il programma ELIZA (1966) di Wizenbaum suscitò grande interesse poiché simulava una conversazione con un umano. Qui: http://www.chayden.net/eliza/Eliza.html una riproduzione di ELIZA molto fedele all’originale

Page 73: Prof. Raffaella Folgieri

 

Tuttavia lo stesso Weizenbaum afferma, nel suo paper di presentazione, che ELIZA non è intelligente ma simula, riconoscendo alcune parole nell’input e proponendo risposte preconfezionate (con qualche accorgimento – ad esempio riformulando la domanda o, come fanno molti chatbot, introducendo risposte casuali). Con ELIZA si dimostrò che risposte generiche e a volte non molto chiare potevano indurre l’interlocutore a credere di parlare con una vera intelligenza. Un altro chatterbot molto famoso è PARRY (1973) che, scritto in LISP, simulava un paziente schizofrenico (approfondire).

Page 74: Prof. Raffaella Folgieri

Oggi i chatterbot sono molto utilizzati ed è possibile trovarne molti in Rete (provate). 

Alcuni chatbot in Rete (esplorare). Anche in Italiano: Eloisa: http://www.eloisa.it/ Tobby: http://tobbychatbot.altervista.org/

s:parole_chiavi_per_la_ricerca cercami: parole_chiavi_per_la_ricerca

e Tobby vi darà i links alle pagine dei risultati dei vari motori di ricerca.

Un chatbot, in generale, è anche in grado di svolgere operazioni semplici. Ginny: http://ginnychatbot.altervista.org/ Chatbot che addestra per colloquio di lavoro:

http://www.dialobot.com/demo_marco_chatbot.html

Page 75: Prof. Raffaella Folgieri

In Inglese: Il famoso ALICE: http://alice.pandorabots.com/ Il Capitano Kirk:

http://sheepridge.pandorabots.com/pandora/talk?botid=fef38cb4de345ab1&skin=iframe-voice

Lauren: http://lauren.vhost.pandorabots.com/pandora/talk?botid=f6d4afd83e34564d

Vari per assistenza tecnica   

  

Page 76: Prof. Raffaella Folgieri

Tra i chatterbot più recenti vanno annoverati Jabberwacky e A.L.I.C.E.  

Il primo apprende nuove risposte e, come molti chatterbot di nuova generazione, utilizza algoritmi evolutivi che migliorano nel tempo l’abilità di comunicazione (cercare anche Kyle su Rete).   

A.L.I.C.E. utilizza un markp language, l’AIML (Artificial Intelligence Markup Language, basato su strutture simili all’XML) con specifiche funzioni di conversation agent. I chatbot creati in questa modalità sono molti e vengono spesso designati come Alicebot.   

Page 77: Prof. Raffaella Folgieri

A.L.I.C.E. è basato sulla semplice pattern matching (come ELIZA) e non ha capacità di ragionamento (stiamo parlando di AI debole).   A.L.I.C.E. è stato creato da Wallace nel 1995 ed ha vinto il Loebner Prize nel 2000, 2001 e 2004. 

Page 78: Prof. Raffaella Folgieri

Vi sono due tipi differenti di chatbot: stand-alone oppure web-based.

Entrambi presentano vantaggi e svantaggi, ma, soprattutto per facilità di programmazione e sicurezza, preferiremo i web-based.

Vedremo come implementarne uno. La forma più semplice prevede una casella per immettere il testo (domanda) ed una casella per ottenere la risposta.

Page 79: Prof. Raffaella Folgieri

Vi si può associare un’animazione o un avatar (anche dotato di movimento e, per esempio, renderlo attivo in SecondLife). In Rete trovate molti esempi e molti tool per costruire chatbot. Provate ad esplorare… Con molta facilità è possibile creare un pandorabot: http://www.pandorabots.com/botmaster/en/home Si possono creare molti tipi di pandoraboot.

Page 80: Prof. Raffaella Folgieri

I pandorabot utilizzano l’AIML, dunque, prima di creare un chatbot, occorre apprendere questo linguaggio, XML-compatibile. Su Internet trovate tutto il necessario per apprendere l’AIML autonomamente. Vedremo, però, insieme, come creare un chatbot. La creazione di un chatbot come progetto d’esame comporta che si cerchi di creare qualcosa di intelligente (rif. Test di Turing) e non semplicemente un’animazione che dia le stesse informazioni che può fornire anche una semplice pagina web…)

Page 81: Prof. Raffaella Folgieri

               

COME CREARE UN CHATBOT 

      

Page 82: Prof. Raffaella Folgieri

L’AIML http://www.alicebot.org/ - A.L.I.C.E Artificial Intelligence Foundation website. Il testo che segue è una traduzione del manuale “Basic AIML User Manual”, di Anupama Seshagiri, reperibile in Rete. Ovviamente si riportano, qui, solo gli argomenti principali che ci serviranno per comprendere il funzionamento del linguaggio. L’Artificial Intelligence Markup Language è un linguaggio XML compatibile che rende davvero semplice creare un Alice bot anche ai principianti.

Page 83: Prof. Raffaella Folgieri

L’AIML prevede TAG come gli altri markup language. I più importanti sono:

<aiml>: è il tag che apre e chiude un document AIML

<category>: racchiude una “unità di conoscenza” nella base di conoscenza di un Alicebot

<pattern>: racchiude un pattern semplice che corrisponde a cosa dice o scrive un utente ad un Alicebot

<template>: racchiude la risposta ad un input utente

Page 84: Prof. Raffaella Folgieri

Tag AIML Le categorie sono specificate dall’informazione compresa tra i due tag category: <category> ...information... </category> In modo simile, si ha per i pattern: <pattern> ...information... </pattern> La risposta è invece specificata da: <template> and </template>.

Gli elementi posti tra "<" e ">" si dicono tag AIML o elementi. Ogni tag eve essere aperto e chiuso.

A volte succede che non vi sia informazione tra un tag aperto ed uno chiuso. In questo caso, invece di <some-tag></some-tag> si può scrivere direttamente <some-tag/>

Page 85: Prof. Raffaella Folgieri

tag AIML personalizzati l’AIML si può estendere creando un numero infinito di nuovi tag, ad esempio per i pronomi in lingue diverse, predicati specifici, o proprietà specifiche dell’applicazione. I "Predicate tags" hanno un metodo "set" e un "get" specifico. Pronomi quali "it" hanno predicate tag quali <set name="it"></set>. L’AIML prevede un certo numero di built-in tag per i pronomi inglesi. Usando <set name="xxxx"> e <get name="xxxx"> si possono ampliare a piacere le capacità del robot.

Page 86: Prof. Raffaella Folgieri

TAG Category Un chatbot risponde a domande. La domanda specifica può essere visualizzata come una specie di percorso, che comincia al centro della knowledge web e viene costruita attraverso una serie di link e nodi, e che termina in un Response Template. Il percorso attraverso attraverso il quale il (response) template viene chiamato, si dice Category. Considerando solo i tag <pattern> e <template>, ci sono in generale tre tipi di Categorie: atomic, default, recursive.

Page 87: Prof. Raffaella Folgieri

Atomic Le categorie Atomic sono quelle contenenti pattern specifici, indivisibili (atomici in questo senso), univoci, cioè quelli che non contengono i simboli * o _ Sono le categorie più più semplici e facili da aggiungere in AIML. Esempio: <category> <pattern>WHAT IS A CIRCLE</pattern>

<template><set_it>A circle</set_it> is the set of points equidistant from a common point called the center.

</template> </category>

nota: é sempre meglio indentare i tag per individuare eventuali errori (es. tag non chiusi)

Page 88: Prof. Raffaella Folgieri

Default La categoria Default si ha quando il suo pattern contiene i simboli * o _ La categoria Default estrema è <pattern>*</pattern>, che fornisce la risposta a qualsiasi input. La categoria Default più comune ha pattern che combinano poche parole con altri simboli. Per esempio: <category> <pattern>I NEED HELP *</pattern> <template>Can you ask for help in the form of a question?</template> </category>

Page 89: Prof. Raffaella Folgieri

Recursive La categoria Recursive è quella che “mappa” gli input su altri input, per semplificare il linguaggio o per identificare pattern sinonimi. L’AIML implementa la ricorsione con l’operatore <srai>. Molti input sinonimi possono avere la stessa risposta. Per esempio <srai> è molto utilizzato per le forme di saluti. A “GOODBYE” possono corrispondere risposte quali GOODBYE, BYE, CYA CIAO, BYE BYE, ecc. <category> <pattern>BYE BYE</pattern> <template><srai>GOODBYE</srai></template>

</category>

Page 90: Prof. Raffaella Folgieri

Può essere usato anche per la semplificazione o la riduzione di pattern di input complessi. Ad esempio, in Inglese, la domanda "What is X" può essere posta in molti modi differenti: "Do you know what X is?", "Tell me about X", "Describe X", "What can you tell me about X?", e "X is what?" sono solo alcuni esempi. Di solito si cerca di immagazzinare la conoscenza nel modo più conciso possibile, o nella forma più comune. Il tag <srai> riconduce tutte queste forme a quella base: <category> <pattern>* DO YOU KNOW WHAT * IS</pattern> <template><srai>WHAT IS <star/></srai></template>

</category>

Page 91: Prof. Raffaella Folgieri

Il tag <star/> sostituisce il valore indicato da * prima della chiamata ricorsiva a <srai>. Questa categoria trasforma “Do you know what a circle is?" in "WHAT IS A CIRCLE", e poi cerca la miglior corrispondenza per l’input trasfromato. certe forme di ramificazione possono essere realizzate con <srai>.

Page 92: Prof. Raffaella Folgieri

TAG Response Default Response Si realizza spesso quando un pattern di input non viene trovato nella kw, ma vogliamo che il robot risponda ugualmente con qualcosa di sensato.

Random Response Uno strumento molto potente ma ancora di base che fornisce la possibilità di replicare in modo casuale ad una richiesta. E’ spesso utilizzata per far sembrare il bot più intelligente e meno prevedibile. <random> <li> What is your name? </li> <li> What is your favorite movie? </li> <li> Will you buy me a drink? </li> </random> Una delle tre risposte sarà scelta in modo casuale.

Page 93: Prof. Raffaella Folgieri

TAG per esprimere Conditional Elements L’elemento condizionale istruisce l’interprete AIML a restituire un contenuto specific a seconda del risultato di una condizione espressa. NB: Ve ne sono di tre tipi differenti, distinti da un attributo xsi:type che permette la validazione da parte di un XML Schema processor, Due di questi tipi possono contenere elementi <li>. In pratica un interprete AIML può permettere l’omissione dell’attributo xsi:type e determinare, invece, euristicamente, che tipo di condizione (e di azione <li>) è in uso.

Page 94: Prof. Raffaella Folgieri

Block Condition E’ un tipo di condizione che ha un nome che specifica un predicato AIML, oltre a un valore attibuto che contiene un’espressione pattern semplice. <aiml:condition xsi:type = "blockCondition" name = aiml-predicate-name value = aiml-simple-pattern-expression > <!-- Contents: aiml-template-elements --> </aiml:condition> Se il contenuto dell’attributo valore corrisponde al valore del predicato specificato dal nome, l’interprete AIML restituirà il contenuto della condizione. In caso contrario, restituirà una stringa vuota "".

Page 95: Prof. Raffaella Folgieri

UN ESEMPIO: Single-predicate Condition Il Single Predicate Condition deve avere un nome di attributo che specifica un predicato AIML. Deve contenere almeno un element <li> che potrebbe essere di tipo valueOnlyListItem type. Zero o un <li> può essere del tipo defaultListItem. <!-- Category: aiml-template-elements --> <aiml:condition xsi:type = "singlePredicateCondition" name = aiml-predicate-name > <!-- Contents: value-only-list-item*, default-list-item{0,1} --> </aiml:condition>

Page 96: Prof. Raffaella Folgieri

L’istruzione è interpretata come segue: Gli <li> vengono letti nell’ordine 1. Se li e un valueOnlyListItem, allora il contenuto viene

confrontatato con il valore del predicato specificato 2. Se corrispondono, restituisce il contenuto di li e si

ferma 3. Se non corrispondono, continua 4. Se li è un defaultListItem, allora restituisce il

contenuti di li e si ferma

Page 97: Prof. Raffaella Folgieri

Vi sono anche: Multi-predicate Condition Condition List Items Default List Items Value-only List Items Name and Value List Items

(il meccanismo è simile, ma cambia il risultato. Sono riportati tutti nel manuale che vi ho citato all’inizio e sulle dispense)

Page 98: Prof. Raffaella Folgieri

Esempio di script aiml <aiml>   <category> 

<pattern> Dobbiamo * </pattern> <template> 

    <srai> Dovremmo <star/>     </srai> 

</template>   </category>   <category> 

  <pattern> Dovremmo * </pattern>   <template> Non sono sicuro di essere pronto per questo. </template> 

  </category> 

Page 99: Prof. Raffaella Folgieri

  <category>   <pattern> BYE </pattern> 

<template>     <random>       <li> Bye. </li>       <li> Goodbye. </li>       <li> Bye Bye. </li>       <li> Sayonara. </li>       <li> Ciao. </li>       <li> Alla prossima. </li>       <li> A più tardi <get name=”name” />.</li>     </random> 

</template>   </category> </aiml> 

Page 100: Prof. Raffaella Folgieri

Ovviamente vi sono alcuni altri TAG, ma l’importante era capire il meccanismo.

I TAG possono essere combinati tra loro.

Page 101: Prof. Raffaella Folgieri

COME CREARE UN CHATBOT? Si possono prendere in considerazione diverse opzioni

1) Verbots www.verbots.com

È una piattaforma opensource per sviluppare chatbot molto versatili utilizzando una interfaccia semplie e l’editor della knowledge base. Le opzioni sono molte e il costo si aggira sui 30$/anno per poter condividere il bot con tutti. È possibile fornirlo di voce e animazioni.

2) Personality Forge www.personalityforge.com

È una piattaforma on line per creare virtual chatterbot, dopo aver creato un proprio account. Il costo si aggira attorno ai 50$/anno

Page 102: Prof. Raffaella Folgieri

3) Pandorabots www.pandorabots.com

Permette di creare bot basati su ALICE/AIML . Non ha opzioni voce o animazione ma prevede un piano gratuito. (per informazioni su ALICE: www.alicebot.blogspot.com)

4) Program your own chatbot from scratch

È ovviamente possibile programmare da capo il proprio chatbot, utilizzando qualsiasi linguaggio… ma bisogna essere un po’ più esperti…  

Page 103: Prof. Raffaella Folgieri

CREARE UN WEB‐BASED CHATBOT ‐ PANDORABOTS 

Creare un bot con Pandorabots è piuttosto semplice e bisogna considerare che Pandorabots è anche una delle compagnie di hosting di chatbot più conosciuta. Inoltre è particolarmente adatta per i neofiti, e prevede un piano free. Vediamo passo per passo come creare un bot.

Page 104: Prof. Raffaella Folgieri

1.) Creare un account Per prima cosa si vada su http://www.pandorabots.com/botmaster/en/home, e si crei un account (“Account Sign-up”). E’ gratis e si può operare da subito.

Page 105: Prof. Raffaella Folgieri

2.) Progettare il chatbot Non mi stancherò mai di ripetere che, come in tutte le cose, ma in particolare nell’IT, la prima cosa da fare è pianificare! Una progettazione accurate determina il successo di un progetto. Nel nostro caso occorre pensare alla personalità che vogliamo dare al chatbot, in che lingua parlerà, per quale scopo lo stiamo creando, e quali interazioni realizzerà con gli altri. Occorre giusto un foglio e una penna, per schiarirsi le idee, ma, credetemi, è un’operazione assolutamente necessaria!

Page 106: Prof. Raffaella Folgieri

3.) The Work Begins: Create Your Bot Pronti? Allora fate login con l’account creato. Tra le opzioni che appiono, vedrete “create a pandorabot”. Con un click accederete alla schermata in cui specificare il nome del chatbot, una serie di opzioni ed il set AIML che vorrete (eventualmente) usare. Il mio suggerimento è di creare prima un file AIML, oppure farvi prima “un giro” ed aggiungere poi il file AIML (è possibile modificare le impostazioni anche successivamente). Inizialmente potete anche scegliere il set AIML standard (o, ad esempio, quello italiano). Se selezionate “no initial content”, il bot non avrà nulla da dire

Page 107: Prof. Raffaella Folgieri

 

Page 108: Prof. Raffaella Folgieri

4.) Personalizzazione del chatbot Ok, ora siete gli orgogliosi creatori del vostro primo chatbot…. Però non l’avete ancora pubblicato e poi bisogna lavorarci ancora un po’… Facciamo un click sul bottone “Properties”. Apparirà un form che vi permette di specificare alcuni attributi del bot, quali il compleanno, che tipo di musica gli piace, il suo sesso e l’aspetto. Compilate i campi secondo il progetto che vi siete prefigurati. Potete anche aggiungere attribute personalizzati: fissazioni, stranezze… se poi creerete un altro bot, potete anche copiare queste caratteristiche e modificarle per il nuono. Una volta finite, fate click su “Submit Changes”.

Page 109: Prof. Raffaella Folgieri

 

Chiaramente dobbiamo controllare se il bot sa, a questo punto, quando è il suo compleanno!.. fate click su “Train”.  

Page 110: Prof. Raffaella Folgieri

Nella schermata che compare, provate a chiedere al bot quanti anni ha o quando è il suo compleanno, come vedete di seguito… 

 

Page 111: Prof. Raffaella Folgieri

Alla domanda quanti anni hai il bot non ha saputo rispondere. Proviamo con quando è il tuo compleanno… anche in questo caso il bot non sa rispondere. Proviamo allora a scrivere solo “compleanno” (il bot, vi ricordo, riconosce le parole chiave). 

Anche in questo caso il bot non risponde con la data che abbiamo immesso nelle property. Dovremo dirgli noi come rispondere. Nella schermata, sotto la domanda “quando è il tuo compleanno?” fate click su “advanced alter response”: 

Page 112: Prof. Raffaella Folgieri

Comparirà la schermata che vedete di seguito: 

Page 113: Prof. Raffaella Folgieri

In cui possiamo creare la giusta categoria (sappiamo come si fa, vero?) 

Page 114: Prof. Raffaella Folgieri

Notate che ho usato uno dei tag che abbiamo visto (name) per specificare il valore di risposta ad un tag personalizzato (compleanno) che abbiamo creato… Facciamo click su “submit” e riformuliamo la domanda al bot… 

Ecco fatto! … possiamo, intanto, ripetere le operazioni per tutte le altre proprietà che abbiamo impostato e poi… vedremo come fare di più! 

Page 115: Prof. Raffaella Folgieri

5.) personalizziamo con l’AIML Se fate click su “AIML” vedrete che abbiamo creato (con la procedura precedente) un file AIML (che si chiama update.aiml):

Page 116: Prof. Raffaella Folgieri

Se facciamo un click sul nome, vedremo che contiene la trasformazione in AIML di quello che abbiamo specificato con il lavoro sulle property: 

<?xml version="1.0" encoding="UTF‐8"?> 

<aiml version="1.0"> <category>    <pattern>QUANDO È IL TUO COMPLEANNO</pattern>    <template>Il mio compleanno è <bot name="compleanno"/>.</template> </category> <category>    <pattern>QUANDO È IL TUO COMPLEANNO</pattern>    <template>Il mio compleanno è il <bot name="compleanno"/>.</template> 

Page 117: Prof. Raffaella Folgieri

</category> <category>    <pattern>QUAL È IL TUO COLORE PREFERITO</pattern>    <template>Il mio colore preferito è il <bot name="colore preferito"/>.</template> </category> <category>    <pattern>HAI QUALCHE HOBBY</pattern>    <template>Amo studiare le <bot name="hobby"/>!</template> </category> <category>    <pattern>SEI UN MASCHIO O UNA FEMMINA</pattern>    <template>Sono una <bot name="sesso"/>... non si capisce?</template> </category> 

Page 118: Prof. Raffaella Folgieri

<category>    <pattern>DI CHE SESSO SEI</pattern>    <template>solo un uomo poteva fare questa domanda!... secondo te???</template> </category> </aiml> 

Riconoscete l’AIML? Bene!.. come potete notare, è possibile intervenire sul file, modificandolo, oppure fare l’upload di un file precedentemente preparato, o ancora fare il download di questo! Proviamo ad aggiungere direttamente in questo file una nuova categoria, prima di </aiml>, per esempio, cosa farà la categoria che segue?

Page 119: Prof. Raffaella Folgieri

<category> <pattern>QUANTI ANNI HAI</pattern> <template><random> <li><bot name="eta"/></li> <li>10 anni</li> <li>non te lo dico!</li> </random> </template> </category>

(NB: ovviamente dovremo aggiungere la proprietà “età”…)

Page 120: Prof. Raffaella Folgieri

Visto che sono sicura che avete capito l’AIML e che vi sentite più sicuri di voi stessi, a questo punto potete divertirvi a scrivere un file molto più complesso (scaricando quello in parte già creato ed ampliandolo, o intervenendo sul file on line, o, meglio, creandone uno tutto vostro che implementi l’AI di cui avete deciso di dotare il chatbot). Si possono anche associare più file AIML (ad esempio uno con risposte standard, che poi si possono utilizzare anche in altri bot; uno con risposte random e così via).

Page 121: Prof. Raffaella Folgieri

Espressioni condizionali • Il tag CONDITION èseguito daname=«gender» chesignifica «crea unavariabile dal nomeGENDER»• Nella lista:<li> se il valore (VALUE) di GENDER è «male»...<li> Se è «female»...<li> Altrimenti...

Page 122: Prof. Raffaella Folgieri

Uso di SET e GET • Dico all’AIML che sel’utente mi dice il nome(*) deve metterlo (SET)nella variabile che sichiama NAME (uso lasintassi <setname=«name»)

• Poi, in risposta adeterminati pattern(nell’esempio l’utentechiede al BOT di ripetergliil nome), uso <getname=«name»> perscrivere il valorecontenuto nella variabilename.

Posso anche usarlo in risposta a saluti finali...

Page 123: Prof. Raffaella Folgieri

Uso di THINK • Se metto <think>davanti al tag SET,immagazzinerò ilvalore nellavariabile, ma senzaripeterlo all’utente• Il chatbot ricorderàil valore(conservato nellavariabile «name»,nell’esempio) perun uso futuro

Page 124: Prof. Raffaella Folgieri

Tag IMAGE e VIDEO• Servono per includere nella risposta un video o un’immagine(URL). Esempio:

<category><pattern>posso vedere una tua foto</pattern><template><image>https://www.insidemarketing.eu/cd

n/wp‐content/uploads/2018/01/Chatbot.png</image></template></category>• La stessa cosa con <video>URL</video>

Page 125: Prof. Raffaella Folgieri

6.) Rendiamo pubblico il bot Ora che avete dotato il vostro bot di una personalità e gli avete dato le informazioni necessarie per iniziare è tempo di mostrare la vostra creazione! Andate alla lista dei vostri bot (“My Pandorabots”), selezionate quello che vi interessa e scegliete “publish”. La pagina successive vi fornirà l’URL sul quale è stato pubblicato il vostro bot. A questo punto potete anche aggiungere un’interfaccia Flash, un avatar Oddcast vHost avatar, oppure personalizzare la pagina. Potrete vedere anche i log di conversazione e alcune statistiche. Se modificate, nel tempo, il vostro bot, dovrete pubblicarlo nuovamente. That’s all, Folks! … ma… c’é sempre qualche trucco!

Page 126: Prof. Raffaella Folgieri

COME RENDERE “PIÙ CONVINCENTE” UN CHATBOT 

Uso dei proverbi I proverbi possono rispondere a molte domande… Pensate a: “non ci sono più le mezze stagioni”, “ tanto va la gatta al lardo…”, “tra il dire e il fare c’è di mezzo il mare…” ecc. ecc., magari introdotti da un “Come ben sai: …”

Page 127: Prof. Raffaella Folgieri

Aggiungere “intelligenza” al chatbot L’intelligenza del chatbot dipenderà da due fattori: una buona logica (torna il fatto che deve essere progettato bene) e un gran numero di record (i casi delle risposte e delle domande). Si può pensare di programmare qualcosa che apprenda dalle conversazioni che il chatbot tiene con gli utenti. In pandorabots esiste questa possibilità: tramite i log, si può accedere ad una conversazione ed utilizzare le domande per addestrare (in modalità “train”) ulteriormente il bot. Più Avanti, quando saprete crearle, potrete anche pensare ad un meccanismo basato su algoritmi di apprendimento più evoluti.

Page 128: Prof. Raffaella Folgieri

Chiamare l’utente per nome in modo casuale Se ogni tanto, nelle risposte, il bot chiamerà l’utente per nome, la conversazione sembrerà più naturale. Per realizzare questa opzione, ricordate l’uso di get e set.

Inoltre… qui trovate alcuni tutorial: http://www.chatterbotcollection.com/category_contents.php?id_cat=20

Page 129: Prof. Raffaella Folgieri

REPETITA IUVANT! So che i chatbot sembrano semplici e entusiasmano tutti, ma meglio ripetere PERCHE’ SCONSIGLIO DI CREARE UN CHATBOT COME PROGETTO DI FINE CORSO: Il chatbot è nato per superare il test di Turing, quindi la progettazione deve essere così accurata che un utente deve credere che dietro al chatbot vi sia una persona! Occorre una grande padronanza della logica (che va progettata perfettamente), tanto tempo e soprattutto una progettazione accuratissima!

Page 130: Prof. Raffaella Folgieri

IL SEMANTIC WEB E’ il momento di introdurre un altro sistema intelligente.

Abbiamo visto come funzionano i chatbot, che possiamo considerare modelli semplici di intelligenza simulata.

Un argomento che sta diventando sempre più importante è rappresentato dal web semantico. Argomento strettamente collegato sono le ontologie (provate a “giocare” con protegè http://protege.stanford.edu/).

Guardate prima questo video introduttivo, semplice ed interessante: http://www.youtube.com/watch?v=rhgUDGtT2EM&feature=related

Completate la visione a casa… Non tratteremo il semantic web per motivi di tempo, ma vi consiglio di approfondire l’argomento.

Page 131: Prof. Raffaella Folgieri

“Facilità” è la parola chiave, che ci porta subito all’idea che sarebbe bello poter interagire (effettuare ricerche) con un linguaggio naturale (vicino all’uomo) comprensibile correttamente (sintatticamente e semanticamente) dalla macchina. Per garantire da subito un certo grado di interazione, il WWW (non confondiamo www con Internet) è poggiato su protocolli che ne definiscono i meccanismi:

• il meccanismo degli Uniform Resource Identifier (URI)• il protocollo Hypertext Transfer Protocol (HTTP)• il linguaggio HyperText Markup Language (HTML)• il linguaggio eXtensible Markup Language (XML)

Alcuni sono noti a tutti o ai più (http, HTML, XML), altri (URI) non sono così ben conosciuti…

Page 132: Prof. Raffaella Folgieri

Inizialmente il WWW era costituito da una collezione di testi e indici ipertestuali. Con l’avvento dei motori di ricerca, c’è stata la possibilità di accedere direttamente ai contenuti dei testi presenti in Rete. Le strutture dei siti sono diventate sempre più articolate e la crescita del WWW è avvenuta in modo esponenziale. La quantità di informazioni presenti su Rete ha generato un vero e proprio caos nella ricerca di informazioni ed è sempre più difficile trovare proprio quella che ci interessa. Per trovare un documento o un’informazione oggi si devono seguire i link – surfare - (molto tempo e difficoltà iniziali) oppure servirsi di un motore di ricerca (più semplice ma si hanno molti falsi positivi). Un altro limite del web è rappresentato dalla scarsa integrazione delle informazioni.

Page 133: Prof. Raffaella Folgieri

IL WEB SEMANTICO: MOTIVAZIONI La motivazione più forte per l’implementazione del web semantico è la possibilità di integrazione delle informazioni.

Interoperabilità: due applicazioni sono considerate interoperabili se possono scambiare dati e servizi in modo consistente ed efficiente, permettendo la comunicazione tra hardware e software eterogenei.

Facciamo un esempio: “come posso arrivare a Roma il 3 Agosto, partendo da Milano il 2 e fermandomi a Firenze per visitare gli Uffizi?”… è semplice da capire per gli umani, ma non lo è per una macchina.

Page 134: Prof. Raffaella Folgieri

“Nella seconda parte del sogno, le collaborazioni si estendono ai computer. Le macchine diventano capaci di analizzare tutti i dati sul Web – il contenuto, i link e le transazioni tra le persone ed i computer. Un “Web Semantico”, che dovrebbe rendere questo possibile, deve ancora emergere, ma quando lo farà, i meccanismi quotidiani del commercio, della burocrazia, e delle nostre vite quotidiane saranno gestiti da macchine che interagiscono con macchine, lasciando agli umani il compito di fornire l’ispirazione e l’intuizione. Compariranno quegli “agenti intelligenti” sui quali la gente ha fantasticato per anni. Questo Web in grado di essere compreso dalle macchine nascerà dall’implementazione di una serie di progressi tecnici e accordi sociali che stanno cominciando già a manifestarsi” Tim Berners – Lee, Weaving the Web

Page 135: Prof. Raffaella Folgieri

I PRINCIPI DEL SEMANTIC WEB È inteso come un’estensione del WWW come lo conosciamo e intende essere una piattaforma universale di dati condivisi e utilizzabili sia da esseri umani che da applicazioni automatiche.

Alle informazioni è associata una semantica che permette una migliore interazione tra macchine e persone.

Per introdurre il web semantico possiamo porre un parallelo tra questo e il WWW attuale.

Page 136: Prof. Raffaella Folgieri

WEB SEMANTIC WEB Informazioni prive di struttura semantica

Alle risorse è associata una struttura semantica

La semantica è comprensibile dagli esseri umani

Risorse e relazioni hanno specifici significati

Le applicazioni possono comprendere solo la sintassi

La semantica è comprensibile anche dalle applicazioni

Schematicamente: Schematicamente:

Page 137: Prof. Raffaella Folgieri

Ovviamente non solo la semantica deve essere chiara, ma anche la sintassi deve essere condivisa!

Quindi occorre adottare degli standard per rappresentare formalmente i metadati che descrivono le informazioni e stabilire come strutturare i meccanismi di “ragionamento” sui dati.

Certamente questa concezione va adottata a monte, e cioè nel momento dell’archiviazione dei dati.

Page 138: Prof. Raffaella Folgieri

Rispetto al WEB di prima generazione, nel WEB semantico il markup language adottato sarà

l’XML (contro l’attuale HTML); i documenti sono strutturati e con un significato non

implicito ma espresso esplicitamente attraverso i metadati;

i documenti diventano dinamici e sarà agevolata la decomposizione e la ricomposizione delle informazioni, attraverso l’aggregazione e l’adattamento dei contenuti (syndacation).

Page 139: Prof. Raffaella Folgieri

In tal modo il controllo di produzione delle informazioni sarà decentralizzato (peer-to-peer) e i dati saranno fruibili sia per gli uomini che per le macchine e per le applicazioni (web service). Gli obiettivi del gruppo di ricerca del W3C sul Semantic Web sono quelli di creare una piattaforma efficiente per condividere e riutilizzare la conoscenza (W3C http://www.w3.org/2001/sw/ ) permettendo l’integrazione di contenuti provenienti da fonti diverse e rendendo l’informazione accessibile e comprensibile anche da parte di agenti software.

Ci sono molte applicazioni che trarrebbero indubbio beneficio da questo approccio: pensiamo ad esempio all’e-commerce, al knowledge Management, a tutte le applicazioni di information retrieval…

Page 140: Prof. Raffaella Folgieri

LA SEMANTIC LAYER CAKE L’esigenza di descrivere le informazioni mediante metadati (dati che descrivono i dati – meccanismo di implementazione della semantica), introduce la necessità di creare classi e schemi di riferimento. In questo senso, distinguiamo:

- le ontologie: i metadati sono strutturati in base ad un dato ordine logico. Vengono espresse le relazioni tra i metadati

- i metadati: descrivono i dati riportandoli ai concetti dello schema

- i dati: le informazioni distribuite nel Web

Page 141: Prof. Raffaella Folgieri

Se colleghiamo quanto scritto al fatto che occorrono dei protocolli, degli standard, condivisi per la realizzazione del Web Semantico, è facilmente comprensibile come il Semantic Web sia concepito a strati sovrapposti di linguaggi, in cui ogni strato usa o estende i precedenti.

Analizziamo  i  componenti  della  “Semantic  Web  Layer Cake” disegnata da Barners‐Lee nel 2003… 

Page 142: Prof. Raffaella Folgieri
Page 143: Prof. Raffaella Folgieri

Universal resource identifier: URI Tutte le risorse presenti sul Web posseggono un URI, ovvero un identificatore universale.

Quello più conosciuto è l’URL (Universal Resource Locator).

URI è un acronimo più generico, rispetto ad URL e rappresenta una stringa che identifica univocamente una risorsa, rendendola disponibile attraverso vari protocolli (http, ftp, ecc.).

Page 144: Prof. Raffaella Folgieri

Gli URI si dividono in URL o URN: - URL: un URI che, oltre a identificare la risorsa, fornisce il

modo per accedere alla sua ubicazione (es. http://www.mtcube.com è ottenibile via http da un host in Rete il cui nome è www.mtcube.com)

- URN (Uniform Resource Name): un URI che identifica la risorsa mediante un nome in uno specifico dominio di nomi, non fornendone l’ubicazione (es. gli isbn)

Gli URI assoluti si scrivono secondo la seguente sintassi <scheme>:<scheme-specific-part>, che contiene il nome dello schema usato (<scheme>) seguito dai due punti (":") e quindi da una stringa (<scheme-specific-part>) la cui interpretazione dipende dallo schema.

Page 145: Prof. Raffaella Folgieri

Esempi di URI (da Wikipedia) ftp://ftp.is.co.za/rfc/rfc1808.txt -- schema per servizi FTP http://www.math.uio.no/faq/compression-faq/part1.html --

schema per servizi HTTP mailto:[email protected] -- schema per indirizzi di posta

elettronica news:comp.infosystems.www.servers.unix -- schema per

newsgroup e articoli Usenet telnet://melvyl.ucop.edu/ -- schema per servizi interattivi

telnet irc://irc.freenode.net/wikipedia-it -- schema per IRC

Page 146: Prof. Raffaella Folgieri

I metadati e l’XML Per rappresentare i metadati si utilizza l’XML (eXtensible Markup Language) un metalinguaggio che utilizza i tag, come l’HTML e l’AIML che abbiamo visto, poiché deriva da SGML (Standard Generalized Markup Language).

I tag non sono definiti, ma ogni utente può definire quelli più adatti alle proprie esigenze, ed è indipendente dalla piattaforma di utilizzo.

Page 147: Prof. Raffaella Folgieri

Ecco un esempio: <Frase> <Persona homepage=http://www.mtcube.com/#RaffaellaFolgieri>Io </Persona> ha appena acquistato un <Animale>criceto</Animale> </Frase> “Frase”, “Persona”, “Animale” sono utilizzati come nomi dei tag per associare significato agli elementi. Il significato c’è, però, solo per chi riconosce e condivide i termini. Non vi è semantica.

Page 148: Prof. Raffaella Folgieri

Se, invece, scrivessimo: <dmm> <nge homepage=” http://www.mtcube.com/#RaffaellaFolgieri”>Io</nge> ho appena acquistato un <hyp>criceto</hyp> </dmm> un computer riconoscerebbe la stessa struttura della frase scritta precedentemente che, tuttavia, cambierebbe il significato per le persone che non condividerebbero i termini dmm, nge, hyp. Dunque la grammatica è semplice ma non vi è ancora semantica o interoperabilità. XML aggiunge la struttura sintattica ai documenti, ma non ne fornisce la semantica. Qui: http://xml.webmasterpoint.org/guida-xml-base-pratica/ potete trovare una guida su XML che comincia dalle basi (per i principianti) e poi espande gli argomenti fino a livelli più avanzati.

Page 149: Prof. Raffaella Folgieri

ONTOLOGIE Tralasciando gli altri strati della Web Semantic Cake, troviamo le ONTOLOGIE.

La parola “ontologia” ha vari significati. In Filosofia è una branca della metafisica.

In AI indica la specificazione di una concettualizzazione cioè una descrizione formale di un insieme di concetti e delle relazioni che intercorrono tra questi.

Le componenti di un dominio sono, cioè, classificate tassonomicamente mediante un’ontologia, in classi e sottoclassi. “Un’ontologia e’ una collezione di frasi che definiscono le relazioni tra concetti e specificano le regole logiche” [Tim Berners-Lee, 99]

Page 150: Prof. Raffaella Folgieri

Si possono distinguere diversi tipi di ontologie (approfondire): - Top level ontology - Domain ontology - Task ontology - Application ontology

Un’ontologia è un documento che definisce in modo formale le relazioni tra i termini di un dominio di conoscenza.

Ad esempio l’ontologia del dominio “Università” conterrà la definizione di professore, ricercatore, studente, esame, e via dicendo.

L’ontologia è una tassonomia accompagnata da regole di inferenza per esprimerne la conoscenza.

Page 151: Prof. Raffaella Folgieri

I linguaggi utilizzati per esprimere le ontologie nel Semantic Web sono vari; tra questi è utile ricordare:

- RDFS (Resource Description Framework Schema), costituito da un vocabolario che permette di definire le classi delle risorse, le relazioni di sottoclasse, e di specificare eventuali restrizioni sulle classi.

- OIL (Ontology Inference Layer), presenta un approccio multilivello, basato su gerarchia stratificata. Pur presentando il vantaggio di verificare la consistenza di tutte le definizioni ontologiche per scoprire i legami fra le sottoclassi, tuttavia ha un numero limitato e immutabile di proprietà e non supporta domini concreti (come interi e stringhe). (continua)

Page 152: Prof. Raffaella Folgieri

- DAML (Darpa Agent Markup Language), promosso dall’agenzia Darpa (USA), combina varie caratteristiche. Costruito su RDF, lo integra con elementi di logica descrittiva e permette l’espressione e l’interpretazione della classificazione, delle asserzioni e delle proprietà dei metadati rappresentati da RDF e RDFS.

- OWL (Ontology Web Language), che vedremo nel dettaglio.

Page 153: Prof. Raffaella Folgieri

Gli elementi delle ontologie sono: - classi, in genere organizzate in tassonomie (relazioni di

specializzazione e generalizzazione), vengono utilizzate per descrivere i concetti che si vogliono rappresentare

- proprietà e attributi, che rappresentano le relazioni esistenti tra le classi

- assiomi: utilizzati per dichiarare esplicitamente espressioni vere sempre

- individui (detti anche istanze): sono i singoli oggetti contenuti in una classe

Page 154: Prof. Raffaella Folgieri

esempi: classi: madre, padre attributi: le madri sono (is_a) genitori (is_a) definisce una gerarchia tra concetti: un concetto

specifico eredita le proprietà del concetto più generale che lo sussume. È anche possibile definire altre proprietà più complesse (es. ha_figli), specificando attributi che ne vincolano l'applicazione: (1,n) può indicare una restrizione di cardinalità.

assioma: una relazione disjoint tra PADRE e MADRE indica che un elemento della classe PADRE non potrà in nessun caso essere elemento anche della classe MADRE

istanze: Maria, Grazia, Paolo…

Page 155: Prof. Raffaella Folgieri

Per creare un’ontologia non esiste una “ricetta” univoca, ma è possibile adottare un approccio top-down (dalla definizione dei concetti generali alla loro specializzazione) o bottom-up (si creano le classi più specifiche e poi le si raggruppa).

In generale occorrerà sempre procedere ordinatamente determinando, innazitutto il dominio e lo scopo dell’ontologia; poi considerare la possibilità di riutilizzare ontologie esistenti; elencare i termini principali dell’ontologia; definire classi e gerarchie; definire le proprietà delle classi; definire vincoli sulle proprietà; creare le istanze.

Come detto per i bot, la cosa importante è soffermarsi a progettare accuratamente! Se volete cimentarvi nella creazione di un’ontologia e - perché no? – di un’applicazione basata su Web Semantico, ecco riferimenti utili:

Page 156: Prof. Raffaella Folgieri

Come costruire un’ontologia: http://protege.stanford.edu/publications/ontology_development/ontology101.html

Manuale di utilizzo di Protégé (OWL-compatible): http://protege.stanford.edu/doc/users_guide/index.html

Download Protégé (versione 3.0): http://protege.stanford.edu/

Non lo vedremo durante il corso, perché ci concentreremo, come ho detto più volte, sull'AI sub-simbolica e in particolare sul Machine Learning, di cui vedremo le RETI NEURALI

Page 157: Prof. Raffaella Folgieri

Alcuni consigli per creare una buona ontologia: - limitate lo scopo. Non tutte le possibili informazioni su un

dominio devono essere contenute nell’ontologia. È sufficiente limitarsi ai concetti richiesti dall’applicazione e specificare, per ogni classe, le proprietà salienti richieste dall’applicazione.

- Numero delle classi: se una classe ha solo una sottoclasse, forse avete un problema di modellazione. Probabilmente l’ontologia non è completa. Idem se una classe ha più di una dozzina di figli: magari potete creare raggruppamenti.

- Distinguete tra classe e proprietà. Se una distinzione ha importanza nel dominio, allora conviene creare una nuova classe.

- Garantite una corretta gerarchia delle classi. Una sottoclasse deve esprimere il concetto che sia un “possibile tipo” di una

superclasse. Le relazioni gerarchiche sono transitive.

Page 158: Prof. Raffaella Folgieri

“Ho un sogno per il Web … ed esso è diviso in due parti. Nella prima parte, il Web diventa un mezzo molto più potente per la collaborazione tra le persone. Ho sempre immaginato lo spazio delle informazioni come qualcosa cui chiunque potesse avere accesso immediato ed intuitivo, e non solo di consultarlo, ma di crearlo. […]

Inoltre, il sogno della comunicazione tra le persone, attraverso la condivisione della conoscenza, deve essere possibile per gruppi di ogni dimensione, interagenti elettronicamente con la facilità con la quale essi comunicano di persona”.

Tim Berners – Lee, Weaving the Web

Page 159: Prof. Raffaella Folgieri

Discussione 2: Uno per tutti, tutti per uno?

“La gente esagera il valore delle cose che non ha: tutti venerano la verità e l'altruismo perché non ne hanno alcuna esperienza.” (Bernard Shaw)

"Può la selezione naturale averci fatto automaticamente cooperativi e non egoisti o invece l'apparente altruismo non è altro che una versione artificiosamente camuffata dell'ognuno per sé?”(Lewontin, sull’altruismo)

Page 160: Prof. Raffaella Folgieri

L’imperativo “condividi” (share) dei social network e di Internet in generale ci ha resi più altruisti? Le nuove tecnologie, che ci permettono di condividere, hanno reso gli esseri umani prosociali? Vi sono esempi evidenti di altruismo dettato/favorito dalla tecnologia?

Page 161: Prof. Raffaella Folgieri

Cosa si intende per altruismo? Senza entrare in discussioni etiche o morali, e senza addentrarsi nella filosofia, comune accezione: altruismo è comportamento generoso, collaborativo e disinteressato che uno o più individui attuano nei confronti degli altri.

La parola “altruista” derivazione di “altrui” su modello del francese “altruisme” (A. Comte, 1830)

Pensiero di Comte (padre della corrente positivistica): l’altruismo è un istinto umano al pari dell’egoismo (l’uno è fondamentale per la conservazione della specie, l’altro è espressione dell’istinto di conservazione del singolo). Comte teorizzò che l’altruismo abbia giocato un ruolo rilevante nel mantenimento e nello sviluppo sociale del genere umano.

Page 162: Prof. Raffaella Folgieri

L’aspetto sociologico e quello biologico esprimono i rapporti tra individui, tra macchine, e tra macchine e individui. Specie animali molti comportamenti collaborativi/altruistici: apparentemente in contrasto con la teoria evolutiva (Darwin), basata sulla competizione (egoismo) per la sopravvivenza dell’individuo che ha più capacità di adattamento. Moderna biologia evolutiva: ha mutuato i modelli della teoria dei giochi1, sviluppando concetti (quali le strategie evolutivamente stabili), che hanno evidenziato come i comportamenti apparentemente altruistici siano sempre riconducibili a motivi di convenienza per il miglioramento genetico dell’individuo.

1 La teoria dei giochi è una scienza matematica che studia i modelli sottesi alle situazioni di conflitto, cercandone soluzioni competitive e cooperative. Consiste, dunque, nell’analisi delle decisioni degli individui nell’interazione con altri soggetti rivali, in modo da stabilire se le decisioni di uno possano influire sui risultati raggiungibili dall’altro/i realizzando un meccanismo di retroazione, il cui obiettivo è il massimo guadagno dell’individuo.

Page 163: Prof. Raffaella Folgieri

Molti sociologi ritengono che non esiste una forma di altruismo totalmente priva di interesse fra gli esseri umani:

è sempre possibile individuare un beneficio di ritorno per l’azione altruistica, anche se di natura intangibile

(ad esempio appagamento, autorealizzazione).

Page 164: Prof. Raffaella Folgieri

Se questo avviene per le intelligenze naturali, cioè nei sistemi biologici, cosa avviene nel caso delle intelligenze e dei sistemi sociali artificiali?

Page 165: Prof. Raffaella Folgieri

Una branca dell’AI studia i sistemi di vita artificiale collettiva (artificial life – ne parleremo), per riprodurre (e analizzare) i meccanismi del comportamento sociale umano e animale, ma soprattutto per verificare similitudini sotto analoghe condizioni. Molti studi sui sistemi collettivi artificiali, mostrano che l’ottimizzazione delle prestazioni dei sistemi richiede, spesso, altruismo, nonostante gli agenti incorrono in un costo maggiore, non conveniente per il sistema. Alcuni esperimenti di artificial life propongono lo studio di individui artificiali ispirati a strategie biologiche. Gli agenti apprendono la strategia cooperativa più adatta ad ambienti diversi per mezzo di un algoritmo di apprendimento per rinforzo. I risultati della simulazione mostrano come il sistema multi-agente apprende comportamenti altruistici stabili, ottenendo prestazioni ottimali (o prossime alle) in ambienti sconosciuti e mutevoli.

Page 166: Prof. Raffaella Folgieri

Sembrerebbe che la vita artificiale sia più altruistica di quella biologica… Tuttavia, la chiusura degli agenti altruisti nei confronti di quelli egoisti non denota un certo non so che di egoismo?

Se si accetta la tesi che l’essere umano non fa nulla di altruistico se non ne ha tornaconto (tangibile o meno), allora perché così tante persone al mondo condividono pensieri, conoscenza, emozioni su Internet?

Page 167: Prof. Raffaella Folgieri

Sarebbe bello pensare che i social network ed il concetto di intelligenza collettiva ci abbiano reso altruistici ma… le motivazioni che hanno portato alla creazione dei social network (si pensi al più famoso) risiedono nel voler creare un “album di fotografie” on line, anzi, un palco da cui le persone possano presentarsi ed essere votate, accrescendo (o meno) e misurando la propria popolarità.

Nel caso dei social network, uno dei motivi più forti che spingono a condividere ha sfondo, tutto sommato, narcisistico: i “15 minuti di popolarità”2 alla portata di tutti, e praticamente inestinguibili.

2 Andy Warhol, 1968

Page 168: Prof. Raffaella Folgieri

E il web? O ancora il web semantico? E l’enciclopedia collettiva più ampia del mondo?

Page 169: Prof. Raffaella Folgieri

Molti contributi sono frutto del desiderio di raccontarsi o di raccontare le proprie competenze, non senza un tornaconto di gloria o economico.

Un merito che potremmo attribuire a queste due espressioni di libero pensiero e libera parola è forse quello di rendere ciascuno più sicuro di sé: tutti hanno qualcosa da dire e qualunque cosa, anche se apparentemente insignificante, può contribuire a conservare la traccia lasciata da una civiltà. Non più “cogito, ergo sum”, ma “comunico, ergo sum”.

Pubblicare qualcosa aumenta la reputazione di un individuo, e la reputazione, in una collettività, è importante3. Gli individui ricevono sostegno in base alla reputazione posseduta.

3 A tal proposito è interessante il risultato dello studio di Daniel J. Rankin e Franziska Eggimann, pubblicato sui «Proceedings of the Royal Society B»

Page 170: Prof. Raffaella Folgieri

Rankin ed Eggiman hanno condotto una simulazione coinvolgendo 250 soggetti, annotando il comportamento del gruppo verso chi agiva generosamente (aiutava qualcuno), chi si guadagnava cattiva fama, e gli effetti di questo sulla collettività. Risultati: le azioni deprecabili restano più a lungo nella memoria, rispetto a quelle edificanti. Di contro, una buona reputazione non dura a lungo, ma basta una sola azione egoistica per cancellare il ricordo di molte altre altruiste. Chi aiuta è aiutato sempre di più, mentre chi pensa solo a se stesso viene emarginato rapidamente (visto che non aiutare chi ha una cattiva reputazione, non danneggia la propria). Secondo i due ricercatori, questo sistema stimola la cooperazione e migliora la società.

Page 171: Prof. Raffaella Folgieri

Nonostante ciò, non si può affermare che alla base vi sia un comportamento altruistico, bensì una molla egoistica (la reputazione), che spinge verso una cooperazione di convenienza per il gruppo.

Si può concludere che i social network e la condivisione della conoscenza producono un effetto benefico per la Società, facendo leva sul nostro egoismo e sul nostro desiderio di conquistare una reputazione, tuttavia senza renderci altruistici.

Page 172: Prof. Raffaella Folgieri

Tralasciando (per non addentrarsi nella filosofia della religione) alcune delle religioni maggiori (Cristianesimo, Buddismo, Taoismo), che hanno fatto dell’altruismo uno dei pensieri fondanti, vi sono altre comunità il cui scopo è dettato dal desiderio di aiutare gli altri disinteressatamente?

Page 173: Prof. Raffaella Folgieri

Prendiamo l’esempio del mondo accademico… Gli accademici non possono, sovente, permettersi l’altruismo. Forse occorrerebbe modificare i meccanismi di carriera, o forse (chissà) indurre chi fa ricerca a cambiare mentalità (o Paese?). L’autostima del genere umano, riguardo l’altruismo, è sempre stata molto bassa. La scienza non ha contribuito a renderci più confidenti nella capacità di dimostrarci altruisti. Si pensi alla metafora di Dawkins (Il gene egoista). La nostra società (lo sanno bene gli economisti) è basata sul do ut des. Anche in una famiglia vale questo principio.

Page 174: Prof. Raffaella Folgieri

Charles Darwin, ne L’origine dell’uomo (1871), era consapevole del ruolo della cooperazione nella storia dell’evoluzione umana: “L’insufficienza di forza e di velocità dell’uomo, la sua carenza di armi naturali e così via sono più che controbilanciate dalle sue… qualità sociali, che lo portano a dare e ricevere l’aiuto dai suoi consimili”. Molti sostenitori della teoria darwiniana sottolinearono gli aspetti più egoistici della selezione naturale. Per contraddirli, il biologo russo Peter Kropotkin scrisse il libro “Mutual Aid. A factor of Evolution.” (1902), considerato dal Times come “il libro probabilmente più importante dell’anno”. Tuttavia, se anche un considerevole numero di studi mostri come le antiche e moderne società, gli animali, e perfino le cellule, esibiscano comportamenti cooperativi, il rovescio della medaglia risulta il pericolo che la cooperazione sia minacciata dallo sfruttamento.

Page 175: Prof. Raffaella Folgieri

L’antropologo Robert L. Trivers, della Rutgers University (New Brunswick, New Jersey), mutuando dalla teoria dei giochi la metafora nota come “Dilemma del prigioniero”, dimostra che vi è notevole differenza tra ciò che è bene dal punto di vista individuale e ciò che lo è dal punto di vista collettivo, differenza che mina il successo di quasi tutte le forme di cooperazione, inclusi il commercio e l’aiuto reciproco. Altri autori hanno condotto importanti studi sull’altruismo. Alcuni suggeriscono di distinguere tra altruismo biologico (fitness – successo riproduttivo) e altruismo reale (intenzione consapevole di aiutare il prossimo).

Page 176: Prof. Raffaella Folgieri

Le nuove tecnologie che ci permettono di condividere ci hanno reso prosociali, ma, tuttavia, facendo leva sull’egoismo individuale e sul desiderio di notorietà.

Abbiamo evidenziato che alcuni sistemi artificiali si dimostrano più altruisti di quanto non siano i sistemi biologici. Un esempio sono i mini-robot sviluppati all’Università di Losanna, che hanno sviluppato un sistema di avvertimento del pericolo a beneficio gli uni degli altri.

Page 177: Prof. Raffaella Folgieri

Resta un’ultima domanda cui rispondere, tra quelle poste all’inizio: vi sono esempi evidenti di altruismo dettato/favorito dalla tecnologia?

Page 178: Prof. Raffaella Folgieri

SI’: il software open source. A parte Stallman4, che non tutti conoscono, e Linux Torvalds (il creatore di Linux), non si può dire che il software libero dia notorietà a chi lo crea. Certamente è fonte di guadagno, ma gli obiettivi primari sono il libero studio e la possibilità di apportare modifiche ad un software. Trae vantaggio dall’intelligenza collettiva.

All’open source si è ispirato l’open content (contenuti aperti, Wikipedia), che ha l’obiettivo di mettere a disposizione contenuti editoriali (testi, immagini, video, musica).

4 portabandiera del software libero e fondatore, nel 1985 della Free Software Foundation (FSF), organizzazione senza fini di lucro per lo sviluppo e la distribuzione di software libero

Page 179: Prof. Raffaella Folgieri

Ci si deve domandare: “uno per tutti, tutti per uno od ognuno per sé?”.

Page 180: Prof. Raffaella Folgieri

La conclusione cui si è giunti è che le tecnologie ci aiutano ad essere altruisti, o quantomeno cooperativi, o almeno producono effetti che fanno leva sul nostro egoismo per ottenere beneficio altrui, collettivo.

Inoltre le tecnologie sono costruite dall’uomo (che evidentemente vuole riscattare la sua natura egoistica) secondo modelli altruistici, facendo ben sperare per l’evoluzione futura dell’umanità.

Dal canto loro, i sistemi artificiali hanno già superato la prova, dimostrando di poter sviluppare autonomamente meccanismi altruistici e cooperativi per il bene della collettività (sintetica).

Page 181: Prof. Raffaella Folgieri

Cosa accadrà se e quando (si pensi ai robot che già oggi operano come infermieri in Giappone) i sistemi artificiali e quelli biologici conviveranno in un unico sistema sociale? https://www.youtube.com/watch?v=70Ov_JXDLkg

Page 182: Prof. Raffaella Folgieri

NOTE FINALI

«In futuro ciascuno avrà 15 minuti di fama». Lo profetizzò Andy Warhol nel 1968. Alcuni ritengono che lo slogan sia un adattamento dalla teoria di Marshal McLuhan sulle differenze tra la televisione e gli altri media (al lettore l’approfondimento del caso).

Richard Dawkins, nel descrivere i geni come egoisti, non intende affermare che siano guidati da motivi o volontà, ma che i loro effetti possono essere descritti come se lo fossero. Vengono, cioè, trasmessi solo i geni le cui conseguenze servono per i loro stessi interessi (continuare ad essere replicati).

Page 183: Prof. Raffaella Folgieri

Il “Dilemma del prigioniero” risale ai primi anni ’50. Vi sono due prigionieri e a ciascuno viene chiesto se l’altro abbia commesso un crimine. La pena dipende dal fatto che uno dei due, entrambi o nessuno dichiari la colpevolezza dell’altro. In pratica, i due prigionieri devono solo scegliere se vogliono o non vogliono cooperare l’uno con l’altro. Più punti ottengono, minore sarà la pena. Se entrambi i prigionieri decidono di cooperare ottengono tre punti ciascuno. Se entrambi non cooperano, ottengono solo un punto. Se un prigioniero non coopera e l’altro sì, chi non coopera riceve 5 punti, mentre chi coopera non riceve alcun punto. I due prigionieri non possono accordarsi tra loro. Non fidandosi l’uno dell’altro, entrambi decideranno di non cooperare e riceveranno solo un punto ciascuno. La ricompensa per la reciproca cooperazione è maggiore della punizione per la reciproca defezione (se non cooperano), ma una defezione unilaterale è più remunerativa della ricompensa e fa fare al cooperante sfruttato la figura dello sciocco (peggio di una punizione). La mossa migliore è, quindi, sempre non cooperare e, dunque, la logica porta sempre alla reciproca non cooperazione.

Page 184: Prof. Raffaella Folgieri

LE ARTIFICIAL NEURAL NETWORK (ANN) Se nella prima parte del corso ci siamo occupati puramente di logica e di rappresentazione non biologica della conoscenza, ora ci addentreremo in un tipo di rappresentazione e di AI più strettamente legata all’intelligenza biologica da cui trae spunto: le reti neurali.

Ogni trattazione sulle reti neurali inizia con un’immagine del neurone biologico, che ha ispirato i modelli di neurone artificiale.

Page 185: Prof. Raffaella Folgieri
Page 186: Prof. Raffaella Folgieri

Un neurone (cellula nervosa) è l’unità fondamentale del sistema nervoso (tutto, cervello incluso). In un neurone si distinguono:

- Il corpo cellulare (soma) che contiene il nucleo cellulare.

- Dal corpo cellulare si ramifica un gran numero di fibre (i dendriti) ed una singola fibra lunga (l’assone).

- I dendriti si ramificano in una rete attorno alla cellula (simile ad un cespuglio) e l’assone si allunga in genere di circa un centimetro (ma in casi estremi moto di più).

- Verso la sua estremità l’assone si suddivide in ramificazioni che si connettono ai dendriti ed ai corpi cellulari di altri neuroni, attraverso una giunzione (collegamento) che prende il nome di sinapsi. Ogni neurone forma sinapsi con altri neuroni (da una dozzina ad un centinaio di migliaia).

Page 187: Prof. Raffaella Folgieri

I neuroni trasmettono un segnale elettrico lungo gli assoni.

Tra il terminale di un assone e la cellula che riceverà il segnale sussiste uno spazio (fessura sinaptica), che viene superato dai segnali grazie a sostanze chimiche dette neurotrasmettitori.

Quando un segnale elettrico arriva in prossimità, le sinapsi rilasciano i neurotrasmettitori.

Semplificando, possiamo dire che la quantità di neurotrasmettitore rilasciato determina la conduttività della sinapsi (cioè quanto attenui o esalti il segnale elettrico proveniente dall’assone).

Il neurone a valle della fessura sinaptica è dotato di recettori in grado di intercettare il neuromodulatore: si generano correnti locali nei pressi della sinapsi che possono sommarsi nello spazio e nel tempo in prossimità dei dendriti e del neurone.

Page 188: Prof. Raffaella Folgieri

Quando la somma delle correnti che arriva alla base dell’assone si rivela superiore ad una data soglia, viene generato un impulso (spike) di corrente di breve durata (da 2 a 5 millisecondi).

Lo spike si propaga attraverso l’assone verso le sinapsi e, quando le raggiunge, queste rilasciano i neurotrasmettitori, dando il via alla ripetizione dell’intero processo per i neuroni collegati a valle.

In una rete neurale artificiale i neuroni sono unità che elaborano in modo semplice i segnali ricevuti in ingresso da altri neuroni.

Le sinapsi sono connessioni tra le unità ed il segnale elettrico è un numero (solitamente compreso nell’intervallo [0,1]).

La conduttività delle sinapsi è data dal peso della connessione (solitamente indicato con w), un numero il cui effetto sul segnale si ottiene moltiplicando il segnale per il peso stesso, prima che sia raggiunta l’unità successiva.

Page 189: Prof. Raffaella Folgieri

Per portare un esempio semplice, se x è il segnale che si muove lungo la connessione tra due neuroni e w è il peso della connessione, il segnale "pesato" sarà dato da w*x. Le unità dunque calcolano il potenziale di attivazione e si attivano.

Il calcolo del potenziale di attivazione è dato dalla somma dei segnali pesati che arrivano dagli altri neuroni.

Vediamo il processo in un modo più formale. Abbiamo n canali di ingresso x1, …, xn ad ognuno dei quali è associato un peso wi, ovvero un numero reale che riproduce la sinapsi. Se wi > 0, il canale è eccitatorio, se wi < 0, il canale si dice inibitorio.

Il valore assoluto di di un peso rappresenta la forza della connessione.

Page 190: Prof. Raffaella Folgieri

L’output, cioè il segnale con cui il neurone trasmette la sua attività all’esterno, è calcolata applicando una funzione di attivazione alla somma pesata degli ingressi.

Page 191: Prof. Raffaella Folgieri

Indicando con

n

iii xwa

1 la somma pesata degli ingressi, si ha

n

iii xwfafy

1

)()(

La somma pesata degli input in letteratura è spesso indicata con la parola net.

Il calcolo del segnale da inviare alle altre unità sulla base del segnale di attivazione è effettuato mediante funzioni matematiche dette funzioni di trasferimento.

La soglia di fatto abbassa il valore di ingresso della funzione di attivazione, quindi può essere vista come un peso associato ad un ulteriore canale di ingresso x0, che ha un valore costante pari a -1.

Page 192: Prof. Raffaella Folgieri

La formula allora diventa

n

iii xwfafy

0)()(

in cui w0= cui corrisponde il modello illustrato nella figura che segue:

Page 193: Prof. Raffaella Folgieri

A volte non si considera la soglia ma il suo opposto (bias) che può essere visto come il peso di un canale di input con valore costante pari a 1. In questo caso, indicando il bias con la lettera

b, la formula diventa

n

iii xwfafy

0)()(

in cui x0=1 e w0 = b

È possibile adottare diversi tipi di funzioni di trasferimento, che caratterizzano il tipo di unità che ne fa uso. Vedremo le più utilizzate.

Page 194: Prof. Raffaella Folgieri

Le funzioni di attivazione 

Ricordiamo che abbiamo definito con a il livello di attivazione e quindi con f(a) la funzione di attivazione che entra in gioco a seconda del valore del livello.

a può essere un numero reale che può anche apparterene ad un dato intervallo (per esempio [0,1]) oppure può essere un numero appartenente ad un insieme discreto (di solito {0,1} oppure {-1,+1}).

Page 195: Prof. Raffaella Folgieri

Funzione binaria a soglia L’uscita (y) assume i valori:

0001

asease

y

Il grafico corrispondente è:

Se vogliamo evidenziare il contributo x0, scorporandolo dal livello di attivazione, il grafico diventa:

e, corrispondentemente, la formula sarà:

ase

xwseyn

iii

0

11

Page 196: Prof. Raffaella Folgieri

Funzione lineare

f(a) = a

Page 197: Prof. Raffaella Folgieri

Funzione lineare a tratti

5.015.05.05.0

5.00

aseasea

asey

Page 198: Prof. Raffaella Folgieri

Funzione sigmoidale La funzione ha la seguente equazione:

e è il numero di Nepero (vale circa 2,718281828) che gode di una serie di proprietà che potete approfondire facilmente in Rete. Il grafico della funzione è una versione senza discontinuità della funzione binaria: 

p

p

ee

a 11

11

1

Page 199: Prof. Raffaella Folgieri

Funzione segno Le funzioni di attivazione viste, eccezion fatta per la funzione lineare, assumono valori compresi tra 0 e +1. È tuttavia possibile ridefinire la funzione a soglia in modo che possa assumere valori compresi tra–1 e +1. La funzione a soglia viene ridefinita così:

010001

aseasease

y

Page 200: Prof. Raffaella Folgieri

ANN: cenni storici Abbiamo visto, per ora, i principi generali che occorrono per poter comprendere le ANN. La bellezza delle reti neurali risiede nella semplicità del meccanismo. Ma come si è arrivati a queste implementazioni in AI?

Abbiamo visto che la rete neurale artificiale è un tentativo di riprodurre la struttura di base di un rete neurale del cervello umano. A differenza dei modelli dell’AI classica, si assiste ad un vero e proprio modello che simula i meccanismi del cervello umano.

Nel modello di AI classica si ha un motore centrale (è l’analogia con il cervello) che analizza le diverse strategie possibili e decide quale sia la migliore; in una rete neurale non vi è un decisore centrale, ma la decisione è il risultato di un lavoro cooperativo e distribuito tra tutte le unità di base (i neuroni).

Page 201: Prof. Raffaella Folgieri

Questo modello è chiaramente applicabile non solo alle decisioni, ma anche a tutti i tipi di rappresentazione della conoscenza.

Dopo un iniziale periodo di entusiasmo, la ricerca in questo campo ha attraversato un periodo di difficoltà, durante il quale il supporto professionale ed economico fu minimo, ed i progressi più importanti furono realizzati da una relativamente ristretta cerchia di ricercatori.

Agli inizi degli anni ’40, il neurofisiologo Warren McCulloch ed il logico Walter Pitts elaborano un modello formale dell’attività dei neuroni e ne riproducono, per la prima volta, uno artificiale: un dispositivo binario semplice con soglie elettriche fissate che, per lo scarso livello tecnologico del tempo, producevano risultati che non andavano oltre semplici funzioni logiche quali "a o b" piuttosto che "a e b".

Page 202: Prof. Raffaella Folgieri

McCullogh & Pitts in un loro paper, presentano il modello semplificato di neurone a soglia, asserendo che la semplificazione è efficiente perché può riprodurre il meccanismo generale di funzionamento del neurone umano e, quindi, del cervello. M&P dimostrano anche che si può costruire una rete di neuroni in grado di svolgere tutte le operazioni del calcolatore universale di Turing. Inizialmente, dunque, non c’è novità rispetto all’AI classica: il neurone di M&P è un calcolatore universale.

Nel 1949 lo psicologo Donald Hebb introduce il principio del rinforzo delle sinapsi nel tempo, determinato dal loro utilizzo. (apprendimento non supervisionato)

Nel 1954 Belmont Farley e Wesley Clark, del MIT, si concentrarono su modelli computerizzati di simulazione del neurone, coinvolgendo anche alcuni neurologi, dando il via ad una tendenza alla multidisciplinarità ancora molto forte in AI.

Page 203: Prof. Raffaella Folgieri

Nel 1958 l’informatico Frank Rosenblatt sviluppa il perceptrone (apprendimento supervisionato), una rete a tre strati (layer), input, strato associativo, output, in grado di imparare a connettere o ad associare un input ad un output casuale.

Il perceptrone è ispirato agli studi sulla visione del cervello (campo in cui si hanno le conoscenze più approfondite).

Il funzionamento del perceptrone di Rosenblatt si basa sul concetto che lo strato di neuroni di input (di stato 0 o 1) dipenda dai segnali che vi giungono.

Rosenblatt ipotizza che esistano dei feature detector (simili ai neuroni center-surround, che rispondono a determinati stimoli), ognuno collegato a pochi recettori o sensori. Dunque ogni feature detector è collegato in modo casuale ad un numero di neuroni di input, con connessioni dai valori assolutamente casuali.

Page 204: Prof. Raffaella Folgieri

Tutti i feature detector sono collegati ad un neurone di output con connessioni non casuali.

L’output di questo neurone è calcolato sommando gli input moltiplicati per i rispettivi pesi: se il risultato è superiore alla soglia tale neurone “spara”, se è inferiore alla soglia, no.

La grande innovazione di Rosenblatt è che ha definito una procedura per modificare i pesi in base all’esperienza: la perceptron learning procedure.

Cosa faccio? Prendo un input e lo utilizzo per fissare il valore di tutti neuroni di input.

A questo punto calcolo l’output di tutti gli altri neuroni del sistema e lo confronto con il risultato che avrei voluto (immaginate che tra gli input dati – es. lettere dell’alfabeto -, mi aspetti in uscita una specifica lettera dell’alfabeto).

Page 205: Prof. Raffaella Folgieri

In pratica se in uscita ottengo quello che desidero, lascio i pesi così come sono, altrimenti li vario leggermente (W piccolo), finché non ottengo l’output che desidero.

In altre parole se l’output è on quando doveva essere off, riduco la forza delle connessioni verso i feature detector che sono on, quindi la prossima volta questi saranno meno importanti, viceversa se l’output è off quando doveva essere on, aumento la forza delle connessioni verso i feature detector che sono on.

Tutti questi aumenti sono W molto piccoli.

Posso dare ad un perceptrone compiti auto-associativi (fornisco in input un’immagine e deve generare in output la stessa immagine), oppure etero-associati o ancora di categorizzazione.

Page 206: Prof. Raffaella Folgieri

Il Perceptrone ha comunque, oltre alla semplificazione eccessiva, altri limiti già noti anche a McCollough, Pitts e Rosenblat, quale quello della separabilità lineare, che approfondiremo in seguito.

Intanto, nel 1960, Bernard Widrow e Marcian Hoff (Stanford University) sviluppano la rete ADALINE (ADAptive Linear Element), che adotta una nuova regola di apprendimento: la Least-Mean-Squares (LMS).

Nel 1969 Marvin Minsky e Seymour Paper criticano aspramente le ricerche di Rosenblatt, dimostrando che le capacità del perceptrone sono molto limitate perché non in grado di risolvere nemmeno problemi semplici come lo XOR (O esclusivo). Le conseguenze sono l’abbandono generale degli studi sulle reti neurali.

Page 207: Prof. Raffaella Folgieri

Vediamo velocemente in cosa consiste il problema della separabilità lineare attraverso il caso dello XOR. Il perceptrone di Rosenblatt apprende funzioni calcolabili, cioè linearmente separabili. Vediamo tre funzioni semplici: AND: vero (pallino rosso) se si ha x=1 e y=1; falso (pallino verde) in tutti gli altri casi. OR: vero (pallino rosso) se si ha x=1 oppure y=1; falso (pallino verde) in caso contrario. XOR: falso (pallino verde) solo se x=y=1 oppure se x=y=0; vero (pallino rosso) negli altri casi.

Fate riferimento alla figura che segue:

Page 208: Prof. Raffaella Folgieri

il neurone deve decidere se “sparare” o no in base al fatto che il risultato si trovi sopra o sotto la soglia, quindi (nel nostro caso in cui i valori sono due, cioè l’1 o lo 0), i risultati (vero=1 e falso=0) devono poter essere separati in due classi, divise dall’opportuna soglia.

Page 209: Prof. Raffaella Folgieri

Graficamente, devo poter dividere in due lo spazio con una linea (è la funzione della soglia) in modo che i pallini rossi si trovino tutti da una parte e i pallini verdi in un’altra parte.

La conseguenza di quello che abbiamo visto è che non esiste alcuna soglia che possa essere fissata per dividere lo spazio in due e la funzione XOR non è tra quelle apprendibili da un perceptrone.

Il caso dello XOR è il più semplice, utilizzato per farvi comprendere il problema e utilizzato da Minsky e Papert per criticare il perceptrone.

La realtà è che un numero molto elevato di funzioni matematiche risultano non separabili e quindi non possono essere calcolate dal perceptrone. Cade la tesi del calcolatore universale.

Page 210: Prof. Raffaella Folgieri

Non è la sola critica di Minsky e Papert, che adducono altri casi critici per il perceptrone, quali il “problema della parità” e del “credit assignement” (approfondire). L’interesse per le reti neurali resta sopito fino agli anni ’80, quando Grossberg e Carpenter svilupparono Art (Adptive Resonance Theory) basata su modelli biologici. Nel fattempo erano state condotte altre ricerche, tra cui va ricordato sicuramente Klopf, che lavora all’apprendimento atrificiale ispirandosi ai neuroni biologici (eterostasi) e precedentemente Werbos, nel 1974, che inizia a studiare i metodi di apprendimento back-propagation, ovvero un perceptrone a più layer, con migliori funzioni e regole di apprendimento. Ricordiamo ancora gli studi di Shun-Ichi Aari sul metodo error-correction, apprendimento basato su classificazione tramite esempi adattabili, e la rete Neocognitron, di Kunihiko (1975), che permette di interpretare caratteri scritti a mano.

Page 211: Prof. Raffaella Folgieri

Dunque negli anni ’80 si assiste ad un ritorno di interesse per le reti neurali, principalmente per due fattori: nuovi risultati teorici che consentono di superare le limitazioni del Perceptrone; elevata potenza di calcolo dei nuovi sistemi di elaborazione.

Nel 1982 Hopfield analizza le reti costituite da unità binarie e connessioni simmetriche. È possibile introdurre una funzione energia che determina lo stato della rete (che tende a minimizzare la sua energia). Questo modello dinamico porta una rivoluzione nello sviluppo delle reti neurali. Nel 1986 viene proposto l’algoritmo di backpropagation, che è una generalizzazione dell’algoritmo di apprendimento del perceptrone alle reti multi-strato (multi-layer) e consente di superare i problemi individuati da Minsky e Papert.

Page 212: Prof. Raffaella Folgieri

L’introduzione di livelli intermedi permette alla rete di creare una rappresentazione interna dell’ambiente esterno, quindi la rete acquisisce la capacità di interpretare e generalizzare. Oggi la backpropagation è l’algoritmo più utilizzato.

Un altro modello da ricordare è il competitive learning di Rumelhart e Zipster: ogni unità apprende come rispondere ad una configurazione di ingresso specifica, entrando in competizione con altre unità attraverso mutue inibizioni.

Kohonen propone un algortmo di competitive learning che mette in relazione la densità spaziale dei cluster alla distribuzione di probabilità delle possibili configurazioni di ingresso.

Oggi le reti neurali sono ampiamente ed efficacemente utilizzate ed i modelli, dinamici e multi-strato, sono in continua evoluzione.

Approfondire: chi era Herbert Alexander Simon?

Page 213: Prof. Raffaella Folgieri

I diversi modelli di reti neurali si differenziano a seconda di alcune caratteristiche: tipo di utilizzo

- architettura dei collegamenti - modalità di apprendimento - algoritmo di apprendimento

Parleremo di tutto nel seguito, ma innanzitutto distinguiamo le reti per tipo di utilizzo, per cui si distinguono tre categorie principali: - memorie associative. Possono apprendere associazioni tra pattern,

ovvero insiemi complessi di dati, quali ad esempio i pixel di un’immagine, in modo che la presentazione di un pattern specifico fornisca come output un pattern obiettivo anche se il primo risulta impreciso o parziale (resistenza al rumore). Una memoria associativa può essere anche utilizzata per fornire in output il pattern completo in risposta ad un pattern parziale in input.

Page 214: Prof. Raffaella Folgieri

- Simulatori di funzioni matematiche. Comprendono la funzione che lega l’input all’output in basse ad esempi forniti in fase di training. Dopo l’addestramento la rete è in grado di fornire output anche in risposta ad input diversi da quelli usati negli esempi di addestramento. La rete dunque interpola ed estrapola dai dai dati del training set. Tali capacità sono verificabili addestrando una rete con una sequenza di dati input/output proveniente da una funzione nota. La rete si comporta come una black box, poiché la funzione di trasferimento interna non è svelata completamente. La rete a retropropagazione dell’errore (error back propagation) fa parte di questa categoria.

- Classificatori. Si tratta di reti costruite con lo scopo di classificare i dati in categorie in base a caratteristiche di similitudine. Possono essere sia di tipo supervisionato che auto-organizzante, quindi senza categorie predefinite.

Page 215: Prof. Raffaella Folgieri

Classificazione delle modalità di apprendimento 

Abbiamo detto che Rosenblatt introdusse il concetto di apprendimento nelle reti neurali e, incidentalmente, abbiamo nominato, ad esempio, il termine “apprendimento supervisionato”.

Prima di proseguire, sarà bene chiarire pochi semplici concetti su tale argomento.

Page 216: Prof. Raffaella Folgieri

L’apprendimento si può classificare adottando criteri diversi a seconda che sia ‐ Basato sull’informazione a disposizione, ovvero:

- Supervisionato - Con rinforzo - Non supervisionato

‐ Basato sul ruolo del sistema che apprende, e cioè - Apprendimento passivo - Apprendimento attivo

Page 217: Prof. Raffaella Folgieri

Nell’apprendimento supervisionato si ha a disposizione un insieme di esempi classificati x:<v1, v2, …,vn, o>, in cui vi rappresenta i valori delle variabili di ingresso ed o è l’uscita.

L’apprendimento supervisionato implica necessariamente l’esistenza di un istruttore che conosce la risposta corretta attesa.

In questo caso si vuole apprendere una data funzione obiettivo f: V1 x V2 x V3 … → O

Page 218: Prof. Raffaella Folgieri

Un possibile algoritmo consiste nello scegliere, all’interno delle classi di ipotesi H, quella che rende minimo l’errore di approssimazione della funzione obiettivo sugli esempi a disposizione.

L’apprendimento supervisionato avviene secondo meccanismi induttivi, a partire cioè da esempi. Consiste dunque nella descrizione di una funzione a partire da un insieme di coppie ingresso/uscita dette esempi.

In generale possono esservi molte ipotesi alle quali è possibile assegnare un grado di preferenza, detto inclinazione, al di là del semplice criterio di consistenza con gli esempi.

Ogni ipotesi tale da approssimare il comportamento della funzione obiettivo su un numero sufficientemente grande di esempi lo approssimerà anche sui campioni non osservati (dalla teoria statistica del campionamento e dalla computational learning theory)

Page 219: Prof. Raffaella Folgieri

Nell’apprendimento per rinforzo, l’apprendista interagisce con l’ambiente e riceve una ricompensa (numerica) positiva o negativa a seconda del risultato delle azioni conseguenza dell’apprendimento.

Si apprende così una strategia di comportamento, ovvero un “piano” o sequenza di azioni. In questo caso la misura della prestazione consiste nel rendere massima “a lungo termine” la ricompensa complessiva ricevuta dal sistema.

Page 220: Prof. Raffaella Folgieri

L’apprendimento non supervisionato prevede che l’esperienza di apprendimento sia rappresentata da dati non classificati (ad esempio cartelle cliniche, pagine web). “Apprendere” in questo caso significa rilevare ridondanze o correlazioni statistiche dei dati.

Page 221: Prof. Raffaella Folgieri

Occorre un ultimo inciso sulle modalità di apprendimento dal punto di vista del learner. Nell’apprendimento passivo il sistema che apprende può imparare solo dai dati che vengono messi a disposizione (esempi). Nell’apprendimento attivo, invece, il learner può fare domande e condurre esperimenti. In questo caso sorge, però, la necessità di limitare l’intrusività del learner, stabilendo un modo ottimale di indagine autonoma. Tra i modelli supervisionati occorre ricordare i MultiLayer Perceptron (vedremo meglio questi ultimi), i Neurofuzzy Models.

Tra quelli non supervisionati (unsupervised) i più utilizzati sono le SOM (Self-Organizing Map).

Nel seguito, quando parleremo dei modelli e delle architetture, approfondiremo i meccanismi di addestramento supervisionato e gli algoritmi adottabili.

Page 222: Prof. Raffaella Folgieri

Modelli e architetture di rete neurale Vi sono diversi modelli e diverse architetture adottabili per l’implementazione di una rete neurale.

La scelta ovviamente dipende dal tipo di problema che si vuole trattare.

Per completare l’introduzione alle ANN che stiamo conducendo, ne presenteremo due, ma potete facilmente approfondire l’argomento in Rete.

Page 223: Prof. Raffaella Folgieri

Reti completamente connesse (senza strati) In una rete completamente connessa ogni neurone è connesso bidirezionalmente con ognuno degli altri. Le connessioni sono rappresentate da una matrice quadrata W, di dimensione pari al numero di neuroni. Il generico elemento wij della matrice rappresenta il peso della connessione tra il neurone i ed il neurone j.

Page 224: Prof. Raffaella Folgieri

Reti stratificate

Le reti stratificate sono caratterizzate dalla presenza di neuroni ciascuno connesso con tutti quelli dello strato successivo, senza che esistano connessioni tra neuroni del medesimo strato o tra strati non adiacenti.

Nello strato di input non avviene alcuna computazione (i neuroni di ingresso passano semplicemente i segnali ricevuti allo strato successivo), per cui una rete come quella presentata in figura A viene considerata come una rete con un solo strato.

Page 225: Prof. Raffaella Folgieri

Figura A:  Figura B: 

In questo tipo di rete i segnali viaggiano dallo strato di ingresso verso lo strato di uscita e si dice che la rete è feedforward. In figura B è invece mostrata una rete stratificata feedforward con uno strato nascosto, ovvero uno strato i cui neuroni non comunicano in modo diretto con l’esterno.

Page 226: Prof. Raffaella Folgieri

Possono essere presenti uno o più strati nascosti, che permettono alla rete di costruire opportune rappresentazioni interne degli stimoli in ingresso, in modo da facilitare e organizzare il compito della rete. Le connessioni tra i neuroni di una rete a strati sono rappresentate tramite tante matrici quante le coppie di strati adiacenti. Ciascuna matrice contiene i pesi delle connessioni tra le coppie di neuroni di strati adiacenti.

Per i tipi di problemi che più comunemente potrete incontrare nelle vostre attività, e per semplicità di trattazione, noi ci occuperemo principalmente di reti supervisionate, pur accennando, per completezza, anche agli altri approcci. In particolare vedremo nel dettaglio come si progetta e sviluppa una ANN multilayer perceptron.

Page 227: Prof. Raffaella Folgieri

Possiamo dire che l’architettura generale di una rete neurale sia quella mostrata nella figura accanto, costituita da

- unità di ingresso (input unit), che ricevono i segnali dall’ambiente esterno;

- unità nascoste (hidden units), opzionali. Partecipano alle comunicazioni all’interno della rete;

- unità di uscita (output unit), che forniscono la risposta della rete.

Page 228: Prof. Raffaella Folgieri

Abbiamo già parlato del perceptrone elementare (senza strati nascosti) e del fatto che non può classificare pattern che non siano linearmente separabili .

Il problema è però risolvibile con l’introduzione di uno strato nascosto. Se nel perceptrone elementare, ad esempio, introduco uno strato nascosto con due neuroni (modello McCulloch-Pitts) posso risolvere il problema dello XOR.

Ma come si codificano le informazioni in ingresso alla rete?

Page 229: Prof. Raffaella Folgieri

Se scegliamo la modalità locale, in cui ogni unità di ingresso corrisponde ad un oggetto, abbiamo la necessità di un numero troppo elevato di neuroni di input, non avremmo flessibilità nella gestione di nuovi oggetti ed inoltre avremmo scarsa resistenza al rumore.

Se invece scegliamo la modalità distribuita, cioè quella in cui la rappresentazione di ogni oggetto utilizza più nodi di ingresso (ognuno relativo ad una caratteristica specifica), superiamo i problemi precedenti.

Page 230: Prof. Raffaella Folgieri

La scelta di come rappresentare i pattern in ingresso alla rete neurale è determinante.

Inoltre potrebbe essere necessario effettuare una normalizzazione dei dati, ad esempio nel caso in cui provengano da “sorgenti” diverse.

Una delle formule più utilizzate per la normalizzazione consiste nel dividere ogni componente xi per la norma del vettore, secondo la formula:

n

ii

ii

x

xx

1

2

Page 231: Prof. Raffaella Folgieri

Abbiamo detto che per determinare preventivamente i valori sinaptici delle connessioni fra i noi è necessaria una fase di addestramento, che consiste nella modifica graduale dei valori assunti inizialmente dalle sinapsi, sulla base dei pattern scelti (per l’addestramento).

I valori iniziali delle connessioni sinaptiche sono assegnati in modo casuale, per esempio all’interno di un intervallo, oppure sono posti tutti allo stesso valore.

Page 232: Prof. Raffaella Folgieri

Come abbiamo detto, l’addestramento può essere condotto: - in modo supervisionato,

utilizzando coppie di pattern <vettore di ingresso, risposta desiderata> l’aggiornamento dei pesi avviene in conseguenza della misura di errore tra la risposta data dalla rete e quella desiderata

- apprendimento in auto-organizzazione non viene specificata la risposta attesa dagli esempi forniti per l’addestramento, ma si definiscono regole attraverso le quali la rete possa organizzarsi

Page 233: Prof. Raffaella Folgieri

La modifica dei pesi può avvenire secondo una modalità on-line, ovvero in modo che l’aggiornamento avvenga per ogni pattern in ingresso, oppure per epoche, cioè effettuata dopo la presentazione di tutti i pattern in ingresso.

Le modifiche calcolate vengono sommate ai valori già presenti.

Il procedimento avviene più volte, in modo che la rete non “dimentichi” quanto ha appreso fino a quel momento.

Page 234: Prof. Raffaella Folgieri

Un altro aspetto importante è stabilire il numero di esempi da utilizzare per la fase di training. Non esiste, tuttavia, una regola ma si possono adottare delle stime. Generalmente per un multilayer perceptron in genere si sceglie un numero di record pari a 2 volte il numero totale delle connessioni. Per calcolare il numero delle connessioni occorre conoscere il numero delle unità nascoste che in questo caso si stimano uguali alla radice quadrata del numero di ingressi moltiplicato il numero di uscite. Raggiunto il valore minimo di errore della rete, si può fermare l’addestramento. Tale valore dipende da vari fattori, quali la precisione che si intende ottenere dalla rete, o il tipo di funzione di attivazione, il numero di uscite della rete, e così via. Una volta conclusa la fase di addestramento, si può procedere con la fase di test, che permette di osservare il comportamento della rete senza modificare i pesi sinaptici trovati durante il training.

Page 235: Prof. Raffaella Folgieri

Riassumendo: - fase di training: alla rete viene fornito un sottoinsieme di

coppie input-output. La rete adatta il proprio stato interno per classificarle correttamente.

- Fase di test: viene fornito alla rete un sottoinsieme del dataset diverso dal precedente (di cui si conosce l’output). L’accuratezza della rete è misurata in termini di risposte corrette date dalla rete.

Page 236: Prof. Raffaella Folgieri

Per suddividere il dataset evitando di introdurre bias, in genere si adotta, in alternativa, uno dei due metodi:

- Random sampling (campionamento casuale). E’ il più semplice, ma quello che segue fornisce maggiori garanzie.

- K-fold cross validation: il dataset è suddiviso in k sottoinsiemi. La rete è addestrata su k-1 sottoinsiemi e testata sul sottoinsieme restante. Il procedimento si itera k volte (con selezioni diverse) e si prende, infine, la media dei risultati. Ovviamente questo metodo è conveniente se si dispone di un numero sufficientemente grande di record nel dataset.

Page 237: Prof. Raffaella Folgieri

Per evitare l’overfitting (la rete non generalizza), in cui si può incorrere se si adatta troppo il modello ai dati o se si sceglie un modello troppo complesso, è preferibile spesso suddividere ulteriormente il training set, prendendone una parte come validation set. Si userà quest’ultimo sottoinsieme per testare periodicamente l’accuratezza della rete durante l’addestramento: se l’errore aumenta, si arresta il training.

Se poi si deve scegliere tra più modelli o algoritmi di apprendimento, si utilizza il training set suddiviso in k sottoinsiemi di cross-validation, per confrontare le varie alternative. Si allena il modello scelto sul training set, controllandone periodicamente l’accuratezza sul validation set e si arresta il training quando inizia l’overfitting.

L’accuratezza finale si valuta, in questo caso, sul test set.

Page 238: Prof. Raffaella Folgieri

Come abbiamo detto, non ci sono regole generali, ma la pratica suggerisce che per le reti neurali l’approccio migliore consiste nell’adottare la seguente strategia: - ovviamente:

- far corrispondere il numero di nodi in ingresso al numero di feature

- far corrispondere il numero di nodi in uscita al numero di classi - Suddividere il dataset in tre sottoinsiemi: training set, validation

set, test set. - Per stabilire il corretto numero di hidden layer e di nodi per livello

generalmente si va per tentativi successivi. Adottare la k-fold cross validation sul training set può aiutare a trovare il giusto equilibrio

- Allenare la rete su tutto il training set, limitando l’overfitting con il validation set - Valutare l’accuratezza finale sul test set

Page 239: Prof. Raffaella Folgieri

Vi sono poi un paio di regole euristiche che possono aiutare:

- In genere un hidden layer è sufficiente per la maggior parte dei problemi. Inoltre in questo caso l’allenamento è più rapido)

- Conviene sempre cominciare con un numero di nodi interni basso e poi crescere finchè non si noti un miglioramento.

Page 240: Prof. Raffaella Folgieri

L’algoritmo di back propagation Vi sono vari algoritmi adottabili nell’approccio supervisionato per la modifica dei pesi.

Tra tutti, il back propagation è l’algoritmo più usato per modificare i valori sinaptici e si può utilizzare indipendentemente dall’architettura adottata e dal numero di strati intermedi.

Il principio dell’algoritmo è la modifica dei pesi delle connessioni condotta in modo da minimizzare una certa funzione errore E, che dipende dal vettore oi restituito dalla rete per l’ingresso xi, e dal vettore di output yi che desideriamo ottenere (e che fa parte del training set). Il training set è l’insieme di n coppie di vettori (xi,yi), con i=1, …, n.

Page 241: Prof. Raffaella Folgieri

Considerato k l’indice che rappresenta il valore corrispondente al k-simo neurone di output, la funzione errore da minimizzare sarà:

i k

ik

ik yowE 2)(

21)(

E(w) dipende dai pesi, che variano nel tempo, e per minimizzarla si può utilizzare l’algoritmo della discesa del gradiente (gradient-descent). Il gradient-descent parte da un punto generico x0 e calcola il gradiente f(x0), che fornisce la direzione verso la quale muoversi e lungo la quale si ha il massimo incremento (decremento se si considera -). Una volta definita la direzione, ci si muove di una distanza predefinita, trovando un nuovo punto x1 su cui viene calcolato di nuovo il gradiente.

Si continua così, finché il gradiente risulta nullo.

Page 242: Prof. Raffaella Folgieri

Di fatto, l’algoritmo di back propagation è diviso in due passi: - forward pass: l’input fornito alla rete viene propagato ai livelli

successivi (il flusso va in avanti – forward). Si calcola l’errore commesso E(w)

- backward pass: l’errore E(w) è propagato all’indietro (backward) ed i pesi vengono aggiornati opportunamente.

Vediamo quali sono i passi da compiere per addestrare la rete utilizzando l’approccio supervisionato:

- creare l’insieme di input pattern ed il corrispondente output pattern desiderato

- inizializzare i pesi della rete a valori casuali piccoli e a norma nulla (valore assoluto della radice quadrata della somma dei quadrati dei componenti dei vettori)

Page 243: Prof. Raffaella Folgieri

- iniziare il ciclo di apprendimento (che terminerà solo quando l’errore risulta minore della soglia che si è prefissata o dopo un numero di iterazioni deciso a priori)

- feedforward (da input a output) - si estrae (ad esempio a caso) un input pattern tra quelli

selezionati. Si ricordi che per ottenere un buon addestramento, l'insieme dei pattern di input deve essere completo. (continua) Dunque, scelto un pattern di input, nell’estrazione di quello nuovo, il precedente non deve partecipare alla scelta. In questo modo si considereranno solo gli input non ancora estratti, per poi ripescare dall’insieme completo quando tutti sono stati estratti almeno una volta. Si procede in modo simile anche se si sceglie di adottare un meccanismo k-fold.

- si calcola il valore di tutti i neuroni successivi (con la sommatoria di produttorie che conosciamo, ormai, bene)

Page 244: Prof. Raffaella Folgieri

- si detrae dal risultato il valore di soglia di attivazione del neurone (in alternativa, come abbiamo visto, è possibile simulare la soglia con l’aggiunta di un neurone ad ingresso fisso di valore pari a 1)

- si filtra l’uscita del neurone e si riadatta il ciclo facendo diventare tale valore l’input del neurone successivo

- si confronta il risultato ottenuto dalla rete con l’output pattern corrispondente all’input appena utilizzato e si ricava l’errore attuale della rete

- back propagation (da output a input) - si calcola la correzione da apportare ai pesi secondo la

regola scelta - si applica la correzione ai pesi dello strato

Page 245: Prof. Raffaella Folgieri

Link utile per approfondire ulteriormente l’argomento reti neurali:

http://stor.altervista.org/informatica/nn/nn.htm (ANN affrontate in modo pratico)

alcuni esempi di reti neurali in vari linguaggi:http://www.iet.unipi.it/m.cimino/index_files/publications/reteNeurale.pdf

http://www.orebla.it/file/reti.pdf

ne trovate tanti altri in rete...

ùùù

Page 246: Prof. Raffaella Folgieri

Come creare una rete neurale Per creare una rete neurale è possibile utilizzare

- sw di simulazione di ANN già pronti (vedremo nel seminario sulle ANN). Vi sono sia realizzazioni a pagamento, non economiche ma almeno con buoni manuali, sia sw più economici o a volte gratuiti ma con il difetto di non essere corredati da help o da un buon manuale. Alcuni esempi (e link) potrete trovarli qui: http://www.msandri.it/complex/neural/softwa~1.htm

- linguaggi di programmazione. Per i più esperti (in linguaggi di programmazione, intendo) è possibile programmare ex novo una rete neurale utilizzando il linguaggio preferito (C++, Java, ecc.). La rete neurale in sé non comporta molte righe di codice ma, ovviamente, occorre conoscere il linguaggio di programmazione.

Page 247: Prof. Raffaella Folgieri

- Nuove implementazioni sviluppate in ambienti statistici. Tra i più conosciuti Matlab (che però non è free) e R (opensource e free). Contengono package (librerie) che permettono di sviluppare facilmente una rete neurale. Nell’intento di farvi cosa gradita (visto che è utile per molte applicazioni) vedremo R e come sviluppare una rete semplice in questo ambiente. Anche Mathematica è un ambiente semplice da utilizzare.

Page 248: Prof. Raffaella Folgieri

Creare una rete neurale con R R è un software opensource, free, molto potente nato per implementazioni statistiche ma contenente molti package (librerie) per applicazioni diverse. Le librerie sono insiemi di procedure e funzioni accessibili da un comando (sintassi) diretto per realizzare un’applicazione. Qui: http://www.cran.r-project.org/ trovate un elenco completo di tutte le librerie presenti in R. È possibile scaricare R da questo sito http://www.r-project.org/ in cui sono presenti anche manuali, documentazione e link al wiki per chi intende ampliare le proprie conoscenze. I manuali di R presenti sul sito sono fatti molto bene, ma sono in Inglese. Per chi preferisse l’Italiano, ottimi manuali di introduzione ad R in Rete possono essere reperiti qui: http://torinor.net/download/EnnioDispense.pdf http://cran.r-project.org/doc/contrib/Mineo-dispensaR.pdf Noi vedremo le basi di R, giusto per poter capire come si utilizza l’ambiente e come sviluppare una rete neurale semplice di cui faremo l’esempio nel seguito. Per gli approfondimenti, si rimanda ai link sopra riportati.

Page 249: Prof. Raffaella Folgieri

Primi passi in R (tratto da http://math.illinoisstate.edu/dhkim/rstuff/rtutor.html )

Una volta scaricata e installata la versione di R adatta al proprio sistema operativo, basta avviare R dall’icona sul desktop oppure dal menu di avvio per visualizzare la schermata della console: Come uscire da R? Basta scrivere q() al prompt (>) e premere invio. Apparirà una dialog box che richiede se si desidera salvare ciò che si è creato in R per vederlo

apparire nuovamente alla prossima sessione di R.

Page 250: Prof. Raffaella Folgieri

I comandi scritti sulla console possono essere sempre facilmente richiamati e modificati agendo sulle frecce posizionate sulla tastiera.

Vediamo subito due comandi utili: > objects() # list the names of all objects > rm(data1) #remove the object named data1 from the current environment

Page 251: Prof. Raffaella Folgieri

Operazioni di base Ovviamente in R è possibile innanzitutto compiere tutte le operazioni di base, quali, ad esempio: > 2 + 3 * 5 # Note the order of operations. > log (10) # Natural logarithm with base e=2.718282 > 4^2 # 4 raised to the second power > 3/2 # Division > sqrt (16) # Square root > abs (3-7) # Absolute value of 3-7 > pi # The mysterious number > exp(2) # exponential function > 15 %/% 4 # This is the integer divide operation > # This is a comment line

Page 252: Prof. Raffaella Folgieri

Vi sono poi gli operatori di assegnazione (<-) che immagazzinano il valore (object), o il risultato dell’espressione, posto sulla parte destra di <- alla variabile posta a sinistra. Una volta effettuata l’assegnazione, la variabile può essere utilizzata come il valore stesso. Attenzione: R è case sensitive. Prima di assegnare un nome, assicuratevi che non sia già utilizzato da R nei molti pacchetti che mette a disposizione. E’ sufficiente scrivere il nome scelto e dare invio: se R ritorna un errore, vuol dire che il nome che avete scelto non è in uso. Vediamo alcuni esempi di assegnazione: > x<- log(2.843432) *pi > x [1] 3.283001 > sqrt(x) [1] 1.811905 > floor(x) # largest integer less than or equal to x (Gauss number) [1] 3

Page 253: Prof. Raffaella Folgieri

> ceiling(x) # smallest integer greater than or equal to x [1] 4 R può anche gestire numeri complessi: > x<-3+2i > Re(x) # Real part of the complex number x [1] 3 > Im(x) # Imaginary part of x [1] 2 > y<- -1+1i > x+y [1] 2+3i > x*y [1] -5+1i

Page 254: Prof. Raffaella Folgieri

Vettori  R gestisce gli oggetti vettore in modo semplice ed intuitivo: > x<-c(1,3,2,10,5) #create a vector x with 5 components > x [1] 1 3 2 10 5 > y<-1:5 #create a vector of consecutive integers > y [1] 1 2 3 4 5 > y+2 #scalar addition [1] 3 4 5 6 7 > 2*y #scalar multiplication [1] 2 4 6 8 10 > y^2 #raise each component to the second power

Page 255: Prof. Raffaella Folgieri

[1] 1 4 9 16 25 > 2^y #raise 2 to the first through fifth power [1] 2 4 8 16 32 > y #y itself has not been unchanged [1] 1 2 3 4 5 > y<-y*2 > y #it is now changed [1] 2 4 6 8 10

Page 256: Prof. Raffaella Folgieri

Alcuni esempi di operazioni sui vettori: > x<-c(1,3,2,10,5); y<-1:5 #two or more statements are separated by semicolons > x+y [1] 2 5 5 14 10 > x*y [1] 1 6 6 40 25 > x/y [1] 1.0000000 1.5000000 0.6666667 2.5000000 1.0000000 > x^y [1] 1 9 8 10000 3125 > sum(x) #sum of elements in x [1] 21 > cumsum(x) #cumulative sum vector [1] 1 4 6 16 21

Page 257: Prof. Raffaella Folgieri

> diff(x) # first difference [1] 2 -1 8 -5 > diff(x,2) #second difference [1] 1 7 3 > max(x) #maximum [1] 10 > min(x) #minimum [1] 1 L’ordinamento dei dati può essere effettuato utilizzando il commando sort(): > x [1] 1 3 2 10 5 > sort(x) # increasing order [1] 1 2 3 5 10 > sort(x, decreasing=T) # decreasing order [1] 10 5 3 2 1

Page 258: Prof. Raffaella Folgieri

Inoltre estrarre i componenti di un vettore per effettuare operazioni è estremamente semplice: > x [1] 1 3 2 10 5 > length(x) # number of elements in x [1] 5 > x[3] # the third element of x [1] 2 > x[3:5] # the third to fifth element of x, inclusive [1] 2 10 5 > x[-2] # all except the second element [1] 1 2 10 5 > x[x>3] # list of elements in x greater than 3 [1] 10 5

Page 259: Prof. Raffaella Folgieri

Si possono anche avere vettori logici: > x>3 [1] FALSE FALSE FALSE TRUE TRUE > as.numeric(x>3) # as.numeric() function coerces logical components to numeric [1] 0 0 0 1 1 > sum(x>3) # number of elements in x greater than 3 [1] 2 > (1:length(x))[x<=2] # indices of x whose components are less than or equal to 2 [1] 1 3 > z<-as.logical(c(1,0,0,1)) # numeric to logical vector conversion > z [1] TRUE FALSE FALSE TRUE

Page 260: Prof. Raffaella Folgieri

Vettori di caratteri: > colors<-c("green", "blue", "orange", "yellow", "red") > colors [1] "green" "blue" "orange" "yellow" "red" Inoltre è possibile assegnare nomi a component individuali e poi riferirsi ad esse tramite il nome, come negli esempi che seguono. > names(x) # check if any names are attached to x NULL > names(x)<-colors # assign the names using the character vector colors > names(x) [1] "green" "blue" "orange" "yellow" "red" > x green blue orange yellow red 1 3 2 10 5

Page 261: Prof. Raffaella Folgieri

> x["green"] # component reference by its name green 1 > names(x)<-NULL # names can be removed by assigning NULL > x [1] 1 3 2 10 5 seq() and rep() provide convenient ways to a construct vectors with a certain pattern. > seq(10) [1] 1 2 3 4 5 6 7 8 9 10 > seq(0,1,length=10) [1] 0.0000000 0.1111111 0.2222222 0.3333333 0.4444444 0.5555556 0.6666667 [8] 0.7777778 0.8888889 1.0000000

Page 262: Prof. Raffaella Folgieri

> seq(0,1,by=0.1) [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 > rep(1,3) [1] 1 1 1 > c(rep(1,3),rep(2,2),rep(-1,4)) [1] 1 1 1 2 2 -1 -1 -1 -1 > rep("Small",3) [1] "Small" "Small" "Small" > c(rep("Small",3),rep("Medium",4)) [1] "Small" "Small" "Small" "Medium" "Medium" "Medium" "Medium" > rep(c("Low","High"),3) [1] "Low" "High" "Low" "High" "Low" "High"

Page 263: Prof. Raffaella Folgieri

Matrici  Come sapete, una matrice è un array di righe e colonne. Uno dei modi più facili di creare una matrice consiste nel combinare vettori di uguale lunghezza utilizzando il comando cbind(), che sta per "column bind": > x [1] 1 3 2 10 5 > y [1] 1 2 3 4 5 > m1<-cbind(x,y);m1 x y [1,] 1 1 [2,] 3 2 [3,] 2 3 [4,] 10 4 [5,] 5 5

Page 264: Prof. Raffaella Folgieri

> t(m1) # transpose of m1 [,1] [,2] [,3] [,4] [,5] x 1 3 2 10 5 y 1 2 3 4 5 > m1<-t(cbind(x,y)) # Or you can combine them and assign in one step > dim(m1) # 2 by 5 matrix [1] 2 5 > m1<-rbind(x,y) # rbind() is for row bind and equivalent to t(cbind()).

Page 265: Prof. Raffaella Folgieri

Naturalmente gli elementi della matrice si possono elencare in modo diretto: > m2<-matrix(c(1,3,2,5,-1,2,2,3,9),nrow=3);m2 [,1] [,2] [,3] [1,] 1 5 2 [2,] 3 -1 3 [3,] 2 2 9 Si noti che gli elementi sono utilizzati per “riempire” la prima Colonna, quindi la sseconda colonna e così via. Per riempire la matrice per righe, è sufficiente utilizzare l’opzione byrow=T: > m2<-matrix(c(1,3,2,5,-1,2,2,3,9),ncol=3,byrow=T);m2 [,1] [,2] [,3] [1,] 1 3 2 [2,] 5 -1 2 [3,] 2 3 9

Page 266: Prof. Raffaella Folgieri

Per estrarre le componenti da una matrice è necessario specificare uno o più indici: > m2 [,1] [,2] [,3] [1,] 1 3 2 [2,] 5 -1 2 [3,] 2 3 9 > m2[2,3] #element of m2 at the second row, third column [1] 2 > m2[2,] #second row [1] 5 -1 2 > m2[,3] #third column [1] 2 2 9

Page 267: Prof. Raffaella Folgieri

> m2[-1,] #submatrix of m2 without the first row [,1] [,2] [,3] [1,] 5 -1 2 [2,] 2 3 9 > m2[,-1] #ditto, sans the first column [,1] [,2] [1,] 3 2 [2,] -1 2 [3,] 3 9 > m2[-1,-1] #submatrix of m2 with the first row and column removed [,1] [,2] [1,] -1 2 [2,] 3 9

Page 268: Prof. Raffaella Folgieri

Inoltre è possibile effettuare operazioni componente per componente: > m1<-matrix(1:4, ncol=2); m2<-matrix(c(10,20,30,40),ncol=2) > 2*m1 # scalar multiplication [,1] [,2] [1,] 2 6 [2,] 4 8 > m1+m2 # matrix addition [,1] [,2] [1,] 11 33 [2,] 22 44 > m1*m2 # component-wise multiplication [,1] [,2] [1,] 10 90 [2,] 40 160

Page 269: Prof. Raffaella Folgieri

Si noti che m1*m2 non è la moltiplicazione usuale, per la quale, invece, si utilizza l’operatore %*% > m1 %*% m2 [,1] [,2] [1,] 70 150 [2,] 100 220 > solve(m1) #inverse matrix of m1 [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 > solve(m1)%*%m1 #check if it is so [,1] [,2] [1,] 1 0 [2,] 0 1 > diag(3) #diag() is used to construct a k by

Page 270: Prof. Raffaella Folgieri

k identity matrix [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1 > diag(c(2,3,3)) #as well as other diagonal matrices [,1] [,2] [,3] [1,] 2 0 0 [2,] 0 3 0 [3,] 0 0 3

Per altre operazioni più complesse, si rimanda alla documentazione presente sul sito di R.

Page 271: Prof. Raffaella Folgieri

I Data frame  I Data frame sono array di dati le cui colonne possono contenere valori di tipo diverso (numeri, caratteri, ecc.) Data frame di piccole dimensioni possono essere creati con la funzione data.frame(). Ecco un data frame di dati di automobili: Make Model Cylinder Weight Mileage Type Honda Civic V4 2170 33 Sporty Chevrolet Beretta V4 2655 26 CompactFord Escort V4 2345 33 Small Eagle Summit V4 2560 33 Small Volkswagen Jetta V4 2330 26 Small Buick Le Sabre V6 3325 23 Large Mitsubishi Galant V4 2745 25 CompactDodge Grand Caravan V6 3735 18 Van Chrysler New Yorker V6 3450 22 MediumAcura Legend V6 3265 20 Medium

Page 272: Prof. Raffaella Folgieri

Vediamo come creare il dataframe:

> Make<-c("Honda","Chevrolet","Ford","Eagle","Volkswagen","Buick","Mitsbusihi", + "Dodge","Chrysler","Acura") > Model<-c("Civic","Beretta","Escort","Summit","Jetta","Le Sabre","Galant", + "Grand Caravan","New Yorker","Legend")

Il segno + presente nelle righe sopra, viene inserito automaticamente da R quando viene dto l’invio senza aver completato la lista. Inoltre il commando rep() serve per far ripetere più volte il comando a R. Ad esempio, rep("V4",5) dice ad R di ripetere V4 per cinque volte.

Page 273: Prof. Raffaella Folgieri

> Cylinder<-c(rep("V4",5),"V6","V4",rep("V6",3)) > Cylinder [1] "V4" "V4" "V4" "V4" "V4" "V6" "V4" "V6" "V6" "V6" > Weight<-c(2170,2655,2345,2560,2330,3325,2745,3735,3450,3265) > Mileage<-c(33,26,33,33,26,23,25,18,22,20) > Type<-c("Sporty","Compact",rep("Small",3),"Large","Compact","Van",rep("Medium",2))

Page 274: Prof. Raffaella Folgieri

La funzione data.frame() combina i sei vettori in un singolo data frame > Car<-data.frame(Make,Model,Cylinder,Weight,Mileage,Type) > Car Make Model Cylinder Weight Mileage Type 1 Honda Civic V4 2170 33 Sporty 2 Chevrolet Beretta V4 2655 26 Compact 3 Ford Escort V4 2345 33 Small 4 Eagle Summit V4 2560 33 Small 5 Volkswagen Jetta V4 2330 26 Small 6 Buick Le Sabre V6 3325 23 Large 7 Mitsbusihi Galant V4 2745 25 Compact 8 Dodge Grand Caravan V6 3735 18 Van

Page 275: Prof. Raffaella Folgieri

9 Chrysler New Yorker V6 3450 22 Medium 10 Acura Legend V6 3265 20 Medium > names(Car) [1] "Make" "Model" "Cylinder" "Weight" "Mileage" "Type"

Esattamente come negli oggetti matrice, le informazioni parziali possono essere facilmente estratte dai data frame:

> Car[1,] Make Model Cylinder Weight Mileage Type 1 Honda Civic V4 2170 33 Sporty

Page 276: Prof. Raffaella Folgieri

Inoltre, single colonne possono essere richiamate attraverso le loro etichette: > Car$Mileage [1] 33 26 33 33 26 23 25 18 22 20 > Car[,5] #equivalent expression, less informative > mean(Car$Mileage) #average mileage of the 10 vehicles [1] 25.9 > min(Car$Weight) [1] 2170

Il comando table() fornisce una tabella di frequenza: > table(Car$Type) Compact Large Medium Small Sporty Van 2 1 2 3 1 1

Page 277: Prof. Raffaella Folgieri

Se si desidera ordinare I dati secondo il peso del veicolo, occorre usare il commando order( > i<-order(Car$Weight);i [1] 1 5 3 4 2 7 10 6 9 8 > Car[i,] Make Model Cylinder Weight Mileage Type 1 Honda Civic V4 2170 33 Sporty 5 Volkswagen Jetta V4 2330 26 Small 3 Ford Escort V4 2345 33 Small 4 Eagle Summit V4 2560 33 Small 2 Chevrolet Beretta V4 2655 26 Compact 7 Mitsbusihi Galant V4 2745 25 Compact 10 Acura Legend V6 3265 20 Medium 6 Buick Le Sabre V6 3325 23 Large 9 Chrysler New Yorker V6 3450 22 Medium 8 Dodge Grand Caravan V6 3735 18 Van

Page 278: Prof. Raffaella Folgieri

Come modificare i data objects  > y [1] 1 2 3 4 5 Se si desidera modificare I data object, è necessario utilizzare la funzione edit() e assengarla ad un oggetto. Ad esempio il commando che segue apre notepad per modificare l’oggetto- > y<-edit(y) Se invece si preferisce inserire i dati di un data frame un stile spreadsheet, occorre utilizzare la sintassi che segue. > data1<-edit(data.frame()) In questo caso apparirà una schermata come in figura:

Page 279: Prof. Raffaella Folgieri

E’ possibile anche cambiare il nome della variabile facendo click una volta sulla cella che la contiene, aprendo così una dialog box come la seguente:

Una volta finito, basta un click su per tornare alla finestra Data Editor. Chiudendo il Data Editor si torna alla finestra di comando R (R Console). Per verificare che i cambiamenti siano avvenuti, basta scrivere: > data1

Page 280: Prof. Raffaella Folgieri

R mette a disposizione molti tipi di grafici (nelle dispense trovate tutte le indicazioni)

Anche per l’analisi statistica R mette a disposizione molte funzioni e troverete degli esempi sempre nelle dispense presenti sul sito.

Nelle dispense sono presenti, inoltre vari altri comandi, compresi quelli che consentono l’import e l’esport di dati. 

Consultare l’help  Per default, R mette a disposizione, al suo interno, alcuni manuali in pdf fatti molto bene. Per accedere al manual, si faccia click su Help | Manuals. Per usare invece l’help per avere informazioni su una specifica funzione o comando, si usi il comando help() > help(read.table)

Page 281: Prof. Raffaella Folgieri

Esempio di rete neurale in R In questo esempio viene sviluppata una rete neurale (Multilayer perceptron) in grado prendere un numero e calcolare la radice quadrata con la maggior precisione possibile. Per addestrare e costruire la rete neurale sarà utilizzata la libreria R “neuralnet”.

La rete prodotta con questo esempio è quella mostrata nell’immagine.

Prende un singolo input (il numero di cui si desidera la radice quadrata) e produce un singolo output (la radice quadrata dell’input).

Nel mezzo dell’immagine vedete 10 hidden neuron che saranno addestrati.

Page 282: Prof. Raffaella Folgieri

L’output risulterà così:

Input Output Atteso Neural Net Output 1 1 0.9623402772 4 2 2.0083461217 9 3 2.9958221776 16 4 4.0009548085 25 5 5.0028838579 36 6 5.9975810435 49 7 6.9968278722 64 8 8.0070028670 81 9 9.0019220736 100 10 9.9222007864

Come si può vedere, la rete neurale svolge abbastanza bene il compito perché l’errore più grande è nel calcolo della radice quadrata di 1 e si aggira intorno al 4%

Page 283: Prof. Raffaella Folgieri

Si dia uno sguardo al codice (sono 20 righe!!!):

install.packages('neuralnet') library("neuralnet")

#Going to create a neural network to perform sqare rooting #Type ?neuralnet for more information on the neuralnet library #Generate 50 random numbers uniformly distributed between 0 and 100 #And store them as a dataframe

traininginput <- as.data.frame(runif(50, min=0, max=100)) trainingoutput <- sqrt(traininginput)

#Column bind the data into one variable trainingdata <- cbind(traininginput,trainingoutput) colnames(trainingdata) <- c("Input","Output")

Page 284: Prof. Raffaella Folgieri

#Train the neural network #Going to have 10 hidden layers #Threshold is a numeric value specifying the threshold for the partial #derivatives of the error function as stopping criteria.

net.sqrt <- neuralnet(Output~Input,trainingdata, hidden=10, threshold=0.01) print(net.sqrt)

#Plot the neural network plot(net.sqrt)

#Test the neural network on some training data testdata <- as.data.frame((1:10)^2) #Generate some squared numbers net.results <- compute(net.sqrt, testdata) #Run them through the neural network

Page 285: Prof. Raffaella Folgieri

#Lets see what properties net.sqrt has ls(net.results)

#Lets see the results print(net.results$net.result)

#Lets display a better version of the results cleanoutput <- cbind(testdata,sqrt(testdata), as.data.frame(net.results$net.result)) colnames(cleanoutput) <- c("Input","Expected Output","Neural Net Output") print(cleanoutput)

Page 286: Prof. Raffaella Folgieri

Import dati in un data structure

• Create un CSV file (in excel, per esempio) è il formato di scambiodati

• Per importare un file di dati occorre conoscerne innanzitutto il path(percorso file) – trucco: drag&drop su R... Darà errore ma avrete ilpath già scritto in console da copiare facilmente

• Ora scrivete l’istruzione:

• DATI<-read.table(‘‘nomepercorsodati’’, header=TRUE, sep=‘,’)

• Ora date INVIO sulla tastiera

Quello che copierete dalla riga sopra

Se il file ha una riga di intestazione – i nomi delle colonne

Per essere sicuri che il carattere separatore sia la virgola, aprite il file con notepad

Page 287: Prof. Raffaella Folgieri

Diamo uno sguardo...

• Ora al prompt scrivete:str(nomedellastrutturadati)

• Cioé: str(DATI)• Corrisponde?• Se scrivete: summary(DATI)• Otterrete anche un riepilogo sul contenuto della struttura dati• E se scriviamo: fix(DATI) cosa otteniamo?• Possiamo esplorare la struttura, modificarla e, ovviamente, utilizzarla nelcodice

• PS: se avete un file diverso dal formato CSV,

Page 288: Prof. Raffaella Folgieri

Aggiunte...

• Al posto dell’istruzione read.table, con un file CSV avremmo anche potutoscrivere:

DATI<-read.csv(‘‘nomepercorsodati’’, header=TRUE)• In questo caso non occorre specificare il separatore (la virgola)• Se aveste avuto un file diverso dal formato CSV, per esempio con unaseparazione effettuata tramite spazio, avreste dovuto scrivere:

• DATI<-read.table(‘‘nomepercorsodati’’, header=TRUE, sep=‘‘’’)• Se i dati nel file fossero stati separati da tabulazione, allora avreste dovutoscrivere:

• DATI<-read.table(‘‘nomepercorsodati’’, header=TRUE, sep=‘‘\t’’)• (è slash, non back‐slash)

Page 289: Prof. Raffaella Folgieri

Risorse su R Altri tutorial per approfondire: Engineering Department Cambridge University http://mi.eng.cam.ac.uk/~mjfg/local/I10/i10_hand4.pdf Youtube: http://www.youtube.com/watch?v=ZoPJGmpYJzw

L’ambiente R. Buoni manuali: per principianti: http://rante.org/2011/05/30/un‐altro‐manuale‐per‐r/  

tutorial: http://www.ssis.it/modelli/modelli_stat/costruire_modelli_stat_eng/doc/costruire_modelli_stat‐44.htm un altro manuale: http://cran.r-project.org/doc/contrib/Mineo-dispensaR.pdf esempi e applicazioni: http://cran.r-project.org/doc/contrib/nozioniR.pdf

Page 290: Prof. Raffaella Folgieri

pagina principale di R: http://cran.r-project.org/ (molti package, tra cui ANN)

altri sw: http://digilander.libero.it/vvillas/reti_neurali/software_per_reti_neurali.htm

free tool per ANN: http://www.justnn.com/ http://www.bcp.psych.ualberta.ca/~mike/Software/

su Wikipedia altre info: http://en.wikipedia.org/wiki/Neural_network_software

Classificazione e addestramento: SOM, SVM  

Page 291: Prof. Raffaella Folgieri

MACHINE LEARNING

In realtà le ANN vanno ricomprese nel più ampio argomento del Machine Learning.  

Il machine learning è una branca dell’Intelligenza artificiale che si occupa della progettazione e dello sviluppo di algoritmi che permettono alle macchine di evolvere le proprie attitudini basandosi su dati empirici, quali quelli provenienti da sensori o da basi di dati.  

Un learner (qui si preferirà adottare direttamente il termine inglese) può avvantaggiarsi di esempi (data) per catturare le caratteristiche di interesse di distribuzioni di probabilità sconosciute.  

Page 292: Prof. Raffaella Folgieri

I dati possono essere esempi che illustrano le relazioni tra le variabili osservate.   

Un importante obiettivo della ricerca sul machine learning è apprendere automaticamente a riconoscere pattern complessi  e prendere decisioni intelligenti basati sui dati; la difficoltà risiede nel fatto che il set di tutte la possibili attitudini dati tutti i possibili input è troppo grande per essere rappresentato dall’insieme degli esempi osservati (training data).   

Dunque il learner deve generalizzare dagli esempi dati e deve essere in grado di produrre output utili nei nuovi casi. 

Page 293: Prof. Raffaella Folgieri

   

Secondo Tom M. Mitchell   

“A computer program is said to learn from experience E         with respect to some class of tasks T             and performance measure P,                  if its performance at tasks in T, as measured by P, improves with experience E.”  

Page 294: Prof. Raffaella Folgieri

Generalizzazione La generalizzazione è l’abilità di un algoritmo di machine learning di funzionare accuratamente su nuovi, mai visti prima, esempi dopo il training su un data set finito.   L’obiettivo principale di un learner è generalizzare dalla sua esperienza.   Gli esempi di training provengono da alcune non conosciute probabilità di distribuzione e il learner deve estrarre da questi qualcosa di più generale, qualcosa circa la distribuzione, che gli permetta di produrre risposte utili in casi nuovi.  

Page 295: Prof. Raffaella Folgieri

Machine learning e data mining Generalmente c’é confusion tra questi termini poiché spesso adottano gli stessi metodi e vanno in sovrapposizione. Ad ogni modo, per distinguerli, basta considerare che: ‐ Il machine learning ha il focus sulla predizione, basata su proprietà conosciute apprese dai dati di training 

‐ Il data mining (che è la fase di analisi del knowledge discovery in un database) ha il focus sulla scoperta di (preventivamente) sconosciute proprietà dei dati 

Ad ogni modo, le due aree hanno parecchie sovrapposizioni: il data mining usa molti metodi di machine learning, ma spesso con differenti obiettivi.   

Page 296: Prof. Raffaella Folgieri

Interazione dell’uomo Alcuni sistemi di machine learning tendono ad eliminare il bisogno dell’intuizione umana nell’analisi dei dati, mentre altri adottano un approccio collaborativo tra uomo e macchina.   L’intuizione umana non può, comunque, essere interamente eliminata, poiché i progettisti dei sistemi devono comunque  specificare come i dati devono essere rappresentati e quali meccanismi saranno usati per ricercare la caratterizzazione dei dati.  

Page 297: Prof. Raffaella Folgieri

Tipi di algoritmi Gli algoritmi di machine learning possono essere organizzati in una tassonomia basata sul risultato desiderato: ‐ Apprendimento supervisionato (supervised learning): genera una funzione che “mappa” gli input agli output desiderati (chiamati anche etichette, perché spesso sono definite da esperti umani che etichettano gli esempi di training. Ad esempio in un problema di classificazione, il learner approssima una funzione che mappa un vettore in classi secondo alcuni esempi di input‐output della funzione. 

‐ Apprendimento non supervisionato (unsupervised learning): modella un insieme di input, quali il clustering. 

‐ Apprendimento semi‐supervisionato (semi‐supervised learning): combina sia esempi etichettati che non etichettati per generare una appropriata funzione o classificatore 

Page 298: Prof. Raffaella Folgieri

‐ Apprendimento con rinforzo (reinforcement learning): apprende come agire data un’osservazione del mondo, Ogni azione ha qualche impatto sull’ambiente, e l’ambiente restituisce dei feedback che guidano l’algoritmo di apprendimento. 

‐ Inferenza trasduttiva (Transduction o trasductive inference): cerca di predire nuovi output sucasi specifici e fissati (test) da casi osservati e specifici (training) 

‐ Imparare ad apprendere (learning to learn): apprende il suo bias induttivo sulla base di precedenti esperienze 

 

Page 299: Prof. Raffaella Folgieri

Teoria L’analisi computazionale degli algoritmi di machine learning e la loro performance è una branca della theoretical computer science conosciuta come computational learning theory.   

Dato che i training set sono finiti e il futuro è incerto, la learning theory di solito non garantisce la performance degli algoritmi.   

Invece, i confini probabilistici delle performance sono piuttosto comuni.   

In aggiunta ai confini della performance, i teorici del computational learning studiano la complessità temporale e la fattibilità di apprendimento.   

Page 300: Prof. Raffaella Folgieri

Nella teoria del computational learning, una computazione è considerata fattibile se può essere compiuta in un tempo polinomiale.   

Vi sono due tipi di risultati di complessità temporale:  1) i risultati positivi mostrano che una certa classe di funzioni può essere appresa in un tempo polinomiale;  2) i risultati negativi mostrano che certe classi on possono essere apprese in un tempo polinomiale.  Vi sono molte similarità tra la teoria del machine learning e la statistica, così spesso i due termini sono utilizzati quasi come sinonimi.  

Page 301: Prof. Raffaella Folgieri

Approcci del machine learning Decision tree. Viene utilizzato un decision tree come modello predittivo che “mappa” le osservazioni circa un’istanza con le conclusioni sul valore target dell’istanza stessa.

Association rule. E’ un metodo per scoprire relazioni tra variabili in database di grandi dimensioni.

Artificial neural network. Le computazioni sono strutturate in termini di gruppi interconnessi di neuroni artificiali, che processano informazioni utilizzando un approccio connessionista alla computazione. Le reti neurali moderne sono strumenti di modellazione dei dati statistiche, non lineari. Utilizzate per modellare relazioni complesse tra input e output, per cercare pattern nei dati, o per catturare la struttura statistica di un distribuzione di probabilità congiunta tra variabili osservate.  

Page 302: Prof. Raffaella Folgieri

Programmazione genetica. E’ una metologia basata su algoritmi evolutivi ispirati dall’evoluzione biologica per trovare programmi che compiano un task definito. E’ una tecnica di machine learning utilizzata per ottimizzare una popolazione di programmi in accordo con uno scenario determinato dall’abilità del programma di compiere un determinato task computazionale.

Programmazione logica induttiva (inductive logic programming). E’ un approccio alle regole di apprendimento utilizzando la programmazione logica come rappresentazione uniforme degli esempi, della conoscenza di background e delle ipotesi. Data una codifica della conoscenza di base ed un set di esempi rappresentati come un database logico di fatti, il sistema deriva un programma logico di ipotesi che si addestra con tutti gli esempi positivi e nessuno dei negativi.

Page 303: Prof. Raffaella Folgieri

Support Vector Machine (SVM). E’ un insieme di metodi di apprendimento supervisionato (ma oggi ve ne sono anche esempi non supervisionati) utilizzati per classificazione e regressione.

Dato un set di esempi di training, ognuno marcato come appartenente ad una delle due (o più) categorie, un algoritmo di training dell’SVM costruisce un modello che predice se uno dei nuovi esempi cade in una categoria o nell’altra.

Page 304: Prof. Raffaella Folgieri

Clustering. La cluster analysis è l’assegnazione di un insieme di osservazioni in sottoinsiemi (chiamati cluster) composti in modo che le osservazioni in uno stesso cluster sono simili in qualche maniera, mentre le osservazioni in cluster differenti sono dissimili. La varietà di tecniche di clustering dipende da diffferenti assunzioni sulla struttura dei dati, spesso definita da qualche metrica di similitudine e valutata per esepio dalla internal compactness (similitudine tra membri dello stesso cluster) e separation tra cluster differenti. Altri metodi sono bassati sulla estimated density e sulla graph connectivity. Il clustering è un metodo di apprendimento non supervisionato e una comune tecnica per l’analisi statistica dei dati.

Page 305: Prof. Raffaella Folgieri

Reti Bayesiane (Bayesian networks). E’ un modello grafico probabilistico che rappresenta un insieme di variabili random e le loro indipendenze condizionali tramite un grafo aciclico diretto (DAG).

Per esempio, una rete bayesiana può rappresentare la relazione probabilistica tra malattia e sintomi. Dati i sintomi, la rete può essere usata per calcolare la probabilità della presenza di varie malattie. Esistono algoritmi efficienti che compiono inferenza e apprendimento.

Page 306: Prof. Raffaella Folgieri

Apprendimento con rinforzo (reinforcement learning). Tratta come un agente deve intraprendere azioni in un ambiente per massimizzare alcune nozioni di ricompensa a lungo termine. Gli algoritmi di apprendimento con rinforzo cercano di trovare una policy che “mappi” gli stati del mondo sulle azioni che gli agenti devono intraprendere in tali stati. Differisce dall’apprendimento supervisionato perché le coppie input/output corretti non sono mai presentati né azioni subottimali vengono esplicitamente corrette.

Page 307: Prof. Raffaella Folgieri

Apprendimento per rappresentazione (representation learning). Molti algoritmi di apprendimento, per la maggior parte di apprendimento non supervisionato, tendono a scoprire le migliori rappresentazioni degli input forniti durante il training. Esempi classici includono la principal component analysis e la cluster analusis. Gli algoritmi di apprendimento per rappresentazione spesso cercano di preservare le informazioni negli input ma le trasformano in un modo che le rende utili, spesso durante una fase di pre-processing prima di operare la classificazione o la predizione, permettendo di ricostruire gli input provenienti dai dati generati da una distribuzione sconosciuta. Vi sono tre principali tipi di algoritmi: i manifold learning, gli spars coding, i deep learning algorithms (approfondire, se interessa).  

Page 308: Prof. Raffaella Folgieri

Sparse Dictionary Learning.  Nell’apprendimento Sparse Dictionary un dato è rappresentato come una combinazione lineare di funzioni di base ed i coefficienti sono assunti sparsi.  (approfondire, se interessa)   

Page 309: Prof. Raffaella Folgieri

Applicazioni Attualmente il machine learning viene applicato a molti campi: machine perception              computer vision     natural language processing syntactic     pattern recognition search engines                medical diagnosis bioinformatics                 brain‐machine interfaces cheminformatics                Detecting credit card fraud stock market analysis             Classifying DNA sequences Sequence mining                speech and handwriting recognition game playing                  software engineering  object recognition in computer vision    adaptive websites robot locomotion               computational finance   structural health monitoring          affective computing   Sentiment Analysis (Opinion Mining)    Recommender systems  

Page 310: Prof. Raffaella Folgieri

Software Vi sono vari tipi di software che contengono un’ampia varietà di metodi di machine learning.   Tra questi ne ricordiamo alcuni: RapidMiner, LIONsolver, KNIME, Weka, ODM, Shogun toolbox, Orange, Apache Mahout, scikit‐learn, mlpy. 

Chi era John Henry Holland? Approfondire Chi era David B. Fogel? Approfondire  

Page 311: Prof. Raffaella Folgieri

Discussione 3: Sapere, Saper fare, dover fare. La deontologia della conoscenza Stiamo attraversando un’epoca che ha indotto profonde mutazioni - nell’atteggiamento sociale (globalizzazione di idee, scopi, utopie e

distopie), - nella psiche e nel pensiero (le nuove generazioni sono telepatiche -

nel senso di τηλε (tele)=”lontano, a distanza” e πάθεια (pateia)=”emozione, sentimento” - visto che comunicano le proprie emozioni tramite la tecnologia? Siamo sempre più isolati, depressi, richiusi in noi stessi o siamo più altruisti, rispettivamente a causa delle – o grazie alle - tecnologie “social”?),

- nella stessa biologia umana (con le protesi, siamo più o meno umani di un tempo? Che distanza c’è tra noi e le macchine?).

Page 312: Prof. Raffaella Folgieri

Occorre riflettere su: - potente leva che l’Informatica rappresenta, - quanto le metodologie di apprendimento, di insegnamento e di condivisione del sapere siano state modificate e siano oggetto di continua discussione e adeguamento. Occorrerebbe non seguire il progresso, ma anticiparlo! Il pericolo di perdere anche la conoscenza attuale delle tecnologie è più grande di quanto si pensi. La vera generazione di esperti è, in linea di massima, tagliata fuori dal processo di trasmissione della conoscenza, per vari motivi. La generazione X (“X”, perché “cassata” dai meccanismi di trasmissione delle competenze) non ha avuto la possibilità di accedere a posizioni che permettessero di trasmettere le proprie conoscenze (infatti è la generazione di precari fino alla pensione), perché lo spazio era già occupato da precedenti generazioni che, però, tali competenze non le hanno acquisite (e quindi non hanno potuto trasmetterle).

Page 313: Prof. Raffaella Folgieri

Risultato: i giovani, che pure hanno e avranno difficoltà di inserimento lavorativo, non hanno neanche ricevuto le nozioni necessarie a continuare il progresso delle tecnologie e, troppo spesso, ne sono solo utilizzatori, sovente anche in modo semplicistico e passivo.

Page 314: Prof. Raffaella Folgieri

Chi, allora, in futuro, padroneggerà le tecnologie? Pochi eletti che hanno avuto modo (o la fortuna, o la possibilità economica di poterlo fare) di approfondire taluni aspetti della conoscenza? Grandi aziende internazionali che si accaparrano questi soggetti o sviluppano al loro interno team di esperti con competenze specifiche (ma non così ampie da poter rappresentare un pericolo per lo status quo), come profetizzato da molti film di fantascienza? A chi andrà il potere (che evidentemente è costituito in gran parte dal possesso e dalla capacità di analizzare e manipolare le informazioni, soprattutto digitali) in futuro? Ma soprattutto: chi sono i responsabili di tutto ciò?

Page 315: Prof. Raffaella Folgieri

I responsabili sono soprattutto i giovani, che non sono abbastanza autocritici da rendersi conto di non avere acquisito le necessarie competenze (forse per un’intenzione voluta dall’alto) e che non si danno da fare per acquisirle anche autonomamente, a costo di fatica personale, sfruttando (invece di usarli solo per scopi di divertimento) i potenti mezzi di informazione a disposizione quali Internet. Si vuole qui ricordare la Montessori, il cui motto era “Insegnami a fare da solo”. “metodo della ricerca”

Page 316: Prof. Raffaella Folgieri

Quale paradigma di insegnamento (e di apprendimento) occorrerebbe, allora, adottare? Quale strategia potrebbe risultare vincente? Si consideri la tecnologia, anzi, in una accezione più ampia, l’Informatica: alla luce di quanto scritto precedentemente, qual è il futuro di questa disciplina? E, per tornare ad un quesito già esposto: come sarà l’informatica nel futuro?

Page 317: Prof. Raffaella Folgieri

Crisi intellettuale, dalla quale devono nascere o rinascere nuovi spunti. Il problema è che, nel tempo, si è dato poco risalto al generale, al trasversale e ci si è concentrati sul particolare. Troppo. L’Informatico, nella mente comune, è diventato il tecnologo, il programmatore, definizioni ben lontane dal vero ruolo che svolge. Occorre sicuramente ritornare al generale. Recuperare la capacità di astrazione.

Page 318: Prof. Raffaella Folgieri

Si consideri il mondo del business. I business più redditizi oggi, a livello mondiale, sono basati su un modello informatico per gestire contenuti (esempi: ebay, google, youtube, wikipedia…). Le aziende più fiorenti sono quelle che si basano su modelli informatici più delle altre (sia aziende ICT – es. IBM, Apple, Microsoft – sia aziende finance – on line banking – sia aziende di altro tipo che utilizzano la tecnologia ICT per differenziarsi – settori automotive, energia, industrie, TV, entertainment, 3D…). La conclusione è che oggi l’Informatica non fornisce più supporto al business, ma CREA i business. Si estenda il concetto…. gli informatici sono passati da interpreti di modelli matematici a interpreti e solutori dei bisogni ed ora a registi, creatori, modellatori di mondi (si guardi ai mutamenti indotti dall’Informatica nella Società).

Page 319: Prof. Raffaella Folgieri

Cosa succederà quando in Internet arriveranno nuove culture? (orientale, Terzo Mondo)

Page 320: Prof. Raffaella Folgieri

Jimmy Wales (Wikipedia) alleanza con OLPC5, Negroponte6, piattaforma XO7 per portare i primi contenuti aperti dell’enciclopedia collaborativa in territori in cui non vi sono strumenti per raccogliere conoscenza, cultura e memoria dei gruppi e delle popolazioni. Nei prossimi 10 anni saremo esposti in modo completo a culture e idee diverse, che troveranno per la prima volta l’opportunità di mettersi in rete ed evolvere.

                                                            5 One Laptop Per Child (OLPC) è un'organizzazione no‐profit creata per sovraintendere al progetto del computer da 100 dollari, $100 laptop. 6 Nicholas Negroponte è un informatico statunitense, celebre per i suoi studi innovativi nel campo delle interfacce tra uomo e macchina. 7 Insieme a Sugar, XO è un portatile/tablet creato da OLPC. 

Page 321: Prof. Raffaella Folgieri

L’open source8 è nato perché competenze “sparpagliate” in giro per il mondo hanno potuto incontrarsi. Inoltre la Rete ha cambiato il concetto di diritto d’autore, di privacy, di bene, e, perciò, ha modificato il valore rispetto agli acquisti tradizionali, tant’è che si parla di coda lunga, e cioè del fatto che ora le nicchie contano di più che i mass-market.

                                                            8  termine inglese che  significa “codice  sorgente aperto”.  In informatica,  indica un software i  cui  autori  (più  precisamente  i  detentori  dei  diritti)  ne  permettono  e favoriscono  il  libero  studio  e  l'apporto  di  modifiche  da  parte  di altri programmatori indipendenti.   

Page 322: Prof. Raffaella Folgieri

Se questo è nato dalla cultura occidentale, cosa succederà quando in Rete arriverà la cultura orientale, con valori, bisogni, idee, fantasie differenti? Anche più banalmente: visti i limiti (economici, politici, geografici) come si diffonderà in termini di massa, la tecnologia in quei mercati? Che forma assumerà? Quale modello sarà più adeguato?

Page 323: Prof. Raffaella Folgieri

Si consideri l’esempio della Cina, per cui informatizzare vuol dire aprirsi ad un nuovo mercato che è totalmente di dominio degli occidentali, soprattutto degli USA. La Cina pensa al Giappone, che, aiutato dalla barriera naturale della lingua e dalla spinta autarchica dell’Industria sempre coordinata con lo Stato, avanza tecnologicamente. Due grandi mercati interni che riescono a sostenere l’economia tecnologica locale, che cresce senza disperdersi con le importazioni. In più, la tecnologia informatica è una risorsa strategica per un Paese che non condivide le idee politiche dell’Occidente. Allora cosa fa la Cina?

Page 324: Prof. Raffaella Folgieri

Costruisce una propria via all’Informatica: copia e innova i prodotti occidentali e crea un mondo informatico autoctono. Si pensi al computer “Sogno del Dragone”, Longmeng, basato sul processore Loongson, “Figlio del dio”, realizzato interamente in Cina, a partire da un processore MIPS su cui sono state portate varie distribuzioni di Linux…siamo alla terza generazione…basso consumo e basso prezzo di produzione (è venduto a circa 100$), sistema aperto che può essere “verificato” ed eventualmente “chiuso”… Ci sarà una via della seta per la tecnologia?...

Page 325: Prof. Raffaella Folgieri

Lo sviluppo dei sistemi cognitivi avrà un forte impulso, intendendo con questi sia l’applicazione di modelli tradizionali, sia il ripensamento degli stessi e l’applicazione o l’integrazione con l’AI. Avrà sempre più sviluppo il campo della rappresentazione dell’informazione in tutti i suoi aspetti, l’analisi degli aspetti umani per colmare il gap tra macchina e umanità. Tecnologicamente siamo anche alle porte dell’ingresso di macchine pensanti nella vita quotidiana: l’umanità è sempre più incapace e insicura nel quotidiano. Invecchiamo e diminuiamo numericamente (almeno noi occidentali) e dunque le autovetture devono essere intelligenti, la tecnologia semplice, le macchine devono servirci (robot), i supporti devono aiutarci a salvare il mondo (no carta, ad esempio), tutto deve essere ubiquo e sotto controllo (le autostrade dell’informazione).

Page 326: Prof. Raffaella Folgieri

Per disegnare nuovi mondi, nuovi modelli, nuovi sistemi, robot, nuove macchine e nuovi modi di interagire, le competenze degli informatici devono essere più solide in termini di capacità di astrazione e al contempo devono essere più trasversali, per poter ridisegnare questa nuova era.

Page 327: Prof. Raffaella Folgieri

In questo scenario, come deve cambiare l’apprendimento e, conseguentemente, l’insegnamento?

Page 328: Prof. Raffaella Folgieri

La crisi (di apprendimento e insegnamento) non riguarda, tuttavia, solo l’Informatica, ma tante altre discipline. Si potrebbe anche affermare che le riguardi tutte, poiché, crescendo la mole di informazioni da ritenere per ciascuna disciplina, diminuendo le ore di lezione da dedicare a ciascuna materia (visto il numero non indifferente di materie scolastiche del sistema italiano9), le nozioni che è possibile trasmettere sono necessariamente inferiori al passato (poiché non si può approfondire) se parliamo di quelle legate ai confini geografici e alla cultura locale, e necessariamente meno approfondite a causa della globalizzazione (che ha fatto sorgere la necessità di ampliare gli orizzonti territoriali di una materia).                                                             9 Nel sistema scolastico italiano vi sono molte materie obbligatorie, mentre all’estero (prendiamo ad esempio, in UK i key stage) vi sono alcune materie obbligatorie (in misura molto minore) e altre facoltative, per creare un percorso di studi personalizzabile. 

Page 329: Prof. Raffaella Folgieri

Quale atteggiamento di apprendimento e di insegnamento è, quindi, deontologicamente corretto?

Page 330: Prof. Raffaella Folgieri

Il mio pensiero: smettere di insegnare il superfluo! Abbandonare l’idea della specializzazione. Si insegni ad usare bene gli strumenti tecnologici, le metodologie di indagine, i principi generali, in modo che poi tutti siano completamente autonomi nell’applicarli!

L’applicazione di metodi innovativi e la disponibilità di strumenti tecnologici permetterebbero un approccio “finalizzato” ai problemi di apprendimento, la personalizzazione del percorso di studio di ciascuno con il potenziamento di specifiche caratteristiche personali, l’utilizzo di strumenti di rinforzo cognitivo e della creatività basato su metodi scientificamente provati (musica, arte), il potenziamento della didattica delle lingue, e così via. In molti corsi di laurea non scientifici, l’Informatica è vista come materia complementare ed è insegnata in modo rudimentale e sommario!

Page 331: Prof. Raffaella Folgieri

In conclusione, tornando al confronto tra intelligenza umana e intelligenza artificiale, si noti come le macchine attualmente apprendano secondo un principio simile a quello esposto: sono impartiti loro i concetti di base (i programmi in grado di assimilare la conoscenza che acquisiranno dopo) e poi l’apprendimento automatico fa evolvere il sistema. Il processo è veloce, mirato e funzionale. Si pensi agli algoritmi di Machine Learning, applicabili a tutte le discipline di studio. Questi apprendono e si evolvono a seconda delle informazioni all’occorrenza passate alla macchina. L’algoritmo, cioè, è sempre lo stesso, ma cambiano le informazioni fornite successivamente. Questo approccio è adottabile anche per l’intelligenza umana.

Page 332: Prof. Raffaella Folgieri

Vi sono molte analogie tra l’apprendimento naturale e quello delle macchine, tant’è che molte delle tecniche utilizzate per le macchine sono nate proprio dall’intenzione di studiare i meccanismi umani attraverso modelli di calcolo. In modo semplice, possiamo dire che una macchina apprende ogni volta che cambia la propria struttura, i propri programmi, o i dati (sulla base di input ricevuti o di informazione esterna), in modo da migliorare le prestazioni future attese. Ad esempio, quando le prestazioni di una macchina di riconoscimento vocale migliora, una volta ascoltati diversi campioni di testo parlato da un individuo, possiamo, a ragione, affermare che la macchina ha appreso.

Page 333: Prof. Raffaella Folgieri

Ma perché le macchine dovrebbero imparare?

Page 334: Prof. Raffaella Folgieri

Vi sono diversi motivi per cui l’apprendimento automatico è importante. Come si è già accennato, in primis per studiare i meccanismi di apprendimento delle intelligenze naturali. Inoltre, alcune funzioni non possono essere definite se non tramite un esempio, cioè in alcuni casi siamo in grado di specificare coppie “input/output” ma non un rapporto tra gli input e gli output desiderati. In questo caso è auspicabile predisporre una macchina in grado di adeguare la sua struttura interna per produrre autonomamente uscite (risultati) corrette per un gran numero di ingressi campione (ad esempio tramite una funzione di uscita che approssimi la relazione implicita tra gli esempi forniti). E’ anche possibile che in enormi moli di dati siano racchiuse importanti relazioni e correlazioni. I metodi di apprendimento automatico sono spesso utilizzati per estrarre tali rapporti.

Page 335: Prof. Raffaella Folgieri

Dunque l’apprendimento di principi generali e la successiva applicazione specifica a partire da determinati approfondimenti (chiamiamoli dati, esempi, informazioni, dettagli, a seconda del caso) rappresenta una strategia valida sia per l’intelligenza naturale che per quella artificiale.

Page 336: Prof. Raffaella Folgieri

In conclusione: le macchine hanno comportato la diffusione della conoscenza o il suo impoverimento?

Page 337: Prof. Raffaella Folgieri

NOTE FINALI

“digital divide”: il divario esistente tra chi ha accesso alle tecnologie dell’informazione (in modo parziale o totale) e chi ne è escluso per vari motivi: per la mancanza o la scarsa qualità delle infrastrutture, per le condizioni economiche, per il livello di istruzione o per l’età, il sesso, la provenienza geografica, per differenze generazionali. "One Laptop Per Child" è stata fondata da varie organizzazioni sponsor (tra queste: Google, Red Hat, AMD…) Anche il MIT Media Lab è stato coinvolto nel progetto. L’iniziativa ha l’obiettivo di produrre e fornire un laptop da 100$ ad ogni bambino del modo, in special modo a quelli nei Paesi in via di sviluppo, per facilitare l’accesso alla conoscenza e alle moderne forme educative. Alcune consegne sono già state effettuate in Argentina, Brasile, Libia, Nigeria, Ruanda, Thilandia e Uruguay.

Page 338: Prof. Raffaella Folgieri

Il progetto è in ritardo e tante sono le polemiche e, ormai, sono disponibili tanti dispositivi a basso costo.

Nicholas Negroponte è un informatico statunitense, celebre per i suoi studi innovativi nel campo delle interfacce tra uomo e macchina. Famoso, tra le altre cose, per gli studi sul CAD (computer Aided Design). Ha fondato la celebre rivista di tecnologia Wired assieme a Luigi Rossetto. E’ uno dei promotori del progetto OLPC. Qui un bel TED in cui Negroponte illustra il progetto One Laptop Per Child: http://www.ted.com/talks/nicholas_negroponte_on_one_laptop_per_child.html  

Page 339: Prof. Raffaella Folgieri

Tera è un prefisso SI (Sistema Internazionale di misura) che esprime il fattore 1012, ovvero 10004, ovvero 1 000 000 000 000, ovvero mille miliardi. La stessa parola in informatica è intesa come l’abbreviazione di Terabyte (TB), in cui “byte” viene sottinteso, che vale 1.099.511.627.776 byte (2^40). Si ricordi che 1 byte corrisponde ad una sequenza di bit (1 bit vale 0 oppure 1), il cui numero dipende dalla macchina che si sta considerando. Un byte corrisponde al numero di bit utilizzati per codificare un singolo carattere di testo (lettera, numero o punteggiatura) in un elaboratore. Generalmente 1 byte si intende formato da 8 bit. Facendo le opportune conversioni, si calcoli quante lettere dell’alfabeto si possono immagazzinare in un Hard-disk di capacità 1 Tera.

Page 340: Prof. Raffaella Folgieri

PROGRAMMAZIONE EVOLUTIVA

E’ anch'essa ispirata all'evoluzione naturale ma non alla genetica. Tale metodologia differisce dagli algoritmi genetici in quanto non utilizza l'operazione genetica di crossover, che invece per questi risulta imprescindibile.  

Page 341: Prof. Raffaella Folgieri

PROGRAMMAZIONE GENETICA

Elaborata fondamentalmente ad opera di John R. Koza, è un metodo per la generazione automatica di programmi, a partire da una descrizione ad alto livello del task da svolgere, e basato sul principio darwiniano della selezione naturale allo scopo di sviluppare una popolazione di programmi migliorativi nell'arco delle successive generazioni. Si avvale di operazioni capaci di alterare l'architettura di detti programmi e di prendere decisioni sull'uso delle subroutine, dei loop, della ricorsione e della memoria.

Page 342: Prof. Raffaella Folgieri

Da ciò si nota che la programmazione genetica costituisce in sostanza un'estensione degli algoritmi genetici al caso di popolazioni costituite da programmi di dimensione variabile; la programmazione genetica sostituisce in altri termini alla stringa di lunghezza costante, codificata in vario modo, un programma con struttura ad albero, il cui corpo (radice, nodi intermedi) è costituito da funzioni aritmetiche o logiche, mentre i nodi terminali rappresentano variabili o costanti numeriche. Pertanto la popolazione risulta ora composta da un numero opportuno di programmi, i quali mediante le operazioni genetiche di riproduzione (non è prevista alcuna mutazione) producono, in un certo numero di generazioni, il programma che risolve al meglio un problema assegnato, in forma topologica parametrizzata.  

Page 343: Prof. Raffaella Folgieri

NEUROEVOLUZIONE

Indica l’utilizzo degli algoritmi genetici, o di altri metodi e tecniche evolutive, nella messa a punto delle reti neurali artificiali, per quanto riguarda sia l'architettura della rete (cioè la sua struttura intesa come numero di nodi e numero di connessioni tra i nodi stessi), sia i parametri relativi (ossia i pesi delle connessioni tra i nodi). Un metodo neuroevolutivo degno di nota è quello proposto recentemente da K. Stanley, denominato NEAT (NeuroEvolution of Augmenting Topologies), e basato su un processo di graduale incremento della complessità strutturale delle reti che si propongono di risolvere un problema assegnato (tipicamente un problema di reinforcement learning).

Page 344: Prof. Raffaella Folgieri

A partire da reti estremamente semplici (completamente prive di neuroni intermedi) la procedura sembra avere maggiori possibilità di determinare soluzioni efficaci e robuste rispetto a metodi analoghi, che partono da topologie predeterminate o casuali. Tre princìpi fondamentali su cui si basa il NEAT: 1. il primo principio è l'omologia: il NEAT codifica ciascun nodo e ciascuna

connessione della rete attraverso un gene. Ogni volta che una mutazione strutturale sfocia nella creazione di un nuovo gene, quel gene riceve un contrassegno numerico che lo rende permanentemente rintracciabile. Tale marcatura storica è utilizzata in seguito per verificare la conciliabilità di geni omologhi durante l'operazione di crossover, e per definire un operatore di compatibilità;

2. il secondo principio è la protezione dell'innovazione. L'operatore di compatibilità definito in precedenza è adoperato per dividere la popolazione, composta da reti neurali, in specie differenti, allo scopo di proteggere le soluzioni innovative da un'eliminazione prematura, e di prevenire l'incrocio di materiale genetico incompatibile. Tali innovazioni strutturali presentano una significativa possibilità di raggiungere il loro pieno potenziale, in quanto protette dal resto della popolazione attraverso la suddivisione in specie, cioè la creazione di nicchie o spazi riservati;

Page 345: Prof. Raffaella Folgieri

3. infine, il principio secondo cui la ricerca di una soluzione dovrebbe avvenire nel più piccolo spazio possibile (inteso come numero di dimensioni), da espandere poi in maniera graduale. Cominciando il processo evolutivo da una popolazione di elementi a struttura minima, le successive mutazioni topologiche comportano l'aggiunta di nuovi nodi e connessioni alle reti, conducendo pertanto ad una crescita incrementale della popolazione stessa. Dal momento che solo le modifiche strutturali vantaggiose tendono a sopravvivere nel lungo termine, le topologie che vengono raffinate tendono ad essere le minime necessarie alla soluzione del problema assegnato.

Page 346: Prof. Raffaella Folgieri

ALGORITMI GENETICI

Sono una famiglia di modelli computazionali ispirati alle teorie darwiniane dell’evoluzione. Sono uilizzati da programmi su altri programmi, quindi non è coinvolto nessun essere vivente e non hanno legami con l’ingegneria genetica. Rappresentano tecnica per trovare soluzioni a particolari problemi che, usando altri algoritmi più tradizionali, risulterebbero di difficile soluzione. Hanno applicazione nell’AI.

Page 347: Prof. Raffaella Folgieri

Si prenda l’esempio di un algoritmo che permette di scoprire la strada più breve tra un punto A e un punto B (si pensi a Google Map o a un navigatore). In questo caso, l’algoritmo di ricerca registra il punto di partenza, il punto di arrivo e “prova” le varie strade che congiungono i due punti, fino a trovae la strada ottimale. Allo stesso modo, un algoritmo può risolvere problemi di altra natura, tentando varie soluzioni fino a che non ha trovato quella migliore. Un algoritmo genetico cerca di ottimizzare e migliorare questa ricerca, utilizzando una soluzione ispirata alla biologia e all’evoluzione.

Page 348: Prof. Raffaella Folgieri

Come in natura sopravvivono e si moltiplicano gli esemplari più adatti al loro ambiente, così in un algoritmo genetico sono le soluzioni più adatte a essere portate avanti, fino a che non si arriva alla soluzione ottimale per il problema.

Di fronte a un problema, un algoritmo genetico produce una prima “generazione” di possibili soluzioni, composte in maniera puramente casuale. Dopo averle prodotte, le valuta sulla base del risultato a cui si deve giungere: chi ci è andato più vicino, avrà maggiori probabilità di sopravvivere e riprodursi, tramandando alla prossima generazione il proprio patrimonio genetico. Di generazione in generazione, dunque, la popolazione dovrebbe arrivare sempre più vicina alla soluzione ottimale del problema, fino a trovare la risposta.

Page 349: Prof. Raffaella Folgieri

Un algoritmo genetico produce dunque una popolazione virtuale, il cui scopo nella vita è trovare la soluzione a un problema. Grazie al meccanismo di selezione dei migliori, ogni generazione ottiene risultati migliori rispetto alla precedente, fino ad arrivare a un punto dove non è più possibile migliorarsi: quella sarà la soluzione ottimale. Entriamo più nello specifico. Il problema iniziale è scomposto in una serie di piccoli elementi, ognuno dei quali rappresenta un possibile frammento della soluzione: questi elementi sono chiamati geni.

Page 350: Prof. Raffaella Folgieri

Una sequenza di geni rappresenta una possibile soluzione ed è chiamata genoma.

Ogni genoma è contenuto in un cromosoma, che è un “individuo” della popolazione.

Un algoritmo genetico crea dunque una popolazione di cromosomi, combinando in modo casuale i geni di cui dispone.

Dopo averli creati, esamina il genoma dei vari cromosomi e guarda quanto questo genoma sia vicino alla soluzione che deve trovare: più il genoma è vicino e più alte saranno le probabilità che quel cromosoma si possa riprodurre. La riproduzione consiste nel selezionare due cromosomi, prelevare da ognuno una parte del suo genoma e unirlo, per creare un nuovo cromosoma, che sarà composto in parti più o meno uguali dal genoma dei due genitori.

Page 351: Prof. Raffaella Folgieri

Di tanto in tanto, a questa fase può essere applicata una mutazione, che consiste spesso nell’invertire la posizione di due geni all’interno del genoma: un processo che vuole imitare quanto accade in natura e che serve a introdurre una novità, per evitare che a ripetersi siano sempre gli stessi modelli.

Dopo aver prodotto in questo modo una nuova generazione di cromosomi, si riparte col processo di valutazione e riproduzione.

Tutto ciò può sembrare molto dispendioso e lungo, ma in realtà un algoritmo genetico di solito ottiene risultati in tempi molto più brevi di un algoritmo di altro tipo.

Page 352: Prof. Raffaella Folgieri

Un esempio classico di applicazione degli algoritmi genetici è il problema del commesso viaggiatore (in inglese Traveling Salesman Problem, abbreviato in TSP).

Il problema è il seguente: un commesso viaggiatore deve visitare un certo numero di città, una dopo l’altra, e deve farlo seguendo la strada più breve, senza ripassare mai per la stessa città.

Vediamo come si risolve con un algoritmo genetico…

Page 353: Prof. Raffaella Folgieri

Ogni città corrisponde a un gene. Il genoma di ogni cromosoma sarà dunque formato da una sequenza diversa delle città da attraversare: un possibile itinerario, insomma, cioè una possibile soluzione. Per valutare un cromosoma, si guarderà la lunghezza totale del percorso che rappresenta, ossia la distanza che c’è tra ogni città, seguendo l’ordine in cui sono disposte nel suo genoma. Lo scopo è quello di trovare il percorso più breve, quindi i cromosomi con una distanza complessiva più bassa saranno i migliori, mentre quelli con una distanza complessiva più alta saranno i peggiori.

Page 354: Prof. Raffaella Folgieri

I cromosomi che rappresentano un percorso più breve avranno maggiori probabilità di produrre i cromosomi della prossima generazione: in questo modo, a ogni generazione ci si dovrebbe avvicinare sempre più al traguardo ideale, ossia un cromosoma che possieda tutte le città, disposte in modo da ridurre al minimo la distanza da percorrere.

La fase di riproduzione consisterà nell’unire i genomi di due cromosomi, per produrre un cromosoma che sia la sintesi dei loro percorsi, mentre la mutazione consisterà nello scambiare di posizione due città, all’interno del percorso.

Page 355: Prof. Raffaella Folgieri

Dettagli di funzionamento

La soluzione del problema viene codificata in una struttura, di solito una stringa, detta "gene".

Inizialmente viene creato un certo numero di geni in maniera casuale e si definisce una funzione che restituisca la "bontà" di un gene come soluzione del problema, detta funzione di fitness.

L'algoritmo consiste nell'applicazione di operazioni, che tendono a modificare la popolazione dei geni, nel tentativo di migliorarli in modo da ottenere una soluzione sempre migliore.

L'evoluzione procede quindi in passi, per ognuno di questi viene per prima cosa eseguito un ordinamento sui cromosomi sulla base del risultato della funzione di fitness. Vengono poi eseguite le operazioni su un numero di cromosomi stabilito dai parametri dell'algoritmo, che in generale determinano quanti di questi cromosomi devono subire crossover e mutazioni, e in quale misura.

Page 356: Prof. Raffaella Folgieri

L'algoritmo evolve quindi attraverso i seguenti punti: generazione, in maniera casuale, di una popolazione iniziale; creazione di una sequenza di nuove popolazioni, o generazioni. In ciascuna

iterazione, gli individui della popolazione corrente sono usati per creare la generazione successiva, e a questo scopo si compiono degli ulteriori passi: ciascun membro della popolazione corrente è valutato calcolandone il

rispettivo valore di fitness (idoneità); si determina un opportuno ordinamento di tali individui sulla base dei valori

di fitness; gli individui più promettenti sono selezionati come genitori; a partire da tali individui si genera un pari numero di individui della

generazione successiva, e ciò può avvenire secondo due modalità distinte, vale a dire effettuando cambiamenti casuali su un singolo genitore (mutazione) oppure combinando opportunamente le caratteristiche di una coppia di genitori (incrocio);

gli individui così generati insieme ai genitori (la progenie) vengono selezionati,in base al loro valore nella funzione di fitness, per formare la generazione successiva;

infine, l'algoritmo s'interrompe quando uno dei criteri d'arresto è soddisfatto.

Page 357: Prof. Raffaella Folgieri

Crossover In base a un coefficiente stabilito inizialmente, alcune parti dei geni risultati migliori vengono scambiate, nell'ipotesi che questo possa migliorare il risultato della funzione di fitness nel successivo "passo evolutivo".

Single point crossing over

Varie tecniche di crossing over. Una delle più semplice è la "single point crossing over" che consiste nel prendere due individui e tagliare le loro stringhe di codifica in un punto a caso. Si creano così due teste e due code. A questo punto si scambiano le teste e le code, ottenendo due nuovi geni.

Page 358: Prof. Raffaella Folgieri

Il crossing over non è applicato sempre, ma con una probabilità . Nel caso in cui non viene applicato i figli sono semplicemente le copie dei genitori. Sperimentalmente si può vedere che il miglioramento diventa apprezzabile solo dopo un certo numero di passi. Questo a meno di casi fortunati, ovviamente.  

Page 359: Prof. Raffaella Folgieri

Mutazione La mutazione consiste nella modifica casuale di alcune parti dei geni con valore di fitness più basso, in base a coefficienti definiti inizialmente. Queste modifiche puntano a migliorare il valore della funzione per il gene in questione. In realtà non è corretto pensare di mutare solo i cromosomi con fitness più bassa; al fine di garantire una maggiore capacità esplorativa dell'algoritmo (e non finire in "buche" di ottimo locale) sono ritenute utili anche le mutazioni di cromosomi con valore di fitness alto.

Page 360: Prof. Raffaella Folgieri

In definitiva le mutazioni servono soprattutto a esplorare lo spazio di ricerca, e non hanno quindi scopo migliorativo, anche perché vengono effettuate in modo probabilistico e non deterministico e quindi ogni cromosoma potrebbe essere mutato in modo diverso. Quindi, riassumendo… Si è detto che ogni individuo della popolazione, (o ogni soluzione) è codificato sotto forma di stringa, detta Cromosoma. Il sistema di codifica più utilizzato è il sistema binario.

Page 361: Prof. Raffaella Folgieri

Ogni soluzione è quindi rappresentata (codificata) come una stringa di 0 ed 1. Ad esempio, una soluzione di un problema a 2 variabili può essere rappresentata come: 0 0 0 1 0 1 0 0 1 1 1 0 0 0 1 1 0 1 0 1 Dove le prime 10 cifre codificano la prima variabile e le seconde 10 codificano la seconda. Ogni soluzione, possiede una Fitness, ovvero una misura di quanto la soluzione è in grado di rispondere al problema posto.

Page 362: Prof. Raffaella Folgieri

Cosi come nella natura solamente gli individui che meglio si adattano all’ambiente sono in grado di sopravvivere e di riprodursi, anche negli algoritmi genetici le soluzioni migliori sono quelle che hanno la maggiore probabilità di trasmettere i propri geni alle generazioni future.

Individui con fitness elevata (rispetto alla fitness media della popolazione) probabilmente verranno selezionati come genitori per la futura generazione di soluzioni.

Dopo aver selezionato un numero n di individui, l’algoritmo genetico emula la riproduzione sessuata che avviene in natura e ri-combina il materiale genetico dei genitori, dando vita ai figli, ovvero alla futura generazione di soluzioni.

La ri-combinazione avviene tramite gli operatori genetici di Cross Over e Mutazione Puntuale. La nuova generazione di soluzioni prende il posto della generazione precedente, dalla quale è nata per ri-combinazione. Il processo viene reiterato per un numero x di volte fino a quando o si raggiunge un’approssimazione accettabile della soluzione al problema o si raggiunge il numero massimo di iterazioni prefissato.

Page 363: Prof. Raffaella Folgieri

Schematizzando, gli elementi costitutivi di un algoritmo genetico sono: Popolazione: costituita da un numero n di individui. Ogni individuo

rappresenta una possibile soluzione al problema. (continua) Funzione Fitness: la funzione di Fitness è una funzione in grado di

valutare quanto una soluzione è adatta a risolvere il problema dato. Ad ogni soluzione corrisponde quindi un valore di fitness.

Principio di selezione: Il principio di selezione ha il compito di selezionare gli individui della popolazione (le soluzioni) che meglio rispondono al problema da risolvere. La selezione si basa sulla fitness degli individui; le soluzioni con fitness maggiore (rispetto alla media della popolazione) avranno maggiori possibilità di partecipare alla riproduzione e quindi di trasmettere alle future generazioni i propri geni. (continua)

Page 364: Prof. Raffaella Folgieri

Operatori genetici: prendendo spunto dalla biologia, gli operatori genetici combinano i geni delle diverse soluzioni al fine di esplorare nuove soluzioni. Una volta che un gruppo di soluzioni viene individuato come idoneo alla riproduzione, l’operatore genetico di cross over, emulando la riproduzione sessuata degli esseri viventi, combina i geni dei genitori e formula una nuova generazione di soluzioni. Un altro operatore genetico largamente utilizzato è la Mutazione puntuale. La mutazione puntuale agisce direttamente sui figli, andando a modificare un gene a caso.

 

Page 365: Prof. Raffaella Folgieri

Un esempio famoso di algoritmo genetico: game of life (Conwell) Prima apparizione nel 1970 sullo Scientific American, nella rubrica «Giochi matematici». Dal punto di vista teorico è interessante perché ha le potenzialità di una macchina di Turing universale: in altre parole ogni cosa che può essere elaborata algoritmicamente può essere elaborata nel contesto del Game of Life. Dal momento della sua pubblicazione ha ottenuto molto interesse a causa dei sorprendenti modi in cui le diverse configurazioni evolvono. Il gioco è un esempio di sviluppo e auto-organizzazione.

Page 366: Prof. Raffaella Folgieri

È interessante per scienziati, matematici, economisti e altri osservare il modo in cui schemi complessi possono emergere dall'implementazione di regole assai semplici. Il gioco della vita ha una grande quantità di modelli conosciuti che emergono da particolari configurazioni iniziali. Poco tempo dopo la pubblicazione furono scoperti i modelli dell'R-pentamino e dell'aliante, che incrementarono l'interesse verso il gioco.

Page 367: Prof. Raffaella Folgieri

La sua popolarità fu aiutata dal fatto che una nuova generazione di minicomputer venne rilasciata sul mercato, permettendo così di lasciare il gioco in esecuzione per ore su queste macchine che sarebbero state altrimenti inutilizzate durante la notte. Per molti affezionati Life era semplicemente una sfida di programmazione, un modo divertente per non sprecare i cicli delle CPU. Per molti altri, invece, Life aveva più connotati filosofici. Si sviluppò addirittura un culto durante gli anni settanta e nella metà degli anni ottanta.

Page 368: Prof. Raffaella Folgieri

Si tratta in realtà di un gioco senza giocatori. Infatti la sua evoluzione è determinata dal suo stato iniziale, senza necessità di alcun input da parte di giocatori umani. Si svolge su una griglia di caselle quadrate (celle) che si estende all'infinito in tutte le direzioni; questa griglia è detta mondo. Ogni cella ha 8 vicini, che sono le celle ad essa adiacenti, includendo quelle in senso diagonale. Ogni cella può trovarsi in due stati: viva o morta (o accesa e spenta, on e off). Lo stato della griglia evolve in intervalli di tempo discreti.

Page 369: Prof. Raffaella Folgieri

Gli stati di tutte le celle in un dato istante sono usati per calcolare lo stato delle celle all'istante successivo. Tutte le celle del mondo vengono quindi aggiornate simultaneamente nel passaggio da un istante a quello successivo: passa così una generazione. Le transizioni di stato dipendono unicamente dal numero di vicini vivi: Una cella morta con esattamente 3 vicini vivi nasce, diventando

viva. Una cella viva con 2 o 3 vicini vivi sopravvive; altrimenti muore

(per isolamento o sovraffollamento)  

Page 370: Prof. Raffaella Folgieri

Esempi di configurazioni Nel gioco della vita compaiono configurazioni di tipi diversi, tra cui configurazioni statiche, configurazioni periodiche (oscillatori - un soprainsieme delle configurazioni statiche), e configurazioni che trasportano se stesse in giro per il mondo (navicelle spaziali). Gli esempi più semplici di queste tre classi sono raffigurati sotto, con le celle vive in nero, e le celle morte in bianco.

Blocco  Barca  Lampeggiatore Rospo Aliante (Glider)Astronave leggera (LWSS) 

Page 371: Prof. Raffaella Folgieri

Il blocco e la barca sono oggetti stabili, il lampeggiatore e il rospo sono oscillatori, l'aliante e l'astronave leggera sono navicelle spaziali che si spostano per il mondo intanto che il tempo scorre. Le configurazioni chiamate methuselah possono evolversi per lungo tempo prima di ripetersi. Il diehard (duro a morire) è uno schema che alla fine scompare, dopo 130 generazioni. Ve ne sono molte altre. Per approfondimenti si rimanda a Internet.

Page 372: Prof. Raffaella Folgieri

Qui si trova un’implementazione del gioco: http://www.bitstorm.org/gameoflife/ Qui un semplice programma per creare vita artificiale: http://sodaplay.com/ Artificial life e algoritmi genetici (possibilità progetto) Domanda: possiamo utilizzare i linguaggi che abbiamo appreso (AIML, R) per creare un esempio di vita cellulare? Cosa sono gli algoritmi della famiglia delle Ant Colony? Approfondire      

Page 373: Prof. Raffaella Folgieri

Altri modi di rappresentare la conoscenza Vi sono infiniti modi di rappresentare la conoscenza in Informatica. Visto che è molto legato alle scienze cognitive, ci soffermeremo su un particolare campo del trattamento delle immagini, ovvero i neuroimagin funzionale e da lì ci collegheremo al trattamento dei segnali, attraverso l’argomento EEG e BCI (Brain Computer Interface).

Per finire, vedremo come la realtà virtuale può essere un ulteriore rappresentazione (della realtà) utile in esperimenti di neuroscienze e scienze cognitive (filosofia, psicologia…).

Page 374: Prof. Raffaella Folgieri

NEUROIMAGING FUNZIONALE Con il termine neuroimaging funzionale (Functional Neuroimaging) si intendono le tecnologie in grado di visualizzare, analizzare e studiare le relazioni tra aree del cervello e funzioni cerebrali. Ovviamente tali tecnologie rivestono primaria importanza nelle neuroscienze cognitive e nella neuropsicologia. Infatti consentono applicazioni sperimentali di ricerca sui processi neurocognitivi, oltre a contribuire al progresso nelle applicazioni cliniche e nella diagnostica.  

Page 375: Prof. Raffaella Folgieri

Tecniche e metodi Ve ne sono parecchi. Noi ci soffermeremo su: PET fMRI MEG EEG

Neuro/bio-feedback

Page 376: Prof. Raffaella Folgieri

 

PET (Tomografia ad emissione di positroni). Misura i cambiamenti nel flusso ematico locale (legato all’aumento di attività neuronale) definiti come regioni di attivazione. Infatti le aree del cervello si attivano in corrispondenza di un compito specifico. Una delle aree maggiormente evidenti ed ossservate per prima è quella riguardante la percezione visiva. La tecnica si basa sull’utilizzo di isotopi radioattivi, sebbene a basso numero atomico, per investigare i processi funzionali in atto all'interno dell'encefalo. Contrariamente a quanto accade per la fMRI, che si basa sulle variazioni dei flussi d'ossigeno, la PET esamina invece i processi di attivazione

Page 377: Prof. Raffaella Folgieri

neuro-funzionali in base alle variazioni del glucosio nelle diverse aree corticali. Per farlo viene somministrato al soggetto una dose di glucosio radioattivo che funge da contrasto, e permette la registrazione delle variazioni di tale sostanza durante il compito assegnato. Questa tecnica vanta una grande precisione nella registrazione di variazioni glicoliche anche di dimensioni notevolmente limitate, sebbene necessiti irrimediabilmente dell'impiego di sostanze radioattive. Questo aspetto, dato l'oneroso costo d'impiego, pesa sull'adozione della tecnica e si somma, inoltre, ad una scarsa prestazione della stessa sia dal punto di vista della precisione spaziale che della rapidità di risposta del mezzo, determinandone una limitata possibilità d'utilizzo.

Page 378: Prof. Raffaella Folgieri

fMRI (Risonanza magnetica funzionale). Tra le metodologie maggiormente utilizzate e ritenute affidabili nel campo neuroscientifico, consiste nell'utilizzo delle comuni modalità di risonanza magnetica per mappare i cambiamenti metabolici nelle aree cerebrali attraverso tecniche di tracciamento delle variazioni dei livelli di ossigeno nel sangue (BOLD: Blood oxygen level dependent) correlati all'attività neuronale in atto. Permette di identificare con precisione quali aree dell'encefalo si stiano attivando grazie alle variazioni emo-dinamiche in corrispondenza dei determinati stimoli sottoposti.

Questa tecnica presenta diversi vantaggi: primo tra questi la possibilità di ottenere una mappatura delle attività neurali in maniera assolutamente non invasiva e senza l'utilizzo di radiazioni (impiegate invece dalla PET).

Page 379: Prof. Raffaella Folgieri

Un altro importante punto a favore è, poi, la precisione della risoluzione spaziale, che si calcola abbia un margine d'errore stimato tra i 3 e i 6 millimetri. Sebbene presenti molti vantaggi, questa tecnica non è del tutto immune da forti critiche che riguardano principalmente la difficoltà nella rapida analisi e la mancanza di certezza delle causalità che danno origine alle variazioni ematiche.

Page 380: Prof. Raffaella Folgieri

 

MEG (Magnetoencefalografia). E’ utilizzata per valutare le fluttuazioni del campo magnetico che l'organismo produce. Studia la funzionalità cerebrale tramite la misura di tale campo magnetico generato dall'attività elettrica cerebrale. E’ una tecnica a immagini elaborate dalla misura dei campi magnetici prodotti dall'attività elettrica del cervello per mezzo di dispositivi altamente sensibili come i superconducting quantum interference devices (SQUIDs). Queste immagini vengono usate comunemente sia in ambito clinico che di ricerca.

Page 381: Prof. Raffaella Folgieri

EEG (Elettroencefalogramma). E’ una tecnica grazie alla quale è possibile rilevare l'attività elettrica prodotta dall'encefalo durante l'attivazione, tramite una serie di elettrodi posti a contatto con lo scalpo. Tale tecnica non è esattamente una metodologia ascrivibile in modo classico alla categoria brain-imaging, poiché non fornisce una mappatura grafico-morfologica delle attività neurali, tuttavia, per la risoluzione temporale e per le notevoli potenzialità, viene solitamente indicata tra le altre e contrapposta ad fMRI e PET.

Page 382: Prof. Raffaella Folgieri

I segnali elettrici registrati vengono amplificati e digitalizzati per poi essere analizzati a posteriori. Esistono diverse strumentazioni che permettono di registrare l'attività magnetica originata dall'encefalo e si distinguono a seconda dei parametri utilizzati, dalla dimensione alla praticità di utilizzo data dalla connessione cablata o wireless, fino alla tipologia di elettrodi impiegati (Wet nel caso di elettrodi a gel conduttore o Dry in caso contrario). L'EEG, infatti, tra le metodologie analizzate, è certamente quella che presenta la maggiore flessibilità d'utilizzo a fronte di un basso costo e di una risoluzione temporale eccellente, rilevandosi dunque adatta ai casi in cui l’analisi coinvolge la variabile tempo.

Page 383: Prof. Raffaella Folgieri

L’EEG presenta, infatti, diversi vantaggi, quali, appunto, l'economicità, la facilità d'utilizzo, la non invasività e l'altissima risoluzione temporale che permette di registrare i segnali in tempo reale. L'unica carenza di questa modalità analitica è invece legata alla risoluzione spaziale limitata che non consente di indagare aree troppo specifiche o troppo ristrette.

Page 384: Prof. Raffaella Folgieri

Neuro/Biofeedback anche questa tecnica, come l'elettroencefalografia è inclusa tra quelle di brain-imaging, pur non essendo nata per l’analisi e l’individuazione di aree cerebrali specifiche. Le strumentazioni utilizzate per analizzare i biofeedback permettono, infatti, di rilevare diverse attivazioni fisiologiche riconducibili a dinamiche inconsce del soggetto, la cui registrazione rappresenta un ulteriore sostegno analitico alle reazioni provocate dagli stimoli.

Page 385: Prof. Raffaella Folgieri

Tra queste, il biofeedback ci permette di osservare variazioni nella temperatura corporea, nella conduttanza cutanea (GSR Galvanic Skin Resistence, misurazione della resistenza elettrica della cute), riguardanti la frequenza cardiaca e respiratoria e l'elettromiografia (EMG, osservazione funzionale del sistema nervoso periferico). Ciò avviene tramite alcuni rilevatori ed elettrodi connessi ad un dispositivo portatile non invasivo. Questo aspetto ne fa, insieme al basso costo, uno degli strumenti più diffusi per la ricerca in campo neuroscientifico.

Page 386: Prof. Raffaella Folgieri

La grande flessibilità di questo strumento, inoltre, fa sì che venga impiegato a supporto fisso di molte tecniche fin qui analizzate, al punto che diverse case hanno ormai messo in produzione hardware che integrano diverse tipologie di analisi. Nel nostro caso, ad esempio, ogni qual volta ci riferiremo all'utilizzo di apparecchiature per la rilevazione EEG senza specificarne altre caratteristiche, ci riferiremo in realtà a tecnologie ibride che integrano spesso anche queste metodologie.  

Page 387: Prof. Raffaella Folgieri

  

Consultate questa pagina per maggiori informazioni, confronti e simulazioni sulle tecnologie viste: http://faculty.washington.edu/chudler/image.html A questo link, invece, potete trovare una curiosità: una recente scoperta di cui si è molto parlato: http://newscenter.berkeley.edu/2011/09/22/brain-movies/

Page 388: Prof. Raffaella Folgieri

EEG E RAPPRESENTAZIONE INFORMATICA DELLA CONOSCENZA Tradizionali studi di “attivazione” determinano una serie di aree di attività associate al compito specifico. Si è, quindi, in grado di comprendere meglio la funzione delle diverse strutture cerebrali, e soprattutto la loro interazione. A livello di ricerca, l’obiettivo principale dello studio delle funzioni cerebrali è la comprensione delle funzioni delle diverse aree e i collegamenti reciproci in un sistema integrato di reti neuronali. A livello clinico, lo studio funzionale è utile per la rilevazione, comprensione ed esecuzione di diagnosi differenziali in vari quadri patologici.

Page 389: Prof. Raffaella Folgieri

A livello riabilitativo, inoltre, lo studio funzionale potrebbe permettere di riattivare (o creare nuove connessioni) aree cerebrali danneggiate.

Il neuroimaging funzionale si basa su molte altre discipline oltre alle neuroscienze cognitive, comprese le scienze biologiche (come la neuroanatomia e la neurofisiologia), e campi come l'ingegneria del segnale, la fisica e la matematica, per sviluppare ulteriormente le tecnologie e le tecniche di analisi.

Noi qui ci occuperemo di EEG, perché è largamente utilizzato per scopi di ricerca comuni all’Informatica e alle Scienze Cognitive.

In particolare lo faremo attraverso le BCI (Brain Computer Interface), una tecnologia informatica di ultima generazione che utilizza l’EEG come strumento di interazione con le macchine e che viene utilizzato anche per molti scopi di ricerca, dato il basso costo, la semplicità d’uso, la risoluzione temporale e la non invasività.

Page 390: Prof. Raffaella Folgieri

Definizione e storia Un dispositivo BCI (Brain-Computer Interface) è un sistema hardware/software che legge segnali elettrici cerebrali o altre manifestazioni dell'attività cerebrale e li trasforma in forme digitali che un elaboratore può comprendere, processare e convertire in azioni ed eventi. Un device di questo tipo offre, in altre parole, una via di comunicazione diretta tra il cervello e un dispositivo esterno, quale un computer, basandosi sulla lettura di segnali elettroencefalografici. Esistono principalmente tre categorie di BCI: ‐ BCI invasivo ‐ BCI non invasivo ‐ BCI semi-invasivo

Page 391: Prof. Raffaella Folgieri

BCI invasivo questo tipo di BCI è principalmente usato nel campo della neurochirurgia, allo scopo di porre rimedio a situazioni di danneggiamento grave di alcune funzionalità cognitive o per dare nuove funzionalità a persone con disabilità fisiche non recuperabili. I BCI di questo tipo ricevono l’input dei segnali cerebrali da elettrodi impiantati chirurgicamente direttamente nella materia grigia del soggetto e hanno il vantaggio di produrre segnali precisi e di elevatissima qualità.

Page 392: Prof. Raffaella Folgieri

Di contro, lo svantaggio evidente e non indifferente è rappresentato dall’inserimento di un elemento estraneo all'interno del corpo del soggetto, che può andare incontro a reazioni di rigetto, oltre al fatto che nei pressi del dispositivo impiantato si crea tessuto cicatriziale che causa un progressivo indebolimento del segnale in uscita, fino alla perdita totale dello stesso.

Sono dunque tecniche utilizzate in casi estremi.

Ampiamente sperimentati in laboratorio sui primati, attualmente la maggiore applicazione sugli esseri umani è riservata ai casi gravi di morbo di Parkinson.

Questa patologia trae, infatti, grande beneficio dall’utilizzo di BCI invasive: i pazienti, impiantati gli elettrodi, sono in grado, attraverso comandi elettronici, di inibire completamente i movimenti involontari causati dalla malattia e recuperare, così, la qualità di vita persa a causa della progressione della patologia.

Page 393: Prof. Raffaella Folgieri

BCI parzialmente invasive sono impiantate nel teschio ma fuori dalla materia grigia.

Producono segnali migliori delle BCI non invasive e peggiori di quelle invasive, ma hanno il vantaggio di non produrre tessuto cicatriziale, evitando così il progressivo indebolimento del segnale.

Anche in questo caso sono utilizzate solo in casi gravi e con molta cautela.

Page 394: Prof. Raffaella Folgieri

BCI non invasive: questo tipo di BCI consiste in sensori che vengono “indossati”, eliminando in questo modo l'invasività dovuta all’intervento chirurgico.

Il segnale prodotto è molto meno preciso e qualitativamente inferiore, se confrontato con i BCI invasivi e parzialmente invasivi, perché la scatola cranica smorza il segnale, disperdendo le onde elettromagnetiche create dai neuroni.

Page 395: Prof. Raffaella Folgieri

Con questo tipo di tecnologia è più difficile determinare con precisione l'area specifica (quella profonda) del cervello che ha prodotto un certo tipo di onde elettromagnetiche o l'azione individuale dei neuroni, tuttavia, grazie alla conoscenza acquisita grazie alle tecniche invasive, si è in grado di leggere e interpretare in vario modo anche i segnali corticali e dunque le applicazioni sono molteplici e promettenti. Fondamentalmente i BCI non invasivi possono essere suddivisi in BCI non invasivi ad elettrodi attivi (in cui un gel conduttivo deve essere applicato fra il sensore e il cranio) e BCI non invasivi ad elettrodi passivi (senza il gel). Entrambi i tipi di BCI richiedono un collegamento (via radio o fisico) con l'elaboratore.

Page 396: Prof. Raffaella Folgieri

Il funzionamento del device è relativamente semplice: sono posti gli elettrodi nelle posizioni volute, in modo che ciascun elettrodo vada a misurare il valore delle onde elettromagnetiche prodotte dalle varie zone del cervello. Il segnale, così trasformato, è inviato all’elaboratore che interpreta il segnale ed esegue l’azione o il comando impartito. Le tecnologie descritte sono utilizzate principalmente in campo medico e nella riabilitazione di persone con disabilità fisiche o mentali, nel tentativo di creare scenari mirati alla soluzione della problematica presentata, per aiutare il soggetto a esercitare il controllo su alcune funzionalità mentali e/o fisiche perse a seguito di traumi o di malattia.

Page 397: Prof. Raffaella Folgieri

Negli ultimi tempi, grazie all'abbattimento dei costi dei componenti elettronici necessari alla costruzione di tali dispositivi, possedere un BCI è alla portata di tutti e di conseguenza si assiste allo sviluppo di un gran numero di scenari di utilizzo che si allontano dal puro campo medico per avvicinarsi al settore dell'entertainment e dell'educazione.  

 

Page 398: Prof. Raffaella Folgieri

Funzionamento di un dispositivo bci La storia delle BCI comincia con Hans Berger, lo studioso tedesco che nel 1924 registrò per primo un elettroencefalogramma (da qui in poi EEG) umano e, grazie alle sue analisi, scoprì differenti onde o ritmi presenti nel cervello, quali, ad esempio, le onde di Berger (oggi conosciute come onde Alfa, 8-12 Hz). L'EEG registra le attività cerebrali tramite elettrodi posti sulla superficie del cranio, permettendo così di misurare le piccole differenze di potenziale elettrico (dell’ordine dei microVolt) che s’instaurano tra i vari punti del cuoio capelluto.

Page 399: Prof. Raffaella Folgieri

La carica elettrica del cervello è mantenuta da miliardi di neuroni e sarebbe impossibile registrare il potenziale elettrico di un singolo neurone, quindi l'EEG rileva l’attività sincrona di centinaia o milioni di neuroni che hanno un orientamento spaziale simile, permettendo così l'individuazione di varie zone d’interesse che sono oggetto di misura. Più precisamente, i potenziali che sono misurati sulla superficie dello scalpo sono il risultato dell'attivazione dei neuroni corticali piramidali disposti in corrispondenza dell'area corticale sottostante l'elettrodo. Quando compiamo un movimento, si attivano diversi neuroni del nostro cervello e quindi, attraverso l'EEG, abbiamo la possibilità di registrare le zone del cervello coinvolte.

Page 400: Prof. Raffaella Folgieri

E' importante rilevare che non solo un'azione provoca l’attivazione dei neuroni, ma anche la mera intenzione di compiere un’azione ha lo stesso effetto, fatto fondamentale nei lavori di ricerca. Di seguito è riportato un elenco (non completo, ma relativo ai soli BCI. Approfondire) delle onde che possono essere rilevate dagli attuali dispositivi BCI, chiaramente in corrispondenza con i ritmi encefalografici osservati nello studio delle attività cerebrali nelle neuroscienze: ‐ onde Alfa ‐ onde Beta ‐ onde Delta ‐ onde Gamma ‐ onde Theta ‐ onde Mu ‐ onde Lambda ‐ onde Vertex ‐ segnali P300

Page 401: Prof. Raffaella Folgieri

 

Un esempio di EEG  

Page 402: Prof. Raffaella Folgieri

Comparazione dei dispositivi bci disponibili Ad oggi sul Mercato sono disponibili diversi prodotti pensati per ricerca, per le applicazioni ludiche e per l’istruzione. Pur non fornendo le prestazioni delle apparecchiatue mediche, sicuramente molto più costose e complesse, offrono un livello di controllo e un’affidabilità tali da consentire a chiunque lo desideri di cimentarsi nello sviluppo di software dedicato per creare auonomamene soluzioni alle problematiche più disparate. Il costo dei BCI commerciali è relativamente contenuto (si va dai 70 ai 1500 dollari). Vi sono poi progetti opensource (per chi volesse cimentarsi o semplicemente saperne di più, info qui: http://openeeg.sourceforge.net/doc/) e progetti nati appositamente per la ricerca (Graz University, qui: http://bci.tugraz.at/). I tre attuali produttori di dispositivi BCI sulla scena internazionale sono OCZ, Emotiv e Neurosky.  

Page 403: Prof. Raffaella Folgieri

Il Neural impulse Actuator (NIA) della OCZ è in vendita a circa 70 euro ed è composto da una fascetta con tre elettrodi che consentono di rilevare le attività muscolari, le onde alfa e beta e i movimenti oculari. Il 

dispositivo viene venduto come controller per videogiochi ed è fuori produzione dal maggio del 2011. Purtroppo il NIA non viene fornito di un SDK, ed è quindi necessario affidarsi, non senza difficoltà dovute alla scarsa e frammentaria documentazione, ai vari progetti open source nati 

per compensare questa carenza.  

Page 404: Prof. Raffaella Folgieri

 

 

L’azienda Neurosky produce un dispositivo di fascia intermedia chiamato MindWave (evoluzione del precedente MindSet), dotato di un ricevitore bluethoot, acquistabile al prezzo di cica 100 euro. Il prodotto rileva due stati mentali, attenzione e 

meditazione, etichettati dalla casa come “e‐sense meters” e cinque tipi di ritmi cerebrali (alfa, beta, delta, gamma e teta). Il dispositivo rileva, inoltre, il battito delle palpebre.       

Page 405: Prof. Raffaella Folgieri

 L’headset Epoc è invece il BCI prodotto dalla Emotiv. L’Epoc, di fascia medio‐alta, è commercializzato in versione Epoc NeuroHeadset a partire da 299 dollari fino ad arrivare ai 1500 dollari della research edition. I costi sono notevolmente più 

elevati, tuttavia il prodotto della Emotiv rileva quattro stati mentali (basandosi sui ritmi cerebrali), più onde alfa, beta, delta, gamma e teta ed inoltre battito degli occhi, movimenti oculari, espressioni facciali e movimenti della testa (mediante due giroscopi). In questo caso l’headset dispone di 14 sensori wet, che vanno cioè inumiditi con soluzione fisiologica.  

Page 406: Prof. Raffaella Folgieri

Generalmente gli utenti preferiscono, per la sua indossabilità, l’headset della neurosky. In generale anche in ricerca, quando possibile, si preferisce quest’ultimo, in base a molti fattori: ‐ Le onde rilevate sono sufficienti per scopi di ricerca (e sono le stesse rilevate dall’Epoc, di cui molte caratteristiche rimarrebbero inutilizzate) 

‐ L’SDK (il tool di sviluppo) è messo a disposizione senza ulteriori esborsi economici 

‐ La portabilità e la flessibilità del device lo rendono più confortevole per l’utente. Il MindWave è semplice e veloce da indossare e, al contrario dell’epoc, non richiede l’addestramento iniziale dell’elaboratore (apprendimento delle onde cerebrali dell’utente) e dell’utente (nel comprendere come separare mentalmente i vari comandi quali il fisoscopio, le espressioni facciali, l’intenzione di movimento). 

 

Page 407: Prof. Raffaella Folgieri

Rilevazione dei dati attraverso bci ‐ contesto Molti studi condotti in campo neurologico hanno dimostrato che neuroni con lo stesso orientamento spaziale sono responsabili di un determinato stimolo e/o stato emotivo e si stanno comunque conducendo molti esperimenti per approfondire aspetti specifici.   I dispositivi BCi misurano le variazioni di potenziale elettrico tra zone in cui i neuroni corticali hanno lo stesso orientamento con l’obiettivo, dunque, di interpretare specifici stati emotivi ed intenzioni di movimento e tramutarli in comandi event‐related da impartire a dispositivi elettronici e, in primis, ad un elaboratore.  

Page 408: Prof. Raffaella Folgieri

Alcuni dei prodotti commerciali pressi in considerazione, come ad esempio il MindWave, sono venduti in bundle con programmi mirati ad aiutare i bambini nel migliorare il proprio livello di attenzione, proponendo alcuni semplici giochi in cui l’utente ottiene dei risultati solo se la sua soglia di attenzione supera un certo livello. Ne risulta evidente che i modi più semplici per stimolare dall’esterno il cervello consistono nell’utilizzare stimoli auditivi e visivi, in quanto parte preponderante dell’esperienza di ogni individuo. Associando quindi a tali stimoli un particolare stato mentale, con una certa dose di allenamento sarà possibile raggiungere un determinato stato mentale e controllare con una certa affidabilità le propre onde cerebrali con una buona dose di concentrazione. 

Page 409: Prof. Raffaella Folgieri

  

Page 410: Prof. Raffaella Folgieri

Le peculiarità dei nostri meccanismi cerebrali vengono sfruttate anche in ambito medico, con la tecnica del neurofeedback, tecnica non invasiva che si propone di intervenire a livello neurocognitivo per l’identificazione e la terapia di patologie quali l’emicrania o l’ADHD (Attention Deficit Hyperactivity Disorder), aiutando il soggetto a migliorare il proprio autocontrollo.   La terapia basata sul neurofeedback si avvale di un metodo semplice ma efficace: con un dispositivo BCI si ricavano le informazioni derivanti dall’EEG e, quando il paziente riesce a modulare i propri segnali elettroneurofisiologici, in modo da eseguire il compito richiesto da un software o da un terapeuta, gli viene inviato un feedback positivo, quale ad esempio un suono o un’immagine piacevole. 

Page 411: Prof. Raffaella Folgieri

 Un esempio di terapia con neurofeedback 

 

Page 412: Prof. Raffaella Folgieri

 

L’attuale maggiore disponibilità e accessibilità di queste tecnologie, di più semplice utilizzo e più economiche rispetto al passato, porterà probabilmente un significativo miglioramento delle condizioni di vita di persone con difficoltà neurocognitive.  Il crescente interesse nei contronti dei BCI e delle potenzialità di tali dispositivi ha fatto sì che la comunità scientifica si interessasse sempre di più all’interpretazione automatica dei segnali elettroencefalografici e dunque, come sarà di seguito evidenziato, attualmente si è in grado di associare ad ogni onda o ritmo uno specifico risvolto neurologico.   

Page 413: Prof. Raffaella Folgieri

Rilevazione delle onde alfa Le onde alfa sono associate allo stato di relax di un soggetto e hanno una frequenza compresa ta gli 8 e i 12 Hz. Queste onde sono soprattutto prodotte nelle zone corticali site tra gli elettrodi occipitali e quelli parietali e sono le onde predominanti quando corpo e mente sono in condizioni di rilassamento . Sono significativamente maggiori negli individui con indole creativa ed in persone molto tranquille.  Se un soggetto chiude gli occhi, ad esempio, l’attività delle onde alfa incrementerà in modo significativo, lasciando il posto alle onde beta quando gli occhi vengono riaperti. Le onde alfa sono il pattern dominante degli individui nella prima infanzia o nell’adolescenza e possono essere suddivise in alfa lente (8‐9 Hz) , alfa intermedie (9‐11.5 Hz) e alfa rapide (11.5‐12 Hz) 

Page 414: Prof. Raffaella Folgieri

 

Comparazione tra ritmi beta e alfa  

Le persone il cui EEG presenta un livello medio più alto di onde alfa sono, stando ad alcuni studi condotti, aperte ed estroverse ed infatti si sentono più in generale a proprio agio nei rapporti sociali e interpersonali.  Durante la fase di crescita e di sviluppo l’attività ritmica cerebrale si sposta da alfa a beta. 

Page 415: Prof. Raffaella Folgieri

 

Rilevazione delle onde beta Le onde beta sono considerate le più “veloci” del cervello, documentate nell’intervallo di frequenza tra i 12 e i 38 Hz e con un’ampiezza media di 40‐50 microVolt.  Sono tipicamente prodotte dall’emisfero sinistro, che si ritiene (ma attualmente molti studi stanno confutando questa visione) la parte logica della nostra mente.  Tali ritmi possono essere divisi in onde beta lente (12‐18 Hz) e onde beta rapide (18.5‐38 Hz).  Ogni volta che un soggetto è impegnato nella risoluzione di un problema di matematica un problema di logica o legge un libro, le onde beta aumentano di intensità.  Le persone con spiccata attitudine logica tendono ad avere un attività maggiore di onde beta e, in generale, gli adulti tendono ad avere più onde beta rispetto ai bambini e agli adolescenti, con intensità crescente negli anni. 

Page 416: Prof. Raffaella Folgieri

La presenza di molti picchi nella registrazione delle onde beta denota stato di nervosismo, eccitazione o ansietà, fasi in cui si è portati a pensare più rapidamente e raggiungere in modo più agevole la soluzione ai problemi logici.   Molti studi affermano che in presenza di molte onde beta il soggetto è in uno stato ideale per rispondere a situazioni in cui è necessaria una forte componente logica del pensiero, come ad esempio leggere e comprendere un libro, o risolvere i già citati problemi di matematica e logica.  

Page 417: Prof. Raffaella Folgieri

Rilevazione delle onde gamma Le onde gamma sono caratterizzate da una frequenza che oscilla tra i 40 e i 70 Hz e sono le meno ampie, se confrontate con gli altri quattro tipi di ritmi.  Le onde gamma sono considerate le onde che permettono di effettuare collegamenti e processare informazioni provenienti da tutte le aree del cervello.  La registrazione di un alto livello di attività di onde gamma può essere associata, a detta di molti studi scientifici, ad un elevato livello di intelligenza, ad un forte autocontrollo e ad uno stato di soddisfazione, oltre ad essere collegate alla memoria e alla percezione della realtà.  Solitamente le persone con ritardo mentale tendono ad avere una minore attività di onde gamma rispetto a quelle registrate in persone non affette da disturbi neurologici. 

Page 418: Prof. Raffaella Folgieri

 

Rilevazione delle onde theta Le onde theta sono collegate ad una frequenza che oscilla tra i 4 e i 7 Hz e sono state associate a lungo con le prime fasi del sonno e con il processo dei sogni.   Queste onde hanno un’ampiezza alta e solitamente aumentano quando si sogna.   Sono state, inoltre, associate a stati di maggiore creatività, a stati di comprensione superiore e a stati di profondo rilassamento.   

Page 419: Prof. Raffaella Folgieri

A detta di alcuni studi, le onde theta possono essere più frequenti anche quando si ha una “esperienza spirituale” o si è in un momento di forte creatività.   Inoltre molti lavori scientifici hanno evidenziato che le persone che presentano una componente dominante di tali onde non riescono a concentrarsi.   In particolar modo si è notato che questo riguarda i ssoggetti affetti da ADHD, mentre le persone non affette da nessuna patologia sono in grado di aumentare l’intensità dei vari tipi di onde, ovvero di attivare le aree corticali corrispondenti, quando è richiesto dalla situazione.  

Page 420: Prof. Raffaella Folgieri

Rilevazione delle onde delta Le onde delta sono le onde a minore frequenza di tutto il cervello (1‐4 Hz) e si presentano in stati di sonno profondo o coma.   Pertanto, sono associate agli stadi 3 e 4 del sonno, ovvero gli stadi che precedono la fase REM. Le onde delta sono, inoltre quelle che presentano l’ampiezza più significativa, con una media di circa 150 microVolt.   Disfunzioni nell’attività di tali onde potrebbero essere associate a patologie gravi come demenza e schizofrenia, come documentato da molti lavori scientifici incentrati sullo studio dell’associazione delle onde delta a queste patologie.  

Page 421: Prof. Raffaella Folgieri

Aggiunte e schemi riassuntivi Due parole sul P300:  Avvengono in risposta ad eventi significaivi ma con bassa probabilità  300 millisecondi dopo lo stimolo target  Trovati nel 1965 da Sutton et al., 1965; Walter, 1965  focus specifico  Farwell e Donchin, 1988  95% accuratezza per 1 carattere per 26s  Esempio:  http://www.intendix.com/  C’è anche VEP (Visual Evoked Potential), simile a P300, rileva cambiamenti in corteccia visiva 

Page 422: Prof. Raffaella Folgieri
Page 423: Prof. Raffaella Folgieri

   

Page 424: Prof. Raffaella Folgieri

 

Page 425: Prof. Raffaella Folgieri

  

elettrodi applicati sullo scalpo secondo posizionamento standard "sistema internazionale 10‐20".  

  10% o 20% con rif a 100% distanza tra due punti cranici "inion" (prominenza alla base dell'osso occipitale) e "nasion" (attaccatura superiore del naso), distanza di solito da 30 a 36 cm. (variabilità interpersonale). 

19 elettrodi, lungo cinque linee:  P1: longitudinale esterna  P2: long. interna destra  Centrale  P1: longitudinale esterna  P2: long. interna di sinistra  linea trasversa T4‐C4‐Cz‐C3‐T3 denominata montaggio P3, sempre con regola del 10‐20%. 

Page 426: Prof. Raffaella Folgieri

elettrodi fronto‐polari sopra le sopracciglia  frontali su stessa linea dei fronto‐polari ma più su del 20%  centrali (+ 20%)  parietali (+ 20%)  occipitali (+ 20%)  Totale del 90% della distanza nasion‐inion, a distanza del 10% dall'inion 

  

Page 427: Prof. Raffaella Folgieri

  

Page 428: Prof. Raffaella Folgieri

  

Page 429: Prof. Raffaella Folgieri

 

  

Page 430: Prof. Raffaella Folgieri

   

Page 431: Prof. Raffaella Folgieri

  

Page 432: Prof. Raffaella Folgieri

   

Page 433: Prof. Raffaella Folgieri

  

Page 434: Prof. Raffaella Folgieri

Apprendere da EEG e BCI; applicazione di BCI a ricerca/esperimenti (possibilità progetto)  

Strumenti per sperimentazione EEG/BCI: Openvibe

Vedremo ora come impostare un esperimento basato su EEG interpretati tramite BCI e quindi come vengono trattate e rappresentate le informazioni provenienti da questo dispositivo su un elaboratore. Uno degli strumenti più semplici da utilizzare per impostare un esperimento (utilizzabile anche da neofiti, perché la programmazione è di tipo visuale) è OpenVibe.  

Page 435: Prof. Raffaella Folgieri

OpenVibe

È un tool di authoring dedicato alla creazione e all’esecuzione di scenari creati con lo sstesso OpenVibe. E’ free, ed è scaricabile alla pagina http://openvibe.inria.fr/  Si basa su una interfaccia grafica che fornisce molti strumenti per poter fare signal processsing in un modo intuitivo, senza che siano richieste competenze in programmazione.  Tutto si basa sul concetto di box, che ssono moduli di programma, contenenti algoritmi che svolgono determinati compiti e che l’utente può combinare a seconda di quello che ci occorre fare.  

Page 436: Prof. Raffaella Folgieri

OpenVibe nette già a disposizione alcuni box con cui è possibile creare praticamente ogni scenario (programma) che occorre per condurre un esperimento.   Sono già presenti, inoltre, alcuni scenari che possono essere utilizzati per imparare ad usare lo strumento, oppure possono essere personalizzati a piacere.  Per poter condurre un esperimento, sarà necessario creare uno scenario. Gli scenari vengono composti nel modulo DESIGNER.  

Page 437: Prof. Raffaella Folgieri

Il modulo DESIGNER di OpenVibe Vediamo innanzitutto come è composta l’area di lavoro. All’apertura appaiono: ‐ La top level menu bar ‐ La toolbar, che permette di avere accesso immediato alle azioni più comuni 

‐ La vista ad albero delle box disponibili ‐ La status bar, che fornisce informazioni circa lo stato corrente di uno scenario in esecuzione 

‐ La console, che riporta informazioni, warning o messaggi di errore 

‐ La finestra editor dello scenario, dove le box possono essere collocate e collegate tra loro 

Page 438: Prof. Raffaella Folgieri

Designer interface in Windows7.

Page 439: Prof. Raffaella Folgieri

Menubar  La barra dei menu contiene I comandi che normalmente possono essere compiuti in un’applicazione, Gli scenari sono salvati in formato XML e se ne possono aprire più di uno contemporaneamente (per spostarsi da uno all’altro basterà utilizzare i tab).   

Quella che segue è una lista di opzioni e di shortcut a disposizione: 

Page 440: Prof. Raffaella Folgieri

File New – Ctrl+n Open – Ctrl+o Save – Ctrl+s Save As Close ‐ Ctrl+w Quit – Alt+F4 

Edit Undo – Ctrl+z Redo – Ctrl+y Cut – Ctrl+x Copy – Ctrl+c Paste – Ctrl+v Delete – Del Preferences 

 

Page 441: Prof. Raffaella Folgieri

Toolbar La prima sezione della toolbar fornisce accesso diretto alla gestione degli opzioni di scenario.  Nella seconda sezione vi sono due toolbutton:  Il primo permette di mostrare o nascondee il window manager 

   Window manager popup dialog for a scenario with 4 visualisation boxes, before and after making changes. 

Page 442: Prof. Raffaella Folgieri

 

Il secondo toolbutton mostra la dialog che permette di configurare quali messaggi di log dovranno essere mostrati nella console (in tutto i livelli sono 8) 

 

 

Log levels dialog.  

Page 443: Prof. Raffaella Folgieri

E’ poi presente un bottone che consente di aggiungere commenti (che non avranno influenza sul programma) sullo scenario. Con un doppio click si può modificare il testo di un commento. Un bottone analogo permette di associare allo scenario informazioni su autore, data, descrizione, ecc. La sezione successiva della toolbar contiene i bottoni dedicati alla fase di play dello scenario.  Stop – F5  go back to scenario edition mode  Step – F6  play scenario one step of simulation at a time  Play/Pause – F7   Fast Forward – F8  play scenario as fast as possible Mentre lo scenario è in esecuzione, non è ovviamente possibile modificarlo. Infine, la toolbar contiene un contatore (timer) che mostra il tempo di durata dello scenario (in fase di play). 

Page 444: Prof. Raffaella Folgieri

 

Box algorithms tree view La parte destra di Designer contiene una lista di algoritmi‐box preesistenti che costituiscono i building block di uno scenario OpenVibe.   Sono organizzati ad albero e forniscono la possibilità di eseguire diverse operazioni.   Per default vengono mostrati solo i box stabili, ma se si vuole visualizzare anche quelli più vecchi “deprecated”, è sufficiente impostare l’opzione di configurazione Designer_ShowDeprecated a true.  

Page 445: Prof. Raffaella Folgieri

Se si vogliono utilizzare i box “unstable” occorrerà impostare a vero l’opzione Designer_ShowUnstable.  Ad ogni box è associata una descrizione ed ognuno ha uno o più input ed uno o più output.   Per utilizzare i box, bisogna “trascinarli” nell’area dell scenario (edition area) e collegarli opportunamente tra loro.   Edition Area E’ l’area in cui I box vengono aggregate per comporre uno scenario.  

Page 446: Prof. Raffaella Folgieri

Box Per posizionarli nello scenario è sufficiente selezionarli e trascinarli nella edition area.  Appaiono come rettangoli arrotondati che recano il nome all’interno, gli input (se ce ne sono) sulla parte alta e gli output (se ce ne sono) nella parte bassa.   I connettori di input e output sono evidenziati da triangoli di diversi colori, a seconda del tipo, che aiutano ad effettuare i collegamenti corretti. 

  

Page 447: Prof. Raffaella Folgieri

Inoltre ogni box è personalizzabile. Con un doppio click ssulla box si accede alla dialog che permette di impostarne le caratteristiche (ad esempio su quale file si desidera l’output dei risultati). 

 Settings of a ‘GDF file reader’ box : filename text entry and number of samples to be stored per buffer.  

Comprendere a cosa serve ogni box è davvero immediato, per cui non faremo un elenco degli algoritmi a disposizione, ma se ne vedrà il funzionamento attraverso la descrizione di alcuni scenari di esempio.  

Page 448: Prof. Raffaella Folgieri

Box editing  Tutti I box possono essere configurati in modo personale nel Designer.   Alcuni offrono le stesse opzioni di configurazione.   Qui ne vedremo le principali, ma sul sito di OpenVibe, tra i tutorial, potete trovare altre informazioni.  Una volta spostato un box nell’area di editing, si accede alle opzioni di configurazione con il doppio click, come abbiamo visto sopra, e ad altre con il click con il tasto destro del mouse.  

Page 449: Prof. Raffaella Folgieri

Comparirà un menu che, in basso, mostrerà le opzioni possibili.   ‘Rename box (F2)’ permette di attribuire un nome diverso alla box. 

  ‘Delete box (Del)’ rimuove la box dallo scenario. Per questa operazioni è sufficiente anche selezionare la box e premere il tasto “delete” sulla tastiera. 

   ‘About box’ mostra una dialog contenente I dettagli della box. 

 

Scenario editing  Designer mette a disposizione i comandi standard cut/copy/paste. Inoltre si ha a disposizione anche Ctrl+a che seleziona tutto nello scenario. 

Page 450: Prof. Raffaella Folgieri

TUTORIAL: come creare uno scenario Proveremo ora a costruire uno scenario semplice, per vedere quali sono I passsi da seguire. Step 1: creare un nuovo scenario Avviare Designer per far apparire la finestra principale che conterrà uno scenario vuoto.  

  

Page 451: Prof. Raffaella Folgieri

Step 2: aggiungere una box Sul lato destro della finestra, espandendo le box messe a disposizione, possiamo scegliere quella che ci occorre e porla (drag and drop) a sinistra, nello scenario. Ci serviranno dei dati da analizzare.  Possiamo utilizzare la box “Sinus Oscillator” che genera in modo random alcuni segnali. Selezioniamo la box e trasciniamola nello scenario. 

 

  

Page 452: Prof. Raffaella Folgieri

Step 3: connettere le box La box Sinus Oscillator genera, in modo casuale, un segnale sinuosoidale su un numero variabile di canali. Vogliamo mostrarli utilizzando una box di visualizzazione. Un modo semplice è aggiungere una box Signal Display. Posizioniamola nello scenario (si trova sotto “Visualisation” nella sottocategoria “Basic”). Ora connettiamo input e output. Basta muovere il cursore del mouse sui connettori delle box (triangoli).  Quando saremo sopra un connettore ne apparirà il nome, per aiutarci a non commettere errori.  Una volta indentificato il connettore, basterà premere il tasto sinistro del mouse e, tenendolo premuto, muoversi sul connettore della seconda box, rilasciando poi il pulsante del mouse. Ora le due box saranno connesse tra loro. 

Page 453: Prof. Raffaella Folgieri

 

Linking box algorithms using their input and output connectors  

Page 454: Prof. Raffaella Folgieri

Step 4: Saving a scenario  Prima di avviare lo scenario, è sempre meglio salvarlo.  Questo si può fare in due modi:  Aprendo il menu file e scegliendo l’opzione ‘Save As’  Fare click sull’icona ‘Save As’ che si trova nella toolbar   

Page 455: Prof. Raffaella Folgieri

Step 5 : Playing a scenario Siamo pronti per eseguire lo scenario. Basterà premere il bottone ‘Play’ sulla toolbar.  Apparirà una finestra popup che mosstra il segnale sinuosoidale casuale. 

  

Per fermare lo scenario sarà sufficiente premere il bottone di ‘stop’ sella toolbar.   

Page 456: Prof. Raffaella Folgieri

OpenVibe e BCI  OpenVibe legge sia dati provenienti da BCI Neurosky che Emotiv. Vediamo, per passi, innanzitutto come connettere il MindWave della Neurosky con OpenVibe (la stessa cosa vale, comunque, per l’Emotiv).  Inserire il dongle nella porta usb e avviare il neurosky  Avviare openVibe Acquisition Server 

Page 457: Prof. Raffaella Folgieri

  

Page 458: Prof. Raffaella Folgieri

Selezionare dal menu a tendina il neurosky 

      

Page 459: Prof. Raffaella Folgieri

Selezionare Driver Properties e impostare le proprietà come in figura 

  Fare click su Applica 

Page 460: Prof. Raffaella Folgieri

Poi fare click su connetti 

  

Page 461: Prof. Raffaella Folgieri

Poi click su riproduci 

  

A questo punto avviare openVibe designer che si aprirà con lo scenario dell’esperimento che precedentemente avremo creato. 

Page 462: Prof. Raffaella Folgieri

Un setup sperimentale per BCI realizzato con OpenVibe A titolo di esempio, viene di seguito mostrato un setup sperimentale creato per rilevare le onde cerebrali di un soggetto che indossa il BCI MindWave Neurosky mentre è sottoposto a stimoli (mostrati attraverso una presentazione PowerPoint) Nota: prima di avviare (play) lo scenario, ricordarsi che deve essere avviato l’Acquisition Server di OpenVibe, per poter acquisire i dati dal Mindwave (rif. paragrafo precedente). Ovviamente dovremo anche aver creato la presentazione PowerPoint e dobbiamo specificarne il path (percorso) nelle opzioni (doppio click) della box “Show Video”.  

Page 463: Prof. Raffaella Folgieri

scenario dell’esperimento 

  

Page 464: Prof. Raffaella Folgieri

Ogni volta PERSONALIZZARE i nomi dei file che vengono scritti per salvare i dati, nelle box “CSV File Writer” e “GDF file writer”.   In questo modo ai file si potrà attribuire, per esempio, il nome del soggetto sottopossto all’esperimento e data/orario.  Una volta fatto questo, fare click su play e spostare le finestre dove è più comodo  Quando si è pronti con l’esperimento, click sul tasto “a” della tastiera per far partire il ppt insieme alla registrazione dei dati (serve per sincronizzare la registrazione con lo stimolo dato dal PowerPoint) 

Page 465: Prof. Raffaella Folgieri

 

Page 466: Prof. Raffaella Folgieri

Quando l’esperimento è finito, fare click sul pulsante di stop Alla fine chiudere openVibe designer, click su FERMA in OpenVibe Acquisition Server, click su DISCONNETTI e chiudere anche OpenVibe Acquisition Server.  

Risorse su OpenVibe Ulteriori risorse, per chi volesse scegliere di creare un progetto con OpenVibe, possono essere reperite qui: http://openvibe.inria.fr/documentation‐index/    

Page 467: Prof. Raffaella Folgieri

Discussione 4: i luoghi (comuni?) della creatività Un non vedente è seduto sul gradino di un marciapiede con un cappello ai suoi piedi e un pezzo di cartone su cui è scritto: "Sono cieco, aiutatemi per favore". Un pubblicitario passa di lì, si ferma e nota che vi erano solo alcuni centesimi nel cappello. Allora si china, mette una banconota nel cappello e poi, senza chiedere il permesso al cieco, prende il cartone, lo gira e vi scrive qualcosa. Al pomeriggio, il pubblicitario ripassa davanti al cieco e nota che il cappello è pieno di monete e di banconote. Il non vedente riconosce il passo dell'uomo e gli domanda se era stato lui a scrivere sul suo pezzo di cartone e soprattutto che cosa vi avesse scritto. Il pubblicitario: "Nulla che non sia vero, ho solamente riscritto la sua frase in un altro modo: 'Oggi è primavera e io non posso vederla'.” La morale è che quando le cose non vanno come sperato, occorre cambiare strategia, ma soprattutto l’aneddoto aiuta ad introdurre l’argomento: la creatività. Molti, infatti, sono i campi che beneficiano di un atteggiamento creativo…

Page 468: Prof. Raffaella Folgieri

Difficile definire la creatività… nulla è escluso, natura compresa.

Soffermiamoci sull’aspetto cognitivo del processo creativo, in particolare sulle tecnologie cognitive, sui dispositivi tecnologici che aiutano ad analizzare il processo ed inoltre analizzare la creatività dal punto di vista delle intelligenze artificiali.

Se si volesse semplificare il processo sotteso alla creatività, si potrebbe dire che alla base c’è sempre la ricerca di una soluzione diversa (innovativa) ad un problema. In questo senso non c’è nulla di più creativo di quello che è successo negli ultimi decenni, ovvero del progresso tecnologico, delle macchine e dell’Informatica

Si pensi ora alla prima cosa che viene in mente quando si nomina il termine creatività: l’Arte. Le espressioni artistiche sono universalmente riconosciute come attività creative.

Page 469: Prof. Raffaella Folgieri

La creatività è innata o si può acquisire? E’ possibile potenziarla, stimolarla? Esiste un’area del cervello in cui risiede? E’ prerogativa dei sistemi intelligenti naturali o anche i sistemi artificiali possono esibire un comportamento creativo?

Page 470: Prof. Raffaella Folgieri

Nelle Scienze Cognitive, e in particolare tramite la Neuropsicologia, la creatività è studiata indagando funzioni cerebrali quali la memoria, il linguaggio, l’attenzione, le capacità neuro-motorie, in modo strettamente legato alla valutazione cognitiva degli stimoli esterni che giungono al cervello. Tale valutazione cognitiva è, ovviamente, soggettiva, in quanto influenzata anche da fattori sociali e contesto culturale in cui ogni individuo è immerso (Vygotskij, 1925, 1930). Già Piaget (1970) aveva sottolineato come l’interazione tra soggetto e oggetti stimoli la formazione di processi psichici superiori. Vygotskij esprime un punto di vista interessante, che riporta alle considerazioni sui legami tra la creatività ed i mezzi (anche tecnologici) a disposizione, ovvero sottolinea quanto l’ontogenesi10 umana sia determinata anche dal contributo degli strumenti culturali a disposizione nel contesto storico e sociale.                                                             10  Con ontogenesi si intende l’insieme dei processi tramite i quali si compie lo sviluppo biologico di un organismo vivente. 

Page 471: Prof. Raffaella Folgieri

Tre sono i collegamenti possibili tra Arte e Tecnologia che riconducono alla creatività e allo studio dei suoi meccanismi:

- le opportunità offerte dalla tecnologia per la conservazione del patrimonio artistico;

- le potenzialità fornite dai nuovi strumenti per l’espressione artistica;

- le possibilità di studiare i legami tra Arte, cervello e tecnologia e, congiuntamente, i processi creativi, consentiti dai progressi dell’AI, del Brain Imaging e dei dispositivi tecnologici.

Page 472: Prof. Raffaella Folgieri

Le nuove tecnologie, ed in particolare quelle pensate per il trattamento avanzato di dati audio, video e testuali, consentono la creazione di mondi virtuali immersivi che rappresentano una grande opportunità sia per la conservazione del patrimonio artistico, sia per avvicinare gli spettatori alle opere. Si pensi anche solo a YouTube, alle rappresentazioni 3D e alla Realtà Virtuale, all’Augmented Reality. Walkthrough… Cappella Sistina (1575-1481, Michelangelo Buonarroti, http://vatican.va/various/cappelle/sistina_vr/index.html ), Google Art (http://www.googleartproject.com )

Page 473: Prof. Raffaella Folgieri

Le maggiori potenzialità di espressione artistica (il secondo punto dell’elenco precedente) riguardano, invece, la crescente commistione tra Arte e Tecnologia. Ugo Foscolo: “L’arte non consiste nel rappresentare cose nuove, bensì nel rappresentare con novità”

Page 474: Prof. Raffaella Folgieri

Esempi: - 1950 Ben Laposky e Manfred Frank realizzarono un

“oscillogramma” che, tramite apposite formule matematiche, effettuava distorsioni artistiche di proiezioni grafiche.

- l’Arte ASCII: produzione di immagini composte con la codifica dei caratteri, a sette bit, utilizzata negli elaboratori.

- il movimento E.A.T. (Experiment in Art and Technology, Rauschenberg e Kuver).

- artisti che hanno fatto della tecnologia il principale mezzo espressivo: Stelarc, esponente della Posthuman Art, e le sue modificazioni del proprio corpo, le installazioni robotiche e le performance estreme; Kac (Transgenic Art) ed il suo coniglio Alba, che, se irradiato da una data frequenza elettromagnetica, diviene luminescente; gli italiani Coltro (pioniere del quadro elettronico) e Nicola Evangelisti (Light Art); tanti altri artisti, anche nel campo della musica (musica elettronica), della danza, e così via, che hanno dato vita ad opere e performance innovative, sfruttando appieno i nuovi mezzi tecnologici e facendone oggetto e mezzo di espressione artistica.

Page 475: Prof. Raffaella Folgieri

Ultimo punto: l’indagine scientifica possibile grazie ai nuovi dispositivi tecnologici, al Brain Imaging e all’AI, apre uno scenario incredibilmente vasto sulle opportunità di esplorare i legami tra Arte, tecnologia e cervello, e, quindi, creatività. E’ dimostrato da diverse ricerche che sussiste un collegamento tra la corteccia prefrontale e l’esperienza estetica, sia nella visione di opere d’arte che nella loro creazione (Cela et Al., 2004). Inoltre, gli studi di Kawabata, Hideaki e Semir Zeki (2004) hanno rivelato che l’area orbito-frontale della corteccia è coinvolta anche nell’esprimere il giudizio sulla bellezza di un dipinto. Lo stesso tipo di attività cerebrale è stata riscontrata anche quando si contestualizza l’opera, ad esempio mediante descrizioni testuali o multimediali.

Page 476: Prof. Raffaella Folgieri

Le tecniche di Brain Imaging hanno permesso notevoli avanzamenti nell’analisi del cervello “in azione”, ovvero nello studio delle reazioni e dei meccanismi cerebrali degli individui coinvolti in attività motorie, cognitive o percettive. Grazie a dispositivi e metodi più o meno invasivi, quali l’fMRI (Risonanza magnetica funzionale), la MEG (Magnetoencefalografia), la PET (Tomografia ad emissione di positroni), l’EEG (Elettroencefalogramma), è possibile, infatti, verificare in tempo reale la risposta di un individuo a stimoli specifici. Per la poca invasività e per l’alta risoluzione temporale, l’EEG è tra le tecniche più utilizzate per condurre indagini atte a comprendere meccanismi quali la creatività.

Page 477: Prof. Raffaella Folgieri

dispositivi (headset) B.C.I. (Brain Computer Interface): semplificazioni dell’apparecchiatura medica per EEG (Allison, 2007), permettono la registrazione dei ritmi cerebrali e l’utilizzo degli stessi per l’interazione con gli elaboratori. Nati per l’entertainment (per i giochi), sono ampiamente usati come supporto per l’interazione con l’ambiente da chi è affetto da malattie inabilitanti (quali, ad esempio, la sclerosi multipla) ma anche per scopi di ricerca, dato che i ritmi cerebrali registrati sono del tutto comparabili a quelli rilevati con l’EEG medico. vantaggi dei BCI: basso costo, portabilità, soggetto a proprio agio. Variazione di potenziale (fino a 100 microvolt, misurata sullo scalpo), sensori sensori wet o dry (da 1 a 20) Alcuni BCI rilevano anche movimenti miografici e battito delle palpebre.

Page 478: Prof. Raffaella Folgieri

BCI particolarmente adatto per indagare i meccanismi della creatività sia dal punto di vista dell’artista, mentre crea un’opera, sia dal punto di vista degli spettatori che osservano il risultato finale. Non solo intuitivamente, ma anche sperimentalmente, è possibile affermare che l’arte è concepita dagli artisti e dagli osservatori grazie alle attività neurali del cervello, che creano l’esperienza estetica. Lo studio di questi meccanismi è alla base della disciplina sperimentale della Neuroestetica, nata ufficialmente nel 2001, che studia le basi neurali che sottendono alla contemplazione o alla creazione di un’opera d’arte. Fondatore e pioniere della neuroestetica è Semir Zeki, noto neurobiologo che, attorno agli anni ’90, ha cominciato ad interessarsi dei legami che sussistono tra arte e cervello, utilizzando test psicofisici ed elettroencefalografia.

Page 479: Prof. Raffaella Folgieri

Dispositivi BCI particolarmente utili in ambito di ricerca: - per registrare la risposta a stimoli visivi musicali e la capacità di

distinguere la valenza delle emozioni musicali (Folgieri e Zichella, 2012),

- per rivelare i meccanismi della creatività visiva (progetto BrainArt, Folgieri e Granato, 2013).

- per valutare le risposte emotive e cognitive a stimoli visivo-percettivi (Banzi e Folgieri, 2012) basati sul concetto di priming (Wiggs, 1998)

- per indagare i meccanismi di risposta ai colori (Folgieri et Al., 2013), a stereoscopia e monoscopia (Calore, Folgieri et Al., 2012)

Obiettivo delle ricerche, passate ed in fieri, è quello di valutare la risposta emotiva e cognitiva a stimoli sonori/musicali e visivi di base e complessi, onde comprendere quali siano i meccanismi che scatenano la creatività o che caratterizzano il processo creativo (l’insight, l’ispirazione).

Page 480: Prof. Raffaella Folgieri

I risultati ottenuti fino ad ora hanno mostrato delle interessanti corrispondenze tra alcuni ritmi cerebrali (in particolare gamma, theta e beta) e l’attività creativa. Al momento la ricerca è ancora rivolta alla comprensione dei meccanismi cognitivi di base della creatività, dell’intelligenza emotiva e dell’espressione, ma già da queste prime applicazioni è evidente l’enorme potenzialità degli strumenti tecnologici a disposizione oggi, che danno, inoltre, la possibilità di verificare, riprendendo il concetto espresso da Vygotskij, quanto l’ontogenesi umana sia fortemente influenzata dagli strumenti culturali (nella nostra epoca, tecnologici) a disposizione nel contesto storico e sociale.

Page 481: Prof. Raffaella Folgieri

Si torni alla creatività in senso più generale, a cosa significa oggi il termine stesso, ai modi di esprimerla attraverso la tecnologia. Ogni atto creativo ha, generalmente, inizio proprio col trovare una risposta nuova, creativa, a problemi quotidiani: pensare “fuori dagli schemi” (out of the box) problem solving e possibilità di esplorarne i meccanismi: la creatività è strettamente legata al problem solving

Page 482: Prof. Raffaella Folgieri

In The Act of Creation, 1964, Arthur Koestler spiega la creatività attraverso il meccanismo della bi-sociazione, “mezzo per unire informazioni in conflitto o non correlate in un modo nuovo”. Infatti, se nel quotidiano ciascuno di noi tende ad associare elementi appartenenti allo stesso “sistema di riferimento” (cucina - cibo, libro-foglio, ecc…), nella creazione artistica, umoristica o scientifica si realizza una connessione tra sistemi di riferimento eterogenei, solitamente considerati incompatibili. Si pensi quante invenzioni e scoperte sono evidentemente frutto di tale cross-fertilization, ovvero dell’innesto di idee o mezzi nuovi in contesti differenti. Con problem solving (“risoluzione di un problema”) si intende l’attività che un organismo vivente o un dispositivo di intelligenza artificiale innesca per giungere ad uno stato desiderato a partire da una o più condizioni date.

Page 483: Prof. Raffaella Folgieri

E’ evidente, pertanto, che è possibile misurare, anche quantitativamente, il livello di attivazione cerebrale, mediante l’analisi del segnale elettrico prodotto dal cervello. A questo proposito ci si pone una domanda: se è possibile misurare il livello di creatività di un individuo non solo valutando il risultato del processo creativo qualitativamente (gusto, estetica, successo del risultato) ma anche quantitativamente (intensità del segnale elettrico corrispondente ai ritmi cerebrali registrati), è possibile misurare anche la presenza o meno (e la sua intensità) di un processo creativo o, più in generale, cognitivo (decision making, problem solving) messo in atto da una intelligenza artificiale?

Page 484: Prof. Raffaella Folgieri

Un elaboratore può essere creativo?

Page 485: Prof. Raffaella Folgieri

luglio 2012: Lamus, super computer che compone musica classica, progettato e realizzato all’Università di Malaga, da un Gruppo di Ricerca in Computational Intelligence (coordinato dall’Ing. Francisco J. Vico), coadiuvato dal pianista Gustavo Diaz-Jeres . L’obiettivo era mettere alla prova il test di Turing, e, infatti, il primo concerto dell’elaboratore (dal titolo “Can machine be creative?”), trasmesso in streaming il 2 luglio 2012, è stato dedicato proprio a Turing. 2010, a Udine, il poeta matematico Hans Magnus Enzensberger ha creato una macchina che scrive poesie automatiche, in modo totalmente autonomo.

Page 486: Prof. Raffaella Folgieri

mini-robot, sviluppati all’Università di Losanna, che, dotati di cervello artificiale basato su reti neurali (immaginate quelle di un insetto), sfruttano un meccanismo di “riproduzione elettronica”, evolvendosi seguendo le leggi della selezione naturale: i robot migliori hanno la possibilità di riprodursi, quindi di combinare il proprio “genoma digitale” (ovvero i pesi della rete neurale del cervello artificiale) con quello di un altro esemplare (in modo casuale). Nel giro di poche generazioni, i robot hanno mostrato un incremento di intelligenza, riuscendo a trovare autonomamente cibo e ad evitare “veleno”. Inoltre i robot hanno appreso come comunicare ai propri simili la presenza del cibo mediante emettitori luminosi di cui sono provvisti, sviluppando una sorta di linguaggio.

Page 487: Prof. Raffaella Folgieri

2012, nei laboratori del Massachusetts Institute of Technology: alcuni ricercatori hanno sviluppato un prototipo di robot in grado di modificare la propria forma. Il progetto è denominato Milli-Motein ed i robot hanno potenzialità straordinarie. Si pensi, ad esempio, a potenzialità domestiche: una lampada che può trasformarsi in tazza, ecc.

sistema SyNAPSE (Systems of Neuromorphic Adaptive Plastic Scalable Electronics) di cui Ibm annunciò l’idea nel 2009, ovvero un sistema che emula le capacità cerebrali collegate a sensazioni, percezioni, azioni, interazioni e cognizione. L’obiettivo di Ibm è costruire un chip per il calcolo cognitivo e infatti, assieme ad un team di ricercatori del Lawrence Berkeley National Lab e della Stanford University – l’azienda ha costruito un simulatore che risulta particolarmente innovativo per i meccanismi di calcolo, di memoria e di comunicazione, ma anche per i dettagli biologici ispirati dalla neurofisiologia e dalla neuroanatomia.

Page 488: Prof. Raffaella Folgieri

Quanto visto sfata molti luoghi comuni e stereotipi sulla creatività, quali il fatto che sia innata, umana, istintiva e non attiene alla razionalità. Anche nel caso della creatività, le distanze tra intelligenza umana e intelligenza artificiale vanno evidentemente riducendosi. Inoltre, sembra altrettanto evidente che la creatività abbia a che fare con la razionalità (quantomeno la razionalità emotiva), piuttosto che con l’irrazionalità.

Page 489: Prof. Raffaella Folgieri

Chi ha qualche dubbio che le macchine possano divenire (forse, un giorno) pensanti, può divertirsi a guardare questo simpatico cortometraggio di Alessio Fava:

http://www.youtube.com/watch?v=LEO7rIL41W4 Il primo pezzo composto da Lamus: http://www.youtube.com/watch?v=bD7l4Kg1Rt8   I robot di Losanna (puntata di SuperQuark): http://www.rai.tv/dl/RaiTV/programmi/media/ContentItem‐446dbf19‐e344‐401b‐b7fe‐67698c4daad5.html?p=0   I Milli‐Motein robots: http://web.mit.edu/newsoffice/2012/reconfigurable‐robots‐turn‐into‐anything‐1130.html  

Page 490: Prof. Raffaella Folgieri

RAPPRESENTENTAZIONE DELLA REALTÀ: LA REALTÀ VIRTUALE E’ importante ricordare che anche la realtà viene rappresentata su elaboratore, attraverso la Realtà Virtuale. Informazioni dettagliate e approfondimenti possono essere trovate su Internet oppure leggendo il materiale del mio corso di Realtà Virtuali.  Non potremo soffermarci sulla Realtà Virtuale e sui suoi strumenti, visto il numero di ore a disposizione, ma spero di riuscire ad organizzare un laboratorio (vorrei introdurre anche gli ABMS per la simulazione virtuale di situazioni reali).