Skip to main content
main-content

Über dieses Buch

Diese Arbeit beschreibt den auf den ersten Blick ungewöhnlichen Ansatz der Konzeption einer regelbasierten Expertensystemshell, die ausschließlich im APL2 implementiert ist. Die beschriebene Expertensystemshell unterscheidet sich von den im KI-Bereich vorherrschenden und zumeist in Lisp oder Prolog implementierten Systemen in mehrfacher Hinsicht: - Die Shell erlaubt eine im Gegensatz zu Lisp und Pro log sehr einfache Einbindung effizienter numerischer Algorithmen, indem auf die Funktionalität von APL2 zurückgegriffen wird. - Regelwerke werden mit Hilfe eines Übersetzers in APL2-Funktionen und Kontrollstrukturen übersetzt, die mit Hilfe eines vorwärtsschließenden Inferenz interpreter exekutiert werden. Neben dem vollständigen APL2-Quellkode, der als Vorlage für eigene Entwicklungen verwendet werden kann, enthält das Buch auch eine knappe Einführung in Expertensysteme sowie einige exemplarische Regelwerke zur Variablenselektion in Regressionsmodellen und zur Evaluation von Kreditanträgen. Im Anhang werden die wichtigsten APL2-Primitiven, Idiome und Fehlerbehandlungstechniken für den nicht mit APL2 vertrauten Leser dargestellt. Dieses Buch wendet sich insbesondere an Softwareentwickler, die numerische und statistische Algorithmen, wie sie etwa zur Prognose, Planung und zur Optimierung eingesetzt werden, in Expertensysteme integrieren möchten.

Inhaltsverzeichnis

Frontmatter

Kapitel 1. Expertensysteme und APL2

Zusammenfassung
Dieses Buch enthält eine vollständige APL2-Implementation einer Expertensystemshell, mit der regelbasierte Expertensysteme programmiert werden können. Die Anwendung des Systems wird durch zwei ausgewählte Beispiele aus Betriebswirtschaftlehre und Statistik illustriert. Expertensysteme sind hochkomplexe Computerprogramme zur Lösung von Problemen, die normalerweise durch menschliche Experten gelöst werden. Derartige Programme, die oft auch als wissensbasierte Systeme bezeichnet werden, manipulieren formal repräsentierbares Wissen durch symbolische Algorithmen, die menschliches Problemlösungsverhalten durch Suchverfahren und Heuristiken emulieren sollen. Faktisch ist dieser Anspruch bis jetzt erst für relativ einfache und eng abgrenzbare Problemstellungen eingelöst worden. Das ursprüngliche Ziel von Expertensystemen — die Entwicklung von allgemeinen Problemlösungsprogrammen — ist hingegen bisher nicht erreicht worden. Dennoch findet man in der Alltagspraxis eine Reihe von bemerkenswerten Expertensystemen, unter denen die erfolgreichsten zur Rechnerkonfiguration und zur medizinischen Diagnostik verwendet werden. Diese Anwendungen lieferten ermutigende Hinweise darauf, daß maschinelle Experten gegenüber menschlichen Experten eine Reihe von Vorteilen besitzen, die im wesentlichen auf ihre permanente Verfügbarkeit, ihre innere Konsistenz und ihre Kostenkonstanz zurückzuführen sind.
Ulrich Ludwig Küsters

Kapitel 2. Das Design einer regelbasierten Expertensystemshell

Zusammenfassung
Die in diesem Buch implementierte Expertensystemshell basiert auf dem bereits in Kapitel 1.4.2 skizziertem Paradigma von Prämissen-Aktions-Paaren. Das System ermöglicht eine besonders leichte Einbindung von numerischen Berechnungen, wie für eine Reihe von Problemlösungen in den Bereichen Bankwesen, Finanzierung, Statistik, Operations Research etc. benötigt werden.
Ulrich Ludwig Küsters

Kapitel 3. Übersetzen der Regelwerkspezifikation

Zusammenfassung
Durch die Übersetzungsfunktion COMPILE wird eine Zeichenmatrix, die RULE:-, PROMPTA- BLE: -, LEXICON: - und FUNCTION: -Spezifikationen enthält, in ausführbare APL2-Funktionen und Kontrolldaten übersetzt. Der Übersetzer arbeitet von oben nach unten (Top-Down-Processing, siehe Aho, Sethi und Ullman 1986, Wirth 1984, Shapiro 1987) und zerlegt den Quelltext in Einzelsegmente, die zu Regeln, Prompt-Mustern, Lexikoneinträgen und applikationsspezifischen Funktionen korrespondieren. Jedes Segment wird anschließend in Subsegmente zerlegt, die wiederum durch spezielle Funktionen übersetzt werden. Auf der untersten Ebene wird die Regelwerkdefinition durch Kodegenerierungsfunktionen in ausführbare APL2-Funktionen und Kontrolldaten übersetzt.
Ulrich Ludwig Küsters

Kapitel 4. Interpretation der Regelwerkspezifikation

