Die Schachsache, mit der wir den ersten Teil unserer Leselinkliste (LLL) beendet haben, markiert einen Umbruch in KI-Entwicklung. Auf der einen Seite hatte man einen gesetzten Meilenstein nun endlich erreicht (nach etwa 40 Jahren). Doch dieses Ereignis war nicht der Durchbruch, wie man sich das erhofft hatte. Eher war es der Abschluss einer Entwicklung. Nach den Enttäuschungen über den General Problem Solver (WP) hatte man sich auf die Lösung einzelner konkreter Aufgaben konzentriert. Nun endlich hatte man das Gefühl, das man alles,was man verstanden hatte, auch auf eine Maschine abbilden kann. Und darüber hinaus sagte man sogar, etwas zu verstehen bedeutet, es programmieren zu können. Mit anderen Worten, wenn ich nicht weiß, wie ich einem Computer eine gewisse Sache beibringen kann, habe ich diese Sache noch nicht richtig verstanden.
In diesem Bereich gibt es noch viel Luft nach oben. Das sind Sachen, die wir noch nicht so gut hinbekommen, weil wir sie einfach noch nicht so gut verstanden haben. “Digitalisierung” ist ein Schlagwort, das man heute oft hört. Dabei geht es darum, dass heute immer mehr Dinge computertechnisch abgewickelt werden. Das liegt aber meistens nicht daran, dass wir die Comuputer immer intelligenter machen, sondern daran, dass wir immer besser verstehen wie gewisse Dinge in unsere Gesellschaft funktionieren und wie man das elektronisch umsetzen kann. (Vieles haben wir auch schon verstanden aber noch nicht umgesetzt.)
Der Leser, der sich für das Thema Künstliche Intelligenz (WP) interessiert (also mein Leser) sollte ein Grundverständnis darüber haben, wie ein Computer (WP) funktioniert und wie er programmiert (WP) wird. Etwa so, wie er auch weiß, wie eine Fernsehsendung produziert wird, wie sie übertragen wird und schließlich wie die Sendung durch den Fernseher wieder sichtbar gemacht wird. Ok, die Kathodenstrahlröhre (WP) war gestern, aber ich denke der Leser kann sich etwas unter einem “Pixel” vorstellen und weiß, dass “Kabel Eins” kein Kabel ist. Was ist also ein Computer und wie funktioniert er? Ein grobes Schema formuliert die sogenannte von Neumann Architektur (WP) . Und wie bringen wir den Computer dazu, uns Arbeit abzunehmen? Hierzu lese man etwas über die Grundkonzepte höherer Programmiersprachen (WP) . Dazu gehören z.B. Variablen (WP) , Verzweigungen (WP) und Schleifen (WP) .
Heute ist die Objektorientierte Programmierung (OOP) (WP) sehr verbreitet, bei welcher Daten und Funktionalitäten auf kleine Einheiten (die Objekte) verteilt werden. Der Programmierer schafft in einem ersten Schritt eine anwendungsbezogene Abstraktionsebene, in dem er das Schema der Objekte entwirft. In einem zweiten Schritt werden dann Instanzen dieser Objekte (oft sehr viele Instanzen) mit einander vernetzt und die Instanzen treten in Interaktion miteinander. So entwickeln die Instanzen ein gewisses Eigenleben und im Computer entsteht eine simulierte Welt in der Akteure aufeinander treffen. Computerspiele sind der Paradefall für die objektorientierte Programmierung.
An dieser Stelle empfehle ich meinen Artikel “Mit SVG und Javascript richtigen Strom erzeugen – eine grafische Animation des einschrittigen Übertrages nach Howard Aiken und Konrad Zuse.” In dem Artikel, sieht man wie man auf einem “Schaltplan” Instanzen von Objekten wie “Schalter” und “Verbindungen” platziert. Das Konzept, das hinter den Objekten steht ist in diesem Javascript-Programm definiert, welches ich ausführlich kommentiert habe.
Dies sollte zeigen, wie der Computer dann doch noch zu einem “General Problem Solver” geworden ist. Andererseits sind auch die Grenzen dieser Art von künstlicher Intelligenz in den 90-er Jahren deutlich geworden. Die Erfolge der letzten Jahre bei der Weiterentwicklung der Künstlichen Intelligenz (etwa seit 2008) sind weitgehend einer ganz anderen Herangehensweise zu verdanken. Stichworte dazu sind Data-Science , Künstliche Neuronale Netze und Maschinelles Lernen . Mein Anliegen ist es, zu zeigen, dass man mit wenigen Grundkenntnissen (Grundlagen des Programmierens und Grundlagen der höheren Mathematik ) in der Lage ist, auch die in dieser Art der KI eingesetzten Methoden im Grundsatz verstehen zu können.
Data-Science ist ein sehr weitreichender Begriff. In Bezug auf Künstliche Intelligenz geht es darum, in komplexen Daten ein Schema zu erkennen, aus der eine Bedeutung erschlossen werden kann. Zum Beispiel wird ein Bild im Computer durch mehrere Millionen einzelner Zahlenwerte dargestellt, die die Farbwerte der Bildpixel repräsentieren. Wie kann man daraus die Bedeutung des Bildes ableiten? Um sich langsam dem Thema zu näher, kann man als Erstes den Artikel “Niemand hat die Absicht eine …” von Peter Stahl über statistische Datenanalyse lesen. Sein Team-Kollege Steffen Wittkamp zeigt dann im gleichen Blog wie man als Programmierer erste Erfahrungen mit Bilderkennung sammeln kann: “Machine Learning – ein Appetizer!” . Als Methode wird hier eine sogenannte Support Vector Machine (WP) einer frei verfügbaren Programmsammlung als Black-Box verwendet.
Auch der Zeit-Autor Andreas Loos fragte sich, ob man in einer Woche eine künstliche Intelligenz erschaffen kann. Sein Artikel “Mein Bot und ich” ist in der Zeit-Online-Serie Maschinenraum erschienen, die sich seit September 2016 dem Thema KI widmet.
Doch KI ist nicht nur etwas für Jungs. Fast hätte ich zu diesem Schluss kommen müssen. Doch dann habe ich Olivia Klose von Microsoft Germany entdeckt. Sie bezeichnet sich selbst als Technologie-Evangelistin. Sie will also (oder sie hat den Auftrag dazu) die neuen (auch von Microsoft entwickelten) KI-Technologien gewissermaßen unter das Volk bringen und dafür werben. In ihrem Blog erklärt Olivia Grundlagen des maschinellen Lernens zum Teil in deutsch und auch als Videos. Die Leserin, die sich bereits als Fachfrau in unserem Thema sieht, sei noch auf diese Konferenz im Juli 2017 hingewiesen: “Women in Data Science and Mathematics Research Collaboration Workshop”.
Kommen wir jetzt nochmal auf die Support Vektor Maschine zurück, die Steffen eingesetzt hat. Hier wird ein digitales Bild als ein einziger Punkt in einem hoch dimensionalen Raum aufgefasst. Die Idee dieser Methode ist es, dass alle Punkte mit einer speziellen Bedeutung (Bild mit Lastwagen) in einem speziellen Bereich des Raumes liegen und diejenigen Punkte mit der gegensätzlichen Bedeutung (Bild ohne Lastwagen) in einem anderem Bereich. Man sucht dann nach einer mathematischen Formel, die einen Punkt des Raumes in eine einzige Zahl verwandelt. Ist die berechne Zahl für die Datenwerte eines Bildes dann größer als Null, schließt man auf ein gewisse Bedeutung des Bildes. Ist die Zahl kleiner als Null, liegt die gegenteilige Bedeutung vor. Die Punkte des Raumes, wo die berechnete Zahl genau Null ist, bilden dann eine Fläche, die die beiden Bedeutungen von einander trennt.
Das Problem besteht darin, diese magische Formel zu finden, die als Entscheidungsinstanz geeignet ist. Die Herangehensweise ist immer so, dass man eine Kollektion von Beispieldatensätzen haben muss, bei denen das gewünschte Ergebnis bereits vorliegt. Mit diesen Datensätzen “trainiert” man die Support Vector Machine. Bei diesem Vorgang werden Parameter der Maschine, die in die gesuchte Formel als Konstanten eingehen, in einer systematischen Weise immer wieder verändert, bis die Maschine (also die Formel) für die gegebenen Beispiele das gewünschte Ergebnis liefert. Daher spricht man von einer “lernenden Maschine”. Der Erfolg dieses Lernprozesses ist aber nicht garantiert. Daher sollte man eine zweite Kollektion von Beispieldatensätzen haben. Auf diese wendet man die trainierte Maschine an und schaut, wie oft die Maschine mit ihrer Bewertung richtig liegt. Ist das Ergebnis nicht zufriedenstellend, so muss man noch nicht gleich verzagen, denn es gibt die SVM in verschiedenen Varianten und sie haben auch noch zwei Stellschrauben (in der Literatur meist c und N genannt). Man muss also ein bisschen herumprobieren, bis man etwas trainieren konnte, was dann auch funktioniert. Man darf darüber dann aber keine falsche Vorstellung haben. Wenn es funktioniert, funktioniert es, weil man es gesehen hat, dass es funktioniert und nicht weil man Erkenntnisse über Zusammenhänge gewonnen hat.
Hier ist eine Einführung “Basics of support vector machines” in der es eine kleine Inline-Applikation gibt, mit der man etwas herumspielen kann. Die Einstellung “linear” ist die Grundvariante einer SVM, bei der man versucht, die Entscheidungsfunktions als eine lineare Funktion zu realisieren. Die Trennfläche (s.o.) ist dann ein Hyperenbene (WP) . Die anderen Varianten entstehen dadurch, dass man den Grundraum in einen höher dimensionalen Raum hineinbiegt und dort wieder das lineare Grundverfahren anwendet. In diesem Video wird das veranschaulicht, in dem ein 2-dimensionaler Raum in einem 3-dimensionalen hineingebogen wird. Dort lassen sich dann die roten Punkte von den blauen Punkten durch eine Ebene von einander abtrennen. Bringt man diese Trennung zurück in den Originalraum hat man eine elliptische Trennkurve.
In einen 3. Teil dieser Artikelreihe werden wir erläutern, was “künstliche neuronale Netze” sind.