Tags
AI, begreifen, deeplearning, intelligenz, ki, lernen, machineintelligence, machinelearning, software, wissen
In den letzten Monaten habe ich mich viel mit Künstlicher Intelligenz beschäftigt und bin nach wie vor fasziniert von dem Thema – bzw den Themen, denn es gibt so viele verschiedene Technologien und Ansätze.
- Eine sehr gute Einführung, die einem die Geschichte, die Ansätze und Einsatzbereiche der KI nahe bringt: „Künstliche Intelligenz“ von Günter Görz und Bernhard Nebel.
- Tiefgehender ist der „Grundkurs künstliche Intelligenz“ Wolfgang Ertel.
- Data Mining und Maschinelles Lernen nutzen teilweise die gleichen Technologien – von daher fand ich den Quereinstieg über „Data Analysis with Open Source Tools“ von Philipp K. Janert auch interessant – auch wenn ich es noch nicht anwenden konnte, glaube ich dass das Hintergrundwissen mit noch zu Gute kommt.
- Web Data Mining von Bing Liu bietet noch weitere Methoden wie Association Rules zur Wissens-Generierung aus Daten, die ich sicher noch verwenden kann.
- Hat man die Grundlagen verstanden, lohnt sich der kostenlose Online-Kurs von Andrew Ng sehr! Hier wird das Verständnis für Neuronale Netze aus den mathematischen Grundlagen und anhand von Programmier-Beispielen in Octave aufgebaut. Danach wir einem klar, wie „einfach“ die Algorithmen letztlich sind. Mit einfach meine ich, dass sie gar nicht so kompliziert sind, wie sie anfangs erscheinen – einfach heißt nicht dumm. Sie sind extrem leistungsfähig, und die Menschen, die sie erdacht haben sind äußerst gewitzt vorgegangen. Mein Respekt – aber auch Verständnis – für Mathematiker ist in dem Kurs nochmal gewachsen.
Allerdings bin ich auch ein wenig enttäuscht. Sicherlich habe ich bisher nur an der Oberfläche gekratzt, kenne nur die Werkzeuge und ich lasse mich gerne noch überraschen. Mein erster Eindruck ist aber, dass wir noch weit, weit, weit von einer „echten“ künstlichen Intelligenz – einer „starken KI“ entfernt sind, die einen Menschen in seinen Problemlösungs-Fähigkeiten und mit Bewusstsein nachbilden soll. Auf einer Skala von „normaler“ Software(1) bis „menschlicher“ Intelligenz(10) liegt die KI bei maximal 3 würde ich behaupten. Dafür hole ich ein wenig aus – hoffe ihr habt ein paar Minuten – aber es wird interessant – versprochen :-)
Schwache KI
Im Bereich der „schwache KI“ haben wir Anwendungen, die den Menschen teils schon übertreffen. Zur schwachen KI zählen alle Verfahren, die Probleme „menschenähnlich“ lösen – die Übergänge zur „normalen“ Software sind da recht fließend. Das Suchen in (großen) Entscheidungs-Bäumen zählt bereits dazu, obwohl man Bäume und das Suchen darin auch in der „normalen“ Anwendungs-Entwicklung – bspw. in Navigationsbäumen recht häufig nutzt. Ein klassisches Beispiel ist das Problem des Handlungsreisenden. Finde den kürzesten Weg (die beste Reihenfolge) durch X Städte (von X Dingen). Bei bspw. 500 Städten gibt es 499! Kombinationsmöglichkeiten (499*498*497*…. eine Zahl mit 1132 Stellen!) und die Berechnung all dieser Möglichkeiten würde länger dauern als das Universum alt ist! Um dennoch ein Ergebnis zu finden, sieht man davon ab, in jedem Fall das BESTE finden zu wollen und verwendet Heuristiken – einfache Bewertungs-Funktionen. Bspw. nimmt man immer die nächstgelegene Stadt als nächstes Ziel „nearest neighbour“ – das führt nicht unbedingt zur besten, „kürzesten“ Lösung, da man unter Umständen Zick-Zack fährt, statt einfach im Kreis zu fahren. Heuristiken sind eine Technik, die wir Menschen recht gut kennen – wir verwenden ständig Faustformeln um Entscheidungen zu treffen – Bauchgefühle und Traditionen zählen auch dazu: „das haben wir immer schon so gemacht“ – daher „fühlen“ sich Heuristiken schon intelligenter an, als ein einfaches stupides Absuchen aller Möglichkeiten in einem Entscheidungsbaum. Doch genau wie Faustformeln und Traditionen haben auch die Heuristiken der Software das gleiche Problem: Es fällt schwer davon abzulassen – Menschen haben aber immerhin noch die Möglichkeit sich anzupassen und dazu zu lernen – Heuristiken nicht.
Neurale Netze
Hier fällt ein weiterer Punkt auf, den wir bei einem intelligenten System erwarten würden: Lernfähigkeit. Auch dafür gibt es bereits sehr gute Entwicklungen: Beispielsweise Neuronale Netze. Das hört sich biologisch und durch die Verwendung in der Informatik fast mystisch oder nach Cyborgs an. Letztlich stecken dahinter aber „nur“ ausgeklügelte mathematische Formeln.1 Über mehrere Ebenen von Stationen (=“Neuronen“) werden Gewichtungs-Werte erlernt. Das Lernen beruht dabei darauf, dass ein ausgegebenes Ergebnis von einem Menschen bewertet wird (Richtig oder Falsch) und die Gewichtungen dann durch die Ebenen und Neuronen in kleinen Schritten berichtigt werden. So ergeben sich auf lange Sicht Gewichtungs-Muster in den Neuronen, die sehr effektiv sind! Dadurch können Neuronale Netze bspw. selbstständig Auto fahren lernen: Das Netz vergleicht dabei einfach seine Entscheidungen immer mit denen eines Menschen, bis die Muster soweit passen, dass das Netz alleine „richtig“ entscheidet. Der Vorteil der neuralen Netze liegt auf der Hand: Mittels „normaler“ Software hätte man manuell die Gewichtungen in den Neuronen einstellen müssen. Das hätte ewig gedauert.
Deep Learning
Heuristiken und Neuronale Netze sind zwei Beispiele aus einem Pool von KI-Technologien, die heutzutage im Einsatz sind. Neuronale Netze gewinnen im Deep Learning (bei spektrum.de gibt es einen guten Einblick) gerade wieder stark an Bedeutung. Man kann gespannt sein, wie lange dieser Hype anhält. Ich glaube aber nicht, dass diese Systeme von „alleine“ intelligent werden können2. Es ist erstaunlich, was die Technologien leisten können, aber es sind Fachidioten. Eine System mit einer Heuristik kann nicht entscheiden, wann die Heuristik nicht mehr adäquat ist – ein neurales Netz kann nur in Situationen funktionieren, die sehr ähnlich denen sind die es gelernt hat. Es merkt nicht, wenn die Situationen unähnlich sind – dann entscheidet es einfach stur nach dem, was seine Gewichtungen vorgeben. Kommt das autonome Auto vom Weg ab, dann hält es im besten Fall an.
Menschen sind da nicht so unterschiedlich. Bei uns gibt es auch viele Sturköpfe und Fanatiker mit unpassenden Gewichtungen in den Neuronen – solange sie sich in Ihrem homogenen Umfeld bewegen fällt das gar nicht auf, aber sobald sie mit Andersdenkenden zusammenkommen, dann trennt sich die ablehnende und gewaltbereite Spreu vom interessierten, neugierigen Weizen, aber das ist ein anderes Thema…
Eines scheinen sie mir alle gemeinsam zu haben: Egal welche KI-Technologien man sich anschaut – soweit ich das (bis jetzt) sehe, sind die Features, mit denen man ein System füttert immer schon vorausgewählt. Ich habe bestimmte Attribute, die bestimmte Werte annehmen können und auf Basis erstelle ich bestimmte Vorhersagen und Entscheidungen. Neuronale Netze sind gewissermaßen freier als andere Systeme – sie können sich selbst die Muster aussuchen, auf die sie reagieren. So kann man Ihnen beispielsweise 20×20 Pixel Bilder (also 400 Features) übergeben und sie erstellen pro Ebene selbst die Muster/Gewichtungen zusammen, die sie für Ihre Entscheidungen benötigen, was auf dem Bild zu sehen ist.
Das Neurale Netz vergleicht die Relationen von Pixeln zu Pixeln. Dazu passt es die Gewichtungen in seinen Neuronen an, wenn die Antwort korrekt oder falsch war. Das funktioniert recht gut, wenn pro Bild nur ein Objekt und am Besten nur schwarz-weiß Töne zu sehen sind. Je unterschiedlicher die Pixel und Relationen sein können (bunt, verschiedene Beleuchtungen, drehbare 3D Objekte), desto schwieriger wird es offensichtlich auf Pixel-Basis zu entscheiden, was für ein Objekt man vorliegen hat. Man kann die Algorithmen trainieren, aber wir brauchen dafür unheimlich viele Trainings-Daten. Menschen lernen da um einiges schneller. Wie Andrew Ng in diesem Vortrag zu Deep Learning erklärt, wünschten wir, unsere Algorithmen könnten die Features nicht auf Pixel-Basis, sondern auf Teile-Basis erkennen.

