Tämä blogi sisältää kirjojani sivuavia aiheita. Aihealue on hyvinkin laaja ja artikkelien on tarkoitus tuoda esiin uutta, mielenkiintoista ja joskus kiistanalaistakin informaatiota.

My blog in English: http://spreadingmyfinns.blogspot.fi/

Wednesday, November 13, 2019

Leela-keinoäly ja Bremerin vastahyökkäys


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.