Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this document? Why not share!

Like this? Share it with your network

Share

Künstliche Intelligenz - Sprachen und Tools

on

  • 180 views

Künstliche Intelligenz

Künstliche Intelligenz

Statistics

Views

Total Views
180
Views on SlideShare
180
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Künstliche Intelligenz - Sprachen und Tools Document Transcript

  • 1. KI Sprachen und Tools Autor: Erhard Dinhobl
  • 2. KI Sprachen und ToolsIndexKI Sprachen und Tools .................................................................................... 1 Kurzfassung ............................................................................................... 3 Einleitung .................................................................................................. 3 Die Geschichte der Programmiersprachen und deren Umgebungen..................... 3 Sprachen Entwicklung wissensbasierter Systeme .......................................... 5 Prolog .................................................................................................... 5 Lisp ....................................................................................................... 8 Software und Projekte ................................................................................. 9 YVE ....................................................................................................... 9 orisabase................................................................................................ 9 Brainware............................................................................................. 10 CAS Computer Aided Security ............................................................... 10 Prolog-Interpreter SWI-Prolog ................................................................. 10 UfaSoft Lisp .......................................................................................... 11 Projekt: Regelbasierte Generierung musikalischer Strukturen in der KI-Sprache Prolog .................................................................................................. 13 PureData eine grafische Programmiersprache zur Erzeugung von Klang ...... 14 Verwandte Arbeiten................................................................................... 14 Zusammenfassung .................................................................................... 15 Literatur .................................................................................................. 15 Erhard Dinhobl Seite 2 von 16
  • 3. KI Sprachen und ToolsKurzfassungDer eine oder andere wird vielleicht schon einmal mit Programmiersprachen derKünstlichen Intelligenz etwas ausprobiert oder gearbeitet haben. Und derjenige wirdwissen, dass es sich hierbei nicht unbedingt um die herkömmliche prozeduraleProgrammierung handelt. Vor allem die deklerative Programmierung bietet Aspekte,die durch das Implementieren des ersten kleinen Programms gleich zu mehr Ideenführt. Man beschreibt hier Verständnisdomänen mit Hilfe von Regeln, welche dannvon Interpreter ausgewertet werden. Daten werden hier direkt im Sourcecodegeschrieben und werden auch dementsprechend gehandhabt. Somit ist es möglichSourcecode während der Laufzeit zu erzeugen. Die Maschine kann also gewonnenesWissen erlernen und somit sich selbst erweitern. Diesen Aspekt nutzt man bei derProgrammierung von Expertensystemen (auch Intelligente Systeme, XPS) welchemaschinell lernen sollen.EinleitungDiese Arbeit soll einen Überblick über Programmiersprachen und im speziellen dannnoch über Sprachen der KI geben. Wichtig war mir dabei die praktische Benützungdieser Sprachen und ich wollte das jonglieren mit Formeln und Rechnungenvermeiden. Es soll somit auch eine kleine Basis und Einführung in die KI-Programmierung mit Prolog und Lisp geben, um sich mit der Materie ein wenigvertraut zu machen und somit ein paar anfängliche neurale Verbindungen in seinemGehirn zu schaffen.Zu Anfang werde ich etwas über die Programmiersprachen im Allgemeinen erzählenund die Fakten nennen, die man in Geschichtsbüchern über Computer normalerweisenicht hört.Im zweiten Kapitel möchte ich ein paar Grundlagen über die Entwicklung vonExpertensystemen erklären und die KI-Programmiersprachen Prolog und Lisp mitpraktischen Beispielen vorstellen.Zuletzt werde ich die Funktionen von ein paar Intelligenten Systeme am Markt kurzerklären. Da ich ein musikbegeisterter Mensch bin, möchte ich der Arbeit auch eineganz persönliche Note geben und Projekte, die Musik und KI verbinden, präsentieren.Die Geschichte der Programmiersprachen und derenUmgebungenErste Ideen der Programmierung von Rechnern kamen von Charles Babbage, welcher1823 die Difference Machine und 11 Jahre später die Analytical Engine entwickelte.Diese Maschinen wurden nie fertig gestellt. Babbage kannte noch keineProgrammiersprachen sondern dachte in simplen Maschineninstruktionen.Die erste auf Basis des Binärsystems funktionierende Rechenmaschine war 1941 derZ3 von Konrad Zuse. Danach entwickelte er die erste Programmiersprache der Weltfür Computer, genannt Plankalkül.1948 veröffentlichte Claude Shannon seine Theorie über Kommunikation. Diese sollteIngenieuren zeigen wie man Daten zwischen Computern optimal übertragen kann.Darin definiert Shannon auch das Bit als Grundeinheit von Daten und derDatenverarbeitung.1952 beendete John Backus die Entwicklung eine der ersten wirklich eingesetztenProgrammiersprachen genannt Speedcoding für den IBM 701 Rechner.Mitte der 50er begann man definitiv in die Computerentwicklung zu investieren. Soentsprang aus der Zusammenarbeit von Bob Patrick von General Motors Researchund Owen Mock von der North American Aviation ein Betriebssystem für den IBM704. Das hatte den Namen GM-NAA I/O System. Es stellte batch-processing zur Erhard Dinhobl Seite 3 von 16
  • 4. KI Sprachen und ToolsVerfügung und hatte eine bessere Prozessverarbeitung. Das hatte den Vorteil, dassmehr Jobs in der gleichen Zeit verarbeitet werden konnten als bisher, das aber ohneMehrkosten. Dieses Betriebssystem wurde in ungefähr 40 Installationen verwendet.1956 begann man am MIT (Messecheauseats Institute of Technology) die erstenExperimente mit Direkt-Eingaben in einen Computer via des Keyboards. Dies istvergleichbar mit dem Eingabe-Cursor den wir alle kennen. Doug Ross schrieb imFebruar 1957 das erste Memo das durch eine Tastatur eingegeben wurde. DieseExperimente erhielten daraufhin von vielen Seiten Unterstützung.Kurz darauf veröffentlichte Sperry Rand, eine Frau, den kommerziellen Compiler A-0für den Univac. (Zur Info: Das ist ein Computer von 13 Tonnen und kann 1.905Rechenoperationen pro Sekunde durchführen, was 2,25 Mhz entspricht). Danachfolgte die Sprache Math-Matic. Die Arbeiten am A-0 und dann dem A-2 Compilerführten zur Entwicklung von Flow-Matic. Diese war die erste Programmiersprache,die im kaufmännischen Bereich eingesetzt wurde. Sie hatte Sprachelemente die demEnglischen ähnlich waren. 1957 wurde auch Fortran entwickelt, welche als erstehöhere Programmiersprache gilt. Diese hatte erstmals das Schleifenkonzeptimplementiert. 1959 wurde ERMA, die Electronic Recording Method of Accountingentwickelt, welche es ermöglichte auf Schecks abgedruckte Kontennummern, welchemit magnetischer Tinte geschrieben wurden, auszulesen.Ein Jahr später wurde von einem Team zusammengesetzt aus Spezialisten vonComputererzeugern und dem Pentagon Cobol entwickelt. Basis hierfür waren Math-Matic und Flow-Matic. Die Common Business Orientated Language wurde speziell fürAnwendungen in der Wirtschaft entwickelt. Sie zeichnet sich durch einfacheLesbarkeit und große Maschinenunabhängigkeit aus. Ein Mitglied des Teams, HowardBromberg, hatte bereits während der Entwicklung dem Projekt einen Grabsteinausgestellt. Jedoch können wir heute sagen, dass Cobol bis jetzt überlebt hat. 1960wurde LISP, die erste Programmiersprache für Anwendungen der KI von JohnMcCarthy entwickelt, welche ich aber noch genauer behandeln werde. 1962, dasGeburtsjahr der Computerspiele. MIT Studenten programmierten SpaceWar. EinDisplay zeigte einfache Grafiken, welche Raumschiffe darstellen sollten. Die beidenSpieler feuerten auf das gegnerische Schiff. Gesteuert wurde durch einfacheVersionen von heutigen Joysticks.Kurz darauf wurde der ASCII American Standard Code for Information Interchangedefiniert. Dieser sollte den Datenaustausch zwischen Computern von verschiedenenHerstellern vereinheitlichen. 1964 war das Geburtsjahr von Basic. Es wurde alseinfach zu lernende Programmiersprache für Studenten am Darthmouth Collegeentwickelt. Danach erfolgte eine sehr rasche Entwicklung von Programmiersprachen.1965 kamen erste Ansätze für die objektorientierte Programmierung mit Simula auf.Man konnte damit Daten und Anweisungen in so genannte Objects gruppieren. Jedesdieser wurde als eigenes System simuliert. 1969 wurde UNIX von Kenneth Thompsonund Dennis Ritchie in den AT&T Laboratories entwickelt. Dieses neue Betriebssystementhielt viele Features wie timesharing und file management, welche bereits vonMultics bekannt waren. Multics war ein Betriebssystem der 60er, welches die erstenAnsätze von Multiuser und Multitasking hatten. UNIX erfuhr schnell einen weiten undsicheren Status bei Ingenieuren und Wissenschaftern. Ritchie und Thompsonentwickelten Anfang der 70er auch die Programmiersprache B aus ALGOL60 undBCPP. 1972 erfolgte dann von Ritchie die Fortsetzung zur Sprache C.In diesem Jahr stellte auch Nolan Bushnell das Videogame Pong und die Firma Atarivideo games vor. Auch Prolog, welche ich noch behandeln werde, Smalltalk,AnsiCobol und Pascal wurden entwickelt.In den 80ern folgten die Entwicklungen von MS-DOS und Lotus 1-2-3 und somit dieGründungen von Microsoft und Lotus Development Corp. Weiters wurde ADA83 undCommon Lisp entwickelt und C++ zur vorherrschenden objektorientierten Sprache in Erhard Dinhobl Seite 4 von 16
  • 5. KI Sprachen und Toolsder Industrie. In den 90ern kamen dann schließlich die Programmiersprachen, die diemeisten kennen werden, wie Java, Visual Basic und die erst vor kurzem erschienenenC#, J#, alle weiteren .Net Technologien und auch Ruby heraus.Sprachen Entwicklung wissensbasierter SystemeEines der wichtigsten Eigenschaften unseres Geistes ist die Fähigkeit der Abstraktion.Der Mensch abstrahiert in einem ständig wiederkehrenden Prozess Erfahrungswertezu formalen Ausdrücken einer höheren Ebene. Genau diese Fähigkeit erlaubt es unsDetails von komplexen Domänen zu charakterisieren und diese dann als Ganzes zuverstehen.Somit kann man sagen, dass man ein intelligentes System entwickeln möchte,welches maschinell lernt. Das versucht man mit Hilfe von künstlichen NeuronalenNetzen zu realisieren.Um diesen natürlichen Sachverhalt wiederum zu formalisieren, hat Allen Newell 1982die Architektur wissensbasierter bzw. intelligenter Systeme in 2 Ebenen eingeteilt.Erstens die Symbolebene, welche sich mit der Problemstellung befasst und somit dieFormalismen für die Lösung des Sachverhalts bereitstellt. Als zweites dieWissensebene, welche das Wissen, also die Daten des Programms und dieVerwendung des Wissens enthält. Und genau diese Trennung zwischen Steuerungund Wissen ermöglicht es dem Programmierer mehr auf die Effizienz, Einfachheit,Optimierung und der gleichen, des Programms einzugehen. Weiters wird auch immerwieder versucht, möglichst kosteneffektiv Informationssysteme zu entwickeln. Dasheißt man versucht zum Beispiel Codes wieder zu verwenden. Deshalb werden sogenannte Expertensystemshells hergestellt, welche Lösungen für ein Problem zurVerfügung stellen. Im günstigsten Fall muss man dann bei der Entwicklung einesneuen Systems nur die Wissensbasis neu aufbauen. Da diese Shells nur sehrunflexibel gegenüber weiteren Anforderungen an das System sind, werden sogenannte Shell-Baukästen erzeugt, welche die Probleme in Teilkomponenten lösen.Diese sind austauschbar und erweiterbar. Nun zur Praxis. Womit programmiert manein intelligentes System?Wie alles in der Informatik ist auch die KI einer ständigen Weiterentwicklung undErweiterung unterzogen. Anfangs waren die am häufigsten verwendetenProgrammiersprachen Prolog und Lisp. Aber aufgrund von Druck auf dieSoftwareindustrie durch Entwicklungsstandards und Bedingungen führte dies zurEntwicklung von Expertensystemen in anderen Sprachen wie Smalltalk, C, C++ oderJava. Jedoch kann man auch heute Prolog und Lisp vom Programmiersprachenmarktder KI nicht wegdenken und sie werden sowohl in der Industrie als auch imakademischen Bereich eingesetzt. Auch sind praktische Kenntnisse in diesenSprachen für KI-Programmierer unerlässlich. Kommen wir zuPrologDiese Sprache gehört zu den deklerativen und ist die Abkürzung für Programingwith logic . Sie wurde um 1972 von Alan Colmerauer und der Groupe dIntelligenceArtificielle de Luminy entwickelt. Mitte der 70er kam der erste lauffähige Kompilerfür Prolog heraus. Dieser wurde von David Warren entwickelt.In der KI wird nicht nur versucht, menschliche Intelligenz zu simulieren, sondernauch menschliche Sprache am Computer zu analysieren, zu verstehen und zusimulieren. In Zukunft wird, vermute ich, auch die Kommunikation mit demComputer auf natürlicher Sprache basieren und somit auch passieren. Prolog eignetsich dafür sehr gut, mit Hilfe von linguistischen Theorien natürlichsprachlicheKommunikation in die Praxis umzusetzen. Weitere nennenswerte Anwendungsgebietevon Prolog sind: Expertensysteme, Wissensverarbeitung, Spiele, symbolische Erhard Dinhobl Seite 5 von 16
  • 6. KI Sprachen und ToolsMathematik, Prototyping, Constraint-Programmierung und Deduktive Datenbanken(Unterschiede zu relationalen DB s sind: sie sind abstrakter, somit muss sich derBenutzer um Joins, Selektionen und Projektionen keine Gedanken machen, sie sindmächtiger und Daten die mit Daten berechnet werden, gelten ebenfalls als Daten).Prolog beruht auf der Prädikatenlogik der Mathematik. (Zur Info: Aussagen lassensich in der Prädikatenlogik mithilfe von Junktoren und Quantoren verknüpfen unddefinieren). Somit ist eine oft gebräuchliche Technik nicht anwendbar. Nämlich: x =x + 1, also das Inkrement von Variablen. Denn eine in der Prädikatenlogikgebundene Variable kann KEIN zweites Mal an einen anderen Wert gebundenwerden.Gehen wir zum ersten Beispiel, welches KEINE Hello-World -Anwendung ist, wie invielen Programmiersprachen. Sondern es wird eine Datenbasis angelegt und danachAnfragen an den Interpreter gestellt. Dieser versucht eine Antwort yes oder nomithilfe der gespeicherten Daten abzuleiten. Ist diese positiv kann man die Aussageals logisch ableitbar aus den vorhandenen Daten betrachten.Das Beispiel:auto(polo).auto(jazz).auto(civic).motorrad(valkyrie).firma(honda).firma(vw).hersteller(vw, polo).hersteller(honda, civic).hersteller(honda, jazz).hersteller(honda, valkyrie).Jetzt stellen wir Anfragen an den Interpreter:?- auto(polo).yes?- auto(golf).noTja Golf ist in den Daten nicht gespeichert, deshalb erhalten wir no . Weiters ist inProlog jeder Token der mit einem Grossbuchstaben beginnt eine Variable. z.B.:X=honda;In Prolog kann man auch Regeln mithilfe des :- -Regeloperators definieren. Wirdefinieren jetzt eine Regel, welche überprüft ob ein Motorrad und ein Auto vomselben Hersteller ist:selberhersteller(X,Y) :- hersteller(H,X), hersteller(H,Y).Hier kann man schon einen weiteren Operator erkennen. Nämlich das und welchesin der Prädikatenlogik ^ ist und hier in Prolog ein Beistrich , .. Weitere Operatorensind ; für v (Oder) :- für <- (Implikation, der Regeloperator umgedreht,also wenn, dann) und not für (Nicht). Stellen wir jetzt die Anfrage: Erhard Dinhobl Seite 6 von 16
  • 7. KI Sprachen und Tools?- selberhersteller(valkyrie,jazz).yes?- selberhersteller(X,civic).X=civicX=jazzX=valkyrieWährend in den prozeduralen Programmiersprachen Rekursionen oft nur eineVereinfachung iterativer Problemlösungen bietet und Listen ein Nebenprodukt sind,ist z.B. ersteres die einzige Möglichkeit in Prolog Schleifen zu implementieren. Somitist auch der Verlust des Inkrement einer Zahl x = x +1 schmerzfrei zu ertragen,denn dies wird ja hauptsächlich in Schleifen verwendet.Beispiel:mann(adam).mann(tobias).mann(frank).frau(eva).frau(daniela).frau(ulrike).vater(adam,tobias).vater(tobias,frank).vater(tobias,ulrike).mutter(eva,tobias).mutter(daniela,frank).mutter(daniela,ulrike).elternteil(X,Y) :- mutter(X,Y); vater(X,Y).vorfahr(X,Z) :- elternteil(X,Z).vorfahr(X,Z) :- elternteil(X,Y), vorfahr(Y,Z).Listen sind ebenfalls ein Hauptbestandteil von Prolog. Beispiele:erzeugungen(vw,auto,[polo,golf]).erzeugungen(suzuki,motorrad,[vanvan,bandit]).Falls jemand Interesse hat, die Beispiele wurden mit dem Open-Source Prolog-Interpreter SWI-Prolog erhältlich auf http://www.swi-prolog.org ausprogrammiert.Kommen wir zu Erhard Dinhobl Seite 7 von 16
  • 8. KI Sprachen und ToolsLispWie schon erwähnt, wurde Lisp in den 60ern von John McCarthy entwickelt. Er lebtnoch und ist Dozent an der Uni Stanford.In den 70ern kamen Lisp-Maschinen auf. Dies waren Computer die Lisp-Programmedirekt in ihrer Hardware ausführen konnten. Sie wurden am MIT im AI Laboratoriumrealisiert. Damals mit dabei war Richard Stallman, Gründer des GNU-Projektes. Kurzdarauf wuchsen die Firmen LMI und Symbolics, welche die LISP-Maschinen undderen Software weiterentwickelten und vermarkteten aus dem Boden. Jedochentstand in diesem Duo ein Konkurrenzkampf, in dem Symbolics die Führungübernahm. Dies war aber nur deshalb möglich, solange die DARPA den Ankauf vonLISP-Maschinen im Rahmen des Star-Wars Projektes unterstützte. Die DARPA, früherARPA, Defense Advanced Research Projects Agency, die Entwickler des ARPANET, isteine Agentur des Pentagons, welche Hightech-Projekte für das Militär durchführt.Während dieser Zeit entwickelten Xerox und TI ihre eigenen Maschinen und stelltendiese auf den Markt. Jedoch verdrängten die aufkommenden Unix-basierenden unddadurch viel billigeren Sun Workstations vergleichbare Modelle von anderenHerstellern vom Markt.Während der Weiterentwicklung von LISP entstanden nicht auch aufgrund vonständiger Standardisierung viele Dialekte. Historisch nennenswerte sind MACLISP,INTERLISP sowie das Standard LISP von A.C. Hearn. Der heutige Standard heißtCommon Lisp und ist durch Einfluss der Lisp-Maschinen und deren Sprachstandardsentstanden.Diese Programmiersprache gehört zu den prozeduralen Sprachen, wie C++ oderVisual Basic. Somit wird ein Algorithmus programmiert. Also nicht wie in deklerativenSprachen (vgl. Prolog) wo Aussagen geschrieben werden, welche Zusammenhänge ineiner Aktionsdomäne definieren. Um es aber ganz genau zu sagen ist LISP imGegensatz zu den sonst bekannten prozeduralen Sprachen funktional. D.h. Syntaxund Semantik sind aus der mathematischen Theorie rekursiver Funktionenabgeleitet. Genau diese Art der Programmierung in Kombination mit der reichenAnzahl an vorhandenen Werkzeugen für die Erstellung von symbolischenDatenstrukturen macht LISP so beliebt. Die Hauptanwendungsgebiete sind dieEntwicklung von KI-Werkzeugen, die Erstellung und der Test von Prototypen undderen Systeme und die Implementierung von Suchalgorithmen und Interpretern.LISP durchläuft heute einen mehr als 40jährigen Entwicklungsprozess. Nun zurSprache selbst. Grundlegende syntaktische Einheiten sind die LISP-Atome. Das sindeine Verkettungen von alphanumerische Symbolen und Sonderzeichen. Beispiele:14.5782, 1000, ein-bindestrich-wort, *eine-markierung*. Weitersgibt es Listen, welche eine Folge von Atomen sind: (1 3 5 7), (vw(polo,golf), honda(civi, jazz)). Wie jede Programmiersprache kann auch LISPRechenoperationen durchführen. Nur gehe ich deshalb darauf ein, weil es sich nichtum die Infixnotation 4 + 5 , also den Operator in der Mitte stehend, dieherkömmliche Schreibweise handelt, sondern es arbeitet mit der Präfixnotation. ZumBeispiel + 4 5 . (Zur Info: Es gibt noch die Postfixnotation: 4 5 + ).Um nun jetzt komplexere Ausdrücke zu Formulieren, wie (4 + 5) * (5 + 2) bedarfes einfach nur ein wenig Umdenken zu (* (+ 4 5) (+ 5 2)) . Lisp verlangt Klammernam Anfang und am Ende. Stellen wir solche einfachen Ausdrücke dem Interpreter, sowerden wir das Ergebnis bekommen, in unserem Fall 63 . Lisp versucht hier alsoden Ausdruck (x y z) als (f x y) zu interpretieren, also als Funktion mit denParametern x und y. Somit darf das aber nicht mit den vorhin genannten Listenverwechselt werden, welche ja von der gleichen Form sind. Was ja eigentlichdurchaus möglich wäre. Um diese Verwechslung zu vermeiden stellt Lisp hierfür diequote Funktion zur Verfügung, welche man vor eine Liste schreibt, damit diese Erhard Dinhobl Seite 8 von 16
  • 9. KI Sprachen und Toolsnicht ausgewertet wird. Zum Beispiel: (a b c) und als Ergebnis erhalten wir (ab c). Würden wir nur (a b c) dem Interpreter vorwerfen, so würden wir Error: invalid function a erhalten, vorausgesetzt es gibt keine Funktiona.Jetzt programmieren wir eine Funktion, die den Absolutwert also den Betrag einerZahl x liefert:(defun absolut-val (x) (cond ((< x 0) (* x -1)) ((>= x 0) x)))Und dann der Aufruf:> (absolut-val -2)2Unter Lisp gibt es dann noch eine Besonderheit, nämlich: ( ) die leere Liste,welche sowohl als Liste als auch als Atom angesehen werden. Es trägt dem Namennil. Wer Interesse an der LISP-Programmierung hat, findet einen Lisp-Interpreterunter http://www.ufasoft.com/lisp. Er ist sehr sehr instabil und kostet trotzdemGeld. Ich verwendete die Demoversion!Weitere nennenswerte Sprachen der KI sind Haskell, ML (Abk. MetaLanguage) bzw.deren Dialekte, Gödel, Mercury und SNOBOL auch bekannt unter ICON.Kommen wir nun zu bereits vorhandenerSoftware und ProjekteDie am Markt vorhandenen Expertensysteme sind zum größten Teil für Produktion,Analyse und Warenwirtschaft, Videokameraüberwachung (Computer Aided Securitykurz CAS) und Simulation Neuronaler Netze entwickelt. Als Beispiele:YVEYour Variant Engineer ist ein wissensbasiertes System welches Unternehmenswissen,Berechnungs- und Konstruktionsregeln sowie Konstruktionselemente speichert undauf die man zugreifen kann und verwenden kann. Dabei werden Erfahrungswerte,Formeln, Vorschriften und Tabellen erfasst und in Workflows umgesetzt. DieWorkflows sind die Formalisierungen der Prozesse die zu einem Ergebnis führen; wiefertig konstruiertes Produkt oder ähnliches. Den Preis konnte ich nicht eruieren!orisabase ist eine objektorientierte und regelbasierte Entwicklungsumgebung. Ihre Stärkebesteht darin, dass die Verwaltung von objektorientierten Daten und die Daten selbstsowie die Entwicklung in einer Umgebung vereinheitlicht werden. Es wird beiAnalyse-, Diagnose-, Simulations- und Optimierungsentwicklungen verwendet. DieseSoftware gibt es seit 1996, ist rund 200-mal installiert worden und hat einen Preisvon 2500 Euro zzgl. Mwst., Speicherbedarf 50 MB. Diesen objektorientierten Ansatzder Wissensrepräsentation nennt man Framesystem. Dabei werden Situationen durchein Gerüst, ein Frame, beschrieben. Dieses hat die üblichen, möglichenEigenschaften der Situation und ist somit eine abstrakte Beschreibung dieser. Durchzuweisen der Eigenschaften entsteht daraus eine Instanz, also eine spezielleSituation. Erhard Dinhobl Seite 9 von 16
  • 10. KI Sprachen und ToolsBrainware ist ein Tool zur Entwicklung von Software auf Basis von künstlicher NeuronalerNetze. Es wird für kommerzielle, technische und wissenschaftliche Problemlösungenherangezogen und kann auch in Ergänzung zur Fuzzy-Logic eingesetzt werden.Anwendungsgebiete sind Einkauf, Medizin, Sicherheitswesen,Bilderdatenverarbeitung, Mustererkennung und Steuer- und Regelungstechnik. DieseSoftware wurde 7-mal installiert, ist seit 1995 auf dem Markt, hat einen Preis von3000 Euro zzgl. Mwst. und benötigt 10 MB an Festplattenspeicher.CAS Computer Aided SecurityDiese Software dient zur Auswertung von Videodaten, welche von Videokameraskommen, die in Sicherheitsrelevanten Bereichen installiert sind. Darunter fallen vorallem Bankfoyers, Botschaften, Flure, Museen usw. Es bewertet gezielte statischeVeränderungen im Sichtfeld. Es ist also kein Bewegungsmelder, da sich ja Personendort bewegen können und auch somit am Sinn vorbei gehen würde. Es sollte sichdaher bei Ereignissen wie Diebstahl, Zurücklassen von Gegenständen, Vandalismusoder Übernachtungsgästen melden. Es sollte auch bei Sabotage an den Kameraswie Verdrehen, Abdecken, Blenden oder Defokussieren bellen. Diese Software ist seit2003 am Markt.Prolog-Interpreter SWI-PrologIch möchte hier auch den Prolog-Interpreter, mit dem ich gearbeitet habe,vorstellen.Hier der Startschirm, wo man dem Interpreter Anfragen geben kann.Dann eine neue Datei mit File / New angelegt und es öffnet sich der normaleWindowseditor: Erhard Dinhobl Seite 10 von 16
  • 11. KI Sprachen und ToolsDas Beispielprogramm von vorhin eingetippt und den Editor geschlossen. Über File /Consult die Datei dem Interpreter zum laden gegeben und dann meine Anfragengestellt.Und derUfaSoft LispInterpreter. Man sieht den Dialog Terminal , welcher die Eingabemaske für dieAnfragen enthält. Funktion eingetippt Erhard Dinhobl Seite 11 von 16
  • 12. KI Sprachen und ToolsUnd dann kann man die Anfragen an den Interpreter stellen: Erhard Dinhobl Seite 12 von 16
  • 13. KI Sprachen und ToolsProjekt: Regelbasierte Generierung musikalischer Strukturen in derKI-Sprache PrologAn der Universität in Osnabrück, hat die Forschungsstelle für Musik- undMedientechnologie in Zusammenarbeit mit dem Institut für Computerlinguistik undKünstliche Intelligenz dieses Projekt ins Leben gerufen. Basis hierfür war das bereitsvorhandene Wissen über die KI-Forschung der Beschreibung und des Verstehens vongesprochener Sprache. Die dabei aufgestellten Abstraktionen und die Erfahrungender Analysen semantischer und syntaktischer Strukturen wurden adaptiert und aufdie Musik angewandt, da hierbei vergleichbare Phänomene anzutreffen sind. Diesesomit entstandene formale Beschreibung der Musik wurde verwendet, um diese zugenerieren. Dazu wurde ein System geschaffen, welches in der Lage war nachbestimmten Regeln stilistisch und musiktheoretisch akzeptable Kompositionen zuspielen. Angeregt durch das Großprojekt LILOG, wurden viele verschiedeneProgramme geschrieben, welche in ihrem Zusammenspiel in der Lage waren,musikalisch anhörbare Blues-Improvisationen zu erzeugen und über MIDIabzuspielen. (Zur Info: LILOG ist ein System welches Tourismustexte ansatzweiseversteht, den Inhalt repräsentieren und Fragen zum Inhalt beantworten kann) Esgibt auch weitere Regelbasen für andere Musikstile. Zum Beispiel vierstimmigeChoräle, Volkslieder und auch für aleatorische Kompositionen, also zufällige. Indiesem Vorgang der Regelbasenerzeugung wurden musiktheoretische Grundlagen fürMusikstile erfasst und in Regeln umgesetzt und implementiert. Wird ein sinnvollesWerk erzeugt, können weiters die Regeln als Wissensbasis für die Musikanalyseverwendet werden.Ich habe keinen Einblick in den Source-Code, könnte mir aber einen kleinen Ansatzso vorstellen.Ein Musikstück besteht aus Rhythmus, also den Notenwerten, und Noten.Somit definieren wir Rythmusdaten: (bleiben wir beim 2/4-Takt)rythm(1/2, [1/2]).rythm(1/2, [1/4, 1/4]]).rythm(1/4, [1/8, 1/8]).rythm(1/2, [1/8, 1/8, 1/8, 1/8]).Und wir definieren Klangdaten, also Noten:sound(1/2, [p, g0, g0, g0]).sound(1/2, [dis0]).sound(1/2, [p, f0, f0, f0]).sound(1/2, [d0]).Somit können wir hier folgendes Ableiten:Wer es kennt: Motiv aus Beethoven s Sinfonie Nr. 5Hier wäre dann die einfachste Variation dieses Motivs zum Beispiel die halbe Notedurch 2 viertel zu substituieren.In Hinblick auf die Zukunft wollen die Mitarbeiter des Projekts nicht nur Erfahrungensammeln um eine Software zur automatischen Musikanalyse zu entwickeln sondernauch um Kenntnisse auf die computerlinguistische Forschung anzuwenden. Erhard Dinhobl Seite 13 von 16
  • 14. KI Sprachen und ToolsPureData eine grafische Programmiersprache zur Erzeugung vonKlangPureData ist eine grafische Programmiersprache und wurde 1990 von Miller Puckettentwickelt. Sie wird fast ausschließlich im Bereich der Lehre und Kunst verwendetund dient zur Erzeugung interaktiver Computermusik. Ein implementiertesProgramm, ein so genannter Patch, besteht aus Objekten, Datenströmen, Messages,Subpatches und Arrays. Aufgrund von verändernden Werten und mit den Objektendefinierten Regeln wird ein bestimmter, variierender Klang erzeugt. PureData istOpen-Source. Wer Interesse hat: http://www.puredata.orgEin Beispielpatch:Die Musik die dabei entsteht ist ganz bestimmt kein 100%iger Hörgenuss, jedochinteressant.Verwandte ArbeitenIn diesem Kapitel möchte ich noch ein paar empfehlenswerte Arbeiten bzw. Bücherangeben, welche sich ebenfalls mit diesem Thema befassen. Natürlich konnte undkann ich durch dieses kleine Projekt keine Programmiersprachen vollständigbeschreiben und erklären, jedoch denke ich, bildet sie ein kleines Fundament um mitder Materie der Implementierung von XPS vertraut zu werden.Verwandte Arbeiten: Paradigms of Artificial Intelligence Programming , Peter Norvig, Morgan Kaufmann Publishers Inc., 2001 Künstliche Intelligenz Strategien zur Lösung komplexer Probleme , George F. Luger, Addison-Wesley, 2001 Logic Programming with Prolog , Max Bramer, Springer Verlag, 2005 Erhard Dinhobl Seite 14 von 16
  • 15. KI Sprachen und Tools Prolog Programming for Artifical Intelligence , Ivan Bratko, Addison-Wesley, 2000 Practical Common Lisp , Peter Seibel, Apress, 2005ZusammenfassungAls Schlusswort möchte ich die Punkte herausnehmen, welche ich als wichtigerachte, zu wissen. Die wären: Die erste Programmiersprache der Welt warPlankalkül, 1941 von Konrad Zuse. 1948 definiert Shannon das Bit. Eine Frau, SperryRand entwickelte 1957 die erste Programmiersprache für die Wirtschaft. Die KI-Programmierung kam in den 60ern auf und teilt die Anwendungen in 2 Ebenen,Symbolebene und Wissensebene. Die wichtigsten Sprachen sind Lisp und Prolog.Wobei letzteres vom programmiertechnischen Aspekt her, sicher interessanter ist.John McCarthy entwickelte Lisp und Alan Colmerauer Prolog. Letztere eignet sichsehr gut für Sprachausgabe und Analyse. Die Expertensysteme auf dem Markt sindfür Produktion, Analyse und Warenwirtschaft, CAS und Simulation Neuronaler Netze.LiteraturSysteme und Sprachen der KI www.aaai.org/AITopics/html/sys.htmlGeschichte der Programmiersprachen www.computerhistory.org/timeline/timeline.php?timeline_category=slFachgruppe "Deklerative Sprachen" der Gesellschaft für Informatik eV wdp.first.gmd.de:8080/geske/fg111/Lisp Dialekte/Geschichte/Code Samples/Lispsysteme/ www.aviduratas.de/lisp/Prolog Codesamples/Aufbau www.uni-hildesheim.de/~chlehn/p_ueb/probuch.pdf www.ifi.unizh.ch/req/courses/logische_programmierung/ ws03/documents/Prolog_Tutorial.pdfProlog Historische Entwicklung www-i2.informatik.rwth-aachen.de/ Teaching/Course/LP/2003/Folien/folien03-3.pdf http://kti.ms.mff.cuni.cz/~bartak/prolog/contents.htmlTürme von Hanoi in Lisp www.apl.jhu.edu/~hall/lisp/Hanoi.lispProgrammierparadigmen/deskriptive Programmierung www.informatik.uni-bonn.de/III/lehre/ vorlesungen/Informatik_I/WS01/Folien/endversion/E.pdf www.cs.uni-bonn.de/III/lehre/vorlesungen/ DeskriptiveProgrammierung/SS00/Druckvorlagen/pdf/dsp21.pdfBücher: Programmieren Neuronaler Netze eine Turbo Pascal Toolbox , Hilger Kruse, Roland Mangold, Bernhard Mechler, Oliver Pengler, Addison-Wesley, 1991 Erhard Dinhobl Seite 15 von 16
  • 16. KI Sprachen und Tools Robotor und common sense , Duelen Gerard, McCarthy John, Heidelberg: Spektrum d. Wiss., 1986Brainware www.softguide.de/prog_z/pz_0232.htmSoftware, Open Source Projekte www.aaai.org/AITopics/html/soft.htmlProjekt: Regelbasierte Generierung musikalischer Strukturen in der Sprache Prolog bird.musik.uni-osnabrueck.de/cgi- bin/as_web.exe?projects.ask+B+RegelbasierteSoftware-marktplatz.de (Liste von Expertensystemen wie Brainware, Con4pro,Help2Know, Statistica Neural Networks und deren Hersteller) www.software-marktplatz.de/45000000-software-kuenstliche-intelligenz- expertensysteme-wissensbasierte-systeme.htmlWeitere Software und Interessantes pd-graz.mur.at (PureData Projekt: Miller Puckette s grafische Programmiersprache zur Erzeugung von Klang, Grazer Community) www.ufasoft.com/lisp/ (UfaSoft Common Lisp Interpreter) pakmed.net (PakNeuro: neurologisches Assessment Tool) Erhard Dinhobl Seite 16 von 16
  • 17. This document was created with Win2PDF available at http://www.win2pdf.com.The unregistered version of Win2PDF is for evaluation or non-commercial use only.