Diep

Inleiding Computerschaak (1995: 2)

How to beat a chess program

Vincent Diepeveen

Hier is erg weinig over bekend bij de meeste clubschakers. Dit komt voornamelijk doordat er erg weinig toernooien worden gespeeld waarin menselijke schakers spelen tegen computers. Vandaar deze poging u een aantal tips aan te reiken om gehakt te maken van een schaakprogramma.

diepeveen2Links Vincent Diepeveen.

In eerste instantie zal ik er van uit gaan dat u speelt op een normaal bord met klok, tegen iemand aan de overkant. Die persoon aan de overkant is een computer, die bediend wordt door een mens, operator genaamd, welke de zetten overbrengt naar uw bord, en uw zetten in de computer stopt. Ook als u slechts thuis af en toe eenzaam tegen een programma speelt kunnen deze tips van groot nut zijn.

Het eerste dat u kunt doen is uzelf voorbereiden. Dit moet u niet op dezelfde wijze doen als tegen een mens. Tegen een mens kunt u aan de hand van database partijen er wel achter komen wat deze persoon meestal voor opening speelt. Het voorbereiden van de opening tegen de computer is onzin. Er zijn maar weinig programma’s die vaak dezelfde opening spelen. Het is veel beter te onderzoeken tegen welk en wat voor soort programma u speelt. Aan de uw bekende schakers moet u dat natuurlijk niet vragen. Met name grootmeesters weten totaal niet hoe een computer te bespelen.

Vraag het de operator

Dit kunt u het beste vragen aan computerfreaks. Het sterkste voorbereidende wapen dat u echter gaat inzetten tegen de computer is een geheim wapen: de operator! Een vriendelijk praatje maken met de operator kan u al een gedeelte van het punt bezorgen. De eerste vraag die gesteld wordt is natuurlijk welke titels dit. programma in zijn bezit heeft. Er zijn, vanwege de commercie, in computerschaakland evenveel titels te behalen als dat er miss-titels zijn. In de hele wereld zijn er slechts drie soorten titels interessant, en wel in deze volgorde:

  1. Open Nederlands Kampioen
  2. Wereldkampioen
  3. Amerikaans kampioen
  4. Duits Kampioen

Iets wat de meesten onder u wellicht zal verbazen is dat Nederland het sterkste computerschaakland ter wereld is. Aan alle kampioenschappen doen vaak ook beginners mee die zo slecht zijn, dat alleen al de klok laten lopen betekent dat u het punt al binnen heeft. Andere titels zijn niet zo interessant, of zijn verkregen omdat er maar één deelnemer was.

Nu kunt u bepalen waarop u gaat spelen. Als de deelnemer niet in bezit is van een van de vier titels, dan bent u het aan uw stand verplicht om te winnen. Laat u niet afschrikken door de naam van uw tegenstander. Achter nietszeggende namen als Quest, Ferret, Shredder, Hiarcs gaan vaak vreselijke rekenbeesten schuil, terwijl achter mooie namen als Zeus, Breakthrough, Morphy, Dragon, Bobby vaak een beginner schuil gaat.

Van de hardwarematige schaakapparaten is alleen de Mephisto Morttreux en de R40 de moeite van het noemen waard (twee verschillende namen, terwijl er hetzelfde programma inzit!). De rest is ronduit zwak.

Twee type programma’s

Het tweede dat u voor de partij moet zien uit te vinden is wat voor type programma het is. Hoewel alle programma’s proberen zo diep mogelijk te rekenen zijn er grofweg twee methodes die veel succes boeken de laatste tijd. Elk schaakprogramma bestaat eerst uit een zoekgedeelte waarin alle varianten tot een bepaalde diepte worden bekeken, vervolgens wordt hoogst selectief nog ietsje verder gekeken (met name naar mat en stukken slaan).

Hoewel er natuurlijk talloze combinaties zijn, zal in elk programma toch de nadruk liggen of op het zogenaamde ‘brute force’ zoekgedeelte, of op het hoogst selectieve gedeelte. De grondlegger van de schaakprogramma’s, Shannon, heeft de volgende twee methodes naar zich genoemd gekregen:

Shannon a; vrijwel brute force zo diep mogelijk en weinig selectief
Shannon b; klein beetje brute force en zoveel mogelijk selectief

Programma’s die methode a volgen, gebruiken in hun programma veel een truc waardoor ze toch niet alles hoeven te doorzoeken, of zoeken dit slechts tactisch door. Als zij namelijk in een variant veel voorstaan (materiaal of een open lijn bijvoorbeeld) passen zij. Als de tegenstander dan op de zeer korte termijn (vaak in één zet) niets heeft, dan beschouwen zij die variant als slecht. Deze programma’s rekenen op zo’n 10/11 ply momenteel.

