SISTEMA ESPERTO -- KBS

******************
Un Sistema Esperto è un programma come quelli che noi stessi scriviamo o che possiamo acquistare nei negozi di computer. I sistemi esperti possono essere scritti in qualsiasi linguaggio, possono risiedere su qualsiasi supporto di memoria ed essere eseguiti da un qualsiasi calcolatore.
Come dice il nome stesso, un sistema esperto trasforma il calcolatore in un "esperto" in un certo campo. Consideriamo alcuni esempi di esperti umani: un medico è un esperto in malattia; un meccanico un esperto in motori e un avvocato un esperto in leggi. Quando abbiamo un problema e non siamo in grado di risolverlo da soli, ci rivolgiamo a un esperto per avere qualche consiglio.
La differenza tra un esperto e un uomo comune è il fatto di aver studiato o per lo meno di avere acquisito delle esperienze in un certo campo, e di conseguenza poter dare dei consigli. Un sistema esperto è un programma in cui è memorizzata "un'esperienza" opportunamente codificata. Dal punto di vista dell'utente, l'uso di un sistema esperto consiste in un dialogo fra l'uomo e la macchina.
  • Differenze rispetto ai programmi tradizionali

  • Un Sistema Esperto è in grado di operare in un dominio non descrivibile da in modello matematico; a differenza dei programmi tradizionali non vede un mondo fatto di numeri, ma un universo composto di parole e frasi. Le informazioni di cui si avvale possono derivare da una conoscenza empirica, non formalizzata, fondata esclusivamente sulla pratica e sull'esperienza, senza cognizioni teoriche e scientifiche (empirica deriva dalla parola greca empeirikos).
    Lo scopo di un sistema esperto è quello di fornire all'utente un certo risultato, vale a dire la soluzione di un determinato problema. Tale risultato viene ottenuto attraverso una ricerca euristica.
    La parola "euristica" deriva dal greco eurisko (trovare) e significa metodo di ricerca della verità basato sulla documentazione dei fatti. La ricerca euristica in contrapposizione a quella algoritmica consiste nel trovare una soluzione ipotizzando tutte le soluzioni possibili verosimili e cercando di verificarle attraverso una documentazione di cause e fonti.
    L'unico punto a favore dei metodi algoritmici è che sono più sicuri, in quanto effettuano una ricerca esaustiva senza venire influenzati da informazioni fuorviandi. I metodi euristici sono invece più efficenti e "umani" ma anche più rischiosi: può capitare infatti che la soluzione non venga trovata semplicemente perchè non viene tentata, o venga trovata solo in parte a causa di documentazioni insufficienti o male interpretate.
    Un Sistema Esperto si definisce trasparente quando si "vede" il suo funzionamento e si capisce perchè ha prodotto un certo risultato. Nel dialogo con un Sistema Esperto, l'utente può chiedere il perchè di una certa domanda o di una certa deduzione e il Sistema Esperto fornisce prontamente la spiegazione. Durante il colloquio con l'utente esso assume un ruolo di maestro, di consulente; ha un atteggiamento personale e superiore e non ammetterebbe mai di poter imparare qualcosa dall'utente; ciò perchè la sua esperienza è fissata nella base di conoscenza e si assume che l'utente sia meno esperto del sistema.
    La base di conoscenza viene redatta a mano dal programmatore o meglio da una persona che viene chiamata "ingegnere della conoscenza".
    La base di conoscenza di un Sistema Esperto può venire ampliata e modificata, ma sempre in sessioni separate dal dialogo con l'utente. Un sistema esperto ha un'interfaccia amica poichè permette di dialogare con esso senza essere degli specialisti, nè tantomeno competenti in informatica.
  • Struttura di un Sistema Esperto

  • Figure professionali in un Sistema Esperto

  • Considerazioni Conclusive

  • Primi Sistemi Esperti

  • **************************

    In generale un KBS deve essere in grado di offrire ad un utente tutta una serie di nozioni e consigli che altrimenti dovrebbero essere forniti da un altro utente (umano) esperto. Dunque, affinchè un KBS realizzi ciò in modo ottimale, è necessario che esso venga strutturato nelle seguenti tre parti:








    Il KB è una raccolta di fatti generali, regole pratiche e modelli causali di comportamento del dominio del problema. Il modello più ampiamento usato è quello della " production system" . Esso è un formalismo con cui si intende codificare un certo numero di regole, secondo una architettura causa-effetto, e cioè del tipo IF-THEN-ELSE. Eventuali incertezze su alcune conoscenze vengono tenute in conto tramite l'introduzione di alcuni "fattori di confidenza". Altro schema di rappresentazione è quello delle finestre logiche : esse sono finestre in cui vengono raccolte informazioni su un dato argomento, e che vengono aperte (cioè consultate) qualora se ne presentasse la necessità.


    Il Context è il contesto (l'ambiente, il dominio) in cui andrà determinata la soluzione, che sarà ottenuta tramite il meccanismio inferenziale, le informazioni fornite dall'utente e le informazioni fornite dal KB.


    L'inference Mechanism è un meccanismo usato per manipolare l'esecuzione del programma e che può modificare il context mediante l'uso della KB. In altre parole è il meccanismo di controllo del programma (controlli in feedback e non).







    In conclusione, si può dire che differenti schemi di KBS possono essere proposti per risolvere problemi di una particolare sfera di interesse, ciascuno dei quali è codificabile in modo differente è condurrà a soluzioni migliori o no degli altri.
    Si può ulteriormente sottolineare che il meccanismo inferenziale organizza nel complesso la strategia di risoluzione da seguire, e quindi consente di rispondere a domande dell'utente del tipo: come fare?.

    La KB, invece, permette di rispondere a domande del tipo: "cosa fare?".







    Oltre alle tre parti principali componenti il KBS, ci sono altri tre punti, o meglio caratteristiche, secondarie che un KBS è consigliabile soddisfi:



    Un'interfaccia utente non necessita di ulteriori spiegazioni, essendone palesi il significato.


    Per quanto riguarda l'explanation facility , essa mette in grado il KBS di spiegare il processo di ragionamento seguito, e cioè di mostrare come esso usi le regole e le informazioni fornite dall'utente o contenute nel KB. Quindi una buona explanation facility idealmente dovrebbe seguire i seguenti principi:

    a) essere in grado di manipolare domande su aspetti rilevanti della KB e sulle azioni correttive;
    b) essere di facile uso;
    c) dare risposte comprensive e complete.



    Per quanto riguarda infine l'acquisizione e l'aggiornamento della conoscenza di dominio, occorre ricordare che solitamente la KB di un generico sistema non viene costruito in un solo colpo, ma richiede diverse fasi di costruzione . Infatti, di norma, tutti i dati e le relazioni rilevanti non sono immediatamente disponibili al progettista nel momento in cui esso decide di costruire il sistema. dunque, si rende necessario una tecnica per agevolare l'attività di aggiornamento della conoscenza; è per questa agione che, idealmente, il progettista dovrebbe essere in grado di interagire col sistema al fine di modificare ed arrichire la conoscenza, aggiornando di volta in volta il KB. Gli attuali sistemi commerciali non sono in grado di facilitare tale compito, anche se diversi tentativi si stanno facendo per cercare di raggiungere tale scopo (specie tramite l'uso delle tecniche a reti neurali).





    Differenze fra programmi convenzionali e KBS

    I programmi convenzionali consistono di un set di dichiarazioni e istruzioni il cui ordine di esecuzione è predeterminato. Ciò li vincola ad essere molto rigidi, nel senso che eventuali aggiornamenti e/o interventi risultano molto onerosi, dato che il programmatore dovrà intervenire sull'intero programma.
    In questo caso il progettista dovrà assicurare la completezza (cioè che il programma si comporti correttamente per tutte le possibili combinazioni di condizioni) e l'unicità della soluzione (cioè che per uno stesso input, l'output sia uno ed uno solo). Inoltre, in tale situazione l'utente percepisce il programma come una "black box" che per un dato input fornisce un certo output, e quindi egli è totalmente all'oscuro su "come" il programma abbia prodotto quei particolari risultati.
    Viceversa, un KBS non è soggetto a questi limiti. Ciò è reso possibile dal fatto che in esso vi è una netta distinzione tra la KB e la strategia di controllo.
    Schematicamente si ha cioè:

    KBS = Knowledge + Control
    Vs
    Codici numerici = Data structures + Algorithms

    Tale suddivisione del KBS suggerisce come di esso se ne possa incrementare la conoscenza senza tuttavia influenzare in alcun modo la sfera del controllo , ossia la struttura globale del programma; in altre parole il progettista non si trova costretto a garantire la completezza del programma, dato che esso è in continua crescita. Inoltre visto che è presente un'ampia casistica di situazioni (database), per uno stesso set di condizioni di input si possono ottenere diverse soluzioni di output, percio' anche la condizione di unicità della soluzione viene rilasciata.
    Inoltre l'utente del KBS, a differenza dei programmi convenzionali, ha la possibilità di fare domande (perchè, come e cosa) sui risultati e sulle scelte fatte (come una sorta "help on-line").