Janne Eskola Eetu Haapamäki Jani Jarkima Shakkirobotin pelitekoäly rajallisen laskentatehon ympäristössä

Koko: px
Aloita esitys sivulta:

Download "Janne Eskola Eetu Haapamäki Jani Jarkima Shakkirobotin pelitekoäly rajallisen laskentatehon ympäristössä"

Transkriptio

1 TIETO- JA SÄHKÖTEKNIIKAN TIEDEKUNTA Janne Eskola Eetu Haapamäki Jani Jarkima Shakkirobotin pelitekoäly rajallisen laskentatehon ympäristössä Kandidaatintyö Tietotekniikan tutkinto-ohjelma Huhtikuu 2019

2 Eskola J. Haapamäki E. Jarkima J. (2019) Shakkirobotin pelitekoäly rajallisen laskentatehon ympäristössä. Oulun yliopisto, tietotekniikan tutkinto-ohjelma. Kandidaatintyö, 37 s. TIIVISTELMÄ Shakki pelinä on kiinnostanut tiedemiehiä jo vuosisatoja. Peliä on käytetty historiassa erilaisten matemaattisten ongelmien ja varhaisten algoritmien havainnollistamiseen. Myös nykyaikana shakista on tullut laaja mielenkiinnon aihe varsinkin erilaisten tekoälyjen kehittämisessä. Shakki on pelinä liian monimutkainen ratkaistavaksi raa alla laskentateholla, mikä tekee siitä erinomaisen kehitysalustan tekoälyjen tehokkuuden vertailemiseen. Tässä työssä toteutettiin tekoäly shakkia pelaavalle robotille. Robotin työlle merkittävät osat koostuivat mekaanisesta käsivarresta ja kamerasta, joka tunnisti pelilaudan tilanteen konenäön avulla. Laiteympäristönä käytettiin erittäin rajallisen laskentatehon Raspberry Pi 3 -minitietokonetta. Laskentateho vaikuttaa suoraan sekä algoritmin pelikykyyn että ihmisvastustajan kokemaan odotusaikaan siirtojen välillä, joten tekoälyn suorituskyky oli tärkeässä asemassa työn kannalta. Suorituskykyä testattiin vaiheittaisesti, aloittaen naiivista minimax-algoritmista siirtyen alfa-beta - karsintaan ja sen erilaisiin optimisaatiotekniikoihin. Näitä eri algoritmillisia toteutuksia ja niiden suoritusaikoja vertailtiin keskenään, mikä auttoi määrittämään minimax-pohjaisten algoritmien soveltuvuutta vakuuttavan shakkitekoälyn luomiseen vähäisellä laskentateholla. Vertailuissa havaittiin selvästi perinteisen minimaxin hitaus suhteessa alfa-beta -karsintaan, varsinkin suuremmilla hakusyvyyksillä. Nopein suorituskyky ilman pelaamisen tason vähentymistä saavutettiin alfa-beta -karsintaa optimoimalla shakin avauskirjoja hyödyntämällä. Avainsanat: Shakki, robotiikka, algoritmi, minimax, alfa-beta

3 Eskola J. Haapamäki E. Jarkima J. (2019) Artificial intelligence of a chess robot in a system with limited computational power. University of Oulu, Degree Programme in Computer Science and Engineering. Bachelor s Thesis, 37 p. ABSTRACT Chess as a game has interested scientists for centuries. In history, the game has been used to demonstrate different kinds of mathematical problems and early algorithms. Even today, chess has become a subject of great interest, especially in the development of various artificial intelligence. Chess is too complex to solve by raw computing power, which makes it excellent platform to compare the strength of artificial intelligence. In this work, an artificial intelligence was made for a chess robot. The parts of the robot that were relevant to the work consisted of a mechanical arm and a camera that recognized the situation of the game board with the help of machine vision. Raspberry Pi 3 was used as a hardware of the artificial intelligence. Computational power directly effects the strength of the algorithm and the time experienced by the human opponent which makes the performance of the artificial intelligence very important factor for the project. Performance was tested step by step, starting with a stripped minimax algorithm and moving to alpha-beta pruning and its various optimization techniques. These different algorithmic implementations and their execution times were compared to help determining the suitability of minimax-based algorithms to create convincing chess artificial intelligence with limited computing power. Comparisons clearly showed the slowness of the traditional minimax relative to alpha-beta pruning, especially at higher search depths. The fastest performance without any reduction in the level of gaming was achieved by optimizing alpha-beta pruning by utilizing the chess opening books. Keywords: Robotics, algorithm, minimax, alpha-beta

4 SISÄLLYSLUETTELO TIIVISTELMÄ ABSTRACT SISÄLLYSLUETTELO ALKULAUSE LYHENTEIDEN JA MERKKIEN SELITYKSET 1. JOHDANTO ROBOTIIKKA Teollisuus Robottiautot Lääketiede Sotilasrobotit Palvelu- ja viihderobotit Shakkirobotit TEKOÄLY Koneoppiminen Oppimisalgoritmit Neuroverkot ja syväoppiminen Tekoäly robotiikassa Shakkitekoäly Shakkitekoälyjen historia Päätöspuu Sijainnin heuristinen arviointi Minimax-algoritmi Syvyys Alfa-beta -karsinta Alfa-beta -karsinnan optimisaatiotekniikoita Shakkitekoälyjen ongelmakentät TOTEUTUS Raspberry Pi Shakkitekoäly Minimax Alfa-beta -karsinta Avauskirjat Iteroiva syventäminen ja transpoositaulukot Heuristiikka IRC -botti ja Lichess -botti Toteutuksen ongelmakenttä Testaus Pelitestaus Laskentatehollinen testaus POHDINTA Tekoälyn suorituskyky ihmispelaajia vastaan Avauskirjojen vaikutus tekoälyn laskenta-aikaan Jatkokehitys AJANKÄYTTÖ YHTEENVETO LÄHDELUETTELO... 34

5 ALKULAUSE Haluamme kiittää Teemu Tokolaa tämän työn ohjaamisesta sekä neuvojen antamisesta. Lisäksi haluamme kiittää kaikkia tekoälyn testaukseen osallistuneita henkilöitä. Oulu, Toukokuu Janne Eskola Eetu Haapamäki Jani Jarkima

6 LYHENTEIDEN JA MERKKIEN SELITYKSET IRC IFR HRI GPS AI UCI FEN Internet Relay Chat. International Federation of Robotics Human Robot Interaction Global Positioning System Artificial Intelligence Universal Chess Interface Forsyth-Edwards Notation

7 1. JOHDANTO Idea automatisoiduista tai ohjailtavista mekaanisista laitteista on ollut olemassa jo esihistoriallisten kansojen myyteissä [1], mutta vasta viime vuosikymmeninä teknologia on kehittynyt tarpeeksi mahdollistamaan edistyneet, modernit robotit. Robotit ovat koneita, jotka kykenevät suorittamaan mekaanisia työtehtäviä joko autonomisesti tai ihmisten ohjattavana. Sana robotti tulee tšekinkielisestä sanasta robota, tarkoittaen pakkotyöläistä tai orjaa. Modernissa käsityksessä robotit toimivat sähkömekaanisen koneen ja jonkintyyppisen tietoteknisen ohjelmiston sulautettuna järjestelmänä. Robotiikka konseptina onkin melko laaja ja käsittää useita tekniikan ja tieteen aloja, mukaan lukien esimerkiksi tieto-, sähkö- ja konetekniikan sekä tietojenkäsittelytieteen alat monien muiden joukossa. Tästä johtuen robotiikan kehittyminen on ollut suurelta osin sidottuna myös näiden alojen kehittymiseen. Vaikka robottien edistyksessä on tapahtunut suuria harppauksia, ovat täysin autonomiset yleisrobotit yhä saavuttamattomissa. Stereotyyppistä robottia ei olekaan olemassa, vaan robotit suunnitellaan ja rakennetaan käyttötarkoituksensa huomioon ottaen [2]. Teollisuudessa toimivien robottien yleistyessä ja robotiikan kehittyessä tämä teknologia on tullut myös kuluttajien ulottuviin. Robotiikan leviämisen myötä myös yhä arkipäiväisempiä työtehtäviä suorittavat robotit ovat lisääntyneet, ja ei olekaan tavatonta nähdä tätä teknologiaa tavanomaistenkin kuluttajien käytössä esimerkiksi siivous- tai ruohonleikkuurobottien muodossa [3]. Teknologian kehittyessä robotteja on kehitetty paitsi töiden automatisointiin, myös viihdekäyttöön. Eräs robotiikan osa-alue on pelirobotit, joiden kanssa ihminen voi pelata erilaisia lauta- ja videopelejä. Pelaamista varten robotti tarvitsee tavan liikuttaa pelinappuloita: joko mekaanisen käden, jota ohjata tai avustajan jolle robotti antaa ohjeita. Robotti tarvitsee myös ohjelman, joka käy läpi ja valitsee robotin liikkeet. Nykyaikana tämä yleensä toteutetaan tekoälyn, ajattelua simuloivan ohjelman, avulla. Työn tavoite oli toteuttaa tekoäly shakkia pelaavalle robotille. Ongelman tutkiminen aloitettiin luomalla tekoälylle useita eri algoritmillisia toteutuksia, joita vertailtiin keskenään sekä pelillisesti että laskentatehollisesti.

8 8 2. ROBOTIIKKA Robotiikka alana käsittelee robottien suunnittelemista, rakentamista ja käyttöä. Vaikka robottien määrä yhteiskunnassa nousee jatkuvasti, yleistymistä pidättelevät yhä puutteet teknologiassa. Modernitkaan robotit eivät kykene toimimaan tuntemattomassa ympäristössä tai sopeutumaan yllättäviin tilanteisiin kovin hyvin [4]. Poikkitieteellisenä tekniikan alana robotiikan leviämisen myötä myös siihen liittyvien tieteiden määrä on kasvanut. Kun robottien historiassa robotiikka keskittyi lähinnä alun perin mekaanisiin robotteihin, siitä teknologian kehittyessä laajentaen näkökulmaansa sähkö- ja tietoteknisiin puoliin, nykypäivän ongelmiin vastaten robotiikka on yhä laajemmin ottanut voimavarakseen esimerkiksi kognitiivisen neurotieteen ja biomimetiikan. Robottien liikkeeseen inspiraatiota on haettu esimerkiksi kenguruiden pomppimisesta [5], tekoälyllisiä ongelmia taas on ratkottu hakemalla algoritmeihin nostoa biologisista neuroverkoista ja aivojen toiminnasta [6]. Ratkaisemattomista ongelmista huolimatta robotit jatkavat tasaista marssiaan ihmisten elämään, sekä työpaikalla että sen ulkopuolella. IFR (International Federation of Robotics) arvioi vuonna 2017 maailmassa myytyjen teollisuusrobottien määräksi 381,000 kappaletta, tai 30 prosenttia suurempi määrä kuin vuonna Maailman teollisuusrobottien määrä kasvoi samalla aikavälillä 15 prosenttia 2,098,000:een kappaleeseen [7]. IFR pitää tämän trendin jatkumisen myös tulevaisuudessa todennäköisenä, arvioiden että vuosien 2018 ja 2021 välillä maailmassa tullaan myymään yli 2 miljoonaa uutta teollisuusrobottia, tuplaten teollisuusrobottien kokonaismäärän. Robottien yleisesti odotetaankin tulevan alati yhä integraalisemmaksi osaksi päivittäistä elämäämme. Maallikkojen ei voida oletettavan kykenemään hallitsemaan monimutkaisia robottien ohjauslaitteita, joten hyödyn hakemiseen robotiikasta muuallakin kuin tehdaslattialla myös robottien sosiaalisen älyn kehittäminen on suuremmassa roolissa edistyksen saralla. Ihmisten ja robottien välistä vuorovaikutusta tutkii HRI (Human Robot Interaction). HRI:n tarkoitusperä on ohjata robottien ohjausjärjestelmien kehitystä ihmisille luonnollisemmaksi. Sheridan jakaa HRI:n neljään osa-alueeseen sen mukaan minkälainen ihmisen ja robotin välinen suhde on kyseisessä tilanteessa. Ensimmäisessä osa-alueessa robotti tekee rutiininomaisia toimintoja ihmisen valvonnan alaisena. Toisessa osa-alueessa ihminen antaa etäältä komentoja robotille, joka on ihmiselle vaarallisessa ympäristössä. Kolmannessa osa-alueessa on kyse kulkuneuvoista, joissa ihminen on matkustaja ja kulkuneuvon ohjaaminen on automatisoitu. Viimeinen osa-alue on robotin ja ihmisen välinen sosiaalinen kanssakäyminen. [8] 2.1. Teollisuus Robotteja käytetään teollisuudessa likaisiin, vaarallisiin ja tylsiin työtehtäviin. Teollisuudessa robotiikka tuottaa ja on tuottanut paljon kehitystä. Yleensä teollisuusrobotit ovat isoja, paikallaan pysyviä liukuhihnan varressa seisovia robottikäsiä, joiden luokse osat tuodaan käsiteltäviksi, kuten kuvassa 1 olevat teollisuusrobotit. Koska robotin työ on usein saman asian toistamista samassa pisteessä ja samalla tavalla, teollisuusrobotit vaativat työtä varten vain alkeellisia näkö- tai tuntosensoreita tai eivät vaadi sensoreita lainkaan. Toisaalta robotit tekevät usein työtä