Shannon-a programma’s hebben zeer veel moeite met het ontdekken van dreigingen op de lange duur. Voorbeeld: natuurlijk weet elk programma dat een vrijpion goed is, maar welke loopt nu door: de jouwe of de mijne? Weinig programma’s kunnen dat goed inschatten, maar Shannon-a programma’s het slechtst. Klassiek voorbeeld is het spannen van een net rondom deze programma’s: een matnet.

Shannon-b programma’s hebben andere problemen die nog veel groter zijn. Weliswaar is het herkennen van mat niet zo’n probleem, noch het vinden van een diepe ingewikkelde combinatie, maar wat wel erg problematisch is, is het missen van een goede zet, of het missen van de diepte die nodig is om te zien dat een bepaalde pion in het centrum ‘hangt’. Zij zullen bijvoorbeeld een losse pion die door de menselijke tegenstander aangevallen wordt tot het bittere eind verdedigen, al betekent dit vaak dat de stelling van deze b-programma’s in een totale puinhoop verandert, waardoor zij dus letterlijk tot het bittere eind verdedigen.

Zoek de display

deepblueschermTen derde dient u voor de partij het display van de computer goed te bekijken (links het scherm van Deep Blue). Er wordt altijd een beste zet bijgehouden, altijd een score van de stelling en altijd een zet die voor u het beste wordt beschouwd. Kijkt u goed op welke plek van het display deze dingen zich bevinden.

Ten vierde is het handig om een stopwatch mee te nemen waarop ook secondes worden aan gegeven. Bij een snelschaak of rapidpartij is dit natuurlijk moeilijker, maar niet minder waar. Een computer heeft als groot voordeel op de mens dat hij kan denken in de tijd van de tegenstander. In de praktijk gokt een programma wat voor zet u doet. Als u dan deze zet doet, denkt het programma meestal niet veel langer na en voert de door hem bedachte zet uit. Als de computer misgokt, dan wordt weer de normale denktijd verbruikt. Als u bijhoudt hoeveel tijd een programma denkt, weet u hoeveel er minimaal voor de volgende zet gedacht wordt. Van het aantal secondes dat u verwacht dat het programma denkt, trekt u er een paar van af: voor de opening zal een programma meer tijd gebruiken van voor het eindspel.

Er zijn slechts twee redenen waarom een programma langer denkt:
a) het programma ziet dat de zet die hij wil spelen een stuk slechter is dan hij had verwacht.
b) het programma ziet een zet die een stuk beter is, maar heeft nog niet de hele variant ervan berekend.

Reden b) zult u wellicht niet zo snel opmerken in tijdverbruik, maar met name reden a) kan sommige programma’s dwingen erg lang te peinzen. U zou dan met een grote boog om de computer heen kunnen lopen, om dan achterlangs teruglopend een blik te werpen op het beeldscherm. Met name de score van de stelling, en de beste zet voor u is zeer interessant. U krijgt niet vaak de gelegenheid om te weten wat de tegenstander ervan vindt! Ik heb het echter nog niet meegemaakt dat een sterk programma langer dan pakweg tien minuten heeft gedacht. Een minuut meer denken is al reden genoeg voor u om te zien of er niet iets moois in zit.

Ook moet u niet klakkeloos de beste zet spelen, gevonden door het programma voor u: die is gebaseerd op een kleinere diepte dan de diepte waarop zijn zet is gebaseerd, dus als u altijd de beste zet zou spelen die het programma voorspelt, dan verliest u altijd (een programma speelt dan tegen zichzelf, alleen voor zet a rekenend op plydiepte n, voor zet b rekenend op plydiepte n-1).

Dit wetend kan de partij beginnen.

De contemptfactor

Let u goed op wanneer het programma stopt met a tempo spelen. Zo lang er a tempo wordt gespeeld door het programma, zit deze in zijn boek. Opening is belangrijk. Hier moet u geconcentreerd zien te spelen. Computers zijn erg slecht in openingsspel, het is een goed idee om een bekend idee op het bord te brengen, wat toch niet in de boekjes staat. Dus zetverwisselingen en het op het bord brengen van bekende structuren gaan voor de juiste zetvolgorde, of de meest correcte variant.

Stel u komt heel aardig tegen een erg sterk programma uit de opening. U heeft bijvoorbeeld erg veel ruimte en een op de korte termijn overwegende positie. Wat ook uitstekend is, is dat u een pion meer heeft. U ziet dat op de lange duur het moeilijk wordt, of u bent al te vaak slachtoffer van een programma geworden. Dit soort gevallen moet u voorbereiden door te vragen aan de operator wat het programma voor score aan de stelling geeft.

