Haluaisimme hyödyntää tekoälyä ja koneoppimista sovelluksissamme, mutta kukaan meillä ei ymmärrä neuroverkoista, TensorFlowsta, Spark-klustereista tai korkeammasta Σ – matematiikasta. Hyviä uutisia: Koneoppimista voi hyödyntää suoraan valmiiden “purkitettujen” AI-palveluiden avulla, tai käyttämällä valmiita, hyväksi havaittuja algoritmeja liiketoiminnan vakio-ongelmien ratkaisemiseen. Tämän blogin tarkoitus on saada ajatusmalli kohdalleen heti alusta alkaen, ja samalla – estää keksimästä pyörää uudelleen.
Innostuin tekoälystä ensimmäisen kerran jo pari vuosikymmentä sitten. Kävelin Akateemiseen kirjakauppaan, ja otin hyllystä “Neural Net Fundamentals” yliopiston kurssikirjan. Hetken selailun jälkeen totesin, että tekoäly ei selvästikään ollut minun juttu. Lähes seitsemänsatasivuinen kirja oli täynnä matemaattisia kaavoja, joiden avulla neuroverkkojen toimintaa yritettiin opettaa. Jätin aiheen sikseen yli vuosikymmeneksi.
AI:n hyödyntäjät ja rakentajat
Tekoälyyn liittyvä keskustelu pyörii usein teknisten yksityiskohtien ympärillä. Miten neuroverkot rakentuu ja toimii? Kuinka syvä on syvä neuroverkko? Mitä painokertoimia pitäisi käyttää? Miksi minun TensorFlow ei toimi? Pitääkö olla GPU prosessori? Tämä teknopulina (eng. techobabble) on merkityksellinen vain niille viidelle prosentille, jotka joutuvat rakentamaan algoritminsa tyhjästä. Loput 95% ratkaisevat ongelman hyödyntämällä jo olemassa olevia vakioratkaisuja vakio-ongelmiin.
Tekoälyn avulla ongelmia ratkovia työläisiä on kahta laatua:
- Algoritmien rakentajat luovat uusia tai parannettuja algoritmejä ongelmiin, joihin ei ennestään ole lainkaan ratkaisua, tai ratkaisu ei ole käyttökelpoinen. Nämä tapaukset kattavat enintään 5% tapauksista, mutta hallitsevat 95% julkisesta keskustelusta.
- Algoritmien hyödyntäjät käyttävät suoraan hyllystä löytyviä valmiita malleja, algoritmeja tai AI-palveluita liiketoiminnan vakio-ongelmien ratkaisemiseen. 95% koneoppimisen tarpeista osuu tähän kategoriaan. Myös sinun ongelmasi.
Valmiiden palveluiden, mallien ja algoritmien käyttö on suhteellisen helppoa. Kysymys on oikean työkalun valinnasta. Jos tarvitset reiän seinään, valitset porakoneen, et kynsiviilaa. Jos haluat kahvia, et keitä sitä pesukoneella. Työkalupakkisi on täynnä työkaluja, joista kukin soveltuu tietyn vakio-ongelman ratkaisuun. Sinun ei tarvitse tietää mitä kahvinkeittimen sisällä tapahtuu keittääksesti kahvia. Lisäät veden, kahvinpurut ja painat nappia: Keitin hoitaa homman puolestasi. Koneoppimisen algoritmit toimivat vastaavalla tavalla: Sinun täytyy vain tietää mihin ne soveltuvat ja “painaa nappia” – algoritmi hoitaa homman puolestasi. Jos haluat erottaa kissavideot koiravideoista, käytät kahden luokan luokittelijaa. Jos haluat ennustaa talosi arvon, valitset regressio-algoritmin työkalupakistasi.
Sama kääntäen: Jos et tunne työkalupakin sisältöä, päädyt helposti rakentamaan itse reikiä seinään tekevää aparaattia. Tässä tapauksessa sinun on tiedettävä miten neuroverkot, naive bayesian, tai päätöspuu toimii. TensorFlown ja syvän verkon säätämisen ohella voit tutustua vaikkapa markovin ketjuihin. Algoritmien rakentaminen on vaikeaa, sinun tehtäväsi on ainoastaan hyödyntää olemassa olevia ratkaisuita. Kehotan vakavissani jättämään algoritmien kehityksen jättiläisille kuten Microsoft tai Google, tai sitten luolissaan ahkeroiville kiinalaisille valkotakkitohtoreille. Syvä kumarrus näille tekoälyn puurtajille, jotka tekevät minun elämästäni paljon helpompaa.
Katsotaan hieman tarkemmin hyödyntäjiä.
Hyödyntäjät
Hyödyntäjät “seisovat jättiläisten harteilla”, eli rakentavat sovelluksensa muiden tekemän työn päälle. Hyödyntäjän tärkein taito on työkalupakin tuntemus, eli tietää tarjolla olevat AI-palvelut, sekä mihin vakio-ongelmaan mikäkin malli tai algoritmi toimii. Alla muutamia esimerkkejä koneoppimisen algoritmien soveltuvuudesta:
Luokittele asiat kahteen eri luokkaan (eli kumpaan luokkaan tämä asia kuuluu)
- Onko tämä kuva kissasta vai ei? Voit korvata sanan “kissa” millä tahansa muulla sanalla, kuten “rikkinäinen voimavirtakaapeli”, “aukko asfaltissa” tai vaikkapa “kulunut paperikoneen leikkurin terä”.
- Onko tämä sähköposti roskapostia vai ei?
- Onko tämä ehjä paketti vai ei?
Luokittele asiat useampaan luokkaan ( = kategorisointi)
- Liittykö tämä tukitiketti unohtuneeseen salasanaan, kadonneeseen puhelimeen, vanhentuneeseen sertifikaattiin, vai johonkin muuhun?
- Onko tämän uutisen aihe urheilu, politiikka, viihde vai business?
- Pitäisikö tämä kuitti tiliöidä taksikuluksi parkkimaksuksi, hotelliksi, viihteeksi vai joksikin muuksi?
- Käyttäjä sanoi chatbotille “Tarvisin taksin.” Haluaako käyttäjä tilata taksin, peruuttaa taksitilauksen, kysyä missä taksi viipyyy?
Ennusta numeroarvoja regression avulla
- Myin 10 jäätelöä kun lämpötila oli +10°C, 15 jäätelöä kun ulkona oli +15°C, ja 20 jäätelöä kun asteita oli +20°C. Kuinka monta jäätelöä myyn huomenna, jos ennuste +25°C pitää paikkansa?
- Olen käytettyjen autojen kauppias, ja minun pitäisi myydä Audi A6. Autolla on ajettu 250 000 km, ja se on vuosimallia 2007, automaattivaihteilla. Firman myyntihistoriaan perustuen, mikä hinta autolle pitäisi laittaa, jotta se menee kaupaksi?
Etsi rakenteita klusteroinnilla
- Verkkolevylleni on kertynyt liikaa dokumentteja. Voisikohan koneoppiminen löytää niistä jonkinlaisia luokkia, joiden perusteella ne voisi jaotella automaattisesti?
- Tiedän mitä asiakkaani ovat ostaneet kuluneen vuoden aikana. Mitkähän asiakassegmenttini ovat?
Poikkeuksien havaitseminen
- Tämä henkilö ei koskaan ole käyttänyt luottokorttiaan Venäjällä. Nyt kortilla on tehty siellä useampi suuri ostos päivän aikana.
- Tämä henkilö ei ole koskaan ostanut vaippoja ja vauvaruokaa. Tällä viikolla näitä ostoksia on jo 8 kpl.
- Auton moottori käy historiatietojen mukaan kuumempana kuin mitä ulkolämpötila, moottorin kierrokset ja/tai öljynpaine antaisi olettaa.
Hyödyntäjä valitsee työkalupakista algoritmin ongelman ratkaisemiseksi. Loppu on mekaanista työtä. Valmiiden AI-palveluiden käyttö vaatii yleensä opetusaineiston lataamisen palveluun, jonka jälkeen palvelu kertoo REST-rajapintakutsulla onko kuvassa kissa vai ei. Koneoppimisen valmiiden algoritmien hyödyntäminen tapahtuu yleensä seuraavasti:
- Hanki hyvälaatuista koulutusdataa
- Jaa data kahtia opetus- ja testidataksi.
- Valitse algoritmi
- Kouluta malli opetusdatalla
- Arvioi lopputulema käyttämällä testidataa.
- Jos mallin antamat tulokset olivat riittävän hyviä, julkaise malli muiden sovellusten käytettäväksi.
- Jos ei, muuta algoritmin parametreja, tai kokeile toista ratkaisuun soveltuvaa algoritmia.
Aloittelevat hyödyntäjät (kuten minä) käyttävät apunaan tämänkaltaisia “cheat sheetejä”, joiden avulla pystyy tekemään heti oikean suuntaisia valintoja. Lukiotasoinen tilastomatematiikka kannattaa olla hallussa (muistatko: keskiarvo, mediaani, hajonta ja korrelaatio), jotta pystyt arvioimaan datan laatua sekä sen mahdollisesti sisältämiä korrelaatioita.
Hyvä hyödyntäjä tuntee myös työkalujensa rajoitteet; Miksi, milloin ja miten algoritmi ennustaa väärin. Ensimmäiset testiajot antavat lähes poikkeuksetta tuloksena roskaa – ennusteen tarkkuus on kolikonheiton luokkaa. Ymmärrys algoritmin toiminnasta ja sen virittämisestä auttaa. Joko se, tai paremman/lisädatan hankinta mallin koulutukseen.
Seuraavaksi: Mitä tehdä jos valmista mallia ei ole?
Algoritmien rakentajat
AI maagikoita tarvitaan, kun tehtävä on rakentaa “Japania puhuva lentävä moottorisaha” (Kiitos Petri erinomaisesta analogiasta!). Lentävä moottorisaha edustaa mitä tahansa mitä ei ole aikaisemmin rakennettu, tai kunnollista ratkaisua ongelmaan ei ole vielä olemassa. Maagikoiden on osattava TensorFlowt ja CNTK:t. Pilvestä saatavat Spark klusterit on oltava tuttua. Myönnän – tekoälyyn liittyvä teknologia kiehtoo minuakin, vaikka se on lähes merkityksetöntä meille hyödyntäjille.
Murtaakseni samalla muutaman myytin algoritmien suunnittelusta, homma tapahtuu suurin piirtein seuraavasti:
- Maagikot tekevät ensimmäisen valistuneen arvauksen (eli hypoteesin): Tämän kaltainen algoritmi (tai joukko algoritmeja) saattaisi ratkaista käsillä olevan ongelman.
- Oletus testataan alustavasti. Jos tulos on heti täysi katastrofi, palataan vaiheeseen yksi. Muutoin jatketaan eteenpäin.
- Kun jokin ratkaisun kaltainen menetelmä näyttäisi löytyneen, käytä massiivista esim. pilven tarjoamaa konevoimaa kouluttaaksesi tuhansia (tai miljoonia) hieman toisistaan poikkeavia malleja mahdollisimman suurella opetusmateriaalilla. Arvioi kaikkien eri variaatioiden antamat tulokset. Periaatteessa malleja “kilpailutetaan” toisiaan vasten – mikä tuottaa parhaimman tuloksen.
- Kun joko aika tai budjetti on käytetty, valitse tämänhetkinen paras malli.
Yksinkertaistin asioita hieman, mutta kyse on siis valistuneesta arvauksesta ja näiden arvausten testaamisesta massiivisella konevoimalla.
Eli kertauksena:
Unohda heti “Neural Net Fundamentals” – kirjat. Älä missään nimessä aloita AI-polkuasi lukemalla TensorFlow-manuaalia. Et tarvitse näitä. Usko minua: Koneoppimiseen liittyvä ongelmasi on ratkottu moneen kertaan aikaisemminkin. Tutustu näihin monissa taisteluissa testattuihin menetelmiin ja algoritmeihin, ja rakenna oma tarinasi näiden päälle. Käytä valmispalveluita tai cheat sheetejä valitaksesi algoritmin. Kouluta, testaa ja toista. Muutaman viikon yrityksen ja erehdyksen jälkeen ensimmäinen koneoppimista hyödyntävä sovelluksesi on valmis!
Pidä hauskaa!
Leave A Comment