9 9 ihmisten kanssa samoissa tiloissa, jolloin roboteissa on oltava sensoreita turvallisuussyistä [9, 10]. Robotit ovat olleet tärkeässä osassa niin sanottua kolmatta teollista vallankumousta, jossa tuotantoa automatisoidaan elektroniikalla ja informaatioteknologialla. Neljännessä teollisessa vallankumouksessa on kyse niin sanotuista kyberfyysisistä systeemeistä [11]. Käytännössä tämä tarkoittaa fyysisen maailman yhdistämistä virtuaalimaailmaan. Neljännessä teollisessa vallankumouksessa robotit kykenevät työskentelemään täysin autonomisesti ihmisten kanssa samoissa tiloissa ihmisten kanssa eli ihmisten ja robottien väliseen vuorovaikutukseen on panostettava tulevaisuudessa enemmän [12]. Kuva 1. Teollisuusrobotteja Robottiautot Yleisillä teillä ja kaupunkiajossa käytössä olevat robottiautot ovat suuri haaste suunnittelijoille ja insinööreille. Itseään ajavan auton on osattava noudattaa liikennesääntöjä, lukea liikennemerkkejä ja valoja, sekä tiemerkintöjä. Monimutkaiset ajoliikkeet kuten kaistojen vaihtaminen, peruuttaminen ja taskuparkkeeraus, mitkä sisältävät tarkkoja liikkeitä ahtaissa tiloissa vaativat laadukasta suunnittelua ja ohjelmointia. Lisäksi robottiautot ovat läheisessä toiminnassa ihmisten kanssa ja robotin on osattava varoa jalankulkijoita, pyöräilijöitä sekä muita autoilijoita jotka voivat joissain tilanteissa käyttäytyä arvaamattomasti. Robottiauton on sisällettävä useita eri tekniikoita ja sensoreita ollakseen turvallinen 1 Bernard Agullo (2005), CC-BY:

10 10 yleiseen käyttöön, kuten infrapunasensoreita esineiden havaitsemiseen, kameroita liikennemerkkien ja kappaleiden tunnistukseen ja GPS:ää paikannukseen ja nopeusrajoitusten tunnistamiseen. Ihmisten ajotyylin matkimista on hyödynnetty robottiautojen ohjelmoinnissa. Esimerkiksi Chang ym. käyttivät fuzzy behaviourtekniikkaa robotin ohjelmoimiseen. Näin robotti opetettiin seuraamaan seiniä nurkkien kautta sekä parkkeeraamaan taskuun [13]. Autoroboteista on tehty useita erilaisia tutkimuksia keskittyen eri osa-alueisiin ja teknologioihin [13, 14, 15]. Perinteisten autojen mallisten robottien lisäksi tutkijat ovat kehittäneet nykyisiä ihmisen mallisia robotteja ajamaan autoja, esimerkiksi Paolillo ym kehittivät robotin joka pystyy ajamaan ja ohjaamaan autoa sekä itsekseen että ihmisen kauko-ohjaamana [15]. Raportissaan he mainitsivat tällaisen robotin olevan avuksi esimerkiksi kriisitilanteissa joissa robotti joutuu auton ajamisen lisäksi suorittamaan muita avustus- tai pelastustehtäviä. Ullah ym. liittivät robottiautoon tavan kauko-ohjata autoa käden liikkeillä ja puhelimella sovelluksen avulla sekä äänentunnistuksella [14] Lääketiede Lääketieteessä robotiikkaa kyetään hyödyntämään sen lisäämän tarkkuuden ja virheettömyyden vuoksi. Käytännössä vaikka ihmislääkäri olisi kuinka pätevä niin tarpeeksi kehittynyt laite kykenee tekemään samat tehtävät joko yhtä hyvin tai paremmin. Zhou ym. esittelevät artikkelissaan uusimpia kohteita robotiikalle lääketieteessä. Suurin osa näistä on erilaisiin leikkauksiin kuten neurokirurgiaan suunnitellut robotit mutta mukana on myös robottiproteeseja sekä muita apuvälineitä, joilla henkilön puuttuvaa toimintakykyä pystytään korvaamaan [16]. Kirurgiassa käytettäviltä roboteilta vaaditaan äärimmäistä nanometrien tarkkuutta. Lisäksi robotit, jotka toimivat kirurgin ohjaamina tarvitsevat sensoreita potilaan turvallisuuden takaamiseksi, esimerkiksi kameroita tai painesensoreita, jotta robotin ohjaaja tietää jatkuvasti mitä robotti tekee. Lääketieteessä käytettyjen robottien on myös oltava päästöttömiä sekä helposti puhdistettavia steriiliyden takaamiseksi [16]. Lääketieteessä robotiikan automaation voidaan katsoa jakautuvan 6 eri tasolle sen mukaan kuinka itsenäisesti robotti kykenee toimimaan. Alhaisimmalla tasolla eli tasolla 0 robotit ovat täysin niiden ohjaajan hallinnassa eikä niissä ole mitään tekoälyä. Korkeimmalla tasolla eli tasolla 5 robotti on täysin itsenäinen eli kykenee hoitamaan lääketieteellisiä toimenpiteitä täysin ilman ihmisen vaikutusta. Joillain tasoilla robotti kykenee toimimaan itsenäisesti, mutta sen täytyy toimia lääkärin valvonnan alla [17] Sotilasrobotit Sotilaskäytössä yleisimpiä robotteja ovat miehittämättömät maa-alukset ja miehittämättömät ilma-alukset. Miehittämättömiä maa-aluksia käytetään pääsääntöisesti apuna tiloissa tai paikoissa, joihin ihminen ei pysty turvallisesti menemään. Miehittämättömiä ilma-aluksia käytettiin aikaisemmin vain tiedustelukäytössä, mutta viime aikoina niitä on alettu aseistamaan [18]. Euroopan parlamentti on ottanut miehittämättömien aseiden kehitykseen kantaa ja pyrkii kieltämään täysin autonomiset ja/tai sellaiset aseet, jotka kykenevät tekemään kriittiset päätökset kuten kohteen valinta ja tuhoaminen ilman ihmisen vuorovaikutusta [19].

11 Palvelu- ja viihderobotit Palvelurobotteja on sekä tavallisia että sosiaalisesti interaktiivisia. Robotti-imurin ei välttämättä tarvitse pystyä keskustelemaan ihmisen kanssa, mutta opastavalle robotille tämä on oleellista. Sosiaalisessa kanssakäymisessä oleville roboteille pyritään yleensä suunnittelemaan ihmismäisiä ulkonäön piirteitä ja liikkumisesta pyritään tekemään mahdollisimman ihmismäistä. Kuvassa 2 on Pepper-palvelurobotti josta on selvästi erotettavissa ihmismäisiä piirteitä. Tällä pyritään saada aikaan se, että käyttäjät kohtelevat robottia kuin ihmistä, eikä koneena [20]. Esimerkki sosiaalisesti interaktiivisesta palvelurobotista on Sacarino. Sacarinon tehtäviin kuuluu hotellin vieraiden kanssa keskusteleminen, neuvominen ja erilaiset palvelut, kuten vaikka taksin tilaaminen vieraan käskystä [21]. Verrattuna sosiaalisiin palvelurobotteihin, viihderobottien persoonallisuus voi olla enemmän lemmikkimäinen tai piirrettymäisempi [22]. Aikaisemmin mainitsemallemme Sacarino-robotille on annettu myös viihderobotin ominaisuuksia. Sille oli annettu yli 5000 vitsiä ja sananlaskua, joilla se pystyy viihdyttämään hotellivieraita [21]. Kuva 2. Pepper-robotti 2 2 Softbank Robotics Europe (2017), CC-BY:

12 Shakkirobotit Viihdekäyttöön suunniteltuja robotteja on ollut vuosien saatossa monenlaisia. Eräs robotiikan osa-alue on robotit, jotka pystyvät pelaamaan lautapelejä, esimerkiksi shakkia [23, 24, 25, 26]. Shakin pelaaminen on monimutkainen prosessi, joka vaatii monta erilaista mekaanista ja digitaalista osaa sekä näiden yhteistyötä. Shakkia pelatakseen robotissa on oltava koura nappuloiden liikuttamiseksi, tapa nähdä shakkilauta ja sillä olevat nappulat sekä tekoäly, joka koordinoi robotin pelaamista. Valmiita shakkia pelaavia robotteja on jo useita [23, 25, 26], mutta käytännön toteutus näiden robottien välillä vaihtelee. Esimerkiksi nappuloiden liikuttamisessa käytetyt kourat vaihtelevat monin tavoin kierrätysosista kootuista käsistä [25] teollisiin kouriin [26]. Kourat vaihtelevat esimerkiksi koon, nopeuden, liikeratojen sekä nivelten määrän mukaan. Yksi olennainen merkittävä asia shakkirobotin toiminnan kannalta on shakkilaudan ja -nappuloiden tunnistaminen. Tästä aiheesta on jo useita kattavia julkaisuja [23, 24]. Esimerkiksi Larregay ym. (2018) käyttivät shakkilaudan, nappuloiden ja siirtojen tunnistamiseen videokuvaa ja digitaalista kuvankäsittelyä [23], kun taas Jiao ym. korjasivat kameran linssin vääristämän kuvan pelilaudasta nurkantunnistusalgoritmin ja referenssilaudan avulla [24]. Luonnollisesti shakkirobotin toiminnassa avainasemassa on myös tekoäly, joka toimii robotin aivoina. Tekoälyn avulla robotti kykenee ymmärtämään shakin säännöt, tekemään päätöksiä liikkeistään sekä tunnistamaan vastapelaajan siirrot. Näiden prosessien on myös pystyttävä kommunikoimaan keskenään, jotta robotti pystyy toimimaan.

13 13 3. TEKOÄLY Tekoälyllä tarkoitetaan laitteita ja ohjelmistoja, jotka imitoivat älyllistä ajattelua. Teknisempi selitys tekoälylle on järjestelmä, joka pystyy tulkitsemaan ulkoista dataa ja käyttämään tästä kerättyä tietoa tiettyjen ongelmien ratkaisussa [27]. Nykyään käytössä olevien tekoälyjen sanotaan olevan heikkoja tekoälyjä, koska ne on suunniteltu jotain tiettyä tehtävää varten. Vahvan tekoälyn täytyisi pystyä ratkaisemaan käytännössä kaikki sille annetut tehtävät yhtä tehokkaasti kuin nykyinen tekoäly kykenee ratkaisemaan ongelman, jonka ratkaisemiseen se on suunniteltu [28]. Ihmisen etu tekoälyyn nähden on sopeutumiskyky. Ihminen kykenee reagoimaan ympäristön muutoksiin paremmin kuin kone [29]. Andreas Kaplan ja Michael Haenlein jakavat tekoälyn kolmeen eri osa-alueeseen: analyyttiseen tekoälyyn (Analytical AI), ihmispohjainen tekoäly (Human-Inspired AI) sekä inhimillistetty tekoäly (Humanized AI). Analyyttisessä tekoälyssä on kyse pelkästään kognitiivisesta älystä, eli tämänlaiset järjestelmät vain tekevät päätöksiä sille saatavissa olevasta tiedosta. Ihmispohjaisessa tekoälyssä laitteella on myös kyky ymmärtää tunneälyä. Inhimillistettyä tekoälyä ei olla vielä onnistuttu luomaan, mutta käytännössä kyseessä on vahva tekoäly, joka pystyisi toimimaan pätevästi kaikissa mahdollisissa tilanteissa. [27] 3.1. Koneoppiminen Koneoppimisella tarkoitetaan sitä, kun ohjelmisto käyttää itse sille annettua tietoa oman toimintansa optimoinnissa [30]. Tämä tieto voi olla esimerkkidataa tai ohjelmiston omista aikaisemmista toiminnoista kerättyä dataa. Esimerkkidata voi olla vaikkapa suuri määrä kuvia, joilla pyritään optimoimaan kuvantunnistusohjelma. Koneoppiminen on tarpeellista varsinkin tilanteissa, joissa ihmisellä ei ole tarpeellista tietoa ratkaistavasta ongelmasta tai kyseinen tieto on ihmiselle liian vaikeasti ymmärrettävissä [30]. Koneoppimisella pyritään vähentämään tarvetta ohjelmoida kaikkea alusta alkaen itse, vaan ohjelman annetaan itsenäisesti luoda tarpeelliset säännöt ongelman ratkaisua varten [31] Oppimisalgoritmit Koneoppimisen kolme yleisintä oppimisalgoritmia ovat ohjattu oppiminen, ohjaamaton oppiminen ja vahvistusoppiminen. Ohjatussa oppimisessa esimerkkidata koostuu syötteistä ja tuloksista, joiden pohjalta pyritään luomaan malli joka pystyy antamaan esimerkkidataan kuulumattomalle syötteelle sopivan tuloksen. Ohjatulla oppimisella ratkaistavia ongelmia ovat regressio- ja lajitteluongelmat. Regressioongelmassa testiaineiston pohjalta luodaan regressiosuora, esimerkiksi y=a+bx, jossa y on tulos ja x syöte. Muuttujat a ja b määritellään niin että yhtälöä voidaan käyttää ennustamaan y:n arvoja eri x arvoilla. Luokitteluongelmassa pyritään ennustamaan syötteelle sopiva luokka esimerkkidatan mukaan. Ohjaamattomassa oppimisessa mallia ei rakenneta syötteiden ja tulosten pohjalta. Esimerkkidataa ei ole luokiteltu eli se koostuu käytännössä vain tuloksista, jotka jaotellaan luokkiin ja pyritään luomaan näitä luokkia vastaava malli. Käytännön sovelluksia voi olla esimerkiksi suuren sekalaisen datamäärän lokerointi samankaltaisten kanssa.

