Ingegneria della Conoscenza e Sistemi Esperti: Introduzione Sara Manzoni [email protected] 08/10/2003 Ingegneria della Conoscenza (Knowledge Engineering) Attività di Acquisizione Formalizzazione e Rappresentazione Codifica della conoscenza per la costruzione di sistemi basati sulla conoscenza (Knowledge Based Systems) Knowledge-Based System (KBS) Applicazioni dell’Intelligenza Artificiale (forse quella che più di altre ha avuto successo commerciale) Sistema informatico atto a rappresentare conoscenze specifiche di un dato dominio e ad applicarle alla risoluzione di problemi di interesse Costruiti per risolvere o supportare la risoluzione di problemi complessi di interesse pratico (progettazione, diagnosi, pianificazione, previsione…) mediante processi di inferenza sulla conoscenza KBS SE Sistema Esperto (SE) Particolare KBS con finalità specificatamente pratiche SE: programma che rappresenta e ragiona con la conoscenza di qualche ambito specialistico allo scopo di risolvere problemi (o dare suggerimenti) Esperienza: un insieme di capacità altamente specializzate affinate in una situazione particolare per un fine specifico Un programma è esperto se manipola conoscenza (non semplicemente algoritmi) focalizzata su un dominio specifico “in grado” di risolvere problemi Programmi convenzionali vs KBS Programma Convenzionale Knowledge Based System Algoritmo Problem Solving Method Struttura dati Knowledge Base Dati Dati Architettura di un KBS Knowledge Base Shell Motore Inferenziale Knowledge Base – KB: uno o più componenti del KBS per la rappresentazione della conoscenza Motore inferenziale – componente del KBS che interpreta e utilizza il contenuto della KB Caratteristiche di un KBS Differenze con i programmi classici: i KBS rappresentano forme elementari del ragionamento umano, piuttosto che il dominio stesso operano su una rappresentazione della conoscenza (la base della conoscenza), oltre che fare calcoli e reperire dati risolvono problemi sulla base di metodi euristici o approssimati che, a differenza delle soluzioni algoritmiche, non è certo che terminino con successo Differenze con altri tipi di applicazioni di IA riguardano ambiti applicativi, di interesse scientifico o commerciale devono essere altamente efficienti in termini di velocità e affidabilità devono spiegare e giustificare le soluzioni proposte, per convincere l’utente che il ragionamento seguito è corretto Entità coinvolte nella realizzazione di un KBS Sviluppatore Esperto Knowledge Engineer Utente KB Motore inferenziale Esperto È possibile realizzare un KBS (e in particolare un SE) solo se esiste qualcuno (l’esperto) che: Sia in grado di risolvere il problema Sa perché il problema si risolve in quel modo È in grado di fornire delle spiegazioni su come risolvere il problema È motivato a cooperare nell’iniziativa Knowledge Engineer Si occupa del processo di costruzione di KBS Acquisizione della conoscenza: trasferimento e trasformazione da un fonte di conoscenza ad un programma in grado di risolvere problemi Rappresentazione della conoscenza: trovare il modo con cui informazioni utili possono essere descritte formalmente ai fini della computazione simbolica Controllo del ragionamento: utilizzo della conoscenza nel modo e al momento giusto, determinando il modo in cui un programma (KBS) ricerca una soluzione Fonti di Conoscenza e Knowledge Acquisition Ingegneria della conoscenza Persone esperte del problema (esperti del dominio) Data mining e analisi dei dati Libri, manuali o altri documenti Archivi di dati (registrazioni audio, filmati, database...) KBS: Aree di interesse e ricerca KR: Rappresentazione della conoscenza KA: Acquisizione della conoscenza SD: Software Development M: Maintenance V&V: Validation and Verification UI: User Interaction Knowldege Representation Attività svolta per descrivere grandi quantità di informazioni utili ai fini della computazione simbolica Una rappresentazione della conoscenza deve possedere adeguatezza e correttezza logica capacità euristica: utilizzabile ai fini di risolvere un problema convenienza computazionale: semplice ‘scrivere’ e poi comprendere la conoscenza rappresentata Tipi di rappresentazione Descrizione formale sintassi e semantica ben definite Computazione simbolica i simboli e le strutture possono essere realizzate per rappresentare vari concetti e le loro reciproche relazioni KR: Rappresentazione della Conoscenza Serve un linguaggio di rappresentazione Esistono diversi linguaggi: Linguaggi formali Logici Linguaggi formali Algebrici (reti Petri) Reti semantiche Grafi concettuali Frame Oggetti Regole (costrutti IF ... THEN ...) KR: Rappresentazione dell’Incertezza Teoria dei fuzzy set (Zadeh, 1965) Logiche a più valore Logica multivalore (Lukasiewicz, 1930) Fuzzy Logic KA: Acquisizione della Conoscenza Attività svolta dal knowledge engineer per il trasferimento e la trasformazione di abilità potenzialmente in grado di risolvere problemi da un fonte di conoscenza (es. esperto) a un programma Risultati della ricerca nella KA Metodologie e tecniche di intervista Sviluppo di strumenti CAKE (Computer Aided Knowledge Engineering) Knowldge Acquisition Bottleneck nella realizzazione dei sistemi esperti, in quanto: ogni ambito specialistico ha il suo gergo e spesso è difficile per gli esperti comunicare la loro conoscenza mediante il linguaggio comune spesso la conoscenza esperta si basa su fatti e principi che non possono essere formalizzati in un modello deterministico ben strutturato le abilità umane spesso coinvolgono un certo grado del buon senso della vita quotidiana difficile da delineare SD: Sviluppo (1) Linguaggi logici: es. PROLOG funzionali: es. LISP basati su logiche descrittive: es. CML, Loom, KIF/Ontolingua basati a Frame: es. FRL, KRL, OWL, KL-ONE procedurali basati sulle reti semantiche: es. CYC basati su grafi concettuali: es. Conceptual Graph SD: Sviluppo (2) Strumenti per sistemi a regole di produzione JESS (Java Expert System Shell) CLIPS (C Language Integrated Production System) www.pst.com/opsj.htm JEOPS (Java Embedded Object Production System) www.ghgcorp.com/clips/CLIPS.HTML OPSJ (Object Production System written in Java) herzberg1.ca.sandia.gov/jess www.cin.ufpe.br/~jeops per sistemi basati su CBR M: Maintenance La maintenace della conoscenza è un insieme di attività volte a contrastare l’“invecchiamento” che cui sono soggetti i KBS per loro natura 1° Approccio: maintenace come fase di un ciclo di vito del software/KBS strumenti CAKE (es. CommonKADS, MIKE) 2° Approccio: Modifica del contenuto del sistema KBS realizzati per supportare la maintenance (es. CBR o Ripple Down Rules di Compton) KBS che consentano la maintenance da parte dell’utente (es. ISB di VanHarmelen – aggiornamento regole P-Truck – KEPT Knowledge Elicitacion module of P-Truck) MetaKBS problema della maintenance ricorsiva V&V: Validation & Verification Area di ricerca: Validazione e Verifica della Conoscenza contenuta in un KBS L’obiettivo è trovare delle risposte alle domande: Validazione: la “Knowledge Base” è costruita correttamente? Verifica: la “Knowledge Base” ha un contenuto corretto? •KA: Knowledge Acquisition •KR: Knowledge Representation •SD: Software Developing Aree di interesse e ricerca sui KBS Knowledge Engineer KA KR M KBS Esperto SD Sviluppatore V&V UI Utente M: Maintenance V&V: Validation and Verification UI: User Interface Tipi di KBS: classificazione in base all’applicazione Knowledge Capture and Storing: knowledge acquisition e knowledge maintenance Knowledge Deployment and Sharing Knowledge Processing: supporto, sostituzione e addestramento in attività decisionali e per la risoluzione di problemi in base al metodo di KR e Problem Solving Method Rule-Based System Case-Based System Model-Based System Sistemi ibridi Sistemi a Regole Knowledge Base Base dei fatti: insieme di ‘fatti’ verificati (in un determinato momento) riguardo al dominio in questione Base delle regole: insieme di costrutti del tipo IF insieme di condizioni (Left-Hand Side) THEN insieme di azioni (Right-Hand Side) Motore inferenziale: componente del SE per la gestione della che esprimono una serie di inferenze che modificano la Base dei fatti che rappresentano la conoscenza dell’esperto esplicitata e formalizzata base dei fatti (Inserimento, Cancellazione, Modifica) base di regole (Attivazione delle regole, Conflict resolution, Esecuzione regole) Ricerca della soluzione analoga alla dimostrazione automatica di teoremi, con inferenze successive, partendo da assiomi Vengono evidenziati tutti i passaggi logici che permettono di arrivare ad una soluzione parziale o finale (Trace del sistema) Apprendimento: aggiungere/rimuovere/modificare delle regole (compito problematico e molto complesso) Sistemi basati sui Casi Case Based Reasoning (CBR) [J. Kolodner, 1993] KB: base dei casi (Case Base) Ragionamento per analogia Sistema legale USA Generalmente usato quando non esiste un modello della conoscenza Insieme di casi già risolti e memorizzati secondo una determinata struttura (Indexing) Motore inferenziale: case-based reasoner Ricerca di un problema analogo nella Base dei Casi (Retrieve) Applicazione della soluzione di un caso passato ad un problema attuale (Reuse) adattamento della soluzione recuperata, per tenere conto delle peculiarità del problema attuale (Revise) apprendimento incrementale: la conoscenza del sistema aumenta con l’aumento del numero dei casi (Retain) Sistemi basati su Modello KB e Motore inferenziale: rappresentazione della conoscenza del dominio in un modello causale del dominio Applicabilità: solo quando si possiede una ben nota e completa rappresentazione del dominio Sistemi ibridi: una possibile architettura Descrizione problema Rule-Based Reasoning se nessuna regola applicabile Regola applicata Case-Based Reasoning se nessun caso applicabile Soluzione del problema Caso applicato Model-Based Reasoning Modello applicato