Loppupelitietokannat – käytännön opas

Matti549
Matti 549 siirrossa, mutta miten?

Yllä oleva asema lienee pisin tunnettu pakottavaan mattiin johtava loppupeliasema. Valkea aloittaa, ja pakottaa matin 549 siirtoa myöhemmin. Yksikään moderni shakkiohjelma ei kuitenkaan kykene löytämään tätä mattia ”normaalin” analyysin kautta, sillä ohjelmille loppupeleissä tyypillisellä 50-100 siirron syvyydellä asemassa ei tapahdu vielä mitään edistymiseen viittaavaa. Mikäli käytössä on sopiva loppupelitietokanta, ohjelma kuitenkin havaitsee että asema on valkean pakottava voitto, ja mikä tärkeintä, osaa myös konvertoida pelin voitoksi.

Tämä asema on luonnollisesti äärimmäinen esimerkki tilanteesta jossa shakkiohjelmien heikkoudet loppupeleissä tulevat konkreettisesti esiin. Käytännön peleissä ja erityisesti tietokoneen analyyseissa kuitenkin törmätään jatkuvasti asemiin joiden arviointi on shakkiohjelmille vaikeaa. Keskipeliasemia analysoidessaan koneen hakufunktio päätyy tuhansia kertoja sekunnissa erilaisiin loppupeliasemiin, jotka sen täytyy sekunnin murto-osassa arvioida ilman mahdollisuutta tarkistaa jokaista niistä mattiin saakka. On tunnettua että useissa tapauksissa kone saattaa tehdä virhearviointeja, ja esimerkiksi päättää vaihtaa materiaalia päästäkseen loppupeliin joka lopulta osoittautuukin tasapeliksi, tai vaihtoehtoisesti päättää olla vaihtamatta materiaalia tilanteessa jossa tarjolla olisi epäselvä mutta todellisuudessa pakottavasti voittava loppupeli.

Mitä ovat loppupelitietokannat?

Loppupelitietokanta (engl. Tablebase) on yksinkertaisesti kokoelma kaikista mahdollisista shakkiasemista tietyillä materiaaliyhdistelmillä, sisältäen asema-arvion sekä ohjeet pelin loppuun saattamiseksi. Loppupelitietokanta mahdollistaa täydellisen ja 100% virheettömän analyysin pelin loppuvaiheista, aina kun laudalla on enimmillään 7 nappulaa (kuninkaat mukaan lukien).

Loppupelitietokanta vastaa tavalla tai toisella kahteen peruskysymykseen:

  1. Onko tietty asema parhaalla pelillä voitto, tasapeli vai tappio?
  2. Miten peliä jatketaan parhaan lopputuloksen saavuttamiseksi?

Eri tyyppiset loppupelitietokannat lähestyvät näitä kysymyksiä hieman eri tavoilla, näistä tarkemmin alempana.

Analysoidessaan keskipeliä shakkiohjelma päätyy tuhansia kertoja sekunnissa tutkimaan asemia joissa on 7 nappulaa tai vähemmän. Toimiessaan omillaan, shakkiohjelma joutuu joko arvioimaan näitä asemia omilla arviointifunktioillaan, tai vaihtoehtoisesti käyttämään prosessoriaikaa niiden laskemiseksi konkreettisesti mattiin saakka. Ensimmäinen näistä tavoista on altis virhearvioille, kun taas jälkimmäinen vaatii kohtuuttoman paljon arvokasta prosessoriaikaa jota tarvitaan miljoonien muidenkin variaatioiden laskemiseen. Kun käytössä on loppupelitietokanta, shakkiohjelma saa välittömästi täydellisen vastauksen tietokannasta löytyviin asemiin. Se tietää 100% varmuudella onko kyseinen asema voitto, tasapeli vai tappio, ilman että sen tarvitsee laskea tai arvioida asemaa yhtään enempää. Tällöin shakkiohjelma voi keskittyä rakentamaan ”polkuja” analysoitavasta keskipeliasemasta kohti loppupelitietokannasta löytyviä edullisia loppupeliasemia, luottaen että nämä asemat takaavat varmuudella halutun lopputuloksen.