14 14 Vahvistusoppimisessa oppiminen tapahtuu ympäristön antaman palautteen mukaan. Palaute voi olla positiivista tai negatiivista. Oppiminen tapahtuu yrityksen ja erehdyksen kautta, kun agentti pyrkii saamaan mahdollisimman paljon positiivista palautetta. Yksi vahvistusoppimisen käytännön sovelluksia ovat pelitekoälyt. Esimerkiksi AlphaGo Zero tekoäly opetettiin pelaaman Go-peliä vahvistusoppimisella [32]. [30, 33] Neuroverkot ja syväoppiminen Neuroverkkojen tarkoituksena on luoda algoritmi, jonka toiminta on lähellä ihmisen aivojen toimintaa. Neuroverkko koostuu neuroneista, jotka saavat tietyn määrän syötteitä tietyillä painoarvoilla ja laskevat aktivaatiofunktion mukaisen ulostulon [33]. Yksinkertaisimmillaan neuroverkko voi koostua vain yhdestä neuronista, mutta neuroneista voidaan koota monimutkaisempia kokonaisuuksia, jotka koostuvat kolmesta kerroksesta: syötekerroksesta, piilokerroksesta ja ulostulokerroksesta [33]. Syötekerros saa ulkopuoliset syötteet, joista lasketut ulostulot menevät seuraavaan kerrokseen syötteiksi. Piilokerros saa nimensä siitä, että se ei näy ulospäin koska sille ei voi antaa suoraan syötettä eikä se anna näkyvää ulostuloa. Piilokerros laskee tuloksen syötekerrokselta saamiensa arvojen mukaan ja antaa tuloksen eteenpäin ulostulokerrokselle. Ulostulokerros antaa ulostulon saamiensa arvojen mukaan. [34] Neuroverkot, joissa on useampi kuin yksi piilokerros kutsutaan syväksi neuroverkoksi. Syväoppimisella tarkoitetaan koneoppimisen toteuttamista käyttämällä syviä neuroverkkoja [34]. Syväoppimisen etu perinteisiin menetelmiin verrattuna on sen parempi suorituskyky sekä kyky ratkaista monimutkaisempia ongelmia [33] Tekoäly robotiikassa Jotta robotti kykenee toimimaan autonomisesti, tarvitaan laitteeseen tekoäly, joka kykenee tekemään päätöksiä robotin toiminnasta. Tekoälyllä on neljä yleistä käyttötarkoitusta robotiikassa. Nämä ovat robotin näkökyky, asioista kiinni ottaminen, liikkumisen hallinta ja datan ymmärtäminen [35]. Jain ym. mukaan konenäön tarkoitus on kerätä informaatiota sille annetuista kaksiulotteisista kuvista [36]. Robotiikassa konenäöllä kyetään antamaan robotille kyky havainnoida sen ympäristöä, jotta robotti kykenee toimimaan sille toivotulla tavalla Shakkitekoäly Täydellinen shakkitekoäly kykenisi laskemaan kaikki mahdolliset permutaatiot kummankin pelaajan kaikille siirroille, täten pystyen ohjaamaan pelin itselleen otollisia siirtoja pitkin loppuun asti ollen käytännössä voittamaton. Shakin korkean kompleksisuuden vuoksi tämä ei ole kuitenkaan mahdollista. Claude Shannon, artikkelissaan Programming a Computer for Playing Chess, esitti tyypillisen shakkipelin siirtojen konservatiiviseksi alamääräksi [37]. Tämän luvun kokoa usein havainnollistetaan vertaamalla sitä atomien määrään havaittavassa maailmankaikkeudessa, joka on noin [38]. Juuri tämä kompleksisuus tekee shakista erinomaisen kentän tekoälyn kehitykselle. Kun peliä ei voi ratkaista pelkällä raa alla laskentateholla, on tekoälyn hyödyntäminen

15 15 ja kehittäminen käytännössä ainoa vaihtoehto vakuuttavan tietokonevastustajan luomiseksi. Vaikka shakkia pelinä ei olekaan ratkaistu, shakkitekoälyt sisältävät usein valmiiksi tallennettuja loppupelejä. Näiden avulla tekoälyt pystyvät säästämään laskentatehoa ja pelaamaan täydellisesti, kun pelinappuloita on vain muutama jäljellä. Kaikki 3-5 nappulan ja osa 6 nappulan loppupeleistä on mahdollista tallentaa vain 21 gigatavun kokoiselle muistille [39] Shakkitekoälyjen historia Ensimmäisenä shakkitekoälynä voidaan pitää Alan Turingin ja David Champernownen suunnittelema Turochamp. Turochampia ei koskaan saatu ohjelmoitua tietokoneelle käytettäväksi. Se oli vain joukko sääntöjä, joiden avulla paras siirto kyetään analysoimaan. Turochamp onnistui voittamaan Champernownen vaimon shakissa. [40, 41] Ensimmäisten alkukantaisimpien shakkiohjelmien suurin ongelma oli niiden rajattu toiminta ja tekoälyn yleinen heikkous verrattuna ihmispelaajaan. Kaikista alkeellisimmat eivät pystyneet pelaamaan kokonaista shakkipeliä uskottavasti. Ensimmäinen oikea shakkitietokone vuonna 1951 oli Dietrich Prinzin Ferrantitietokoneella pyörivä ohjelma, joka kykeni ratkaisemaan shakkiongelmia, joissa ratkaisu oli shakkimatti ja sen täytyi olla kahden siirron päässä. Ohjelma kävi läpi kaikki mahdolliset siirrot, joten se oli varsinkin nykystandardeilla hidas. Yhden ongelman ratkaisuun meni noin 15 minuuttia. [40, 41] Vuonna 1962 Alan Kotokin ja John McCarthyn luoma shakkiohjelma vastasi taidoiltaan jo noin 100 peliä pelannutta aloittelijaa [42]. Nykyään jopa tavalliselle tietokoneelle saatava shakkitekoäly pystyy pelaamaan suurmestarin tasolla [43]. Vuonna 1997 IBM teki historiaa, kun sen luoma shakkitietokone Deep Blue voitti sen aikaisen hallitsevan shakin maailmanmestarin Garry Kasparovin. Deep Bluen älykkyys perustui suurimmalta osalta vain pelkkään raakaan laskentatehoon. Se kykeni analysoimaan keskimäärin 100 miljoonaa tilannetta sekunnissa ja noin kolmen minuutin haulla se kykeni analysoimaan kaikki siirrot keskimäärin 12.2 siirron päähän. [44] Modernit shakkitekoälyt ovat ohittaneet ihmiset pelitaidoillaan. Arpad Elo kehitti shakkiin Elo-järjestelmän, jolla pelaajien taitotasoja voidaan kuvata Elo-luvun avulla. Elo-arvo määräytyy pelattujen pelien, voittojen sekä vastapelaajan Elo-arvon mukaan [45]. Tällä hetkellä Elo-arvon mukaan mitattuna paras julkisesti saatavilla oleva shakkitekoäly on Stockfish, Elo-arvonaan yli 3400 [46]. Parhaan ihmispelaajan Magnus Carlsenin Elo-arvo taasen on hieman yli 2800 [47]. Aikaisemmin shakkitekoälyt arvioivat siirtojen otollisuuden asiantuntijoiden ja suurmestarien avulla luoduilla heuristiikoilla. Nykyään koneoppimista on alettu käyttämään optimaalisen heuristiikan luomisessa. DeepMindin AlphaZerolla on saatu aikaan erittäin tehokkaita tekoälyjä. AlphaZero käyttää vahvistusoppimista ja syviä neuroverkkoja. Neljän tunnin opettamisen jälkeen AlphaZero oli parempi shakissa kuin Stockfish. AlphaZeron etu perinteisiin käsin tehtyihin heuristiikkoihin on taitojen lisäksi sen monikäyttöisyys. Perinteistä heuristiikkaa voi käyttää vain siinä pelissä mihin se on alun perin luotu, mutta AlphaZerolle on kyetty opettamaan shakin lisäksi myös shogin ja go:n pelaaminen tyhjästä, eli sille annettiin ainoastaan pelin säännöt pohjatietoina. DeepMind on kehitellyt myös vastaavia oppivia algoritmeja myös muillekin kuin perinteisille vuoropohjaisille peleille. Vuonna 2019 DeepMindin

16 16 kehittämä AlphaStar voitti ammattilaispelaajia reaaliaikaisessa Starcraft 2 - strategiapelissä [48]. [49] Päätöspuu Shakkipelin päätöspuu luodaan tekemällä jokaiselle mahdolliselle siirrolle ja niistä koituville siirroille omat puunhaarat. Tämän jälkeen näille solmukohdille on mahdollista määrätä heuristiikkaa seuraten siirrosta koituva saatu hyöty. Päätöspuu on tämän jälkeen mahdollista käydä läpi halutulla algoritmilla, tuottaen optimaalisen reitin puun läpi ja mahdollistaen parhaan siirron valitsemisen reitin perusteella. Reitti on mahdollista etsiä millä tahansa hakupuualgoritmilla, mutta shakissa varsinkin minimax-pohjaiset algoritmit ovat yleisesti olleet suosittuja Sijainnin heuristinen arviointi Algoritmisissa shakkitekoälyissä heuristista arviointia käytetään muuttamaan pelin tietynhetkinen tilanne diskreetiksi arvoksi ja vertailemaan eri siirtojen otollisuutta. Koska heuristiikka toimii shakkialgoritmin silminä, on sen määrittely avainasemassa tekoälyn vakuuttavuutta määrittäessä. Hyväkin tekoäly on vain yhtä hyvä kuin sille syötetty tieto, ja heuristiikan ollessa epäsopiva ei algoritmi kykene arvioimaan pelitilannetta tarpeeksi syvällisesti pystyäkseen tekemään informoituja taktisia päätöksiä. Asettaessaan pelinappuloille numeerisia arvoja laadukas heuristiikka ottaa huomioon eri nappulatyyppien lisäksi monia muita ominaisuuksia kuten nappuloiden sijainnin ja määrän, pelin vaiheen ja kuninkaan turvallisuuden. Shakkitekoälyissä heuristiikka usein perustuu suureen määrään yksilöllisesti pieniä muutoksia, jotka muuttavat nappuloiden arvoa tiettyjen kriteerien perusteella Materiaali Pelinappuloiden materiaalinen arviointi asettaa eri pelinappuloille arvot niiden tyypin mukaan. Materiaalisia arvoja käytetään alustana, jonka päälle muu heuristiikka kehitetään. Nämä muut kehittyneemmät heuristiikat muokkaavat nappuloiden arvoa joko positiiviseen tai negatiiviseen suuntaan, riippuen arviointituloksesta. Yksinkertainen ja suosittu metodi materiaaliseen arviointiin on antaa sotilaille arvo 1, lähetille ja ratsulle arvo 3, tornille arvo 5 ja kuningattarelle arvo 9. Kuninkaan arvoksi asetetaan mielivaltaisesti vain joku erittäin suuri luku, kuten Larry Kaufman, artikkelissaan The Evaluation of Material Imbalances, ehdottaa hieman otollisemmaksi materiaaliseksi arvioinniksi antaa sotilaille arvo 1, ratsulle ja lähetille arvo 3.1/4, tornille arvo 5 ja kuningattarelle arvo 9.3/4 [50]. Nämä arvioinnit kuitenkin uhraavat tarkkuutta esitystavan yksinkertaistamiseksi. Tekoälyjen materiaalinen arviointi ei olekaan yleensä näin helposti luettavassa formaatissa, vaan esimerkiksi vahva shakkitekoäly Stockfish jakaa pelin keskivaiheessa nappuloille perusarvot 128 (sotilas), 782 (ratsu), 830 (lähetti), 1289 (torni) ja 2529 (kuningatar).

17 Pelin vaiheet Shakkipelit jaetaan tyypillisesti kolmeen eri pelivaiheeseen: alku-, keski- ja loppupeliin. Eri pelivaiheet eivät ole tarkasti määriteltyjä mutta yleisesti alkupeli koostuu pelilaudan kehittämisestä, päättyen ja siirtyen keskivaiheeseen kun pelaajat ovat kehittäneet kaikki tai suurimman osan nappuloistaan. Loppuvaiheessa nappuloita on vain vähän jäljellä, ja kuningas tulee aktiiviseksi osaksi peliä. Kun yleisesti tunnustettuja vaiheita on useita, tarvitsevat shakkitekoälyt myös eri vaiheisiin eri lähestymistavat. Usein tekoälyt suorittavat alkuvaiheen pelinappuloiden kehittämisen seuraten niille valmiiksi tallennettuja avauskirjastoja, ja siirtyvät analyyttisempaan heuristiikkaan vasta pelin keskivaiheessa. Loppuvaiheeseen siirryttäessä algoritmi tekee konkreettisia muutoksia pelinappuloiden arvoon. Stockfish esimerkiksi lähes kaksinkertaistaa sotilaiden arvon. Shakkitekoälyt ovat vahvimmillaan varsinkin pelin loppuvaiheessa. Mitä vähemmän pelinappuloita on jäljellä, sitä paremmalla todennäköisyydellä tekoäly pystyy ratkaisemaan pelin joko raa alla laskentateholla tai tutkimalla käytössä olevia tallennettuja ratkaistuja loppupelejä Sotilaat Sotilaat, matalan liikkuvuuden pelinappuloina, hyötyvät heuristiikasta suuresti. Sotilaita käytetään usein peleissä vihollisnappuloiden jahtaamisen sijasta suojaamaan tiettyjä nappuloita tai hallitsemaan tiettyä aluetta pelilaudalla. Tämänlaiseen analyysiin ei päästä pelkällä raa alla siirtojen laskemisella, vaan tarvitaan kyseisille nappuloille räätälöity heuristiikka halutun käyttäytymisen varmistamiseksi. Sotilaat saavat arvioinnissaan lisäarvoa varsinkin keskustan tärkeiden ruutujen hallinnasta, yhtenäisen sotilasketjun ylläpitämisestä ja kuninkaan suojaamisesta. Nappulan arvoa taas vähennetään mikäli siirrosta koituu sotilaiden linjan avautuminen, sotilaan jääminen yksin ilman suojausta tai sotilaan eteneminen pelilaudalla syvemmälle kuin muut sotilaat. Jo näillä melko yksinkertaisilla mutta tärkeillä evaluoinneilla varmistetaan älykäs heuristiikka sotilaille, jossa pelinappulat eivät avaa itseään liikaa vastustajan hyökkäyksille ja suojaavat pelilaudan takalinjaa. Muita mahdollisia arviointimenetelmiä sotilaille ovat muun muassa vapaan linjan pelilaudan toiseen päähän ja hyvien tornitusmahdollisuuksien hakeminen sekä sotilaiden peräkkäisen asettelun ja tien avaamisen vastustajan sotilaille välttäminen Tila ja pelinappuloiden sijainti Shakkilaudalla ja heuristisessa arvioinnissa kaikki ruudut eivät ole samanarvoisia. Pelaaja joka hallitsee suurempaa pelialuetta ja pelilaudan keskustaa saa myös enemmän mahdollisuuksia hyökätä ja vapautta liikuttaa pelinappuloitaan, mahdollistaen pelitilanteen kehityksen itselleen yhä otollisempaan suuntaan. Hallittu tila voidaan arvioida esimerkiksi ottamalla huomioon sotilaiden sekä suojassa olevien nappuloiden syvyyden ja muuttaa näiden perusteella nappulan arvoa sen sijainnin perusteella. Yksi tapa määrittää ruuduille yksilölliset arvot on tehdä jokaiselle eri nappulatyypille oma taulukko pelilaudasta ja määrätä näiden alkioille painoarvot jotka kannustavat haluttua pelityyliä. Yksinkertaisimmassa muodossaan tämä saattaa olla vain Manhattan-etäisyys pelilaudan keskustasta. Stockfish antaa c3-f6 suorakulmiossa

