Einzelnen Beitrag anzeigen
  #3  
Alt 17.05.2010, 11:11
Benutzerbild von Mythbuster
Mythbuster Mythbuster ist offline
Forengrinch
 
Registriert seit: 06.04.2008
Ort: UNESCO Welterbe
Land:
Beiträge: 7.161
Abgegebene Danke: 1.600
Erhielt 4.997 Danke für 1.665 Beiträge
Member Photo Albums
Aktivitäten Langlebigkeit
6/20 17/20
Heute Beiträge
0/3 sssss7161
AW: Der "richtige" Weg in der Schachprogrammierung ?

 Zitat von Paisano Beitrag anzeigen
in der vergangenen Zeit wurde schon immer mal wieder hier und dort das Thema angerissen, die kürzlichen Meinungen dazu sind sicher endlich mal einen eigenen Thread wert.
Stimmt! Ich beschäftige mich seit den 80er Jahren mit der Schachprogrammierung und habe mal ein Programm in QBasic geschrieben. Seit einigen Jahren arbeite ich an "Bender", einem intelligenten Schachprogramm, welches einige Höhen und mehr Tiefen hat ... einige User aus dem Forum kennen das Programm schon von Partien "Chessguru - Bender" auf Chessgate ... wo das Programm mir schmerzlich demonstrierte, wo noch Lücken in den Bewertungsfunktionen sind. Es kommt derzeit auf ca. 2.000 Elo Punkte auf einem Notebook mit 1,3 GHz ULV CPU. Schachprogrammierung ist aus meiner Sicht ein durchaus spannendes Thema.


 Zitat von Paisano
Diskussionswürdige Fragen wären zum Beispiel:
Viele unterschiedliche Fragen, die teilweise einzeln schon seitenlange Antworten verdienen. Dann will ich wenigstens kurze Antworten versuchen.



 Zitat von Paisano
Soll ein Programm möglichst stark spielen oder menschliche "Strategien" nachahmen ?
Das hängt davon ab, zu welchem Zweck Du das Programm entwickelst und für welche Zielgruppe. Aus meiner Sicht ist eindeutig die "menschliche" Strategie zu bevorzugen. Aus dem einfachen Grund, da ich Programme zu Spielen nutze und nicht zum Selbstzweck wie es zum Beispiel im Nachbarforum zu beobachten ist. Tausende Partien im Sekundenblitz absolvieren zu lassen, um dann zu sehen, welches Programm vermutlich ein paar Elo Punkte besser "spielt" ... nein, das hat nichts mehr mit "Schach" zu tun ... aus meiner Sicht. Natürlich, es ist gut, eine Starke Analyse Engine zu haben ... aber dazu reichen meines Erachtens selbst Programme von vor einigen Jahren völlig aus.

Wenn man selbst gegen Programme spielen will, ist eine gewisse Nachvollziehbarkeit ein sehr wichtiger Punkt. Genau hier unterscheiden sich aus meiner Sicht "wissensbasierende" Programme von den üblichen Programme. Aber darauf werde ich weiter unten mit einem Beispiel eingehen.



 Zitat von Paisano
Sollte man mehr auf die Software eingehen ?
Wie meinst Du das?



 Zitat von Paisano
Wie ist "Schachwissen" zu bewerten ?
Was verstehst Du unter "zu bewerten"? Wie das Schachwissen in die Bewertung einfließt oder eher allgemein, welche Bedeutung Schachwissen für das Programm hat?

Ich denke, jeder Programmierer muss sich am Anfang die Frage stellen, welchen Weg er gehen will. Möglichst viel Wissen oder schnelle Bewertung mit extremen Rechentiefen ... jedes dieser Systeme hat Vor- und Nachteile.

Die Vorteile von viel Wissen:
- "Intelligentes" Spielverhalten.
- Interessanterer Spielstil.

Nachteile von viel Wissen:
- Langsamer
- Weniger Zugewinn an Spielstärke durch schnellere Hardware.
- Vermutlich immer modernen "schnellen Brütern" von der Spielstärke unterlegen.


Die Vorteile von wenig Wissen:
- schnelle Baumsuche mit extremen Rechentiefen.
- Programm profitiert dauerhaft von schnellerer Hardware.

