Miten kouluttaa tekoäly ymmärtämään luonnollista kieltä?

Me Onervalla kehitämme Onerva Bottia eli keskustelevaa tekoälyä vanhushoivaan. Botin on tietysti ymmärrettävä mitä hänelle puhutaan, jotta saadaan aikaan vastavuoroista keskustelua. Esimerkiksi aamuorientaatio päivään voisi alkaa seuraavasti:

  • – Huomenta, tässä Onerva Botti. Kuinkas tänään voidaan?
  • – Huomenta huomenta. Eipä tässä ihmeempiä. Vähän jalkaa kolottaa, mutta muuten menee oikein mukavasti.
  • – Kiva kuulla, että menee hyvin. Mutta jalkaa siis kolottaa.  Tarvitseeko pyytää hoitajaa avuksi?
  • – Ei tarvitse. Kyllä tässä pärjäillään.
  • – No, hyvä. Oletkos jo aamupalan ehtinyt syömään?

Esimerkissä Onerva Botti ymmärsi ensimmäisestä vastauksesta kaksi asiaa: 1) vanhuksella on kaikki hyvin, paitsi 2) jalkaa kolottaa. Toisessa vastauksesta se ymmärsi, ettei hoitajaa tarvitse kutsua, joten se voi jatkaa orientaation seuraavaan vaiheeseen.

Kuinka tämä on mahdollista? Keskustellaan tästä tässä blogissa yleisellä tasolla ja mennään seuraavassa kovaan tieteeseen ja koodaukseen.

Aluksi botti ei tietenkään ymmärrä mitään. Meidän täytyy opettaa tekoälyä esimerkkien avulla. Käytännössä meidän pitää kerätä valtava määrä esimerkkilauseita, joille ihminen on antanut merkityksen. Yllä olevassa tapauksessa tekoälylle annettaisiin esimerkiksi ensimmäinen kysymys ja vastaus siihen sekä ihmisen päättelemät merkitykset eli ”vointi = hyvä” ja ”kipua = kyllä, missä = jalka”. Toisen kysymyksen osalta merkitys olisi ”avuntarve = ei”. Tyypillisessä tapauksessa esimerkkejä tarvitaan tuhansia tai kymmeniä tuhansia – riippuen siitä kuinka monimutkaista merkityksen päättely on.

Pelkät esimerkit eivät tietenkään riitä vaan oppimiseen tarvitaan matemaattisia menetelmiä, joita kutsutaan laajasti koneoppimiseksi. Yksi koneoppimisratkaisu on neuroverkko, joka pyrkii matkimaan aivojen/hermoston toimintaa.

Puhetta ymmärtäessään ihminen kuulee korvallaan puheesta erilaisia yhdistelmiä eri äänentaajuuksista. Korvan eri kohdissa hermosolut ovat herkkiä eri taajuuksille ja ne aktivoituvat taajuusyhdistelmien mukaan. Muodostuu signaali, joka lähtee etenemään hermosolujen muodostamassa verkostossa eteenpäin. Jokainen matkalla oleva hermosolu käsittelee signaalia jalostaen sitä korkeamman tason tiedoksi.

Korvan kuulemat taajuusyhdistelmät muodostavat äänteitä. Kun peräkkäiset äänteet yhdistyvät hermosolujen käsitellessä niitä, muodostuu niistä sanoja. Sanoja ihminen vertaa hermostoverkostoonsa tallentuneisiin eli muistissaan oleviin sanoihin sekä niiden merkityksiin. Lopulta sanat ja niiden merkitykset yhdistyvät lauseiksi ja lauseiden merkityksiksi. Nyt puheen aiheuttamat ilman värähtely ovat siis muuttuneet aivoissamme lauseiden merkityksiksi.

Joskus käy niin, ettemme tiedä jotain sanaa tai emme ymmärrä lauseen merkitystä. Näin käy usein lapsille tai vaikkapa uutta kieltä opetellessa. Kun joku kertoo meille oikean merkityksen, hermostomme pyrkii korjaamaan virheen ja opimme uutta. Usein tarvitaan monta toistoa ennen kuin opimme uuden asian. Näin on myös tekoälyn kanssa.

Tarvitaan miljoonia toistoja, jotta tekoäly oppi lauseista merkityksiä.

Aluksi botin neuroverkko ei siis ymmärrä mitään vaan se arvaa täysin satunnaisesti. Todennäköisesti arvaus on väärin, joten kerromme botille oikean vastauksen. Koulutusalgoritmi lähettää korjaussignaalin etenemään neuroverkossa ”taaksepäin” eli merkityksestä kohti äänentaajuuksia. Korjaussignaalin edetessä jokainen keinotekoinen hermosolu eli ”neuroni” korjaa omaa käyttäytymistään ja välittää korjauksen eteenpäin. Näin koko neuroverkon käyttäytyminen muuttuu hieman oikeaan suuntaan.