18 18 sijaitseville sotilaille painotettua lisäarvoa parantaakseen aloitustaan ja kontrolliaan pelitilanteesta Heuristiikka koneoppimisessa Koneoppimisella luodut shakkitekoälyt uhmaavat odotuksia siinä mielessä, että niillä ei ole samanlaista heuristiikkaa kuin mihin on totuttu perinteisissä algoritmisissa tekoälyissä. Perinteisesti heuristiikat ovat käsin ohjelmoituja funktioita, mutta koska koneoppiva tekoäly sopeutuu sille syötettyyn dataan, sillä ei ole varsinaista omaa heuristiikkafunktiota. Tavat, joilla koneoppivat tekoälyt analysoivat pelilautaa ja pelitilannetta perustuvat neuroverkkoihin ja ovat usein ihmiselle käsittämättömiä. Tämä monimutkaisuus kuitenkin mahdollistaa paljon syvemmän analyysin luomisen kuin mihin parhaatkin ihmisohjelmoijat kykenisivät. Shakkitekoälyjen kärkirintama ja moderni kehitys keskittyykin juuri koneoppimiseen Minimax-algoritmi Minimax-algoritmi voidaan ajatella kahden funktion, minimoinnin ja maksimoinnin, yhdistelmänä. Maksimointifunktiota käytetään tekoälyn omalla vuorolla ja minimointifunktiota vastustajan vuorolla, päämääränä tuottaa vuoron mukaan joko mahdollisimman suuri pistevoitto tai mahdollisimman pieni pistehäviö. Algoritmi käy tällä tavalla rekursiivisesti koko päätöspuun läpi haluttuun syvyyteen saakka ja valitsee pienimmistä minimointifunktion ja suurimmista maksimointifunktion tuloksista optimaalisimman reitin. Naiivi minimax käy kuitenkin läpi paljon turhia solmuja päätöspuussa ja shakissa jokaiselle siirrolle optimaalisen seuraavan siirron etsiminen nostaa etsimisaikaa eksponentiaalisesti, minkä takia sille on kehitetty useita hyödyllisiä optimisaatiotekniikoita, näistä suosituimpana alfa-beta -karsinta. Kuvassa 3 on minimax-algoritmin hakupuu, joka lopulta päätyy arvoon -7. Tasoilla 0 ja 2 algoritmi valitsee arvoista suuremman ja tasoilla 1 ja 3 arvoista pienemmän. Kuva 3. Minimax-algoritmin päätöspuu 3 3 Nuno Nogueira (2006), CC-BY:

19 Syvyys Shakin kompleksisuuden vuoksi päätöspuun syvyys kasvaa eksponentiaalisesti. Claude Shannon arvioi mahdollisten eri shakkipelien lukumääräksi 10^120. Taulukossa 1 on esitetty mahdollisten erilaisten shakkipelien lukumäärä siirtojen edetessä. Taulukko 1. Mahdollisten eri pelien lukumäärä shakissa Siirtojen määrä Mahdollisten eri pelien lukumäärä , , ,865, ,060, ,195,901, ,998,978, ,439,530,234, ,352,859,712, Alfa-beta -karsinta Alfa-beta -karsinta on optimisaatiotekniikka minimax-algoritmin tuottaman päätöspuun supistamiseksi. Alfa-beta -karsinnalla on mahdollista välttää päätöspuun haarat joita minimax ei tule lopussa valitsemaan, käymättä niitä kuitenkaan kokonaan läpi. Alfa-beta -karsinnan tehokkuus riippuu siitä, missä järjestyksessä algoritmi käy päätöspuun solmut läpi. Mikäli algoritmi vierailee puun haaroissa huonoimmassa mahdollisessa järjestyksessä, muutoksia ei välttämättä tapahdu ollenkaan. Keskimääräisesti alfa-beta -karsinta on kuitenkin aina minimax-algoritmia tehokkaampi. Kuvassa 4 minimax-algoritmi ei käy läpi harmaiksi värjättyjä alkioita, koska ne eivät voi antaa parempaa tulosta kuin jo tutkitut alkiot. Kuva 4. Minimax-algoritmin päätöspuu alfa-beta -karsinnalla 4 4 Jez9999 (2007), CC-BY:

20 Alfa-beta -karsinnan optimisaatiotekniikoita Kuten alfa-beta -karsinta on minimaxille kehitetty optimisaatiotekniikka, myös alfabeta -karsinnalle itselleen on kehitetty useita etsintää nopeuttavia tai laskentatehoa säästäviä lisäosia Transpoositaulukko (Transposition table) Shakissa transpoosi tarkoittaa pelitilannetta, johon on mahdollista saapua monien eri siirtojen sarjan kautta. Transpoositaulukko toteutetaan tallentamalla algoritmin läpikäytyjen transpoosien minimax-tulos hajautustauluun, käyttäen avaimena Hashalgoritmilla luotua tiivistettä pelitilanteesta. Mikäli algoritmi löytää tulevissa etsinnöissään saman pelitilanteen voi se hakea sekä sen että sen aiemmin laskettujen alahaarojen minimax-tuloksen. Näin algoritmi kykenee parhaassa tapauksessa löytämään optimaalisen siirron lähes välittömästi ja ohittamaan laskemisen kokonaan. Koska alfa-beta -karsinnan tehokkuus riippuu suuresti siitä missä järjestyksessä algoritmi käy päätöspuun läpi, transpoositaulukosta on myös hyötyä päätöspuun etsinnän aloittamisen suuntaamisessa. Mikäli transpoositaulukossa on aiemmin löydetty laadukkaalta vaikuttava siirto, päätöspuun tutkimisen aloittaminen siitä parantaa optimaalisen siirron aikaisin löytymisen mahdollisuutta satunnaiseen tutkimiseen verrattuna. [51] Iteroiva syventäminen (Iterative deepening) Iteroiva syventäminen on optimisaatiotekniikka päätöspuun etsintään käytetyn ajan hallitsemiseen. Syventämisessä jokainen päätöspuun taso käydään kerrallaan läpi ja tasolta löydetty optimaalinen reitti merkataan ylös ennen haun syventämistä seuraavaan tasoon. Syventämisprosessille asetetaan jokin maksimiaika ja tämän ajan täyttyessä tai haun päästessä haluttuun syvyyteen haku keskeytetään ja algoritmi palauttaa senhetkisen parhaan siirron. Iteroivaa syventämistä on ajanhallinnan lisäksi myös mahdollista käyttää päätöspuun haarojen tutkimisen suuntaamiseen, nopeuttaen hakua. [52] Aspiraatioikkuna (Aspiration window) Aspiraatioikkuna nopeuttaa hakua rajaamalla alfan ja betan raja-arvoja, samalla pienentäen myös tarvittujen laskujen joukkoa ja lyhentäen päätöspuun tutkimiseen käytettyä aikaa. Raja-arvoja ei kuitenkaan ole mahdollista asettaa tarkasti, joten rajaus pohjimmiltaan perustuu aiemman tiedon perusteella tehtyyn informoituun arvaukseen. Mikäli tämä arvaus on väärin, tarkistetaan oliko luku raja-arvon ala- vai yläpuolella, minkä jälkeen vastaavaa raja-arvoa laajennetaan tarvittuun suuntaan ja haku suoritetaan uudelleen. [53] Tappajaheuristiikka (Killer heuristic) Tappajaheuristiikka on päätöspuun tutkimista suuntaava optimisaatiotekniikka. Heuristiikka toimii oletuksella, että alfa-beta -karsinnan aiemmin löytämät laadukkaat

21 21 siirrot ovat tulevaisuudessakin yhä laadukkaita, vaikka ne tehtäisiin toisesta (samanlaisesta) paikasta. Ohjelma tallentaa näitä siirtoja tulevaa tarkastelua varten ja siirron ollessa laillinen aloittaa etsintänsä niistä, nostaen potentiaalisesti suosiollisten siirtojen hakuprioriteettia. [54] 3.4. Shakkitekoälyjen ongelmakentät Shakki on tarpeeksi monimutkainen peli, että sen täydellinen matemaattinen ratkaisu on käytännössä mahdotonta. Pelin ratkaisulla tarkoitetaan sitä, että kone kykenisi voittamaan pelin aina. Shakissa on yli mahdollista eri tilannetta, joten kaikkien mahdollisten siirtojen läpikäyminen on mahdotonta [43]. Esimerkiksi tammi julistettiin 2007 heikosti ratkaistuksi eli tekoäly pystyy ratkaisemaan lopputuloksen, sekä strategian, jolla tähän päädytään [55]. Shakki jakautuu kolmeen eri vaiheeseen: avaukseen, keskipeliin sekä loppupeliin. Pelillisesti katsottuna shakkitekoälyt ovat yleensä parhaimmillaan keskipelissä. Varsinkin loppupelissä siirrot ovat monesti niin hienovaraisia, ettei tietokone kykene niitä ymmärtämään [43]. Kasparovin mukaan shakkitietokoneiden yhdeksi ongelmaksi pelättiin muodostuvan sen, että peleistä tulee pitkäveteisia kun siirrot ovat liki täydellisiä [56]. Kasparov on kuitenkin sitä mieltä, että Googlen oppiva tekoäly AlphaZero antaa merkkejä siitä, että näin ei ole. AlphaZero on kehittänyt omanlaisen suhteellisen aggressiivisen pelityylin, joka on ollut tehokasta [56].

22 22 4. TOTEUTUS Työn tarkoituksena oli tuottaa vakuuttava, shakkia laillisesti pelaava tekoäly rajatun laskentatehon ympäristölle. Tähän pyrittiin iteroimalla alkeellista päätöspuun etsintäalgoritmia, pyrkimyksenä asteittaisten parannusten kautta tuottaa kilpailukykyinen shakkitekoäly. Kehitysympäristönä käytettiin Raspberry Pi 3 - minitietokonetta. Tekoäly toteutettiin käyttäen Pythonia. Pelitilanteen seuraamista ja sääntöjä varten käytettiin avoimen lähdekoodin python-chess -kirjastoa. Kirjasto tukee Universal Chess Interface -protokollaa, joka on shakkitietokoneille suunniteltu protokolla, jolla ne saadaan toimimaan yhdessä käyttöliittymien kanssa. Pelilauta on Forsyth-Edwards Notation -standardin mukainen. Esimerkiksi shakkipelin alkutilanne FEN-notaatiolla on rnbqkbnr/pppppppp/8/8/8/8/pppppppp/rnbqkbnr w KQkq 0 1. Tulkattava ohjelmointikieli kuten Python ei ole optimaalinen vaihtoehto hyvän hyötysuhteen omaavan tekoälyn tekemiseen, mutta kielen valmiit kirjastot mahdollistivat itse shakkipelin ohjelmoimisen välttämisen, mikä olisi ollut pakollista muilla ohjelmointikielillä Raspberry Pi 3 Raspberry Pi:n laskentateho on erittäin rajattu, joten päätöspuun hakunopeuteen pyrittiin vaikuttamaan tehostamalla hakualgoritmeja. Taulukossa 2 on esitetty Raspberry Pi 3:n tekniset tiedot. Taulukko 2. Raspberry Pi 3 -minitietokoneen tekniset tiedot SoC Broadcom BCM2837 CPU 4x ARM Cortex-A53, 1.2Ghz GPU Broadcom VideoCore IV RAM 1GB LPDDR2 (900 MHz) Networking 10/100 Ethernet, 2.4Ghz n wireless Bluetooth Bluetooth 4.1 Classic, Bluetooth Low Energy Storage microsd GPIO 40-pin header, populated Ports HDMI, 3.5mm analogue audiovideo jack, 4x USB 2.0, Ethernet, Camera Serial Interface (CSI), Display Serial Interface (DSI) 4.2. Shakkitekoäly Tekoälyn hakualgoritmiksi valittiin minimax johon lisättiin alfa-beta -karsinta, avauskirjojen luku, iteroiva syventäminen sekä transpoositaulukot. Minimax-algoritmi valittiin toteutuksen aloituspisteeksi varsinkin sen peliteoriallisen merkittävyyden ja laskentatehollisen hyötysuhteen vuoksi. Algoritmi on suosittu etenkin kahden pelaajan nollasummapelejä arvioidessa, mikä tekee algoritmista

