2017 joulukuussa kirjoitin blogiartikkelin shakkimaailmaa
järisyttäneestä AlphaZero-tekoälyohjelmasta (https://alexjalo.blogspot.com/2017/12/shakkia-ulkoavaruudesta-kun-sm.html).
Eilen sain ensi kertaa käsiini hermoverkkoon perustuvan shakkiohjelman ja hämmästykseni
oli vähintään yhtä suuri kuin kuullessani ensi kertaa AlphaZerosta. Eilinen
kokemukseni on kertomisen arvoinen.
Törmäsin eilen vahingossa Leela Chess Zero -projektiin,
jossa tuhansien ihmisten ja koneiden tietokoneyhteisö kehittää shakkia pelaavia
hermoverkkoja rinnakkaisprosessointiin erityisen hyvin soveltuvilla
näytönohjaimilla. Tuohon erityiseen tarkoitukseen GPU on tuhansia kertoja
tehokkaampi kuin CPU. Zero eli nolla sekä Alphan että Leelan nimessä viittaa
siihen, että verkkojen oppiminen on itseoppimista ilman mitään mallia ihmisten
tai tietokoneiden pelaamista peleistä sääntöjä lukuun ottamatta. Shakkisovellutuksessa
verkkoa pyörittää varsin yksinkertainen ohjelma ja pienen salapoliisityön tuloksena
löysin tuon ohjelman ja parhaimman olemassa olevan Leela-hermoverkon.
Ohjelma oli kuitenkin varsin alkeellinen ja asennusohjeet
olemattomat. Lyhyen oppimisprosessin seurauksena aloin ymmärtää kokonaisuutta
ja sain asennettua ohjelman, joskin ilman kunnollista käyttöliittymää.
Ensimmäiset testini olivat kuitenkin tyrmääviä. Kokemukseni oli kuin
tieteistarinasta, jossa käsissäni oli vierasta teknologiaa meidän
sivilisaatiomme näkökulmasta alkeellisessa ulkoasussa, mutta sisällöltään
täysin ylivertaista. Palasin takaisin 70-80 -luvulle, jolloin tietokoneita
ohjattiin komentoikkunan kautta yksinkertaisia komentoja kirjoittaen. Asematkin
piti ilmoittaa kivikautisella 8x8 -ruutukoodilla tyyliin e2e4 nappuloiden ”arvosta”
piittaamatta. Tulostus näytölle oli nykyvalossa kuin siansaksaa, mutta silti
niin rakas muisto nuoruuteni tietokonemaailmasta.
Mutta kun tein ensimmäisen testini asemasta, jonka tiesin
poikkeavaksi ja jonka tunsin äärimmäisen hyvin, kone siirsi kuin ajatukseni
lukien. Palaan asemaan artikkelin lopussa.
2017 kirjoittamassani artikkelissa selostin AlphaZeron
menetelmää teoreettisesti ja Leela-hermoverkkoa etsiessäni totesin sen myös käytännössä. Verkkoja on olemassa tuhansia ja määrä kasvaa nopeasti. Kyse on
stokastisuudesta. Ei auta, että hermoverkkoa opetetaan loputtomasti, sillä verkko
hakeutuu paikalliseen optimiin, eikä pysty kehittymään muuten kuin rikkomalla vanhaa
kuviota tai aloittamalla alusta. Täydellistä verkkoa ei löytyne koskaan, mutta
oikealla algoritmilla tai tarpeeksi iteroimalla löytyy verkkomalli, joka on
lähellä globaalia optimia. Verkon arkkitehtuuria voi myös kehittää ja tällä
hetkellä on menossa testiverkkotyyppi nimeltään T60, joka jäljittelee AlphaZeron
tyyliä ja verkkoja syntyy nykyään parikymmentä päivässä. Itse valitsin verkkoni
aikaisemmasta arkkitehtuurista T40, jonka kehittäminen lopetettiin tämän vuoden
huhtikuussa verkon oppimisen hiipuessa. Silti uusi arkkitehtuuri ei ole vielä
marraskuussa lähelläkään vanhan arkkitehtuurin tasoa.
Toinen käytännön kokemukseni oli, toisin kuin yleinen
kuvitelma tuntuu olevan, ettei verkon käyttäminen vaadi suurtakaan
laskentatehoa. Sen sijaan verkon opettamisessa rinnakkaisprosessointi
tehokkailla näytönohjaimilla on kaikki kaikessa. Kun pyöritin ohjelmaa
läppärissäni ja pelasin sillä erittäin vahvaa heuristista shakkiohjelmaa
vastaan, Lc0 teki siirron sekunneissa ja pesi sillä minuutteja siirtoa kohtaan
käyttäneen heuristisen ohjelman. Kun otin käyttöön pitkiin miettimisaikoihin
viritetyn heuristisen ohjelman, siltä saattoi mennä tunti havaita jotain, mihin
Lc0 käytti enintään minuutin. Kyse Lc0:n pelaamisessa on samankaltaisesta
intuitiosta, kuin mitä suurmestarit käyttävät - paitsi että Lc0 pystyy siihen
aivan toisella tasolla.
Lopulta sain asennettua ohjelman UCI-moottoriksi käyttämääni
shakkikäyttöliittymään ja saatoin alkaa tutkia sitä huomattavasti tarkemmin. Nyt
voin tutkia asemia rinta rinnan perinteisillä ohjelmilla ja Leela-hermoverkolla,
mikä mahdollistaa Leelan heikkouksien paikkaamisen ja lähes ”täydellisen”
pelin. Väkisinkin tulee mieleeni, että pitäisi hankkia shakkilaboratorioksi täydellinen kone, kuten esimerkiksi Predator Orion 9000 -pöytäkone (Intel
i9-9900X, 64 Gt, 2 x 512 Gt SSD; 2x NVIDIA RTX 2080 Ti -grafiikkaohjain).
Hintakaan ei päätä huimaa, ainoastaan 4990.90. No en nyt sentään… ellei sitten iske
yllättävä lottovoitto. Koneen nimessä on kyllä mielenkiintoinen kytkös
kokemuksiini, mutta se on ihan eri tarina.
Lopuksi vielä oma shakkitarinani, jossa palaan alussa
mainitsemaani avauskokeiluun…
En ole koskaan pelannut kilpashakkia tai kuulunut mihinkään
shakkikerhoon. Ainoa suursaavutukseni oli lukioni mestaruus ja tasapeli
teini-ikäisenä ruotsalaista kansainvälistä mestaria vastaan junassa matkalla
Turkuun. Jälkimmäinen on sinänsä hauska tarina, jonka ehkä joskus liitän
johonkin kirjani tarinaan. Toki pelasin nuorena paljon kavereiden kanssa, mutta
sitäkään en ole tehnyt sitten lukioaikojen muutamaa peliä lukuun ottamatta.
Kilpapelaamisen sijaan harrastan tietyn shakkiavauksen
kehittämistä, minkä täytyy olla yksi kummallisimmista harrastuksista
maailmassa. Avauksen nimi on Anglo-Skandinaavinen avaus, jota shakkiteoria on
pitänyt täysin pelikelvottomana ja jota tuskin kukaan huippupelaaja on
käyttänyt. Mutta kuten niin monet dogmit, ne on tarkoitettu murrettaviksi.
Harrastukseni alkoi kolmisen kymmentä vuotta sitten aivan kuin
tyhjästä tulleesta ideasta. Siitä lähtien minua on ajanut eteenpäin intuitio,
vaikka mitään järkeä koko touhussa ei ole ollut. Kaiken lisäksi olen päätynyt
siinä moneen kertaan umpikujaan ja silti on aina lopulta löytynyt tie ulos. Kehitystyö
on perustunut parhaiden shakkiohjelmien käyttöön mahdollisimman luovalla tavalla
ja yhdistämällä ne ihmisen päätöksentekoon. Ennen kaikkea kaiken takana on
valtava määrä prosessointiaikaa – viimeisen 20 vuoden aikana kolmen koneen
voimin 24/7. Eikä tuo suinkaan ole ollut mitään koneiden sokeaa laskenta-aikaa,
vaan tarkkaan ohjattua ja ideoin avustettua iterointia. Jo nyt olen huomannut,
miten mullistavaa on lisätä tuohon kaikkeen Leela. Pelasin Leelalla kaksi peliä
avaustani vastaan, joista ensimmäinen päättyi tasan varsin jännittävien
vaiheiden kautta. Heti siinä Leela osoitti löytävänsä vahvimmat siirrot melkein
miettimättä. Toisen pelin avaukseni voitti ja juuri avauskirjani kautta pystyin
näkemään Leelan heikkoudet. Mutta tappiosta huolimatta se pelasi luovasti ja
rohkeasti, ja yhdistämällä se perinteisiin ohjelmiin pelaaminen olisi murskaavaa. Puhun
avaukseni pelaamisesta, sillä annoin perinteisen ohjelman pelata avauksellani,
jolloin se ei mieti niin kauan, kuin avaussiirtoja kirjassa riittää. Itse en
olisi pystynyt mihinkään edes kirjani avustuksella.
Do not underestimate the Anglo-Skandinavian!
Lopulta sain artikkelin avauksestani shakkimaailman kahteen
tärkeimpään mediaan, maailman suurimmalle shakkisivustolle ChessBase.com:iin ja
maailman suurimman shakkijulkaisijan New In Chess -vuosikirjaan. Merkitys
avaukselleni löytyi siitä, että se päätyi pian ilmestyvän Siirrot-romaanini tarinaan. Lukijan ei romaania lukiessaan tarvitse osata edes shakin sääntöjä,
mutta shakkia ymmärtävälle shakin osuus kirjassa on varmasti helmi. Yhdessä
kohtauksessa päähenkilö pelaa Anglo-Skandinaavista avausta maailmanmestaria
vastaan ja tekee siirron, jota ei shakkiteoriassa ole. Se oli se siirto, joka 30
vuotta sitten tuli ideana jostain ja koukutti minut koko teorian kehittämiseen.
Tuo avaus on saanut nimekseen ”Bremerin vastahyökkäys” Siirrot-kirjan ja koko
trilogian päähenkilön mukaan. Avauksen nimi on ikuistettu ChessBase.com -sivuston
artikkeliin, josta voi myös lukea edellä mainittua shakkipeliä käsittelevän
kappaleen englanniksi.
Ja palatakseni lopuksi takaisin artikkelin aiheeseen, haluan
kertoa vielä yhden tarinan Leelasta. Kun sain tuon hermoverkon käsiini, laitoin
sen ensimmäiseksi pelaamaan kirjani sankarin, Daniel Bremerin pelaamaa peliä
kohtaan, jossa se on pakotettu pelaamaan Anglo-Skandinaavista. Se valitsee siirtonsa aivan kuten kirjassani ja kun sen pitäisi tehdä ensimmäinen yllätyssiirto, kuinkas ollakaan, Leela
(Lc0) valitsee Bremer-vastahyökkäyksen pitäen sitä vahvimpana. Tuon kyseisen tietokoneen
ajon kulku näkyy tämän artikkelin toisessa kuvassa. Se sai niskakarvani nousemaan
pystyyn, sillä kirjan kohtauksessa on jotain yliluonnollista. Se on kirjoitettu
paljon ennen AlphaZeron tai Lc0:n syntyä ja silti se kuvaa visuaalisesti pelin
synnyttämää prosessia mielestäni ihmeellisen osuvasti.
PS. Vasta nyt huomasin, että ChessBase -artikkelissa dokumentoidussa
pelissä Daniel on mukamas saksalainen! Hän on tietenkin suomalainen.