Számítógépes Sakkmotorok: Gyorstalpaló
A sakk 2000 éve nyűgözi le a játékosokat és a rajongókat. Az elmúlt 100 év technológiai forradalmának köszönhetően a számítógépek az életünk szerves részévé váltak és a sakkra is hatalmas hatást gyakoroltak.
A hardverek és a szoftverek fejlődése olyan technológiai környezetett hozott létre, amelyben a programozók képesek voltak a számítógépeket és a sakkot igazán közel hozni egymáshoz.
Ez a cikk egy rövid ismertető, hogy megértsd hogyan működnek a sakkprogramok (sakkmotorok) és hogyan befolyásolták a sakk fejlődését:
- Meghatározás
- Mikor találták fel?
- Az emberi játék
- Tradicionális sakkmotorok
- Neurális hálók
- Gépek csatája
- A legjobb sakkprogramok
Mi az a sakkmotor?
A sakkmotor egy olyan számítógépes program (szoftver) amely elemzi és játsza a játékot. A ,,motor” szó egyszerűen utal arra, hogy ez a nagyon erős program sok keresést és feldolgozást végez, hasonlóan egy keresőmotorhoz.
Mikor találták fel az első sakkmotort?
Az emberiséget mindig is nagyon érdekelték a gépek, beleértve a sakkozó gépeket is.
1796-ban épült egy hamis sakkozógép, amelynek neve a Török volt, de a titka egy gépben elrejtett emberi sakkjátékos volt. 1912-ben alkottak egy olyan gépet, amely egy bástyával és egy királlyal tudott mattot adni egy királynak.
Egészen 1951-ig kellett várni arra, hogy létrejöjjön egy olyan számítógépes program, ami tud sakkozni, ezt a programot Alan Turing írta. A következő 50 évben sok programozó dolgozott a sakkmotorok javításán, a hardver fejlődése pedig lehetővé tette, hogy a programok jobban játszanak. 2005-re, a motorok egyértelműen erősebbek voltak a legjobb emberi játékosoknál is. Az azóta eltelt években lényeges fejlődésen mentek át, mostanra pedig többszáz olyan sakkprogram van, ami legyőzi a nagymestereket.
Hogyan változtatták meg a sakkmotorok az emberek játékát?
Azáltal, hogy a múlt játékosainak kollektív tudásából merítettek, az emberi játékosok sokat fejlődtek. A számítógépek felgyorsították ezt a folyamatot azáltal, hogy mélyebb megértést és új tudást adtak az addigiakhoz.
Manapság az elitjátékosok kiterjedt számítógépes elemzéseket végeznek, pozíciókat analizálnak és csiszolják elképzeléseiket. Sajnos ez elhozta a csalást is a sakkba, hiszen bárki, aki csak egy mobiltelefont, vagy egy sakkmotort használhat jobb lépéseket tehet, mint bármelyik nagymester.
Az olyan online sakkszerverek, mint a Chess.com szervere többszáz csalót fognak el egyetlen nap is, akik nem tudnak ellenállni a csábításnak, hogy számítógépes segítséggel nyerjenek meccset. A sakk rajongói mégis profitálni tudnak a sakkmotorokból, hiszen az elemzések hatására egyrészt sokat javul a játékuk, másrészt a számítógépes sakkból olyan közönségsport lett, ahol motorok küzdenek egymással, mi pedig lerágjuk a körmünk.
Hogy működik egy klasszikus sakkmotor?
A sakkmotorok nagyon összetettek, viszont ha le akarjuk egyszerűsíteni az elveket, akkor két dolgot tudnak:
1. Felmérni A sakkmotorok egyenként megnézik a pozíciókat, és megpróbálják eldönteni, hogy melyik az előnyösebb. Szinte minden program kiírja a pozíció értékét, az ,,evalt", arra a pontrendszerre alapozva, amit minden sakkjátékos használ (egy gyalog egy pontot ér, egy könnyűtiszt hármat, stb.). Minden sakkmotor másképp mér fel, de a legtöbb közülük az anyagi különbséget nézi, a táblán levő veszélyeket, a király biztonságát és a gyalogstruktúrát.
A motorok a jövőbeli forgatókönyvek lépéseinek értékét egyetlen számba sűrítik. A klasszikus motorok az emberekhez hasonlóan értékelik a pozíciókat, hiszen emberek tervezték őket, a neurális hálóra alapuló motorok (lásd alább) viszont más kiértékelési módozatot használnak.
Az alábbi állás összesített értéke +3, még úgy is, hogy anyagi tekintetben egyenlően állnak a felek, mivel világos tisztjei sokkal jobban állnak. Ez azt jelenti, hogy világos állása durván három gyalogot ér.
2. Keresés. Ahogy a jó sakkjátékosok, a motorok is próbálnak a pozíciók mélyére látni. Minél tovább látnak, annál jobb lépést tudnak kiválasztani, mivel ki tudják értékelni a legjobb lépések utáni pozíciókat. Minden egyes sakklépést “ply”-nak (rétegnek) neveznek, és a ,,depth", azaz a mélység azt jelenti, hogy hány réteget lát a program. 20-as rétegnél (10 lépés világossal és 10 lépés sötéttel), a legtöbb motor már sokkal mélyebben és sokkal erősebben értékel, mint az emberi játékosok. A rendelkezésre álló időtől, és a pozíció komplexitásától függően a sakkprogramok akár 50 rétegnél is tovább tudnak látni.
Eddig azt mondtuk, hogy egy motor minden lehetséges lépést és válaszlépést elemez. És aztán minden választ az eddigiekre. És megint minden választ az eddigiekre. Képzeljük el, hogy 32 lépés van egy pozícióban. Ahhoz, hogy négy lépést előreszámoljunk már több, mint egymillió pozíciót kell felmérni. Aztán, ha tovább akarunk menni még négy lépést, már több, mint egybillió pozíciót. Ez nagyon nem praktikus.
Ehelyett tehát a motorok megpróbálják okosan szűrni a pozíciókat, és csak a legígéretesebb vonalakat elemzik, miközben nem veszik figyelembe a nyilvánvalóan rosszakat. Egy motor minden pozícióban a ,,fő variánsok" (PV) között elemzi a legígéretesebb lépéseket.
Egy tradicionális sakkprogram komplex felmérésre való függvényeket és intelligens keresőalgoritmusokat használ, hogy megtalálja a lehető legjobb lépést. Az erejük függ attól, hogy mekkora számolási kapacitása van a processzornak azon a telefonon, számítógépen vagy a szerveren, amin futnak. Minél erősebb a processzor, annál erősebb a sakkmotor.
Mi az a neurális háló, és miben különbözik az eddigiektől?
A neurális háló (NH) alapú motorok más típusú sakkprogramok. Az első NH az AlphaZero volt, a DeepMind készítette, amely egy Google tulajdonában levő cég. 2017-ben, a jelentések szerint az AlphaZero döbbenetes verést adott a Stockfish-nek, a legjobb tradicionális sakkmotornak egy 100 játszmából álló párharc során, de mivel a párharc nem volt nyilvános, sokan megkérdőjelezték az eredményeket. Ezzel együtt 2019-ben, a nyílt forráskódú Lc0 (Leela Chess Zero) hivatalosan a világ legerősebb sakkprogramjává vált a Chess.com Számítógépek Sakk Bajnokságán (SzSB).
A neurális háló egy sor algoritmus és instrukció, amelyet arra használnak, hogy kiértékeljenek egy pozíciót, csak éppen azt nem tudjuk, hogy pontosan hogyan. Az NH úgy edződik, hogy megkap egy sor adatot (ebben az esetben sakkjátszmákat), és utána saját magától kezd el tanulni. Ezt általában gépi tanulásnak nevezzük.
A sakkjátszmák jöhetnek külső forrásból (például nagymesterek partijai), vagy ahogy Lc0 esetében, az adatokat saját maga nyeri, abból a több mint 200 millió partiból, amit saját maga ellen játszott. Az NH motorok esetében a pozíciók felmérését maga a neurális háló végzi.
A NH alapú sakkmotorok bevezetése azt is megváltoztatta, hogy miként működik a keresés. A tradicionális motorok tipikusan, úgynevezett alfa-béta minimax keresést használtak, ahol csak a legjobb lehetséges lépéseket mérte fel a program. A neurális háló alapú programok ezzel szemben a Monte-Carlo-módszert használják, ahol a legjobb lépés rengeteg végigjátszás valószínű kimenetelére alapszik. Alapjában véve a program egy tonna gyors játszmát játszik az adott pozícióban saját maga ellen szupergyors sebességen, és azokat a lépéseket választja ki elemzésre, amelyek a legnagyobb nyerési esélyűnek tűnnek.
A NH alapú motorok szintén erősebbek lesznek attól függően, hogy milyen hardveren futnak. Erős processzorokra van szükségük, sőt mi több, erős grafikus kártyákra (GPU, mint a gaming-számítógépekben) is szükségük van, mert a GPU-k gyorsabban dolgozzák fel a neurális hálókat.
Hol nézhetem sakkmotorok játékát?
Van néhány online sakkmotoroknak kiírt verseny, ahol a legjobb programok csapnak össze. A Chess.com szervezi a Számítógépek Sakk Bajnokságát, ami egy folyamatban levő, motor-motor elleni meccsekből álló sorozat, és 24/7-ben nézhető!
Melyek a legjobb sakkmotorok?
Sok mód van arra, hogy meghatározzuk, hogy melyek a legjobb motorok. Nagyon sok múlik a hardveren, az időlimiten és a használt metodológián. Megnézheted régebbi sakkversenyek ranglistáit (pl. a SzSB), vagy más online ratingrendszereket. A legutóbbi SzSB-t Lc0 nyerte, a Stockfish végzett második helyen, Leelenstein lett a harmadik és Antifish a negyedik.
Hogy működnek a legjobb motorok egyenként és miben különböznek egymástól?
Tradicionális sakkmotorok:
Neurális háló alapú motorok:
Tradicionális Sakkmotorok
Stockfish:
A Stockfish egy olyan nyílt forráskódú sakkprogram, amelyet egy nagy, sakkmotor-rajongókból és fejlesztőkből álló csapat rakott össze. A legerősebb tradicionális motor 2016 óta, a legtöbb sakkmotor-programozási módszert a Stockfish írása során fedeztek fel. Komplex felmérő függvénye van és A/B keresést használ.
Komodo:
A Komodo egy magánúton fejlesztett, kereskedelmi forgalmazás céljából írt motor, amit eredetileg Don Dailey fejlesztett, most pedig Mark Lefler folytatja a munkát, akit a nagymester Larry Kaufman segít. Hogy pontosan hogy működik nem tudni, de azt állítják, hogy egy kifinomultabb kiértékelő algoritmusa van, amely nagymesterek játékfelfogására és GM Larry Kaufmann éleslátására alapszik, ezáltal pedig sokkal emberibb stílusban játszik. Tradicionális A/B keresést használ, jelenleg a második legerősebb a tradicionális sakkmotorok között.
Komodo MC:
A Komodo MC a Komodo Monte-Carlo-módszert használó verziója. Miközben a kiértékelő mechanizmusa a Komodóé, a keresési algoritmusa a Monte-Carlo-módszer fastruktúráját használja, az A/B minimax keresés helyett. Bár nem olyan erős, mint a Komodo, gyorsabban fejlődik.
Houdini:
A Houdini egy magánúton fejlesztett, kereskdelmi forgalomra szánt motor, amelyet Robert Houdart tett közzé. Nagyon gyorsan keres, és nagyon jól teljesít rövid időkorlátos játszmákban. Keveset veszít és nagyon szorult helyzetekből is ki tudja vágni magát (mint a névadója). Jelenleg a harmadik legerősebb tradicionális sakkmotor.
Fire:
A Fire egy mafánúton fejleszett, nem kereskedelmi sakkmotor, amelyet Norman Schmidt készített. Eredetileg 2010-ben adták ki.
Ethereal:
Az Ethereal egy viszonylag új, nyílt forráskódú sakkmotor, amelyet Andrew Grant írt és fejlesztett, nagyrészt azért, hogy a programozási tudását gyarapítsa. 2016-ban lett kész és a Stockfish és más sakkprogramok inspirálták.
Shredder:
Shredder (vagy Deep Shredder) sok tornát nyert a kilencvenes években és 1996-ban kereskedelmi forgalomba is hozták. Stefan Meyer-Kahlen írta és fejlesztette.
Laser:
Laser egy nyílt forráskódú sakmotor, amelyet 2015-ben írt Jeffrey An és testvére Michael, akik technológiai területen tanulnak Kaliforniában.
Neurális Háló Alapú Motorok
Lc0:
Lc0 (Leela Chess Zero) egy nyílt forráskódú, közösség által épített neurális háló alapú program. Lc0 alapja a mély visszacsatolásos tanulás, ami azt jelenti, hogy játszott saját maga ellen 200 millió partit, és csak ebből tanult illetve csak ebből tanul. Amikor először elkezdte a tréninget, Lc0 csak a szabályokat ismerte.
Lc0 a Monte-Carlo-módszer fastruktúráját használja keresési algoritmusként és jelenleg a legerősebb sakkprogram a világon, tekintve, hogy megnyerte a Chess.com Számítógépek Sakkbajnokságát 2019-ben. Az Lc0 nagyon más sakkot játszik, mint a Stockfish. Izgalmas, támadójátékot generál és olyan lépéseket használ, amelyeket a tradicionális sakkmotorok nem értenek. Lc0 nagyon furcsán kezeli a végjátékokat, gyakran szándékosan anyagot áldozva az egyszerűsítésért, ahelyett, hogy a leggyorsabb győzelmet választaná.
Leelenstein:
A Leelenstien az Lc0 kódját használja, de másik neurális hálót használ, egy olyant amely felülvizsgált (felügyelt) tanulásra alapszik. Játszmák millióival edzették, ezáltal nem a saját maga elleni partikból tanult. Ez a háló nem bizonyult olyan erősnek, mint Lc0 hálója.
Antifish:
Az Antifish nagyrészt szintén Lc0 kódjára épül, de a hálója csak az Lc0 Stockfish elleni játszmáira alapszik, pusztán azért, hogy meg tudja verni a Stockfisht. Az Antifish nem olyan erős, mint Lc0 vagy Leelenstein.
Allie:
Az Allie egy egyedi neurális háló alapú motor, amit Adam Treat írt. Allie a saját Monte Carlo keresését használja, saját lépéskiválasztása és saját időmenedzsmentje van, de bármilyen hálóval használható, mivel nem rendelkezik sajáttal. Az Allie írója A/B keresési opciót készül adni a motornak.
Vannak kérdéseid a számítógépek sakkmotorjaival kapcsolatban? Írd le kommentben.
Ha szeretnél néhányat játszani látni a világ legjobb sakkmotorjaiból ebben a percben, akkor klikkelj a Chess.com Számítógép Sakkbajnokságának linkjére.