Zusammenfassung
Der vorwärtschließende Inferenzalgorithmus, dessen Kernstruktur bereits in Kapitel 2.5 beschrieben wurde, exekutiert die durch den Regelwerkübersetzer als ausführbare APL2-Funktionen fixierten Regeln. Zur Bestimmung der nichtdeterministischen Exekutionsreihenfolge werden die globalen Kontrollvariablen ΔRINFO, ΔRULES, ΔVARS, ΔBPV, ΔIMAT und ΔOMAT benutzt, die mit der in Kapitel 3.7 implementierten Initialisierungsroutine INIT aufbereitet bzw. erzeugt werden. Die ebenfalls durch die Initialisierungsfunktion INIT aufbereiteten bzw. erzeugten Kontrollvariablen ΔPINFO, ΔLINFO und ΔPROVARS werden in der hier vorliegenden Implementation lediglich in den Benutzerinteraktionskomponenten des Regelwerkinterpreters verwendet. Man beachte, daß die Exekutionsreihenfolge in einem vorwärtsschließenden Inferenzinterpreter primär durch ΔOMAT gesteuert wird, während ΔOMAT nur zur weiteren Einschränkung der potentiell ‚feuerbaren‘ Regeln benötigt wird. In einem rückwärtsschließenden Inferenzinterpreter wird die Exekutionsreihenfolge hingegen primär durch ΔOMAT determiniert.
Ulrich Ludwig Küsters

Kapitel 5. Beispiele

Zusammenfassung
Dieses Kapitel enthält eine Reihe von kurzen Beispielen, mit denen die Leistungsfähigkeit der regelbasierten Expertensystemshell demonstriert wird. Vor der Beschreibung der einzelnen Regelwerke dieser Beispiele werden zuerst die in Tabelle 2.1 angegebenen Hilfsfunktionen implementiert, die teilweise zur Programmierung der Beispiele benötigt werden.
Ulrich Ludwig Küsters

Kapitel 6. Schlußbemerkungen

Zusammenfassung
Zahlreiche Planungsmethoden der Wirtschaftswissenschaft erfordern den Einsatz von quantitativen Methoden, die mit den klassischen Programmiersprachen der künstlichen Intelligenz nur unter großen Schwierigkeiten implementiert und somit nur sehr schwer in Expertensysteme integriert werden können. Die in diesem Buch entwickelte regelbasierte Expertensystemshell ermöglicht hingegen eine bedeutend einfachere Implementation von regelbasierten Expertensystemen, in denen umfangreiche numerische Berechnungen erforderlich sind. Dennoch muß darauf hingewiesen werden, daß das vorgestellte System ein Prototyp ist und sich in erster Linie zum Experimentieren eignet. Zur Zeit hat das System die folgenden Schwächen, die bei einem Ausbau zu einem Produktionssystem beseitigt werden sollten:
  • Vermutlich enthält das System wegen fehlender Beta-Tester eine Reihe von Fehlern, die in zukünftigen Versionen eliminiert werden müssen. Außerdem wurden bisher lediglich relativ einfache Regelwerke mit dem System definiert, so daß eine Bewährung für umfangreiche Regelwerke, die allerdings nur noch mit einem Team entwickelt werden können, aussteht.
  • Das System erlaubt Inkonsistenzen zwischen den durch INPUT: -, OUTPUT: - und LOCAL: - Direktiven deklarierten Variablen und den in IF: - und THEN: -Anweisungen benötigten Variablen. Die Zulässigkeit derartiger Inkonsistenzen ermöglicht einerseits eine prozedurale Steuerung der Regelselektionsschritte. Andererseits besteht jedoch die Gefahr, daß eine Regel selektiert wird, deren Inputvariablen weder bekannt noch abfragbar sind. Daher ist eine Erweiterung des Systems durch einen Parser nützlich, mit dem die in IF: - und THEN: -Blöcken benötigten Inputvariablen diagnostiziert werden.
  • Die Why-Komponente ist sehr rudimentär aufgebaut, da bisher noch keine einfache und benutzerfreundliche Lösung bekannt ist.
  • Ebenso kritisch ist eine konsistente Erweiterung der Wissensbasis durch eine Lernkomponente, für die ebenfalls ausgereifte Konzepte in der Literatur fehlen.
  • Nicht alle Wissensarten können in einer einfachen Weise durch Regelwerke repräsentiert werden. Unter Umständen ist eine Systemerweiterung erforderlich, durch die taxonomische Wissenssegmente mit Hilfe von Rahmen repräsentiert werden können. Dafür bietet sich der Ansatz von Alfonseca (1989a, 1989b) an.
  • Der Übersetzer fängt nicht alle potentiellen Fehler ab. Am kritischsten sind syntaktische und semantische Fehler in IF: - und THEN: -Sektionen, die in der hier implementierten Version nur durch den Interpreter abgefangen werden.
  • Die zeilenorientierte Benutzeroberfläche ist für Endanwender unbequem. Allerdings kann das System durch einfache, wenn auch systemspezifische Änderungen auf eine Fensterumgebung abgeändert werden, sofern eine Window-Bibliothek zur Verfügung steht.
  • Das Programm kann zur Verbesserung der Wartbarkeit stärker modularisiert werden. Der Systemkern besteht aus ungefähr 70 definierten APL2-Funktionen und Operatoren, die teilweise sehr lang sind. Zerlegt man das Programm in kleinere Einheiten, so tritt das Problem auf, daß die Gesamtstruktur aufgrund der unzureichenden Modularisierungswerkzeuge von APL2 unübersichtlicher wird. Außerdem enthält das System zuviele prozedural-imperative Elemente (Sprünge). Allerdings stellt sich die Frage, ob eine funktional-applikative Umstrukturierung von Fehlerbehandlungsalgorithmen und Input-Output-Routinen in einem vernünftigen Kosten-Nutzen-Verhältnis steht.
Ulrich Ludwig Küsters

Backmatter

Weitere Informationen