maanantai 19. lokakuuta 2020

Tekoälyn oppivuodet 2: kohennamme hermoverkon fiksummaksi

Edellisessä blogitekstissäni näytin, kuinka kahdesta ”hermosolusta” koostuvat koneaivot kykenevät erottamaan kesäpäivän talvipäivästä. Tietokoneen orastava äly se siinä pilkahti, tosin huomattavan helpon pulman tapauksessa. (Kannattaa lukea tuo aikaisempi kirjoitus ennen tätä, koska alla oleva perustuu siihen.)

Tekoälyn koulutus eteni mainiosti, kunnes tuli tämä kuva:

Kuvasta näemme, että päivän keskilämpötilaan perustuva luokittelu ei toimi kevätpäivän erottamiseksi kesäpäivästä. Viileimmät heinäkuun päivät ovat näet kylmempiä kuin huhtikuun lämpimimmät. 

Annetaanpa koneelle enemmän tietoa ja mutkikkaammat aivot. Alkaako huhtikuun ja heinäkuun ero siten valjeta tietsikalle?

Arvon tietokone, tässäpä sinulle lisätietoa


Jos pelkkä lämpötila ei riitä, otetaan lisäksi huomioon vaikka ilmanpaine. Ilmatieteen laitoksen avoin data on mitatun säätiedon aarreaitta, jota voi hyödyntää helposti ja ilmaiseksi. 

Huhtikuun 8. päivänä vuonna 2019 ilmanpaine oli 1012 hehtopascalia (hPa) ja keskilämpötila 6,5 astetta. Heinäkuun ensimmäisenä päivänä 2019 ilmanpaine puolestaan oli 995 hPa ja keskilämpötila 19 astetta. Kuvassa näet nuo tiedot tason pisteinä niin, että ilmanpaine on x-koordinaatti ja keskilämpötila y-koordinaatti.


Sijoitetaan koordinaatistoon samalla tavalla kaikki vuoden 2019 huhti- ja heinäkuun säätiedot. Huomataan, että yhtä huhtikuun päivää lukuun ottamatta kaikki nuo datapisteet jakautuvat kuvaan piirtämäni suoran molemmin puolin.



Lämpötila- ja ilmanpainetietojen yhdistämisen avulla vuoden 2019 kevät ja kesä siis erottuvat toisistaan suoraviivaisella tavalla! Tästä pääsemme eteenpäin kohentamalla aikaisemmin rakentamiamme kahden hermosolun aivoja.


Päivitetään hermosolu uuteen malliin


Edellisessä blogitekstissä saimme kahden hermosolun avulla jaoteltua tammi- ja heinäkuun päivät näin:


Muokataan noita koneaivoja niin, että ensimmäinen hermosolu ottaakin syötteeksi yhden luvun (keskilämpötila) sijasta kaksi lukua (ilmanpaine ja keskilämpötila). Vaihdetaan myös hermosolujen sisältämiä lukuja vastaamaan suoraan y = 0,8*x - 800 perustuvaa luokittelua. 

Tällaisen saamme:



Neuroni 1 toimii niin, että tarkasteltavan päivän ilmanpaine kerrotaan luvulla -0,8 ja lisätään tulokseen lämpötila (ykkösellä kerrottuna, eli siis lämpötila muuttumattomana). Tuohon komeuteen lisätään vielä 800 ja lähetetään lopputulema pakkasenpoistajan läpi toiselle neuronille. Neuroni 2 on samanlainen kuin aiemmin käsittelemämme, joskin se sisältää eri luvut. 

 Miten tämä koneaivo suoriutuu kahdesta esimerkkipäivästämme?



Huhtikuun 8. päivän 2019 säätiedot tuottavat tulokseksi ykkösen, joka saa tässä hermoverkossa olla huhtikuun tunniste. Voit halutessasi tarkistaa tuon laskun tekemällä tarvittavat kolme kertolaskua, neljä yhteenlaskua ja kaksi pakkasenpoistoa. Lasku on toki jo hiukan monimutkaisempi kuin ensimmäisessä blogissa, mutta silti periaatteessa edelleen korkeintaan yläkoulun oppimäärää vaativa. 

Entäs heinäkuu?


Vastaava lasku kuin huhtikuun tapauksessa antaa tulokseksi nollan, joka on tämän hermoverkon tapa sanoa ”heinäkuu”. Muutkin päivät vuoden 2019 huhtikuussa ja heinäkuussa tulevat oivallisesti luokitelluiksi tällä miniaivolla. Ne jakavat paine-lämpötilatason kahteen osaan niin, että suoran y = 0,8*x - 800 yläpuolelle osuvat pisteet katsotaan heinäkuun päiviksi, ja viivan alle jäävät puolestaan huhtikuun päivät. Ja koko toimitus siis tapahtuu näillä laskennallisen hermosolun osaamilla laskuilla.



Tähän väliin aivopähkinä tekoälyn ystäville. Keksitkö sellaiset syötteet hermoverkollemme, että se tuottaa nollan ja ykkösen välissä olevan luvun? Esimerkiksi puolikkaan? Vastaus tekstin lopussa. 


Miten keinoaivot pärjäävät muiden vuosien säätietojen kanssa?


Saimme piskuiseen hermoverkkomme valittua sellaiset luvut, että vuoden 2019 huhti- ja heinäkuun päivät menevät oikein. Syötetään vuoden 2017 mittaukset sisään ja katsotaan, miten niiden kanssa käy.


Pieleen menee! Monia huhtikuun päiviä joutuu virheellisesti heinäkuun puolelle. Alkeellisesti itse opetettu tekoäly ei siis suoriudu kevään ja kesän tunnistushaasteesta. 

Peli kovenee. Tarvitaan tehokkaammat työkalut, ja on annettava tietokoneen itse oppia datasta. Siitä lisää blogisarjan kolmannessa osassa. 

(Vastaus aivopähkinään. On monia syötteitä, jotka antavat muun tuloksen kuin 0 tai 1. Esimerkiksi ilmanpaine 1012 hPa ja keskilämpötila 10.1°C tuottaa puolikkaan.)

Ei kommentteja:

Lähetä kommentti