Intelligenza Artificiale Maria Teresa PAZIENZA a.a. 2010-11 Sito Sul sito di Didattica Web tutte le informazioni su: Programma Progetto Ricevimento Esami (date, iscrizioni) Tesi Varie Progetto Potrà consistere (a) nella realizzazione di un prototipo informatico progettato e realizzato secondo modalità introdotte nel corso delle lezioni o, equivalentemente, (b) nella stesura di una tesina di approfondimento di temi inerenti all’IA ed affrontati soltanto limitatamente nel corso delle lezioni Materiale didattico Il materiale didattico (ulteriore ai libri di testo) verrà pubblicato nel sito del corso su Didattica Web e distribuito di volta in volta in relazione ai temi specifici affrontati nel corso delle lezioni (dispense, articoli, slides, monografie e saggi, eventuali collegamenti a risorse digitali disponibili in rete, ...). Libri di testo: “Knowledgs Representation and Reasoning” R.J. Brachman, H.J. Levesque (ed. Morgan Kaufmann), “Speech and Language Processing” D.Jurafsky, J. Martin (ed. Prentice Hall) Esami Per partecipare ad una prova d’esame è obbligatorio prenotarsi almeno 24 ore prima dell’esame. La partecipazione ad una prova non preclude la partecipazione a prove successive (nel caso si rifiuti la valutazione conseguita) previa nuova registrazione. Problema Il prodotto dell’età di 3 ragazzi è 72, la loro somma è 14: qual è l’età di ciascuno di loro? Cerchiamo la soluzione del problema a partire dalle informazioni presenti nel testo : 72 deve essere fattorizzato in 3 termini; esistono più combinazioni possibili : 2,6,6 – 8,3,3 – 2,4,9 - … 2 terne sommano a 14. Ma non basta per la soluzione. Bisogna introdurre ulteriori informazioni per completare la risoluzione; per esempio: Il ragazzo più grande si chiama Giorgio. Soluzione trovata: 8,3,3 Problema Il prodotto dell’età di 3 ragazzi è 72, la loro somma è 14: qual è l’età di ciascuno di loro? Come abbiamo trovato la soluzione del problema? E’ il pensare che porta l’umano a discernere cosa è rilevante, all’interno delle sue conoscenze, per portare a termine un compito/attività/decisione Intelligenza Artificiale L’Intelligenza Artificiale è lo studio del comportamento intelligente (di un umano e/o di un agente) raggiunto tramite strumenti computazionali La rappresentazione della conoscenza ed il ragionamento automatico nell’IA sono relativi all’analisi di come un agente (« intelligente ») usa la sua conoscenza per decidere come comportarsi /agire mostrando, così, un comportamento intelligente. Intelligenza Artificiale Studio di come raggiungere un comportamento intelligente attraverso strumenti computazionali. La rappresentazione della conoscenza ed il ragionamento automatico coincidono con l’analisi/studio del pensare (inteso come processo computazionale capace di estrarre le conoscenze rilevanti per la risoluzione del problema). Nell’umano la conoscenza è veicolata dal linguaggio naturale. Intelligenza Artificiale Nell’IA ci si occupa di: • Formalizzare la conoscenza ed i meccanismi di ragionamento in ogni settore di interesse • Usare modelli computazionali per capire/definire il comportamento di umani ed agenti intelligenti • Rendere facile ed efficace l’interazione uomo/macchina • Costruire macchine intelligenti che operino come/meglio degli umani Intelligenza Artificiale Materia in forte evoluzione; dare una definizione che delimiti rigorosamente i campi di interesse rischierebbe di escludere a priori sviluppi futuri che già si intravedono. L’IA non è una lista di argomenti e metodologie; è piuttosto una attività complessa legata alla comprensione di comportamenti intelligenti ed alla loro implementazione in sistemi intelligenti. Intelligenza Artificiale L’IA è contemporaneamente scienza e tecnica, disciplina di frontiera in cui s’incontrano diversi domini del sapere: logica, informatica, psicologia, neuroscienze, filosofia… Attiene a tutti i campi dell’informazione e trova applicazione in tutti i settori (alcune applicazioni esemplificative a fine lezione) Intelligenza Artificiale L’IA si manifesta con un duplice profilo: • disciplina ingegneristica (costruire macchine capaci di svolgere compiti intellettuali integrando componenti diverse) • disciplina psicologica (costruire macchine capaci di esprimere le caratteristiche essenziali dell’attività cognitiva umana spiegando i rapporti tra pensiero e fisicità dell’uomo) Intelligenza Artificiale La formalizzazione logica dei problemi è fondamentale alla loro soluzione. Le metodologie risolutive possono richiedere tecnologie di varia tipologia Ove la formalizzazione completa non sia possibile, si ricorre a soluzioni parziali • • L’elaborazione del linguaggio naturale è un problema tipico dell’IA Gestire la conoscenza (del mondo, di dominio, dell’applicazione,…) è un problema tipico dell’IA Elaborazione del linguaggio naturale multimedialità / multimodalità parlato scritto Analisi del linguaggio rappresentazione della conoscenza Rappresentazione della conoscenza e ragionamento automatico Esempio: usando il linguaggio naturale gli umani esprimono in frasi dichiarative « ciò che si conosce » (pur con lessicalizzazioni diverse) – – – – – Mario conosce tutte le barzellette sui carabinieri Maria conosce bene l’informatica Giovanni conosce la strada per Milano Il professore sa che Maria arriverà domani … Come definizione, a partire dalle affermazioni precedenti, si può affermare che: La conoscenza esprime una relazione tra « chi conosce » ed una « proposizione » ovvero la frase dichiarativa Rappresentazione della conoscenza e ragionamento automatico Cosa sono le « proposizioni »? Entità astratte / frasi che possono essere vere/false, giuste/sbagliate in contesti specifici Non sempre si tratta di proposizioni dichiarative; possiamo anche avere credenze, aspettative, supposizioni, attitudini, etc. Rappresentazione Per rappresentazione si intende una relazione tra due domini: il primo è qualcosa che sta per o ha il posto di un altro. In genere il primo dominio è concreto, immediato, accessibile più che il secondo. Vengono usati simboli formali (un carattere o gruppi di caratteri presi da un alfabeto predeterminato) perchè più facilmente gestibili di ciò che i simboli stessi rappresentano. Una frase in un linguaggio naturale (es. Italiano) è concreta: possiamo distinguere le parti che la costituiscono, i loro ruoli etc. Giovanni ama Maria Una proposizione è astratta in quanto, per esempio, prevede una sottostante automatica classificazione di tutti i modi possibili nel mondo in cui Giovanni ami Maria e quelli in cui non la ami. Rappresentazione La rappresentazione della conoscenza usa simboli formali per rappresentare una collezione finita di proposizioni in cui un agente ha fede (crede in). L’agente può credere in un numero infinito di proposizioni. È compito del « ragionamento » superare il gap tra ciò che è rappresentato e ciò che si conosce o si crede. Ragionamento Manipolazione formale dei simboli che rappresentano • una collezione di proposizioni/credenza • al fine di produrre la rappresentazione di nuove proposizioni. Il ragionamento è una forma di calcolo (tipo quello aritmetico) in cui si opera sui simboli che rappresentano le proposizioni Logical entailment Utilizzare la conoscenza rappresentata esplicitamente nella KB è come fare una ricerca in una base di dati. Ragionare su tale conoscenza per produrne di nuova non rappresentata è ciò che si chiama logical entailment: le proposizioni rappresentate da un set di frasi S implicano la proposizione rappresentata da una nuova frase p quando la verità di p è implicita nella verità delle frasi di S. Il linguaggio formale usato per rappresentare la conoscenza deve allora supportare questa forma di entailment. Il ragionamento sulla KB equivale a calcolare l’entailment su alcune conoscenze precedentemente formalizzate. Ragionamento e logica La logica è lo studio delle relazioni di implicazione (e comprende il linguaggio, le condizioni di verità e le regole di inferenza). Esistono diversi linguaggi logici che permettono forme diverse di entailment su una KB. Si può interrogare una KB a livello di conoscenza (le domande sono relative al linguaggio di rappresentazione ed alla sua semantica) o a livello di simboli (le domande coinvolgono l’aspetto computazionale del linguaggio) Programma Il corso sarà articolato su 3 aree: Elaborazione del Ling.Naturale Rappres. della conoscenza e ragionamento Tecnologie di IA Il ruolo della conoscenza nei sistemi informatici Le conoscenze servono per: interpretare la realtà: capire che cosa è successo (ad es., ipotizzare le cause di un evento che si è verificato); prevedere l’evoluzione della realtà: prevedere con approssimazione accettabile quali modifiche si potranno verificare nel futuro; agire in modo razionale modificando la realtà: costruire piani d’azione per raggiungere determinati obiettivi. Learning to Reason Learning W Reasoning Knowledge Representation KB Task • interarazione con il mondo (World) per knowledge representation si intende: - ciò che si è scelto per facilitare il processo di inferenza - ciò che si è imparato a seguito dell’interazione con il mondo • la prestazione viene misurata rispetto al mondo e per uno specifico task di ragionamento Sistemi intelligenti (1) • Agire in ambienti sconosciuti od ostili (robot in una situazione ignota, agenti/softbot nel web) • Gestire grandi quantità di “conoscenza” descrittiva del mondo e dell’applicazione, con l’obiettivo di migliorare le prestazioni nella risoluzione di un problema, acquisire ulteriore conoscenza per collaborare con altre entità (umani, agenti), gestire informazioni non strutturate come nel Web Sistemi intelligenti (2) • Dialogare con altre entità (anche sul Web) per migliorare l’interazione e l’acquisizione di conoscenza • Capire i sistemi con cui si interagisce per meglio integrare le componenti, facilitare l’interazione, regolare l’accesso alle risorse Sistemi intelligenti (integrazione) I sistemi intelligenti non agiscono in maniera isolata, piuttosto costituiscono componenti importanti in sistemi più complessi a supporto di una maggiore capacità, flessibilità e cooperazione del sistema nel suo insieme. Ciò richiede l’integrazione di: • componenti di reasoning in sistemi tradizionali • conoscenza in basi di dati • description logics in sistemi object oriented Sistemi intelligenti (coordinazione di più agenti umani/artificiali) Per: 1. Comprensione/gestione del dialogo 2. Costruzione di “assistenti” intelligenti (capaci di capire l’utente) 3. Supporto al lavoro di gruppo e/o collaborativo 4. Gestione “networks” Sistemi intelligenti (coordinazione di più agenti umani/artificiali) Necessario, relativamente all’interazione: 1.Comprensione del linguaggio naturale scritto/parlato 2.Generazione del linguaggio naturale 3.Gestione delle ambiguità grammaticali e semantiche 4.Combinazione di tecniche di nlp con altre tecnologie per realizzare interfacce multimediali Sistemi intelligenti (acquisizione di conoscenza da più agenti) Necessario: 1. Capacità di collezionare, codificare, rappresentare conoscenza 2. Integrazione di metodologie per la rappresentazione di conoscenze differenti 3. Gestione dell’organizzazione concettuale della conoscenza in ontologie e la loro integrazione 4. Gestione efficace della strutturazione, indicizzazione, ricerca di grandi quantità/risorse di conoscenza 5. Ragionare su domini di conoscenza diversi 6. Applicare la conoscenza del senso comune Web focus I sistemi software sono sempre più alimentati dal Web Devono quindi gestire/interagire con dati di sorgenti eterogenee che possono essere sconosciute in fase di sviluppo del software. Per la risoluzione di questo problema gli ingegneri del software cercano tecnologie che li aiutino nella gestione della eterogeneità anche runtime. Intelligenza Artificiale (IA) I calcolatori generali (general purpose) hanno la caratteristica di essere macchine simboliche, ovvero sono (1) macchine capaci di manipolare “strutture di simboli” da porre in corrispondenza ad “entità diverse”: • • • • • parole di una lingua naturale, espressioni matematiche, posizioni del gioco degli scacchi, oggetti da riconoscere e classificare, …… Intelligenza Artificiale (IA) I calcolatori generali (general purpose) sono (2) macchine capaci di utilizzare l’istruzione di “salto condizionato” che consente di cambiare l’ordine di esecuzione delle istruzioni. La macchina rivela una capacità discriminativa, ovvero seleziona/sceglie la sequenza di istruzioni da eseguire rivelando un atteggiamento intelligente. Intelligenza Artificiale (IA) Inizialmente attenzione all’analisi di problemi relativi ad ambiti ben delimitati, per risolvere i quali bastano regole esplicite per l’elaborazione simbolica e poca conoscenza specializzata. Successivamente da elaborazione simbolica a conoscenza tacita, ad abilità senso-motorie, alla capacità di adattamento all’ambiente naturale o alle interazioni sociali con altri agenti naturali o artificiali. Intelligenza Artificiale (IA) Inizialmente convinzione che compito principale dell’IA fosse lo studio delle strategie di soluzione di problemi efficacemente selettive, o “euristiche”. La programmazione euristica, analogamente agli esseri umani, esplora solo una parte dei percorsi che, in base alle informazioni possedute, potrebbero portare ad una soluzione accettabile del problema dato e che soddisfino alcuni requisiti irrinunciabili. Intelligenza Artificiale (IA) Tipicamente fondati sulla programmazione euristica sono i sistemi basati su conoscenza (e tra questi i sistemi esperti); una base di conoscenza raccoglie e sistematizza conoscenze e tecniche di ragionamento euristico. Su una base di conoscenza opera un motore inferenziale che risolve i problemi posti, anche simulando tecniche di ragionamento euristico. I sistemi basati su conoscenza vengono considerati uno dei “prodotti” principali della Intelligenza Artificiale simbolica. Intelligenza Artificiale (IA) I sistemi basati su conoscenza non permettono di affrontare adeguatamente alcuni aspetti: Conoscenza tacita: il comportamento intelligente che si ispira al “saper fare”, ovvero ad una abilità difficile da descrivere con conoscenze dichiarative e regole esplicite di manipolazione simbolica Azioni in tempo reale: capacità di reazione adeguate in tempi utili per il problema Robustezza: capacità di lavorare anche in situazioni diverse da quelle previste dai progettisti Intelligenza Artificiale (IA) in pratica Dal punto di vista ingegneristico Le applicazioni dell’IA sono valutate per le loro capacità e prestazioni, indipendentemente dai metodi utilizzati. Idea di base: costruire macchine che non necessariamente “simulino”, riproducendolo, il comportamento del cervello umano, ma che siano in grado di “emularlo selettivamente” nel risultato finale di certe operazioni Architettura di base di un sistema di IA: ambiente Un sistema IA non è un insieme di istruzioni immutabili che rappresentano la soluzione di un problema, bensì un ambiente in cui rappresentare, utilizzare e modificare una base di conoscenza. La soluzione viene costruita dinamicamente a fronte di un certo numero di possibilità. Architettura di base di un sistema di IA: ambiente Un sistema IA deve esprimere due aspetti distinti : • una “base di conoscenza” (che raccoglie la conoscenza di dominio e del problema attraverso asserzioni e fatti da un lato e relazioni e regole dall’altro) • un “motore inferenziale” che utilizza la base di conoscenza per giungere alla soluzione e fornire spiegazioni. Scelta dinamica di quale conoscenza utilizzare nel processo risolutivo. forward chaining versus backward chaining. Logica La logica è sicuramente uno degli strumenti più antichi, assestati e rigorosi utilizzati dall’uomo per formalizzare e spiegare il proprio ragionamento. La logica è semanticamente ben definita, altamente dichiarativa, ed ha un apparato deduttivo generale. La logica classica è utilizzata in IA per rappresentare la conoscenza su un problema (anche se con alcune limitazioni). La BdC diventa una collezione di asserzioni della logica dei predicati del primo ordine; le regole di inferenza permettono di dedurre nuove asserzioni (teoremi) non esplicitamente contenute nella BdC Apprendimento automatico Un sistema non potrà dirsi “intelligente” se manca della proprietà di accrescere le proprie conoscenze e migliorare le proprie abilità (apprendimento). Per raggiungere questo obiettivo bisogna dotare le macchine simboliche di capacità di ragionamento induttivo oltre che deduttivo. Apprendimento automatico Il ragionamento induttivo procede da asserzioni singolari riguardanti particolari fatti o fenomeni (“esempi”) ad asserzioni universali esprimibili mediante ipotesi o teorie che spieghino i fatti dati e siano in grado di predirne di nuovi. L’inferenza deduttiva preserva la “verità” (nel senso della correttezza logica) L’inferenza induttiva non garantisce ciò e può tendere ad un’eccessiva generalizzazione e a produrre errori. Limiti, problemi aperti e … L’apprendimento e la rappresentazione del senso comune sono ben lontani dall’essere una soluzione completa. Limitata crescita incrementale della conoscenza e costi elevati nel produrla Alto costo di manutenzione dei sistemi intelligenti Sistemi inferiori alle aspettative iniziali … … aspettative Supporto all’accesso di informazioni in grandi patrimoni conoscitivi (archivi aziendali, informazioni on-line, repositories di dominio,…) che richiede la capacità di analisi e gestione di dati eterogenei e ridondanti. Strumenti per l’estrazione di conoscenza ad ampio spettro che utilizzino tecniche di apprendimento automatico e la capacità di analizzare il linguaggio naturale. Capacità di integrare, all’interno di sistemi informativi generali, moduli che producano task intelligenti Navigazione intelligente sul web IA debole versus IA forte L’IA debole si propone di costruire (reale costruibilità) macchine che si comportino “come se” fossero intelligenti, ossia macchine capaci di risolvere tutti i problemi che l’intelligenza umana sa risolvere. L’IA forte afferma che la macchina che agisce in modo intelligente deve avere una “intelligenza cosciente”, una mente cosciente indistinguibile dalla mente umana; l’IA forte vuol dare risposta al problema astratto di che cosa sia il “pensare” per una macchina, anche se poi non riesce a costruire macchine intelligenti. … Le simulazioni al calcolatore dei processi cerebrali forniscono modelli degli aspetti formali di questi processi, ma la simulazione non va confusa con la riproduzione. Il modello computazionale dei processi mentali non è più reale di quello di qualsiasi altro fenomeno naturale. Si può immaginare una simulazione al calcolatore dell’ossidazione degli idrocarburi in un motore d’automobile, o dei processi di digestione in uno stomaco alle prese con una pizza. Nel caso del cervello la simulazione non è più reale che nel caso dell’automobile e dello stomaco. La simulazione di un processo cognitivo non produce gli stessi effetti della neurobiologia di quel processo cognitivo…. J.Searle, La mente è un programma?, 1990 Dove si usa? (Esempi di Noemi Scarpato e Andrea Turbati) Nel mondo informatico • • • • • • Ingegneria del software Sicurezza Informatica Web Robotica Videogiochi …. Dove si usa? …ma anche • Giurisprudenza • Medicina • Geografia • Biologia • Meteorologia • Arte • Linguistica • ……. Ingegneria del sw La definizione dell’insieme delle features di un sistema dipende dalle richieste degli stakeholder: l’analisi di tali richieste può essere attuata mediante l’utilizzo di tecniche di NLP in maniera automatica o semiautomatica La fase di analisi dei requisiti può essere supportata dalla creazione di ontologie che descrivono il dominio dell’applicazione. Sicurezza Informatica Applicazioni intelligenti possono essere usate come strumento parallelo ai firewall applicativi. Vantaggi: Apprendimento di nuove regole mediante l’intercettazione dei comportamenti anomali mai incontrati precedentemente a differenza dei firewall tradizionali che possono prevenire solo ciò che conoscono già. Analisi dei dati ricevuti dai client che consente di identificare comportamenti non desiderati. Generazione dinamica di strategie diverse a fronte di attacchi differenti. Motori di ricerca Miglioramento delle prestazioni dei motori di ricerca utilizzando sistemi di NLP per interpretare correttamente il significato della query dell’utente . Vantaggi: Aumento della precision: restituisce solo link a siti rilevanti è in grado di riconoscere siti off topic ma che contengono omonimi e non li prende in considerazione; Aumento della recall: è in grado di restituire un maggior numero di siti rilevanti . Utilizza l’analisi semantica della query per individuare i siti rilevanti anche nel caso in cui essi non contengano esattamente gli stessi termini della query. Web Services Web Services: è una tecnologia promettente ,ma ha un problema, non si riesce a fare composizione automatica. Di fatto questo rende difficile l’utilizzo, è impensabile chiedere agli sviluppatori di fare manualmente il lavoro di composizione. Problema: Come scelgo il web service più adatto alla mia esigenza? Soluzione: Analizzo il file di descrizione del web service utilizzando tecniche di NLP per automatizzare il processo. Accessibilità Sistemi di speach recognition consentono ad un utente con problemi nella lettura o nella scrittura di interagire con il computer attraverso un dialogo. I sistemi di spech recognition sono in grado di comprendere il parlato e di reagire ad ordini vocali. Sistemi di traduzione automatica intelligenti in grado di analizzare dei documenti e tradurli nel linguaggio richiesto dall’utente. Videogiochi Caratterizzazione dei personaggi (espressioni facciali, comportamento) in base all’ambiente circostante. Variazione/evoluzione della strategia di gioco dei personaggi gestita dal computer in base ai comportamenti del giocatore. Evoluzione del mondo virtuale anche durante l’assenza del giocatore. Robotica L'iQue è in grado di dialogare con il suo interlocutore facendo domande e ricordando avvenimenti accaduti, ma non può parlare di se stesso. Riceve una risposta dall’Umano tramite una tastiera. Alcuni scienziati di Sydney che hanno realizzato un gruppo di robot umanoidi in grado di ballare in stile hip-hop. …e nelle altre discipline? Oltre agli ambiti informatici citati precedentemente moltissime discipline utilizzano tecniche di NLP per la gestione dei dati. Alcuni esempi: In giurisprudenza tali tecnologie possono essere utilizzate per analizzare norme con il fine di evidenziare possibili relazioni tra queste. Sono stati creati cataloghi strutturati di opere artistiche e letterarie. In ambito spaziale e geografico l’enorme quantità di dati raccolti durante le osservazioni è gestita con il supporto di tecnologie di Intelligenza Artificiale. Bibliografia (per cominciare…) • Association for the Advancement of Artificial Intelligence: AI in the news , 2009, http://www.aaai.org/AITopics/pmwiki/pmwiki.php/AITopics/AINews • J. McCarty, M.L. Minsky, N. Rochester, C.E. Shannon: A proposal for the Dartmouth Summer Research Project on Artificial Intelligence, 1955, http://www-formal.stanford.edu/jmc/history/dartmouth/dartmouth.html • R. Cordeschi, G. Tamburrini: L’Intelligenza Artificiale: la storia e le idee, 2001, http://www3.humnet.unipi.it/epistemologia/gtamb/ia.pdf • H. Uskoreit: “Language Technology, A First Overview” http://www.dfki.de/~hansu/LT.pdf • D. Gelernter: “Artificial Intelligence is Lost in the Woods” http://www.technologyreview.com/printer_friendly_article.aspx?id=18867 Bibliografia (per cominciare…) • M. Benasayag G. Schmit : “L'epoca delle passioni tristi” Feltrinelli Editore, 2004, ISBN 8807103672, 9788807103674 • R. Dipert: Artifacts. Art works and Agency, 1993, Philadelphia: Temple University Press • J. Searle: Is the brain a digital computer?, Proceedings of The American Philosophical Association, 64,3 (1990), pagg.21-38. • J. Searle: The construction of social reality, 1995, New York: Thje Free Press • J. Doyle, T. Dean: Strategic Directions in Artificial Intelligence, ACM Computing Surveys, 28 (4), Dec. 1996