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.)

keskiviikko 23. syyskuuta 2020

Tekoälyn oppivuodet: näin koulutamme hermoverkon

Kirjoittaja: Samuli Siltanen

Jos tekoäly osaa auttaa lääkäriä löytämään syövän, kai se kykenee myös erottamaan kesän talvesta? Kokeillaan!

Poimin Ilmatieteen laitoksen ilmaisesta tietopalvelusta säämittauksia. Kuvassa näkyy vuoden 2019 tammikuussa ja heinäkuussa mitatut päivien keskilämpötilat Helsingissä Kumpulan kampuksella. 


Selvästikin kaikkina tammikuun päivinä on ollut kylmempää kuin 6 astetta ja heinäkuussa puolestaan lämpimämpää kuin 8 astetta. Saisimmeko tämän helpon säännön nuijittua tekoälyn tajuntaan? Tai digitaalisemmin muotoiltuna: osaammeko rakentaa hermoverkon, joka merkitsee tammikuussa mitatut lämpötilat ykkösellä ja heinäkuussa mitatut nollalla?


Tietokone oppii matkimalla hermosolun eli neuronin toimintaa. Laskennallinen neuroni on matemaattinen viestin välittäjä, joka vastaanottaa lukuja muilta neuroneilta, muokkaa niitä pikkuisen, ja lähettää tuloksen eteenpäin. Siinä on kaksi säädettävää asiaa: kertolaskulla toimiva vahvistus ja yhteenlaskuun perustuva lisäys. Tältä näyttää esimerkkineuroni:





Mitä luvulle tapahtuu, kun se menee neuroniin sisään vasemmalta? Ensin se kerrotaan ykkösellä, eli ei tapahdu muutosta. Seuraavaksi luvusta vähennetään kuutonen. "Kielletyn lumihiutaleen" näköistä osaa kutsun pakkasen estoksi; se korvaa miinusmerkkisen luvun nollalla mutta jättää plusmerkkiset luvut ennalleen. 


Lämpötilamittauksille tapahtuu jotakin mielenkiintoista, kun ne kulkevat tuon neuronin läpi. Muistathan, että kaikki tammikuun päivät olivat kuutta astetta kylmempiä? Koska neuroni vähentää kuutosen ja sitten vaihtaa miinusmerkkiset luvut nolliksi, kaikki tammikuun mittaukset tulevat nollana ulos. 


Mutta toiveemme oli, että hermoverkko merkitsee tammikuun ykkösellä ja heinäkuun nollalla. Laadimme sitä varten koneaivot, joissa on kaksi laskennallista neuronia yhden sijasta. Ensimmäinen niistä on sama, jota käsittelimme yllä. Toisen laitamme perään:



Kakkosneuroni siis kertoo sisään tulevaa lukua miinus puolella, lisää siihen ykkösen ja muuttaa näin mahdollisesti syntyvän negatiivisen luvun nollaksi. 


Käydään nyt läpi tuplaneuronivirityksemme toiminta. 


Jos syötämme kahden neuronin systeemiimme tammikuun lämpötilan eli kuutta astetta alhaisemman, ensimmäinen neuroni tuottaa tulokseksi nollan. Kakkosneuroni puolestaan kertoo tuota nollaa miinus puolikkaalla, mikä edelleen antaa nollan, ja lisää siihen ykkösen. Niinpä lopputulos on haluttu: tammikuulle ykkönen. 


Kun koneaivoillemme syötetään heinäkuun lämpötila eli jotakin suurempaa kuin 8, ensimmäinen neuroni vähentää siitä kuutosen ja tuottaa jotakin ainakin kakkosen kokoista. Sellaista lukua kun kertoo miinus puolikkaalla, saa tulokseksi jotakin pienempää kuin -1. Toinen neuroni lisää siihen ykkösen, jolloin tulos on edelleen pakkasen puolella. Kakkosneuronin lopussa oleva lumihiutalekielto sitten vaihtaa sen nollaksi. Saavutamme siis toisenkin tavoitteemme: heinäkuulle nolla.



Yllä kuvattu numeroleikki voi vaikuttaa oudolta, mutta tällä tavalla nykyaikainen tekoäly todella toimii. Käytännössä neuroneita vain on paljon suurempi määrä kuin kaksi, mutta ne laskevat samoin kuin yksinkertainen esimerkkimme. 