Kun pelissä tai analyysissa on saavutettu loppupelitietokannasta löytyvä asema, koneen ei välttämättä tarvitse enää lainkaan ”ajatella” normaaliin tapaan, vaan se voi toteuttaa loput siirrot loppupelitietokannan ohjeiden mukaisesti.

Loppupelitietokantojen tekniikkaa

Keskeinen ominaisuus loppupelitietokannoissa on niiden vaatima valtava tallennustila. Johtuen shakkipelin luonteesta, mahdollisten asemien määrä ja samalla vaadittava tallennustila kasvaa eksponentiaalisesti nappuloiden määrän suhteessa. Käytännössä tällä hetkellä on mahdollista käyttää 6-7 nappulan loppupelitietokantoja. Kahdeksan nappulan loppupelitietokantoja ei vielä ole julkisesti saatavilla. Vaikka 6-7 nappulaa saattaa tuntua pieneltä määrältä, sisältyy näihin loppupeleihin uskomaton määrä kompleksiteettia ja virheiden mahdollisuuksia. Loppupelitietokannan käyttö tuokin  merkittävän parannuksen koneiden analyysi- ja pelivahvuuteen.

Loppupelitietokantoja on useita eri tyyppisiä. Yleisimmät nykyisin käytössä olevat formaatit ovat mm. Nalimov, Gaviota, Lomonosov ja Syzygy. Niiden toiminnallisuuksissa ja vaatimassa tallennustilassa on merkittäviä eroja, jotka käyttäjän on hyvä tunnistaa valitessaan itselleen sopivaa.

Eri tietokannat sisältävät hieman erilaisen tiedon jokaisen aseman ”arvosta”. Yksinkertaisimmat ”bitbaset” sisältävät ainoastaan tiedon ”voitto” tai ”ei-voitto”, mutta vaativat ainoastaan yhden bitin sen tallentamiseen. Hieman kehittyneemmät tietokannat, kuten Gaviota, Nalimov ja Lomonosov, sisältävät tiedon ”voitto”, ”tasapeli” tai ”tappio”, mutta eivät ota huomioon 50-siirron sääntöä, mikä rajoittaa niiden käytettävyyttä käytännön peleissä. Modernein Syzygy puolestaan on käytännön pelaajalle paras, koska se sisältää yksityiskohtaisimman tiedon jokaisesta asemasta:

    • Ehdoton voitto
    • Voitto, mutta 50-siirron säännöllä tasapeli
    • Ehdoton tasapeli
    • Tappio, mutta 50-siirron säännöllä tasapeli
    • Ehdoton tappio

Eri tietokannat sisältävät myös erilaista tietoa aseman konvertoinniksi voitoksi tai pitämiseksi tasapelinä. GaviotaNalimov, ja Lomonosov sisältävät tiedon matin tekemiseksi nopeimmalla mahdollisella tavalla (”DTM”, Depth-To-Mate), mikä tarjoaa loppupelitehtävien ystäville tarpeellisen tiedon, mutta hintalappuna on valtavan suuri tiedostokoko. Syzygy sisältää ainoastaan tiedon siitä miten peliä voi edistää kohti seuraavaa yksinkertaisempaa saman tuloksen tuovaa asemaa (”DTZ”, Depth-To-Zeroing eli lyhin tie 50-siirron laskurin nollaavaan lyöntiin tai sotilaan siirtoon). Syzygyn etuna on merkittävästi pienempi tiedostokoko joka kuitenkin riittää 100% tarkkaan konvertointiin käytännön pelissä, mutta haittapuolena on se että sen pelitapa ei aina ole esteettisesti miellyttävintä koska se ei välttämättä löydä nopeimpia ja suoraviivaisimpia matteja ja saattaa joskus tehdä ihmisen kannalta outoja uhrauksia vain päästäkseen seuraavaan voittavaan loppupelityyppiin.

 

Taulukko

 