Nachteile:
- Stil oftmals langweiliger und aus menschlicher Sicht unlogisch.



 Zitat von Paisano
Was versteht man unter "Schachwissen" ?
Schachwissen wird oft mit Bewertungsfunktionen verwechselt. Die Bewertungsfunktion setzt sich zusammen aus: Figurenwerte, Dynamik der Figuren (Anzahl der Zugmöglichkeiten etc.), Zentrumskontrolle, Königssicherheit etc. pp.
Das reine Schachwissen hingegen ist Theorie, die unabhängig einer speziellen Stellung greift.

Beispiele:
- Quadratregel
- Falsches Läufer Spiel

An dieser Stelle möchte ich ein Beispiel dafür geben, warum aus meiner Sicht Programme mit viel Wissen zu bevorzugen sind und warum sie menschlicher und interessanter spielen. Ich nehme dazu ein einfaches Endspiel: KLS - K

Wenn Du das theoretische Wissen hast, wie Du mit Läufer und Springer matt setzen kannst, wirst Du es instinktiv tun, ohne lange über jeden Zug nachdenken zu müssen. In der Regel wirst Du dies dann immer nach dem gleichen Schema tun, welches auch umstehende Zuschauer erkennen und verstehen! Das ist Wissen und menschlich!

Viele unserer alten Brettcomputer beherrschen dieses Endspiel problemlos: Der uralte Mephisto II von 1981, der Super Conny von 1984 und natürlich alle Lang Programme. Wie gesagt, selbst der Mephisto II "weiß", wie es geht und wird den Gegner matt setzen. Die Art und Weise, wie er es tut, wirst Du selbst problemlos verstehen und nachvollziehen, wenn Du selbst dieses Endspiel rudimentär beherrscht.

Viele der modernen Programme haben selbst dieses Wissen nicht mehr! Zum Beispiel kann Rybka 3 nicht mit Läufer und Springer das Spiel gewinnen, ohne entweder auf eine Datenbank zuzugreifen oder das Matt zu errechnen! Diue Züge einfach aus der Endspieldatenbank abzurufen, hat rein gar nichts mehr mit Intelligenz oder Spiel zu tun. Da die Hardware heute 1.000.000fach schneller ist, als die eines Mephisto II, lassen sich solche Positionen natürlich "errechnen", die benötigte Rechentiefe erreicht Rybka relativ schnell.

Jetzt könnte man sagen, es ist doch völlig egal, wie das Programm zum Ziel (Matt) gelangt, das Ergebnis zählt. Doch genau das sehe ich anders. Einerseits ist es für mich wesentlich beeindruckender, wenn das Programm aufgrund von Wissen zum Ziel gelangt und nicht einfach stupide rechnet bzw. in einer Datenbank abruft.

Ein anderer Punkt ist wesentlich entscheidender: Die Züge aus einer Datenbank oder auch nach der Suche (schnell aber dumm) sind oftmals effizienter, aber aus menschlicher Sicht nicht mehr nachvollziehbar. Sprich, es ist möglich, daß die Datenbank ein Matt in 14 ausgibt, welches zwar der schnellste Weg zum Ziel ist, aber aus menschlicher Sicht nicht nachvollziehbar! Ein Turnierspieler würde vielleicht 22 Züge brauchen ... die aber kann der Amateur dann auch nachvollziehen.

Bein Endspiel KLS - K mag das nicht soooo offensichtlich sein, aber wer mal KD - KT testet, merkt sehr schnell, wo die Unterschiede der unterschiedlichen Ansätze sind.



 Zitat von Paisano
Warum kann "Schachwissen" schlecht sein ?
Siehe oben: Schachwissen belegt Rechenleistung und verlangsamt das Programm.

Mittlerweile gilt es als unbestritten, dass Programme, die über viel Wissen verfügen, weniger von schnellerer Hardware profitieren als "dumme" Programme, die sich möglichst schnell so tief wie möglich in den Suchbaum eingraben ...

Das Ergebnis dessen ist bekannt: Es gibt Programme, die zwar im von Version zu Version dümmer werden, aber dennoch stärker spielen: Rybka 2 kannte zum Beispiel noch das "Falsche Läufer Spiel" ... Rybka 3 nicht mehr ...

