Scopo di questo capitolo è la definizione di sistema esperto, lintroduzione della terminologia e la presentazione delle componententi fondamentali, affrontando le principali problematiche e i vari aspetti teorici riguardante la progettazione, nel tentativo di dare una visione completa dellargomento. 1.1 Definizione di Sistema Esperto Una delle aree di maggior sviluppo in Intelligenza
Artificiale è lo studio e la progettazione di Sistemi Esperti detti anche Expert
Systems o Knowledge-Based Systems. La caratteristica fondamentale di tali
sistemi è la capacità di eseguire compiti, di solito eseguiti da una persona esperta, in
un particolare dominio.Lesperto è colui che ha una notevole conoscenza ed
esperienza in un ambito ben definito, ed è in grado, in tale ambito, di dare risposte
corrette. "Un Sistema Esperto è un programma di calcolatore, che usa conoscenze e tecniche di ragionamento per risolvere problemi che normalmente richiederebbero laiuto di un esperto. Un Sistema Esperto deve avere la capacità di giustificare o spiegare il perché di una particolare soluzione per un dato problema." Le caratteristiche fondamentali di un Sistema Esperto sono: 1) Possesso di conoscenza specifica. La bontà di un programma di intelligenza artificiale dipende non solo
dal formalismo o dalla tecnica inferenziale utilizzata, ma principalmente, dalla
conoscenza che il programma possiede. 2) Capacità di ragionamento. La capacità di ragionamento sulla conoscenza è una delle caratteristiche dellesperto. Egli ha una notevole perizia nellusare le proprie conoscenze, effettua delle deduzioni e prende delle decisioni mediante un ragionamento basato sulla conoscenza. 3) Capacità di interazione con il mondo esterno. Un Sistema Esperto deve possedere un protocollo di comunicazione con il mondo esterno, per il reperimento di informazioni aggiuntive, necessarie per portare avanti il ragionamento, e per dare spiegazioni allutente 4) Capacità di delucidare il proprio operato. Il sistema deve essere in grado di spiegare il proprio comportamento. In particolare deve essere in grado di giustificare le proprie azioni e di esibire delle spiegazioni sulle conclusioni raggiunte. 5) Capacità di apprendimento. Questa caratteristica non è comune a tutti i Sistemi Esperti, ma è comunque interessante menzionarla. Lapprendimento di nuove esperienze e lampliamento della propria conoscenza sono alcune delle caratteristiche predominanti di un essere umano. Lesperto mediante il suo operato affina le proprie conoscenze e migliora la propria perizia nel raggiungimento della soluzione. 6) Aderenza del dominio alla realtà Il dominio in cui il Sistema Esperto agisce, non deve essere un modello semplificato del dominio reale, ma deve rappresentarlo così comè, pur ovviamente con dei limiti, ma mai ricorrendo a modelli eccessivamente astratti. 1.3 Componenti di un Sistema Esperto Le componenti fondamentali di un sistema esperto sono: 1) La base di conoscenza 2) Il motore inferenziale Insieme racchiudono tutta lesperienza del sistema: la conoscenza riguardante il dominio e il meccanismo di ragionamento.
Figura A Componenti di un Sistema Esperto Nella base di conoscenza è immagazzinata tutta la conoscenza dellesperto. In essa sono contenute ad esempio informazioni del tipo: "Tracce di sega circolare si possono trovare su conci in tufo giallo napoletano, appartenenti a murature posteriori al 1957.", oppure "La muratura in tufo giallo napoletano caratteristica del 1500 è a cantieri.". Rappresenta la parte statica del sistema. Il motore inferenziale è la parte del sistema che lavora sulla conoscenza, al fine di raggiungere le conclusioni. Porta avanti ragionamenti, seleziona le parti della conoscenza utili in un determinato momento, chiede linterazione con lutente. E la parte dinamica del sistema. Tra le altre componenti menzioniamo: larea dati, linterfaccia di comunicazione con lutente. Nell area dati vengono memorizzate le informazioni di partenza, i risultati parziali della computazione, nonché le informazioni aggiuntive che di volta in volta vengono richieste allutente. L interfaccia di comunicazione, offre la possibilità di interagire con lutente. I moderni linguaggi di programmazione, tra le altre cose, offrono gli strumenti per costruire interfacce grafiche user friendly semplici e chiare, idonee ad una migliore comprensione da parte dell utente. 1.4 Progettazione di un Sistema Esperto La progettazione di un Sistema Esperto richiede una
forte interazione tra il progettista e lesperto. Lo scopo del primo è di riuscire a
codificare nel sistema sia la conoscenza, sia il meccanismo cognitivo dellesperto. Come si costruisce un Sistema Esperto ?
Figura B Fasi della progettazione di un sistema esperto Nella fase di identificazione si individuano le caratteristiche del problema e gli elementi della conoscenza. Nella fase di concettualizzazione, lobbiettivo è di identificare ed esplicitare i concetti chiave, e le relazioni tra gli elementi identificati nella prima fase. E la fase in cui il problema viene suddiviso in un insieme di moduli indipendenti. La fase di formalizzazione comprende la scelta del linguaggio di rappresentazione e la progettazione di strutture per organizzare la conoscenza. L implementazione riguarda la formulazione di regole, che costituiscono la base di conoscenza, e la strategia di controllo da utilizzare per ragionare su di essa. La quinta ed ultima fase riguarda il test del sistema, concerne la valutazione delle prestazioni del sistema, che viene sottoposto al giudizio critico dellesperto. Tuttavia, l evoluzione del sistema non è un processo rigorosamente lineare come può far credere ciò che abbiamo detto finora. Durante la fase di progettazione cè un continuo processo di revisione del sistema, di riformulazione dei concetti, di riprogettazione della conoscenza che porta ad un raffinamento dello stesso. Questa suddivisione non vuole essere altro che una traccia della complessa attività che accompagna levoluzione di un Sistema Esperto.
Figura C Processo evolutivo di un Sistema Esperto Una ulteriore caratteristica di un Sistema Esperto è che esso non è mai completo.Tale caratteristica è comune a tutti i programmi di intelligenza artificiale, per i quali non esiste una ben definita specificazione del comportamento desiderato, ma viene richiesta una approssimazione del comportamento umano. In particolare nei sistemi esperti, sono due i principali motivi di questa incompletabilità: 1) La conoscenza dellesperto è la principale fonte di informazione, per cui la base di conoscenza non è mai completa, ci sarà sempre la possibilità di aggiungere ulteriore conoscenza per migliorarne le prestazioni; 2) Alcune volte il sistema da risposte non corrette, per cui abbiamo la necessità di aggiungere nuova euristica in modo da ottenere migliori risultati. 1.5 Rappresentazione della conoscenza Il punto focale della progettazione di un Sistema
Esperto è la rappresentazione della conoscenza. Ha un identità di per se
indipendente dalla funzionalità complessiva del sistema. Questo esclude che un programma,
inteso in senso tradizionale, con unarchitettura in cui la conoscenza è diffusa
nelle singole istruzioni, corrisponda ad un sistema esperto. Generalmente nei sistemi esperti si richiede che la conoscenza sia
rappresentata in maniera tale da avere una descrizione esplicita del dominio, che tra le
altre cose rende il sistema estendibile e facilmente modificabile, e in modo tale che un
motore inferenziale riesca a inferire nuove conclusioni semplicemente manipolandone la
struttura. - Gli Oggetti e le loro proprietà: La macchina è rotta, - Gli Eventi, elementi che cambiano lambiente in cui il sistema opera: Domani porterò la macchina dal meccanico La rappresentazione degli eventi comprende sia una conoscenza specifica su come fare qualcosa, sia una conoscenza su cosa si conosce (metaconoscenza), cioè caratteristiche su cosa conosciamo e sulle modalità nel fare certe attività. Per passare da una visione della conoscenza come archivio, banca dati,
ad una visione come base per avere un comportamento intelligente, occorre definirne le
modalità duso. - Acquisizione: apprendimento, aggiornamento, quindi capacità di mettere in relazione il nuovo con qualcosa di già noto, classificazione della conoscenza al fine di renderne più agevole il reperimento. Tecnicamente, procedure per inserire, cancellare, strutturare. - Reperimento: Linking: legami fra parti della conoscenza correlati per
particolari attività. Ad esempio il fatto " lauto è dal meccanico"
è legato allevento"prendere il bus". - Inferenza: Meccanismi per rendere esplicita conoscenza implicita: deduzione,
induzione abduzione Non esiste una teoria della rappresentazione della conoscenza. Non esiste una risposta a domande del tipo: "E una rappresentazione adeguata per quel problema ?". Esistono solo dei criteri informali che orientano nella scelta e nella definizione di uno schema e di un formalismo per la rappresentare la conoscenza. Tra gli altri menzioniamo: - Adeguatezza epistemologica. (McCarthy e Hayes [Mc69]): capacità di rappresentare tutti gli aspetti del mondo. - Adeguatezza euristica (efficienza). - Rappresentare in maniera semplice e naturale, senza ricorrere a modelli eccessivamente astratti. - Rappresentare in modo modulare, al fine di rendere agevoli eventuali modifiche. - Rappresentare in modo che la manipolazione sia comprensibile e corretta. Nel capitolo 2 tratteremo i più comuni schemi di rappresentazione della conoscenza. 1.6 La componente di inferenza La componente di inferenza ha il compito di manipolare la conoscenza, al fine di raggiungere la soluzione. Generalmente presenta una architettura a due livelli: - Livello oggetto - Livello meta Ognuno di essi può essere visto come un sistema individuale, con un
proprio linguaggio di rappresentazione. Per esplorare e definire classi di sistemi è utile introdurre il
concetto di locus of action, il luogo del sistema attivo in un
determinato istante di tempo. Con esso possiamo classificare i sistemi in quelli in cui il
locus of action è prevalentemente a livello oggetto, e quelli in cui
è prevalentemente a livello meta. I primi hanno essenzialmente una sola componente,
quella operante a livello oggetto, che prende in esame la metaconoscenza durante il ciclo
computazionale, in alcuni punti fissi, per aggiustare il suo comportamento. Nei secondi il
comportamento del livello oggetto è completamente specificato nel meta-livello.
Utilizzando la conoscenza sul livello oggetto, il meta-livello può completamente simulare
il processo di inferenza che avviene al livello oggetto. Ne consegue che la componente a
livello oggetto non è più presente nel sistema. Inoltre, le inferenze che avvengono al
meta-livello, costruiscono le soluzioni al livello oggetto. In questo modo la ricerca
della soluzione avviene al livello meta anziché al livello oggetto e ciò comporta una
maggior efficienza del sistema, in quanto lo spazio di ricerca al livello meta, è più
ristretto e ci si accorge prima degli errori. Infatti in esso, vengono codificate
strategie di ricerca della soluzione, e il sistema deve ragionare su quale sia la migliore
strategia piuttosto che ragionare su una soluzione tentata in una strategia fissa. Inoltre
essendo completamente indipendente dal livello oggetto, è facilmente estendibile e
ridefinibile. - Sistemi Reflect and Act in cui il livello oggetto agisce e il meta-livello riflette sulle azioni del livello oggetto (Sistema Esperto Teiresias [Da80]).
Figura D Sistema Reflect and Act - Sistemi che cercano soluzioni di fronte ad una crisi, in cui il meta-livello interviene solo quando il sistema si trova davanti ad una crisi o un empasse (Sistema Esperto SOAR [La87], [Ro88]).
Figura E Sistemi che cercano soluzioni di fronte ad una crisi - Sistemi che trattano i sub-task in cui la metaconoscenza è utilizzata per dividere i task a livello oggetto in un insieme di sub-task (Sistema Esperto CENTAUR [Ai83]).
Figura F Sistemi che dividono i task a livello oggetto in un insieme di sub-task |