23 23 luonnollisen valinnan pohjaksi juuri shakkitekoälyä varten. Algoritmi on myös hyvin modulaarinen, mikä mahdollistaa erilaisten optimisaatiotekniikoiden nopean lisäämisen ja vaihtelun. Tämä modulaarisuus mahdollistaa myös alkuperäisen algoritmin tehokkuuden vaiheittaisen nostamisen ja näiden eri toteutusten vertailun keskenään. Nykyaikana shakkitekoälyjen terävin kärki kohdistuu perinteisten algoritmien sijaan koneoppimisen hyödyntämiseen tekoälyjä luodessa. Työssä käytetty laskentateho oli kuitenkin liian rajallinen että koneoppimisen tarvitsema iteraatioprosessi olisi ollut varteenotettava vaihtoehto tekoälyn algoritmiselle toteutukselle. Täten koneoppiminen rajattiin pois mahdollisena ratkaisuna tutkimusongelmaan Minimax Minimax-algoritmi toteutettiin Pythonilla. Lautatilanteen seuraamiseen käytettiin python-chess -kirjaston board-funktiota ja kaikki lailliset siirrot saatiin valmiilla funktiolla, joka antoi lautatilanteen kaikki lailliset siirrot. Lailliset siirrot saatiin listaan, joka oli aina tietyssä järjestyksessä. Listan sekoituksella saimme algoritmille hieman satunnaisuutta, koska jos algoritmi löytää kaksi yhtä hyvää siirtoa niin se valitsee niistä ensimmäiseksi löydetyn Alfa-beta -karsinta Alfa-beta -karsintaa käyttäessä laillisten siirtojen listaa sekoittamalla on mahdollista saada nopeampia hakuaikoja, riippuen siitä sekoitetaanko siirrot vain satunnaisesti vai tietyssä järjestyksessä Avauskirjat Tekoälyllä oli yleisesti vaikeuksia pelin avauksissa, joten siihen implementoitiin PolyGlot-avauskirjat. Ennen kuin tekoäly aloittaa tilanteen laskemisen minimaxalgoritmilla, se tarkistaa onko kyseinen pelitilanne jo tallennettuna avauskirjaan. Avauskirja antaa tilanteeseen sopivat siirrot, sekä niiden painoarvot. Toinen avauskirjan tekoälylle tuoma hyöty oli sen nopeus. Avauskirjoja käyttäessä ensimmäisten siirtojen laskenta-aika oli käytännössä olematon, joten ne vähensivät huomattavasti sitä aikaa, jonka pelaaja joutuu odottamaan siirtoja koko pelin aikana. Osassa avauskirjoja ongelmaksi muodostui se, että ne olivat liian optimaalisia. Nämä avauskirjat tarjosivat joka tilanteeseen vain yhden siirron: parhaan mahdollisen. Kyseiset avauskirjat olisivat olleet parempia jos tarkoituksenamme olisi ollut tehdä pelillisesti mahdollisimman tehokas tekoäly, koska eri siirtojen vähyyden sijaan ne sisälsivät siirtoja huomattavasti syvemmälle peliin. Tämä olisi kuitenkin tehnyt avauksista turhan kaavamaisia, joten valitsimme mieluummin avauskirjan, joka tarjosi useampia eri siirtoja yhdelle tilanteelle. Näistä siirroista valittiin satunnaisesti yksi käyttäen hyväksi avauskirjan niille antamia painoarvoja. Avauskirjaksi valittiin lopulta Brainfishin Polybook. Toinen ongelma ilmeni, kun tekoälyn vastapelaaja teki siirtoja, joita ei löytynyt avauskirjoista. Tämä ongelma toistui yleensä silloin, kun pelaaja oli täysin amatööri eikä osannut yhtään avaussiirtoa. Ongelma johtui siitä, että

24 24 avauskirjaan ei ole oleellista laittaa siirtoja, joita tapahtuu vain erittäin harvoin oikeassa pelitilanteessa. Tämä ongelma voitaisiin korjata erilaisella implementaatiolla, jossa tekoäly ymmärtäisi paremmin, milloin vaihtaa pois avauskirjasta hakualgoritmiin. Tekoälyn tulisi huomata, milloin vastapelaajan siirto on avauksen kannalta turha ja milloin siirto vaatisi sen huomiota sekä tarkempaa analyysiä Iteroiva syventäminen ja transpoositaulukot Tekoälyyn toteutettiin iteroiva syventäminen, joka toimii tarvittaessa myös ilman aikarajoituksia. Heuristiikka ei ottanut huomioon sitä, kuinka syvältä paras arvo löydettiin. Ongelmaksi tämä muodostui tilanteissa, jossa algoritmi löytää esimerkiksi shakkimatin syvyydestä 3 ensin ja sen jälkeen syvyydestä 1. Koska siirrot johtavat samaan lopputulokseen niin algoritmi valitsee sen siirron, jonka se löysi ensin. Iteroivalla syventämisellä algoritmi tutkisi ensin 1 syvyyden kokonaisuutena ja löytäisi shakkimatin sieltä eikä sen tarvitsisi edes analysoida tilannetta yhtään syvemmälle. Iteroivalla syventämisellä siis saatiin lyhennettyä hakuaikoja pelitilanteissa, jossa algoritmi löytää siirron joka johtaa shakkimattiin. Algoritmi oli erittäin heikko loppupeleissä, koska hakualgoritmin syvyys ei usein riittänyt löytämään sopivaa siirtoa. Ihmispelaajaa vastaan tämä oli iso ongelma, koska nappuloiden vähentyessä ihminen kykenee miettimään tilanteita syvemmälle kuin matalan tason tekoäly. Tämä pyrittiin ratkaisemaan asettamalla iteroivalle syventämiselle aikarajoitus ja vähimmäissyvyys, joiden mukaan se hakee siirrot. Transpoositaulukot toteutettiin samalla iteroivan syventämisen kanssa, koska iteroiva syventäminen ei toimi suunnitellusti ilman sitä. Tämä johtuu siitä että iteroivassa syventämisessä käydään samat tilanteet kokoajan läpi, mutta joka kerralla yksi kerros syvemmälle. Transpoositaulukolla algoritmi sai pidettyä kirjaa tilanteista, jotka se oli jo käynyt. Täten joka kerta kun algoritmin etsintä syveni yhden tason, se pystyi ottamaan transpoositaulukosta edellisen syvyyden lasketun siirron sekä arvon. Transpoositaulukon avaimeksi valittiin pelilaudan FEN-notaatiosta muodostettu uniikki Zobrist hash-avain. Zobrist hash-funktio on lautapelitilanteita varten luotu hash-tekniikka, jolla pyritään vähentämään muistinkäyttöä käyttämällä tavallisen FEN-notaation mukaisen merkkijonon sijaan avaimena hash-funktiolla saatua lukua. Transpoositaulukkoon tallennettin tilanteen mukainen paras siirto, tämän siirron arvo, syvyys sekä tieto siitä onko tallennettu siirto ja arvo tarkka, yläraja vai alaraja. Arvo on tarkka silloin kun kaikki siirrot on käyty siltä syvyydeltä ja tämä arvo on todettu parhaaksi. Jos haussa ei ehditä löytää parasta arvoa niin se merkitään joko ylä- tai alarajaksi jotta arvoa voidaan käyttää joko alfana eli haun alarajana tai betana eli haun ylärajana, kun algoritmi tutkii tilannetta seuraavan kerran. Tällä pyritään vähentämään asioiden laskemista turhaan uudestaan tilanteessa, jossa algoritmi ei ehdi laskea kaikkia mahdollisia siirtoja tietyllä syvyydellä. Lisäksi tällä saadaan aikaan se, että algoritmin laskeminen ei mene koskaan hukkaan vaan kaikki laskemiseen käytetty aika saadaan hyödynnettyä Heuristiikka Tekoälyn materiaalinen arviointi tehtiin taulukon 3 mukaan. Kuninkaan arvoksi asetettiin 0, koska kumpikaan kuningas ei koskaan poistu laudalta, joten sen arvioiminen tässä yhteydessä olisi täysin turhaa. Lautatilannetta arvioitaessa toisen

25 25 pelaajan nappulat arvioidaan samoille luvuilla, mutta negatiivisina. Arviointi ottaa myös huomioon lautatilanteen lailliset siirrot. Tällä pyrittiin siihen, että tekoäly pelaisi aktiivisempaa peliä ja pyrkisi etsimään uusia tilanteita samalla kun siirtojen määrä kasvaa. Shakkimatti arvioidaan riippuen siitä, onko kyse maksimoitavasta vai minimoitavasta pelaajasta. Arviointi ottaa lisäksi huomioon tasapelit. Jos tekoäly mielestään johtaa peliä, se pyrkii välttelemään tasapeliä ja vastaavasti tappioasemasta se yrittää saada pelin päättymään tasapeliin. Jokaiselle nappulalle luotiin matriisit, joiden avulla nappuloiden sijoittuminen laudalla voitiin arvioida. Tämä paransi tekoälyn avauksia ja yleistä sijoittumista pelilaudalla. Taulukko 3. Tekoälyn materiaalinen arviointi Nappula Arvo Kuningas 0 Kuningatar 100 Torni 50 Lähetti 30 Ratsu 30 Sotilas IRC -botti ja Lichess -botti Aluksi tekoälyä pystyi testaamaan vain syöttämällä sille siirtoja kirjoittamalla ne komentorivin/ohjelmointiympäristön kautta tekstinä. Tekoälyn testaamista muilla pelaajilla haluttiin helpottaa, joten tekoälylle kehitettiin kaksi erilaista tapaa pelata sitä vastaan internetin välityksellä. Pelatut pelit kirjattiin talteen ja niiden avulla tutkittiin esimerkiksi siirtojen hyvyyttä ja tekoälyn pelitapaa. Tätä tietoa käytettiin tekoälyn toimivuuden parantamiseen. Lisäksi pelaajilta kysyttiin pelin jälkeen mielipiteitä ja ideoita tekoälyn parantamiseksi. Tekoälylle toteutettiin Pythonin socket-kirjastolla kyky pelata IRCpikaviestintäpalvelun kautta. IRC-botti toteutettiin freenode IRC-verkossa. Bottia käytettiin enimmäkseen tekoälyn toiminnan esittelemiseen projektitapaamisissa. Käyttöliittymä oli tekstipohjainen, joten siirtojen tekeminen oli kömpelöä ja laudan ruutujen sekä nappuloiden oikein havainnoinnissa oli vaikeuksia. IRC-botin kehittäminen jätettiin vähälle, koska Lichess soveltui tarkoitukseemme paljon paremmin. Suurimpina syinä olivat Lichessin graafinen käyttöliittymä sekä se, että pelitilanteet olivat saatavilla rajapinnasta helposti tilanteissa, joissa botti esimerkiksi kaatui tai käynnistettiin uudestaan kesken pelin. Projektia varten tekoälylle luotiin oma profiili jonka kautta sitä vastaan pystyi pelaamaan kuka vain. Kaikki tekoälyn tätä kautta pelaamat pelit säilyvät sivustolla tallessa. Lisäksi sivusto pitää

26 26 kirjaa siirtoihin käytetystä ajasta ja siihen on implementoitu mahdollisuus analysoida koko pelin kaikki siirrot käyttäen Stockfish 10+ -shakkitekoälyä. Lichessin valinta botin alustaksi johtui monesta syystä. Näitä ovat esimerkiksi avoin rajapinta, jonka avulla tekoälyn pelaaminen on ylipäätänsä mahdollista, sekä toimiva mobiiliversio pelaamisen helpottamiseksi. Lichess sisältää myös keskustelutoiminnon pelaajien välillä, minkä avulla on mahdollista myös testata mahdollisia interaktiivisia toimintoja. Varsinainen toteutus tehtiin käyttämällä Pythonille tehtyä Berserk-kirjastoa, jonka avulla mahdollistettiin tekoälyn yhdistäminen Lichessin rajapintaan. Ohjelma jakoi eri pelaajia vastaan käydyt pelit eri prosesseiksi, jotta laskenta voitiin jakaa useammalle prosessorille kerrallaan. Botti laitettiin Blanko ry:n Bugi-palvelimelle pyörimään lähes kolmeksi viikoksi ja siitä saatuja tuloksia sekä palautetta käytettiin toiminnan parantamisessa Toteutuksen ongelmakenttä Toteutusta laadittaessa yhdeksi ratkaisevaksi ongelmatekijäksi nousi konenäön puutteellisuus. Konenäkö ei pystynyt tunnistamaan eri nappuloita toisistaan vaan ohjelman saama pelilaudan tilanne koostui värein erotelluista, mutta rooliltaan tuntemattomista, nappuloista. Tämä ongelma ratkaistiin ohjelmallisesti antamalla algoritmille pelin alussa laudan virallinen alkutilanne nappuloineen, ja tämän jälkeen aina vertaamalla konenäön antamaa pelilaudan tilannetta edelliseen pelilaudan tilanteeseen. Täten pelitilanteita vertaamalla oli mahdollista selvittää mikä nappula oli liikkunut ja määrittämään oliko nappulan siirto laillinen. Raspberry Pi oli myös ongelmallinen toteutuksen kannalta. Taulukosta 2 nähdään että varsinkin sen prosessorin kellotaajuus on nykystandardeilla erittäin hidas, vain 1.2Ghz. Tämän hidasti hakuaikoja huomattavasti ja asetti rajoitteita algoritmin syvyydelle. Toteutuksen luultavasti merkittävin ongelma-alue oli itse pelaaja, jota vastaan tekoäly tulisi vääjäämättä pelaamaan. Ihmisten huomiokyky on rajallinen, minkä vuoksi tekoälyn maksimaalisen laskenta-ajan pitämistä minimissä pidettiin toteutuksen kannalta erittäin tärkeänä ja sille asetettiin rajoitteet pelaajan odotusajan vähentämiseksi. Tämän lisäksi tekoälyä testatessa IRC:n ja Lichessin kautta huomioitavaksi seikaksi otettiin myös tekoälyn taito keskimääräistä ihmispelaajaa vastaan pelatessa. Liian huonoa tekoälyä vastaan pelaaminen ei ole pelaajalle vaivan arvoista, mutta kääntöpuolena liian hyväksi havaittu tekoäly voi olla ihmiselle turhauttava vastustaja Testaus Testaus suoritettiin kaksiosaisesti. Ensimmäisessä osassa tekoälyn kyvykkyyttä testattiin ihmispelaajia vastaan internetin välityksellä. Toisessa osassa testattiin tekoälyn laskenta-aikoja. Tämän saavuttamiseksi toteutettiin ohjelma, joka pelautti tekoälyn eri versioita automaattisesti toisia vastaan ja tallensi siirtoihin kuluneet ajat tekstimuodossa.