Tekoälyn “oppiminen” tarkoittaa sopivien lukujen löytämistä neuroneihin. Yleensä tietokone oppii automaattisesti itse sille annetun aineiston pohjalta, mutta tässä havainnollisessa esimerkissä opetin hermoverkon itse. Siis syöttämällä siihen luvut 1, 6, -1/2 ja 1. Nuo neljä lukua tuottavat hermoverkolle sen “osaamisen”, että tammikuun lämpötilat merkitään ykkösellä ja heinäkuun nollalla. Yksinkertaisuudestaan huolimatta tämä osaaminen on sentään jotakin: hermoverkko tunnistaa oikein myös vuoden 2017 aineiston: 



Tätä ensimmäistä kahden neuronin esimerkkiämme helpotti se, että talven ja kesän säät ovat niin erilaiset. Jos vertaamme huhti- ja heinäkuun lämpötiloja, yksinkertainen lämpötilaraja ei enää toimikaan. Tarvitsemme siis mutkikkaammat tekoaivot kevään ja kesän erotteluun! Siihen perehdymme tämän kirjoitussarjan toisessa osassa.



Lopuksi aivopähkinä tekoälyn ystäville. Kahden neuronin hermoverkkomme jaottelee onnistuneesti alle kuuden ja yli kahdeksan asteen lämpötilamittaukset. Entä jos syötämme siihen 7 asteen lämpötilan? Mitä hermoverkko silloin tulostaa ulos?


torstai 30. huhtikuuta 2020

Tekoälystä apua epidemioiden hoitoon ja hallintaan?

Kirjoittaja: Helinä Heino  

Kiinasta pandemiaksi levinnyt koronavirus on aiheuttanut terveydenhuollolle päänvaivaa, tilanteeseen haetaan ratkaisua myös tekoälyä hyödyntämällä. Kuva Pixabaysta.

Tekoälystä on haettu apua terveydenhuollon ruuhkautumiseen jo ennen koronaepidemian (COVID-19, tunnetaan myös nimellä SARS-CoV-2) ilmaantumista. Tekoälymenetelmiä on aiemmin kehitetty mm. uusien lääkkeiden löytämiseen (tosin tässä esimerkissä kyseessä on antibiootti, joka ei toimi viruksia vastaan), ja vastaavasta menetelmästä toivotaan apua koronan hoitoon. Ideana on että tekoäly pyrkii löytämään turvallisia ja käyttökelpoisia yhdisteitä aiemmin hankitun datan perusteella.

Suomessa koronatilanteeseen on reagoitu usealla eri toimenpiteellä, ja ajantasaista infoa taudista kulusta löytyy THL:nsivuilta.



Korona lyhyesti

Koronavirus on vaipallinen virus, joka aiheuttaa hengitystieinfektioita. Useimmiten korona aiheuttaa vain lieviä oireita, mutta ikävemmässä tapauksessa hengenvaarallisen keuhkokuumeen ja hapettumishäiriöitä. Tämän viruksen perimä on yksijuosteisessa RNA-ketjussa. Viruksen arvellaan pääsevän kohteeseensa eli soluun hyödyntäen ihmisen hengitysteiden pintasoluissa olevia ACE2-reseptoreita, jotka säätelevät verenpainetta. Solun sisällä virus kaappaa isäntäsolun koneiston käyttöönsä ja saa sen tuottamaan RNA-perimänsä avulla uusien viruksien tarvitsemia partikkeleita. Uudet virukset siirtyvät eteenpäin, jopa suolistoon asti. Virukset vahingoittavat soluja ja saavat ihmisen puolustusjärjestelmän aktivoitumaan. 


Koronavirus on saanut nimensä viruksen pinnalla olevien kruunumaisten proteiinipiikkien mukaan. Kuva Pixabaysta.
                                                                                                                                                                          
