CSC Blog has moved

Find our blogs at www.csc.fi/blog.

This site is an archive version and is no longer updated.
 

Go to CSC Blog

Syvät neuroverkot

Mitä on ollut, sitä on tulevinakin aikoina,
mitä on tapahtunut, sitä tapahtuu edelleen:
ei ole mitään uutta auringon alla.

Saarnaajan kirja 1:9
 


Kun kävin koneoppimisen kursseja Teknillisessä korkeakoulussa, professorit tiesivät kertoa neuroverkoista. Neuroverkkojen idea keksittiin pian modernien tietokoneiden tulon jälkeen 40- ja 50-luvuilla. 90-luvulla nähtiin, että tietokoneet saattaisivat vihdoin olla riittävän nopeita neuroverkkojen kouluttamiseen, ja aiheen ympärillä oli paljon pöhinää. Hypen tappoi lopulta se, että neuroverkot eivät olleet merkittävästi parempia kuin kilpailevat menetelmät. Lisäksi ne olivat varsin raskaita laskea.

Kymmenkunta vuotta myöhemmin maailma on muuttunut: neuroverkot ovat uudelleen pinnalla syväoppimisen (deep learning) myötä. Käsitteen selittämiseksi pitää ottaa pikainen askel taaksepäin.

 

Koneoppimisessa etsitään kuvausta f joukolta X joukolle Y.
 


Koneoppiminen tiivistetysti

Koneoppimisessa etsitään tapoja muuttaa data X dataksi Y, formaalisti etsitään kuvausta f: X -> Y. Tyypillinen esimerkki on luokittelu, jossa X voi olla vaikkapa kuvia käsin piirretyistä numeroista ja Y on tieto siitä, mikä numero annetussa kuvassa on.

Vaihtoehtoisesti voitaisiin ennustaa henkilön pituutta, kun tiedetään sukupuoli, kengännumero ja paino. Koska pituus on jatkuva-arvoinen muuttuja, on kyseessä regressio-ongelma.

Aluksi kerätään näytteet X ja niitä vastaavat halutut arvot Y. Tämän jälkeen valitaan koneoppimisalgoritmi, jolle annetaan saadut tiedot. Algoritmi tyypillisesti luokittelee näytteet monta kertaa ja korjaa parametreja siten, että ennustus- tai luokitteluvirhe pienenee joka kierroksella. Kun on varmistuttu, että järjestelmä tekee suurin piirtein mitä sen pitää (tämä ei ole lainkaan varmaa), sille voi antaa uusia esimerkkejä, jotka ovat samanlaisia X:n kanssa, ja se laskee arvion Y:lle.

Näitä ohjatun oppimisen järjestelmiä käytetään esimerkiksi tunnistamaan autojen rekisterikilpiä parkkihalleissa, ennustamaan luottoriskiä lainanannossa, tunnistamaan kissoja ja muita hahmoja valokuvista sekä esimerkiksi havainnoimaan liikennettä itseajavissa autoissa. Jos käytössä on vain X ilman esimerkkejä siitä, millainen Y:n pitäisi olla, kyseessä on ohjaamattoman oppimisen ongelma.

 

Neuroverkossa on kolme kerrosta: syötekerros, piilokerros ja ulostulokerros.
 


Neuroverkot

Neuroverkot ovat ensisijaisesti ohjatun oppimisen työkalu yllä mainittujen kuvauksien f oppimiseksi, kun esimerkkipareja X,Y on saatavilla. Menetelmässä on haettu inspiraatiota biologiasta ja hermoston toiminnasta, vaikka se onkin yksinkertaistettu malli.

Neuroverkko koostuu keinotekoisista neuroneista, joista jokainen laskee saamastaan syötteestä uuden arvon. Neuroneita yhdistellään toisiinsa eri tavoin siten, että yhden tuottama arvo on syöte seuraavilla tasoilla oleville neuroneille. Verkko siis kootaan yleensä tasoittain. Joskus kytkökset menevät vain eteenpäin, joskus tasoja kytketään myös takaisinpäin. Ensimmäiselle tasolle annetaan syöte X, ja viimeisen tason ulostulona on arvio Y:stä.

Neuroverkkoa koulutetaan siten, että kaikki X:t ajetaan verkon läpi ja saatuja arvoja verrataan tunnettuihin oikeisiin arvoihin. Tämän jälkeen lasketaan kerros kerrokselta korjaukset kunkin tason neuronien painokertoimiin, päivitetään verkko ja aloitetaan alusta. Kiertoa toistetaan, kunnes tulos ei enää olennaisesti parane.

 

"Jos pienellä näyteotoksella ajettu testi ei valmistu sillä aikaa, kun tutkija käy juomassa kahvit, on algoritmi liian raskas tai
testiotos liian suuri."

 

 


Päivityksien laskeminen on varsin raskasta, ja toistoja tarvitaan yleensä paljon. Lisäksi verkon rakenne ja sen parametrit vaikuttavat verkon kykyyn ratkaista erilaisia ongelmia. Parhaan rakenteen löytää yleensä yrityksen ja erehdyksen kautta.

TKK:n peruskurssilla yksi professoreista, muistaakseni Suomen akatemian nykyinen pääjohtaja Heikki Mannila kommentoi, että jos pienellä näyteotoksella ajettu testi ei valmistu sillä aikaa, kun tutkija käy juomassa kahvit, on algoritmi liian raskas tai testiotos liian suuri. 2000-luvulla tutkijan olisi pitänyt odottaa yön yli tai pidempään jokaisen yrityksen ja erehdyksen jälkeen. Onkin helppo ymmärtää, miksi neuroverkot eivät olleet muodissa.
 

