Cyc

Das Cyc-Projekt hat es sich zum Ziel gesetzt, Informationen in symbolischer Form zu speichern und daraus abzuleiten. Die Idee hinter symbolischer künstlicher Intelligenz ist es, menschliche Intelligenz zu formalisieren und auf Symbolmanipulation zu reduzieren um damit eine nahezu exakte Simulation und Nachbildung mithilfe von Computern zu ermöglichen. Allerdings können einige Problembereiche wie Wahrnehmung, Lernfähigkeit und Mustererkennung nur schwer mit symbolischen KIs umgesetzt werden.

Der Beginn des Cyc-Projekts fand 1984 statt, als es von Douglas Lenat als Teil von Microelectronics and Computer Technology Corporation gegründet wurde. Das ehrgeizige Ziel war, sämtliches „Allgemeinwissen“ als strukturierte Informationen abzuspeichern. Darüber hinaus sollte die Möglichkeit bestehen, basierend auf diesen Informationen Schlüsse zu ziehen. Der Aufbau als ein einziges, großes, zusammenhängendes System anstatt vieler Expertensysteme wurde als vorteilhaft angesehen Hauptbestandteil von Cyc ist der sogenannte „Cyc Knowledge Server“. Dieser ist eine sehr große, vielseitige Wissensdatenbank mit Schlussfolgerungs-Engine von Cycorp. (Dem Unternehmen, das seit 1994 das Projekt übernommen hat) „Wissen“ wird hier als eine semantische Basis von Begriffen, Regeln und Beziehungen dargestellt. Da die Datenbank eine Vielzahl von Informationen enthält, ist sie auch für eine breite Auswahl von Anwendungsbereichen einsetzbar. Die Idee dahinter ist, dass eine Datenbank mit grundsätzlichstem Wissen über kleinste Zusammenhänge über kurz oder lang ein tieferes Verständnis für komplexere Zusammenhänge bieten kann.

Die Kernkomponenten des „Cyc knowledge server“s sind:

The Cyc Knowledge Base

In der Cyc KB wir das Wissen in formalisierter Form dargestellt. Dies geschieht in Form von Fakten, aber auch Faustregeln und Heuristiken kommen zum Einsatz. Als formale Sprache wir CycL verwendet. Die Cyc KB besteht aus Begriffen, sozusagen dem Vokabular und Aussagen über diese Begriffe. Es ist kein „frame“-basiertes System. (also kein Zwängen von Aussagen in bestimmte Muster und „Denk-Anleitungen“)

Alle Aussagen über mehrere Begriffe gewichten diese Begriffe gleich und sind nicht „hauptsächlich über den ersten Begriff“ o.Ä. „Cyc is not a frame-based system: the Cyc team thinks of the KB instead as a sea of assertions, with each assertion being no more “about„ one of the terms involved than another.“[1] Die KB ist eingeteilt in mehrere tausend „microtheories“. Eine „microtheory“ ist dabei eine Menge von Aussagen, die eine gemeinsame Menge von Grundvoraussetzungen teilen. Das kann z.B. ein bestimmtes Fachgebiet oder ein Zeitintervall sein. Auf diese Weise sind unabhängige, aber sich widersprechende Aussagen möglich, da sie sich auf verschiedene Rahmenbedingungen stützen können. Momentan enthält die Cyc KB fast 200.000 Begriffe und dazu jeweils mehrere Dutzend Aussagen pro Begriff. Neue Aussagen/Begriffe werden kontinuierlich hinzugefügt. (Z.Zt. noch von Menschen) Zusätzlich werden Begriffen anhand von Eigenschaften des eigentlichen Begriffs gebildet. Beim Schlussfolgern fügt Cyc darüber hinaus noch selber Aussagen hinzu, die sich durch die „Überlegungen“ ergeben haben.

The Cyc Inference Engine

