Practicum Kennistechnologie Docent: Bart Verheij b.verheij@ai.enz www.ai.rug.nl/~verheij/ www.ai.rug.nl/vakinformatie/pract-kentech/ (ook via Nestor)
Overzicht Dit vak Aion Objecten Regels
Doelstellingen Ervaring opdoen met het ontwikkelen van een kennissysteem Kennisacquisitie Kennisrepresentatie Ontwerpmethodologie Leren omgaan met een ontwikkelomgeving voor kennissystemen
Concreet Aan het eind van dit practicum zullen jullie zelf van begin tot eind een kennissysteem ontwikkeld hebben Expertinterview Projectplanning & -verslag Bouwen van een kennissysteem inclusief documentatie Presenteren van het kennissysteem Ontwikkelomgeving: Aion 8.1
Onderwerpen Kennisacquisitie: theorie en praktijk Kennismodellering Kennisrepresentatie Grafische gebruikersinterface: ontwerp en implementatie
Algemene informatie 10 ECTS 1e & 2e kwartaal Voorkennis: Propedeuse KI Kennistechnologie
Vorm & toetsing Hoorcolleges op maandag (9-11, 0061) Practicum op woensdag (9-11, 0229) Het benodigde materiaal komt op de website Introduction to Aion 8 – Student Guide Eventueel: Introduction to Aion 8 – Workshop Instructions Software: Aion 8 (170 MB) + een patch-programmaatje Toetsing: Aion-opdrachten, oefeninterview, probleemdefinitie, systeemontwerp, kennissysteem, eindverslag, eindpresentatie
Overzicht eerste kwartaal Week College Practicum Inleveren 36 Opzet vak & afspraken Overzicht Aion Aion-opdrachten 37 Eenvoudig voorbeeld ("PKT Test") Opdracht 1 38 Wanneer een kennissysteem? Modelleren (probleem- en domeinmodel) Methodologie Opdracht 2 39 Kennisacquisitie Opdracht 3 40 Oefeninterviews Opdracht 4 41 Opdracht 5 42 Opdracht 6 & Verslag oefeninterview
Overzicht tweede kwartaal Week College Practicum Inleveren 46 Volgens afspraak Probleemdefinitie 47 - 48 Systeemontwerp 49 50 51 2 Eindpresentatie Einverslag & kennissysteem
Wat is Aion? Een omgeving voor het ontwikkelen en uitvoeren van kennisgebaseerde applicaties Aion ondersteunt: Object-georienteerd programmeren Regelgebaseerd redeneren (‘inferencing’) Aion bestaat uit: De Aion inference engine Structuren voor het representeren van business knowledge Speciale editors voor het creëren en onderhouden van business knowledge Student Guide p. 1-1, “Overview of Knowledge-Based Systems”
Waarom Aion? Vanwege de mix van object-georiënteerd en regelgebaseerd modelleren
Knowledge-based System (KBS) Architectuur Inference Engine De belangrijkste componenten van een KBS zijn: de knowledge base de inference engine Data Definities Inferencing Controle Business Logica Procedurele Knowledge Base Student Guide pp. 1-12:1-17, “Knowledge-based System Architecture”
Aion Applicatie Structuren Libraries Objecten Regels Object Rule Library Libraries: Contain groups of related objects Enable you to reuse objects in different applications Promote consistency and economy in developing code Make it easier for several developers to partition work Enable distribution of an application as components The Application Library The primary library of an Aion application Contains an entry class Usually called Main Used by Aion to start program execution May contain other classes User interface classes (main window) Component interface classes A library is stored in a .app file. Current library is the one open for editing in Aion. You have Write access to objects defined in the current library Read access to objects defined in included libraries At runtime An application library is deployed as a .exe file Other libraries are deployed as .dll files
Objecten Een object is een verzameling van Gerelateerde data Procedures om bewerkingen uit te voeren op die data Een object vertegenwoordigt meestal een entiteit uit de ‘echte wereld’. In Aion, wordt in alle functionaliteit voorzien door objecten User interface Database access Application processing Kennisrepresentatie (regels) Student Guide p. 2-7, “Objects”
Klassen Vertegenwoordigen iets uit het probleem domein Algemene beschrijving van vergelijkbare objecten Statisch model voor het creëren van objecten Bevatten 2 typen informatie: Attributen zijn data definities Methodes definiëren de procedurele logica die de data bewerkt Kunnen worden georganiseerd in een hiërarchie ATTRIBUTEN METHODES Naam Risico Winstverwachting Display() Print() CLASS Investering
Instanties van een klasse Bevatten de werkelijke data De klasse definieert de attributen en methodes CLASS Investering Naam Risico Winstverwachting ATTRIBUTEN METHODES Comparing Class and Instance Attributes Both are defined in a class Class attribute values are contained in the class itself Instance attribute values are contained in the instances themselves Instance methods operate on a particular instance Class methods act on multiple instances of the class or on the class as a whole Investering 205 “KPN” “Hoog” 1.0925 1.0850 Display() Print() ATTRIBUUT WAARDEN 1.1250
Object-georiënteerd programmeren Klassen en instanties kunnen effectief worden gebruikt door onder andere: Encapsulatie Klassehiërarchieën Polymorfisme Containment en aggregation Student Guide p. 2-14, “Object-oriented Programming Concepts”
Encapsulation The practice of bundling attributes with methods that operate on those attributes An object’s data is accessed only by the object’s methods Outside classes call appropriate methods Isolates functionality and changes Protects calling objects from changes to implementation Prevents outside objects from corrupting the encapsulated data Student Guide pp. 2-14:2-15, “Encapsulation” Related tactics: Define accessor methods to get/set attribute values Use access types to limit access to attributes and methods
Klassehiërarchieën Organiseer classes van algemeen naar specifiek Typisch model “is-een” relaties Voordelen: Maakt het modelleren van het domein efficiënter en begrijpelijker Modelleert relaties tussen objecten in het applicatie domein Eigenschappen worden doorgegeven aan afgeleide classes (evt. specialisatie) Student Guide p. 2-15, “Class Hierarchies” Specialisatie: The ability to customize attributes and methods in derived classes Makes a copy of the method or attribute in the derived class You can make changes to that copy You also can add attributes and methods to derived classes Typically, instances are created from the classes at the lowest levels of the class hierarchy
Polymorfisme De mogelijkheid om in meer dan 1 class methodes met dezelfde naam te implementeren. Basisklassen en afgeleide klassen kunnen dezelfde methode-aanroep op verschillende manieren uitvoeren Vorm Teken() Lijn Cirkel Vierkant
Containment en aggregation In de ‘echte wereld’ bestaan objecten niet geisoleerd; objecten bestaan uit andere objecten Een auto bestaat uit een brandstof injectie systeem, wielen, remmen, enz. Een auto heeft een eigenaar Containment en aggregation representeren ‘bestaat-uit’ en ‘heeft-een’ relaties tussen objecten Student Guide pp. 2-20:2-21, “Containment and Aggregation”
Regels Representeren ‘businesslogica’ Checken data en bepalen welke procedures uitgevoerd moeten worden Worden gedefinieerd in objects Een verzameling regels en de data en procedures die door de regels gebruikt worden vormen de knowledge base Object Rule
Forward chaining Forward chaining is data-gestuurd. Een kleine hoeveelheid data kan een grote hoeveelheid nieuwe data triggeren Regel acties voegen meer nieuwe data toe Nieuwe data Forward Chaining Regels
Hoe werkt forward chaining? Initiële nieuwe data kan komen van: De gebruiker Een database Andere bronnen Nieuwe data 1 Acties zorgen dat andere regels van toepassing worden 3 Forward Chaining Regels 2 Er zijn geen nieuwe regels meer van toepassing
Backward chaining Backward chaining is goal driven De inference engine zoekt naar regels die een antwoord geven op de vraag Hierbij wordt een lijst van subgoals gegenereerd Student Guide pp. 3-13:3-15, “Reasoning with Backward Chaining Rules”
Hoe werkt backward chaining? Uitgangspunt: een top-level goal Is het waar dat… ? (Boolean) Wat voor soort… is het? (Multi-valued) Op te lossen top-level goal 1 Backward Chaining Regels 2 Subgoals geïdentificeerd en opgelost 3 Top-level Goal opgelost 4
Forward of backward chaining Gebruik forward chaining als: Je de implicaties wilt bepalen van een waardeverandering van een data item Je een interactie wilt waarbij zoveel mogelijk informatie op een formulier wordt ingevuld Gebruik backward chaining als: Je de waarde van een bepaalde variabele wilt bepalen (classificatie) Je een interactie wilt van het type vraag en antwoord dialoog
Procedural code vs rules Specifies exactly how control flows from statement to statement Uses exhaustive step-by-step instructions for arriving at results Typical OOP method implementation Rules Declarative code State business facts and relationships using simple IF-THEN statements Can be written and posted in any order Flow determined by inference engine Student Guide p. 2-24, “Procedural Code versus Rules”
Voordelen van het werken met regels: Een regelbestand is declaratief (‘leesbaar’) Een regelbestand kan gemakkelijk worden aangepast Codering van regels is onafhankelijk van het doel De volgorde is niet van belang Student Guide p. 3-4, “Advantages of Expressing Business Logic with Rules”