Tekoälyn perusteita ja sovelluksia

Esipuhe

Tämä kirja pohjautuu Jyväskylän yliopiston IT-tiedekunnassa lukuvuonna 2018-2019 pidettyyn kurssiin Tekoälyn perusteita ja sovelluksia. Kirjassa kerrotaan tekoälyn perusteista ja kymmeniä käytännön esimerkkejä, joissa käytetään tekoälyä. Tekoälysovelluksista kerrotaan sekä yleisesti, IT-tiedekunnan tutkimuksen näkökulmasta sekä tarkastelemalla kurssin opiskelijoiden vastauksia tekoälysovelluksia koskeviin kysymyksiin. Lisäksi tutustutaan neuroverkkojen matemaattiseen taustaan.

Kirjoittajina eri luvuissa ovat olleet Martti Lehto, Pekka Neittaanmäki, Esko Niinimäki, Riku Nyrhinen, Anniina Ojalainen, Ilkka Pölönen, Ilkka Rautiainen, Toni Ruohonen, Heli Tuominen, Petri Vähäkainu, Sami Äyrämö ja Sanna-Mari Äyrämö.

Kiitos avusta Anthony Ogbechie ja Matti Savonen.

Jyväskylässä 29.5.2019,

Heli Tuominen ja Pekka Neittaanmäki

1. Johdanto

Tekoäly esiintyy lähes päivittäin uutisotsikoissa ja mielipidekirjoituksissa. Sitä ihastellaan, tutkitaan, mystifioidaan ja pelätäänkin. Tekoälyllä ei ole tarkkaa yleistä määritelmää, vaan määritelmä riippuu asiayhteydestä. Tekoälyn käsite viittaa ohjelmiin ja laitteisiin, jotka kykenevät oppimaan ja jotka auttavat ihmistä niissä toiminnoissa, joita varten ne on suunniteltu. Avustavaa puolta korostettaessa käytetään monesti myös termiä laajennettu älykkyys (augmented intelligence).

Laajennettu älykkyys. Ihmisellä ja tekoälyllä on omat vahvuutensa, jotka yhdistämällä monet toiminnot helpottuvat.
Laajennettu älykkyys. Ihmisellä ja tekoälyllä on omat vahvuutensa, jotka yhdistämällä monet toiminnot helpottuvat.

Tekoäly on taustalla esimerkiksi hakukoneissa, pysäköintihallien rekisterintunnistimissa, kameroiden kasvojentunnistuksessa, älypuhelinten ääniohjauksessa ja kohdennetussa mainonnassa. Näiden toimintojen rakentamiseen käytetään erilaisia oppimismenetelmiä ja algoritmeja, joiden kaikkien takana on matematiikka. Tekoälyn taustalla olevan matematiikan ymmärtäminen on tärkeää, sillä sopivien funktioiden, algoritmien ja minimointimenetelmien valinta vaikuttaa tulosten tarkkuuteen, tekoälymenetelmän koulutusajan pituuteen, mallin monimutkaisuuteen ja yleistettävyyteen sekä tarvittavien parametrien ja muiden komponenttien lukumäärään.

Ihmisen aivojen toimintaa jäljittelevät keinotekoiset neuroverkot keksittiin jo 1940-luvulla. Kiinnostus niitä kohtaa heräsi uudelleen 1990-luvulla, mutta käyttöinto hiipui nopeasti. Neuroverkot eivät olleet muita menetelmiä parempia ja silloisilla tietokoneilla ei ollut mahdollisuutta käsitellä neuroverkkojen koulutuksessa tarvittavia suuria datamääriä. 2010-luvulla koneiden nopeutuminen ja datan määrän valtava kasvaminen ovat lisänneet innostusta tuhansia neuroneja sisältäviin syviin neuroverkkoihin. Neuroverkkoja käytetään esimerkiksi kuvantunnistuksessa, konenäössä, puheentunnistuksessa, kieltenkääntäjissä, peleissä ja lääketieteellisissä diagnooseissa.

Modernit tekoälysovellukset perustuvat pääosin datasta oppimiseen. Tietokoneet kykenevät ratkaisemaan monimutkaisia logiikan päättelyitä ja laskutehtäviä mutta tosielämän tapausten mallintamiseen tarvittavan informaation kerääminen on monesti vaikeaa. Ihmiselle helppojen mutta vaikeasti formaalissa muodossa esitettävien tehtävien ratkominen on tekoälylle haastavaa. Jotta tekoäly kykenisi ihmismäiseen toimintaan, sen pitäisi pystyä oppimaan asioita esimerkiksi kuvista, puheesta, muista äänistä, teksteistä ja tapahtumaketjuista. Nykyiset tekoälyalgoritmit eivät pysty lisäämään tai luomaan oppimaansa malliin sellaista tietoa, jota niiden opettamiseen käytettävässä datassa ei ole. Tekoälyn laatu ja kattavuus on siis varsin pitkälle datasta riippuvaista.

Tekoälyn opettamisessa käytettävän datan käsittelyyn tarvitaan ja käytetään monenlaisia tekniikoita, joita esitellään tässä kirjassa. Datan käsittelyn lisäksi tutustutaan neuroverkkojen taustalla olevaan matematiikkaan, kyberturvallisuuteen ja tekoälyn käyttöön eri yhteyksissä. Tekoälyllä on satoja sovellutuksia. Sovellutukset kattavat perinteisten koneoppimisen, kuva-analyysin, päätöksenteon tukijärjestelmien lisäksi puheen- ja tekstintunnistuksen. Nämä ovat nopeasti kehittyviä tekoälyn sovellutusaloja. Tekoäly voi toimia ongelmanratkaisijan asemassa kyberuhkien havaitsemisessa, ratkaisemisessa ja torjunnassa. Uusimmat ratkaisut automatisoivat kyberturvallisuustoimenpiteitä ja siten helpottavat ihmisen toimintaa.

Luvussa 2 tutustutaan tekoälyn keskeisiin käsitteisiin ja termeihin.

Luvun 3 teemana ovat ohjatun oppimisen luokittelualgoritmit ja ennustemenetelmät. Tekoälyn avulla suoritettavat tehtävät ovat lähes aina tulkittavissa ennustustehtäviksi. Perinteisessä selittävässä mallintamisessa pyritään selvittämään selittävien ja selitettävien muuttujien väliset riippuvuudet ja syy-seuraussuhteet kun taas ennustavassa mallintamisessa pyritään mahdollisimman tarkkaan ennustustulokseen yhteyksien jäädessä useimmiten mustalaatikko -tyyppisen mallin taakse.