On arvioitu, että sairastuneista noin 80 % saa vain lieviä oireita ja loput sairastavat taudin vakavampaa muotoa (vakava tai kriittinen), jossa sairaalahoito on todennäköisesti tarpeen. Osa sairastuneista tarvitsee myös tehohoitoa. Koronavirus on erityisen ongelmallinen sen takia, että se leviää tehokkaasti, ja oireettomatkin henkilöt voivat levittää virusta. Viruksen hallintaan on käytetty paljon resursseja, sillä vaarana on että terveydenhuollon kapasiteetti loppuu kesken, jos taudin annetaan levitä vapaasti. Vaikka vain pieni osuus sairastuneista saa taudin kriittisen muodon, riittäisivät nämä potilaat pahimmillaan tukkimaan terveydenhuollon palvelut. Resurssien ylikuormittuessa vaarana on, että esimerkiksi vakavan liikenneonnettomuuden uhri tai sydänkohtauksen saanut henkilö eivät saisi riittävästi apua, kun tehohoidossa ei ole enää tilaa. Lisäksi normaalitilanteessa hoidettavissa olevat eri sairauksien oireet voisivat muuttua hengenvaarallisiksi hoitoresurssien puutteen takia.



Tekoäly epidemioiden tunnistamisessa, hallinnassa ja hoidossa

Tekoälyn soveltamista koronan hoidossa, diagnostiikassa ja levinneisyyden kartoituksessa tutkitaan ahkerasti maailmalla. Keuhkojen TT-kuvia (tietokonetomografia) on tutkittu tarkoituksena löytää koronaviruksen aiheuttama keuhkokuume. Alustavasti näyttäisi siltä, että tekoäly onnistuu löytämään koronaviruksen aiheuttamat keuhkokuumetapaukset analysoimalla kuvantamisesta saatavaa dataa. 

Kanadalainen BlueDot-yritys on kehittänyt algoritmin, joka varoitti käyttäjiään koronasta jo ennen viranomaisten ilmoitusta. Algoritmin ideana on se, että se skannaa uutisartikkeleita ja keskusteluja  erilaisilta alustoilta (päivittäin 100 000 artikkelia 65:llä kielellä) sekä virallisista että epävirallisista lähteistä. Samalla algoritmi yhdistelee keräämäänsä informaatiota ja tekee siitä päätelmiä. Koronan tapauksessa yrityksen algoritmi pystyi antamaan varoituksen uudesta leviävästä taudista viikkoa aiemmin kuin WHO. Yritys hyödynsi myös lentolippudataa, josta kyettiin analysoimaan minne sairastuneet suunnistivat levittäen tautia. Viruksen leviämisen arvioinnissa tulkitaan myös informaatiota muun muassa senhetkisistä ilmasto-olosuhteista ja paikallisista lämpötiloista. BlueDotin raportit lähetettiin usean maan terveysviranomaisille ja sairaaloille. Tulevaisuudessa vastaava toimintatapa voisi helpottaa ja nopeuttaa uusiin epidemioihin reagoimista, kun tälläiseen analyysiin osattaisiin suhtautua tilanteen vaatimalla vakavuudella. 

Tekoälyn avulla on tehty alustavia tutkimuksia siitä, millaiset oireet viittaavat vakavaksi kehittyvään tautiin. Tutkijoiden yllätykseksi koronan tunnusmerkeiksi luetut oireet, kuten nesteen kertyminen keuhkoihin tai korkea kuume, eivät olleet hyödyllisiä arvioitaessa, kelle kehittyy taudin vakava muoto. Tutkimuksessa huomattiin, että merkitseviä oireita olivat hieman koholla olevat ALT-arvot (alaniinin aminotransferaasi, maksasairauksista viestivä entsyymi), kova lihassärky ja korkea hemoglobiini. Lisäksi tutkijoita kiinnostaa geneettisen datan ja koronaan sairastuvuuden välinen yhteys. Näitä edellä mainittuja tietoja hyödyntämällä toivotaan löydettävän potilaat, joiden vointiin olisi syytä kiinnittää erityistä huomiota. 

Tekoälyä voidaan hyödyntää datamassojen analysoinnissa ja lajittelussa edellä mainitun BlueDot:n algoritmin tapaan, joka onnistui dataa analysoimalla havaitsemaan uuden taudin ilmaantumisen. Kun potentiaaliset vaaralliset taudit huomataan ajoissa, voidaan leviämistä hillitseviin toimenpiteisiin ryhtyä aiemmin. Jos taudinaiheuttajan perimä voidaan selvittää lyhyellä aikataululla, päästään nopeasti tutkimaan mahdollisia toimivia lääkeaineita. 