Die Begründung: Es gibt nur selten Situationen, wo dieses Wissen greift und den "Sieg" bringt ... aber in jeder Partie verlangsamt das Wissen die Suche. Unterm Strich überwiegen somit die Vorteile den wenigen Punktverlusten, die eingefahren werden, weil das Programm einfach nicht weit genug rechnen kann, um zu sehen, daß es sich in die "falsche Läufer Falle" verstrickt hat ...



 Zitat von Paisano
Projekt Hydra - hat das noch etwas mit Computerschach zu tun ?
Kein Ahnung, ich habe mich nur wenig damit befasst.



 Zitat von Paisano
Muss ein Programmierer ein guter Schachspieler sein ?
Nein, absolut nicht. Richard Lang ist nur ein sehr mäßiger Spieler, der grade mal die Regeln beherrscht. Sicherlich kann es nicht Schaden, selbst gut spielen zu können und sicherlich sollte man starke Spieler im Team haben, um das Ergebnis testen zu können ... aber für die Programmierung ist das nicht nötig.



 Zitat von Paisano
Botwinniks "Pionier"
Aus meiner Sicht eine interessante Theorie, die man mal mit moderner Hardware umsetzen sollte .... allerdings halte ich viele Dinge für zu abstrakt, um tatsächlich umgesetzt zu werden ...



 Zitat von Paisano
Welche Rolle spielte die Hardware in den Anfangszeiten des Computerschachs ?
Ich denke schon. Da die Hardware im Vergleich zu heute sehr begrenzt war, mussten die Resourssen optimal ausgenutzt werden. Da die Hardware zu langsam war, um mit stupider Suche echte Fortschritte zu machen, mussten die Programmierer andere Wege suchen, um echte Fortschritte zu erzielen. Das Ergebnis waren selektive Suchverfahren und Programme mit viel Schachwissen.



 Zitat von Paisano
Waren die Programmierer früher "besser" ?
Ein deutliches "Ja!". Wenn man mal darüber nachdenkt, was ein Richard Lang (und andere Programmierer jener Zeit) aus 32, 64 oder 128 KB und 512 KiloByte RAM geholt hat! Das ist schon sehr beeindruckend, wenn man sich dagegen heutige Programme und Engines anschaut.



 Zitat von Paisano
Wie sind die bekannten Programmierer der Vergangenheit zu bewerten ? (Lang = clever ?, Morsch = primitiv ?, Schröder = effektiv ? usw.)
- Lang: Sehr viel Schachwissen, sehr selektive Programme.

- Morsch: Erster "moderner" Programmierer, ab ca. Magellan: Weniger Wissen, dafür schnelle, effiziente Suche mit großen Tiefen.

- Schröder: Ebenfalls viel Wissen, weniger selektiv, weniger Endspielwissen.

- de Koning: Ebenfalls sehr viel Wissen, allerdings weniger Endspielwissen als Langprogramme.



 Zitat von Paisano
Können wir diese Fragen überhaupt objektiv beantworten oder haben wir die "Gute alte Schachcomputer"-Brille auf ?
Warum nicht? Ich denke schon, daß Spieler, ab einer gewissen eigenen Spielstärke durchaus in der Lage sind, ein Urteil abzugeben. Das kann ich auch relativ leicht belegen:

Es wäre einfach (und günstiger) ein Netbook mit DGT Brett zu nehmen ... dann hat ma auch das Brettgefühl und etliche Programme zur Auswahl. Nun könnte man natürlich sagen, das zählt nicht, weil die Programme viel zu stark sind ... aber auch hier möchte ich widersprechen: Etliche moderne Programme lassen sich auf das Niveau eines Vancouver, einer V11 oder eines R30 drosseln .... trotzdem kenne ich kein Programm, welches mir auch nur ansatzweise den gleichen Spaß beim Spiel bietet, wie diese "alten Recken" ...

Nun ja, jedenfalls nutze ich zum eigenen Spiel auf dem Revelation zu 95% die Emulationen ...

Uff, war jetzt doch etwas mehr Text als beabsichtigt ...

Grüße,
Sascha
__________________
This post may not be reproduced without prior written permission.
Copyright (c) 1967-2025. All rights reserved to make me feel special. :-)
Mit Zitat antworten