Als de operator vergeetachtig is, dan staat namelijk de contemptfactor erg laag. Dit is de remisemarge. Staat deze bijvoorbeeld op 0.25 pion dan zal de computer remise nemen indien hij de stelling slechter vindt dan -0.25. Natuurlijk biedt u dan geen remise, want dat neemt de operator nooit aan. Wat u wel kunt doen is zetten herhalen. Bijvoorbeeld nadat u een mooie stelling heeft bereikt net na de opening. Misschien heeft de computer blindelings volgens openingsboek een pion geofferd, maar ziet zelf niet dat het programma compensatie heeft. De computer zal braaf zetten herhalen zodra deze daartoe de kans krijgt.

Begint u eens met de beginstelling. Haal een pion weg op d7 en begin met wit. Na 1.Pf3 en 2… Pg1, pakken zowel Genius als Fritz dankbaar het geschonken halfje. Mijn vermoeden bestaat. dat de meeste programma’s in deze stelling snel remise spelen, terwijl gezien het geclaimde eloverschil (in snelschaak heeft u wellicht meer dan 750 elopunten minder dan Fritz’ TPR tegen Kasparov) een pion voorgift helemaal niet zo vreemd is!

Ervaren operators tuinen natuurlijk niet in die truc en zetten de factor erg hoog. Ik ben echter nog maar erg weinig programma’s tegen gekomen waar de contemptfactor meer is dan drie kwart van een pion. Dat is ook wel logisch: anders zal het programma u liever een vrijpion meer geven in het eindspel dan koning tegen koning te nemen!

Korte termijn en lange termijn

Ook kan ik u garanderen dat na 1.e4 e5 2.Lc4 Pf6 3.d3 Pc6 4.Pc3 Lc5 5.Le3 elke computer zal willen slaan op e3 met Lxe3. Elke computer vindt een dubbelpion slecht. Weliswaar is het inderdaad een goede zet in deze positie, maar in allerlei soortgelijke posities zal een programma ook willen slaan ten einde een dubbelpion te creëren. Dit leidt in tot de grootste structurele zwakte van programma’s: de pionnenstructuur.

Een mens zou handig gebruik kunnen maken van de korte termijn die sommige voordeeltjes opleveren. U zou bijvoorbeeld na lange rochade en korte rochade van een programma een pion op g2 en/of h2 in kunnen laten staan, waarna u een tiental zetten later met een monster van een aanval bezig bent op de koningsvleugel.

In de volgende correspondentiepartij Diepeveen – HH Hage vertonen de zetten die de zwart speler speelt opvallend veel overeenkomst met de hebberigheid van de Chessmachine, nog maar kort geleden op dat moment een sterk (hardwarematig ondersteund) programma. Het is niet zeker dat de heer Hage met een de Chessmachine Schroder speelde na de opening, ook beschuldig ik hem er niet van, maar ik laat de partij zien omdat een computer het met zwart net zo gespeeld had. Hebberig hier en daar een pion eten, en vervolgens kansloos in een matfuik lopen, omdat er op de korte termijn voordelen werd gespeeld (loperpaar, pion meer).

Vincent Diepeveen – H.H. Hage
Correspondentiepartij, kwalificatiegroep NBC

1.e4 c5 2.Pf3 Pc6 3.d4 cxd4 4.Pxd4 Pf6 5.Pc3 d6 6.Lg5 e6 7.Dd2 Le7 8.O-O-O O-O 9.f4 Pxd4 10.Dxd4 h6 11.Lh4 Da5 12.Lc4 e5 13.fxe5 dxe5 14.Dd3 Lg4 15.Lxf6 Lxf6 16.Tdf1 Tot zover de theorie.
16…Lg5+ 17.Kb1 Tac8 18.h4 Le7 19.Pd5 Dc5 20.Lb3 Le6 21.g4 Tfd8 22.g5 hxg5 23.hxg5 Lxg5
diadiephage1.

24.Df3!! Dit missen de meeste programma’s. Zij willen allemaal 24.Dg3? of 24.Th5? spelen.
24…Tc6 Dreigt f6.
25.Dh5 Lh6 26.Dxe5 Lxd5 27.Lxd5 Ook deze zet blijkt moeilijk voor computers. Pion weggeven: nooit!
27…Dxc2+ 28.Ka1 Tc7
.

.

.

diadiephage2.

29.a3! Wits stelling is nu een ideale aanvalsstelling: alle stukken die hij heeft zijn dreigend gericht op de koningsstelling en er dreigt Th6.
29…b5