Luvun alussa käydään läpi koneoppimisen oppimistyylejä: ohjattu oppiminen, ohjaamaton oppiminen ja vahvistettu oppiminen. Luvussa käsitellään muuttujatyyppejä, aineiston esikäsittelyä ja validointia. Validointi kertoo, kuinka hyvin opetusdatalla opetettu malli toimii riippumattomilla aineistoilla. Luvun lopussa tutustutaan lyhyesti erilaisiin luokittelumenetelmiin.

Luvussa 4 tutustutaan neuroverkkojen rakenteeseen, toimintaan ja niiden taustalla olevaan matematiikkaan. Luvussa käsitellään eteenpäin syöttäviä neuroverkkoja ja niiden opettamista gradienttimenetelmällä.

Luvun 5 aiheena on prosessinlouhinta, simulointimallit ja tekoälytuettu päätöksenteko. Aihetta käsitellään sosiaali- ja terveydenhuollon kehittämisen näkökulmasta.

Luku 6 käsittelee tietokoneistettua kielenkäsittelyä. Siinä kerrotaan, mitä kaikkea tekstille tehdään ja mitä siitä voidaan saada selville tekstianalytiikan keinoin.

Luvussa 7 käsitellään tekoälyä ja kyberturvallisuutta. Aiheesta kerrotaan sekä yleisesti että esitellään useita tekoälyä hyödyntäviä kyberturvallisuusratkaisuja.

Luvussa 8 kerrotaan ensin Jyväskylän yliopistossa tehtävästä, tekoälyyn liittyvästä tutkimuksesta ja sitten lyhyesti Suomen muiden yliopistojen ja tutkimuslaitosten tekoälytutkimuksesta.

Luvussa 9 esitellään tekoälyn sovelluskohteita. Luvun alussa kerrotaan sovelluksista lyhyemmin terveydenhuollon, lääkehuollon, palvelurobotiikan ja rakennus- ja kiinteistöalan näkökulmasta, luvun loppuosa antaa laajan katsauksen sovelluksiin eri alueilla.

Luvussa 10 tarkastellaan Jyväskylän yliopiston IT-tiedekunnan kurssin Tekoälyn perusteita ja sovelluksia 2019 suorittaneiden vastauksia kurssin tehtäviin.

Luku 11 esittelee tekoälyn toimijoita Suomessa tutkimus- ja yritysmaailmassa.

Appendix A keskittyy luvussa 4 tarvittavaan matematiikkaan: analyysiin, ääriarvotehtäviin ja lineaarialgebran perusteisiin.

#

2. Peruskäsitteet ja termit

Tässä luvussa selitetään lyhyesti joitakin keskeisiä tekoälyyn liittyviä käsitteitä. Osaan niistä palataan muissa luvuissa syvällisemmin.

2.1 Tieteellinen laskenta

Tieteellinen laskenta/laskennallinen tiede (computational science/scientific computing) edustaa kolmatta tieteen paradigmaa. Siinä simuloidaan tietokoneen avulla reaalimaailman ilmiöitä tai tilanteita, joita reaalimaailmassa ei välttämättä vielä ole. Tieteellinen laskenta on leikkaus matematiikasta, tilastotieteestä, tietojenkäsittelytieteestä ja perustieteiden (fysiikka, kemia, biologia, taloustiede, yhteiskuntatiede, insinööritiede jne.) ydinalueista. Tämä yhdistelmä muodostaa uuden omanlaisen tutkimusalueensa joka poikkeaa osasistaan. Tieteellisen laskennan kattava tavoite saavuttaa täysin ennustettavia tieteellisiä malleja on sen ominaispiirre. Tähän tavoitteeseen pyritään kehityksellä, joka yhdistää mallintamisen, numeerisen analyysin, algoritmit, simulaatiomenetelmät, data-analytiikan, suurteholaskennan ja tieteellisten ohjelmistojen kehittämisen.

Tieteellinen laskenta on leikkaus matematiikasta, tietotekniikasta ja luonnontieteistä.
Tieteellinen laskenta on leikkaus matematiikasta, tietotekniikasta ja luonnontieteistä.

2.2 Big data - massadata

Big datalla (Big Data) tarkoitetaan massiivisten, jatkuvasti kasvavien, strukturoitua ja ei-strukturoitua tietoa, kuvia, äänitteitä ja videoita sisältävien tietojoukkojen keräämistä, säilyttämistä ja tiedon käyttämistä. Tällaisten datamäärien hallitseminen ja tiedon analysoiminen ovat perinteisillä tietokantatyökaluilla joko mahdotonta tai erittäin vaikeaa. Big datalle tyypillisiä tunnusmerkkejä ovat 5 V:tä:

  1. Määrä (volume) - luodun ja varastoidun datan määrä on niin suurta, että sitä on mahdotonta käsitellä perinteisin menetelmin.
  2. Valikoima (variety) – datan tyyppi, laatu ja alkuperä vaihtelee suuresti. Dataa tulee monista lähteistä, se koostuu erilaisista osista eikä ole jäsenneltyä.
  3. Nopeus (velocity) – datan tuottonopeus, analysointi ja käsittely on nopeaa.
  4. Arvo (value) – data ja siitä saatava tieto on yrityksille hyödyllistä.
  5. Todenmukaisuus (veracity) – datan laatu ja luotettavuus ovat tärkeitä asioita.

Massadataa syntyy nykyisin monesta lähteestä kuten internetsivujen ja sosiaalisen median käyttötiedoista, sää- ja navigointidatasta, terveydenhuollon tiedoista ja erilaisten laitteiden toimintatiedoista.

Big datan viisi tunnusmerkkiä ovat määrä, valikoima, nopeus, arvo ja todenmukaisuus. Englanninkielisten termien mukaan ominaisuusjoukkoa kutsutaan lyhyesti 5V.
Big datan viisi tunnusmerkkiä ovat määrä, valikoima, nopeus, arvo ja todenmukaisuus. Englanninkielisten termien mukaan ominaisuusjoukkoa kutsutaan lyhyesti 5V.

2.3 Tiedonlouhinta