Kun ”yritys-erehdys-korjausta” toistetaan tuhansia tai miljoonia kertoja, neuroverkko alkaa oppia muistamaan tiettyjä rakenteita ja reagoimaan niihin tietyllä tavalla. Eri neuronit oppivat tunnistamaan erilaisia rakenteita signaalista. Jotkin neuronit oppivat tunnistamaan ”y” äänteen äänentaajuuksista. Ylemmän tason neuronit oppivat että äänteet ”h” ja ”y”, muodostavat tavun ”hy”. Ja seuraavat oppivat tunnistamaan sana ”hyvä”. Tätä vaihetta kutsutaan puheesta tekstiksi (speech-to-text).

Seuraavaksi neuronit oppivat yhdistelemään sanoja merkityksiksi. Esimerkiksi jotkin neuronit oppivat että sanat ”hyvä” ja ”päivä” tarkoittavat jotain positiivistä. Toiset neuronit oppivat että ”ei” ja ”hyvä” tarkoittavat huonoa. Kun lähestytään neuroneita, jotka ymmärtävät lauseiden merkitystä, neuronit oppivat esimerkiksi, että ”oli hyvä päivä” on positiivinen asia, mutta ”ei ollut hyvä päivä” on negatiivinen.

Yllä kuvattu tapahtumasarja on tietysti yksinkertaistus, mutta toimintaperiaate on aito. Lukuisten ”yritys-erehdys-korjausten” kautta neuroverkko oppii hiljalleen muistamaan puheen rakenteita eri tasoilla. Lopputuloksena on puheen merkityksen ymmärtävä tekoäly.

Miksi emme vain käytä sääntöjä?

”Oli hyvä päivä” on hyvä asia ja ”ei ollut hyvä päivä” on huono asia. Yksinkertaista, eikö?

Näinkin voi toki tehdä ja alkuun pääsee hyvin tällä – varsinkin jos vastaukset ovat yksinkertaisia ”ei” , ”joo”, ”ehkä”, ”yksi”, ”kaksi”, ”aa”, ”bee”…

Keskusteleva tekoäly tarvitsee kuitenkin paljon joustoa siihen kuinka asiat ilmaistaan. Mietipä vaikka kuinka monella tapaa voit vastata kysymykseen: ”mitä kuuluu?”. Tapoja on varmasti miljoonia. Neuroverkkojen etuna on että ne pystyvät ymmärtämään myös sellaisia lauseita, joita ne eivät ole koskaan nähneet, mutta niissä on samankaltaisuuksia lauseisiin, joilla se koulutettiin.

Neuroverkot oppivat siis yleistyksiä. Ne oppivat esimerkkien avulla kielen säännöt ilman että sääntöjä varsinaisesti kerrotaan niille.

Lisäksi esimerkkien avulla kouluttamisessa on etuna se, ettei kielen sääntöjä tarvitse kirjoittaa auki koodiksi. Tällöin kuka tahansa voi helposti kouluttaa tekoälyä. Hänen täytyy vain osata kertoa, että ”mitäpä tässä, ei ihmeitä” tarkoittaa että kaikki on hyvin (”vointi = hyvä”).

Neuroverkon kouluttaminen siis onnistuu keneltä tahansa, joka osaa tulkita lauseet merkityksiksi.

Aivan kuka tahansa ei kuitenkaan voi aloittaa neuroverkon kouluttamista, koska on lukuisia verkon rakenteeseen ja koulutusalgoritmeihin liittyviä asioita, joka pitää osata valita, testata ja tuunata. Tähän tarvitset asiantuntijaa, mutta tämän jälkeen koulutus on suoraviivaista lauseiden luokittelua.

Mietipä mitä kaikkea tekoälyllä, joka ymmärtää lauseiden tarkoituksia voisi tehdäkään? Tai entä keskustelevalla tekoälyllä? Maailmalla kieltä ymmärtävää tekoälyä on käytetty runsaasti eri tarkoituksissa. Ehkä näkyvimpänä näistä ovat Googlen, Applen ja Amazonin virtuaaliavustajat, mutta esimerkiksi uutisia lukevaa tekoälyä on käytetty ennustamaan pörssikursseja. Me taas kehitämme Onerva Bottia auttamaan vanhuksia ja hoivapalveluntarjoajia.

Mahdollisuudet ovat valtavat ja nyt on oikea hetki tarttua niihin, koska kaikki työkalut ovat viimein saatavilla. Jos kiinnostuit luonnollista kieltä ymmärtävän tekoälyn mahdollisuuksista, ota meihin yhteyttä. Katsotaan voimmeko tehdä jotain yhdessä.

 

Lue myös tämän blogisarjan muut osat: Osa 1, Osa 2