dinsdag 19 juni 2018

Minachting

Eerder dit jaar schreef ik dat het een grote fout zou zijn om Stockfish naar de prullenmand te verwijzen na zijn nederlaag tegen Alpha Zero (zie analyseren met de computer deel 3). In het voorbije TCEC seizoen 11 werd voor iedereen duidelijk dat het programma in de nabije toekomst nog steeds een zeer belangrijke rol voor het schaken zal spelen. Eerst kwalificeerde Stockfish zich voor de superfinale met 7 punten voorsprong op de nummer 2 Houdini. Daarna zagen we een zeer opmerkelijke in deze tijd van zeer geadvanceerde programma's eenzijdige superfinale. De overtuigende eindoverwinning van Stockfish op Houdini met 20 overwinningen tegen slechts 2 nederlagen (verder alleen maar remises) was er eentje die we in het laatste decennium niet meer hadden ontmoet.

De suprematie van Stockfish kwam misschien nog het meest tot uiting in de dubbele overwinning tijdens de superfinale wanneer de Mar del Plata variant van het Koningsindisch moest worden gespeeld. Eerst won Stockfish met wit.
Daarna zoals alle gekozen openingen in de superfinale, werden de kleuren verwisseld voor de programma's (zo wordt zeker geen programma bevoordeeld door de openingskeuze). Opnieuw won Stockfish dus deze keer met zwart.
Achteraf was er natuurlijk heel wat speculatie hoe Stockfish zoveel vooruitgang op relatief korte tijd heeft kunnen maken. Hierbij werd al snel de focus gelegd op een nieuw parameter van Stockfish: de contempt-factor of vertaald naar het Nederlands: minachting. Dit vergt meer uitleg. Vooreerst nieuw is die parameter helemaal niet. Een contempt-factor bestaat al heel lang maar pas recent hebben de programmeurs van Stockfish beslist om er intensief gebruik van te maken. Het voordeel is ook bijlange niet altijd duidelijk. In het vorige TCEC seizoen maakte Stockfish iets te veel remises tegen zwakkere programma's zodat het de superfinale miste. Als remedie werd het programma voor het nieuwe seizoen aangepast om zetten te spelen die ruil zoveel mogelijk vermijden dus langer de spanning in de stelling houden en zo meer kansen creëren op fouten. Dus af en toe worden zetten gespeeld die Stockfish niet als beste beschouwt binnen een bepaalde marge (bepaald door de contempt) om meer winstkansen te behouden. Deze strategie is trouwens welbekend en aanvaard onder schakers zie mijn artikel spelen op de man maar computerschaak is heel verschillend.

De winst op de zwakkere programma's mag niet ten koste gaan door verlies tegen de sterke programma's. Zo wordt tegenwoordig driftig geëxperimenteerd met een dynamische contempt i.p.v. een puur statische zie tests op Stockfish. Hierin wordt bijvoorbeeld de grootte van de minachting aangepast volgens de evaluatie van een stelling. Je kan afruil sneller toelaten wanneer het programma zijn stelling als slecht beoordeelt of net omgekeerd.

Computerschaak blijft zich dus verder ontwikkelen. Trouwens verwacht niet dat Stockfish in de toekomst alleen zal heersen. Zo was er vorige maand groot nieuws voor grote concurrent Komodo. Het programma werd opgekocht door chess.com zie nieuws en dat zal zeker weer een boost geven. Dit laatste blijkt al waarheid te worden in het lopende TCEC seizoen 12 waarin Komodo eerst al de kwalificatie won maar ook de superfinale begon met een overwinning op Stockfish.

Fans van computerschaak hebben dus zeker weer wat om naar uit te kijken. Echter computerschaak blijft desondanks een nichemarkt wat we vertaald zien in de aantallen bezoekers. Stockfish is vele honderden punten sterker dan de regerende wereldkampioen Magnus Carlsen maar toch worden Magnus partijen 1000 keer meer bekeken. Voor de modale schaker is de computer bijna uitsluitend een middel om een oordeel van een stelling te krijgen of ruimer genomen analyses te maken. Bijna iedereen kiest hiervoor het sterkste programma en daarbij is het dan ook nog mooi meegenomen dat vandaag toevallig dat programma dus Stockfish ook gratis is.