27 Pelitestaus Kuten aiemmin mainittu, tekoälyn pelaamista testattiin käyttäen IRC -bottia sekä Lichess-bottia. Suurin osa peleistä pelattiin lisäosatonta alfa-beta -karsintaa vastaan syvyydellä 3. Palautteen mukaan yleinen ongelma oli tekoälyn huonous alku- ja loppupelissä. Alkupelissä ongelmana oli lisäksi jo aikaisemmin mainittu avausten kankeus, sekä tekoälyn laskenta-ajat olivat myös liian pitkiä. Varsinkin tilanteissa joissa paras siirto oli helposti ihmisen nähtävissä tekoälyn olisi pitänyt tehdä siirto nopeammin. Positiivista palautetta sai tekoälyn kyky arvioida pelilaudan materiaalista arvoa, mikä näkyi siinä että tekoäly käytti hyväksi erilaisia haarukoita, eli siirtoja joissa uhataan useampaa nappulaa kerrallaan. Tämän lisäksi se osasi myös tehokkaasti käyttää hyväksi vastapelaajansa virheitä. Tämä oli kuitenkin varsinkin heikompien pelaajien mielestä huono asia, koska tekoälyn vaikeusastetta ei pystynyt säätämään ja tekoäly valitsi aina parhaan siirron. Testatessa tekoälyä eri syvyyksillä tulimme siihen tulokseen, että tekoäly oli pelillisesti aivan liian huono syvyyden ollessa alle 3. Keskipelissä tekoäly oli pelillisesti parhaimmillaan. Ongelmana oli kuitenkin erittäin pitkät hakuajat ja erityisesti tilanteet, jossa tekoäly arvioi kaikki mahdolliset siirrot suunnilleen samanarvoisiksi. Hakuajat olivat näissä tapauksissa todella pitkiä, koska tekoäly kävi yleensä läpi lähes koko hakupuun. Tämänlaiset tilanteet olivat harvinaisia, mutta osoittivat kuitenkin sen, että arviointifunktiota pitäisi vielä parantaa tällaisten tilanteiden välttämiseksi. Loppupelissä tekoälyn heikkous johti siihen, että tämä usein teki tappioon johtavan siirron. Tämä johtui tekoälyn kiinteästä syvyydestä. Loppupelissä jossa nappuloita on vähän, ihmispelaaja kykenee arvioimaan paljon syvemmälle kuin keskipelissä, jossa melkein kaikki nappulat ovat vielä laudalla. Useimmat tekoälyn tappioista johtuivat siitä, että ihmispelaaja näki shakkimatin 4-5 siirron päästä ja tekoäly ei kyennyt reagoimaan tähän, koska se ei pystynyt näkemään tilannetta niin syvälle. Kuvassa 5 hyvä esimerkki tällaisesta tilanteesta. Tekoäly pelaa tilanteessa valkoisella. Jos valkoinen pelaaja ei reagoi, musta pelaaja tekee shakkimatin kahdella siirrolla (qe8 b4 re8). Tekoäly ei kuitenkaan nähnyt niin pitkälle ja teki siirron qd8 joka siis johti tappioon. Iteroivalla syventämisellä tekoäly saataisiin ainakin teoriassa tutkimaan tilannetta syvemmälle. Varsinkin jos pelilaudalla on pakotettuja siirtoja, eli pelaajalla on ainoastaan 1-2 laillista siirtoa, tilanteita olisi mahdollista analysoida huomattavasti syvemmälle.

28 28 Kuva 5. Esimerkkipelitilanne Laskentatehollinen testaus Tekoälyn laskentatehoa testattiin pelauttamalla sen eri versioita tiettyä tekoälyä vastaan. Aluksi tekoälyt asetettiin pelaamaan itseään vastaan eri syvyyksillä, mutta tällä metodilla saaduissa testaustuloksissa oli paljon siirtoja joita ei syntyisi pelatessa ihmisvastustajaa vastaan. Tuotettu data ei siis ollut tutkimuksen aiheen huomioon ottaen vertailukelpoista ja testaus päätettiin suorittaa uudestaan sopivammalla testausasetelmalla. Testausta uudelleen suoritettaessa algoritmeille päätettiin antaa staattinen vastustaja, jota vastaan kaikkia tekoälyjä pelattiin. Vertailukohteeksi valittiin syvyydellä 2 pelaava alfa-beta -karsinta. Algoritmi kykeni pelaamaan riittävän hyvin shakkia ilman liian suuria odotusaikoja siirtojen välillä, millä varmistettiin tarpeeksi pitkä pelien kesto riittävän datan keräämiseksi nostamatta kuitenkaan testausaikoja tarpeettoman suuriksi. Tällä metodilla samalla syvyydellä pelaavat algoritmit olivat myös erinomaisesti vertailtavissa, koska tekoälyt käyttivät samaa heuristiikkaa. Analysoidut pelit pelattiin Raspberry Pi 3-minitietokoneella. Testaamisen automatisoinniksi tekoälyn ohjelmaan lisättiin tapa aloittaa ja pelata haluttuja pelejä automaattisesti sekä tallentaa pelien aikana tapahtuneet siirrot ja lopputulokset talteen pelikohtaisesti Minimax Tavallinen minimax-algoritmi soveltuu erittäin huonosti shakkitekoälyn hakualgoritmiksi sen hitauden takia, mutta sen tehokkuus testattiin silti siksi että saataisiin hyvä vertailukohta muihin paranneltuihin algoritmeihin. Taulukossa 4 on tilastoja minimax-algoritmin peleistä eri syvyyksillä. Jo syvyydellä 3 hakuajat ovat aivan liian pitkiä ja syvyydellä 4 testaus keskeytettiin, koska siirroissa meni niin kauan, että yhden pelin pelaamisessa testiä varten olisi kulunut monta päivää.

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS PELIPUU ACTIVATOR 1 ACTIVATOR 2 PELIPUU ACTIVATOR 1 ACTIVATOR 2 -1 0 1 PELIPUU PELIPUU PELIPUU I -ARVO(Solmu) if LOPPUTILA(Solmu) return(arvo(solmu)) v = for each Lapsi in

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS PELIPUU -1 0 1 PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU I -ARVO(Solmu) if LOPPUTILA(Solmu) return(arvo(solmu))!

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS PELIPUU PELIPUU -1 0 1 PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU PELIPUU I -ARVO(Solmu) if LOPPUTILA(Solmu) return(arvo(solmu))

Lisätiedot

Tietokoneshakki. Kari Timonen kari.timonen@cs.helsinki.fi

Tietokoneshakki. Kari Timonen kari.timonen@cs.helsinki.fi Tietokoneshakki Kari Timonen kari.timonen@cs.helsinki.fi Tekoäly kortti- ja lautapeleissä Helsingin yliopisto, tietojenkäsittelytieteen laitos Raportti C 2008 16, s. 74 85, joulukuu 2008 Tiivistelmä Tässä

Lisätiedot

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009 Antitammirobotti Antti Meriläinen Martin Pärtel 29. toukokuuta 2009 Helsingin yliopisto Tietojenkäsittelytieteen laitos Robottiohjelmoinnin harjoitustyö

Lisätiedot

Ohjeet ovat työn alla ja kirjaan niitä päivittäen ja edes takaisin lukien pari viikkoa.

Ohjeet ovat työn alla ja kirjaan niitä päivittäen ja edes takaisin lukien pari viikkoa. ( 1 ) Hannu Särön lautapelien ohjeita pelaajille - ( 1 ) - Sisältö. ( 2 ) - Jätkänshakki. ( 3 ) - Reversi. ( 4 ) - Tammi. ( 5 ) - Mylly. ( 6 ) - Shakki. ( 7 ) - Shakki, uudet napit ja uudet laudat. Ohjeet

Lisätiedot

Koneoppiminen shakkitekoälyissä

Koneoppiminen shakkitekoälyissä hyväksymispäivä arvosana arvostelija Koneoppiminen shakkitekoälyissä Verna Koskinen Helsinki 8.5.2016 Kandidaatin tutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS

Lisätiedot

Johdatus tekoälyn taustalla olevaan matematiikkaan

Johdatus tekoälyn taustalla olevaan matematiikkaan Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 3.11.2017 Mitä tekoäly on? Wikipedia: Tekoäly on tietokone tai tietokoneohjelma, joka kykenee älykkäiksi

Lisätiedot

Minimax ja alfa-beta-karsinta

Minimax ja alfa-beta-karsinta Jaakko Karhunen Minimax ja alfa-beta-karsinta Tietotekniikan kandidaatintutkielma 28. toukokuuta 2018 Jyväskylän yliopisto Informaatioteknologian tiedekunta Tekijä: Jaakko Karhunen Yhteystiedot: jakubmedvedjev@gmail.com

Lisätiedot

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA) JOHDATUS TEKOÄLYYN TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA) KONEOPPIMISEN LAJIT OHJATTU OPPIMINEN: - ESIMERKIT OVAT PAREJA (X, Y), TAVOITTEENA ON OPPIA ENNUSTAMAAN Y ANNETTUNA X.

Lisätiedot

Impedanssitomografia-peli

Impedanssitomografia-peli Impedanssitomografia-peli Avainsanat: inversio-ongelmat, päättely, satunnaisuus Luokkataso: 3.-5. luokka, 6.-9. luokka, lukio, yliopisto Välineet: kynä, paperia, 2 pelinappulaa, 4 kolikkoa tai kolikonheittokortit

Lisätiedot

Pelaajat siirtävät nappuloitaan vastakkaisiin suuntiin pelilaudalla. Peli alkaa näin. Tuplauskuutio asetetaan yhtä kauas kummastakin pelaajasta.

Pelaajat siirtävät nappuloitaan vastakkaisiin suuntiin pelilaudalla. Peli alkaa näin. Tuplauskuutio asetetaan yhtä kauas kummastakin pelaajasta. DVD Backgammon Pelin tavoite Pelin tavoitteena on siirtää kaikki omat pelinappulat omalle sisäkentälle ja sieltä pois laudalta. Se pelaaja, joka ensimmäisenä on poistanut kaikki pelinappulansa pelilaudalta,

Lisätiedot

SÄÄNNÖT. Language: English / Suomi

SÄÄNNÖT. Language: English / Suomi Rules of Coerceo by Coerceo Company Finnish translation by Janne Henriksson SÄÄNNÖT Language: English / Suomi Tekijänoikeus Mitään tämän dokumentin osaa ei saa jäljentää, kopioida tai välittää missään

Lisätiedot

Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun

Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Sami Hokuni 12 Syyskuuta, 2012 1/ 54 Sami Hokuni Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Turun Yliopisto. Gradu tehty 2012 kevään

Lisätiedot

Millainen on menestyvä digitaalinen palvelu?

Millainen on menestyvä digitaalinen palvelu? Millainen on menestyvä digitaalinen palvelu? TOIMIVA ÄLYKÄS ILAHDUTTAVA Ohjelmistokehitys Testaus ja laadunvarmistus Ohjelmistorobotiikka Tekoäly Käyttöliittymäsuunnittelu Käyttäjäkokemussuunnittelu 1

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet, laskuharjoitus 7, ratkaisuja Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9

Lisätiedot

Tietokoneshakki. Risto Ranta-aho TKK, Tietoliikenneohjelmistojen ja multimedian laboratorio. Risto.Ranta-aho@hut.fi. Tiivistelmä

Tietokoneshakki. Risto Ranta-aho TKK, Tietoliikenneohjelmistojen ja multimedian laboratorio. Risto.Ranta-aho@hut.fi. Tiivistelmä Tietokoneshakki Risto Ranta-aho TKK, Tietoliikenneohjelmistojen ja multimedian laboratorio Risto.Ranta-aho@hut.fi Tiivistelmä Shakin ohjelmoimista tietokoneelle on tutkittu jo 50 vuotta. Vasta muutama

Lisätiedot

Tilastotiede ottaa aivoon

Tilastotiede ottaa aivoon Tilastotiede ottaa aivoon kuinka aivoja voidaan mallintaa todennäköisyyslaskennalla, ja mitä yllättävää hyötyä siitä voi olla Aapo Hyvärinen Laskennallisen data-analyysin professori Matematiikan ja tilastotieteen

Lisätiedot

Kognitiivinen mallintaminen 1

Kognitiivinen mallintaminen 1 Kognitiivinen mallintaminen 1 Uutta infoa: Kurssin kotisivut wikissä: http://wiki.helsinki.fi/display/kognitiotiede/cog241 Suorittaminen tentillä ja laskareilla (ei välikoetta 1. periodissa) Ongelmanratkaisu

Lisätiedot

Tekoäly muuttaa arvoketjuja

Tekoäly muuttaa arvoketjuja Tekoäly muuttaa arvoketjuja Näin kartoitat tekoälyn mahdollisuuksia projektissasi Harri Puolitaival Harri Puolitaival Diplomi-insinööri ja yrittäjä Terveysteknologia-alan start-up: Likelle - lämpötilaherkkien

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto 811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien

Lisätiedot

Timo Myyrä. Tietokoneshakki funktionaalisella ohjelmoinnilla

Timo Myyrä. Tietokoneshakki funktionaalisella ohjelmoinnilla Timo Myyrä Tietokoneshakki funktionaalisella ohjelmoinnilla Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Insinöörityö 16.3.2011 Tiivistelmä Tekijä(t) Otsikko Sivumäärä Aika

Lisätiedot

Tekoäly ja alustatalous. Miten voit hyödyntää niitä omassa liiketoiminnassasi

Tekoäly ja alustatalous. Miten voit hyödyntää niitä omassa liiketoiminnassasi Tekoäly ja alustatalous Miten voit hyödyntää niitä omassa liiketoiminnassasi AI & Alustatalous AI Digitaalisuudessa on 1 ja 0, kumpia haluamme olla? Alustatalouden kasvuloikka Digitaalisen alustatalouden

Lisätiedot

Johdatus tekoälyyn. Luento 6.10.2011: Koneoppiminen. Patrik Hoyer. [ Kysykää ja kommentoikaa luennon aikana! ]

Johdatus tekoälyyn. Luento 6.10.2011: Koneoppiminen. Patrik Hoyer. [ Kysykää ja kommentoikaa luennon aikana! ] Johdatus tekoälyyn Luento 6.10.2011: Koneoppiminen Patrik Hoyer [ Kysykää ja kommentoikaa luennon aikana! ] Koneoppiminen? Määritelmä: kone = tietokone, tietokoneohjelma oppiminen = ongelmanratkaisukyvyn

Lisätiedot

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =

Lisätiedot

Tekoäly ja sen soveltaminen yrityksissä. Mika Rantonen

Tekoäly ja sen soveltaminen yrityksissä. Mika Rantonen Tekoäly ja sen soveltaminen yrityksissä Mika Rantonen Tekoäly- paljon puhetta, mistä kyse? Lyhyesti sanottuna: tekoäly on sellaista koneen tekemää toimintaa, joka ihmisen tekemänä olisi älykästä Otetaan

Lisätiedot

Koneoppiminen ja tekoäly suurten tietomassojen käsittelyssä yleensä ja erityisesti sovellettuina satelliittidatan käyttöön metsien arvioinnissa

Koneoppiminen ja tekoäly suurten tietomassojen käsittelyssä yleensä ja erityisesti sovellettuina satelliittidatan käyttöön metsien arvioinnissa Koneoppiminen ja tekoäly suurten tietomassojen käsittelyssä yleensä ja erityisesti sovellettuina satelliittidatan käyttöön metsien arvioinnissa Metsätieteen päivä 26.11.2018 Jorma Laaksonen, vanhempi yliopistonlehtori

Lisätiedot

Tekoäly tänään , Vadim Kulikov (Helsingin Yliopisto)

Tekoäly tänään , Vadim Kulikov (Helsingin Yliopisto) Tekoäly tänään 6.6.2017, Vadim Kulikov (Helsingin Yliopisto) Lyhyesti: kehitys kognitiotieteessä Representationalismi, Kognitio on symbolien manipulointia. Symbolinen tekoäly. Sääntöpohjaiset järjestelmät

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 5 OP PERIODI 3: 18.1.2016-6.3.2016 (7 VIIKKOA+KOE) LUENNOT (CK112): MA 14-16, TI 14-16 LASKUHARJOITUKSET: RYHMÄ

Lisätiedot

S09 04 Kohteiden tunnistaminen 3D datasta

S09 04 Kohteiden tunnistaminen 3D datasta AS 0.3200 Automaatio ja systeemitekniikan projektityöt S09 04 Kohteiden tunnistaminen 3D datasta Loppuraportti 22.5.2009 Akseli Korhonen 1. Projektin esittely Projektin tavoitteena oli algoritmin kehittäminen

Lisätiedot

FI Moninaisuudessaan yhtenäinen FI A8-0005/4. Tarkistus

FI Moninaisuudessaan yhtenäinen FI A8-0005/4. Tarkistus 8.2.2017 A8-0005/4 4 Jean-Luc Schaffhauser 1 kohta kehottaa komissiota ehdottamaan kyberfyysisille järjestelmille, autonomisille järjestelmille, älykkäille autonomisille roboteille ja niiden alaluokille

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

CSC:N SHAKKIKOULU. esittää: Taktinen pelitapa ja kuningashyökkäykset

CSC:N SHAKKIKOULU. esittää: Taktinen pelitapa ja kuningashyökkäykset CSC:N SHAKKIKOULU esittää: Taktinen pelitapa ja kuningashyökkäykset 14.2.2019 Pelin evoluutio Useimmissa globaalisti kilpailluissa urheilulajeissa ja peleissä on käynnissä valtava pelin evoluutio. Digitalisoituminen,

Lisätiedot

Matinteko (1 / 10) Matinteko (2 / 10) Helpointa matin tekeminen on kahdella raskaalla upseerilla (esim. kuningattarella ja tornilla).

Matinteko (1 / 10) Matinteko (2 / 10) Helpointa matin tekeminen on kahdella raskaalla upseerilla (esim. kuningattarella ja tornilla). Shakkinappuloiden voimasuhteet Matinteko (1 / 10) Kuningas on pelin tärkein nappula, ilman kuningasta peli on hävitty. 1. Kuningas + Daami + Torni vs Kuningas Matinteko (2 / 10) Helpointa matin tekeminen

Lisätiedot

Robotit ja tekoäly terveydenhuollon työvälineinä nyt ja tulevaisuudessa työn tutkimukseen perustuva näkökulma

Robotit ja tekoäly terveydenhuollon työvälineinä nyt ja tulevaisuudessa työn tutkimukseen perustuva näkökulma VTT TECHNICAL RESEARCH CENTRE OF FINLAND LTD Robotit ja tekoäly terveydenhuollon työvälineinä nyt ja tulevaisuudessa työn tutkimukseen perustuva näkökulma Mikael Wahlström, VTT Erikoistutkija, valtiot.

Lisätiedot

Pelin kautta opettaminen

Pelin kautta opettaminen Pelin kautta opettaminen Pelin kautta opettaminen Pelaamaan oppii vain pelaamalla?? Totta, mutta myös harjoittelemalla pelinomaisissa tilanteissa havainnoimista, päätöksentekoa ja toimintaa. Pelikäsitystä

Lisätiedot

Koodaamme uutta todellisuutta FM Maarit Savolainen https://blog.edu.turku.fi/matikkaajakoodausta/

Koodaamme uutta todellisuutta FM Maarit Savolainen https://blog.edu.turku.fi/matikkaajakoodausta/ Koodaamme uutta todellisuutta FM Maarit Savolainen 19.1.2017 https://blog.edu.turku.fi/matikkaajakoodausta/ Mitä on koodaaminen? Koodaus on puhetta tietokoneille. Koodaus on käskyjen antamista tietokoneelle.

Lisätiedot

Bayesin pelit. Kalle Siukola. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly

Bayesin pelit. Kalle Siukola. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly Bayesin pelit Kalle Siukola MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly 12.10.2016 Toistetun pelin esittäminen automaatin avulla Ekstensiivisen muodon puu on tehoton esitystapa, jos peliä

Lisätiedot

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100

Lisätiedot

Kognitiivinen mallintaminen I

Kognitiivinen mallintaminen I Kognitiivinen mallintaminen I Symbolinen mallintaminen: 2. luento Ongelmanratkaisu Ongelmanratkaisu Rationaalinen agentti Ongelma-avaruus Hakustrategiat ongelma-avaruudessa sokea haku tietoinen haku heuristiikat

Lisätiedot

Opettajan opas. Shakkilinna www.shakkilinna.fi info@shakkilinna.fi

Opettajan opas. Shakkilinna www.shakkilinna.fi info@shakkilinna.fi Opettajan opas Shakkilinna www.shakkilinna.fi info@shakkilinna.fi Saatteeksi kerho-ohjaajalle Säännöt hanskaan ja pelaamaan käsittelee shakkipelin perusteet kymmenen kerhotunnin (45 minuuttia) aikana.

Lisätiedot

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden

Lisätiedot

Shakkiopas vähemmän pelanneille

Shakkiopas vähemmän pelanneille Shakkiopas vähemmän pelanneille Sisällysluettelo: 1. Siirtäminen 2. Yleisiä muodollisuuksia 3. Pöytäkirjan pito 4. Avaukset yleensä 5. Siirron miettiminen 6. Vastustajan vuoro 7. Koulumatti ja Preussilainen

Lisätiedot

Tarvitseeko informaatioteknologia matematiikkaa?

Tarvitseeko informaatioteknologia matematiikkaa? Tarvitseeko informaatioteknologia matematiikkaa? Oulun yliopisto Matemaattisten tieteiden laitos 1 Kyllä kai IT matematiikkaa tarvitsee!? IT ja muu korkea teknologia on nimenomaan matemaattista teknologiaa.

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS KURSSIN PERUSTIEDOT VALINNAINEN AINEOPINTOTASOINEN KURSSI, 4 OP PERIODI 1: 6.9.2012-12.10.2012 (6 VIIKKOA) LUENNOT (B123, LINUS TORVALDS -AUDITORIO): TO 10-12, PE 12-14 LASKUHARJOITUKSET

Lisätiedot

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019

Lisätiedot

Tee-se-itse -tekoäly

Tee-se-itse -tekoäly Tee-se-itse -tekoäly Avainsanat: koneoppiminen, tekoäly, neuroverkko Luokkataso: 6.-9. luokka, lukio, yliopisto Välineet: kynä, muistilappuja tai kertakäyttömukeja, herneitä tms. pieniä esineitä Kuvaus:

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

Tekoäly tukiäly. Eija Kalliala, Marjatta Ikkala

Tekoäly tukiäly. Eija Kalliala, Marjatta Ikkala Tekoäly tukiäly Eija Kalliala, Marjatta Ikkala 29.11.2018 Mitä on tekoäly? Unelma koneesta, joka ajattelee kuin ihminen Hype-sana, jota kuulee joka paikassa Väärinymmärretty sana -> vääriä odotuksia, pelkoja

Lisätiedot

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen Hävittäjälentokoneen reitin suunnittelussa käytettävän dynaamisen ja monitavoitteisen verkko-optimointitehtävän ratkaiseminen A*-algoritmilla (valmiin työn esittely) Joonas Haapala 8.6.2015 Ohjaaja: DI

Lisätiedot

Ohjelmointi 1. Kumppanit

Ohjelmointi 1. Kumppanit Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5

Lisätiedot

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010 TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta Yliassistentti Jussi Hakanen jussi.hakanen@jyu.fi syksy 2010 Optimaalisuus: objektiavaruus f 2 min Z = f(s) Parhaat arvot alhaalla ja vasemmalla

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

CTRL+F Android-sovellus

CTRL+F Android-sovellus CTRL+F Android-sovellus Vili-Robert Hietala Opinnäytteen raportointi Sähköosasto Toukokuu 2015 KUVAILULEHTI 14.04.2015 Tekijä(t) Vili-Robert Hietala Työn laji Opinnäytteen raportointi Sivumäärä 7 Luottamuksellisuus

Lisätiedot

Johdatus go-peliin. 25. joulukuuta 2011

Johdatus go-peliin. 25. joulukuuta 2011 Johdatus go-peliin 25. joulukuuta 2011 Tämän dokumentin tarkoitus on toimia johdatuksena go-lautapeliin. Lähestymistapamme poikkeaa tavallisista go-johdatuksista, koska tässä dokumentissa neuvotaan ensin

Lisätiedot

Robottien aikakausi. Puhtausalan kehityspäivät Jussi Ruisniemi Diversey Suomi Oy. Presented by Diversey

Robottien aikakausi. Puhtausalan kehityspäivät Jussi Ruisniemi Diversey Suomi Oy. Presented by Diversey Robottien aikakausi Puhtausalan kehityspäivät 19.10. 21.10.2017 Jussi Ruisniemi Diversey Suomi Oy Presented by Diversey Aiheet 01 Robottien kehitys 02 Robottien tulevaisuus Robotiikka puhtausalalla Kokemuksia

Lisätiedot

Sisällysluettelo. 1. Johdanto

Sisällysluettelo. 1. Johdanto Säännöt Sisällysluettelo 1. Johdanto 3 2. Sisältö 4 3. Alkuvalmistelut 5 4. Pelin aloitus ja kulku 6 5. Pelin lopetus 9 6. Vaikea peli ja muut pelimuunnelmat 10 1. Johdanto Pelilauta on 25 ruudusta muodostuva

Lisätiedot

Muinaiset kreikkalaiset uskoivat kaiken maanpäällisen koostuvan neljästä elementistä: maasta, ilmasta, vedestä ja tulesta.

Muinaiset kreikkalaiset uskoivat kaiken maanpäällisen koostuvan neljästä elementistä: maasta, ilmasta, vedestä ja tulesta. Johdanto Muinaiset kreikkalaiset uskoivat kaiken maanpäällisen koostuvan neljästä elementistä: maasta, ilmasta, vedestä ja tulesta. Jumalten maailma, kaikki ihmisten maailman yläpuolinen, koostui viidennestä

Lisätiedot

Geneettiset algoritmit

Geneettiset algoritmit Geneettiset algoritmit Evoluution piirteitä laskennassa Optimoinnin perusteet - Kevät 2002 / 1 Sisältö Geneettisten algoritmien sovelluskenttä Peruskäsitteitä Esimerkkejä funktion ääriarvon etsintä vangin

Lisätiedot

FI Moninaisuudessaan yhtenäinen FI. Tarkistus. Beatrix von Storch EFDD-ryhmän puolesta