Tiedonlouhinta (data mining) tarkoittaa joukkoa menetelmiä, joilla pyritään oleellisen tiedon löytämiseen suurista tietomassoista. Toimintaan liittyy tietomassojen keräämistä, säilyttämistä, jakamista, etsimistä, analysointia sekä esittämistä tilastotiedettä, tietotekniikkaa ja koneoppimisen menetelmiä hyödyntäen.

Tiedonlouhinnassa käsitellään suuria tietomassoja käyttäen tilastotieteen, tietotekniikan ja koneoppimisen keinoja.
Tiedonlouhinnassa käsitellään suuria tietomassoja käyttäen tilastotieteen, tietotekniikan ja koneoppimisen keinoja.

2.4 Koneoppiminen

Koneoppiminen (machine learning) on tekoälyn osa-alue, jonka tarkoituksena on saada ohjelmisto toimimaan entistä paremmin pohjatiedon ja mahdollisen käyttäjän toiminnan perusteella. Koneoppimisessa kone oppii toistuvista tapahtumista ilman, että ihminen erikseen opettaa sitä. Koneoppimisella pyritään automatisoimaan tiedon tulkintaa ja laajentamaan koneen havainnointikykyä monimutkaisten algoritmien avulla perinteisen raja-arvoihin tukeutuvan mallin sijasta. Koneoppiminen voidaan jakaa kolmeen eri kategoriaan, ohjattuun oppimiseen, ohjaamattomaan oppimiseen ja vahvistettuun oppimiseen, joita käsitellään tarkemmin luvussa.

2.5 Neuroverkko

Neuroverkot (artificial neural network) ovat informaation käsittelyn, matematiikan tai laskennan malleja, jotka perustuvat yhdistävään laskentaan. Ihmisen aivojen toimintaa jäljittelevät keinotekoiset neuroverkot keksittiin jo 1940-luvulla. Neuroverkkojen uusi aalto alkoi 1990-luvulla mutta niiden käyttöinto hiipui nopeasti siihen, että ne eivät olleet muita menetelmiä parempia ja silloisilla tietokoneilla ei ollut mahdollisuutta käsitellä neuroverkkojen koulutuksessa tarvittavia suuria datamääriä. 2010-luvulla koneiden nopeutuminen ja datan määrän valtava kasvaminen ovat kasvattaneet innostusta syväoppimiseen.

Neuroverkkoja käytetään esimerkiksi kuvantunnistuksessa, konenäössä, puheentunnistuksessa, kieltenkääntäjissä, peleissä ja lääketieteellisissä diagnooseissa. Neuroverkko koostuu syöte- ja ulostulokerroksesta ja niiden välissä olevista piilokerroksista, jotka koostuvat neuroneista. Neuroverkkoja käsitellään tarkemmin luvussa.

Neuroverkko koostuu syötekerroksesta ja ulostulokerroksesta, joiden välissä voi olla yksi tai useampia piilokerroksia. Kerrokset koostuvat neuroneista, joissa suoritetaan neuroverkon laskutoimitukset.
Neuroverkko koostuu syötekerroksesta ja ulostulokerroksesta, joiden välissä voi olla yksi tai useampia piilokerroksia. Kerrokset koostuvat neuroneista, joissa suoritetaan neuroverkon laskutoimitukset.

2.6 Tekoälyn matematiikka

Tekoälyn varhaiset versiot, joita voidaan käyttää esimerkiksi automaattiseen todistamiseen ja erilaisten loogisten ongelmien ratkaisemiseen, pohjautuvat logiikkaan. Monissa koneoppimisen menetelmissä tarvitaan todennäköisyyslaskennan ja graafien teoriaa.

Neuroverkkojen käsittelyssä tärkeitä matematiikan aloja ovat moniulotteinen analyysi, lineaarialgebra ja todennäköisyyslaskenta. Verkkoa opetettaessa yritetään minimoida virhefunktioita ja piilokerroksen painoja ja vakiotermejä muutetaan valitun algoritmin avulla. Virhefunktio riippuu suuresta määrästä parametreja, joten sen minimointi on haastava ongelma. Monesti minimoinnissa käytetään gradientteihin perustuvia menetelmiä, joissa tarvitaan virhefunktion derivaattoja verkon parametrien suhteen. Syöte ja verkon parametrit muutetaan verkon laskutoimituksissa yleensä vektori- ja matriisimuotoihin ja laskuissa käytetään lineaarialgebraa. Taustalla olevan matematiikan ymmärtäminen on tärkeää, sillä neuroverkoissa sopivien funktioiden, algoritmien ja minimointimenetelmien valinta vaikuttaa tulosten tarkkuuteen, verkon koulutusajan pituuteen, mallin monimutkaisuuteen sekä tarvittavien parametrien ja muiden komponenttien lukumäärään. Neuroverkkojen taustalla olevaa matematiikkaa käsitellään luvussa.

2.7 Syväoppiminen

Syväoppis-termi (deep learning) on saanut nimensä siitä, että neuroverkoissa käytetään monia piilokerroksia, joilla on kullakin oma tehtävänsä. Syvät neuroverkot ovat piirteenmuodostukseen kykeneviä monikerroksisia neuroverkkoja. Syväoppimisen haasteena on opettamiseen tarvittavan datan määrä. Koska syvissä neuroverkoissa voi olla miljoonia neuroneita ja siten miljoonia muutettavia parametreja, niin opetusdataa tarvitaan valtavasti. Jos dataa on liian vähän, niin verkot ylioppivat helposti eivätkä tulokset yleisty uusiin ennalta tuntemattomiin havaintoihin.

Koneoppiminen on tekoälyn osa-alue, jossa kone / ohjelma oppii pohjatiedon ja käyttäjän toiminnan perusteella tunnistamaan, luokittelemaan ja ennustamaan asioita.
Koneoppiminen on tekoälyn osa-alue, jossa kone / ohjelma oppii pohjatiedon ja käyttäjän toiminnan perusteella tunnistamaan, luokittelemaan ja ennustamaan asioita.

2.8 Vahva ja heikko tekoäly

Tekoäly voidaan jakaa heikkoon ja vahvaan tekoälyyn (artificial superintelligence). Heikolla tekoälyllä tarkoitetaan yksittäisissä tehtävissä taitaviin suorituksiin kykeneviä algoritmeja, kuten hakukoneita, roskapostisuodattimia tai vaikkapa robotti-imureita. Tässä kategoriassa pystytään tekemään jo paljon edistyneempiäkin toimintoja, kuten kasvojen- ja puheentunnistusta, hahmontunnistusta tai avustavaa tutkimustyötä. Vahvalla tekoälyllä puolestaan tarkoitetaan tulevaisuuteen ennustettavaa tekoälyä, joka tulee toimimaan täysin irrallaan ihmisälystä. Vahvaa tekoäly on tutkimuksen kohteena ja siihen liittyy voimakasta eettistä kritiikkiä.