Die Cyc Inference Enginge ist zuständig für allgemeine, logische Schlussfolgerungen. (Modus ponens, modus tollens, universelle und existenzielle Quantifikation) Sie beherrscht die Mechanismen der Vererbung sowie der automatischen Klassifikation. Es wird nach dem best-first Suchmechanismus verfahren. (Vielversprechendster Ansatz wird zuerst verfolgt) Dabei werden eine Reihe proprietärer Heuristiken verwendet. Microtheories steigern die Effizienz durch Eingrenzung der Suchbereiche. Wegen der riesigen Menge an Aussagen in der Cyc KB sind viele herkömmliche Schlussfolgerungsmethoden zu ineffizient,deshalb wurden im Laufe des Projekts viele spezielle Methoden entwickelt, die auf bestimmte Schlussfolgerungen optimiert sind. So gibt es z.B. ein Modul für Aussagen über (Nicht-)Zugehörigkeit zu Collections, Module zum Feststellen von Gleichheit, zeitabhängige Argumentation, mathematische Schlüsse etc. die ihre Aufgaben jeweils deutlich effizienter erledigen als ein „allgemeinerer Algorithmus“.

The CycL Representation Language

CycL ist eine große und flexible Repräsentationssprache, die im Wesentlichen eine Steigerung einer Prädikatenlogik ersten Grades darstellt. (FOPC - First Order Predicate Calculus) Sie enthält allerdings Erweiterungen für Gleichwertigkeit und einige „second-order-features“. Die genaue Syntax lässt sich hier einsehen.

The Natural Language Processing Subsystem (Cyc-NL)

Das Cyc-NL enthält im Wesentlichen drei Bestandteile: Das Lexikon enthält syntaktische und semantische Informationen über englische Wörter. Wörter werden dabei als Cyc-Konstanten repräsentiert. Beispiel: #$Light-TheWord bezeichnet das englische Wort „light“. Aussagen darüber sind z.B.: #$Light-TheWord ist ein Nomen, aber auch ein Verb und ein Adjektiv und Adverb. Dazu kommen noch die verschiedenen Varianten, in denen light auftauchen kann (lit, lightly...) Viel wichtiger ist jedoch die Verknüpfung der englischen Wörter mit den „richtigen“ Begriffen der Cyc-KB. Das Lexikon ist die erste Instanz bei der Verarbeitung eines Textinputs, es bestimmt die mögliche Art der Wörter.

Welche Art in dem Satz gemeint ist, bestimmt der syntactic parser. Dieser überprüft Mengen von Wörtern auf ihre grammatikalischen Zusammenhänge hin. Dabei werden kontextfreie Regeln und Baumstrukturen benutzt. Das Ergebnis wird am Ende ausgegeben, wobei es bei Mehrdeutigkeit auch mehrere Ergebnisse gibt.

Der semantic interpreter schlussendlich transformiert die Ergebnisse des syntactic parsers ins CycL-Format. Er arbeitet mit Prinzipien der Montague-Semantik. (Formal-Logik und Lambda-Kalkül) Strukturen werden nach und nach aufgebaut und am Ende direkt als CycL-Formeln ausgegeben. Zuvor erfolt eine Überprüfung der Semantik in der Cyc KB zwecks Aussortierung unsinniger Ergebnisse aus dem syntactic parser.

Cyc Semantic Integration Bus

Der Cyc SIB ist sozusagen eine Schnittstelle zu Daten, die in Form von Texten oder Datenbankeinträgen vorhanden sind. Datenbankeinträge werden als implizite Aussagen behandelt, die bei Schlussfolgerungen berücksichtigt werden können. Die Umwandlung von Texten in CycL-Aussagen erfolgt durch das Cyc Natural Language Processing Subsystem.

Cyc Developer Toolsets

Zu den Developer Toolsets zählen sowohl Interface-Tools zur Interaktion mit und Manipulation von der Cyc KB als auch HTML-basierte Interfaces, die Seiten on-the-fly anhand der KB-Einträge generieren können. Jede der Seiten zu einem Begriff enthält Links zu allen Aussagen, die diesen Begriff referenzieren. Desweiteren stehen hierarchische Browser, Lexikon-Editoren, english2CycL-Parser zum Experimentieren, database-tool-interface für das semantic-integration-Modul, etc.

Mehr Informationen über das Cyc-Projekt finden Sie unter http://www.cyc.com/


[1] http://www.cyc.com/cyc/technology/whatiscyc_dir/whatsincyc