GoldWorks III
Ismeretalapú rendszerek alaptechnikái tudásreprezentációs módszerek és következtetési/ keresési stratégiák számítógéppel megvalósított változatai Alapvető következtetési technikák: szabályalapú technikák induktív technikák (gépi tanulás) hibrid technikák szimbólum-manipulációs technikák modell-alapú következtetési technikák kvalitatív technikák eset-alapú technikák temporális következtetési technikák neurális hálók
Hibrid rendszerek többféle programozási mintát támogatnak: keret-struktúrákat (frame-eket) szabályokat célvezérelt adatvezérelt megvalósításuk: objektum-orientált eszközökkel
Keret (frame) ismeretelméleti alapokon kidolgozott tudásreprezentálási alapegység szerkezettel rendelkező fogalom leírására szolgáló formális eszköz keretek jellemzői: egy keret tartalmazza: fogalom nevét (egyedi azonosító) legfontosabb tulajdonságait (attribútumok) rekeszekben, résekben (slot) tárolva (keret is lehet) osztályok, alosztályok, példányok hierarchikus struktúra (is_a, instance_of relációk) öröklődés (osztály - alosztály, osztály - példány) eseményvezérelt eljárások: démonok
Keretalapú formalizálás módszerei irányított gráf
Keretalapú formalizálás módszerei keret-nyelvű leírás frame személy frame hallgató frame tantárgy is_a class is_a személy is_a class v.név: h.ttárgy: collection_of tantárgy név: k.név: end előfelt: collection_of end tantárgy end frame Péter frame SZR instance_of hallgató isnstance_of tantárgy v.név: Kis név: Szakértői rendszerek k.név: Péter előfelt: MI h.ttárgy: SZR end
Keretalapú formalizálás módszerei objektum-attribútum-érték hármasok <Péter, v.név, Kis> <Péter, k.név, Péter> <Péter, h.ttárgy, [SZR]> <SZR, név, Szakértői rendszerek> <SZR, előfelt, [MI]>
procedurális elemek, eljárások Démonok (daemons) procedurális elemek, eljárások osztályok, példányok attribútumaihoz rendeltek aktivizálás: when-needed démon when-changed démon when-added démon when deleted démon eseményvezérelt végrehajtás, továbbgyűrűzés jól használhatók konzisztencia-vizsgálatra korlátozott adatvezérelt következtetés
Démonok Szabályok Gyorsabbak, függetlenebbek, mint a szabályok. „Ok/hatás” kapcsolatban van az értékváltozásokkal és a rsz. ezekre való reakciójával. Autonóm módon működnek. Egy szabályt egy másik szabály vagy bizonyos adatok jelenléte hív életre. Ez a szituációfüggő végrehajtás nem látható előre. Kevésbé olvashatók, mint a szabályok. (adott eszköz implementációs nyelve) Igen jól olvashatók. (szimbolikus formalizmus) Céljuk az adott attribútum megjelölt értékváltozásának kezelése. A szabályokba beépített ismeret szabadon áramlik minden szabály felé. A démonok hatáskörét előre, statikusan megkötjük. (van előnye és hátránya is) A szabályok hatásköre futásidőben dinamikusan rajzolódik ki. (flexibilis, kreatív megoldáskeresést biztosít)
A keret-alapú reprezentáció előnyei: hétköznapi gondolkodáshoz illő reprezentáció fogalmi tisztaság, jól kezelhetőség hatékony következtetés az osztályok és az objektum-példányok tulajdonságairól implementáció: objektum-orientált programozás
Hibrid technika szabályok: heurisztikák leírására keretek: adott objektumokról/ eseményekről/ fogalmakról szóló leíró és procedurális információk (egy helyen! jól olvashatók, könnyen módosíthatók, módosítások hatása jobban kézben tartható) hibrid eszközök következtető gépe rendelkezhet: öröklődést, démonokat biztosító mechanizmusokkal üzenetváltást biztosító mechanizmusok (objektum-orientált) célvezérelt/ adatvezérelt szabályvégrehajtással támogathatja a szabályok/ keretek hierarchikus modulokba szervezését támogathatja a meta-szabályok készítését/ használatát
GoldWorks III Tudásbázis alapú hibrid szakértői rsz. fejlesztő rsz. GLISP fejlesztői környezet a GW programozási nyelv platformja GW architektúrája: GW fejlesztői felületei: Menü interface: LISP ismerete nélküli ablakos fejlesztés Fejlesztői interface: LISP „programok” írása file-ba OO fejlesztés
Tudás reprezentálása GW-ben Az információ lattice(rács)-ben tárolódik keretek(frame) példányok(instance) objektumok attribútumai - rések(slot) keretek – adatok stuktúrálása szabályok - IF…THEN…, adatmanipuláció Lattice hierarchia: minden keret eleme a lattice-nek keretek és példányaik hierarchiába szervezettek - szülő - gyermek rések öröklődnek, többszörös öröklődés legfelső, előre definiált és alapértelmezett keret: top-frame (nincs rése)
Lattice hierarchia
GW fő komponensei: Tudásbázis (TB) – tudás Ténybázis (assertion base) passzív: mindig igaz aktív: következtetés passzív tudásból Ténybázis (assertion base) tény – passzív tudás, tényleges ismeret tény = igaz állítás TB-ben tároljuk Lattice információ strukturálása keretek hálózata, hierarchiája Szabálybázis cél elérése az adott adatokkal aktív / dinamikus tudás elérése ok-okozati viszony IF…THEN…
GW fő komponensei: Következtető gép következtetés mintaillesztéssel több következtetési technika a GW-ben: előrefelé haladó következtetés hátrafelé haladó következtetés célvezérelt előrefelé haladó következtetés ezek kombinációi
GW tudás-struktúrái (objektumai): Keret (frame) Példány (instance) Reláció (relation) Tény (assertion) Szabály (rule) Szabályhalmaz (rule set) (attempt) (sponsor) (agenda item)
Keretek: öröklődéskor a szülő(k) réseit örökli ha több azonos nevű rést örökölne, akkor csak az egyiket fogja örökölni Példa: (define-frame person (name : constraints (:list-type string )) (address : constraints (:list-type string )) (birth-year : constraints (:range (1900 1985) )) ) (define-frame employee (:is person) (job title : when-modified (change-salary)) (manager) (salary) (retirement-age : default-values (65) ))
Rések: érvényes Lisp formátumok (number, symbol, string, structures) rés facet-ek (slot facet) - rések tulajdonságainak definiálása - öröklődnek Documentation – slot leírása Print-name – megjelenített név, szóköz és kis-nagy betűk használata Explanation – rés értéke mögé helyezett érték pl. 10 ”kg” Multivalued – több értéke lehet Default-values – alapértelmezett érték Default-certainty – alapértelmezett bizonytalanság When-accedd – függvény, amely rés elérésekor aktivizálódik When-modified – függvény, amely rés módosításakor aktivizálódik Constraints – érték típusának megszorítási lehetősége one-of range list-type child-frame-of instance-of No-inference – ha értéke igaz, akkor nem használja fel következtetéshez Query-form – hátrafelé haladó köv. során, ha nincs éréke, akkor bekéri No-save – rés értéke nem mentődik el a példány mentésekor Graphic – grafikai objektumhoz való kapcsolása, Menü interface-ről nem használható
Példányok: Példa: (define-instance Frank (:is employee) (name ”Frank János”) (address ”1111 Budapest, Kiss krt. 15”) (birth-year 1945) (job title projekt-koordinátor) (manager Alice) (salary) (retirement-age : default-values (65) )) )
Szabályok: Mintákat használ a tények és adatok reprezentálásához kötések (binding): ha a szabályban egy változó értékét már megkötöttük, akkor az értéke megmarad a szabály végéig (bind változó list-form) Szabályok irányítottsága: előrefelé haladó (FORWARD) hátrafelé haladó (BACKWARD) kétirányú (BIDIRECTION) Előrefelé haladó szabály: IF…THEN… típusú szabályok (define-rule név (:direction {:forward | :backward | :bidirectional} ) (:priority szám) minták then [and-then minták ] )
Szabályok: A következmény a then ill. az and-then résztől függ Mindhárom irányítottságnál használjuk az and-then -t, de a hátrafelé haladó következtetés során csak akkor illesztődik, amikor befejeződött a következtetés (ok: illesztések miatt) Előrefelé haladó szabály: IF…THEN… típusú szabályok Példa: IF INSTANCE ?person IS PERSON with job-title ?job THEN INSTANCE ?person IS PERSON Prioritások használata -1000 - +1000, minél nagyobb a prioritási szám, annál nagyobb a prioritása default érték = 0
Tények: minden alkalommal, amikor egy rés értéket kap, akkor egy ”rés-érték” tény illesztődik a ténybázishoz tény struktúrája: 2 fontos komponens tény (minta) – információ, ami igaz függőségi információ – ez az információ hogyan jön be a rendszerbe tények egy példány résértékei esetén: <rés> <példány> <érték> <keret> <példány> Tények típusai: strukturált tény : példányok, résértékek - relációkból származnak nem strukturált tény: - közvetlenül kerülnek a tudásbázisba - ténydefinícióval - (define-assertion minták)
Objektumok rendje: Objektumok egymásra hivatkoznak Alkalmazás definiálásakor az alábbi szabályokat be kell tartani: deftype, defstruct definiálni kell, mielőtt a keretek használják a keretet korábban kell definiálni, mint a példányait kereteket korábban kell definiálni, mint a handler-jét a kapcsolatokat definiálni kell mielőtt a szabályok használják sponzorokat korábban kell definiálni, mielőtt a szabályok használják daemonokat korábban kell definiálni, mielőtt a keretek példányai használják
Példa: Sebesség Kép-nyomtatás Minőség Karakter-készlet Ár Nyomtató kicsi nem levél fix alacsony daisy-wheel-type-1 1 igen vázlat változtatható közepes dot-matrix-type-1 2 közel-levél dual-dot-matrix 3 nagy * magas laser-printer 4 dot-matrix-type-2 5 daisy-wheel-type-2 6
Példa:
Példa: adatok bekérése felhasználótól /* metadeklarációk a felhasználói párbeszéd támogatására */ question(sebesség)=„Milyen legyen a sebesség?”. legalvals(sebesség)=[kicsi, közepes, nagy]. question(képnyomtatás)=„Legyen-e képnyomtatás?”. legalvals(képnyomtatás)=[igen, nem]. question(minőség)=„Milyen legyen a minőség?”. legalvals(minőség)=[levél, vázlat, közel-levél]. question(karakterkészlet)=„Milyen legyen a karakterkészlet?”. legalvals(karakterkészlet)=[fix, változtatható]. question(ár)=„Milyen legyen az ár?”. legalvals(ár)=[alacsony, közepes, magas].