Ihmisen älykkyyden ylittävää tekoälyä kutsutaan vahvaksi tekoälyksi. Joidenkin mielestä jaottelua vahva/heikko tekoäly ei pitäisi käyttää.
Ihmisen älykkyyden ylittävää tekoälyä kutsutaan vahvaksi tekoälyksi. Joidenkin mielestä jaottelua vahva/heikko tekoäly ei pitäisi käyttää.

2.9 Konenäkö

Konenäöllä (machine vision) pyritään yleensä matkimaan ihmisnäköä tai laajentamaan sen mahdollisuuksia. Konenäköjärjestelmä koostuu valonlähteestä, kohteesta, kamerasta, tietokoneesta ja siinä toimivassa kuvankäsittelyohjelmasta, joka tulkitsee kuvan automaattisesti.

Konenäön ja hahmontunnistuksen tavoitteena on hyödyllisten ja merkittävää lisäarvoa tuottavien sovellusten tuottaminen erityisesti digitaalista kuvankäsittelyä ja kuva-analyysiä hyödyntäen. Konenäkö on tarkka, nopea ja väsymätön rutiinitehtävien suorittaja, jolla voidaan parantaa prosessiteollisuuden tehokkuutta. Sitä käytetään esimerkiksi liukuhihnalla tapahtuvissa tuotetarkastuksissa ja pullonpalautusautomaateissa.

Termejä konenäkö ja tietokonenäkö (computer vision) käytetään monesti hieman ristiin. Jälkimmäisellä tarkoitetaan tietokoneiden korkeatasoista digitaalisten kuvien ja videoiden ymmärrystä. Se luokitellaan usein tekoälyn osaksi ja sitä käytetään esimerkiksi lääketieteellisissä kuva-analyyseissä.

2.10 Hahmontunnistus

Hahmontunnistus (pattern recognition) on koneoppimisen osa-alue, jonka tavoitteena on kehittää datasta malleja tai kaavoja tunnistavia järjestelmiä. Käytännön esimerkkejä hahmontunnistuksen sovelluksista ovat esimerkiksi puheen automaattinen tallentaminen tekstiksi, kirjasta skannatun tekstin siirtäminen tekstinkäsittelyohjelmaan, ihmisten kasvojen tunnistaminen tai roskapostien tunnistaminen saapuneiden sähköpostien joukosta.

Hahmontunnistusmenetelmät voidaan jakaa kolmeen luokkaan: tilastollinen hahmontunnistus, syntaktinen hahmontunnistus ja neuraalinen hahmontunnistus. Näistä tilastollisessa hahmontunnistuksessa oletetaan, että etsittävällä hahmolla on tilastollinen jakauma kussakin luokassa, joihin kyseisen piirteen avulla halutaan luokitella. Syntaktinen hahmontunnistus olettaa vastaavasti, että on olemassa jokin rakenne, jonka perusteella luokittelu voidaan tehdä. Neuraalinen hahmontunnistus on epälineaarinen regressiomalli, joka osaa itsenäisesti kaivaa datasta olennaiset piirteet ja muodostaa näiden välille monimutkaisia riippuvuussuhteita.

Hahmontunnistuksessa datasta etsitään ominaisuuksia, joiden perusteella se esimerkiksi jaetaan eri luokkiin. Tässä kuviot on jaettu kahteen luokkaan muodon, koon ja värin perusteella.
Hahmontunnistuksessa datasta etsitään ominaisuuksia, joiden perusteella se esimerkiksi jaetaan eri luokkiin. Tässä kuviot on jaettu kahteen luokkaan muodon, koon ja värin perusteella.

2.11 Kuvantunnistus

Kuvantunnistuksella (image recognition) konenäön yhteydessä on kyky tunnistaa esineitä, paikkoja, ihmisiä, kirjoitusta ja toimintaa kuvissa. Kuvantunnistuksessa käytetään kameroita, konenäkötekniikoita ja koneoppimisen menetelmiä. Konvoluutioneuroverkkojen avulla onnistutaan nykyisin tekemään haastaviakin tunnistustehtäviä.

Kuvantunnistuksessa pyritään tunnistamaan kuvista erilaisia asioita kameroiden, konenäkötekniikoiden ja koneoppimisen avulla.
Kuvantunnistuksessa pyritään tunnistamaan kuvista erilaisia asioita kameroiden, konenäkötekniikoiden ja koneoppimisen avulla.

2.12 Puheentunnistus

Puheentunnistus (speech recognition) on joukko kieli- ja puheteknologian alaan kuuluvia hahmontunnistusmenetelmiä, joiden avulla tietokone voi tunnistaa ihmisten puhetta. Puheentunnistusmenetelmien avulla voidaan esimerkiksi valmistaa puheohjattavia laitteita tai taltioida puhetta tekstimuotoiseksi.

#

3. Luokittelu- ja ennustemenetelmät

(Esko Niinimäki, Ilkka Pölönen, Ilkka Rautiainen, Heli Tuominen, Sami Äyrämö)

{}

Modernit tekoälysovellukset perustuvat pääosin datasta oppimiseen. Tosielämän tapausten mallintamiseen vaadittavan kokonaisvaltaisen informaation kerääminen voi olla äärimmäisen vaikeaa. Vaikka monimutkaisten matemaattisten tehtävien ratkaiseminen tietokoneen avulla on nopeuttanut maailman kehittymistä monin tavoin, ihmiselle intuitiivisen oloisten mutta vaikeasti formaalissa muodossa esitettävien tehtävien ratkominen on tekoälylle suuri haaste. Ollakseen älykäs ja vuorovaikutuskykyinen tietokoneen täytyy pystyä oppimaan asioita esimerkiksi kuvista, äänistä, teksteistä, sähkösignaaleista ja tapahtumasekvensseistä eli suurista matalan abstraktiotason tietomassoista. Menetelmien älykkyydestä ja oppimiskyvystä huolimatta varsinainen sovellusalakohtainen tieto on kuitenkin datassa. Tekoälylgoritmit eivät pysty lisäämään tai luomaan oppimaansa malliin sellaista tietoa, jota niiden opettamiseen käytettävä data ei sisällä. Tekoälyn laatu ja kattavuus on siis varsin pitkälle datasta riippuvaista. Toisaalta ilman data- ja koneoppimisalan ammattitaitoa suurten datamassojen valtava potentiaali on mahdotonta hyödyntää.