Echter wat weinigen weten is dat je met de laatste versie van Stockfish moet opletten in de analyse. De evaluaties zijn zonder de correcte interpretatie een stuk minder nauwkeurig dan eerdere versies van hetzelfde programma of t.o.v. andere topprogramma's. Dit komt door de contempt-factor die de evaluaties beïnvloedt. Wanneer wit afruil vermijdt door een zet dan wordt een bonus gegeven van 0,2 voor wit. Omgekeerd wanneer zwart afruil vermijdt wordt een negatieve bonus van -0,2 gegeven voor een zet. Dit geeft als vreemde effect dat de evaluatie zeker in de beginfase voortdurend op en neer gaat met bijna een halve pion zelfs wanneer er geen fouten worden gemaakt. Dit wordt heel visueel met een evaluatie-profiel gemaakt door de Fritz-interface op een partij waarin geen grote fouten werden gemaakt.
Stockfish 9 met contempt (10 seconden per zet)









Deze schommelingen in de eerste 20 zetten ontbreken wanneer we van dezelfde partij een evaluatieprofiel door de Fritz interface laten maken maar waarbij we de contempt van Stockfish verwijderd hebben. Onderstaande screenshot toont dit opnieuw heel duidelijk aan.
Stockfish 9 zonder contempt (10 seconden per zet)







Dit is ons normaal evaluatie-patroon die we als basis nodig hebben voor het commentariëren van partijen zie leestekens of om diepe openingsanalyses te maken zie schaakopeningen studeren deel 2. In de analyse willen we in de eerste plaats een objectief oordeel over hoe sterk de zetten zijn en niet welke zetten in computerschaak de beste winstkansen zullen geven.

De contempt of minachting uitschakelen kan door in de Fritz-interface naar de instellingen te gaan van Stockfish. Je moet enkel de contempt-waarde van 20 naar 0 resetten zie hieronder screenshot.
Stockfish parameters
Het enige probleem van deze oplossing is dat de Fritz-interface niet toelaat om de nieuwe instelling als standaard te bewaren. Dus telkens je Stockfish opstart, moet je het opnieuw doen. Dit is ok als je maar heel sporadisch een keertje Stockfish gebruikt maar als intensieve gebruiker is het erg vervelend. Op het internet ging ik dan ook op zoek naar een beter alternatief die ik uiteindelijk vond op stockfish 9 for analysis. Daar kan je een speciaal gecompileerde versie downloaden van Stockfish om te gebruiken in de analyse. Als je die versie gebruikt dan hoef je helemaal niet meer telkens de contempt-parameter op 0 te zetten.

Het is niet de enige beperking i.v.m. standaardinstellingen van de Fritz-interface. Zo slaag ik er niet in om het programma te laten onthouden geen naam van de commentator toe te voegen. Telkens ik de analyses bewaar, moet ik handmatig mijn naam verwijderen. Dit is slechts 2 seconden werk maar in een paar maanden tijd gebeurt het soms 1000 keer dus dan loopt het tijdverlies toch op.
Nog een ander tekortkoming is in de standaardinstellingen van de nieuwe toepassing automatische analyse van partijen gespeeld op playchess. Ik speel de laatste tijd weer heel wat blitz online (bij gebrek aan serieuze competitie). Echter wanneer ik de openingen van die blitzpartijtjes daarna wil checken met een schaakprogramma draaiende op de Fritz interface zie mijn artikel de (on-)zin van blitz, word ik steeds gestoord door pop-up schermen over tactische blunders gespot door de computer-trainer. Het is vandaag onmogelijk om die trainer definitief uit te schakelen.





Er bestaan vandaag andere interfaces dan die van Chessbase voor schaakprogramma's maar geen enkele kan op basis van functionaliteit concurreren. Chessbase heeft dus vandaag een absoluut monopolie en dit is zeker niet goed voor de eindgebruiker. Vandaag zien we dat de klemtoon uitsluitend ligt op steeds meer functionaliteit voor het brede publiek om hen te overtuigen nieuwe versies te blijven kopen van hun producten. Het optimaliseren van bestaande functionaliteit voor de weinig intensieve gebruikers (slechts enkele percenten van het klantenbestand) is financieel niet rendabel. Bovendien zijn weinig of geen van de Chessbase programmeurs vandaag actieve sterke tornooispelers zie o.a. interview met Matthias Wuellenweber in 2018. Professioneel schaken en programmeren valt dan ook bijzonder moeilijk te combineren.