Käytännön vaihtoehdot loppupelitietokantojen käyttäjille ovat Nalimov, Lomonosov ja Syzygy. Näistä Lomonosov on täydellisin (7 nappulaa & nopein matti), mutta se on ainoastaan verkon kautta käytettävissä suuresta tiedostokoosta johtuen. Sitä voi siis hyödyntää vain yksittäisten asemien tarkasteluun, mutta se ei toimi shakkiohjelman yhteydessä. Nalimov (ja myös vastaavantyyppinen Gaviota) tarjoaa enintään kuuden nappulan loppupelit ja nopeimman matin, mutta vaatii enemmän tilaa kuin Syzygy eikä huomioi 50-siirron sääntöä mikä vaikuttaa sen soveltuvuutta käytännön peleihin. Mikäli nopeimman matin löytyminen ei ole kriittistä, on suositeltavaa käyttää moderneinta Syzygy-loppupelitietokantaa, josta tarkempaa tietoa alla.

Loppupelitietokannan hankkiminen

Loppupelitietokannat ovat vapaasti ladattavissa netin kautta, mutta suuret tietomäärät vaativat hieman kärsivällisyyttä ja erityisesti 7-nappulaisten loppupelien osalta hieman valikointia. Loppupelitietokannan voi ostaa myös kaupallisena tuotteena, mutta lähes 200€ hintalappu on korkea ja tuo raha kannattaa mieluummin käyttää nopeaan SSD-levyyn.

Nalimov-tietokannat voi ladata esimerkiksi osoitteesta http://tablebase.sesse.net/, mistä löytyy viisi kansiota (esim. ”3+3-with-pawns”) ja yhteensä vajaa 1,200 gigatavua 3-6 nappulan loppupelitietokantoja.

Syzygy-tietokannat voi ladata joko osoitteesta http://tablebase.sesse.net/syzygy/ tai osoitteesta https://tablebase.lichess.ovh/tables/standard/ joista molemmista löytyy täydelliset tietokannat aina 7-nappulaisiin loppupeleihin saakka.

Syzygy-tietokantaa käytettäessä kannattaa ehdottomasti aluksi ladata täydellinen 3-6 nappulan tietokanta, joka on kooltaan yhteensä noin 150 gigatavua ja mahtuu helposti kotikoneen kovalevylle. Loppupelitietokanta kannattaa ehdottomasti sijoittaa nopealle SSD-levylle. Sen käyttö perinteisellä kovalevyllä saattaa hidastaa shakkiohjelman toimintaa merkittävästi ja saattaa mahdollisesti aiheuttaa levyn nopeaa kulumista jatkuvien levyhakujen vuoksi. Tietokanta on myös mahdollista asentaa USB-tikulle, joka on parempi vaihtoehto kuin perinteinen kovalevy mutta yleensä hitaampi kuin SSD-levy.

Käyttäjän tulee ladata (valitettavasti yksitellen) kaikki kansioista löytyvät tiedostot, jotka ovat esimerkiksi muotoa ”KRBvKBP.rtbw”. Tiedostonimi kertoo suoraa mikä materiaaliyhdistelmä on kyseessä (k=king, q=queen, r=rook, b=bishop, n=knight, p=pawn). Tiedoston päätteet ovat ”.rtbw” joka sisältää arvion jokaisesta asemasta (voitto-tasapeli-tappio) ja ”.rtbz” joka sisältää tiedon miten peliä pitää jatkaa ko. asemasta. Käytännössä shakkiohjelma lukee jatkuvasti *.rtbw -tiedostoja (yhteensä noin 70 gigatavua), joiden on tärkeää olla nopealla SSD levyllä. Vasta kun haluttu loppupeliasema on saavutettu on tarvetta lukea *.rtbz -tiedostoja (yhteensä noin 80 gigatavua), jotka voi halutessaan sijoittaa myös perinteiselle kiintolevylle. Erityisesti 7-nappulan tietokantojen kanssa tämä on relevanttia, koska vaadittava SSD levykapasiteetti ei ole aivan ilmaista. Tarkempi ohje ladattujen loppupelitietokantojen ottamisesta käyttöön alempana.