#

3.1 Koneoppiminen

Koneoppiminen (Machine learning) on tekoälyn osa-alue, jossa kone/ohjelma oppii pohjatiedon ja käyttäjän toiminnan perusteella tunnistamaan, luokittelemaan ja ennustamaan asioita. Kaikkia eri tilanteita varten ei ole erillistä ohjetta vaan oppiminen tapahtuu kokemuksen avulla.

Mitchell 1997: (A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E.)

Miten datasta oppiminen eroaa perinteisestä dataa selittävästä analytiikasta?

Tekoälytehtävät ovat pääasiassa tavalla tai toisella ennustustehtäviä. Selittävän mallintamisen (explanatory modeling) avulla pyritään ymmärtämään selittävien ja selitettävien muuttujien väliset riippuvuudet ja kausaliteetit. Ennustavassa mallintamisessa (predictive modeling) taas pyritään mahdollisimman tarkkaan ennustustulokseen syötteiden ja vasteiden välisten yhteyksien luonteen jäädessä useimmiten mustalaatikko -tyyppisen mallin taakse. Tämän vuoksi ennustavassa mallintamisessa, ja siten koneoppimiseen perustuvassa tekoälyssäkin, datasta opetettujen mallien validointi riippumattomilla aineistoilla on äärimmäisen tärkeää ennen niiden käytäntöön viemistä.

Koneoppiminen voidaan jakaa kolmeen luokkaan oppimisen tyylin perusteella.

Koneoppiminen voidaan jakaa oppimisen tyylin perusteella kolmeen luokkaan (ohjattu oppiminen, ohjaamaton oppiminen ja vahvistusoppiminen). Ohjattu oppiminen jaetaan datan tyypin mukaan luokitteluksi ja regressioksi. Ohjaamattomassa oppimisessa data taas ryhmitellään ominaisuuksien perusteella.
Koneoppiminen voidaan jakaa oppimisen tyylin perusteella kolmeen luokkaan (ohjattu oppiminen, ohjaamaton oppiminen ja vahvistusoppiminen). Ohjattu oppiminen jaetaan datan tyypin mukaan luokitteluksi ja regressioksi. Ohjaamattomassa oppimisessa data taas ryhmitellään ominaisuuksien perusteella.

Ohjattu oppiminen

Ohjatussa oppimisessa (supervised learning) konetta opetetaan syöte-tavoite-pareista koostuvan aineiston avulla. Tavoitteena on, että kone osaa tehdä jaottelun samankaltaiselle aineistolle. Ohjattu oppiminen voidaan jakaa tavoitedatan luonteen perusteella kahteen luokkaan, luokitteluun ja regressioon. Jos data on diskreettiä eli se voidaan jakaa erillisiin ryhmiin, niin kyse on luokittelusta. Jos datan on jatkuvaa, niin jaottelu on regressiota. Esimerkkejä luokittelusta ovat käsinkirjoitettujen numeroiden tunnistus ja sähköpostin jaottelu roskapostiin ja tärkeään postiin. Regressiota ovat esimerkiksi lämpötilan tai jonkin tuotteen hinnan määrittäminen.

Ohjattu oppiminen
Ohjattu oppiminen

Ohjaamaton oppiminen

Ohjaamaton oppiminen (unsupervised learning) jäljittelee ihmisen oppimista. Opettamiseen käytettävästä datasta yritetään tunnistaa eri syötteiden välillä olevia riippuvuuksia, suhteita ja samankaltaisuuksia. Syötteet pyritään ryhmittelemään niin, että yksittäisellä syötteellä on enemmän samanlaisia ominaisuuksia samaan ryhmään kuuluvien syötteiden kuin muihin ryhmiin kuuluvien syötteiden kanssa. Esimerkki ohjaamattomasta oppimisesta on akateemikko Teuvo Kohosen (1934) 1980-luvulla kehittämä itseorganisoituva kartta.

Ohjaamaton oppiminen
Ohjaamaton oppiminen

Vahvistettu oppiminen

Vahvistetussa oppimisessa (reinforcement learning) kone, “älykäs agentti”, oppii ympäristön antaman palautteen perusteella. Kone saa toiminnastaan dynaamisessa ympäristössä positiivista ja negatiivista palautetta.
Se tekee valintoja aiemmin koettujen palkittujen vaihtoehtojen ja tuntemattomien vaihtoehtojen välillä ja oppii toimimaan niin, positiivisen palautteen määrä kasvaa ja negatiivisen vähenee. Vahvistetusta oppimisista käytetään esimerkiksi itseohjautuvissa autoissa ja robotiikassa.

Vahvistettu oppiminen
Vahvistettu oppiminen

Kuhunkin oppimistyyliin sopivia algoritmeja on useita. Ratkaistavana olevaan ongelmaan sopivan algoritmin valinta riippuu oppimistyylin lisäksi esimerkiksi datan määrästä, koosta ja tyypistä, algoritmin oppimisnopeudesta, opetuksessa tarvittavasta tallennustilasta ja siitä, kuinka tehokasta tai yleistettävää ratkaisua ollaan etsimässä. Jos dataa on vähän, niin yksinkertaiset algoritmit vähentävät ylioppimisen riskiä. Paras algoritmi ei välttämättä löydy ensimmäisellä kokeilulla.

3.2 Muuttujatyypit

Aineiston käsittely edellyttää yleensä muuttujien tyyppien tunnistamista, sillä käsittelyssä sallitut toimenpiteet riippuvat muuttujan luonteesta. Muuttujat voidaan jakaa diskreetteihin ja jatkuviin.

Diskreetti muuttuja

Diskreetin muuttujan (discrete variable) arvot voidaan ilmaista joko tekstinä tai numeerisesti. Diskreetti muuttuja saa arvonsa jollain tavalla rajatusta joukosta. Muuttuja voi olla joko nominaalinen tai ordinaalinen. Nominaalisten arvojen välille ei voi muodostaa mielekästä järjestystä. Esimerkiksi paitatehtaalla voidaan määritellä paidalle mahdollinen väri joukosta {sininen, valkoinen, punainen, musta}. Ordinaalisen muuttujan arvot voidaan sen sijaan järjestää. Esimerkiksi joukko {välttävä, tyydyttävä, hyvä, kiitettävä, erinomainen} on järjestetty merkityksellisellä tavalla.

