Koneoppiminen

Koneoppiminen (engl. Machine Learning = ML) on tekoälyyn kuuluva tieteenhaara, joka keskittyy algoritmien ja mallien kehittämiseen, jotta tietokoneet voivat oppia suorittamaan tehtäviä ilman, että niitä ohjelmoidaan kuten perinteisessä sovelluskehityksessä. Tämä tarkoittaa sitä, että koneoppimisalgoritmit parantavat omaa ja kehitettävän tekoälyn suorituskykyä ja päätöksentekoa sitä mukaa, kun ne saavat lisää dataa. Tämä on merkittävä ero perinteiseen ohjelmistokehitykseen, jossa koodaajaa tarvitaan kaikissa muutoksissa.

Koneoppimisessa on useita eri menetelmiä ja lähestymistapoja, joita kutakin käsitellään vielä erikseen omissa luvuissaan:

1. Ohjattu oppiminen (engl. Supervised Learning): Tässä lähestymistavassa algoritmi oppii historiallisen datan perusteella, joka sisältää sekä syötedatan että halutut vastaukset. Algoritmin tavoitteena on oppia yhdistämään syötteet vastauksiin ja ennustamaan uusien, näkemättömien tietojen vastauksia.

2. Ohjaamaton oppiminen (engl. Unsupervised Learning): Tässä tapauksessa algoritmi saa syötedataa, joka ei sisällä haluttuja vastauksia. Ohjaamattoman oppimisen tarkoituksena on löytää rakenteita ja yhteyksiä datasta itsestään, esimerkiksi ryhmittelemällä samankaltaisia esimerkkejä tai löytämällä poikkeavuuksia.

3. Osittain ohjattu oppiminen (engl. Semi-supervised Learning): Tämä on yhdistelmä ohjatun ja ohjaamattoman oppimisen piirteitä. Osittain ohjattua oppimista käytetään silloin, kun on saatavilla suuri määrä syötedataa, mutta vain pieni osa siitä on merkitty halutuilla vastauksilla.

4. Vahvistusoppiminen (engl. Reinforcement Learning): Tässä lähestymistavassa algoritmi, jota kutsutaan usein agentiksi, oppii tekemään päätöksiä toimintaympäristössään saamalla palkintoja tai rangaistuksia onnistumistensa perusteella. Tavoitteena on maksimoida palkinnot pitkällä aikavälillä.

Alla oleva kuva havainnollistaa perinteisen ohjelmoinnin ja koneoppimisen välisiä eroja. Perinteisessä ohjelmoinnissa ohjelmoija koodaa saamansa määritelmän mukaisen ohjelmiston, jolla käsitellään syöttödataa halutun lopputuloksen saavuttamiseksi. Koneoppimisessa valitulle koneoppimisalgoritmille syötetään opetus- ja testidataa sekä tavoiteltava tulos. Huomionarvoista on, että nämä kaksi toimintamallia pääsääntöisesti täydentävät toisiaan.

Kuva. Perinteisen ja koneopetetun tekoälyn välisten kehitys- ja sovellusprosessien väliset erot.

Koneoppimisen käyttöönotto on monivaiheinen prosessi, joka sisältää useita vaiheita. Seuraavassa on yleiskuvaus siitä, miten koneoppiminen etenee raakadatasta tekoälysovellukseen:

1. Ongelman määrittely: Ennen kuin koneoppimista voidaan soveltaa, on tärkeää määritellä ongelma, jonka halutaan ratkaista. Tämä voi olla esimerkiksi kuvantunnistus, ennusteiden tekeminen tai asiakaskäyttäytymisen analysointi.

2. Datan keruu: Kun ongelma on määritelty, tarvitaan dataa, jota koneoppimisalgoritmit voivat käyttää. Datan keruu voi tulla eri lähteistä, kuten tietokannoista, antureista, kyselyistä tai avoimesta datasta.

3. Datan esikäsittely: Raakadata on usein epätäydellistä, sisältää virheitä tai puuttuvia arvoja. Datan esikäsittelyssä data puhdistetaan, normalisoidaan ja muokataan muotoon, joka sopii koneoppimisalgoritmeille.

4. Ominaisuuksien valinta: Ominaisuudet ovat datan piirteitä, jotka vaikuttavat ennustettavaan muuttujaan. Ominaisuuksien valinnalla pyritään löytämään ne datan piirteet, jotka ovat olennaisia ongelman ratkaisemiseksi.

5. Mallin valinta: On olemassa monia erilaisia koneoppimisalgoritmeja, ja valinta riippuu ongelmasta, jonka halutaan ratkaista. Esimerkiksi, jos tavoitteena on tehdä luokittelua, voidaan käyttää päätöspuita, tukivektorikoneita tai syviä hermoverkkoja.

6. Mallin koulutus: Tässä vaiheessa valittu algoritmi "oppii" käyttämällä käytettävissä olevaa dataa. Koulutuksen aikana algoritmi säätää sisäisiä parametrejaan, jotta se pystyy ennustamaan tai luokittelemaan esimerkkejä mahdollisimman hyvin.

7. Mallin validointi ja testaus: Kun malli on koulutettu, se on testattava käyttämällä erillistä testidataa, jota ei ole käytetty koulutuksessa. Tämä auttaa arvioimaan, miten hyvin malli toimii uusilla, aiemmin näkemättömillä tiedoilla.

8. Mallin säätö: Jos mallin suorituskyky ei ole tyydyttävä, sitä voidaan säätää muuttamalla sen hyperparametreja tai käyttämällä erilaista algoritmia.

9. Mallin käyttöönotto: Kun mallin suorituskyky on riittävä, se voidaan ottaa käyttöön tuotannossa. Tässä vaiheessa malli alkaa tehdä ennusteita tai päätöksiä aidossa ympäristössä.

10. Mallin ylläpito ja päivitys: Tekoälymallien suorituskyky saattaa muuttua ajan myötä, kun uutta dataa kertyy. Mallin suorituskykyä tulee seurata ja malli on päivitettävä tarvittaessa.

Koko prosessi on usein iteratiivinen. Sen avulla dataa käytetään sellaisen tekoälyn rakentamiseen, joka kykenee tekemään automaattisia päätöksiä tai ennusteita. On tärkeää huomata, että koneoppiminen on vain yksi osa-alue tekoälyssä, ja sen käyttö on yksi - tällä hetkellä merkittävin - tapa kehittää tekoälysovelluksia.