.

.

.

.

diadiephage330.Txh6!! Vreemd genoeg missen een aantal programma’s ook deze tactische zet.
30…gxh6 31.Df6 Dit wint eenvoudig, maar misschien dat ook 31.Tg1 geforceerd wint.
31…Txd5 32.exd5 En opgegeven, zwart moet op zijn minst een toren weggeven wil hij niet mat gaan.

1-0

.

.

.

Een groot probleem waar de programmeurs ook mee kampen is rochade: wanneer kort en wanneer lang te rocheren? Doordat rocheren veel punten oplevert voor hun programma zal een programma graag rocheren. Ik durf het nog veel sterker te stellen: doordat programma’s voor rocheren een berg punten krijgen en de koning na korte rochade vaak ogenschijnlijk meer door zijn pionnen beschermd wordt (waarvoor punten weggegeven worden: pion voor koning … reken je maar weer rijk, jongen!) kunt u er voor de partij al zeker van zijn dat elk programma kort rocheert. De enige uitzondering is dat er in het openingsboek staat dat er lang gerocheerd dient te worden.

Dit doet een programma doordat hij op grond van heuristieken denkt. Heuristieken zijn algemene regeltjes die vaak goed zijn, maar niet altijd. Zeer bekende heuristieken bij programma’s zijn:

  1. materiaalverschil
  2. rochade
  3. dubbelpion
  4. afstand stukken tot koning (dit is een belangrijke!)
  5. activiteit toren en dame
  6. gepend stuk
  7. hoe verder een pion des te beter
  8. meer punten naarmate meer in centrum, afhankelijk van het aantal stukken op het bord
  9. zwakke, geïsoleerde en achtergebleven pionnen

Veel meer kennis hebben de programma’s echt niet terwijl ze zoeken! Sterkere programma’s hebben vaak maar heel weinig meer dan dit. Het belangrijkste verschil zit hem in het aantal punten dat ze per onderdeel krijgen. Vandaar dat u, als u Fritz3 laat rekenen na het spelen van 1.h4 in de hoofdvariant vaak onzinnig met zijn loper ziet heen en weer spelen. Dit om te voorkomen dat de tegenstander een bepaald stuk of pion kan ontwikkelen, terwijl de loperzet tot iets dwingt.

Enkele veel voorkomende fouten

Wat programma’s verrassend genoeg dien ten gevolge ook vaak fout zullen doen is het dekken van de eigen stukken. Natuurlijk dekken ze een aangevallen zwakke pion, tactiek is nu net hun sterke punt, maar als er meerdere manieren zijn om deze pionnen te dekken, dan zullen ze ongetwijfeld vaak de fout in gaan.

Nu hoort u mij maar al te vaak Fritz aan halen, maar bedenkt u dat ik met mijn beginnende programma vaak met nog veel grotere problemen zit. Wat vindt u bijvoorbeeld van een stelling zonder enige dreiging, waarin mijn programma zo maar een stuk er tegenaan gooit? Het zou mij niet verbazen als mijn programma na 1.Pc3 a6 2.e4 b5 in de toekomst zou besluiten tot 3.Pxb5 omdat er dan een verbonden vrijpion op a2 staat, een loper druk uitoefent tegen de zwarte koningsstelling, de toren op al ideaal staat, en binnen de kortste keren het centrum in handen is van wit, naast de enorme voorsprong in ontwikkeling die wit al heeft. Dat soort kunsten heeft mijn programma al zo vaak laten zien dat ik niet eens met mijn ogen zou knipperen…

De andere kant is weet natuurlijk een programma met veel tactisch vernuft zichzelf een goede vrijpion te verkrijgen en daardoor de partij te winnen. Over het algemeen zal dit meer voorkomen, waardoor een schaakprogramma een geduchte tegenstander is.

De meest gemaakte fout waar ik u voor wil waarschuwen, is het accepteren van een stelling tegen de computer waarin de computer positioneel beter staat, terwijl u voldoende compensatie lijkt te hebben op tactisch gebied. U heeft bijvoorbeeld een pion geofferd. Voor dit soort stellingen moet ik u waarschuwen. Geef een programma nooit een positioneel betere stelling want hij zal zich eruit rekenen met uitzondering van vier soorten stellingen (waarin het programma positioneel beter staat):

  1. u heeft een geweldige mataanval,
  2. uw vrijpionnen zijn niet te stoppen,
  3. uw tactisch voordeel is een lange termijnvoordeel,
  4. u weet zeer zeker dat uw tactisch overwicht de doorslag zal geven.