Jatkuva muuttuja

Jatkuva-arvoiset muuttujat (continuous variable) ilmaistaan tyypillisesti reaalilukuja käyttäen. Esimerkki jatkuva-arvoisesta muuttujasta on jokin automaattisen mittausvälineen tuottama lukema, vaikkapa lämpötila.

3.3 Aineiston esikäsittely

Aineiston esikäsittely (data preprocessing) sisältää kaikki ne toimet, joilla aineisto saatetaan valmiiksi analyysiä varten. Vaadittavat toimenpiteet riippuvat analysoitavasta aineistosta. Ensimmäisiä aineiston esikäsittelyn vaiheita ovat siivous ja yhdistäminen.

Siivous

Paljon käsinsyötettyä tietoa sisältävässä perinteisessä tietokannassa on hyvin todennäköisesti virheellisesti tai moneen kertaan syötettyä tietoa ja osa tiedosta on väistämättä puutteellista. Näitä puutteita ja virheitä korjaavia toimenpiteitä kutsutaan datan siivoukseksi (data cleaning) .

Yhdistäminen

Käsiteltävä aineisto voi myös olla jakautuneena useammassa eri lähteessä. Tällöin eri lähteissä olevat aineistot on yhdistettävä samassa muodossa olevaksi kokonaisuudeksi. Tätä toimenpidettä kutsutaan aineiston yhdistämiseksi (data integration).

Aineiston vähentäminen

Aineiston vähentämisellä tarkoitetaan niitä toimia, joilla analysoitavan aineiston määrää pyritään vähentämään analysoinnin nopeuttamiseksi ja selkeyttämiseksi. Vähentäminen pyritään tekemään niin, että mahdollisimman suuri osa alkuperäisen aineiston olennaisesta informaatiosta säilyy. Aineiston vähentämisen menetelmiä ovat ominaisuuksien valinta, piirreirrotus sekä näytteenotto.

Ominaisuuksien valinta

Ominaisuuksien valinnan (feature selection) aikana karsitaan datajoukosta varsinaisen analyysin kannalta epäolennaiset ja toisteiset ominaisuudet. Samalla aineiston ymmärrettävyys ja esitettävyys yleensä paranee tiedon karsimisen ansiosta. Ominaisuuksien valinta voi olla joko kiinteänä osana ennustamistehtävän suorittavaa algoritmia tai se voidaan suorittaa erillisenä tehtävänä.

Piirreirrotus

Piirreirrotuksessa (feature extraction) pyritään kuvaamaan alkuperäinen muuttujajoukko pienemmällä määrällä ulottuvuuksia. Eräs käytetyimmistä piirreirrotuksen menetelmistä on pääkomponenttianalyysi (principal component analysis). Pääkomponenttianalyysi luo kokonaan uuden joukon muuttujia, joihin se pyrkii projisoimaan alkuperäisen aineiston olennaiset ominaisuudet. Uusi muuttujajoukko on yleensä alkuperäistä aineistoa pienempi.

Näytteenotto

Näytteenotto (sampling) on datan vähentämisen menetelmä, jolla aineistosta valitaan osajoukko analyysiä varten.

Aineiston muunnokset

Aineiston muunnoksilla muuttujat valmistellaan sopivaan muotoon analyysiä varten. Muunnosten menetelmiä ovat normalisointi, diskretisointi sekä ominaisuuksien luonti.

Normalisointi

Normalisoinnilla (normalisation) skaalataan eri muuttujien arvot keskenään vertailukelpoiselle vaihteluvälille.

Diskretisointi

Diskretisoinnilla (discretisation) muunnetaan jatkuvat muuttujien arvot diskreeteiksi. Muunnosta voidaan tarvita eri syistä, esimerkiksi siksi, että monet luokitteluun perustuvat ennustusmenetelmät osaavat hyödyntää ainoastaan diskreettejä muuttujia. Muunnoksessa aineisto saadaan myös usein helpommin esitettävään ja ymmärrettävään muotoon.

Ominaisuuksien luonti

Ominaisuuksien luonnissa (feature construction/feature generation) aineistoon luodaan kokonaan uusia ominaisuuksia käyttämällä hyväksi aineistossa jo olemassa olevia muuttujia.

3.4 Validointi

Validoinnin eli vahvistamisen (validation) perusajatuksena on selvittää, kuinka hyvin opetusaineiston pohjalta muodostettu malli toimii aineistolla, jota malli ei ole ennen nähnyt. Validointi- eli vahvistusaineistolla tarkoitetaan opetusaineistosta irrotettua osajoukkoa, jota ei käytetä mallin opetusvaiheessa. Aineistosta voidaan myös alussa jättää kokonaan sivuun osajoukko, johon ei kosketa ennen mallin lopullista arviointia. Tällaista aineistoa kutsutaan testiaineistoksi (test examples).

Data jaetaan opetus-, validointi- ja testidataan.
Data jaetaan opetus-, validointi- ja testidataan.

Yleisiä validointimenetelmiä ovat

Holdout

Holdout-validoinnissa datajoukko jaetaan kahteen osaan. Tyypillisesti opetusaineistona voidaan käyttää esimerkiksi kahta kolmasosaa aineistosta ja validointiaineistona loppuaineistoa.

k-kertainen ristiinvalidointi

-kertaisesssa ristiinvalidoinnissa (-fold cross-validation) aineisto jaetaan :hon likimain yhtä suureen osaan. Yhtä näistä osista käytetään validointiaineistona ja loppuja opetusaineistona. Validointi suoritetaan kertaa ja jokaista osaa käytetään vuorollaan kerran validointiaineistona. Lopuksi mallin toimivuutta voidaan arvioida laskemalla kaikkien validointikertojen keskiarvo.

-kertainen ristiinvalidointi
-kertainen ristiinvalidointi

Leave-one-out-ristiinvalidointi

Leave-one-out-ristiinvalidointi (Leave-one-out) on -fold-ristiinvalidoinnin erikoistapaus, jossa :n arvoksi määritellään opetusaineiston havaintojen lukumäärä. Tällöin jokainen havainto muodostaa oman joukkonsa ja jokaista havaintoa käytetään vuorollaan validointiaineistona.

