“If an expert system – brilliantly designed, engineered and implemented – cannot learn not to repeat its mistakes, it is not as intelligent as a worm or a sea anemone or a kitten” Oliver G. Selfridge, from The Gardens of Learning. Ludwig-Maximilian-Universität München Maschinenlernen von Thomas Bleher1 Seminararbeit zum Seminar „Lehren und Lernen“ Ludwig-Maximilian-Universität München im Sommersemester 2003 gehalten von Frau Dipl. päd. Ulrike-Marie Krause Abgegeben am 30. September 2003 1 Theo-Prosel-Weg 16, 80797 München, Matrikelnr. 010382303844 Inhaltsverzeichnis 1 Einleitung 2 2 Anwendungen 2.1 Data mining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Schwer programmierbare Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Angepasste Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 3 3 Philosophische Fragen 3 4 Grundlagen 4.1 Lernfähigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Lernende Agenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Lernarten und Unterscheidungsmerkmale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 5 5 Supervised Learning 5.1 Decision Trees . . . . . . . . . . . . . . . . 5.1.1 Overfitting . . . . . . . . . . . . . . 5.2 Neuronale Netze . . . . . . . . . . . . . . . 5.2.1 Biologisches Vorbild . . . . . . . . . 5.2.2 Aufbau . . . . . . . . . . . . . . . . 5.2.3 Lernen von neuronalen Netzen . . . . 5.2.4 Zusammenfassung . . . . . . . . . . 5.3 Bayesische Netzwerke . . . . . . . . . . . . 5.3.1 Was sind Bayesische Netze? . . . . . 5.3.2 Lernen von Bayesischen Netzwerken 5.3.3 versteckte Variablen . . . . . . . . . 5.3.4 Struktur lernen . . . . . . . . . . . . 5.3.5 Zusammenfassung . . . . . . . . . . 5.4 Andere Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7 8 8 8 8 9 10 10 10 12 12 12 13 13 6 Unsupervised Learning 13 7 Reinforcement Learning 15 8 Vergleich zu menschlichem Lernen 16 9 Zusammenfassung 17 Literatur 17 Zusammenfassung Diese Arbeit behandelt das Thema Maschinenlernen (ML). Ziel ist, Methoden und Anwendungen von Computerlernen kennenzulernen, besonders auch im Hinblick und als Vergleichspunkt zu menschlichem Lernen. Zuerst werden verschiedene Anwendungen vorgestellt, die zeigen wie ML in der Praxis eingesetzt wird. Danach wird auf einige grundsätzliche philosophische Fragen hingewiesen, die das Feld der Künstlichen Intelligenz betreffen. Nach einer Einführung in verschiedene Teilgebiete des ML werden dann verschiedene Methoden vorgestellt, die heute benutzt werden, um ML zu ermöglichen. Diese Methoden decken einen guten Teil der aktuellen Forschung ab und zeigen sowohl die Errungenschaften dieses Gebiets als auch die Problemfelder und Herausforderungen. Am Ende steht noch ein Vergleich zu menschlichem Lernen sowie ein Ausblick. 1 1 Einleitung Warum eine Arbeit über Maschinenlernen? Was hat der Versuch, Computern das Lernen beizubringen mit Pädagogik zu tun? Mein Ziel bei der Beschäftigung mit diesem Thema war es, das Thema Lernen einmal aus einer völlig anderen Perspektive kennenzulernen, neu darüber nachzudenken wie Lernen eigentlich funktioniert. Möglicherweise entmystifiziert dieser Perspektivenwechsel auch manche Lernvorstellungen und bietet Einblick in die zugrundeliegenden Mechanismen. Wie wir sehen werden sind die Lernfähigkeiten von Computern noch längst nicht so ausgereift wie die menschlichen und es besteht kein Grund anzunehmen, dass die Art des Lernens von Mensch und Computer völlig identisch ist. Dies bedeutet dass nicht notwendigerweise alle Ergebnisse auf menschliches Lernen übertragbar sind. Dennoch kann die Disziplin Maschinenlernen einen Beitrag zum Verständnis menschlichen Lernens beitragen, zusammen mit vielen anderen Disziplinen wie der Gehirnforschung der Psychologie und der Pädagogik. Maschinenlernen (im Folgenden ML) ist ein eigenes Forschungsgebiet innerhalb der Künstlichen Intelligenz. In den 50 Jahren seiner Existenz hat dieser Bereich nicht nur eine Menge theoretische Ergebnisse vorgebracht sondern auch eine Vielzahl an praktischen Anwendungen. Zu Beginn werde ich einige davon vorstellen um einen Überblick zu geben was mit ML heute schon möglich ist. In Abschnitt 3 reiße ich einige philosophische Fragen an, die die Künstliche Intelligenz (im Folgenden KI) seit ihrer Geburt begleitet haben. In den Abschnitten 4 bis 7 stelle ich dann die eigentlichen Methoden des ML vor und gebe einen Überblick über die Konzepte, die in lernenden Maschinen Verwendung finden. In den Abschnitten 8 und 9 gibt es noch einen Vergleich zu menschlichem Lernen sowie eine Zusammenfassung und einen Ausblick. Die Hauptaufgabe innerhalb des Bereichs ML ist es, Algorithmen zu entwickeln, die Lernen ermöglichen. Nun haben Computern die Eigenschaft, dass man ihnen alles was sie machen sollen sehr exakt mitteilen muss. Der Nachteil daran ist, dass Maschinenlernen eine sehr mathematische Disziplin ist, die auch viele Konzepte aus der Statistik entliehen hat. Ich habe mich bemüht, die grundlegenden Konzepte verständlich darzustellen, ohne zu viel Mathematik vorauszusetzen. Wer sich noch genauer in diese Bereiche hineinvertiefen möchte kommt um ein gutes Verständnis der mathematischen Grundlagen jedoch nicht herum. Der Vorteil ist jedoch, dass Computer exakt sind, genau untersucht werden können und Experimente beliebig reproduzierbar sind. Sie eignen sich deshalb gut zur Untersuchung von Lernvorgängen. 2 Anwendungen Wo braucht man ML? Oder, anders ausgedrückt: Wozu soll man sich die Mühe machen, Computer zum Lernen zum Bewegen? Sicher kann man mit einem Computer viele nützliche Dinge anstellen, ohne dass der Computer dazu lernen muss. In vielen Fällen will man gar nicht dass ein Computer lernt und sein Verhalten ändert (z.B. bei mathematischen Berechnungen). Dennoch gibt es einige Bereiche in denen ML unabdingbar ist. [Mit97] nennt drei solcher Bereiche: Data Mining, Schwer programmierbare Anwendungen und Angepasste Anwendungen. 2.1 Data mining Data Mining ist sicherlich der Goldesel der ML-Forscher, das Anwendungsgebiet in dem am meisten Geld zu holen ist. Mit zunehmender Computernutzung steigt die Zahl der verfügbaren und zu bearbeitenden Daten exponentiell an. Unternehmen besitzen immer größere Datenbanken und es wird immer schwieriger, sinnvolle Informationen herauszufiltern. Beispielsweise erzeugt jeder Einkauf im Supermarkt einen Eintrag in einer Datenbank, in dem alle Artikel die gekauft wurden aufgelistet sind zusammen mit Datum und Urzeit, Filiale, evt. Kundennummer usw. Die Unternehmen würden solche Daten gerne nutzen um neue Informationen über ihre Kunden zu bekommen oder die verkauften Waren, um z.B. die Werbung zu verbessern („welche Waren werden häufig zusammen eingekauft?”). Die schiere Menge der Informationen (oft viele Millionen Einträge) macht dies mit konventionellen Methoden praktisch unmöglich. Hier kommt nun Data Mining ins Spiel. Es be- 2 zeichnet die Verwendung von Lernalgorithmen um neue Zusammenhänge zu entdecken. Beispielsweise kann man Clustering (Abschnitt 6) verwenden um verschiedene Kundenkategorien zu finden. Ein anderes Anwendungsgebiet liegt in der Medizin. Wenn man eine Datenbank von schwangeren Frauen hat zusammen mit verschiedenen Daten (Alter, Raucher/NR), den Untersuchungsergebnissen und dem Ausgang der Schwangerschaft, kann man Data Mining dazu benutzen um Risikofaktoren zu finden und in Zukunft entsprechende Maßnahmen zu treffen. Bei Data Mining wird ML also dazu genutzt, aus historischen Daten neue Informationen zu gewinnen und zukünftige Entscheidungen besser treffen zu können. Weitere Einsatzgebiete für Data Mining sind die Klassifizierung von Kreditanträgen (wann lohnt es sich für die Bank, einen Kredit zu geben), sowie das Erkennen von Kreditkartenbetrug, indem typische Benutzungsprofile aus der Vergangenheit mit dem zu überprüfenden Profil verglichen werden. Data Mining wurde auch erfolgreich zur Klassifizierung von Sternen eingesetzt, siehe Abschnitt 6 auf Seite 14. 2.2 Schwer programmierbare Anwendungen Es gibt viele Anwendungen, die sich nur schwer von Hand programmieren lassen, weil man zwar viele Beispiele hat, sich aber kaum explizite Regeln finden lassen. Beispiele für solche Anwendungen sind Schriftund Spracherkennung. Alle zur Zeit auf dem Markt erhältlichen Programme für diese Aufgaben verwenden irgendwie ML. Allgemein eignet sich ML überall da, wo es viele Sensordaten (Informationen von Kameras, Mikrofonen, Drucksensoren, ...) zu interpretieren gilt, z.B. in der Gesichtserkennung, in der Auto- und Flugzeugsteuerung. ML wurde auch eingesetzt um Computern Spiele wie Backgammon beizubringen (der beste Computer-Backgammon-Spieler wurde mit Hilfe von ML entwickelt) 2.3 Angepasste Anwendungen In vielen Gebieten ist es wünschenswert dass sich Computern den Wünschen und Gewohnheiten des Nutzers anpassen. Besonders lohnenswert scheint die automatische Informationssortierung im Internet, da die Informationsflut sonst kaum noch bewältigt werden kann. Es gibt einige Projekte, die Webseiten und News als interessant oder uninteressant klassifizieren, basierend auf dem, was der Benutzer bisher angeschaut hat oder wie er andere Informationen bewertet hat. Viele moderne Spamfilter (z.B. in Mozilla) sind inzwischen auch lernfähig und können sich so den eMailgewohnheiten des Benutzers und neuen Spammails anpassen. Anpassung wird auch benötigt, wenn sich Roboter in einer neuen Umgebung zurechtfinden sollen oder die Umgebung sich ständig ändert. 3 Philosophische Fragen Die Fähigkeit zu Lernen ist in unserer Vorstellung untrennbar mit Denken und Intelligenz verknüpft, und so stellen sich bei der Betrachtung lernender Maschinen unweigerlich eine Menge philosophischer Fragen ein, etwa ob lernende Maschinen denken können, ob es möglich ist, menschenähnliche Maschinen (d.h. Maschinen mit menschenähnlicher Intelligenz) zu entwickeln, welche Rolle das Bewusstsein und die Seele spielt, usw.2 Die Diskussion zu diesen Themen geht zurück bis zu den Anfängen der Künstlichen Intelligenz, zu Alan Turing, Vordenker und „Vater” dieser Forschungsrichtung. Sein Papier „Computing Machinery and Intelligence” [Tur50] ist gewissermaßen die Geburtsurkunde des Forschungsbereichs Künstliche Intelligenz. In diesem Papier stellt Turing die grundsätzliche Frage: „Können Maschinen denken?”. Um den philosophischen Einwänden, die dabei unweigerlich entstehen, zu entgehen ersetzt er diese Frage durch eine andere, nämlich: „Können Computer das Imitationsspiel spielen?”. Turing dachte dabei an eine Art Chat, in der ein 2 Ich kann diese Fragen hier nur anreißen, zumal die Diskussion zu diesem Thema sehr umfangreich ist und es eine Fülle an Literatur gibt, weitergehende Informationen und einen guten Überblick gibt [SCA00]. 3 Fragesteller mit einem Mensch oder einer Maschine kommuniziert. Der Fragesteller darf beliebige Fragen stellen und muss herausfinden, ob er mit einem Mensch oder einer Maschine redet. Die Form eines Chats wurde gewählt, um andere Faktoren als die Intelligenz zur Unterscheidung auszuschließen. Eine Maschine ist nach diesem Test intelligent, wenn sie auch durch beliebig viele Fragen nicht von einem Menschen unterschieden werden kann. Turing hielt seinen Test (später nach ihm Turing-Test benannt) für ein notwendiges und hinreichendes Kriterium für maschinelle Intelligenz. Später wurde ihm vorgeworfen, er setze ein rein behavioristisches Kriterium zur Beurteilung von Intelligenz ein, indem er nur das äußere Verhalten bewerte. Dies ist richtig, entspricht jedoch durchaus auch der menschlichen Vorgehensweise, da auch wir anderen Intelligenz nach äußeren Kriterien zumessen (ein Mensch ist intelligent, ein Regenwurm nicht...). Es gab viele kontroverse Diskussionen darüber, ob eine Maschine gebaut werde könnte die diesen Test bestehen würde. Die meisten Einwände rührten von der Auffassung her, es sei unmöglich eine Maschine mit Bewusstsein zu schaffen, also eine Maschine die über sich selbst nachdenken kann, Emotionen haben kann usw. Dies ist in der Tat ein sehr schwieriges Problem, auch heute ist die Frage nach dem Bewusstsein trotz intensiver Bemühungen auch der Gehirnforschung noch nicht ansatzweise gelöst, unser Wissen ist sehr lückenhaft und wir verstehen viele Vorgänge im Gehirn nicht. Dessen war sich auch Alan Turing bewusst, er war jedoch dennoch der Ansicht, eine denkende Maschine sei konstruierbar, dazu sei es nicht unbedingt notwendig, vorher das Gehirn komplett zu verstehen. Dieses von Turing angestrebte Ziel einer intelligenten Maschine spaltete die Forscher in zwei Richtungen: „Strong AI” (AI=Artificial Intelligence), welche an die Machbarkeit einer solchen Idee glaubten, und „weak AI”, denen es einfach nur um „intelligente” Anwendungen ging. Die Diskussion ist noch nicht entschieden, klar ist jedoch dass das Ziel in in weite Ferne gerückt ist. Einen wichtigen Beitrag hat French in seinem lesenswerten Papier „Subcognition and the limits of the Turing Test” [Fre90] gemacht, in dem er überzeugend dargelegt, dass Geist und Körper nicht so einfach zu trennen sind, dass im Gegensatz ein Computer, um „menschlich” zu sein, die Welt so erlebt haben muss wie ein Mensch3 . Das heisst nun nicht dass keine Intelligenz möglich ist ohne menschlichen Körper, sondern dass eine solche Intelligenz notwendigerweise anders ist als die menschliche. Wenn also auch das große Ziel der KI vorerst unerreichbar bleibt, so hat die „weak AI” doch große Fortschritte gemacht. Wenn man nämlich die Komplexität einschränkt und nur bestimmte Teilgebiete betrachtet, so können Computer auch heute schon Leistungen erzielen die intelligent sind, das heisst für die ein Mensch Intelligenz bräuchte. Die Komplexität der Wissensdomänen, mit denen ein Computer umgehen kann ist natürlich weit von der des Menschen entfernt, das tut der Nützlichkeit jedoch keine Abbruch. 4 4.1 Grundlagen Lernfähigkeiten Was können Computer lernen? Welche Fähigkeiten brauchen sie? Wenn wir lernen benutzen wir eine Vielzahl von Fähigkeiten, ohne dass uns dies bewusst ist. Die Stärke des Gehirns liegt unter anderem in dieser komplexen Vernetzung. Für das ML ist es aber notwendig, diese Fähigkeiten aufzuteilen und sie getrennt zu betrachten; einige der Fähigkeiten, die für Maschinenlernen und intelligentes Verhalten notwendig sind: • Klassifikation (Daten und Ereignisse in Kategorien einteilen) • Mustererkennung • Generalisierung (aus Beispielen allgemeine Regeln finden) • Voraussagen treffen aufgrund aktueller Information 3 Einfach weil unsere Art zu denken und die Welt zu ordnen sehr von unserer Wahrnehmung der Welt geprägt ist; jede andere Wahrnehmung der Welt führt notwendigerweise zu einer anderen Art des Denkens. 4 Abbildung 1: Modell eines lernenden Agenten, aus [RN02, Folien zum Buch, Kap. 18, S. 4] • Verhaltensänderung (z.B. Roboter soll Verhalten der Umgebung oder neuen Situation anpassen) Die bisherigen Algorithmen beschränken sich meist auf eine Aufgabe, die Verknüpfung dieser Teile kommt erst langsam. 4.2 Lernende Agenten „The term "Machine Learning" suggests that the goal of Machine Learning is to build complete "learning machines". Actually building a machine that only learns is not the goal of Machine Learning. The main applications are in data analysis or data mining and in the construction of adaptive systems that automatically improve their performance on a particular task.” aus [MLN03, http://kiew.cs.uni-dortmund.de:8001/mlnet/concepts/CaseStudy] Wie man an obigem Zitat sehen kann steht Maschinenlernen nicht alleine im luftleeren Raum sondern ist in einen Kontext eingebettet. Diesen Kontext kann man am besten verstehen wenn man sich das Konzept eines lernenden Agenten anschaut. Agenten nehmen Wahrnehmungen aus ihrer Umgebung auf und handeln und reagieren darauf. In ihrem Standardwerk ([RN02]) definieren Stuart Russell und Peter Norvig gar Künstliche Intelligenz als das Studium von Agenten. In der Abbildung 1 sehen wir ein einfaches Modell für einen solchen lernenden Agenten. Wir wollen uns im Folgenden mit dem Lernelement beschäftigen, doch ist es wichtig auch die anderen Elemente zu kennen, z.B. der „Critic” der Rückmeldungen über Status und Lernerfolg gibt und das „Performance Element”, das mit der Umgebung interagiert. Die Umgebung („Environment”) kann übrigens sehr vielfältig sein – von etwas konzeptuell simplen wie einer Datenbank bis hin zu realen Umgebungen in denen sich ein Roboter bewegt. 4.3 Lernarten und Unterscheidungsmerkmale In der ML-Forschung werden drei Grundformen des MLs unterschieden. Die Unterschiede zwischen diesen Lernformen liegen in der Art der vorhandenen Daten, ob die Daten schon vollständig, gar nicht oder indirekt kategorisiert sind. Die folgende Tabelle fasst die drei Formen zusammen, die auch in den folgenden Kapiteln beschrieben werden. 5 Lernart Supervised Learning Unsupervised Learning Reinforcement Learning welche Informationen sind vorhanden Daten inklusive Kategorisierung Nur Daten Feedback zu einzelnen Handlungen Art des Erkenntnisgewinns Generalisierung aus den Trainingsdaten, Fähigkeit, neue Daten zu kategorisieren Kategorien finden und Daten zuordnen Handlungsanweisung finden, um positives Feedback zu maximieren Neben diesen drei großen Kategorien gibt es natürlich eine Vielzahl anderer Faktoren, die verschiedene Lernaufgaben unterscheiden; dementsprechend gibt eine reichhaltige Sammlung an Algorithmen und Methoden, jeder mit ganz eigenen Fähigkeiten, Anforderungen und Grenzen. Einige der Unterscheidungsmerkmale: Inkrementelles/Batch-Lernen Kann das Lernen nach und nach erfolgen oder muss alles auf einmal erlernt werden? Batch-Lerner sind konzeptuell meist erheblich einfacher, allerdings kann kein Wissen nachträglich hinzugefügt werden und beim Lernen müssen alle Daten vorhanden sein Umgang mit Rauschen Was passiert wenn die Daten teilweise verrauscht, ungenau oder falsch sind? Zugang zu Lernergebnissen Können die gewonnenen Erkenntnisse gut extrahiert werden, z.B. als Regeln oder Prozentzahlen über verschiedene Klassen oder handelt es sich bei dem Lernelement um eine „Black Box”? Umgang mit Vorwissen Kann Vor- und Hintergrundwissen aus der zu lernenden Domäne für den Lernvorgang nutzbar gemacht werden? Art der Daten Um Informationen für den Computer verdaubar zu machen werden diese meist als AttributWerte-Paare geliefert, beispielsweise hat ein Kunde in einer Firmendatenbank die Paare Alter = 34, Geschlecht = männlich, Einkommen/Jahr = 25000, Wohnort = Hamburg, usw. Manche Algorithmen können nur mit numerischen Daten umgehen, während andere auch kategorische Informationen (rot/grün/blau) verarbeiten können. Leistungsanforderungen Wieviel Speicherplatz und Rechenzeit braucht ein Lernalgorithmus, sowohl um zu lernen, als auch um Anfragen zu behandeln (oft ein wichtiger Faktor in realen Anwendungen) Wie man hier wohl schon erahnen kann gibt es keinen optimalen Lernalgorithmus, vielmehr muss man bei jeder Lernaufgabe neu schauen, welcher Algorithmus am ehesten dazu passt und die besten Ergebnisse liefert. In den nächsten Kapiteln werde ich die bekanntesten und erprobtesten Methoden vorstellen. 5 Supervised Learning Im Falle von „Supervised Learning” liegen die Daten bereits kategorisiert vor, das heisst die gewünschte Zuordnung ist bekannt. Um zum Beispiel Handschrifterkennung zu trainieren würde man eine Tabelle erstellen mit Bildern von verschiedenen geschriebenen Buchstaben und Ziffern, zusammen mit der richtigen Kategorie. Beim Lernen geht es nicht darum, einfach nur die gelernten Daten wieder zu erkennen, dazu könnte man ja einfach eine Tabelle verwenden. Die Herausforderung bei „Supervised Learning” ist die Generalisierung, d.h. der Computer soll z.B. Zeichen erkennen, die er nie zuvor gesehen hat. Es gilt also, beim Lernen allgemeine Muster zu entdecken und diese dann anzuwenden. 6 Abbildung 2: Ein einfacher Decision Tree, erzeugt aus den Beispielen links (Beispiel aus [Aha95, S. 19f], leicht verändert) 5.1 Decision Trees Decision Trees sind ein einfaches Modell, das leicht zu verstehen ist und gleichzeitig oft in der Praxis eingesetzt wird. Decision Trees eignen sich für Kategorisierungsaufgaben, bei der Daten mit vielen Attributen vorliegen, bevorzugt kategorischen. Am besten kann man das Konzept von Decision Trees an einem Beispiel sehen (Abbildung 2): Zellen sollen in krebsartig und gesund einsortiert werden; jede Zelle hat drei Eigenschaften: Zahl der Zellkerne, Art des Zellkörpers und Zahl der Schwänze. Aus den gegebenen Beispielen sollen Regeln abgeleitet werden, um andere Zellen einordnen zu können, die in dem Beispiel nicht vorkamen. Je nachdem, nach welchen Kriterien zuerst unterschieden wird kann der Baum ganz verschieden aussehen. Das Ziel ist, einen möglichst kleinen Baum zu finden, der alle Daten korrekt klassifiziert (kleiner Baum → Bearbeitung geht schnell, wenig Speicherplatz). Ein Baum wird von oben nach unten erzeugt. Dabei wird immer die Eigenschaft gesucht die den höchsten Informationsgewinn bringt (d.h. die Eigenschaft die die Beispiele am besten in verschiedene Kategorien einteilt), im Beispiel ist das die Eigenschaft „Zahl der Kerne”. Dann werden die Beispiele entsprechend dieser Eigenschaft in Gruppen aufgeteilt, eine Verzweigung im Baum erzeugt und aus den Gruppen wird wieder ein (Unter-)Baum erstellt. Dies wird solange fortgeführt bis alle Beispiele korrekt klassifiziert sind. Der große Vorteil dieser Methode ist die Einfachheit, was sowohl beim Lernen und Klassifizieren von Daten hilfreich ist, als auch ein leichteres Verständnis des Gelernten ermöglicht. So können unter Umständen einfache Regeln abgelesen werden, wie in dem Beispiel.4 In ihrer Grundform lassen sich Decision Trees nur batch-lernen, da zum Erzeugen eines möglichst kleinen Baums alle Daten vorhanden sein müssen; es gibt jedoch auch Unternehmungen, solche Bäume dynamisch umzuordnen und so auch inkrementelles Lernen zu ermöglichen. Eine Eigenheit von Decision Trees ist, dass sie nur mit „harten” Werten umgehen können, es wird immer ja/nein-gesplittet und zwar immer nur an einer Eigenschaft. Das vereinfacht die Methode, macht solche Bäume jedoch z.B. für Wahrscheinlichkeiten weniger geeignet. Ein Problem der allermeisten Lernalgorithmen kann man bei Decision Trees besonders gut sehen, das sogenannte Overfitting. 4 Mit der Menge der Eigenschaften und Beispiele steigt natürlich auch die Größe des Baums, so dass dies in realen Anwendungen oft nicht ganz so leicht ist 7 5.1.1 Overfitting Overfitting bezeichnet ein allgemeines Problem innerhalb des ML und tritt vor allem auf wenn viele Daten vorhanden sind oder die Daten mit Rauschen (also kleinen Abweichungen) behaftet sind. Wenn man solche Daten einfach so lernen lässt dann kann es oft vorkommen dass der Lernalgorithmus, im Bestreben die Daten korrekt zu lernen, sinnlose Regelmäßigkeiten findet, z.B. dass der Wochentag eine gewürfelte Zahl beeinflusst. Das heisst der Lernalgorithmus passt sich nicht nur den tatsächlichen Daten an sondern auch dem Rauschen und den Fehlern in den Daten. Dies ist unerwünscht, zum einen weil dadurch die allgemeine Qualität der Voraussagen des Lernalgorithmus zurückgeht und das Modell unnötig komplex wird. Je nach angewandter Methode gibt es verschiedene Möglichkeiten, gegen overfitting vorzugehen. Bei Decision Trees äußert sich overfitting meist in einem zu großen und komplexen Baum. In der Regel wird erst der komplette Baum erzeugt und dann „beschnitten”, es werden von unten nach oben Äste entfernt, bis er eine angemessene Größe erreicht hat. 5.2 5.2.1 Neuronale Netze Biologisches Vorbild Neuronale Netze sind ein interessantes Modell, ursprünglich entstanden um die Vorgänge im Gehirn bei der Informationsverarbeitung sowie die Struktur zu modellieren und zu verstehen. Das Bemerkenswerte am Gehirn ist, dass es keine zentrale Steuereinheit gibt, sondern dass es aus vielen kleinen Einheiten besteht, den Neuronen (einzelne Nervenzellen), die autonom und parallel arbeiten und mit ihren Nachbarn über Synapsen verbunden sind und Signale austauschen. Jedes Neuron empfängt über die Synapsen Impulse von anderen Neuronen und „feuert”, also schickt auch ein Signal, wenn die Stärke des ursprünglichen Signals einen gewissen Wert übersteigt. Lernen passiert indem die Stärken der Verbindungen zwischen den Neuronen geändert werden oder neue Verbindungen entstehen. Aus dieser sehr einfachen Grundaufbau5 entsteht durch die riesige Vernetzung ein extrem komplexes System, das zu erstaunlichen Leistungen fähig ist. 5.2.2 Aufbau Abbildung 3: Ein typisches Feed-Forward-Netzwerk mit zwei verdeckten Schichten Künstliche Neuronale Netze bilden diese Struktur vereinfacht nach. Abbildung 3 zeigt ein typisches künstliches Neuronales Netzwerk (im Folgenden NN). Ganz links sieht man die sogenannte Eingabeschicht, dort 5 Der Gesamtaufbau des Gehirns ist natürlich noch um einiges komplexer und auch noch nicht ausreichend erforscht und verstanden, doch schon mit diesem einfachen Modell kann man sehr viel erreichen, wie wir noch sehen werden. 8 liegen die Signale an. Von dort werden die Signale zu der ersten Schicht von Neuronen weitergeleitet. Jedes Neuron ist dabei wie ein simpler Prozessor, der einige einfache Rechnungen durchführt6 . Zuerst werden die Signale von den einzelnen Eingängen zusammengezählt, wobei die Eingänge gewichtet sind, das heisst sie fließen unterschiedlich stark in die Summe ein. Falls ein bestimmter Schwellwert überschritten wird, „feuert” das Neuron, das heisst es schickt ebenfalls ein Signal an seinen Ausgang. Die Signale fließen also von links nach rechts durch das Netzwerk, bis sie an der Ausgabeschicht ankommen und dort ein Signal (=Ergebnis) erzeugen. Die Art der Signalverarbeitung ist der des Gehirns ziemlich ähnlich, der große Unterschied zum Gehirn besteht in der Größe und Komplexität: Während ein menschliches Gehirn rund 100 Milliarden Neuronen enthält und Neuronen bis zu 10.000 Verbindung zu anderen Neuronen besitzen, haben künstliche Netze meist 100 bis 1000 Neuronen und höchstens 100.000 bis 200.000 Verbindungen. Das in der Abbildung 3 gezeigte NN ist ein Beispiel für ein mehrschichtiges Feed-Forward-Netzwerk. Dies ist die häufigste Struktur, die in der Praxis verwendet wird. Die Neuronen sind in Schichten angeordnet und die einzelnen Schichten sind vollständig mit der Nachbarschicht verbunden. Meist werden ein oder zwei verdeckte Schichten verwendet. Die Signale wandern von links nach rechts. Weil keine Schleifen vorhanden sind arbeitet ein solches Netz ziemlich schnell. Nahe verwandt sind sogenannte Kaskaden-Netzwerke, bei denen die Neuronen geordnet sind und jedes Neuron mit jeder Eingabe und jedem seiner Vorgänger verbunden ist. Neben diesen Strukturen gibt es noch viele andere, wahrscheinlich so viele wie Forscher in diesem Gebiet ([Sar02] nennt über 40 „well known kinds of NNs”). Ein interessanter Ansatz sind die sogenannten Recurrent Networks, die Schleifen haben, das heisst die Signale können im Kreis wandern. Dies bietet einige interessante Eigenschaften, denn solche Netzwerke können unter Umständen Informationen speichern, besitzen also eine Art Kurzzeitgedächtnis. Dadurch dass die Signale im Kreis fliessen kann es lange dauern bis solche Netze einen stabilen Zustand erreichen. Sie sind auch sehr komplex zu verstehen, zu analysieren und zu lernen und werden daher noch nicht praktisch eingesetzt. Im folgenden werde ich nur auf mehrschichtige Feed-Forward-Netze eingehen, die in Anwendungen (d.h. ausserhalb der Forschung) fast ausschliesslich verwendet werden. 5.2.3 Lernen von neuronalen Netzen Das „Wissen” eines NN ist in den Gewichten der Verbindungen gespeichert, also in der Information, wieviel jedes Signal zur Ausgabe eines Neurons beiträgt. Lernen passiert daher, indem die Gewichte angepasst werden. Außerdem kann noch der Schwellwert in den einzelnen Neuronen angepasst werden. Der einfachste Algorithmus zum Lernen von NN ist der sogenannte Backprop-Algorithmus (für ’backpropagation of error’). Folgende Schritte werden dabei ausgeführt: 1. Initialisiere die Gewichte der Verbindungen mit zufälligen Werten 2. Wiederhole folgende Schritte (a) Bearbeite alle Trainingsdaten und bestimme den Fehler (Unterschied zwischen erwarteter und tatsächlicher Ausgabe) (b) Passe die Gewichte im Netz etwas an, um die tatsächliche Ausgabe der erwarteten anzugleichen; der Name der Methode kommt daher, dass der Fehler und die Korrektur quasi von hinten durch das Netz durchgereicht wird, um ein besseres Ergebnis zu erzielen; an jedem Neuron wird der Fehler auf die Vorgänger aufgeteilt entsprechend ihrem Anteil am Fehler und die Gewichte entsprechend korrigiert. 3. Beende das Training wenn der Fehler klein genug geworden ist 6 Da Neuronen mit ihren Eingaben rechnen, können sie nur numerische Daten verarbeiten, meist Zahlen zwischen Null und Eins. Kategorische Daten (z.B. rot/grün/blau) müssen erst kodiert werden. Dies entspricht dem biologischen Vorbild, da die Neuronen im Gehirn auch „nur” elektrische Impulse verarbeiten. 9 Das Problem an diesem Algorithmus ist die lange Trainingsdauer, weil es sehr lange dauern kann bis eine akzeptable Annäherung an das gewünschte Ergebnis erreicht ist. Es gibt einige Algorithmen die entwickelt wurden, um das Training zu beschleunigen, aber grundsätzlich kann man sagen dass das Training eines NN eine zeitraubende Angelegenheit ist. Zudem muss man grundsätzlich alle Trainingsdaten verfügbar haben - was Menschen so einfach schaffen, nämlich sich neue Dinge zu merken ohne alte zu vergessen, ist für Neuronale Netze ein sehr schwieriges Problem. (Wie passt man die Gewichte an die neuen Informationen an, ohne die alten Informationen in den Gewichten zu verlieren?) Doch nicht nur das Lernen ist eine Herausforderung: Vor dem Lernen steht die Auswahl einer passenden Struktur für das NN: Wie viele verdeckte Neuronen sollen verwendet werden und wie sollen die Verbindungen aussehen? Je mehr verdeckte Neuronen man verwendet, desto genauer kann das Netzwerk die Daten wiedergeben, jedoch steigt die Lerndauer entsprechend an und es besteht die Gefahr des Overfitting. Meist ist hier etwas Experimentieren mit verschiedenen Strukturen angesagt. Es gibt jedoch inzwischen auch Algorithmen, die die Struktur eines NN entsprechend den Daten lernen können (sogenannte Constructive Learning-Algorithmen, siehe [Sar02, Part 2]). Dabei wird zuerst ein sehr einfaches Netzwerk trainiert. Immer wenn die Fehlerrate nicht mehr abnimmt werden einige Neuronen an passenden Stellen eingefügt, bis die Fehlerrate für die Anwendung akzeptabel ist. 5.2.4 Zusammenfassung NN sind das verbreitetste Modell innerhalb der ML-Gemeinschaft, sowohl in der Forschung als auch im Praxiseinsatz. Einige Gründe dafür: • NN eignen sich für viele Probleme, die viele Trainingsdaten besitzen, für die sich aber nur schwer explizite Regeln finden lassen. Beispiele dafür sind Schrift- und Spracherkennung. • NN sind ein sehr flexibles Werkzeug, können gut angepasst werden (wie jedes Werkzeug erfordern sie aber auch, den richtigen Umgang zu lernen) • NN können gut mit Rauschen umgehen (robust), sie haben eine gewisse Fehlertoleranz und generalisieren gut Einige Herausforderungen liegen im Lernverhalten (teilweise sehr langsam, inkrementelles Lernen sehr schwierig) und im Black-Box-Verhalten7 von NN. Es gibt jedoch viel Forschung und Entwicklung auf diesen Gebieten, siehe z.B. Genetic Programming und Boosting im Abschnitt 5.4. 5.3 Bayesische Netzwerke 5.3.1 Was sind Bayesische Netze? Bayesische Netzwerke (BN) bilden ein Modell, menschliches Schlussfolgern und Umgang mit neuen Informationen nachzubilden. Sie können überall dort eingesetzt werden, wo kausale Zusammenhänge bestehen, aber man nicht alles komplett versteht und deshalb Wahrscheinlichkeiten einsetzen muss. Am besten kann man das an einem Beispiel einsehen, entnommen aus [Cha91, S. 51f]. Angenommen man kommt abends heim und möchte wissen ob die Familie daheim ist, vor man die Türe probiert. Das Aussenlicht wird oft an sein, wenn niemand da ist, manchmal aber auch weil ein Gast erwartet wird. Es gibt auch einen Hund. Wenn niemand da ist, wird er im Garten sein, ebenso wenn er Magenprobleme hat. Vermutlich wird man den Hund bellen hören wenn er draussen ist, manchmal verwechselt man das Bellen auch mit dem eines anderen Hundes. Abbildung 4 zeigt eine Darstellung des Beispiels in Graphenform. Durch Pfeile werden mögliche Kausalitäten dargestellt, zum Beispiel hängt die Wahrscheinlichkeit dass der Hund draussen ist davon ab, ob die 7 aus einem NN kann man nur schwer Regeln ableiten, da das gelernte Wissen in den einzelnen Gewichten verteilt gespeichert ist 10 W(fw)=15% Familie weg (fw) Licht an (la) Magenprobleme (mp) Hund draussen (hd) W(mp)=1% W(hd|fw,mp) =99% W(hd|fw,nicht mp) =90% W(hd|nicht fw,mp) =97% W(hd|nicht fw,nicht mp)=30% W(la|fw) =60% W(la|nicht fw= 5% Gebell (gb) W(gb|hd) =70% W(gb|nicht hd)= 1% Abbildung 4: Ein einfaches Beispiel für ein Bayesisches Netzwerk (Pfeile bezeichnen Kausalitätsbeziehungen, die Zahlen sind die Wahrscheinlichkeiten der einzelnen Knoten) Familie weg ist und der Hund Magenprobleme hat. Wichtig ist dass die kausalen Verbindungen nicht absolut sind sondern nur mögliche Verbindungen anzeigen. So kann der Hund im Haus sein obwohl die Familie weg ist. Dies macht die Beantwortung von Fragen schwierig wie „Ist die Familie daheim wenn das Licht brennt, der Hund aber nicht draussen ist?”. Bayesische Netzwerke bieten nun eine genaue mathematische Antwort auf eben solche Fragen. Die Idee zu solchen Netzen stammt von Thomas Bayes, ein englischer Pastor und Mathematiker im 18. Jahrhundert, der mathematisch beschreiben wollte, wie sich Hypothesen ändern, wenn neue Informationen und Beweise vorliegen. Dies macht die Theorie auch so interessant für das Verstehen des menschlichen Denkens, da ein großer Teil des Denkens darin besteht, Informationen mit bestehendem Wissen abzugleichen und unsere Sicht der Welt den neuen Informationen anzupassen. Vermutlich läuft das im Gehirn sehr ähnlich ab wie in BN, wenn auch nicht so exakt und dafür viel komplexer. Für die von Bayes entwickelte Formel braucht man die Wahrscheinlichkeiten der einzelnen Knoten in Abhängigkeit von ihren verursachenden Knoten. Eine mögliche Verteilung sieht man in der Abbildung. Dabei bedeutet z.B. W(fw)=15%, dass die Familie mit 15% Wahrscheinlichkeit nicht zu Hause ist, W(hd|fw,nicht mp)=90% bedeutet, dass die Wahrscheinlichkeit, dass der Hund draussen ist 90% ist, falls die Familie weg ist und der Hund keine Magenprobleme hat. Falls er auch noch Magenprobleme hat steigt die Wahrscheinlichkeit auf W(fw,mp)=99%. Aus diesen Angaben kann dann mit Hilfe der Formel von Bayes andere Wahrscheinlichkeiten berechnet werden (z.B. „wie groß ist die Wahrscheinlichkeit dass die Familie daheim ist, wenn ich einen Hund bellen höre?”) Das Schöne an BN ist dass man nur verhältnismäßig wenige Angaben braucht, um ein komplettes Netzwerk zu bestimmen. Dies ist möglich weil man sich mit solchen Netzen die Struktur der Probleme (welche Eigenschaften hängen voneinander ab, welche sind unabhängig) zunutze macht. Bei einem kleinen Netzwerk mit 10 Knoten braucht man mit Bayes ungefähr 20 Wahrscheinlichkeiten (je nach Struktur), mit gewöhnlicher Wahrscheinlichkeitsrechnung sage und schreibe 1023! BN sind daher gut geeignet, komplexe Zusammenhänge darzustellen. Zum Beispiel gibt es ein Programm namens PATHFINDER , das entwickelt wurde um Krankheiten an den Lymphknoten zu diagnostizieren und Behandlungsmöglichkeiten vorzuschlagen oder weitere Untersuchungen, falls die Diagnose noch nicht eindeutig ist. Ihm zugrunde liegt ein Netz, in dem über 130 Symptome mit rund 60 Krankheiten verknüpft sind. Ein Mediziner kann die bisherigen Untersuchungsergebnisse eingeben und erhält eine vorläufige Wahrscheinlichkeit über die verursachende Krankheit. Inzwischen ist PATHFINDER so ausgereift dass es Expertenniveau erlangt hat. 11 5.3.2 Lernen von Bayesischen Netzwerken Bisher wurden nur BN an sich vorgestellt. Diese kann man auch ohne Lernen verwenden, wie das oben vorgestellte Programm PATHFINDER, bei dem die Struktur und die Wahrscheinlichkeiten von Experten erstellt wurden. Dies ist manchmal sinnvoll, oft ist es aber so, dass man zwar viele Daten hat, aber keine Experten, die ein passendes Netz erstellen können. Es liegt nahe zu versuchen, BN zu lernen. Dabei gilt es zu unterscheiden, ob die Struktur des Netzes bereits bekannt ist oder erst eine passende Struktur gesucht werden muss. Ausserdem gilt es noch zu unterscheiden ob alle Variablen direkt beobachtbar sind oder es versteckte Variablen gibt. Der einfachste Fall liegt dann vor wenn die Struktur bereits bekannt ist und keine nicht beobachtbaren Variablen vorhanden sind. Dann können die einzelnen Wahrscheinlichkeitswerte mehr oder weniger direkt aus den Trainingsdaten abgelesen werden. 5.3.3 versteckte Variablen Schwieriger wird es im Falle von versteckten Variablen. Diese können zum Beispiel in der medizinischen Diagnose von Herzkrankheiten auftreten, wenn man zwar einige Vorfaktoren kennt (Patient Raucht, treibt Sport) und einige Symptome wie Bluthochdruck beobachten kann, nicht jedoch die tatsächliche Krankheit. Solche versteckten Variablen müssen dann aus den anderen abgeleitet werden, das geht nur mit Näherungswerten. Zunächst scheint es da natürlich einfacher, die versteckte Variable einfach wegzulassen, wenn man sie sowieso nicht beobachten kann. Es gibt jedoch zwei Gründe sie zu behalten: Zum einen ist man evt. an ihrem Wert interessiert, wie im Falle einer Diagnose. Zum anderen aber kann eine solche Variable ein Netz erheblich vereinfachen. Im Beispiel der Diagnose hängen alle Symptome irgendwie von der Krankheit ab, die wiederum von den Vorfaktoren abhängt. Wenn man nun die Krankheit entfernt entsteht ein erheblich komplexeres Netz, da nun plötzlich alle Vorfaktoren mit allen Symptomen zusammenhängen. Damit verliert man den entscheidenden Vorteil von BN, nämlich dass durch Unabhängigkeit von Variablen nicht so viele Wahrscheinlichkeitswerte gebraucht werden; außerdem steigt die Rechenzeit für ein solches Netz extrem an. 5.3.4 Struktur lernen Die Struktur eines Netzes zu lernen ist die komplexeste und zugleich spannendste Aufgabe, ist es doch dies, was auch beim Lernen im Kopf passiert, wenn neue Zusammenhänge verknüpft werden. Der Computer steht beim Strukturlernen vor der Aufgabe zu erkennen, welche Variablen voneinander abhängen und welche unabhängig sind. Die einfachste Möglichkeit ist natürlich, einfach nach einer Struktur zu suchen. Dabei kann man zum Beispiel mit einem leeren Netzwerk (ohne Verbindungen) anfangen und nach und nach Verbindungen hinzufügen. Es darf jedoch auch nicht zu viele Verbindungen geben; diese könnten die Daten zwar vollständig beschreiben, sind aber so komplex dass sie sich nicht mehr berechnen lassen. Aufhören kann man dann wenn die Struktur des Netzwerks (d.h. welche Daten hängen wovon ab) mit den vorhandenen Daten übereinstimmen. Das hört sich ganz simpel an, das Problem ist die riesige Menge an möglichen Netzwerken: mit nur 10 Variablen gibt es schon mehr als 7 Milliarden Netzwerke! Man muss sich also auf Näherungen stützen, z.B. kann man mit mehreren zufälligen Netzwerken starten, und diese immer wieder verändern, bis man ein zufriedenstellendes Netz hat. Komplexer wird das ganze wenn noch versteckte Variablen dazukommen. Zum einen kann es sein dass die Existenz einer solchen Variable bekannt ist (wie im Beispiel oben); der Lernalgorithmus muss sie dann an eine passende Stelle einfügen. Zum anderen kann es sein dass gar nicht bekannt ist ob und wie viele solcher Variablen vorhanden sind. Interessant sind sie weil sie unter Umständen die Struktur erheblich vereinfachen können. Lernalgorithmen können an passenden Stellen solche Variablen einfügen, sie natürlich aber nicht benennen. 12 5.3.5 Zusammenfassung BN sind sehr attraktiv weil sich viele komplexe Probleme gut darstellen und lösen lassen. Im Gegensatz zu NN kann die Struktur des Problems direkt übertragen werden und das Ergebnis lässt sich leicht ablesen. Außerdem lässt sich Vorwissen gut integrieren, z.B. kann man eine Struktursuche mit bestimmten Vorgaben machen (nicht mehr als zwei Hauptursachen, eine versteckte Variable, ...) Das größte Problem ist die Berechenbarkeit. Der Aufwand zum Berechnen von BN ist exponentiell, d.h. für jede Variable mehr verdoppelt sich der Rechenaufwand. Eine exakte Lösung ist so oft nicht möglich, es gibt jedoch ganz gute Annäherungen. BN haben auch viele erfolgreiche Anwendungen. Besonders beliebt sind einfache bayesische Netze, sogenannte Naive Bayes Nets, als eMailfilter. Als Reaktion auf die Spamflut im Internet werden solche Algorithmen in immer mehr Programme eingebaut und funktionieren sehr erfolgreich.8 5.4 Andere Modelle Wie oben schon angedeutet gibt es natürlich noch eine Vielzahl anderer Modelle und Variationen. Einige möchte ich hier noch kurz vorstellen: k-Nearest Neighbor man sucht aus den bereits klassifizierten Elementen die k nächsten (ähnlichsten) heraus. Die Klassifizierung, die dort am häufigsten vorkommt wird die Klassifizierung des neuen Elements. Sehr einfaches Modell, erfordert jedoch je nach Aufgabe riesige Speichermengen, weil alle gelernten Daten vorhanden sein müssen und ist auch nicht besonders schnell, weil alle Elemente durchsucht werden müssen. Genetic Programming ist ein eigenes Forschungsgebiet, das angelehnt ist an das Modell der biologischen Mikroevolution. Die Methode kann zum Beispiel zusammen mit neuronalen Netzen verwendet werden. Statt ein NN mühsam zu lernen nimmt man zum Beispiel 100 verschiedene zufällige Netzwerke, testet sie anhand der Daten, wählt die 20 besten aus, macht von jedem 5 Kopien mit kleinen Mutationen (zufälligen Veränderungen in den Gewichten oder der Struktur) und testet sie wieder usw. Dies wird solange durchgeführt bis man ein zufriedenstellendes Modell gefunden hat.9 Ensemble of Classifiers (auch als Boosting bekannt) eine Methode um Vorhersagen zum Beispiel von Neuronalen Netzen zu erhöhen. Statt eines NN werden viele NN verwendet, die mit unterschiedlichen Daten trainiert wurden oder eine unterschiedliche Struktur aufweisen. Nachher befragt man alle Netze und lässt sie über das Ergebnis abstimmen. Gute Methode wenn das Lernergebnis nicht ganz ausreichend ist; effizienter und leichter lernbar als ein einzelnes komplexeres NN. Für weitere Infos siehe z.B. [Die97]. 6 Unsupervised Learning Die Aufgabe von Unsupervised Learning kann man am besten an einem Beispiel sehen (aus [Nie96, S. 132, leicht bearbeitet]): 8 Das Prinzip ist recht einfach: Alle Worte einer neuen Mail werden daraufhin untersucht, mit welcher Wahrscheinlichkeit sie in einer normalen Mail oder in einer Spam-Mail vorkommen. Je nachdem wird die Mail behalten oder weggeworfen. Da das System lernfähig ist kann es sich individuell an den Benutzer und an neue Spammails anpassen. 9 Ein imposantes Beispiel (eine Figur lernt laufen) findet man im Internet unter: http://www.naturalmotion.com/pages/ technology_hiw.htm 13 Man kann sich die Punkte im Bild als Objekte mit verschiedenen Eigenschaften vorstellen. Wie man sieht gibt es im Beispiel a zwei Gruppierungen (oder Cluster), im Beispiel b nur einen und im Beispiel c ist die Einteilung schwierig. Im Gegensatz zu Supervised Learning sind die Gruppen jedoch noch nicht vorgegeben und bezeichnet, diese gilt es erst zu finden und dann die Daten entsprechend zu kategorisieren. Bei Unsupervised Learning handelt es sich also um eine Suche nach einer natürlichen Struktur innerhalb einer Datenmenge. Während die Struktur (bzw. das Fehlen derselben) im Beispiel noch leicht sichtbar ist, besteht die Schwierigkeit in realen Anwendungen (z.B. der Kategorisierung von Sternen, s.u.) oft darin, dass jedes Element hunderte von Eigenschaften hat und die Struktur nicht so klar ist wie in a). An dieser Stelle kommt dann das ML ins Spiel. Grundsätzlich gilt bei der Clusterbildung, dass Punkte innerhalb eines Clusters anderen Punkten des gleichen Clusters möglichst ähnlich und Punkte ausserhalb eines Clusters möglichst unähnlich sein sollten. Es gibt viele Algorithmen, um diese Gruppierung durchzuführen, ich werde hier den gebräuchlichsten beschreiben: „Ähnlichkeit” von Punkten wird dabei über eine Abstandsfunktion definiert. Man kann sich dabei vorstellen, dass jeder Datensatz (z.B. ein Kunde, ein Stern) ein Punkt in einem mehrdimensionalen Raum darstellt, wobei die Koordinaten durch die einzelnen Werte festgelegt sind. Manche Daten können direkt als Koordinaten verwendet werden (z.B. Alter), andere müssen erst in Zahlen umgewandelt werden (z.B. Beruf, jedem Beruf wird eine Zahl zugeordnet, ähnliche Berufe haben nahe beieinanderliegende Zahlen). Ziel ist dann, den Abstand innerhalb des Clusters zu minimieren und den Abstand zu Punkten ausserhalb des Clusters zu maximieren. Die exakte Vorgehensweise sieht folgendermaßen aus: 1. Wähle einige zufällige Punkte als Clustermittelpunkte 2. Tue für jeden Datenpunkt folgendes: (a) Bestimme zu welchem Cluster er gehört (Methode: zu welchem Mittelpunkt hat er den geringsten Abstand) (b) Bewege den Mittelpunkt des zugehörigen Clusters ein Stück auf den Punkt zu10 3. Wenn zwei Cluster-Mittelpunkte zu nahe11 beieinander liegen, ersetze sie durch einen Punkt (vermutlich ist es nur ein Cluster) 4. Wenn der Abstand der Punkte innerhalb eines Clusters zu groß wird, ersetze den Mittelpunkt durch zwei Punkte (vermutlich handelt es sich um zwei Cluster) 5. Wiederhole Schritte 2 bis 4 bis sich Cluster-Mittelpunkte nicht mehr wesentlich bewegen Unsupervised Learning hat einige erfolgreiche Anwendungen: So wurde das Programm Autoclass II 12 erfolgreich verwendet, um Sterne anhand ihrer verschiedenen Infrarotspektren zu klassifizieren; dabei entdeckte das 10 Um zu vermeiden, dass der Mittelpunkt nie zur Ruhe kommt, gibt man ihm oft ein „Gewicht” mit, das mit der Zeit anwächst, so dass er sich in jeder Runde weniger bewegt und schließlich zur Ruhe kommt. 11 „zu nahe” muss natürlich, genauso wie die anderen Angaben hier, genau definiert werden. Das hängt stark von den Daten ab, so dass hier sicher einige Experimente notwendig sind. 12 nähere Infos zu dem Programm und den Ergebnissen gibt es im Internet unter http://ic.arc.nasa.gov/projects/ bayes-group/autoclass/ 14 Programm eine neue Klassifikation von Sternen, die später auch von Astronomen anerkannt wurde. Autoclass II verwendet einen etwas anderen Ansatz zur Strukturfindung, basierend auf bayesischen Netzwerken. Dabei wird versucht Strukturen zu finden, so dass die vorausgesagten Wahrscheinlichkeiten mit den beobachteten Daten übereinstimmen. Da dieses Modell mit Wahrscheinlichkeiten arbeitet sind bessere Differenzierungen möglich, Cluster können sich teilweise überlappen und ein Objekt kann mit bestimmten Wahrscheinlichkeiten zu verschiedenen Clustern gehören. Allerdings ist die Mathematik dahinter nicht unbedingt trivial. Andere Anwendungen sind Data Mining und das Kategorisieren von Dokumenten im World Wide Web. Die Herausforderung liegt hier in den riesigen Datenmengen die es zu bearbeiten gilt. 7 Reinforcement Learning In Abschnitt 5 haben wir viele mächtige Methoden zum Lernen von Informationen kennengelernt, vorausgesetzt man weiss die richtigen Antworten. Das ist in vielen realen Anwendungen aber ein Problem. Oft kennt man nämlich nicht jede einzelne Antwort, sondern nur ein Ziel oder bestimmte Vorgaben. Beispiele sind Spiele wie Backgammon (Ziel: Spiel gewinnen), Roboter in neuer Umgebung (Umgebung erkunden, nirgends anstossen, heil zur Basisstation zurückkommen) oder ein Flugzeug zu fliegen (Flugzeug muss sicher in der Luft bleiben und gut am Flughafen ankommen). Solche Probleme lassen sich mit klassischem Supervised Learning nicht lernen weil die exakten Antworten fehlen. Mit solchen Problemen, die im Alltag eine große Rolle spielen beschäftigt sich die Reinforcement Learning-Theorie. Reinforcement Learning hat viele Ideen und Konzepte aus dem Lernen von Kindern und der Erziehung übernommen. Wenn ein Kind auf die Welt kommt ist ihm die Welt noch sehr unbekannt. Es lernt, indem es mit seiner Umgebung interagiert. Es hat einige Ziele, die es verwirklichen will (Essen bekommen, Welt um sich herum entdecken). Während es diese Ziele zu verwirklichen sucht bekommt es immer Rückmeldungen aus seiner Umgebung und lernt so, welche Auswirkungen seine Handlungen haben. Man kann die Rückmeldungen grob in „Belohnungen”, also positive Rückmeldungen und „Strafen”, also negative Rückmeldungen (z.B. Hunger, Schmerz) einordnen. Lernen besteht bei einem Kind darin, herauszufinden, wie es die Belohnungen verstärken kann und gleichzeitig die Strafen vermindern.13 Auch später lernen wir indem wir mit unserer Umgebung interagieren, die Reaktion sehen und unser Verhalten entsprechend anpassen um die Situation in unserem Sinne zu beeinflussen (beispielsweise wenn wir Autofahren lernen). Diese Fähigkeiten, die Menschen so selbstverständlich benutzen, für Computer verfügbar zu machen, ist das Ziel von Reinforcement Learning, einer noch relativ jungen Disziplin. Um die Idee von intelligenten Agenten (siehe Abschnitt 4.2) zu verwirklichen wird man solche Algorithmen benötigen. Ein Reinforcement Learning System hat vier wichtige Komponenten (nach [SB98]): policy Definiert was in einer bestimmten Situation zu tun ist. Dabei handelt es sich um eine Verknüpfung von verschiedenen Zuständen der Umgebung mit bestimmten Handlungen. Entspricht ungefähr einem biologischen Reiz-Reaktions-Schema und ist für alle Handlungen zuständig. In einfachen Fällen kann es sich dabei um eine bloße Tabelle handeln, in vielen Situationen gibt es jedoch so viele Situationen dass die Tabelle der Zustände viel zu groß würde, so dass man auf andere Methoden wie Neuronale Netze ausweicht. reward function Definiert das Ziel eines Lernsystems. Jeder Zustand bekommt eine Zahl zugewiesen, die die Gewünschtheit der momentanen Situation beschreibt. Entspricht Belohnung und Strafe bzw. Freude und Schmerz. Ziel des Systems ist es, auf lange Sicht den reward, also die Belohnung zu maximieren. Dies geschieht indem die policy verändert wird, so kann zum Beispiel nach einem niedrigen reward die policy so geändert werden, dass dieser Zustand nicht wieder eintritt. 13 Das ist natürlich ein vereinfachtes Modell, taugt aber für diesen Zweck sehr gut. 15 value function Definiert was langfristig angestrebt wird. Um effizient zu lernen reicht es nicht aus, den momentanen reward zu maximieren, es kann auch sein, dass ein Zustand mit einem niedrigen unmittelbaren reward langfristig einen hohen reward = value hat (Beispiel: ein Roboter muss einen kleinen Umweg um ein Hindernis fahren, hinter dem sich eine Abkürzung zum angestrebten Ziel befindet). Die value function gibt also an, wieviel ein Agent von einem bestimmten Punkt aus maximal als reward erreichen kann und damit wie attraktiv ein Zustand langfristig ist. Im Vergleich zum Menschen könnte man reward als unmittelbare Belohnung bezeichnen, während es sich bei value um langfristigere Ziele handelt, was wünschenswert ist und was nicht. model In einigen Reinforcement Learning-Systemen gehört noch ein model, ein Modell der Umgebung dazu, das sich der Agent Schritt für Schritt aufbaut. Ein solches Modell dient dazu, Reaktionen auf Handlungen vorauszusagen und Planen von Handlungen zu ermöglichen. Beim Versuch, mit Hilfe dieser Methode eine optimale Problemlösung zu finden, stösst man schnell auf ein Problem, das in der Literatur als „exploration versus exploitation” genannt wird. Ein System wird grundsätzlich versuchen, den besten bekannten Weg laut bisherigem Wissen zu benutzen, was ja grundsätzlich auch sinnvoll ist (exploitation), dabei besteht jedoch die Gefahr, dass es manche Wege überhaupt nicht bemerkt, weil es sich zu früh auf einen Weg festgelegt hat. In der Lernphase muss ein solches System daher manchmal bewusst scheinbar schlechtere Wege gehen, um alle Möglichkeiten zu erkunden (exploration). Das Zusammenspiel der verschiedenen Elemente kann man am besten an einem Beispiel eines intelligenten Agenten sehen: Ein Roboter in einer Firma soll Müll aufsaugen. Er kennt die Umgebung zunächst nicht und startet an seiner Aufladestation. Seine Informationen über seine Umwelt bezieht er aus einer einfachen Kamera, die die Umgebung erkennt, einem Müllsensor und einer Ladeanzeige seiner Batterie. Ziel ist es, möglichst viel Müll aufzusaugen und rechtzeitig, d.h. vor die Batterie alle ist, zur Ladestation zurückzukehren. Positive rewards gibt es, wenn er Müll aufsammelt, negative wenn die Batterie leer ist. Die rewards stehen also gleich zu Beginn fest, während die value-function, also das Maß für den langfristigen Erfolg, erst gelernt werden muss. Zu Beginn muss der Roboter erstmal rumfahren, um seine Umgebung kennenzulernen (exploration). Auch später kann es manchmal sinnvoll sein, einen neuen Weg zu wählen. Mit der Zeit kann ein solcher Roboter eine effiziente value function lernen, also entsprechend den rewards in diesem Beispiel möglichst viel Müll einzusammeln und rechtzeitig zur Ladestation zurückzukehren. Lernen geschieht bei Reinforcement Learning durch trial and error, Lernen aus Fehlern. Wenn viel Müll rumliegt, fährt der Roboter zu Beginn möglicherweise einfach gradeaus, weil er ja immer einen positiven reward bekommt, bis die Batterie ausgeht und er einen starken negativen reward bekommt. Beim nächsten Mal wird er nicht so weit fahren, kurz vorher umdrehen, aber auch nicht mehr rechtzeitig zur Ladestation kommen. Beim nächsten Mal wird er dann noch früher umdrehen usw. bis er irgendwann rechtzeitig bei der Ladestation ist und einen positiven reward bekommt. Dieses Lernen funktioniert – aber es ist langsam. Dies ist ein großes Problem, das die Anwendung von Reinforcement Learning noch hindert. Dennoch handelt es sich hier um einen sehr lohnenswerten Ansatz, der sicher noch viel Verwendung finden wird. 8 Vergleich zu menschlichem Lernen Je länger man sich mit der ML-Forschung beschäftigt desto deutlicher wird, welch unglaublich komplexes System das menschliche Denken und Lernen darstellt. Selbst heute, nach über 50 Jahren intensiver Forschung lassen sich viele Aspekte in Maschinen nur sehr rudimentär abbilden. Dennoch erlauben die verschiedenen Methoden und Herangehensweisen der ML-Forschung Einblicke ins menschliche Denken, verschiedene Aspekte werden beleuchtet: • NN als Versuch, Arbeitsweise und Lernen von Neuronen nachzubilden (biologische Struktur) • Bayesische Netzwerke als Modelle für die Entscheidungsfindung, der Umgang mit neuen Hypothesen 16 • Reinforcement Learning als eine Art Erziehung; wie kann gelernt werden wenn nur Belohnungen und Strafen gegeben sind? • Genetic Algorithms als Lernen durch Versuch und Irrtum sowie durch Auslese • Unsupervised Learning als Beispiel für Mustererkennung und Kategorien finden (muss der Mensch auch erst finden) Viele einzelne Elemente sind also schon erforscht, sowohl im Kleinen der Aufbau und die Funktionsweise der Neuronen, als auch im Großen, die Psychologie und die Arbeit und Zuständigkeit der einzelnen Gehirnregionen. Unklar ist jedoch die Zusammenarbeit,wie aus so einfachen Zellen etwas so komplexes wie das menschliche Gehirn entstehen kann. Das kann man eigentlich nur staunend betrachten. Ein aktuelles Forschungsthema im Zusammenhang mit dem Menschen ist das lebenslange Lernen. Bisher wurden lernende Maschinen nur für sehr eingeschränkte Bereiche und Zeiträume konstruiert. Menschen dagegen lernen ihr ganzes Leben und bauen immer weiter auf vorhandenem Wissen auf, verfeinern und verändern dieses. Ein lohnendes Ziel wäre Maschinen zu entwickeln, die ebenso über einen längeren Zeitraum hinweg lernen und vorhandenes Wissen einsetzen und ausbauen können. 9 Zusammenfassung In den etwas über 50 Jahren ihres Bestehens hat die ML-Forschung eine Menge erreicht. Die grundsätzlichen Voraussetzungen sind geschaffen, viele Algorithmen wurden entwickelt und in der Praxis getestet. Inzwischen hat das Feld seine rein akademische Natur verloren und kann eine beachtliche Zahl erfolgreicher kommerzieller Anwendungen vorweisen. Zu den Erfolgen beigetragen hat auch der explosionsartige Anstieg der Rechenleistung, die die Entwicklung von Methoden wie Gesichtserkennung und Datamining erst ermöglicht hat. Vermutlich stehen wir aber erst am Anfang einer spannenden Entwicklung. In praktisch allen Gebieten wird aktiv geforscht und es werden auch Systeme entwickelt, die die Methoden praktisch anwenden. Besonders verheißungsvoll ist hier das Reinforcement Learning, das verspricht viele bisher ungelöste Probleme lösbar zu machen. Die Verbreitung des Internet ermöglicht Versuche, selbstständig Wissen aus diesem kollektiver Wissensspeicher zu lernen (und den ganzen Müll noch dazu :-/). Fachübergreifend betrachtet, bietet sich die Chance, gemeinsam weiter zu untersuchen, wie man die Erkenntnisse von ML auf den Menschen übertragen kann (z.B. für CAL/CAI = Computer Aided Learning/Instruction). Interessant ist an dieser Stelle noch die Gegenüberstellung von Expertiseforschung und ML. Erstere begann ja mit der Vorstellung einer generischen Expertise („General Problem Solver”, Newell & Simon) und entwickelte sich zur Vorstellung von rein domänenspezifischer Expertise. Im Gegensatz dazu begann die KI-Forschung mit dem Versuch, „Expertensysteme” zu konstruieren, Maschinen, die domänenspezifisches Expertenwissen beinhalten und anwenden sollten (z.B. in der Landwirtschaft) und entwickelte sich hin zu dem Versuch, Maschinen zu bauen, die generisch lernen können, unabhängig von der Domäne. Wir haben viel gelernt, trotzdem gibt es heute mehr offene Fragen als vor 50 Jahren. Es gibt noch viel zu lernen. Literatur [Mit97] Tom M. Mitchell. Does Machine Learning Really Work? AI Magazine 18, S. 11-20, 1997 [Die97] Thomas G. Dietterich. Machine-Learning Research - Four Current Directions. AI Magazine 18, S. 97-136, 1997 [Tur50] Alan Turing. Computing machinery and intelligence. Mind, 59(236):433-360, 1950 17 [Fre90] Robert French. Subcognition and the limits of the Turing Test. Mind, 99(393):53-65, 1990 [SCA00] Ayse Pinar Saygin, Ilyas Cicekli, Varol Akman. Turing Test: 50 Years later. Minds and Machines 10(4):463-518. 2000 [RN02] Stuart Russell, Peter Norvig. Artificial Intelligence: A Modern Approach (2nd Edition). Prentice Hall, Dezember 2002 [Nie96] Niels J. Nielsson. Introduction to Machine Learning. An early draft of a proposed textbook. URL: http://robotics.stanford.edu/people/nilsson/mlbook.html, 1996 [Cha91] Eugene Charniak. Bayesian Networks without Tears. AI Magazine 12, S. 50-63, 1991 [Aha95] David W. Aha. Machine Learning. A tutorial presented at the Fifth International Workshop on Artificial Workshop on Artificial Intelligence & Statistics. URL: http://www.aic.nrl.navy.mil/ ~aha/, 1995 [Sar02] Warren Sarle. Neural Network FAQ, part 1-7, periodic posting to the Usenet newsgroup comp.ai.neural-nets. URL: ftp://ftp.sas.com/pub/neural/FAQ.html, 2002 [MLN03] The Machine Learning Network Online Information Service - Training. URL: http://kiew.cs. uni-dortmund.de:8001/, 2003 [SB98] Richard S. Sutton, Andrew G. Barto. Reinforcement Learning: An Introduction. MIT Press, Cambridge, MA, 1998 18