Lernfähigkeit
Einer der markantesten Unterschiede zwischen menschlichen und elektronischen Schachspielern besteht darin, daß der Mensch aus seinen Fehlern lernt. Nehmen wir an, ein Anfänger verliert eine Figur durch ein Motiv, das ihm zuvor noch nicht bekannt war, z.B. eine simple Bauerngabel. Im Idealfall wird er nach Kenntnis des Motivs nicht mehr auf diese Finte hereinfallen und aufgrund der Erfahrung den Figurenverlust vermeiden.
Anders sah es lange Zeit bei den Schachprogrammen aus, die beharrlich ein und denselben Fehler immer wieder konsequent wiederholten. Dies konnte man sehr schön bei reinen Computermatches verfolgen, wo bestimmte Verlustpartien in identischer Form problemlos reproduzierbar waren. Auch für den Anwender war es nach den ersten Triumphen wenig befriedigend, wenn er sein Programm immer wieder mit dem gleichen Trick oder der gleichen Zugfolge besiegen konnte. Also lag es nahe, im Schachprogramm einen Algorithmus zu implementieren, der dieses wenig intelligente Verhalten abstellt und das Programm zu einem schwieriger auszurechnenden Gegner prädestiniert.
Ein erster Ansatz wurde auf kommerzieller Ebene von den Amerikanern Kathe + Dan Spracklen bei den Elite-Avantgarde - Schachcomputern der Firma Fidelity realisiert. Bei den Rechnern dieser Baureihe wurde ein bestimmter Zug nicht mehr ausgespielt, wenn im unmittelbar darauffolgenden Zug die Bewertung drastisch absackte. Alternativ wurde einfach der zweitbeste Zug ausgespielt. Es ist klar, dass dieses Verfahren in erster Linie nur taktisch effizient war, weil für den Rechner schwierig zu erkennende, positionelle Aspekte, die langfristig zur der schlechten Stellung führten, überhaupt nicht berücksichtigt wurden.
Das Programm verfügt über ausgefeilte Lernfunktionen. Die Lernfunktion hat folgende Ziele:
• | Wiederholung von Gewinnpartien bzw. Vermeidung der Wiederholung von Verlustpartien |
• | Verbesserte Leistungsfähigkeit in Partien und Analysen |
• | Wiedererkennung von Kombinationen |
• | Eigenständige Verbesserung und Modifikation des Eröffnungsbuchs |
Die meisten aktuellen Schachprogramme realisieren diese Anforderungen über die HashTabellen. Die kritischen Stellungen werden inkl. der Bewertung in einer Lerndatei permanent abgespeichert. Beim Start einer Partie wird das Lernfile in den Arbeitsspeicher geladen und beständig überprüft, ob ein Eintrag für die aktuelle Position vorliegt. In der Praxis bedeutet dies, dass jedes Mal, wenn sich während der Berechnung eine deutliche Veränderung der Bewertung ergeben hat, die entsprechende Position inkl. Bewertung permanent gespeichert wird. Falls eine einmal gelernte Stellung erneut berechnet werden muss, dann kann das Programm auf die gespeicherten Informationen zurückgreifen und einen eventuell besseren Zug ausspielen. Diese Technik stellt einen gewissen Fortschritt dar, ist aber bei weitem nicht optimal. Nach wie vor greift das Verfahren erst dann, wenn die Bewertung drastisch abgefallen ist. Die vorausgehenden positionellen Strukturen, die zu der kritischen Position führten, werden mit dieser Methode nicht berücksichtigt. Eine weitere Schwachstelle bei diesem Verfahren liegt darin, dass es nur identische Stellungen berücksichtigt, die in der Lerndatei gespeichert sind. Ein echter Durchbruch hinsichtlich künstlicher Intelligenz würde darin bestehen, wenn die Lernfunktion auch in Situationen greifen würde, wo ein ähnliches Motiv auftritt. Für einen Menschen ist das kein Problem, denn er kann die früher gemachte Erfahrung auch auf Situationen übertragen, die nicht 100% mit der Erfahrungssituation identisch ist.
Das Programm nimmt selbständig Modifikationen am Eröffnungsbuch vor. Ungünstige Abspiele werden einfach in der Ausspielpräferenz heruntergesetzt oder deaktiviert, während Eröffnungsvarianten mit deutlich positiven Resultaten vom Schachprogramm mit einer höheren Präferenz versehen werden. Dieses Verfahren hat den grossen Vorteil, dass sich das Ausspielverhalten des Programms in der Eröffnungsphase langfristig selbständig optimiert. Dadurch ist das Programm in der Lage, schlechte Eröffnungsvarianten auszusortieren, bzw. vorteilhafte Varianten anzustreben, nachdem sie einmal gespielt wurden.