Leave-one-out-ristiinvalidointi
Leave-one-out-ristiinvalidointi
{}

3.5 Luokittelumenetelmiä

Ohjatun oppimisen luokittelu voi olla binääristä luokittelua tai luokittelua useampaan luokkaan. Binäärisessä luokittelussa (binary classification) mahdollisia luokkia, joihin yksittäinen datan alkio voi kuulua, on kaksi. Esimerkiksi sähköposti on roskapostia tai oikeaa postia ja vain kissojen ja koirien kuvia sisältävässä joukossa jokainen kuva on joko kissan tai koiran kuva, ei molempia. Jotkut algoritmit, kuten logistinen regressio, on suunniteltu erityisesti binääriseen luokitteluun ja ne ovat tehtävässään tehokkaita. Useampaan luokkaan luokittelu vaatii monimutkaisemman algoritmin. Seuraavassa on esitelty lyhyesti yleisiä selittävään ja ennustavaan mallintamiseen kuuluvia algoritmeja.

Logistinen regressio

Logistinen regressio (Logistic regression) sopii binääriseen luokitteluun. Malli kertoo, millä todennäköisyydellä datapiste kuuluu ongelmassa oleviin luokkiin. Se sopiii parhaiten tilanteisiin, jossa data voidaan erottaa lineaarisesti (suoralla, hypertasolla).

k:n lähimmän naapurin menetelmä

:n lähimmän naapurin menetelmässä (-Nearest Neighbor, NN) datapisteet (opetusesimerkit) ovat pisteitä -ulotteisessa avaruudessa. Jokaiselle datapisteelle etsitään euklidisen (tai muun) etäisyyden mielessä lähintä pistettä ja datapiste luokitellaan naapureiden luokkien avulla käyttäen esimerkiksi keskiarvoa regression ja moodia luokittelun tapauksessa. Koko data on kerralla muistissa.

:n lähimmän naapurin menetelmä
:n lähimmän naapurin menetelmä

Tukivektorikone

Tukivektorikoneen (Support vector machine) perusversiota käytetään binääriseen luokitteluun. Se luokittelee dataa etsimällä lineaarista päätöspintaa (hypertasoa), joka erottaa kahteen eri luokkaan kuuluvat datapisteet toisistaan. Jos data on lineaarisesti erotettava, niin paras erotteleva hypertaso on se, joka erottelee luokat toisistaan suurimmalla marginaalilla. Jos data ei ole lineaarisesti erotettava, niin väärällä puolella hypertasoa oleville pisteille käytetään virhefunktiota.

Tukivektorikone
Tukivektorikone

Naiivi Bayes-luokittelija

Naiivi Bayes-luokittelija (naive Bayes classifier) on yksinkertainen luokittelija, joka käsittelee alkioiden ominaisuuksia toisistaan riippumattomina. Luokittelu tehdään todennäköisyyksien avulla ja siinä käytetään ehdolliseen todennäköisyyteen liittyvää Bayesin kaavaa. Se on helppo toteuttaa ja hyvä menetelmä pienehkölle datalle, jossa on useita parametreja.

Klassinen esimerkki naiivista Bayes-luokittelijasta on roskapostisuodatin, joka tutkii sähköposteissa esiintyviä sanoja. Suodattaminen opettamisen jälkeen luokittelija kertoo, millä todennäköisyydellä tietyt sanat sisältävä viesti on roskaa.

Naiivi Bayes-luokittelija. Kuvissa nähdään millaiset päätösrajat luokittelija tekee erilaisilla lähtödatoilla. Saatu luokittelutarkkuus ilmoitetaan oikeassa alakulmassa.
Naiivi Bayes-luokittelija. Kuvissa nähdään millaiset päätösrajat luokittelija tekee erilaisilla lähtödatoilla. Saatu luokittelutarkkuus ilmoitetaan oikeassa alakulmassa.

Diskriminanttianalyysi

Diskriminattianalyysi (discriminant analysis) luokittelee dataa etsimällä sellaisia ominaisuuksien lineaarikombinaatioita, jotka joko karakterisoivat tai erottavat eri luokkiin kuuluvia datapisteitä. Diskriminantianalyysissä oletetaan, että eri luokat noudattavat normaalijakaumaa. Opetettaessa etsitään normaalijakauman parametreja eri luokille ja niiden avulla etsitään luokkia erottavat lineaariset tai kvadraattiset funktiot.

Päätöspuu

Päätöspuu (decision tree) on helposti toteutettava ja vähän muistia käyttävä luokittelualgoritmi. Luokittelu tehdään valitsemalla luokiteltavan data-alkion ominaisuuksien perusteella binääripuun solmuissa vasen tai oikea haara. Datapiste viedään ensin juurisolmuun, josta se lopulta päätyy lehteen, joka kertoo luokan.

Päätöspuu
Päätöspuu

Neuroverkko

Neuroverkkoja (neural network) eli ihmisen aivojen toimintaa jäljitteleviä oppivia verkkoja käsitellään seuraavissa luvuissa tarkemmin.

Neuroverkko
Neuroverkko
#

4. Neuroverkkojen matemaattiset perusteet

(Heli Tuominen)

Tässä luvussa tutustutaan neuroverkkojen rakenteeseen, toimintaan ja matemaattisiin perusteisiin. Modernien tekoälysovellusten taustalla on monenlaisia neuroverkkoja, esimerkiksi kuvantunnistukseen hyvin soveltuvia konvoluutioneuroverkkoja. Yksinkertaisuuden vuoksi tässä luvussa käsitellään vain eteenpäinsyöttäviä “tavallisia” neuroverkkoja.

4.1 Keinotekoiset neuroverkot

Keinotekoinen neuroverkko (Artificial neural network) jäljittelee ihmisen aivoja. Neuroverkko koostuu syöte- ja ulostulokerroksesta (input layer, output layer) ja niiden välissä olevista piilokerroksista (hidden layer). Kerrokset puolestaan rakentuvat neuroneista (neuron), joihin liittyy verkon opetuksessa muutettavia parametreja.

Neuroverkko koostuu syötekerroksesta, ulostulokerroksesta ja niiden välissä olevista piilokerroksista.
Neuroverkko koostuu syötekerroksesta, ulostulokerroksesta ja niiden välissä olevista piilokerroksista.

