Deep learning Toni Helenius 1 Johdanto Koneoppiminen on viime vuosina tullut yhä lähemmäksi kuluttajaa. Erilaiset puheentunnistukseen, kielen kääntämiseen ja kuvantunnistukseen liittyvät sovellukset ovat käytännössä jo kaikkien käytettävissä (kuva 1). Tähän mullistukseen on vaikuttanut erityisesti neuroverkot ja syväoppimisen (deep learning) teknologia. Yhdessä tietokoneiden laskentakyvyn ja tiedon määrän kasvun kanssa se on mahdollistanut ennen valtavia työmääriä vaatineiden tehtävien suorittamisen itsenäisesti. Perinteisemmissä koneoppimisen tekniikoissa tietoa pyritään luokittelemaan ja ymmärtämään laatimalla piirteenirroittajia, joiden tehtävä on tunnistaa tietyn tyyppisiä tiedossa ilmeneviä ominaisuuksia tai rakenteita eli piirteitä. Piirteet voivat olla esimerkiksi jonkinlaisia ääniä nauhoitteissa tai muotoja kuvissa. Piirteenirroittajien (feature extractor) suunnittelu ja laatiminen vaatii kuitenkin huomattavia määriä työtä, joten viime aikoina ollaan keskitytty enemmän piirreoppimisen (feature learning) tekniikoihin. (Lecun et al., 2015; Lenz et al., 2015) Piirreoppimisessa, jota esimerkiksi neuroverkot edustaa, tiedon sisältämät piirteet pyritään oppimaan automaattisesti käyttämällä opetusmateriaalina valmiiksi prosessoituja tietolähteitä. Neuroverkko opetetaan tunnistamaan tarvittavat piirteet näyttämällä sille opetusesimerkkejä eli syötteiden ja syötettä vastaavien luokittelujen pareja. Opetusesimerkkejä voivat olla vaikkapa käsinkirjoitettujen kirjaimien kuvat ja niitä vastaavat ASCII-merkit. Näyttämällä tällaisia pareja suuri määrä neuroverkolle se vähitellen opetetaan tunnistamaan käsinkirjoitettujen kirjainten kaarien ja viivojen avulla oikeat merkit. Syväoppimisessa, useimmiten syvissä neuroverkoissa, edelleen jatketaan ja laajennetaan tavallisia neuroverkkoja ja pyritään hyödyntämään yhä paremmin niiden piirreoppimisen kykyjä. Siinä missä tavallisempi matala neuroverkko etsii suoraan raa'asta tiedosta piirteitä, syvissä neuroverkoissa piirteitä luokitellaan useammalla tasolla. Kun neuroverkko löytää alemmalla tasolla olevista piirteistä uudenlaisen rakenteen tai yhdistelmän, luodaan uusi korkeamman tason eli abstraktimpi piirre. Korkeamman tason piirteet auttavat esimerkiksi kuvan luokittelussa sietämällä paremmin objektien valaistuksen, suunnan ja sijainnin vaihtelua (Lecun et al., 2015). Syväoppimisella pyritään syötetiedon ulottuvuuksien ja laajuuden kasvaessa löytämään tiedosta ns. 'olennaiset' piirteet, joilla tieto saadaan ymmärrettyä. Esittelen neuroverkot ensin yleisemmältä tasolta ja sitten muutamia sovelluksia, joissa niitä ja syväoppimista käytetään.
Kuva 1: Applen Siri, henkilökohtainen älykäs avustaja ja tiedonhakija, tunnistaa käyttäjän puheen ja osaa vastata kysymyksiin ja suorittaa yksinkertaisia tehtäviä. 2 Neuroverkot Keinotekoiset neuroverkot (articial neural networks) ovat piirreoppimisen tekniikka, jolla pyritään tunnistamaan tiedosta piirteitä ja tekemään niiden avulla luokitteluja. Neuroverkot esitetään usein kerroksina (kuva 2), jolloin se koostuu syötekerroksesta, piilokerroksista ja tuloskerroksesta. Syötekerros koostuu tämänhetkisestä syötteestä, joka voi olla vaikkapa kuvan sisältämien pikselien harmaasävyt (kuva 3) tai värikuvien tapauksessa väri-intensiteetit. Syötekerros on liitetty painotettujen yhteyksien kautta piilokerrokselle ja piilokerros jälleen samalla tavalla tuloskerrokselle. Piilokerroksia voi olla myös useampia, jolloin ne on liitetty alemmalta piilokerrokselta ylemmälle. Painotetut yhteydet ovat kertoimia, joiden avulla neuroverkko pyrkii muuttamaan syötteestä piilokerrosten ja painotettujen yhteyksien läpi tuloksen tai approksimaation. Neuroverkkoa opettaessa suurella määrällä opetusesimerkkejä painokertoimia muutetaan hiljalleen siten, että approksimaatio parantuu eli neuroverkon tulokset lähestyvät opetusesimerkkien haluttuja tuloksia (Lecun et al., 2015). Samalla neuroverkko oppii yleistämään tiedosta piirteitä, joita se voi käyttää jatkossa myös tietoon jota ei ole aiemmin opetettu. Piilokerrosten tehtävän neuroverkossa voi nähdä olevan tiedon piirteiden tunnistaminen. Matalat neuroverkot (shallow neural networks) sisältävät yhden piilokerroksen, jolloin se oppii vain raa'asta tiedosta suoraan löydettäviä piirteitä, eikä syvien neuroverkkojen tapaan voi koota piirteistä abstraktimpia ominaisuuksia ylemmillä piilokerroksillaan. Matalat neuroverkkojen piilokerrokset pyritään siis yleisesti tekemään yhtä leveiksi kuin erilaisia piirteitä arvioidaan tiedossa olevan. Tiedon kasvaessa mahdollisten piirteiden lukumäärä kasvaa kuitenkin erittäin nopeasti, joten esimerkiksi kuvaa tai ääntä käsitellessä siirrytään usein käyttämään syväoppimista eli syviä neuroverkkoja.
Kuva 2: Neuroverkon neuronit esitettynä kerroksina. Kuva 3: Neuroverkolle annettavan kuvan muuttaminen syötteeksi. Syvissä neuroverkoissa (deep neural networks) käytetään useampaa piilokerrosta, jotta alimmainen piilokerros voi keskittyä yksinkertaisten, tai 'matalan tason', piirteiden tunnistamiseen ja ylemmät aiemmalta kerrokselta saatujen piirteiden abstrahointiin. Piilokerrokset ovat yleensä kapeampia kuin matalissa neuroverkossa, koska tunnistettavia piirteitä tarvitaan vähemmän piilokerroksittain. Näin ne toimivat usein tehokkaammin ja syvät neuroverkot ovatkin usein esimerkiksi kuvanluokitteluun käytettävien neuroverkkojen kulmakivi. (Lecun et al., 2015) Yksi tällainen neuroverkkotyyppi on konvoluutioverkot (convolutional neural networks). Konvoluutioverkot hyödyntävät syviä neuroverkkoja ja kuvatiedon monia ominaisuuksia: tiedon läheisiä yhteyksiä eli esimerkiksi kuvan eri kohtien pikseleiden keskinäisiä yhteyksiä, ja tiedossa olevien ominaisuuksien riippumattomuutta sijainnista eli esimerkiksi objektien mahdollisuutta olla monessa eri kohtaa kuvassa (Lecun et al., 2015). Konvoluutioverkot ovat syviä neuroverkkoja, jotka käyttävät monia erilaisia piilokerroksia ja painotettuja yhteyksiä saavuttaakseen tehokkaan luokittelukyvyn kuvia, ja myös
monia muita tietotyyppejä kuten äänisignaaleja, käsitellessä. 3 Syväoppiminen kaistantunnistuksessa Huval et al. (2015) tutkivat syväoppimisen käyttöä moottoritiellä. Toisin kuin haastavammat kaupunkitiet, moottoritiet ovat järjestäytymiseltään ennalta arvattavampia ja kaistat huolella merkittyjä. Itseohjaavien autojen sensoreina käytetään tutkia, kaikuluotaimia ja kameroita. Tutkiin ja kaikuluotaimiin liittyy erilaisia ongelmia; tutkat tuottavat usein vääriä havaintoja autoja tunnistaessa, ja kaikuluotain ei toimi suurilla nopeuksilla ja välimatkoilla. Tutkimusryhmä päätti siis rajoittaa tutkimuksen auton edessä olevan videokameran käyttöön moottoritieliikenteessä. Moottoritieliikenteen autonomisten ajoneuvojen tarvitsee tunnistaa kaista ja edessä liikkuvat ajoneuvot. Tutkijaryhmän tavoitteena oli tehdä järjestelmä, joka tunnistaa nämä kohteet videokamerasta saaduista kuvista vähintään 10 kertaa sekunnissa ja vähintään 100 metrin etäisyydeltä. Kohteita kuvista tunnistava neuroverkko vaatii paljon opetusmateriaalia, jota tutkijaryhmä keräsi ajamalla moottoritietä eri paikoissa ja säätiloissa kuvaten samalla videota. Videosta sen jälkeen irrotettiin ruudut, joista saatiin tulevien opetusesimerkkien syötteet. Amazon Mechanical Turk -palvelua (Amazon, 2016a) käytettiin syötteitä vastaavien tulosten keräämiseen, eli autojen ja kaistojen sijaintien selvittämiseen ruuduissa. Ruuduista ja niissä olevien kohteiden sijainneista koottiin neuroverkolle opetettavat opetusesimerkit. Neuroverkoksi valittiin konvoluutioverkko, joka opetusesimerkkien avulla oppii tunnistamaan kuvista autoja sisältävät suorakulman muotoiset alueet ja kaistojen reunat. Autojen etäisyydet saadaan samalla mitattua niiden sijainnilla kuvassa (kuva 4) ottamalla videokuvaa aina samasta kohdasta autossa. Kaistat neuroverkko oppi tunnistamaan, vaikka ne olisivatkin välillä osittain objektien takana, eli neuroverkko ei pelkästään tunnistanut kaistaviivojen valkoista maalia vaan osasi käyttää koko kuvaa kontekstina (kuva 5). Tutkijaryhmä huomaa, että autonomiseen liikkumiseen moottoritiellä on vielä työtä. Auton tunnistuksessa tuli järjestelmää testattaessa välillä ongelmia puiden tai ylikulkusiltojen varjojen kanssa, kun neuroverkko tunnisti ne autoiksi. Järjestelmä toimi kuitenkin muuten tehokkaasti käyttämällä tavallisen tietokoneen suoritustehoa, ja on lupaava alku syväoppimisen käytöstä moottoritieliikenteessä. 4 Syväoppiminen robotiikassa Lenz et al. (2015) tutkivat syvien neuroverkkojen käyttämistä robottikouran
Kuva 4: Autojen tunnistamista, kohteet muutetaan suorakulmiksi 'ruudukossa', josta on helppo laskea muun muassa kohteiden etäisyys. (Huval et al., 2015) Kuva 5: Kaistaviivojen tunnistamista, neuroverkko osaa arvioida kaistat vaikka kaistaviivat olisivat osittain peitossa. (Huval et al., 2015) toiminnassa. Robottikouran toteuttaminen vaatii konenäköä, liikkeen suunnittelua ja ohjausta. Käsinlaaditut piirteenirroittajat ovat ennen olleet käytössä monissa robotiikan ongelmissa, mutta Lenz et al. mukaan niiden toteutus on erittäin vaivalloista ja aikaavievää. Tutkijaryhmä toteaa, että syväoppiminen on tuonut uusia mahdollisuuksia kuvanluokitteluun ja muiden ongelmien ratkaisemiseen, mutta huomauttavat, että robottikouran toiminta vaatii myös objektin tunnistamista ja tarkempaa paikantamista (object detection). Robotin syötteiden eli kuvien lähteeksi valittiin RGB-D kamera. RGB- D kuvat sisältää pikselien väri-intensiteettien lisäksi myös syvyystietoa. Robottina käytettiin Rethink Roboticsin Baxteria (kuva 6) ja Willow Garagen PR2:ta. Nämä robotit ovat yleisemmin käytössä sekä teollisuudessa että tutkimuksessa. Tutkijaryhmä päätyi kaksivaiheiseen järjestelmään, jossa otteen etsimi-
Kuva 6: Baxter robotti. nen tapahtuu kahta syvää neuroverkkoa käyttämällä. Pienemmän neuroverkon tarkoituksena on tyhjentävästi etsiä esineestä mahdolliset otteet ja valita näistä parhaiksi arvioimansa otteet. Otteet sen jälkeen syötetään isommalle neuroverkolle, jonka tarkoitus on löytää tästä pienemmästä joukosta otteita parasta otetta edustava kohta ja suunta (kuva 7). Kun pienempi neuroverkko on ensin harventanut kohteiden lukumäärää, voi isompi neuroverkko käyttää enemmän aikaa eli tunnistettavia piirteitä ja prosessointiaikaa hyvän otteen selvittämiseen. Kuva 7: Pienempi neuroverkko etsii ensin kuvasta joukon mahdollisia otteita, joista parhaat syötetään isommalle neuroverkolle parhaan otteen löytämiseksi. (Lenz et al., 2015) Tutkijaryhmä huomasi, että kahden syvän neuroverkon käyttäminen eli tehtävien jakaminen kahteen vaiheeseen robottikouran toteuttamiseksi oli tehokkaampi ratkaisu kuin yhden syvän neuroverkon käyttäminen. Lisäksi heidän lähestymistapansa oli tehokkaampi kuin aikaisemmissa tutkimuksissa käytetyt käsin laadittuja piirteenirroittajia käyttävät kaksivaiheiset järjestelmät.
5 Luonnollinen kieli Luonnollisen kielen mallinnus neuroverkoilla on yksi alkuperäisistä 'syväoppimisen' alueista. Luonnollista kieltä eli merkkijonoja, sanojen jonoja tai äänien jonoja on käsitelty jo pidemmän aikaa useammalla piilokerroksella käyttämällä ns. takaisinkytkeytyviä neuroverkkoja (recurrent neural networks) Lecun et al. (2015). Koska luonnollista kieltä käsitellään aina jonomuodossa, ja jossa aikaisemmin annetut syötteet vaikuttavat myöhemmin annettuihin, takaisinkytkeytyvät neuroverkot käyttävät useampia piilokerroksia säilyttääkseen näiden aikaisempien annettujen syötteiden merkityksen. Esimerkiksi, jos lause on aloitettu sanoilla 'Taivas on' ja seuraava sana on 'sininen', neuroverkon tulee ymmärtää, että sana 'sininen' liittyy jotenkin sanaan 'taivas'. Luonnollisen kielen ymmärrystä on helpottanut edelleen sanojen vektorisoinnin kehittyminen. Vektorisoimalla syötetekstien sanoja ne saadaan sijoitettua lähemmäs sukulaissanoja (kuva 8). Esimerkiksi sanat 'Tiistai' ja 'Keskiviikko' sijoittuvat jollain lailla lähekkäin tällaiseen sanojen avaruudessa (Goth, 2016). Sanojen vektorisoinnin tekniikoita on muun muassa Glo- Ve (Pennington et al., 2014), joka voi käyttää esimerkiksi Wikipedian koko tietokantaa selvittämään kaikkien siellä esiintyvien sanojen sukulaisuussuhteet. Kun tekstisyötteet annetaan sanoittain kukin sana vektorisoituna, neuroverkko oppii helpommin yleistämään lauseita, käsityksiä tai ymmärrystä sukulaissuhteisiin (Goth, 2016). Kuva 8: Sanojen sijoittumista sukulaisuussuhteiden mukaan kahteen ulottuvuuteen. Todellisuudessa vektorisoidut sanat sijoitetaan hyvin moniulotteisempaan avaruuteen. (Lecun et al., 2015)
6 Pohdinta Netix järjesti kilpailuja suosittelujärjestelmänsä parantamiseksi (Netix, 2009). Suosittelujärjestelmä, joka päihitti Netixin oman järjestelmän tarkkuudessa, tuotti kehittäjälleen miljoonan dollarin palkinnon. Järjestelmän kouluttamista varten Netix tarjosi valmiita tietolähteitä. Verkkokauppajätti Amazon järjestää robottikourien kehitykseen tarkoitettua poimintahaaste -kilpailua (Amazon, 2016b). Kilpailussa on tarkoitus kehittää robotti, joka tunnistaa erilaisia esineitä ja osaa poimia niitä ja siirtää paikasta toiseen. Näin Amazon pyrkii kiihdyttämään varastojensa automatisointia. Tutkija- ja opiskelijaryhmille tarkoitetut kilpailut ovat usein aloilta, joissa ollaan aiemmin tukeuduttu perinteiseen koneoppimiseen. Hyödyntämällä automatisoidumpaan oppimiseen perustuvia syväoppimisen tekniikoita sovelluksia on kuitenkin paljon tehokkaampi toteuttaa entistä pienemmillä työryhmillä. Vaativatkin luonnollista kieltä mallintavat järjestelmät eivät ole enää vain suurten yritysten suursijoituksia tai pelkästään akateemisiin tarkoituksiin (Goth, 2016), ja sama siis pätee myös muihin piirreoppimista ja syväoppimista hyödyntäviin aloihin. Tekniikka kehittyy koko ajan yhä enemmän ja avoimesti niin suurten yrityksen kuin yksittäisten kehittäjienkin työn tuloksena. Suuria tietovarastoja avataan monien tahojen toimesta antaen uusia mahdollisuuden niiden käyttöön syväoppimista ja piirreoppimista käyttävissä järjestelmissä. Samalla tiedon määrä ja järjestelmien vaatimukset kuitenkin kasvavat. Esimerkiksi kuvia käsittelevät sovellukset saattavat analysoida miljoona pikseliä sisältäviä kuvia. Tällaiset neuroverkot sisältävät miljardeja painotettuja yhteyksiä, ja niiden operaatiot joudutaan prosessoimaan kutakin kuvaa käsitellessä (Edwards, 2015). Entistä suurempia tietomääriä oppivia ja käsitteleviä syväoppimisjärjestelmiä on pyritty toteuttamaan muun muassa käyttämällä FPGA-mikropiirejä. Järjestelmät yleensä suoritetaan näytönohjaimilla, mutta suuri määrä FPGAmikropiirejä voivat olla helpompi ottaa käyttöön palvelinkeskuksissa kuin vastaavan suoritustehon tarjoava määrä näytönohjaimia (Edwards, 2015). Samalla tutkijat yrittävät kehittää uusia piirreoppimisen tekniikoita, jotka tarvitsisivat pienempiä tietomääriä oppiakseen.
Viitteet Amazon (2016a). Amazon mechanical turk. https://www.mturk.com. Accessed: 2016-04-07. Amazon (2016b). Amazon picking challenge. http:// amazonpickingchallenge.org/. Accessed: 2016-04-07. Edwards, C. (2015). Growing pains for deep learning. Commun. ACM, 58(7):1416. Goth, G. (2016). Deep or shallow, nlp is breaking out. Commun. ACM, 59(3):1316. Huval, B., Wang, T., Tandon, S., Kiske, J., Song, W., Pazhayampallil, J., Andriluka, M., Rajpurkar, P., Migimatsu, T., Cheng-Yue, R., Mujica, F., Coates, A., and Ng, A. Y. (2015). An empirical evaluation of deep learning on highway driving. CoRR, abs/1504.01716. Lecun, Y., Bengio, Y., and Hinton, G. (2015). Deep learning. Nature, 521:436444. Lenz, I., Lee, H., and Saxena, A. (2015). Deep learning for detecting robotic grasps. Int. J. Rob. Res., 34(4-5):705724. Netix (2009). Netix prize. http://www.netflixprize.com/. Accessed: 2016-04-07. Pennington, J., Socher, R., and Manning, C. D. (2014). Glove: Global vectors for word representation. In Empirical Methods in Natural Language Processing (EMNLP), pages 15321543.