Künstliche Intelligenz (c) Till Hänisch 2003,2013, DHBW Heidenheim Mittwoch, 8. Januar 14 Definition • “Künstliche Intelligenz (KI) läßt sich als der Zweig der Informatik definieren, der mit der Automatisierung intelligenten Verhaltens befaßt ist.” (Luger) • Zweig der Informatik • • • • • Algorithmen Programmiersprachen usw. Was ist “intelligentes Verhalten” ? Intelligenz ? • • Mittwoch, 8. Januar 14 Datenstrukturen Begabung, Fähigkeiten, Kreativität, Wissen, Bewußtsein ? Fragen über Fragen, alle offen !! Turing Test • • Imitationsspiel, Turing, Computing machinery and intelligence, 1950 • Eigenschaften des Tests: • • Mittwoch, 8. Januar 14 Mensch und Computer werden (über Tastatur, Bildschirm) von einem Menschen befragt. Dieser muß entscheiden, wer ist Mensch, wer ist Computer. Wenn nicht möglich (oder falsch) folgt, Computer ist intelligent. • Objektives Kriterium zur Erkennung von (künstlicher) Intelligenz:Vergleich mit menschlicher Reaktion auf Fragen • • Vermeidung philosophischer Fallstricke (Bewußtsein usw.) Reduktion auf Sprache, dadurch Abstraktion über Aussehen, motorische Fähigkeiten usw. Sprachverständnis ist (deshalb ?) wichtiger Teilaspekt der KI Bots, etwa ELIZA, ALICE • • • eine der zentralen Fragen der KI: Was ist Intelligenz ? • Erläuterung anhand von KI dient (auch) zur Überprüfung von Theorien zur Intelligenz ! KI ist “Sammlung von Methodologien, die von KI-Wissenschaftlern untersucht werden” (Luger) • • • historischer Entwicklung “Methoden zur Lösung interessanter Probleme” (Hänisch) • • • Mittwoch, 8. Januar 14 Beispielen die nicht nur auf ein spezielles Problem angewandt werden können (allgemeine) Methoden zur Lösung von Problemen die nicht (ohne weiteres) als deterministischer Algorithmus beschrieben werden können (emergentes Verhalten) Historie • • • • Aufklärung, Philosophie, Trennung von Körper und Geist (Descartes) • formale Logik: “Alles Denken ist Berechnung” (Hobbes) Formalisierung der Beschreibung der Welt (Leibnitz, Euler), Graphentheorie Logik (Boole): “... die Grundgesetze derjenigen geistigen Operationen zu erforschen, die für das Schließen verantwortlich sind: ihnen Ausdruck zu verleihen in der formalen Sprache eines Kalküls und auf dieser Grundlage eine Wissenschaft der Logik zu begründen und deren Methode zu unterrichten” (aus Luger) • • • Mittwoch, 8. Januar 14 logische Aussagen (wahr/falsch) Operationen (AND, OR, NOT) allgemein gültige Aussagen X AND X = X, usw. • Prädikatenlogik (Frege) • • Mittwoch, 8. Januar 14 Wissensrepräsentation Grundlage von Expertensystemen • Idee: (Vollständige) Beschreibung der Welt durch (wahre) Aussagen und logische Verknüpfungen möglich • Leicht erschüttert durch Erkenntnisse zur Vollständigkeit der Mathematik • “It may therefore be surmised that these axioms and rules of inference are also sufficient to decide all mathematical questions which can in any way at all be expressed formally in the systems concerned. It is shown below that this is not the case,...” (Gödel, ON FORMALLY UNDECIDABLE PROPOSITIONS OF PRINCIPIA MATHEMATICA AND RELATED SYSTEMS) • “R is the set of all sets which are not members of themselves. Thus the statement: "Set R is a member of itself" is indeterminate.” (Betrand Russell) • Beschreibung der Welt durch logische Aussagen und Schlüsse ist schwierig !!! • • • • • • Mittwoch, 8. Januar 14 prinzipielle Probleme viele Regeln, hohe Komplexität hat man auch in der KI gemerkt, deshalb andere Modelle zur Beschreibung Biologische und soziale Modelle • • • • GOFAI (Good Old Fashion Artificial Intelligence) Agentensysteme neuronale Netze genetische Algorithmen “ganz andere” Ansätze: Statistik, Chaostheorie usw Anwendungen • Spiele • • • • • Mittwoch, 8. Januar 14 wenige, klare Regeln große Suchräume Heuristiken Maschinelles Schließen • • Dame, Schach usw. formale Logik, PROLOG Expertensysteme MYCIN • • • • Mittwoch, 8. Januar 14 Diagnose bakterieller Erkrankungen, Therapievorschläge zum Einsatz von Antibiotika >> What is the patients name? John Doe. >> Male or Female? Male. >> Age? 55. >> Let's call the most recent positive culture C1. From what site was C1 taken? From the blood. ... >> My recommendation is as follows: give gentamycin using a dose of 119 mg (1.7mg/kg) q8h IV [or IM] for 10 days. Modify dose in renal failure. Also, give clindamycin using a dose of 595 mg (8.5 mg/kg) q6h IV [or IM] for 14 days. Schließen auf Basis unsicheren Wissens Ergebnis teilw. besser als (menschliche) Ärzte. Probleme: Akzeptanz, wenn Fehldiagnose, wer haftet ? usw. Erklärt, auf Basis welcher Regeln Entscheidung getroffen wurde, dadurch nachvollziehbar Sprache • richtige Aussprache von geschriebenem Text (NetTalk, Mitte 80’er, neuronales Netz) • Verstehen von Sprache ist komplex • Mittwoch, 8. Januar 14 • • nicht nur die Wörter, sondern auch der Kontext muß verstanden werden • klassisches Problem von Übersetzungsprogrammen, “Service-Satz 1 (SP1) des Internet Explorers 6 stellt einen neuen Standard im Privatleben, in der Zuverlässigkeit und in der Flexibilität ein. Gekommen sehen Sie, wie Internet Explorer die Weise auf dem Netz führt.” (Übersetzung von google) Analyse von Syntax (Grammatik) i.w. auf Basis von Regeln, Sematik (Bedeutung) benötigt den Kontext In der Anwendung sind meist einfachere Systeme (ELIZA, ALICE) erfolgreich Robotik • • Wie steuert man einen Roboter ? Wahl von Wegen usw. --> Planung • • • • Zerlegung in Teilschritte Reise zur BA Dresden: (zum Ulmer Bahnhof, nach Dresden, zur BA) wie macht man das automatisch (Algorithmus) ? --> Wissen über Problemdomäne nötig Agentensysteme • Mittwoch, 8. Januar 14 viele Freiheitsgrade hierarchische Problemzerlegung • • • z.B. Bewegung durch Raum • • Emergentes Rechnen Strategie zur Problemlösung wird nicht explizit kodiert lernfähiges System wird mit Beispielen trainiert (”lernt”) • • • • Analogie zum menschlichen Lernen neuronale Netze Problem: Gründe für eingeschlagenen Lösungsweg sind nicht mehr nachvollziehbar System aus vielen interagierenden Komponenten löst Problem selbstständig • • • einfache Regeln Kommunikation, Sozialverhalten (Multi-) Agentensysteme • Mittwoch, 8. Januar 14 Zusammenfassung • Verwendung von Computern für Schließen, Mustererkennung, Lernen (Inferenz) • Probleme, die sich nicht für algorithmische Lösung eignen (heuristische Suche,...) • • • • • • Problemlösungsverfahren auf Basis unscharfer Informationen Qualitative Merkmale von Situationen (semantische) Bedeutung, (syntaktische) Form “ausreichende” Lösungen, wenn exakte/optimale Lösung unmöglich/zu teuer Einsatz bereichsspezifischen Wissens Metawissen zur Steuerung der Problemlösung nach Luger Mittwoch, 8. Januar 14 Mittwoch, 8. Januar 14 Mittwoch, 8. Januar 14 Literatur Mittwoch, 8. Januar 14 • • Luger, Künstliche Intelligenz, Addison Wesley, 2001 • • Clocksin, Mellish, Programming in PROLOG, Springer, 1987 • • Ferber, Multi-Agent Systems, Addison Wesley, 1999 • Alberts, Bray, Lewis, Raff, Roberts, Watson, Molecular Biology of the Cell, Garland Publishing, 1994 Bigus, Bigus, Intelligente Agenten mit Java programmieren, Addison Wesley, 2001 Lange, Oshima, Programming and Deploying Java Mobile Agents with Aglets, Addison Wesley, 1998 Fogel, Corne, Evolutionary Computation in Bioinformatics, Morgan Kaufman, 2003 Labyrinth Ausgehend von einem Raum soll Ausgang gesucht werden Start z.B. in Raum 1 (Allgemeines Problem: In einem Graphen soll Weg zwischen zwei Knoten gefunden werden, z.B. Weg zwischen zwei Städten,...) Wie ? Mittwoch, 8. Januar 14 breadth first Ausgehend vom Startknoten besuche alle direkt verbundenen Knoten prüfe jeweils, ob am Ziel Implementierung: Liste der zu besuchenden Räume (enthält zunächst den Startknoten) wird abgearbeitet Für jedes Element dieser Liste: Füge jeden direkt verbundenen Knoten der Liste hinzu Anmerkung: Bei nicht gerichteten Graphen (Wege sind in beiden Richtungen “begehbar”) muss eine Liste der bereits besuchten Knoten geführt werden, um Schleifen zu vermeiden Mittwoch, 8. Januar 14 depth first Ausgehend vom Startknoten Für jeden möglichen Weg: bin ich am Ziel ? --> fertig, sonst geht’s von hier aus nicht weiter ? --> abbrechen, sonst nimm diesen als Startknoten und suche ab dort z.B. Start in 1, Weg: 1->0, von 0 aus keine Lösung --> zurück 1->3, 3->2, keine Lösung, 3->4, 4->5, fertig backtracking: Wenn eingeschlagener Weg nicht weiterführt, zurück und Alternative probieren (trial and error) Witz dabei: Explizite Suchtechnik ist nicht (!) vorgegeben, Lösung des Problems erfolgt durch “ausprobieren” Implementierung durch Rekursion Mittwoch, 8. Januar 14 backtracking Wichtige Problemlösungsstrategie, funktioniert in vielen Fällen, z.B. “Springerproblem” Springer soll - ausgehend von einer Startposition - so über Schachbrett bewegt werden, dass alle Felder genau einmal berührt werden Allgemeine Lösung: - Fange (irgendwo) an - Bin ich fertig ? wenn nein, dann - Wähle nächsten Zug (nächste Alternative, nächsten Knoten,...) - Wenn gültiger Zug (erlaubter Zug, Springer auf dem Schachbrett,...) - Zeichne diesen Zug auf - Löse von dieser Startposition ausgehend - Wenn Lösung so nicht möglich, gehe zurück und lösche die Aufzeichnung Implementierung (einfach) durch Rekursion Mittwoch, 8. Januar 14 private boolean _solve(int aX, int aY, int Round) { if (Round == Size*Size) return true; for (int i=0;i<8;i++) { int testX = aX + ZuegeX[i]; int testY = aY + ZuegeY[i]; if ((testX >= 0) && (testY >= 0) && (testX < Size) && (testY < Size) && (Feld[testX][testY] == 0)) { Feld[testX][testY] = Round; if (!_solve(testX,testY,Round+1)) { Feld[testX][testY]=0; } else return true; } } return false; } OfficeMac:~/Maze] till% time java Springer 0.300u 0.140s 0:00.53 83.0% 0+0k 0+0io 0pf+0w [OfficeMac:~/Maze] till% time java Springer 6 0.530u 0.110s 0:00.75 85.3% 0+0k 0+0io 0pf+0w [OfficeMac:~/Maze] till% time java Springer 7 6.850u 0.150s 0:07.12 98.3% 0+0k 0+0io 0pf+0w [OfficeMac:~/Maze] till% time java Springer 8 7.910u 0.160s 0:08.20 98.4% 0+0k 0+0io 0pf+0w [OfficeMac:~/Maze] till% time java Springer 9 ^C6715.320u 32.260s 2:05:40.80 89.4% 0+0k 0+0io 0pf+0w nach 2 Stunden abgebrochen Mittwoch, 8. Januar 14 PROLOG Warum backtracking immer neu programmieren ? door(0,1). door(1,2). door(2,3). door(2,4). door(4,5). way(X,X). way(X,Y) :- door(X,T),way(T,Y). | ?- consult('maze.pl'). compiling /Users/admin/Desktop/KI/Maze/ maze.pl for byte code... /Users/admin/Desktop/KI/Maze/maze.pl compiled, 9 lines read - 962 bytes written, 116 ms (10 ms) yes | ?- way(0,5). true ? (10 ms) yes | ?- way(1,7). no | ?Mittwoch, 8. Januar 14 | ?- way(0,5). 1 1 Call: 2 2 Call: 2 2 Exit: 3 2 Call: 4 3 Call: 4 3 Exit: 5 3 Call: 6 4 Call: 6 4 Exit: 7 4 Call: 8 5 Call: 8 5 Fail: 7 4 Fail: 6 4 Redo: 6 4 Exit: 7 4 Call: 8 5 Call: 8 5 Exit: 9 5 Call: 9 5 Exit: 7 4 Exit: 5 3 Exit: 3 2 Exit: 1 1 Exit: true ? Mittwoch, 8. Januar 14 way(0,5) ? door(0,_79) ? door(0,1) ? way(1,5) ? door(1,_128) ? door(1,2) ? way(2,5) ? door(2,_177) ? door(2,3) ? way(3,5) ? door(3,_226) ? door(3,_214) ? way(3,5) ? door(2,3) ? door(2,4) ? way(4,5) ? door(4,_226) ? door(4,5) ? way(5,5) ? way(5,5) ? way(4,5) ? way(2,5) ? way(1,5) ? way(0,5) ? backtracking ! PROLOG Beispiel female(susi). female(gabi). male(hans). male(klaus). parents(susi,gabi,hans). parents(klaus,gabi,hans). sister_of(X,Y) :female(X), parents(X,F,M), parents(Y,F,M). | ?- sister_of(susi,hans). no | ?- sister_of(susi,klaus). yes | ?- sister_of(X,klaus). X = susi ? yes | ?- Mittwoch, 8. Januar 14 “klassische” Anwendung: regelbasierte Systeme, Prädikatenlogik, z.B. Beweis von Theoremen,... komplexeres Beispiel d( X, X, 1 ):- !. d( C, X, 0 ):- atomic(C). d( U+V, X, R ):d( U, X, A ), d( V, X, B ), R = A + B. usw. | ?- consult('diff.pl'). | ?- d(x*x,x,D). D = x*1+x*1 | ?- d(x*sin(x),x,D). D = x*(1*cos(x))+sin(x)*1 ? | ?- d(sin(x),y,D). D = 0*cos(x) ? | ?- Mittwoch, 8. Januar 14