Data annetaan neuroverkon käsiteltäväksi syötekerroksessa. Syötekerroksen neuroneiden määrä riippuu esimerkiksi siitä, montaako ominaisuutta syötteestä tutkitaan. Piilokerroksien ja ulostulokerroksen kaikissa neuronissa lasketaan syötekerroksesta tai piilokerroksesta tulleiden syötteiden painotettu summa ja siihen lisätään neuronin vakiotermi. Ennen neuronin tuloksen lähettämistä seuraavalle neuronille summa viedään aktivointifunktioon, joka muuttaa lineaarisen (affiinin eli ensimmäisen asteen polynomin) syötteen epälineaariseksi.

Usean piilokerroksen neuroverkkoja sanotaan syviksi neuroverkoiksi (deep neural network).

Syvässä neuroverkossa on useita (jopa tuhansia) piilokerroksia.
Syvässä neuroverkossa on useita (jopa tuhansia) piilokerroksia.

Neuroverkon toimintaan liittyviä kaavoja tarkastellaan ensin esimerkin avulla ja sitten yleisemmin luvussa.

Esimerkki

Verkossa on yksi piilokerros, jossa on neljä neuronia. Syöte on vektori . Ulostulokerroksessa on yksi neuroni, jolta saadaan syötettä vastaava tulos .

Yhden piilokerroksen neuroverkko.
Yhden piilokerroksen neuroverkko.

Syötevektorin komponentit kerrotaan piilokerroksen neuroneiden painoilla , tulot lasketaan yhteen ja summaan lisätään piilokerroksen neuronin vakiotermi : Nämä summat viedään piilokerroksen aktivointifunktiolle, jolloin piilokerroksen neuronien antamat syötteet ulostulokerrokselle ovat Verkon antama tulos saadaan käyttämällä piilokerroksen ja ulostulokerroksen välisiä painoja ja aktivointifunktiota:

{}
#

4.1.1 Neuroverkkoihin liittyviä käsitteitä ja merkintöjä

Neuroni

Neuroverkon kerrokset koostuvat neuroneista (neuron). Jokaiseen piilokerrosten ja ulostulokerroksen neuroniin liittyy kahdenlaisia parametreja, neuroneiden välillä olevat painot (weight) ja neuronikohtainen kynnysarvon/vakiotermi (bias).

Parametreistä käytetään seuraavia merkintöjä. Kerrosindeksiä merkitään kirjaimella . Indeksi viittaa syötekerrokseen ja indeksi ulostulokerrokseen.

  • kerroksen neuronien lukumäärä,
  • syötteen komponentit ( kappaletta),
  • kerroksen neuronin ja kerroksen neuronin välillä oleva paino,
  • kerroksen neuronin vakiotermi,
  • kerroksen neuronia vastaava painotettu summa
  • kerroksen neuronin tulos eli syöte seuraavaan kerrokseen missä on aktivointifunktio (joka voi vaihdella kerroksesta toiseen).

Huomaa, että kaikilla .

Kerroksen  toiseen neuroniin liittyviä kaavoja.
Kerroksen toiseen neuroniin liittyviä kaavoja.

Kaavat vektorimuodossa

Merkintöjen yksinkertaistamiseksi neuroverkon kaavat kirjoitetaan monesti vektori- ja matriisimuodossa.

Kerroksen kynnysarvoja/vakiotermejä vastaa vektori kerroksen neuronien painotettuja summia vektori ja kerroksen neuronien tuloksia vektori Kerroksen painoja vastaa -matriisi Painotettujen summien ja neuronien tuloksien vektorit saadaan esitettyä lyhyesti muodossa

Huomaa, että jos edellä vektorit , ja määriteltäisiin pystyvektoreina, niin olisi Joissain lähteissä painojen neuroni-indeksit ja ovat päinvastaisessa järjestyksessä. Tällöin vastaava matriisi on -matriisi ja missä on vektorin transpoosi.

Matriisien ja vektoreiden ominaisuuksia kerrataan liitteessä Appendix A.

Neuroni ja neuroverkko funktioina

Neuroverkkoa voi ajatella funktiona ; syöte on -ulotteinen vektori , piilokerrokset hoitavat laskutehtävän ja funktion arvo saadaan ulostulokerroksesta. Verkon käyttötarkoitus määrää, miten funktion arvo tulkitaan.

Piilokerroksen neuronit voidaan tulkita funktioiksi , , missä on yleensä edellisen kerroksen painotettu summa lisättynä vakiotermillä eli ja on kerroksen aktivointifunktio. Ulostulokerroksen funktioille arvojoukko on .

4.1.2 Harjoitus

Tarkastellaan neuroverkkoa, jonka syöte on , jossa on yksi neljän neuronin piilokerros, jonka ulostulokerroksessa on kaksi neuronia ja jonka aktivointifunktio sekä piilo- että ulostulokerroksessa on . (Kuvassa vain osa painoista merkitty.)

Yhden piilokerroksen neuroverkko.
Yhden piilokerroksen neuroverkko.

Kirjoita verkkoon liittyvät neuronien painotetut summat ja neuronien tulokset vektoreiden ja painomatriisien avulla.

4.1.3 Perseptroni

Perseptroni (perceptron) on syötekerroksen ja yhden neuronin muodostama minimaalinen neuroverkko, jonka syöte on ja tulos on .

Perseptroni on yksinkertaisin neuroverkko.
Perseptroni on yksinkertaisin neuroverkko.

Perseptonia, jonka painojen muodostama vektori on , vakiotermi on ja aktivointifunktio on yksikköporrasfunktio (Heavisiden funktio) , vastaa funktio , missä on vektoreiden ja sisätulo.

Kysymykseen, millaiset funktiot voidaan esittää perseptronilla, on yksinkertainen vastaus nollan ja ykkösen alkukuvien lineaarisen erotettavuuden avulla.

Joukot ja ovat lineaarisesti erotettavat (linearly separable), jos on vakiot ja , joille ja

Tasossa tämä tarkoittaa sitä, että joukkoja ja vastaavat pisteet voidaan erottaa suoralla ja :ssa sitä, että pistejoukot voidaan erottaa tasolla.

Lause

Funktio voidaan esittää perseptronilla jos ja vain jos alkukuvat ja ovat lineaarisesti erotettavat.

{}

Esimerkki

Ensimmäisen kuvan pistejoukko ei ole lineaarisesti erotettav