7 nappulan Syzygy-tietokanta on täydellisenä kooltaan noin 17,000 gigatavua, josta noin 8,500 gigatavua on SSD levyn vaativia *.rtbw -tiedostoja ja toinen 8,500 gigatavua hitaammallekin levylle sopivia *.rtbz -tiedostoja. Käytännössä hyvin harvalla on käytössään näin paljon levytilaa, joten 7 nappulan Syzygy-tietokantojen käyttö vaatii hieman priorisointia. Onneksi jo 1,000-2,000 gigatavun (=1-2 teratavua) SSD levyllä ja saman kokoluokan levytilalla miltä tahansa hitaammalta levyltä pääsee jo pitkälle yleisimpien loppupelien osalta.

7 nappulan loppupeleistä relevanteimpia lienee 4 vs 3 tilanteet (5 vs 2 lienee useimmiten melko triviaaleja). Mielenkiintoisia käytännön loppupelejä ovat ainakin ne missä toisella on sotilas enemmän (esim. KRBPvKRB), sotilas laadusta (esim. KBPPvKRP) sekä kaksi sotilasta upseerista (esim. KRPPvKRN). Näiden lisäksi on muitakin käytännössä relevantteja materiaaliyhdistelmiä, kuten esimerkiksi KRPPvKQP, KRBPvKQP ja KNPPvKPP tai eriaikaisiin korotuksiin liittyviä teemoja kuten esimerkiksi KBPPvKQP. Näistä voi valita omien mieltymysten ja käytössä olevan levytilan puitteissa haluamansa kokoonpanot. Alla oleva taulukko esittelee yhden priorisoinnin joka mahtuu 2 teratavun SSD levylle (*.rtbw -tiedostot) ja vajaan yhden teratavun toiselle kovalevylle (vastaavat *.rtbz -tiedostot).

WDL7
Esimerkki valikoiduista 7-nappulan Syzygy-loppupelitietokannoista. Tässä esitelty ns. WDL (=Win-Draw-Loss, eli *.rtbw -tiedostojen koot). Ruudussa näkyvä luku on ko. tiedoston koko gigatavuina.

Loppupelitietokannan käyttö shakkiohjelmassa

Loppupelitietokannan käyttö yhteensopivan shakkiohjelman (esim. Stockfish, Lc0) kanssa on hyvin yksinkertaista, ja vaatii ainoastaan kerran asetusten säätämisen kohdalleen minkä jälkeen kaikki toimii automaattisesti osana koneen analyysia. Chessbase 15 ohjelmassa (vastaava logiikka toiminee myös muissa ohjelmissa) valitaan aluksi File => Options => Tablebases => Edit => Syzygy (engine). Sen jälkeen osoitetaan ohjelmalle kansio jossa halutut tietokannat sijaitsevat.

 

SyzygyCB

 

Tämän jälkeen käynnistetään oma engine (esim. Stockfish), ja asetetaan se käyttämään saatavilla olevia loppupelitietokantoja. Ensin klikataan enginen nimeä (tässä ”Stockfish 10 64 POPCNT”), sitten ”Advanced”, valitaan ”Use Tablebases”, klikataan ”Engine Parameters”, ja määritellään ”Syzygy Probe Limit” halutulle tasolle. Viimeinen parametri kertoo enginelle millä nappulamäärällä se alkaa hakea asemia loppupelitietokannasta. Jos käytössä on 6 nappulan loppupelitietokannat, tähän valitaan ”6”, jne.

Parametriä ”SyzygyProbeDepth” muokkaamalla voi vaikuttaa siihen miten usein engine hakee asemia loppupelitietokannasta. Tämä on relevanttia silloin jos enginen hakufunktio (”nodes per second”) alkaa merkittävästi hidastua loppupelitietokantoja käytettäessä. Kasvattamalla tätä numeroa paranee hakufunktion nopeus, mutta luonnollisesti loppupelitietokannan hyödyt heikkenevät jonkin verran. 

 

SyzygyParametrit

 