Brabo

18 opmerkingen:

  1. Goede tip. Ik gebruik nu ook de Analysis versie van Stockfish 9. Wel zuur dat ik dus al maanden lang partijen analyseer met 0.2 afwijking. Dat hadden ze wel eens duidelijk op de Stockfish site mogen zeggen!

    BeantwoordenVerwijderen
    Reacties
    1. Ik vind het vreemd dat je al maanden lang analyseert met de 0,2 afwijking. Je hebt zelf nog gereageerd op het artikel https://www.schaaksite.nl/2018/02/23/stockfish-9-sterker-door-minachting-tegenstander/ waarin duidelijk gewaarschuwd werd voor de contempt.

      Verwijderen
    2. Dat is er toen bij ingeschoten. Nu werd ik pas weer wakker geschud.

      Verwijderen
  2. https://www.schaaksite.nl/2018/06/20/stockfish-9-let-op-contempt/

    BeantwoordenVerwijderen
    Reacties
    1. Zo krijgt mijn blog toch nog weer eens een link op schaaksite sinds ik gevraagd werd om er zelf geen meer te plaatsen. :)

      Verwijderen
    2. Mijn gok is dat jij best een link mag plaatsen. Ooit zag ik in een oude reactie van jou iets van 5 links (al dan niet relevant) dan kan ik me voorstellen dat Schaaksite niet als springplank gebruikt wil worden. Al zie ik bij jou niet in waarom niet, want jij geeft gratis aan de wereld. Je verkoopt niks.

      Verwijderen
  3. Ik kreeg van Jaap ook nog de vraag of er een aangepaste app was voor Stockfish 9 zonder contempt. Ik kon er geen vinden maar ik vermoed dat de ontwikkelaar van de app "Analyze this" wel bereid zal zijn om snel een update te maken. Ik vond zijn emailadres op https://www.amazon.com/Asim-Pereira-Analyze-This-Chess/dp/B008DJF5IC, namelijk pereiraasim@gmail.com

    BeantwoordenVerwijderen
    Reacties
    1. Heb je die meneer al gemaild? Anders doe ik het. Zelf heb ik al wel de eigenaar van mijn favoriete Tarrasch Gui gemaild.

      Verwijderen
    2. Nee, ik gebruik nauwelijks schaak-apps en maak alle serieuze analyses op de PC. Laat het op deze blog weten als je progressie gemaakt hebt met de app-ontwikkelaar want ik vermoed dat zeker jongere schakers frequenter schaak-apps gebruiken.

      Verwijderen
  4. Omdat ik meerdere reacties zie op andere sites over de contempt die verwarring zaaien, wil ik toch nog een aantal zaken hierover aanvullen.
    De algemene regel was en is nog steeds: wijzig geen standaardinstellingen van een schaakprogrammma. De programmeurs hebben duizenden testen gemaakt om uit te zoeken welke instellingen voor het programma het best zijn dus elke verandering leidt bijna gegarandeerd naar zwakker spel. Bovendien weet men als gebruiker totaal niet wat de exacte impact is op het programma wanneer met een instelling aanpast. Tenzij je de code van het programma in detail kent, is iets aanpassen gewoon gokken.

    M.a.w. het is hoogstuitzonderlijk dat ik op deze blog aanraad om de contempt aan te passen van 20 naar 0. Echter de abnormale schommelingen in de evaluatie aan het begin van de partij en het feit dat na 1.c4 de computer de stelling als lichtjes beter voor zwart aanduidt, zijn voor mij voldoende bewijsmateriaal dat een aanpassing hier noodzakelijk is om nauwkeuriger te analyseren.

    Desalniettemin geef ik toe dat ik niet weet wat er exact gebeurt met het programma nadat de contempt op 0 is geplaatst. In elk geval ben ik niet akkoord met de uitleg van arjo1982 op schaaksite alsof het een impact zou hebben om de lengte van de varianten en hoe concreter het spel wordt. Dat lijkt mij puur iets dat hij uit de duim heeft gezogen.

    Nee ik vermoed eerder dat de contempt iets is die enkel invloed heeft op het ruilen. Ik geef een hypothetisch voorbeeldje. De computer denkt over de beste zet na 1.e4
    1...e5 2.Pf3 Pc6 3.Lb5 a6 4.Lxc6 dxc6
    1...e6 2.d4 d5 3.Pc3 Pf6 4.e5 Pfd7
    In variant 1 wordt een evaluatie getoond van +0,1
    In variant 2 wordt een evaluatie getoond van +0,2
    Nu krijg je -0,2 bonus (want voor zwart) wanneer er geen stukken in de variant zijn afgeruild. Dus dit betekent hier dat enkel variant 2 de bonus krijgt. Voor zwart wordt de zet met de laagste score geselecteerd dus met de contempt =20 wordt dit variant 2. Zonder contempt wordt het variant 1.

    De evaluatie laten afhangen van hoeveel er geruild wordt, is nonsens vanuit theoretisch perspectief. In de praktijk zien we echter wel een positieve balans voor Stockfish.

    BeantwoordenVerwijderen
    Reacties
    1. "In elk geval ben ik niet akkoord met de uitleg van arjo1982 op schaaksite alsof het een impact zou hebben om de lengte van de varianten en hoe concreter het spel wordt. Dat lijkt mij puur iets dat hij uit de duim heeft gezogen."

      Misschien moet je eens wat beter lezen...
      Er staat: "MIJN ERVARING IS dat met de contempt ietsje hoger het spel net wat concreter word"...

      Dit is dus enkel een (subjectieve) waarneming...
      Om dit dan gelijk hier als "uit de duim gezogen" neer te zetten vind ik niet zo netjes...

      Verwijderen
    2. Ik had het misschien iets minder scherp moeten schrijven maar ik blijf erbij dat het onzin is. Een hogere contempt leidt net tot minder concreet spel doordat de stukken langer erop blijven en er dus meer gemanoeuvreerd wordt. Ruilen is meestal concreter want het spel is dan vaak meerdere zetten geforceerd.

      Verwijderen
  5. Goed nieuws. De programmeur achter Analyse This gooit de Contempt factor eruit per direct. Later zal er een optie komen om Contempt apart aan te zetten heeft de baas me per mail laten weten

    BeantwoordenVerwijderen
  6. Zeer interessant artikel. Als iemand die graag opening bestudeerd aan de hand van engines, is deze tip van goud waard. Ik gebruik vanaf nu ook de 'geen contempt' engine.

    BeantwoordenVerwijderen
  7. Ik heb op correspondentieschaak aantal partijen gespeeld met contempt 20, ondanks dat ik heel laat erachter kwam dat de contempt uit moet worden gezet heb ik die partijen gewonnen. Andere partijen deels met 20 contempt gespeeld en toen heb ik hem uitgezet 0 contempt wordt nauwelijks gewonnen. Ik merk ook toen ik deel van de partij met 20 speelde en daarna met 0 dan verandert hoop in de evaluatie, dan is winstkans al meteen verspeeld tenzij doorgaan met 20 spelen. Ik weet eigenlijk nog niet wat beste is.

    BeantwoordenVerwijderen
    Reacties
    1. Als je de engine een partij laat spelen dan is het sowieso beter om de contempt aan te laten. De contempt afschakelen zal inderdaad tot minder winstpartijen leiden.
      Met analyseren wordt in het artikel bedoeld, het manueel vergelijken van computerevaluaties tussen zetten waarbij wit aan zet is en zetten waarbij zwart aan zet is. Dus indien je nooit of zelden zulke manuele vergelijkingen maakt dan heeft het heel weinig zin om de contempt uit te schakelen.

      Verwijderen
    2. Ik denk ook wel dat interessant is om af en toe met contempt te werken. Met de correspondentieschaak gaat niet altijd om de engine maar interactie tussen kennis van mens en engine kan je dan juist heel ver komen dan alleen maar blind engine met of zonder of gedeelte contempt volgen. Daar is de bedenktijd ook voor, blijven analyseren.

      Verwijderen