Post on 02-Jan-2016
description
BOGDAN KINGA
Szakértői rendszerek - CLIPS
Bevezetés
Az ember régi vágya, hogy olyan szerkezetet készítsen, amely az emberi agyat tudja helyettesíteni.
Az emberi gondolkodás kutatásával a kognitív pszichológia foglalkozik. Azokat a folyamatokat vizsgálja, amikor az ember: feldolgozza tárolja az őt érőingereket majd a megszerzett ismereteket később esetleg később más
problémák megoldásában alkalmazza
Ezen kutatások végcélja a mesterséges intelligencia megteremtése lenne.
Emberi vs. Mesterséges szaktudás
Emberi vs. Mesterséges szaktudás
Szimbolikus programozás
Heurisztikának nevezünk minden olyan elvet, szabályt, következtetést, értékelést, amely bizonyos fajta szituációban érvényes, de nem mindig.
Az ember szinte minden gondolatmenetében heurisztikákat alkalmaz, csak így tud a döntési lehetőségek sokaságának és ezek következményeinek „tengerében”.
Szimbolikus programozás esetén a program futását nem algoritmusok, hanem heurisztikák határozzák meg.
Szakértői rendszerek (Expert System)
Olyan programok, melyekbe be van építve bizonyos feladat-specifikus tudás és azok az analitikus képességek, melyekkel általában a szakértő emberek is rendelkeznek. Ezek segítségével von le következtetéseket szakértő rendszerünk.
Az ilyen rendszereknek olyan képességei vannak melyekkel látszólag logikusan érvelve vonnak le következtetéseket.
Olyan ismeretalapú rendszer, mely magas szintű teljesítményt nyújt egy szűk problémakör kezelésében.
Szakértői rendszer - definíciók
„Számítógépes rendszer, az emberi szakértői tevékenység szimulálására, amely a logikai következtetés szabályai szerint végez műveleteket az adott információkkal”(Jonson 1984)
„A szakértőrendszer a szakértői ismeretanyag egy komponensének tudásbázissal történő reprezentálása számítógépen olyan formában, hogy lehetőséget nyújtson intelligens tanácsadásra, vagy egy folyamattal kapcsolatos intelligens döntéshozatalra. A rendszer képes megindokolni döntéseit.”(Brit Számítástecn. Int.)
Szakértő rendszerek jellemzői
Hasonlójavaslatokat képes tenni mint egy emberi szakértő
Speciális ismeretekkel rendelkezikIntelligens párbeszédre képesPartnere a felhasználónak, mindkét fél
kezdeményezhet beszélgetéstKérdéseit magyarázza, következtetéseit indokoljaSzimbolikus információkat tárol, ezen
információkat heurisztikus módszerekkel dolgozza fel
Mire jó egy szakértő rendszer?
Növeli a munka hatékonyságát: Kevesebb idő Kevesebb ember Kevesebb hibás döntés
Tudásuk mindig elérhetőTudásuk egyszerűen és olcsón
többszörösíthető
Mit várunk el egy szakértő rendszertől?
Adjon javaslatotEgyenrangú fél legyen a „társalgásban”
Tegyen fel kérdéseket Magyarázza meg a kérdéseit Indokolja meg a válaszait
Bizonytalan helyzetekben is adjon elfogadható javaslatot
Szakértő rendszerek története
1950-1970 – általános problémamegoldó módszerek
1970-1990 – szűk problémakör megoldására alkalmas rendszerek
Minél általánosabb egy program annál gyengébb a teljesítménye, konkrét feladatok megoldása esetén
Felmérték, hogy egy program erőssége a benne tárolt ismeretanyag minőségétől és mennyiségétől függ elsősorban
Szakértői rendszerek felépítése
Felhasználói felület
Tudásbázis-szerkesztő
Magyarázórendszer
Következtető motor
Eset-specifikus
adatok
Tudásbázis
Szakértői rendszer burok
Felh
asz
náló
Szakértői rendszerek szerkezete
Tudásbázis – tények, kapcsolatok, heurisztikák, szabályok, vezérlési ismeretek
Következtető motor – megoldáskereső stratégia implementált változata
Magyarázó alrendszer – megmagyarázza a kérdéseket valamint a javaslatokat
Tudásbázis-szerkesztő: az ismeretbázis megépítéséhez, teszteléséhez és módosításához nyújt segítséget
Felhasználói felület: felhasználóbarát lehetőséget nyújt az ember-gép párbeszédhez
Eset-specifikus adatok: tárgyköri ismeretek
Szakértőrendszerek előnyei
Pótolják a szakértőhiányt –elérhető áron terjesztik a szakértő ismereteit
Jól követik a tárgyterület változásait –az ismeretbázist könnyű módosítani
Növelik a szakértő képességeitFokozzák a szakértő produktivitásátMegőrzik a szakértelmetMindig következetesek a tanácsadásban –
nincsenek emocionális tényezők, nem fáradt...Állandóan rendelkezésre állRészleges és nem-teljes adatokkal is tudnak
dolgozniKépesek megindokolni az eredményt
Szakértői rendszerek hátrányai
Ismereteik egy adott szűk tárgyterületről származnak –nincsenek tudatában ennek
Válaszaik nem mindig helyesek –mindig meg kell fontolni a javaslatukat
Nincs hétköznapi józan eszükAz ismeretszerzés bonyolult folyamatA fejlesztés gyakran évekig tart
Alkalmazások
Orvosi diagnosztika (tünet elemzés)Műszaki diagnosztika (hibaelemzés)
rezgés, zaj, részecskevizsgálat
Erőművi, közlekedésbiztonsági rendszerekGeológia(kőzetelemzés)Matematika Gazdasági döntéshozatal(tender értékelés)
Napjainkban használt szakértő rendszerek
Provider Selection Tool: Web-alapú tanácsadórendszer, amely a munkáltatókat és a munkavállalókat segíti megfelelő belgyógyász kiválasztásában Eszközök: ART*Enterprise OrACLE7.1 Netscape Web böngészők
Napjainkban használt szakértő rendszerek
FASTrakAPT: lakások felújítását tervező rendszer Évente 6 millió dollár megtakarítást eredményez Eszközök:
UNIX expert system tool VisualC++
Crew_NS: a Holland Vasutak 5000 vonatkísérőjének és
vezetőjének beosztását ütemező rendszer
Napjainkban használt szakértő rendszerek
Rail Train Scheduler: termékek csomagolását tervező és ütemező rendszer évente félmillió dollár a megtakarítás Eszközök:
ART*Enterprise
CLIPS - Bevezetés
Egy közkincs, szakértői rendszerek kidolgozására létrehozott fejlesztői eszköz.
A CLIPS név a „C Language Integrated Production System” rövidítése
A CLIPS első verziói 1985-től egész 1990-ig a NASA- Johnson Űrközpont által került kifejlesztésre. A fejlesztés eredeti neve NASA’s Artificial Inteligence Language (NAIL) volt.
Valószínűleg a legelterjedtebben használt szakértői rendszer írására szolgáló eszköz, hiszen gyors, hatékony és ingyenes.
Annak ellenére, hogy már közkincs, még mindig frissíti és támogatja eredeti szerzője Gary Riley.
CLIPS – Programozási nyelve
Olyan programozási nyelv, mely támogatja a : Szabályalapú Objektumorientált - COOL Eljárás-orientált programozást
A CLIPS alapvetően szabály-alapú rendszerCsak előrefele haladó levezetési szabályokat
használSzabályalapú nyelve:
Ténylistát tud létrehozni Szabálylistát tud létrehozni Illeszti a tényeket a szabályokra
Lehetőség van a szabályok súlyozására.
A CLIPS telepítése
Letöltés: http://clipsrules.sourceforge.net/ Itt minden szükséges tutorial is megtalálható
Telepítés: A letöltött file egy MSI file, mely a windows installation wizard
használatával kényelmes felületet biztosít a CLIPS rendszer telepítéséhez.
23
A CLIPS kezdőképernyője
24
Példa – Hello, world!
Parancssoros ablakunk van.“Hello, world!” a képernyőn(printout t "Hello, world!" crlf)
CLIPS – Tények és szabályok
Mint minden más szakértői rendszer, CLIPS-ben is szabályokkal és tényekkel dolgozunk.
Több tény együttes fennállása teszi lehetővé egy szabály alkalmazását.
A szabályokat a következő módon hozhatjuk létre:(defrule rule1 (car_problem (name ignition_key) (status on)) (car_problem (name engine) (status wont_start)) => (assert (car_problem (name starter) (status faulty)))
A tényeket a következő módon definiálhatjuk:(deffacts trouble_shooting (car_problem (name ignition_key) (status on)) (car_problem (name engine) (status wont_start)) (car_problem (name headlights) (status work)))
26
CLIPS - függvények
Függvény létrehozása deffunction
CLIPS – Program működése
Létrehozzuk a tényeket egymás után, ekkor ezek állapotot generálnak a memóriában.
Az állapotok függvényében megnézzük az alkalmazható szabályokat.
Ha egy szabály alkalmazható, akkor alkalmazzuk, azaz megnézzük milyen következményei vannak és végrehajtjuk őket.
Pl. rendszerem
28
1. Példa – What’s that fruit?
Diameter > 4 VineY
Tree
N
Red
Green
Red
Green
“Grapes”
“Watermelon”
“Cherry”
“Apple”
Color ?
Color ?
29
Ex 1 – Source
; **********************************; rules; **********************************(defrule vine
(diameter ?dia) (test (> ?dia 4))=> (assert (fruitclass
vine)))
(defrule tree (diameter ?dia) (test (< ?dia 4))=> (assert (fruitclass
tree))) ;====================
=====(defrule watermelon (fruitclass vine) (color green)=> (printout t “Watermelon."
crlf))
(defrule watermelon (fruitclass vine) (color red)=> (printout t “Grapes."
crlf))
(defrule cherry (fruitclass tree) (color red)=> (printout t “Cherry."
crlf))
(defrule apple (fruitclass tree) (color green)=> (printout t “Apple." crlf))
30
1. Példa – Futtatás
; ********************************
; facts;
********************************
(deffacts fruit_conditions (diameter 1) (color red))
CLIPS
CLIPS> (load “ex1.clp”)CLIPS> (defffacts fruit_conditions
(diameter 1) (color red))CLIPS> (reset)CLIPS> (run)Cherry.
Köszönöm a figyelmet!