Loppupelitietokannan oikean toiminnan voi tarkistaa koneen analyysitiedoista (ainoastaan silloin kun analysoi yhtä variaatiota kerrallaan). Rivin viimeisenä näkyy teksti ”tb=12345” joka kertoo tietokantojen olevan oikein käytössä. On hyvä huomata että pelin alkupuolella analyysit eivät välttämättä kertaakaan päädy loppupelitietokantaan asti, joten tämä luku tulee näkyviin vasta pelin edetessä pidemmälle.

 

TBhits
Esimerkki toimivasta loppupelitietokannasta: Asemaa analysoidessaan Stockfish on käynyt tarkistamassa 409 miljoonaa asemaa tietokannasta.

Loppupelitietokantojen merkitys loppupeliteorialle

Käytännön analyysin lisäksi loppupelitietokantojen luomisella on ollut merkittävä rooli loppupeliteorian kehitykselle. Loppupelitietokantojen avulla on voitu todeta jotkin erikoisemmat materiaaliyhdistelmät (esimerkiksi torni+lähetti vastaan kaksi ratsua) yleisesti voittaviksi, kun aiemmin on arvioitu niiden olevan tasapelejä parhaalla pelillä. Toinen mielenkiintoinen havainto on eri loppupelityyppien yleinen voittoprosentti. Esimerkiksi torni+lähetti voittaa ratsun+lähetin 87 prosentissa kaikista mahdollisista lähtöasemista, tai torni+lähetti voittaa tornin 40 prosentissa kaikista mahdollisista lähtöasemista. Tarkempia tilastoja eri loppupeleistä löytyy mm. Wikipediasta.

 

Loppupelitietokantojen tulevaisuus

Loppupelitietokantojen kehitys kulkee käsi kädessä käytettävissä olevan laskenta- ja tallennuskapasiteetin kehityksen kanssa. Ensimmäiset 4 nappulan loppupelitietokannat kehitettiin 1970-luvun lopussa, ja 5 nappulan tietokannat 1980-luvulla. 1990-luvun aikana vaadittava tilantarve pieneni Nalimovin tietokantojen myötä, ja täydelliset 6 nappulan Nalimov tietokannat valmistuivat 2005. Vuonna 2012 valmistui täydellinen 7 nappulan Lomonosov tietokanta, joka kuitenkin edelleenkin vuonna 2021 liian suuri käytettäväksi kotikoneilla. Syzygy-tietokannat julkaistiin vuonna 2013, ja täydellinen 7 nappulan Syzygy-tietokanta julkaistiin vuonna 2018.

Pohdinta 8 nappulan tietokantojen rakentamiseksi on epäilemättä käynnissä, mutta käytännön toteutusta rajoittaa vaadittavan laskenta- ja tallennuskapasiteetin hinta ja saatavuus. Tietokannan laskenta onnistuu käytännössä vain erittäin tehokkailla supertietokoneilla, ja lienee epätodennäköistä että mikään taho olisi valmis rahoittamaan tätä hanketta. Tallennustilan näkökulmasta tiedossa on että yhden nappulan lisääminen kasvattaa tietokannan kokoa karkeasti noin 100-kertaiseksi, eli Syzygy-formaatissa tietokannan koko täydellisenä olisi vähintäänkin miljoonaa gigatavua eli 1,000 teratavua. Ilman merkittävää läpimurtoa tallennusteknologiassa tällaisia tietomääriä ei voi tallentaa kotikoneilla ainakaan 2020-luvun aikana. On epäselvää voisiko 8 nappulan tietokantaa käyttää nopean verkon yli keskitetyltä palvelimelta, mutta tämäkin vaatisi epäilemättä merkittävästi nykyistä nopeampia yhteyksiä sekä runsaasti kapasiteettia palveluntarjoajalle. Sitä odotellessa täytyy nauttia 7 nappulan tietokantojen tarjoamasta ”jumalallisesta” shakkiymmärryksestä.

Tarkempaa tietoa loppupelitietokantojen kehityksestä ja toiminnasta löytyy mm. Wikipediasta ja ChessBasen artikkelista.

Mielenkiintoista tilastotietoa ja luettelo pisimmistä mahdollisista mateista eri materiaaliyhdistelmille löytyy täältä.

Juha Patosalmi, shakinharrastaja