aus Andrew Ng: Deep Learning – Wenn KI nur Bestandteile erkennen könnte… dann wären wir schon viel weiter…
Wenn sie erkennen könnten, ob ein Lenker und Räder auf dem Bild zu sehen sind, dann fiele es dem Algorithmus viel leichter zu erkennen, um was es sich auf dem Bild handelt, da es nicht mehr Unmengen von Pixel-Werten vergleichen müsste, sondern nur noch wenige Bestand-Teile unterscheiden müsste. Leider haben wir so etwas noch nicht. Deep Learning geht mit dem Erkennen von Kanten und Kanten-Kompositionen allerdings schon in diese Richtung.

aus Andrew Ng: Deep Learning – Immerhin: Ecken und Kanten erkennen wir schon.
Doch man sieht, dass es sich immer noch nicht um benennbare Objekte handelt – selbst wenn die Form (die Kanten-Komposition) eines Auges erkannt wurde, würde es dem Neuralen Netz nicht einfallen dieses als Einzel-Form zu benennen. Warum auch. Deep Learning macht es allerdings einfach eine Menge an relevanten unterscheidbaren Mustern zu erkennen. Wie die dann weiterverwendet werden, ist eine Frage der Anwendung (und damit eine Frage an den Entwickler) Interessant ist, dass der Algorithmus „Sparse Coding“, der hier verwendet wird, ursprünglich erstellt wurde, um die Verarbeitung des visuelle Zentrums im Gehirn zu erklären.
Warum fehlt mir was?
Ich finde diese Fortschritte bemerkenswert, aber irgendwas fehlt mir noch. Ich bin zwar gelernter Softwareentwickler, aber mein Interesse war immer eher philosophischer Natur. Warum denken wir, wie wir denken? Wie funktioniert der Aufbau von Wissen? Was ist Wissen? und so weiter. Über Kant, Heidegger, Konstruktivisten und Entwicklungs-Psychologen habe ich schon viel gelesen und mir mein eigenes Modell entwickelt. Schön ist, dass ich beim Lesen immer wieder meine eigene Ideen bestätigt fand. Mag ich auch ein Laie sein, das weckte das Feuer in mir, mein Modell auszuprobieren. Ich brenne geradezu darauf, die (KI-) Technologien zu nutzen um es aufzubauen. Da kommt mir meine Programmier-Grundausstattung wieder zu Gute. :-)
Und das fehlt mir:
Intelligenz ist immer auch intelligent Handeln. Wissen ist immer Anwendungswissen. Was bringen einem System erkannte Features, wenn es sie nicht FÜR irgendetwas einsetzt. Welche Features relevant sind, wird bisher von außen vom KI-Entwickler festgelegt. Im Deep Learning kann ein System selbstständig Features erkennen, indem es bestimmte Muster sucht und diese in Kompositionen von Mustern zusammenfasst. Jetzt muss dennoch ein Mensch wählen welche dieser Muster relevant sind für den jeweiligen Anwendungszweck. Konzentriert sich das System eher auf Gesichter oder soll es Motoräder erkennen – was auch immer das Ziel ist, jemand muss hingehen und dem System sagen, welche Kompositionen von Mustern relevant sind. Ich glaube, dass das der nächste Schritt ist – oder zumindest ein Schritt, der noch fehlt: Die Systeme müssen selbst bestimmen können, welche Kompositionen relevant sind – sonst laufen sie – genauso, wie eine Heuristik, irgendwo in die Irre, da sie sich nicht anpassen können. Wie wir an uns selbst feststellen können, ist die einzige Art und Weise, auf die wir feststellen können, welche Muster relevant sind, indem wir sie ausprobieren. Wir müssen handeln die Ergebnisse mit unseren Erwartungen vergleichen zu können. Es gibt tatsächlich in der KI auch Technologien, die darauf ausgerichtet sind: Reinforcement Learning. Allerdings geht es dabei – soweit ich bisher weiß – nicht um die Bewertung von Features und welche sinnvoll sind, sondern um die bereits vorausgewählten Zustände und Aktionen. Über Reinforcement Learning lernen einige Robotor bspw. das Laufen. Er kennt die möglichen Aktionen (Bein vor, zurück, hoch, runter) und besitzt Bewertungs-Möglichkeiten, ob sein Zustand einem (definierten) Ziel näher gekommen ist. Vielleicht könnte man Reinforcement Learning dazu verwenden, die eigenen aufgebauten Features in Kombination mit Aktionen zu bewerten und so zu entscheiden, welche Features sinnvoll – also für die Aktionen relevant – sind? Vielleicht müssen die Technologien auch nur noch sinnvoll miteinander kombiniert werden, um Systeme wirklich intelligent und anpassungsfähig zu gestalten, um sie vom Fachidioten (Heuristik) oder Mustersammler (Deep Learning) zum fachgerechten Mustersammler zu machen?3
- Andrew Ng auf coursera finde ich als Einstieg sehr lehrreich https://class.coursera.org/ml-006 [↩]
- im Sinne einer starken KI [↩]
- und vielleicht hat das auch schon jemand gemacht? [↩]
[…] können Maschinen schon […]
[…] Schlüsseltechnologie in diesem Vortrag ist Deep Learning. Die Technologie beruht auf großen Neuralen Netzen. In einem meiner letzten Artikel habe ich das […]
[…] einem halben Jahr habe ich das erste Mal die KI-Technologie Reinforcement Learning erwähnt – auf Deutsch: Bestärkendes […]
[…] Beispiele von automatischem Planen, wie es beim Problem des Handlungsreisenden auftritt (kam in diesem Artikel […]