woensdag 13 maart 2019

Lc0 vs Stockfish superfinal TCEC seizoen 14

1. Inschatting kansen Leela vooraf

Vooraf dacht ik dat SF redelijk ruim favoriet was. Daar had ik enkele argumenten voor: de rating van Leela (Lc0 v0.19) op ccrl40 (Ccrl) was niet zo fantastisch: het programma stond niet eens in de top-100 (versie v0.20 schopte het tijdens de match tot een 45ste plaats). Ten tweede, op klassieke hardware scoort Lc0 heel zwak in vergelijking met de klassieke engines. Op zich niet verwonderlijk: Lc0 is eerder geschreven voor de snelle chips op grafische kaarten (GPU's), in plaats van voor de CPU's. Op een gewone CPU kan Leela niet zijn volle potentieel ontwikkelen, net zoals Fritz3 vroeger niet tot volle bloei kwam wegens een aanvankelijk gebrek aan RAM voor hashtabellen in de computers van die tijd. Zie in dat verband ook het artikel van Frederik Friedel op Chessbase (the adventure of chess programming part 3). Tenslotte vond ik ook dat het programma taktisch nog niet matuur genoeg was - vooral gestaafd door de prestaties in de voorgaande tcec competities, en occasioneel eigen gebruik. En dan een match tegen de onbetwiste leider in ccrl40…

2. Scoreverloop van de match

Het verloop van de match dan: aanvankelijk was SF duidelijk de betere engine, en nam tot tweemaal toe een voorsprong. Eerst 2-0 na amper tien partijen, maar na partij 13 stond het alweer gelijk. Daarna won SF 3 partijen na elkaar (!), maar ook nu duurde het niet lang eer Leela gelijk maakte: na partij 29 stond het weer gelijk. En toen nam Leela weer het voortouw: partij 49 en 53 werden door Leela gewonnen. Een spannende match met wisselend scoreverloop: dat hadden we al lang niet meer gezien in computerschaak. Misschien zelfs niet sinds de Braingames "kandidatenmatch" tussen Fritz en Junior in Cadaques 2001, toen die speelden om de kans om tegen Kramnik uit te komen. Junior kwam toen bijna "gratis" 5-0 voor, jawel, na vijf partijen, maar Fritz maakte in de tweede helft van de match (over 24 partijen) weer gelijk en won de play-off met 2-0.

Maar de verliespartijen waren heel pijnlijk voor Leela - het deed een beetje denken aan de match Botvinnik-Bronstein: Bronstein met diepzinnig schaak, nieuwe concepten, die op een andere manier schaak speelde, tegen een Botvinnik die na het afbreken vaak nog remise haalde en zijn winstpunten eerder moeizaam boekte. Leela gooide zo enkele halve punten in één zet weg door gebrek aan taktische kennis. Een goed voorbeeld is bv de 20ste partij, waarin Leela de verliezende zet (39...Tb6-d6) speelt met een evaluatie van 0.26, maar SF antwoordt met 40.Tg3+ en meteen al +8.56 geeft - misschien wel de "bom" van de match. Echt remise was het misschien niet (SF's evaluatie stond al op +2.50), maar het zou ook niet bij deze ene blunder blijven. In de partij erop was het weeral raak: in een gelijke stelling blundert Leela weer en SF slaat onmiddellijk toe met een inslag op f2 (-4.46). Partij 66: weer van dat. Een opmerkelijk verlies was de 85ste partij, de laatste besliste partij van de match: toen Leela nog dacht dat het remise ging worden (een overschatting van een ver opgerukte vrije a-pion), vond SF al een tijdje dat het hopeloos was voor wit - toen het "besef" bij Leela doordrong, sloeg de evaluatie meteen om naar -14.28 (SF zat toen al aan een mat in 41…). Éénmaal zelfs vergooide Leela zelfs een zekere winst (65ste partij), daar waar SF (met 6-men tbs) al 100% zeker was van verlies. Een gevolg van de lage zoekdiepte en minder intensief gebruik van de tbs'en. Tegen partij 80 stond het weer gelijk.

3. Learnt lessons over openingen, speelstijl, en andere aspecten

Naast de indrukwekkende prestaties in middenspel (Leela) en eindspel (Stockfish), waren er ook enkele belangrijke learnt lessons betreffende de openingen.
Een eerste hoogtepunt was partij 11, waarin Leela vanuit de opening (Frans) het voordeel met wit uitbouwde en niet meer omkeek. Dat was zeer indrukwekkend, vooral omdat de evaluatie van Leela meer dan 10-20 zetten voor liep op die van SF - het was een beetje grootmeester tegen amateur - alleen, die amateur was wel van supergrootmeestersterkte. Die evaluatie van Leela is trouwens iets waar je voorzichtig mee moet zijn: al in de eerste partij schiet de evaluatie van Leela op zet 104 omhoog naar 2.65, terwijl er voor SF dan al heel lang niets meer aan de hand is. Hetzelfde gebeurde in partij 9: plots springt Leela's evaluatie naar +2.24, wanneer hij de dames kan ruilen en in een lopereindspel een vrije a-pion heeft - voor SF is er niets aan de hand, en de partij wordt toch remise. Zie ook de 85ste partij: heeft Leela teveel vertrouwen in vrije a-pionnen? Er zijn nog talrijke andere voorbeelden van een te optimistische evaluatie.

Zoals gezegd, de variatie in de openingen was wel goed, maar computers lijken er een handje in te hebben om zelfs de scherpste openingen te laten verzanden in lange, geforceerde remisevarianten. Dat er ondertussen wel mooie middenspelen de revue passeren, is meegenomen, maar als SF na bv 1.e4 c5 2.Pf3 d6 3.d4 cxd4 4.Pxd4 Pf6 5.Pc3 a6 6.Le3 e6 7.a3 b5 8.g4 Lb7 9.Lg2 h5 10.g5 Pg4 11.Lc1 Db6 zowel met wit als zwart relatief snel zijn evaluatie naar 0.00 laat zakken, is perfect spel plots minder interessant geworden. Hetzelfde scenario in de 5de en 6de partij: SF ziet snel remise opduiken in het Konings-Indisch.

Met het koningsgambiet kon Leela met wit niet veel aanvangen en verloor - SF hield met wit dezelfde stelling net remise. Hoewel één paar partijen een opening niet kan beoordelen, is het toch symptomatisch dat dit net het koningsgambiet overkomt: is de romantische opening dan toch enkel goed als verrassingswapen? Zoals reeds vermeld, was de Franse partij (partij 11.1) een hoogtepunt in de match voor Leela - nu was het SF die met wit niet dezelfde kwaliteit op het bord kon brengen. Het Frans lijkt Leela te liggen, want ook in partij 35 bracht het SF in de opening in de problemen.

De winst van Leela in het Nimzo-Indisch was eerder te wijten aan enkele middenspelfoutjes van SF dan aan de opening. SF vernietigde de Pirc in partij 16 quasi vanuit de opening. De Pirc komt trouwens niet goed uit deze match: in partij 55 heeft SF alle moeite om wits initiatief in een andere variant in te dijken. Het wordt de langste partij uit de TCEC-geschiedenis: 264, eer Leela instemt met remise. In partij 71 zorgt de Pirc voor een dramatisch hoogtepunt: Leela met wit houdt zwart compleet in een wurggreep, maar raakt niet door de verdediging van zwart, ondanks een volledige dominantie van het bord. Wit lijkt alles te hebben - zwart moet zelfs met zijn koning uitwijken naar de a-kolom - maar het mag niet baten.

Algemeen kan gesteld worden dat de kleine openingen niet al te best uit deze test kwamen, noch de zijvarianten van grote openingen: zo vallen er wel een reeks remises in zijvarianten, maar dan valt het wel op dat het voordeel van wit pas verzandt na zet 25 of zo. Een voorbeeld is partij 23.

Een opmerkelijke winst boekt Leela dan weer met de witte Stonewall in partij 25. Een Philidor/Leeuw-opening in partij 27 wordt dan weer in de vernieling gespeeld door Leela - één van de zeldzame momenten waarin Leela SF weg krijgt van zijn 0.00 evaluatie en het punt verdiend naar zich toehaalt.

Partij 59 & 60 tonen aan wat "scherpe" varianten voor mensen inhouden voor computers: de Siciliaanse Draak leidt tot twee korte remises. Zelfs het Spaans moet onder het mes, maar overleeft de 5.76 evaluatie van Leela in partij 75. Het einde van de match lijkt op een voetbalpartij, waarin ploeg A wel veel balbezit heeft, maar ploeg B tenslotte in het slotkwartier twee keer countert en scoort.

4. Wat had beter gekund in de match set-up?

In tegenstelling tot vorige tcec superfinales, leek deze match van 100 partijen voor het eerst "te kort". De engines waren zeer aan elkaar gewaagd, en na 70 partijen was het verschil nog altijd maar één punt. Na 100 partijen was dat ook het finale verschil: 50,5-49,5. Ook de openingen konden hier en daar beter. De aanpak was meestal om redelijk neutrale stellingen na een zet of vijf te laten uitspelen, afgewisseld met een diepere openingslijn (die werden trouwens random gekozen uit een openingsboek van Jeroen Noomen). Deze diepere openingslijnen leverden zeker niet de meest interessante middenspelen op. Het probleem met (voor mensen) leuke openingen (zoals Marshall-gambiet, Sic Draak, Botvinnik-gambiet, koningsgambiet, Albin tegengambiet, Sveshnikov, Sämisch KID, Sevilla-variant Grünfeld, …) dat die ofwel redelijk snel uitvlakken (wegens een te geforceerde hoofdlijn) of zo goed als zeker uitmonden in winst/verlies voor wit/zwart (eveneens wegens een te groot nadeel voor één of andere partij). Wat voor mensen complex is, is niet noodzakelijk complex voor programma's. Niettemin vond ik de kritiek om toch maar wat meer beginstellingen uit grootmeesterpartijen te nemen terecht; het zou de "representativiteit" en het "nut" (voor de praktische speler) wat groter gemaakt hebben. Misschien voor de superfinale 15?

5. Nog zaken die beter hadden gekund?

SF had het competitieve voordeel dat het kon werken met 6-men tablebases (tbs), Leela slechts met 5-men. Dat verschil betekende in één partij wel degelijk het verschil tussen winst en remise, en had dus - met gelijke wapens - kunnen leiden tot een 50-50 eindstand. Nu programma's al vanaf de opening beginnen de eindspel tbs'en te consulteren (jawel), is dit zeker een punt van aandacht. En wanneer we binnen een jaar of tien met 8-men tbs'en gaan zitten (en we dus o.a. alle toreneindspelen met elk 2 pionnen gaan opgelost hebben - leuk!), blijft de vraag actueel. Of misschien is de omgekeerde aanpak (helemaal geen tbs'en meer) het antwoord?

6. Besluit: zitten we dicht tegen perfect schaak?

Op positioneel vlak zit Leela er dichtbij; om SF geregeld te overspelen, moet je echt al een indrukwekkend niveau halen. Op taktisch vlak scoort SF nog altijd (ruim) beter. De zeer grote zoekdiepte zorgt dat geen enkele taktische grap ontsnapt aan de aandacht van SF, terwijl omgekeerd, net die diepte in het zoekproces ervoor zorgt dat SF een gigantisch goede verdediger is. Één aspect van de ontwikkeling van Alpha Zero en Leela doet me denken aan wat prof Jonathan Schaeffer ervoer bij de ontwikkeling van zijn perfecte checkers spelende programma Chinook (trouwens, wie een prachtig en emotioneel verhaal wil lezen over de ontwikkeling van het eerste programma dat een regerend denksportkampioen kon verslaan, is "One Jump Ahead" een absolute aanrader). Dat was namelijk iets wat Schaeffers team en het team van Demis Hassabis (Deep Mind en Alpha Zero) recenter opmerkten: dat verdere ontwikkeling en meer training resulteerde in meer remises (een indicatie dat schaken bij correct spel remise is, of dat er (altijd) een plafond is aan een leercurve?). Dat effect was vroeger voor een deel te verklaren aan het feit dat "remise gelijk is aan remise" voor een computer. Met andere woorden: als een "simpele" evaluatiefunctie 0.00 geeft, dan bepalen (simpel gezegd) andere factoren (bv de sortering door de zettengenerator) welke zet eerst gekozen wordt om de 0.00 te behouden (zie in dat opzicht het artikeltje van Tim Krabbé over "een appelsien schillen in Alaska ("sukkels"). Een intelligente add-on zou inhouden dat het programma in dat geval (we laten contempt even buiten beschouwing) de zet kiest met het meeste risico voor de tegenstander om toch nog een faux-pas te maken (bv een voortzetting met een "smalle" remiseweg, of met veel "enige zetten", of zoveel mogelijk materiaal / pionnen op het bord houden). Ik ga ervan uit dat bij de moderne programma's hier al aan gewerkt is, maar zoiets helemaal wegwerken is moeilijk.

Het voordeel van Leela is dat "de machine" nu het programmeerwerk overneemt - vroeg of laat zal de ontwikkeling van Stockfish (ondanks alle testpartijen dat het programma tegen zichzelf speelt met een (evt) zelflerende evaluatiefunctie) stranden op het menselijk mogelijke programmeerwerk. Bij Leela is het absolute minimum aan programmeerwerk gekoppeld aan resultaatmaximalisatie - en zoals één van de programmeurs van Leela al schreef in een blog over de ontwikkeling van het programma: ga je als programmeur van een klassiek programma (bv SF) een week op vakantie, dan vind je daarna je programma terug in de staat waarin je het gelaten hebt. Bij Leela kan het best dat het na een week weer een stap in speelsterkte vooruit heeft gezet. Tegen een dergelijke grens lijkt Komodo aangelopen: op ccrl40 staat versie 11.3 3 punten hoger dan versie 12 en 12 punten hoger dan versie 12.3. En de MCTS-versie van Komodo begint heel dicht bij de klassieke versie te komen, dus ook bij de Amerikanen lijkt een tipping punt bereikt.

Maar zoals hierboven al vermeld: de evaluatie van Leela is - in tegenstelling tot SF - niet fireproof: zelden zo een hoop partijen gezien waarin een "winnende" evaluatie (+2, +3, +4, zelfs +5 en meer…) niet omgezet werd in winst. Het winnende pad is in computerschaak soms zo smal, dat één afwijking genoeg is om een half punt meteen weg te gooien. En daartegen is Leela voorlopig nog niet bestand - op dat vlak is het dus nog een beetje menselijk :-) Maar voor de praktische schaker, is dat nadeel misschien een voordeel, en is Leela zeker een waardevolle invulling om nieuwe ideeën (plannen) te vinden in openingen, of om bv niet-tbs eindspelen te evalueren op praktische kansen (daar waar SF eerder klassiek eerder 0.00 zal aangeven, zonder dat er inzicht komt over kansrijke voortzettingen).

Nawoord:

Voor de critici die deels terecht de openingen aanwezen als een te bepalende factor, na de match werd een rapid-match zonder opgelegde openingen gehouden met kortere tijdslimiet. Leela won deze met 56-44 zie bv s14 bonus match leela stockfish, een opvallende grote marge, vooral aangezien een taktisch sterk programma steeds als bevoordeeld werd aanzien bij kortere tijdslimieten.

HK5000

2 opmerkingen:

  1. Vandaag ligt de klemtoon bij het ontwikkelen van engines nog steeds op de speelsterkte. Dit betekent dat er zeer weinig aandacht is voor gebruiksvriendelijkheid in de analyse. Hierdoor zien we dat er geen standaard bestaat voor de evaluaties van engines.
    Bv. +1,5 voor Houdini betekent 90% winstkans zie http://www.cruxis.com/chess/houdini.htm
    Echter voor Leela 90% winstkans wordt getoond door een evaluatie van +8,42 zie https://github.com/LeelaChessZero/lc0/wiki/Technical-Explanation-of-Leela-Chess-Zero

    Het is dus noodzakelijk om je op voorhand goed te informeren wanneer je een bepaalde engine begint te gebruiken voor analyses.

    BeantwoordenVerwijderen
  2. Ondertussen heb ik wat opzoekingswerk gedaan over de bonusmatch. Echter de bonusmatch is exact in hetzelfde bedje ziek betreffende openingen. Ook hier zien we dat de openingen een enorme invloed hebben op het eindresultaat. Lc0 varieert nooit de opening en kiest gewoon de best scorende opening voor zichzelf. SF varieert daarentegen voortdurend en kies o.a. voor 17 keer het Frans. Dat is net de opening waarvan we weten dat SF minder sterk is. 5 verliespunten komen al van die opening zonder 1 winstpunt tegenover.

    Mits een andere configuratie van SF lijkt het mij perfect mogelijk om de zwak scorende openingen te vermijden wat Lc0 vandaag al automatisch doet. Echter dan zien we misschien 100 keer exact dezelfde remise-partij verschijnen waardoor je terecht kunt afvragen wat we daarmee kunnen bewijzen.

    De schaker is vandaag in de eerste plaats geinteresseerd welke programma het best is in om het even welke positie. Dat kan je enkel te weten komen door de programma's te verplichten diverse openingen te doen spelen. Die bonusmatch voldoet niet aan deze voorwaarde.

    BeantwoordenVerwijderen