Syväoppiminen

2010-luvulle tultaessa kaksi olennaista asiaa muuttui: käytettävän koulutusdatan määrä räjähti käsiin ja grafiikkaprosessorit paranivat merkittävästi. Neuroverkkojen koulutusalgoritmien yksi hyvä puoli on se, että niiden laskeminen grafiikkaprosessoreilla on erittäin tehokasta. Peliteollisuuden nousu ja monimutkaisemmat grafiikkaprosessorit loivat alustan, jolla neuroverkkojen koulutus nopeutuu melkein suoraan verrannollisesti käytettyyn tehoon. Kahdella grafiikkakortilla koulutus tapahtuu kaksi kertaa nopeammin.

Tämä laskennan halventuminen mahdollisti monimutkaisempien neuroverkkojen rakentamisen ja kouluttamisen. Erityisesti neuroverkkoihin on vihdoin kustannustehokasta lisätä enemmän tasoja, ja tehdä näin verkoista ”syvempiä”, mistä syväoppiminen saa nimensä. Eri tasot erikoistuvat tekemään eri asioita, ja tulokset ovat parhaimmillaan häkellyttävän hyviä verrattuna kilpaileviin menetelmiin.

Koska neuroverkon osat erikoistuvat, tuloksien saamiseen ei välttämättä tarvita yhtä paljon datatieteilijän työtä kuin kilpailevia menetelmiä käytettäessä.
 

Tarpeeksi dataa

Jotta neuroverkon kouluttaminen on millään tavalla mielekästä, sille pitää olla riittävästi koulutusdataa. Jos neuroverkossa on satoja neuroneita ja näytteitä on vain kymmeniä, ei tulos ole todennäköisesti kovin hyvä.

Big data -aikakaudella ihmiset tuottavat päivittäin massiiviset määrät koulutusdataa neuroverkoille. Esimerkiksi sosiaalisten medioiden käyttäjät tägäävät eläimiä ja muita esineitä valokuviin. Internet-hakukoneet käyttävät näitä koulutusdatana löytääkseen eläimiä ja muita esineitä myös kuvista, joita ei ole tägätty. Moderneissa neuroverkoissa voi olla miljoonia painokertoimia, joten koulutusdataa tarvitaan massiivisia määriä.

 

"Big data -aikakaudella ihmiset tuottavat päivittäin massiiviset määrät koulutusdataa neuroverkoille."

 

 

 

Neuroverkon kouluttaminen miljoonilla näytteillä ei vieläkään ole nopea prosessi, mutta pienempien koe-erien kouluttamisesta on mahdollista tehdä riittävän nopeaa kohtuullisin kustannuksin. Datatieteilijä voi usein saada palautetta yrityksistään jo kahvi- tai lounastauon jälkeen.

Neuroverkoissa on monia hyviä puolia. Kun sellainen on kerran koulutettu, se vie verrattain vähän tilaa ja sen avulla on nopea laskea arvioita uusille näytteille. Isolla laskentaresurssilla ja kattavalla koulutusdatalla koulutetun verkon voi asentaa sulautettuun järjestelmään, esimerkiksi auton tietokonejärjestelmään, jossa se voi tunnistaa tiemaalauksia tai liikennemerkkejä videokuvasta. Auton tietokoneen ei tarvitse olla erityisen tehokas suoriutuakseen konenäköongelmasta, joka vaatisi monilla vaihtoehtoisilla menetelmillä tehokkaan pöytäkoneen.

Syvät neuroverkot ovat nykytilanteessa hyvä ratkaisu tiettyihin koneoppimisen ongelmiin. Jos ongelma ratkeaa neuroverkolla hyväksyttävästi, ei ratkaisua välttämättä kannata etsiä kauempaa. Datatieteilijöiden ei tarvitse kuitenkaan pelätä työnsä puolesta, hopealuodiksi niistä ei vielä ole: kaikki koneoppimisen ja tilastotieteiden lainalaisuudet pätevät yhä.

Syväoppiminen on tullut jäädäkseen, mutta muutaman vuoden päästä todennäköisesti joku toinen menetelmä on pinnalla ja ratkaisee tehokkaasti uusia, vaikeampia asioita. Mikään ei ole uutta auringon alla, samat menetelmät nousevat pinnalle hieman uusissa vaatteissa.
 

Tammikuussa hakukoneyhtiö Yandexin tutkijakoulu järjesti yhteistyössä CSC:n kanssa koulutuksen syväoppimisesta. KUVA: MARKUS KOSKELA
 


CSC ja neuroverkot

CSC:n Taito-klusterin koneista osassa on laskentaan soveltuva grafiikkakiihdytin ja lisäkapasiteettia ollaan hankkimassa. CSC:n data-analytiikkaryhmästä löytyy neuroverkko-osaamista. Meiltä saa tarvittaessa tukea, jos neuroverkkojen käyttö oman tutkimuksen työkaluna kiinnostaa. Osaamme myös kertoa, koska sitä ei kannata käyttää.

CSC tarjoaa koulutusta aiheen tiimoilta. Tammikuussa hakukoneyhtiö Yandexin tutkijakoulu järjesti yhteistyössä CSC:n kanssa koulutuksen syväoppimisesta. Kurssilla käsiteltiin teorian lisäksi kirjastoja, jotka helpottavat neuroverkkojen rakentamista ja koulutusta. Toukokuussa järjestetään johdatus CUDA-ohjelmointiin -kurssi, jolla opitaan ohjelmoimaan rinnakkaistuvaa koodia grafiikkakiihdyttimille. Kurssi antaa valmiudet esimerkiksi koodata neuroverkkototeutuksen grafiikkakiihdyttimille itse.