Janne Eskola Eetu Haapamäki Jani Jarkima Shakkirobotin pelitekoäly rajallisen laskentatehon ympäristössä
|
|
- Sami Hakola
- 4 vuotta sitten
- Katselukertoja:
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 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ätiedotJOHDATUS 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ätiedotJOHDATUS 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ätiedotTietokoneshakki. 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ätiedotAntitammirobotti. 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ätiedotOhjeet 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ätiedotKoneoppiminen 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ätiedotJohdatus 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ätiedotMinimax 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ätiedotMäärittelydokumentti
Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta
LisätiedotTEEMU 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ätiedotImpedanssitomografia-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ätiedotPelaajat 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ätiedotSÄÄ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ätiedotNeuroverkkojen 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ätiedotMillainen 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ätiedotTietorakenteet, 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ätiedotTietokoneshakki. 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ätiedotTilastotiede 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ätiedotKognitiivinen 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ätiedotTekoä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ätiedot811312A 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ätiedotTimo 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ätiedotTekoä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ätiedotJohdatus 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ätiedotA 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ätiedotTekoä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ätiedotKoneoppiminen 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ätiedotTekoä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ätiedotJOHDATUS 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ätiedotS09 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ätiedotFI 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ätiedotOhjelmoinnin 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ätiedotCSC: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ätiedotMatinteko (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ätiedotRobotit 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ätiedotPelin 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ätiedotKoodaamme 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ätiedotBayesin 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ätiedotAlgoritmit 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ätiedotKognitiivinen mallintaminen I
Kognitiivinen mallintaminen I Symbolinen mallintaminen: 2. luento Ongelmanratkaisu Ongelmanratkaisu Rationaalinen agentti Ongelma-avaruus Hakustrategiat ongelma-avaruudessa sokea haku tietoinen haku heuristiikat
LisätiedotOpettajan 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ätiedotSatunnaisalgoritmit. 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ätiedotShakkiopas 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ätiedotTarvitseeko 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ätiedotJOHDATUS 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ätiedotCUDA. 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ätiedotLuku 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ätiedotAlgoritmit 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ätiedotTee-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ätiedotKirjoita 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ätiedotTekoä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ätiedotJoonas 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ätiedotOhjelmointi 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ätiedotTIES592 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ätiedotAlgoritmit 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ätiedotCTRL+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ätiedotJohdatus 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ätiedotRobottien 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ätiedotSisä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ätiedotMuinaiset 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ätiedotGeneettiset 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ätiedotFI 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ätiedotRaspberry 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ätiedotLaskut 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ätiedotTekoä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 There are currently 5,000 blockchain developers. By 2020, we project a global need for over 500,000 - ConsenSys Älysopimus alustat q Ethereum
LisätiedotAlgoritmit 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ätiedot4 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ätiedotTilastotiede 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ätiedotPeliteoria 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ätiedotmonitavoitteisissa 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ätiedotYAUTE19 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ätiedotAlgoritmit 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ätiedotKontrollilaitteet. 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ätiedotLUMATE-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ätiedotTaasko 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ätiedotValmistelut: 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ätiedotKODU. 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ätiedotSulautetut 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ätiedotJOHDATUS 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ätiedotCSC: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ätiedotIntegrointialgoritmit 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ätiedotTIE 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ätiedotKombinatorinen 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ätiedotTietotekniikan 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ätiedotTekoä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ätiedotTekoä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ätiedotAlgoritmit 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ätiedotALGORITMIT & 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ätiedotTekoä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ätiedotRekursiolause. 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ätiedotn! 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ätiedotJohdantoa. 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ätiedotOppiminen 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ätiedotOhjelmoinnin 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ätiedotAlgoritmit 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ätiedotTekoä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ätiedotOhjelmoinnin 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ätiedotJohdatus 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