FI Moninaisuudessaan yhtenäinen FI. Tarkistus. Beatrix von Storch EFDD-ryhmän puolesta 9.2.2017 A8-0005/9 9 1 a kohta (uusi) 1 a. kehottaa komissiota ehdottamaan seuraavia yhteisiä unionin määritelmiä: tekoäly on tietokonejärjestelmä, joka pystyy jäljittelemään osaa ihmisen kognitiivisista

Lisätiedot

Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista.

Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista. Yhden piirilevyn tietokone Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja sen toiminnoista. Sisällys Raspberry Pi Yleistä... 2 Teknistä... 2 Käyttöjärjestelmät... 4 Pelaaminen

Lisätiedot

Laskut käyvät hermoille

Laskut käyvät hermoille Laskut käyvät hermoille - Miten ja miksi aivoissa lasketaan todennäköisyyksiä Aapo Hyvärinen Matematiikan ja tilastotieteen laitos & Tietojenkäsittelytieteen laitos Helsingin Yliopisto Tieteen päivät 13.1.2011

Lisätiedot

Tekoäly ja koneoppiminen metsävaratiedon apuna

Tekoäly ja koneoppiminen metsävaratiedon apuna Tekoäly ja koneoppiminen metsävaratiedon apuna Arbonaut Oy ja LUT University 26. marraskuuta 2018 Metsätieteen päivä 2018 Koneoppimisen kohteena ovat lukujen sijasta jakaumat Esimerkki 1 Koneoppimisessa

Lisätiedot

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi Älysopimusten kehittäminen Sopimus suuntautunut ohjelmointi There are currently 5,000 blockchain developers. By 2020, we project a global need for over 500,000 - ConsenSys Älysopimus alustat q Ethereum

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

4 Tehokkuus ja algoritmien suunnittelu

4 Tehokkuus ja algoritmien suunnittelu TIE-20100 Tietorakenteet ja algoritmit 52 4 Tehokkuus ja algoritmien suunnittelu Tässä luvussa pohditaan tehokkuuden käsitettä ja esitellään kurssilla käytetty kertaluokkanotaatio, jolla kuvataan algoritmin

Lisätiedot

Tilastotiede ottaa aivoon

Tilastotiede ottaa aivoon Tilastotiede ottaa aivoon kuinka aivoja voidaan mallintaa todennäköisyyslaskennalla, ja mitä yllättävää hyötyä siitä voi olla Aapo Hyvärinen Laskennallisen data-analyysin professori Matematiikan ja tilastotieteen

Lisätiedot

Peliteoria Strategiapelit ja Nashin tasapaino. Sebastian Siikavirta sebastian.siikavirta@helsinki.fi

Peliteoria Strategiapelit ja Nashin tasapaino. Sebastian Siikavirta sebastian.siikavirta@helsinki.fi Peliteoria Strategiapelit ja Nashin tasapaino Sebastian Siikavirta sebastian.siikavirta@helsinki.fi Helsinki 11.09.2006 Peliteoria Tomi Pasanen HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö

Lisätiedot

monitavoitteisissa päätöspuissa (Valmiin työn esittely) Mio Parmi Ohjaaja: Prof. Kai Virtanen Valvoja: Prof.

monitavoitteisissa päätöspuissa (Valmiin työn esittely) Mio Parmi Ohjaaja: Prof. Kai Virtanen Valvoja: Prof. Epätäydellisen preferenssiinformaation hyödyntäminen monitavoitteisissa päätöspuissa (Valmiin työn esittely) Mio Parmi 15.1.2018 Ohjaaja: Prof. Kai Virtanen Valvoja: Prof. Kai Virtanen Tausta Päätöspuu

Lisätiedot

YAUTE19 Insinööri (ylempi AMK), Automaatiotekniikka

YAUTE19 Insinööri (ylempi AMK), Automaatiotekniikka Seinäjoen Ammattikorkeakoulu Oy YAUTE19 Insinööri (ylempi AMK), Automaatiotekniikka Koulutus antaa valmiudet toimia teknologiayrityksen vaativissa asiantuntija- ja esimiestehtävissä. Koulutus kehittää

Lisätiedot

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 10 To Timo Männikkö Algoritmit 2 Luento 10 To 19.4.2018 Timo Männikkö Luento 10 Peruutusmenetelmä Osajoukon summa Verkon 3-väritys Pelipuut Pelipuun läpikäynti Algoritmit 2 Kevät 2018 Luento 10 To 19.4.2018 2/34 Algoritmien

Lisätiedot

Kontrollilaitteet. Arsenaali

Kontrollilaitteet. Arsenaali Arsenaali Kontrollilaitteet Tietokonepeleissä käytettäviä kontrollilaitteita on valtava määrä Kaikilla alustoilla, joilla pelejä pelataan on jokin vakio kontrolleri PC: Hiiri ja näppäimistö Konsolit: Controller

Lisätiedot

LUMATE-tiedekerhokerta, suunnitelma AIHE: PELIT JA TAKTIIKAT

LUMATE-tiedekerhokerta, suunnitelma AIHE: PELIT JA TAKTIIKAT LUMATE-tiedekerhokerta, suunnitelma AIHE: PELIT JA TAKTIIKAT 1. Alkupohdintaa Mitä lempipelejä oppilailla on? Ovatko ne pohjimmiltaan matemaattisia? (laskeminen, todennäköisyys ) Mitä taktiikoita esimerkiksi

Lisätiedot

Taasko meitä huijataan ja viedään viimeisetkin rahat? Onko siitä oikeasti hyötyä? Tekoäly ja ohjelmistorobotiikka ja LähiTapiolassa

Taasko meitä huijataan ja viedään viimeisetkin rahat? Onko siitä oikeasti hyötyä? Tekoäly ja ohjelmistorobotiikka ja LähiTapiolassa Taasko meitä huijataan ja viedään viimeisetkin rahat? Onko siitä oikeasti hyötyä? Tekoäly ja ohjelmistorobotiikka ja LähiTapiolassa 1.4.2019 Mikko Vastela @Mick5691 Tekoäly ja lisätty äly Tekoäly artificial

Lisätiedot

Valmistelut: Aseta kartiot numerojärjestykseen pienimmästä suurimpaan (alkeisopiskelu) tai sekalaiseen järjestykseen (pidemmälle edenneet oppilaat).

Valmistelut: Aseta kartiot numerojärjestykseen pienimmästä suurimpaan (alkeisopiskelu) tai sekalaiseen järjestykseen (pidemmälle edenneet oppilaat). Laske kymmeneen Tavoite: Oppilaat osaavat laskea yhdestä kymmeneen ja kymmenestä yhteen. Osallistujamäärä: Vähintään 10 oppilasta kartioita, joissa on numerot yhdestä kymmeneen. (Käytä 0-numeroidun kartion

Lisätiedot

KODU. Lumijoen peruskoulu

KODU. Lumijoen peruskoulu KODU Lumijoen peruskoulu Sisällysluettelo 1. Aloitus... 2 1.1 Pelin tallennuspaikka... 2 1.2 Kodu Game lab... 3 2 Maan luominen... 4 2.1. Seinän tekeminen... 5 2.2. Vesialueen tekeminen peliin... 6 2.3.

Lisätiedot

Sulautetut järjestelmät

Sulautetut järjestelmät Sulautetut järjestelmät Johdatus sulautettuihin järjestelmiin (JSU) Pekka Toivanen E-Mail: Pekka.Toivanen@uef.fi GSM: +358 40 543 9021 Syksy 2017 Opintojakso Luennot ti 7.11. klo 8-10, Sali F211 Seminaari

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS NEUROVERKOT TURINGIN KONE (TAI TAVALLINEN OHJELMOINTI) VAIN YKSI LASKENNAN MALLI ELÄINTEN HERMOSTOSSA LASKENTA ERILAISTA: - RINNAKKAISUUS - STOKASTISUUS (SATUNNAISUUS) - MASSIIVINEN

Lisätiedot

CSC:N SHAKKIKOULU. esittää: Kuinka mestari ajattelee?

CSC:N SHAKKIKOULU. esittää: Kuinka mestari ajattelee? CSC:N SHAKKIKOULU esittää: Kuinka mestari ajattelee? The topic of the 3rd lecture is an in-depth dive to the thinking of chess player - chess knowledge, memory, time management, all discussed through a

Lisätiedot

Integrointialgoritmit molekyylidynamiikassa

Integrointialgoritmit molekyylidynamiikassa Integrointialgoritmit molekyylidynamiikassa Markus Ovaska 28.11.2008 Esitelmän kulku MD-simulaatiot yleisesti Integrointialgoritmit: mitä integroidaan ja miten? Esimerkkejä eri algoritmeista Hyvän algoritmin

Lisätiedot

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 1 TIE-20100 Tietorakenteet ja algoritmit TIE-20100 Tietorakenteet ja algoritmit 2 Lähteet Luentomoniste pohjautuu vahvasti prof. Antti Valmarin vanhaan luentomonisteeseen

Lisätiedot

Kombinatorinen optimointi

Kombinatorinen optimointi Kombinatorinen optimointi Sallittujen pisteiden lukumäärä on äärellinen Periaatteessa ratkaisu löydetään käymällä läpi kaikki pisteet Käytännössä lukumäärä on niin suuri, että tämä on mahdotonta Usein

Lisätiedot

Tietotekniikan laitoksen uusi linja

Tietotekniikan laitoksen uusi linja Tietotekniikan laitoksen uusi linja Tietotekniikan laitos 2011- Yhteisen rungon ympärille liittyvät oksina Tietotekniikan laitoksen perinteiset ja uudet linjat Haluatko harrastuksiisi liittyvän ammatin?

Lisätiedot

Tekoäly liiketoiminnassa. Tuomas Ritola CEO, selko.io

Tekoäly liiketoiminnassa. Tuomas Ritola CEO, selko.io Tekoäly liiketoiminnassa Tuomas Ritola CEO, selko.io Selko.io Automaattista teknisen tekstin luokittelua ja analysointia, eli tekoälyä tekstidatalle. Päivän agenda: Tekoäly. Muotisana? Strategia? Uhka?

Lisätiedot

Tekoälyn perusteita ja sovelluksia (TIEP1000)

Tekoälyn perusteita ja sovelluksia (TIEP1000) Tekoälyn perusteita ja sovelluksia (TIEP1000) Informaatioteknologian tiedekunta 6. marraskuuta 2018 JYU. Since 1863. 6.11.2018 1 Kurssin osanottajat Tiedekunta Ei tiedossa 3 HTK 77 ITK 211 KTK 4 LTK 20

Lisätiedot

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö Algoritmit 2 Luento 4 To 21.3.2019 Timo Männikkö Luento 4 Hajautus Yhteentörmäysten käsittely Avoin osoitteenmuodostus Hajautusfunktiot Puurakenteet Solmujen läpikäynti Algoritmit 2 Kevät 2019 Luento 4

Lisätiedot

ALGORITMIT & OPPIMINEN

ALGORITMIT & OPPIMINEN ALGORITMIT & OPPIMINEN Mitä voidaan automatisoida? Mikko Koivisto Avoimet aineistot tulevat Tekijä: Lauri Vanhala yhdistä, kuvita, selitä, ennusta! Tekijä: Logica Mitä voidaan automatisoida? Algoritmi

Lisätiedot

Tekoäly terveydessä ja taloudessa Nykytila, haasteet ja mahdollisuudet. Elina Jeskanen Petrus Metsälä

Tekoäly terveydessä ja taloudessa Nykytila, haasteet ja mahdollisuudet. Elina Jeskanen Petrus Metsälä Tekoäly terveydessä ja taloudessa Nykytila, haasteet ja mahdollisuudet Elina Jeskanen Petrus Metsälä Nykytila #tietotuottamaan Datanhallintakulttuurin kehittäminen, Datastrategia Datalähteiden tunnistaminen

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja. IsoInt Tietokoneiden muisti koostuu yksittäisistä muistisanoista, jotka nykyaikaisissa koneissa ovat 64 bitin pituisia. Muistisanan koko asettaa teknisen rajoituksen sille, kuinka suuria lukuja tietokone

Lisätiedot

Johdantoa. Jokaisen matemaatikon olisi syytä osata edes alkeet jostakin perusohjelmistosta, Java MAPLE. Pascal MathCad

Johdantoa. Jokaisen matemaatikon olisi syytä osata edes alkeet jostakin perusohjelmistosta, Java MAPLE. Pascal MathCad Johdantoa ALGORITMIT MATEMA- TIIKASSA, MAA Vanhan vitsin mukaan matemaatikko tietää, kuinka matemaattinen ongelma ratkaistaan, mutta ei osaa tehdä niin. Vitsi on ajalta, jolloin käytännön laskut eli ongelman

Lisätiedot

Oppiminen ja oivaltaminen

Oppiminen ja oivaltaminen Oppiminen ja oivaltaminen OPPIMINEN Oppimiseen liittyy usein jotain vanhaa, tai osatun käyttöä uudella tavalla Oppiminen on hyödyllistä liittää jo osattuun Oppiminen on prosessi emme tule koskaan valmiiksi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

Lisätiedot

Tekoäly ja tietoturva Professori, laitosjohtaja Sasu Tarkoma Tietojenkäsittelytieteen laitos Helsingin yliopisto

Tekoäly ja tietoturva Professori, laitosjohtaja Sasu Tarkoma Tietojenkäsittelytieteen laitos Helsingin yliopisto Tekoäly ja tietoturva Professori, laitosjohtaja Sasu Tarkoma Tietojenkäsittelytieteen laitos Helsingin yliopisto www.cs.helsinki.fi Sisällys Johdanto Tekoäly Tekoäly ja tietoturva Tutkimusesimerkkejä www.cs.helsinki.fi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Johdatus tekoälyn taustalla olevaan matematiikkaan

Johdatus tekoälyn taustalla olevaan matematiikkaan Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 2. luento 10.11.2017 Keinotekoiset neuroverkot Neuroverkko koostuu syöte- ja ulostulokerroksesta

Lisätiedot