Rokotteiden ja lääkkeiden kehittäminen on aikaa vievää, sillä käyttöön tulevan valmisteen turvallisuus on tutkittava huolellisesti. Aluksi tehdään alustavia nonkliinisiä tutkimuksia, sitten voidaan siirtyä pienehkön ihmisistä koostuvan potilasryhmän tutkimukseen ja lopuksi useamman tuhannen henkilön lääkekokeisiin. Tälla tapaa pyritään löytämään käytetyn yhdisteen haittavaikutukset ja varmistamaan sen oikeanlainen vaikuttavuus. Tekoälyllä voidaan pyrkiä nopeuttamaan sopivan lääkeaineen löytymistä. Hyvässä tapauksessa toimiva yhdiste on jo olemassa (lääkeainetta on alunperin hyödynnetty johonkin muuhun käyttötarkoitukseen) ja varmistettu turvalliseksi (ei kohtuuttomia sivuvaikutuksia), jolloin tuotetta saadaan nopeammin markkinoille, kunhan sen toimivuus koronaa vastaan saadaan osoitetuksi.  



Kiinnostavia tekoälypohjaisia sovelluksia 

Koronasta johtuen yritysten sisäiset palvelupisteet saattavat ruuhkautua, tätä varten on kehitelty ns. koronabotti, joka pystyy vastaamaan usein toistuviin kysymyksiin (esim. karanteeni, palkanmaksu) ja näin nopeuttamaan vastausten saantia.

Suomalaisen Oura-sormuksen käyttömahdollisuuksia koronan tunnistamisessa tutkitaan myös. Vaikka tämä sormus ei olekaan lääkinnällinen laite, voisi siitä kuitenkin olla hyötyä epätavallisten oireiden ilmaantuessa. Ajatuksena on, että kun sormus on mukautunut käyttäjänsä ns. normaalitilanteen dataan (baseline), saattaisi se kyetä poimimaan datasta käyttäjälle epätavanomaista aktiivisuutta (esim. epätavalliset sykkeen ja lämpötilan vaihtelut). Analysoimalla käyttäjien dataa, saattaisi algoritmi löytää säännönmukaisuuksia, jotka ovat tyypillisiä juuri koronalle.   

Tekoälystä haetaan apua seurantaa vaativiin sairauksiin. Esimerkiksi epilepsian, unihäiriöiden ja erilaisten liikehäiriöiden diagnostiikalle ja seurannalle tästä olisi suuresti apua. Kehitteillä on monenlaisia etädiagnostiikan työkaluja, joiden avulla väestö voisi tulevaisuudessa käyttää terveydenhuollon palveluita kotisohvalta käsin. Tekoälystä on haettu apua myös kotihoidon palveluihin. Epidemioiden ja muiden poikkeusolojen vallitessa tällaiset etätyökalut olisivat erittäin käytännöllisiä, sillä näitä hyödyntäen voidaan vähentää ihmisten liikkumista. Seurannassa olevat ihmiset voivat saada nopeammin ja tehokkaammin apua kun oireista (jopa vasta kehittyvistä oireista) on olemassa dataa, eikä lääkäri ole pelkästään potilaan oman kertomuksen varassa. 

Kiinassa puolestaan on kehitetty sovellus, joka pyrkii löytämään infektoituneet potilaat seuraamalla metroasemalla olevien ihmisten lämpötiloja. Ideana on, että sovellus hyödyntää infrapunamittareita ja tekoälyä, jolloin voidaan löytää henkilöt joilla on kuumetta. 

Tällä hetkellä elämme haastavia aikoja maailmalla jylläävien pandemioiden levinneisyyden vuoksi ja joudumme kohtaamaan siitä aiheutuvia ongelmia. Samaan aikaan nykyinen tilanne on niin haaste kuin mahdollisuuskin kehittää uusia sovelluksia, joilla pyritään löytämään keinoja sairauksien tunnistamiseen, hoitoon ja ehkäisyyn. Uutisia uusista ideoista julkaistaan ripeään tahtiin ja kehitteillä olevasta älykkäästä teknologiasta toivotaankin apua koronan hoitoon ja hallintaan.