KI – Machinelearning

Der Artikel fängt mit einem Hobby an und grenzt letztlich den klassischen Begriff „künstliche Intelligenz“ gegen die neuen Begriffe „Machine Learning“ /  „Deep learning“ ab.

Neben dem jetzt aktuellen Hobby Fotografie inclusive digitaler Bildbearbeitung prägte schon recht früh das Thema AI / KI auch meine Freizeit. Schon als Student arbeitete ich parallel an der Thematik und realisierte es in diversen Themenbereichen.
Eines davon war das „königliche Spiel“, Schach.

Chat vs. kempelen - Matt in 7
Weiß: Chat – Schwarz : Kempelen, 1:0 in sieben Zügen

(Auf dem Bild ist die Seite verlinkt, auf der man die Partie nachspielen kann)
Dienstlich hielt ich als studentische Hilfskraft den Kurs „Pascal Programmierung für Fortgeschrittene“, und dazu passend nahm ich mit dem durchgängig in PASCAL codierten Schachprogramm Chat, das freundlicherweise auf dem Großrechner der Marke CYBER der Universität Wuppertal laufen durfte, an der Computerschachweltmeisterschaft in Köln teil. Ein Jahr später lief das Programm auf einem Minicomputer, entwickelt und freundlich gesponsort von Michels und Kleberhoff.
Auf der ICCA Computerweltmeisterschaft  in Rom, 1987, spielte es in der obigen Partie einen Sieg schon im siebten Zug der Partie heraus (s.o).

Wieso hat das Programm so schnell gewonnen und warum spielte es ein so unkonventionellen Eröffnungszug?


PASCAL war damals die Modesprache. Vielversprechender waren jedoch die Möglichkeiten mit der damals neuen Programmiersprache C.

Daher baute ich das neue, stark verbessertes Programm „Check Check“ in C.

Check Check
Check Check

http://chessprogramming.wikispaces.com/Check+Check

Da auch die Performance erheblich erhöht wurde, konnte das Programm mit einem schlankeren Zuggenerator schneller und damit tiefer in den Spielbaum rechnen, was die Spielstärke deutlich erhöhte.
Weiterhin bekam das Programm viel Wissen über Stellungen und Motive beigebracht, auch Endspielwissen, was insgesamt die Spielstärke deutlich erhöhte. Das Programm benutzte als erstes kommerzielles Schachprogramm Viersteiner Endspieldatenbanken.

So konnte mein erstes Schachprogramm in C immerhin Platz 5 auf der Weltmeisterschaft in LYON erzielen.

WMCC LYON
10th World Microcomputer Chess Championship, Schach – Lyon 1990 (ICGA Turniere)

Eine Partie:

Delta vs. Check Check Lyon 1990 0-1
Delta vs. Check Check Lyon 1990 0-1

Auf dem Bild ist die Seite verlinkt, auf der man die Partie nachspielen kann, oder hier: https://www.game-ai-forum.org/icga-tournaments/round.php?tournament=60&round=3&id=4&lang=6

Vergleich zu KI, Deep Learning, neuronalen Netzen

Bemerkenswert ist die Sicht auf das eigentliche Wesen der KI aus der Wahrnehmung des „Schöpfers“, des Schachprogrammierers.

Die wesentliche Methode, die im Kern das automatisierte Lernen in neuronalen Netzen ausmacht, die Art und Weise wie mittels Backpropagation der Fehler im Netz gewichtet an die verursachenden Neuronen zurückgeführt wird, ist durchaus vergleichbar mit dem Prozess des Entwickelns eines Schachprogramms. Auch wenn das Programm „Brute Force“ zunächst einfach alle Möglichkeiten durchprobiert, um dann mit dem MinMax Verfahren die beste Variante zu ermitteln, macht der „ProjektOwner“ (Programmierer wäre zu wenig) das gleiche. Das Wissen des Programms wurde in unzähligen Partien im Schachverein Solinger Schachgesellschaft 1868  gegen menschliche Spieler „trainiert“. Wenn das Programm eine Situation falsch eingeschätzt hatte, wurde danach der entsprechende Parameter in der Bewertungsfunktion, genauer in der Komponente Positionsbewertung,  intuitiv nachgetunt. Es folgten Testläufe, und der Parameter wurde adaptiv angepasst, bis das Programm die Stellung „verstand“, also richtig behandelte. Die Hoffnung blieb, dass solch eine Änderung keine zu großen negativen Effekte auf andere Partien hatte. Dafür hatte das Programm schon eine automatisierte Testsuite, es konnte also quasi batchmäßig einen Set von gespeicherten Teststellungen abarbeiten. Nachdem man nach solch einer Änderung ein neues Release erstellt hatte, konnte man sich damit Gewissheit verschaffen, dass das Programm durch den Eingriff nicht global schlechter wurde. Mögliche Testsets waren damals gängige Testsuites mit definierten Lösungszügen oder ein repräsentativer Querschnitt aus früheren problematischen Testfällen.

Die Essenz des Ganzen

Künstliche Intelligenz vs. Machine Learning

Selbst ein Brute-Force Schachprogramm war bisher immer der Klassiker für künstliche Intelligenz. Die „Intelligenz“ wird künstlich vom Projektteam erzeugt. Es wird Schachwissen eingebaut, Stück für Stück, dem Programm wird beigebracht Züge vorauszuberechnen. Je schneller der Rechner, desto „tiefer“ in den Spielbaum, also desto mehr Züge konnte das Programm „vorausplanen“. Das war jedoch eine Sackgasse und ist eigentlich keine Intelligenz. Es ist ein komplizierter Algorithmus , bestenfalls ein Expertensystem.

Auch wenn die Methoden, mit denen der Mensch das System tunte im Prinzip denen entsprechen die neuronale Netze automatisiert anwenden, ist es doch alles „fest verdrahtet“.

Den Fortschritt bringen Deep Learning Methoden. Jetzt entscheidet nicht mehr der Mensch, welches der Tokens aus denen sich das lernbare zusammensetzt wie bewertet werden muss, sondern in den Schichten des neuronalen Netzes instantiieren sich die Tokens von selbst, der Mensch weiß noch nicht mal dass sie existieren. Und in der Trainingsphase modifiziert das System selber die Wertigkeiten. So ensteht aus dem Nichts tatsächlich eine Art tieferes Wissen über das Thema und das optimale Vorgehen. Dies ist der Aspekt der das ganze tatsächlich fast mystisch macht. Dabei kann dann schon eher über eine künstliche Intelligenz sprechen. Im Gegensatz zum oben beschriebenen Vorgehen, wo der Mensch  das Gesamtsystem mit all seinen Aspekten designet, definiert er hier nur den Grundstock. Die Maschine schafft ihr Wissen sozusagen selber, man „zeigt ihr die Welt“ und sie lernt und erzeugt damit ihre Intelligenz.

Literaturbeispiele und Projekte folgen