Johannes Lehmusvaara Konvoluutioneuroverkot kirjain- ja numeromerkkien tunnistuksessa. Kandidaatintyö

Samankaltaiset tiedostot
Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun

Johdatus tekoälyn taustalla olevaan matematiikkaan

Kognitiivinen mallintaminen Neuraalimallinnus, luento 1

1. NEUROVERKKOMENETELMÄT

Harha mallin arvioinnissa

Johdatus tekoälyn taustalla olevaan matematiikkaan

JOHDATUS TEKOÄLYYN TEEMU ROOS

Johdatus tekoälyn taustalla olevaan matematiikkaan

ImageRecognition toteutus

Johdatus tekoälymatematiikkaan (kurssilla Johdatus Watson-tekn

Kognitiivinen mallintaminen. Nelli Salminen

Tällä kerralla ohjelmassa. Kognitiivinen mallintaminen Neuraalimallinnus Kertausta: Perseptronin oppimissääntö

1. NEUROVERKKOMENETELMÄT

JOHDATUS TEKOÄLYYN TEEMU ROOS

Backpropagation-algoritmi

JOHDATUS TEKOÄLYYN TEEMU ROOS

Tee-se-itse -tekoäly

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

Regressioanalyysi. Kuusinen/Heliövaara 1

Ongelma(t): Miten digitaalista tietoa voidaan toisintaa ja visualisoida? Miten monimutkaista tietoa voidaan toisintaa ja visualisoida?

Logistinen regressio, separoivat hypertasot

SGN-2500 Johdatus hahmontunnistukseen 2007 Luennot 4 ja 5

SGN-1251 Signaalinkäsittelyn sovellukset Välikoe Heikki Huttunen

1. LINEAARISET LUOKITTIMET

Sovellettu todennäköisyyslaskenta B

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Yhteenveto, osa I

Regressioanalyysi. Vilkkumaa / Kuusinen 1

Oletetaan ensin, että tangenttitaso on olemassa. Nyt pinnalla S on koordinaattiesitys ψ, jolle pätee että kaikilla x V U

Dynaamiset regressiomallit

Kaksiluokkainen tapaus, lineaarinen päätöspinta, lineaarisesti erottuvat luokat

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

Roni Ahola Esiopetetun konvoluutioneuroverkon käyttö kuvantunnistuksessa. Kandidaatintyö

JAANA KORPELA KÄSINKIRJOITETTUJEN NUMEROIDEN TUNNISTUS NEU- ROVERKKOJEN AVULLA. Kandidaatintyö

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

Inversio-ongelmien laskennallinen peruskurssi Luento 2

Mallin arviointi ja valinta. Ennustevirhe otoksen sisällä, parametrimäärän valinta, AIC, BIC ja MDL

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Johdatus tilastotieteeseen Estimointi. TKK (c) Ilkka Mellin (2005) 1

Ratkaisuehdotukset LH 7 / vko 47

Inversio-ongelmien laskennallinen peruskurssi Luento 4

Digitaalinen signaalinkäsittely Kuvankäsittely

Puumenetelmät. Topi Sikanen. S ysteemianalyysin. Laboratorio Aalto-yliopiston teknillinen korkeakoulu

Matematiikan tukikurssi

2 Osittaisderivaattojen sovelluksia

Diskriminanttianalyysi I

Laskut käyvät hermoille

Kimppu-suodatus-menetelmä

Tilastotiede ottaa aivoon

Tilastotiede ottaa aivoon

MLP-hermoverkko ja sen soveltaminen kuvien luokitteluun

S Laskennallinen Neurotiede

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Estimointi. Estimointi. Estimointi: Mitä opimme? 2/4. Estimointi: Mitä opimme? 1/4. Estimointi: Mitä opimme? 3/4. Estimointi: Mitä opimme?

Numeeriset menetelmät TIEA381. Luento 8. Kirsi Valjus. Jyväskylän yliopisto. Luento 8 () Numeeriset menetelmät / 35

Mallipohjainen klusterointi

Johdatus tekoälyn taustalla olevaan matematiikkaan

(0 desimaalia, 2 merkitsevää numeroa).

T Luonnollisen kielen tilastollinen käsittely Vastaukset 3, ti , 8:30-10:00 Kollokaatiot, Versio 1.1

Ilkka Mellin Tilastolliset menetelmät Osa 2: Otokset, otosjakaumat ja estimointi Estimointi

Differentiaali- ja integraalilaskenta 2 Laskuharjoitus 4 / vko 40

Johdatus tekoälyn taustalla olevaan matematiikkaan

Demo 1: Simplex-menetelmä

f(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0.

Luento 9: Yhtälörajoitukset optimoinnissa

Ei välttämättä, se voi olla esimerkiksi Reuleaux n kolmio:

Sovellettu todennäköisyyslaskenta B

Matematiikan tukikurssi

Osa 2: Otokset, otosjakaumat ja estimointi

Matematiikan tukikurssi

Jos nyt on saatu havaintoarvot Ü ½ Ü Ò niin suurimman uskottavuuden

Matematiikan tukikurssi

Matematiikan tukikurssi, kurssikerta 2

LUKU 3. Ulkoinen derivaatta. dx i 1. dx i 2. ω i1,i 2,...,i k

Osa IX. Z muunnos. Johdanto Diskreetit funktiot

MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Gaussiset prosessit derivaattahavainnoilla regressio-ongelmassa (valmiin työn esittely)

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

MS-C1340 Lineaarialgebra ja

Matematiikan tukikurssi, kurssikerta 3

Harjoitus 7: NCSS - Tilastollinen analyysi

Todennäköisyyden ominaisuuksia

KKT: log p i v 1 + v 2 x i = 0, i = 1,...,n.

l (φ; y) = l(θ(φ); y) Toinen derivaatta saadaan tulon derivaatan laskusäännöllä Uudelleenparametroidun mallin Fisherin informaatio on

Sovellettu todennäköisyyslaskenta B

Numeeriset menetelmät TIEA381. Luento 12. Kirsi Valjus. Jyväskylän yliopisto. Luento 12 () Numeeriset menetelmät / 33

Numeerinen analyysi Harjoitus 3 / Kevät 2017

Tekoäly ja alustatalous. Miten voit hyödyntää niitä omassa liiketoiminnassasi

Yhden selittäjän lineaarinen regressiomalli (jatkoa) Ensi viikolla ei pidetä luentoa eikä harjoituksia. Heliövaara 1

Määritelmä Olkoon T i L (V i, W i ), 1 i m. Yksikäsitteisen lineaarikuvauksen h L (V 1 V 2 V m, W 1 W 2 W m )

1. LINEAARISET LUOKITTIMET (jatkoa)

Inversio-ongelmien laskennallinen peruskurssi Luento 7 8

P(X = x T (X ) = t, θ) = p(x = x T (X ) = t) ei riipu tuntemattomasta θ:sta. Silloin uskottavuusfunktio faktorisoituu

Numeeriset menetelmät

Tilastollinen testaus. Vilkkumaa / Kuusinen 1

Luento 8: Epälineaarinen optimointi

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Transkriptio:

Johannes Lehmusvaara Konvoluutioneuroverkot kirjain- ja numeromerkkien tunnistuksessa Kandidaatintyö Tarkastaja: lehtori Heikki Huttunen Jätetty tarkastettavaksi 9.5.2014

I TIIVISTELMÄ TAMPEREEN TEKNILLINEN YLIOPISTO Tietotekniikan koulutusohjelma Lehmusvaara, Johannes: Konvoluutioneuroverkot kirjain- ja numeromerkkien tunnistuksessa Kandidaatintyö, 22 sivua Toukokuu 2014 Pääaine: Signaalinkäsittely ja multimedia Tarkastaja: lehtori Heikki Huttunen Avainsanat: Neuroverkko, konvoluutioneuroverkko, hahmontunnistus, deep learning, konenäkö Konvoluutioneuroverkko on eliöiden näköhermoston mukaan kehitetty hahmontunnistin. Tässä kandidaatintyössä verrataan konvoluutioneuroverkkojen ja muiden keinotekoisten neuroverkkojen suorituskykyä kirjain- ja numeromerkkien tunnistuksessa. Vertailussa keskitytään testivirheeseen ja opetukseen kuluvaan aikaan. Työ toteutettiin kokonaisuudessaan Matlab -ympäristössä. Työn tulokset osoittavat, että konvoluutioneuroverkko on visuaalisessa luokittelussa paras testatuista menetelmistä. Luokitettavien aineistojen yksinkertaisuudesta johtuen erot menetelmien välillä eivät kuitenkaan ole erityisen suuria. Konvoluutioneuroverkkojen opetusajat ovat lisäksi ylivoimaisesti pisimmät. Tämä ongelma on neuroverkkotutkimuksessa kierretty ajamalla opetuskoodi näytönohjaimella; sitä ei kuitenkaan tässä työssä yritetty.

II ALKUSANAT Tämä kandidaatintyö on kirjoitettu osana Tampereen teknillisen yliopiston signaalinkäsittelyn laitoksen kandidaatintyöseminaario keväällä 2014. Kiitokset kuuluvat ensisijaisesti työn ohjaajalle ja tarkastajalle lehtori Heikki Huttuselle, joka auttoi aiheen rajaamisessa ja antoi hyödyllisiä neuvoja työn alkuvaikeuksien selvittämisessä. Lisäksi toinen tämän työn käyttämistä luokitusaineistoista saatiin hänen kauttaan. Kuvien laatimisessa suurta apua tarjosi TikZ-esimerkkikuvia ylläpitävä texample (http://www.texample.net/tikz/ examples/).

III Sisällys 1. Johdanto 1 2. Luokittimien teoriaa 3 2.1 Logistinen regressio............................ 3 2.2 Neuroverkot................................ 4 2.2.1 Biologinen neuroverkko...................... 4 2.2.2 Monikerroksinen perseptroniverkko............... 5 2.3 Neuroverkot kuvantunnistuksessa.................... 9 2.3.1 Ihmisen näköhermosto...................... 9 2.3.2 Konvoluutioneuroverkko..................... 10 2.4 Logistisen regression yhteys neuroverkkoihin.............. 12 3. Aineisto ja sen luokittelu 14 3.1 Aineisto 1: MNIST............................ 14 3.2 Aineisto 2: Rekisterikilpidata...................... 14 3.3 Luokittimien toteutus ja käyttö..................... 15 4. Tulokset ja niiden tarkastelu 18 5. Johtopäätökset 21 Lähteet 22

IV TERMIT JA LYHENTEET CNN MLP MNIST w θ x ŷ glmnet DeepLearnToolbox Konvoluutioneuroverkko (engl.: Convolutional neural network) Monikerroksinen perseptroniverkko (engl.: Multilayer perceptron) (engl.: Mixed National Institute of Standards and Technology) Käsinkirjoitetuista numeromerkeistä koostuva tietokanta Perseptroniverkon painokerroinvektori Logistisen regression parametrivektori Luokittimen sisääntulovektori Luokittimen ulostulovektori Matlab-kirjasto lineaariseen luokitteluun Matlab-kirjasto luokitteluun syvien hierarkkisten mallien avulla

1 1. JOHDANTO Hahmontunnistus on muodostunut merkittäväksi tietojenkäsittelyn osa-alueeksi. Ehkä eniten julkisuutta saanut hahmontunnistuksen työkalu on keinotekoinen neuroverkko. Paitsi että se on mallinnettu luonnon tehokkaimman hahmontunnistajan, aivojen, perusteella, myös testitulokset puhuvat puolestaan. Neuroverkkoja on sovellettu onnistuneesti hahmontunnistustehtäviin esimerkiksi kemian ja lääketieteen aloilla [1; 2]. Niiden erityinen etu on neuroverkkojen erittäin laaja sovellettavuus: arkkitehtuuriltaan samanlaisia verkkoja voi käyttää hyvinkin erilaisten sovellusalueiden ongelmien ratkaisemiseen. Esimerkiksi kuvien luokittelemiseen ja roskapostin tunnistamiseen käytettävät verkot voivat teoriassa olla neuronien määrältään samanlaisia ja ainoastaan opetuksen seurauksena saadut painokertoimet erottavat näitä verkkoja toisistaan. Hyviä tuloksia voidaan saavuttaa monilla sovellusalueilla ilman että oletuksia datan luonteesta tarvitsee sisällyttää verkon rakenteeseen ennen opetuksen aloittamista. Vaikka arkkitehtuuriltaan hyvin geneeriset neuroverkot (ts. multilayer perceptron, MLP) ovat toimineet hyvin laajassa sovelluskirjossa niin tuntuisi loogiselta että tiettyyn sovellusalueeseen erityisesti suunnitellulla verkkotyypillä saisi vielä parempia tuloksia. Neuroverkkotutkimus vahvistaa tämän oletuksen. Erityisen neuroverkkotyypin nimeltään konvoluutioneuroverkon (engl. convolutional neural network, CNN) on havaittu saavuttavan erinomaisia tuloksia kuvien luokittelussa [3; 4]. Vertailtaessa käsinkirjoitettujen merkkien tunnistustehokkuutta, konvoluutioneuroverkko saavuttaa testatuista menetelmistä pienimmän virheen [5]. Konvoluutioneuroverkko eroaa tavallisesta MLP-verkosta merkittävimmin siten, että se säilyttää tiedon pikseleiden topologisesta sijainnista toisiinsa, kun taas MLP:ssä tätä ei tehdä. Varsinainen opetus on kummallekin verkolle samantapainen gradienttipohjainen menetelmä. Konvoluutioneuroverkot voidaan sijoittaa suurempaan luokkaan koneoppimisessa käytettäviä menetelmiä nimeltään deep learning. Nimitys on peräisin siitä että konvoluutioneuroverkossa voi kerroksia helposti olla useita, kun taas MLP-verkossa niitä on yleensä korkeintaan kolme. Tähän on syynä se, että testitulokset on käytännössä havaittu huonoiksi käytettäessä liian montaa piilokerrosta [6]. Tässä kandidaatintyössä tehdään vertaileva tutkimus konvoluutioneuroverkon toimivuudesta alfanumeeristen merkkien tunnistukseen. Työssä käytetään kahta

1. Johdanto 2 erillistä aineistoa. Ensimmäinen aineisto on rekisterikilvistä kuvatut ja toisistaan etukäteen erotellut numeromerkit ja kapitaaliaakkoset. Vertailukohteena konvoluutioneuroverkkoihin käytetään yksinkertaisempia neuroverkkoja. Paitsi luokitusvirhettä, myös opetukseen käytettävää aikaa verrataan eri menetelmien välillä. Toinen aineisto, jonka luokittelua verrataan, on numeromerkeistä koostuva MNISTtietokanta [7]. Syynä tähän on MNIST:n de facto -standardin asema eri luokitusmenetelmien testauksessa ja suuri määrä vertailukelpoisia tuloksia. Kappaleessa 2 tarkastellaan käytettäviä luokitusmenelmiä teoreettisesti. Kappaleessa 3 selvitetään työn käytännön toteutus ja esitellään opetusaineistot. Kappaleessa 4 kuvaillaan ja pohditaan saatuja testituloksia. Lopuksi kappaleessa 5 tehdään tulosten perusteella johtopäätökset.

3 2. LUOKITTIMIEN TEORIAA Tässä työssä verrataan kolmea eri luokitusmenetelmää: logistinen regressio, monikerroksinen perseptroniverkko ja konvoluutioneuroverkko. Kaikki luokittimet ovat ohjatun opetuksen luokittimia, eli ne tarvitsevat opetusjoukon käyttöönsä. Tässä työssä tämä tarkoittaa joukkoa kuvia, jotka esittävät merkkejä, ja jokaiseen kuvaan yhdistettyä luokkaa. Mitä suurempi opetusjoukko on, sitä paremmin luokitin oppii jokaiselle luokalle ominaiset piirteet. On kuitenkin mahdollista, että opetuksen jälkeen vastaan tulevat kuvat eroavat opetusjoukon kuvista koska käsiala vaihtelee kirjoittajasta riippuen. Siksi opetusjoukon luokitusvirhe ei ole sopiva arvio siitä kuinka käyttökelpoinen luokitin tulee olemaan varsinaisessa käytössä. Tarvitaan siis vielä opetusjoukosta erillinen joukko kuvia, jota kutsutaan testijoukoksi. Opetuksen jälkeinen luokitusvirhe testijoukon yli on testivirhe, jota tässä työssä verrataan luokittimien välillä. Testivirhe antaa varsin luotettavan arvion siitä, minkälaista virhettä luokittimelta sopii odottaa varsinaisessa käytössä. Logistinen regressio luetaan tilastomatematiikan menetelmiin ja soveltuu tapauksiin jossa aineisto jakautuu lineaarisesti eri luokkiin. Kaksi jälkimmäistä luokitinta lukeutuvat keinotekoisiin neuroverkkoihin. Monikerroksinen perseptroniverkko koostuu toisiinsa kytketyistä yksinkertaisista laskentayksiköistä, eli neuroneista. Kaikkein luonnollisin tulkinta sille on funktionsovittaja, mutta sitä voidaan käyttää myös luokitukseen. Konvoluutioneuroverkko on kuvantunnistukseen erikoistunut keinotekoinen neuroverkko. Seuraavaksi annetaan yleiskuvaus kaikista luokittimista. Keinotekoisten neuroverkkojen kuvauksessa ensin tarkastellaan niiden biologisia vastineita, koska menetelmien alkuperät löytyvät sieltä. 2.1 Logistinen regressio Oletetaan K:n luokan luokitusongelma. Logistisessa regressiossa mallinnetaan luokkien k = 1, 2,..., K posterior-todennäköisyyksiä yhtälöillä luokille P(G = k X = x) = k = 1, 2,..., K 1 ja exp(β k0 + β T k x) 1 + K 1 l=1 exp(β l0 + β T l x) (2.1) P(G = K X = x) = 1 1 + K 1 l=1 exp(β l0 + β T l x) (2.2)

2. Luokittimien teoriaa 4 luokalle K. Näitä yhtälöitä muokkaamalla saadaan aikaan lineaariset, suhteelliset log-todennäköisyydet log P(G = k X = x) P(G = K X = x) = β k0 + β T k x, k = 1, 2,..., K 1. (2.3) Luokitussääntö on valita x:n luokaksi se jonka suhteellinen log-todennäköisyys on suurin, ja koska 2.3:n mukaan ne ovat lineaarisia, niin myös luokkia erottavat päätöspinnat ovat lineaarisia. Todennäköisyydet summautuvat arvoon 1. Nimittäjään voidaan valita mikä tahansa luokka (tässä tapauksessa K), sillä todennäköisyydet säilyvät samana joka tapauksessa. Tehtävänä on nyt etsiä sellainen parametrivektori θ, θ = [ β 10 β T 1 β 20 β T 2 β (K 1)0 β T K 1 ] (2.4) joka antaa parhaan mallinnuksen opetusjoukolle. Tavallisin keino tähän on loguskottavuuden l(θ) maksimointi N l(θ) = log P(G = g i X = x i ; θ) (2.5) i=1 missä N on opetusjoukon koko ja g i on opetusnäytteen x i oikea luokka. Summalausekkeen sisällä oleva termi P(G = g i X = x i ; θ) lasketaan yhtälöillä 2.1 ja 2.2. Maksimointi voidaan suorittaa iteratiivisella Newton-Raphson -algoritmilla [8], jonka kuvaus sivuutetaan. 2.2 Neuroverkot Neuroverkko on toisiinsa yhteydessä olevien hermosolujen verkosto. Kaksi tässä työssä käytettyä luokitinta lukeutuvat keinotekoisiin neuroverkkoihin (engl. artificial neural network), mitkä ovat oppivia järjestelmiä jotka mallintavat biologisten neuroverkkojen toimintaa. Ensimmäisessä aliluvussa kuvataan hyvin yleisellä tasolla aivojen neuroverkon toimintaa ja tämän jälkeen esitellään monikerroksinen perseptroniverkko, joka on yksinkertainen keinotekoinen neuroverkko. 2.2.1 Biologinen neuroverkko Neuroni on hermosolu joka toimii aivojen neuroverkon perusyksikkönä. Ihmisen aivoissa neuroneita on noin 10 11 kappaletta [9]. Neuronit toteuttavat sähkökemiallista tietojenkäsittelyä ja -siirtoa. Tärkeimmät neuronin osat ovat soluydin ja synapsit. Soluydin ottaa vastaan viestejä (eli sähköisiä signaaleja) muista neuroneista ja tuottaa vastauksena oman signaalin. Synapsien tehtävä on signaalien siirto neuronien

2. Luokittimien teoriaa 5 välillä. Siirto voi tapahtua joko sähköisesti tai kemiallisesti synapsin tyypistä riippuen. Varsinainen signaali, jolla neuronit kommunikoivat on aktiopotentiaali: lyhytkestoinen signaalipiikki ( 1 ms), joka generoituu jos sähköinen potentiaali soluytimessä ylittää jonkin raja-arvon. Aktiopotentiaali käytännössä ilmoittaa muille neuroneille, että kyseinen neuroni on aktivoitunut. Idealisoitu aktiopotentiaali on esitetty kuvassa 2.3a. Neuroverkon tärkein ominaisuus on plastisiteetti eli se kykenee muokkamaan omaa toimintaansa automaattisesti, eli toisin sanoen oppimaan. Synapsin tehokkuus, eli kuinka paljon se vahvistaa ylimenevää signaalia, on merkittävä tekijä neuroverkon oppimisessa. Sen uskotaan riippuvan neuronien aktivoitumisen aikasuhteesta: jos kaksi neuronia lähettää aktiopotentiaalin samaan aikaan niin näiden välinen synapsi vahvistuu. Toinen huomionarvoinen seikka neuroverkoissa on se, että ne koostuvat suuresta määrästä yksinkertaisia laskentayksiköitä (eli neuroneita). Neuronien määrä ja niiden tehokas yhteistyö synapsien avulla saa aikaan sen, että neuroverkon laskentakapasiteetti on huomattavasti suurempi kuin pelkästään yksittäisestä neuronista voisi päätellä. 2.2.2 Monikerroksinen perseptroniverkko Perseptroni (engl. perceptron) on binääriluokitin, joka voidaan opettaa lineaariseen luokitukseen. Sen elementit ovat summaaja, aktivaatiofunktio ja painokertoimet, ja ne on esitetty kuvassa 2.1. Jako näihin elementteihin on peräisin biologisista neuroneista: summaaja vastaa soluydintä, aktivaatiofunktio aktiopotentiaalia ja painokertoimet vastaavat synapseja. Perseptroni on siis käytännössä (yksinkertaistettu) laskennallinen malli biologiselle neuronille. Monikerroksinen perseptroniverkko (engl. multilayer perceptron, MLP) on perseptronin yleistys. Se on laskennallinen verkosto joka koostuu yhteen tai useampaan kerrokseen sijoitetuista keinotekoisista neuroneista (= perseptroneista). MLP kykenee perseptronin yleistyksenä myös epälineaariseen luokitukseen. MLP:n kerrokset voidaan jakaa kahteen luokkaan (kuva 2.2): piilokerrokset (hidden layer) ja ulostulokerros (output layer). Lisäksi on kolmas kerros nimeltään sisääntulokerros (input layer). Sisääntulokerroksen ainoa tehtävä on ottaa vastaan neuroverkolle tuleva data ja välittää se eteenpäin ensimmäiselle piilokerrokselle sisääntulona. Koska sisääntulokerroksessa ei tapahdu oppimisaktiviteettia, ei sisääntulokerroksen alkioita pidetä neuroneina, ja toisinaan sisääntulokerrosta ei lasketa lainkaan verkon kerroslukumäärään. Piilokerrosten avulla MLP kykenee epälineaariseen luokitukseen. Jos piilokerrokset poistetaan, MLP palautuu lineaariseksi luokittimeksi.

2. Luokittimien teoriaa 6 1 b x 1 w 1 x 2 x 3... x N w 2 w 3... w N Σ φ(x) ŷ Kuva 2.1: Perseptroni, neuronin laskennallinen malli. Vektori x = [x 1, x 2,..., x N ] T on sisääntulovektori, b on bias-arvo, w = [w 1, w 2,..., w N ] T on painokerroinvektori ja φ on aktivaatiofunktio. Bias on luku jonka avulla opetusalgoritmi pystyy muuttamaan perseptronin ulostuloa sisääntuloarvoista riippumatta. Sisääntulokerros Piilokerros Piilokerros Ulostulokerros x 1 x 2 x 3 x 4 ŷ 1 ŷ 2 ŷ 3 x 5 x 6 Kuva 2.2: Monikerroksinen perseptroniverkko. Ympyrät vastaavat yksittäistä perseptronia. Kuvan verkon koko on (6, 15, 10, 3), eli se toteuttaa kuvauksen R 6 R 3.

2. Luokittimien teoriaa 7 30 20 10 0 10 1 0.9 0.8 0.7 0.6 (1+e x ) 1 V (mv) 20 30 40 50 60 kynnysarvo 0.5 0.4 0.3 0.2 0.1 70 0 1 2 3 4 5 t (ms) (a) 0 6 4 2 0 2 4 6 x (b) Kuva 2.3: 2.3a) aktiopotentiaali ja 2.3b) logistinen aktivaatiofunktio. Aktiopotentiaali koodaa neuronin aktivoitumista, aktivaatiofunktio myös aktivoitumisen voimakkuutta. Jokaisen neuronin ulostulo saadaan painovektorin ja sisääntulovektorin sisätulon ja aktivaatiofunktion yhdistelmästä. Tarkemmin, jos w k on neuronin k painokertoimista koostuva vektori ja x sisääntuloarvoista (edellisen kerroksen ulostulo) koostuva vektori, sekä φ(x) on aktivaatiofunktio, niin neuronin k ulostulo on N y k = φ(wk T x) = φ w kj x j (2.6) missä x = [ ] T, 1 x 1 x 2 x N wk = [ ] T b w 1 w 2 w N ja b on bias-arvo (kts. kuva 2.1). Yleisimmin käytetyt aktivaatiofunktiot ovat hyperbolinen tangentti, φ(x) = tanh(x), ja logistinen funktio, φ(x) = (1+e x ) 1. Kumpikin näistä funktiosta on sigmoidi, koska piirrettynä x y -tasoon ne muistuttavat S:ää (kuva 2.3b). Tavallisesti aktivaatiofunktio on sama verkon jokaiselle neuronille. Aktivaatiofunktion on oltava epälineaarinen jotta neuroverkko pystyy oppimaan epälineaarisen kuvauksen. Sigmoidifunktioilla on epälineaarisuuden lisäksi joukko haluttuja ominaisuuksia joiden ansiosta ne sopivat neuroverkoille: monotonisuus (voi koodata on/off -tilaa), rajoitettu arvojoukko (verkon ulostulo ei kasva rajattomasti kerros kerrokselta) ja derivoituvuus (välttämätöntä jotta verkko voidaan opettaa gradient descent -menetelmällä). MLP-verkon ulostulovektori koostuu arvoista j=0 ŷ = [ ] T ŷ 1 ŷ 2 ŷ B (2.7) missä B on neuronien määrä ulostulokerroksella. MLP-verkko käytännössä toteuttaa epälineaarisen kuvauksen F : R A R B, ŷ = F(x; w), missä x on verkon sisääntulovektori ja A, B ovat sisään- ja ulostulokerroksen koot. Funktiossa F(x; w) vektori x

2. Luokittimien teoriaa 8 tulkitaan vapaaksi muuttujaksi ja w parametriksi, joka määrittää täysin neuroverkon toiminnan. Jotta MLP saadaan kuvaamaan riittävän tarkasti jotain haluttua funktiota y(x), on sen painokertoimet w optimoitava jollain menetelmällä. Tavallisin optimointimenetelmä on backpropagation -algoritmi, joka minimoi virhefunktiota ξ painovektorin suhteen. Virhefunktio määritellään yhden näytteen neliövirheenä halutun ulostulon y ja verkon todellisen ulostulon F välillä ξ(n) = 1 B (ŷj (n) F j (x(n), w) ) 2 2 j=1 (2.8) missä n on askelmuuttuja ja B ulostulokerroksen koko. Backpropagation - menetelmän tavoitteena 1 on löytää sellainen painovektori w joka minimoi keskimääräisen neliövirheen koko opetusjoukon yli w = min ξ 1 av = min w w N N ξ(n) (2.9) n=1 missä N on opetusjoukon koko. Backpropagation tekee tämän muuttamalla painovektoria jokaisessa askeleessa negatiivisen gradientin suuntaan, ts. siihen suuntaan jossa virhefunktion arvo pienenee w ji (n) = η ξ(n) w ji (n) (2.10) missä η on oppimisnopeus, mikä on hyvin tärkeä parametri neuroverkon opettamisessa, ja toimiva arvo pitää löytää kokeellisesti. Gradientin laskeminen on käytännössä monimutkaisempi prosessi kuin edellä oleva kaava antaa ilmi, mutta perusajatus on sama. Gradientti on lisäksi laskettava jokaisessa kerroksessa erikseen, seuraavan kerroksen gradientin avulla. Nimi backpropagation itse asiassa seuraa tästä, sillä virhesignaali e(n) = y(n) F (x(n), w) leviää algoritmissa verkon loppupäästä kohti etupäätä ja samalla säätää parametrivektorin w alkioita oikeaan suuntaan. Kun minimointi on suoritettu, MLP-verkko tarjoaa varsin hyvän estimaattorin sille funktiolle y jolla se on opetettu. Opetus tapahtuu opetusjoukolla {( x i, y(x i ) )}, joka on siis halutusta funktiosta näytteistetty joukko arvoja. Toinen tämän kandidaatintyön opetusaineisto koostuu 16 16-harmaasävykuvista ja 34 mahdollisesta luokasta. Tämän datan luokittelun tapauksessa x i on 16 16 = 256 1 vektori ja y(x i ) on 34 1 yksikkövektori joka koodaa sitä merkkiä jota kuva esittää, esimerkiksi [ ] 00 T 1 2 B Y Z y(x i ) = 0 0 1 0 0. (2.11) 1 Backpropagation on ns. gradient descent -tyyppinen algoritmi, mikä tarkoittaa että sen lopputulos riippuu voimakkaasti alkuehdoista. Koska MLP-verkkojen painokertoimet alustetaan satunnaisiksi, tämä aiheuttaa sen että usein backpropagationin jälkeinen painovektori ei olekaan virhefunktion globaali minimi vaan lokaali minimi.

2. Luokittimien teoriaa 9 Edellisen vektorin tapauksessa kuva siis esittää kirjainta B. 2.3 Neuroverkot kuvantunnistuksessa Kuten monikerroksinen perseptroniverkko, myös konvoluutioneuroverkko (engl. convolutional neural network, CNN) on laskennallinen verkosto joka koostuu useasta kerroksesta. Arkkitehtuuriltaan konvoluutioneuroverkko eroaa MLP:stä merkittävimmin siten että siinä ei ole neuroneita explisiittisessä roolissa, vaan siinä suoritetaan sisääntulolle kuvankäsittelyoperaatioita, täsmällisemmin konvoluutiota ja alinäytteistämistä. Konvoluutioneuroverkko on kuitenkin MLP:n tavoin myös mallinnettu biologisten neuroverkkojen perusteella, tarkemmin sanottuna näköhermoston tutkimuksen avulla. Seuraavassa aliluvussa esitellään biologisen näköjärjestelmän rakenne (lähteen [9] mukaan) ja sen jälkeen konvoluutioneuroverkon yhteys tähän. 2.3.1 Ihmisen näköhermosto Ihmisen näköaisti on huippukehittynyt kuvankäsittelyjärjestelmä, joka kykenee melkein reaaliajassa, ja laajasti vaihtelevissa olosuhteissa, päättelemään korkean tason abstraktiota kaksiulotteisesta korkearesoluutioisesta signaalista. Se alkaa silmän takaseinän verkkokalvolta, jossa on neuroneita kolmeksi kerrokseksi järjestyneenä. Vain ylimmän kerroksen neuronit, tappi- ja sauvasolut, aistivat valoa. Kahden sisemmän kerroksen neuroneiden tehtävä on signaalin kompressointi. Tämä on välttämätöntä koska näköhermon, joka on yhdistetty alimpaan kerrokseen, tiedonsiirtokapasiteetti on rajoitettu. Näköhermoa pitkin signaali kulkee aktiopotentiaaleina, eli verkkokalvo muuntaa aistitun analogisen valosignaalin eräänlaiseksi digitaaliseksi signaaliksi. Näköhermo kulkee aivojen takaosaan näköaivokuorelle, aivokuoren alueelle joka on erikoistunut kuvankäsittelyyn ja vie noin kolmasosan koko aivokuoresta. Näköaivokuoren päätehtävä on tunnistaa kuvasignaalista ominaisuuksia (engl. feature), huomionarvoisia tekijöitä joiden perusteella kuvan sisältöä pystytään tulkitsemaan. Näköaivokuori on verkkokalvon tavoin organisoitu hierarkkisiksi kerroksiksi seuraavalla tavalla. Alin kerros havaitsee ominaisuuksia vain pieneltä alueelta kuvaa, lokaalit ominaisuudet, ja seuraava kerros havaitsee näiden ominaisuuksien yhdistelmiä ja niin edelleen, kunnes viimeinen kerros havaitsee koko kuvan alueelle levinneet ominaisuudet eli globaalit ominaisuudet. Toinen tapa ilmaista sama asia on sanoa että neuronien sisääntuloalue (engl. receptive field) kasvaa kerros kerrokselta. Mitä suurempi sisääntuloalue, sitä abstraktimpia tulkintoja kuvasta voidaan tehdä. Esimerkiksi alin kerros tunnistaa kuvasta yksittäisiä pisteitä, seuraava kerros yksinkertaisia muotoja, kuten viivoja ja kulmia, ja ylimmillä kerroksilla havaitut muodot yhdistetään tulkinnaksi siitä, mikä objekti näköhavainnossa on.

2. Luokittimien teoriaa 10 Tehostamaan ominaisuuksien havaitsemista on neuronit kerrosten sisällä jaettu rivimäisesti alueisiin, joiden sisällä neuroneilla on yhteiskeskeinen sisääntuloalue, eli ne reagoivat samaan alueeseen visuaalisessa havainnossa. Jokainen näistä neuronialueista erikoistuu havaitsemaan ominaisuuksia tietyltä alueelta kuvaa, ja vierekkäisten sisääntuloalueiden alueet on sijoitettu fyysisesti lähelle toisiaan, jotta niiden välinen kommunikointi olisi edullisempaa. Tämä järjestely helpottaa abstraktiudeltaan suurempien ominaisuuksien havaitsemista. Viimeinen tärkeä näköaivokuoren ominaisuus on takaisinkytkennät korkeammalta kerrokselta alemmalle. Niiden tarkasta roolista ei ole täyttä varmuutta, mutta todennäköisesti niitä tarvitaan selvittämään monitulkintaisuus kuvasta. Monitulkintatilanne syntyy, kun kuvassa on liian vähän informaatiota varman tunnistuspäätöksen tekoon, esimerkiksi kun signaali-kohinasuhde on heikko, esimerkiksi huonosta valaistuksesta johtuen, tai yksi objekti on osittain peittynyt toisella. Monitulkinnan selvittäminen on vaikea tehtävä, ja varsinkin alemmilla abstraktiokerroksilla on siihen vähän mahdollisuuksia. Takaisinkytkennöillä korkeammat kerrokset pystyvät helpottamaan alempien kerrosten päätöksentekoa ja näin syntyy suurempi varmuus tunnistuksen oikeellisuudesta. 2.3.2 Konvoluutioneuroverkko Biologisesta näköjärjestelmästä voidaan päätellä ominaisuuksia joita myös konenäön järjestelmällä olisi syytä olla. Näitä ovat mm. [9]: yksinkertaiset laskentaelementit jaettuna kerroksiin, neuronien sisääntuloalue on pieni alemmilla kerroksilla ja kasvaa noustessa ylöspäin, topologisen tiedon säilyttäminen sisääntulossa, adaptoituminen ympäristöön oppimisen avulla, paikalliset takaisinkytkennät. Tämän kandidaatintyön konvoluutioneuroverkko toteuttaa nämä kaikki vaatimukset, paitsi viimeisen. Koska tässä työssä tarkasteltavilla kuvilla ei ole juurikaan monitulkintamahdollisuutta, takaisinkytkennän toteuttaminen todennäköisesti vain vaikeuttaisi opettamista. Siinä tapauksessa että luokittaminen tapahtuisi epävarmemmassa ympäristössä, takaisinkytkentöjen hyöty varmasti nousisi esiin. Konvoluutioneuroverkon määritteli ensimmäisen kerran LeCun et al [10] vuonna 1990. Siinä vuorottelee kaksi kerrosta: konvoluutiokerros (lyhenne C) ja alinäytteistyskerros (engl. subsampling layer, S). Konvoluutiokerros laskee edellisen S-kerroksen ulostulosta 2D-konvoluution:

2. Luokittimien teoriaa 11 C-kerros S-kerros Kuva 2.4: Yhden pikselin arvon laskeminen konvoluution avulla. Konvoluutiokernelin koko on 3 3. Alemman kerroksen pikselit kerrotaan painokertoimilla, joista konvoluutiokerneli koostuu, ja arvot summataan yhteen. Kuvasta näkee, että 2D-topologinen tieto otetaan laskutoimituksessa huomioon, ja sisääntuloalue on lokaali ts. ei koko alemman kuvan alueelle ulottuva. g(y, x) = f k = N 1 N 1 m=0 n=0 f(y + m, x + n)k(n 1 m, N 1 n) (2.12) missä f on M M harmaasävykuva ja samalla edellisen kerroksen ulostulo, ja k on N N konvoluutiokerneli. Operaation tuloksena saadaan (M N +1) (M N +1) kuva. Ylläoleva yhtälö on konvoluution versio, jossa ei sallita kertolaskun tekemistä harmaasävykuvan indeksien ulkopuolella. Toisin kuin logistinen regressio ja MLP jotka muuntavat digitaalisen kuvan ensin 1D-signaaliksi, konvoluutioneuroverkot käsittelevät kuvia samassa esitysmuodossa kuin ihmisen näköjärjestelmä. Jokaisessa C-kerroksessa on useita konvoluutiokerneleitä, ja sisääntuleva kuva konvoloidaan näiden jokaisen kanssa. Tuloksena on K kappaletta erillisiä kuvia, joita kutsutaan nimellä feature map. Feature map vastaa siis konvoluution ulostuloa g = f k. Jokainen feature map erikoistuu verkon opetuksen yhteydessä tunnistamaan kuvasta tiettyä ominaisuutta konvoluutiokernelinsä avulla. Tehtäessä vertailua biologiseen näköjärjestelmään, feature mapin yksittäinen pikseli g(y, x) vastaa neuronia näköaivokuorella. Sen sisääntuloalue saadaan suoraan kaavasta 2.12, ja on siis N N-ikkuna (kts. kuva 2.4). Jos kaikki yhden kerroksen feature mapit kasataan pinoksi, saadaan aikaan samanlainen rakenne kuin mihin näköaivokuoren neuronit on jaettu sisääntuloalueensa perusteella. Konvoluutiokerneleiden yksittäiset kertoimet vastaavat ajatustasolla synapseja neuronien välillä ja siis myös MLP-verkkojen painokertoimia. Konvoluutioneuroverkon parametrit

2. Luokittimien teoriaa 12 määräytyvät näinollen konvoluutiokerneleistä. Niiden optimointi voidaan toteuttaa backpropagationilla. Kun kuva konvoloidaan monen C-kerroksen läpi peräjälkeen, verkko pystyy havaitsemaan kuvasta koko ajan monimutkaisempia ja laajemmalle levinneitä ominaisuuksia verkon loppupäähän kuljettaessa. S-kerrosten tehtävä on vähentää verkon herkkyyttä häiriöille, eli ne toimivat kohinanpoistosuodattimina. S-kerroksissa tehtävät operaatiot ovat käytännössä kuvan pienentämistä. Tavallisesti tämä on joko vierekkäisten pikseleiden keskiarvottamista tai ns. max pooling -operaatio, jossa ikkunan sisältä valitaan se pikseli, jonka sävyarvo on suurin. Viimeisen C-kerroksen jälkeen verkon ulostulo on yksiulotteinen vektori, joka syötetään 1- tai 2-kerroksiselle täysin kytketylle neuroverkolle, jonka ulostulo on koko verkon lopullinen ulostulo. CNN täten erottaa kuvasta tunnistuksen kannalta olennaisimmat piirteet, jotka voidaan helposti luokitella matalalla neuroverkolla. Jos koko hierarkkinen, monikerroksinen kuvantunnistusverkko toteutettaisiin täysin kytkettynä neuroverkkona (ts. MLP-verkkona), ongelmaksi nousisi suuri parametrien määrä, mikä paitsi vaikeuttaa opettamista, myös lisää ylioppimisen riskiä. Konvoluutioneuroverkko kiertää tämän ongelman käyttämällä lokaaleja konvoluutiokerneleitä ja jakamalla nämä kernelit feature mappien sisällä. Konvoluutiokerneleiden yksittäiset kertoimethan määrittävät konvoluutioneuroverkon parametrit. Yhteenvetona: konvoluutioneuroverkot ovat neuroverkkoja, jossa optimoitavien parametrien määrä on pienempi kuin täysin kytketyssä neuroverkossa, ja poistettavat parametrit on valittu kuvadatan luokittelun ominaispiirteiden perusteella. 2.4 Logistisen regression yhteys neuroverkkoihin Logistinen regressio ja keinotekoiset neuroverkot voivat ensituntumalta vaikuttaa täysin erilaisilta luokitusmenetelmiltä, joten niiden vertailu saattaa tuntua tarkoitushakuiselta. Logistinen regressio lukeutuu tilastomatematiikan menetelmiin ja siinä yritetään sovittaa a priori -määritetty todennäköisyysjakauma opetusjoukkoon, kun taas neuroverkot ovat koneoppimisen menetelmiä, jossa lähtökohta on funktion sovittaminen opetusnäytteisiin. Lähempi tarkastelu kuitenkin paljastaa, että menetelmät ovat lähellä toisiaan. Logistisessa regressiossa yksittäistä kuvaa kohden lasketaan posterior-todennäköisyys jokaista luokkaa kohden kaavoilla 2.1, ja kuva luokitellaan siihen luokkaan jonka todennäköisyys on suurin. Tämän todennäköisyyden yhtälöstä nähdään, että kyseessä on itseasiassa sisätulo luokan parametrivektorin β ja x:n (jonka alkuun on lisätty arvo 1) välillä. Yhteys neuroverkkoihin selvenee tarkasteltaessa MLP-verkkoa, jolla ei ole piilokerroksia, ja jonka ulostulon aktivaatiofunktiona käytetään logistista funktiota. Kaavoista 2.1 ja 2.6 nähdään että kummankin menetelmän ulostulo lasketaan periaatteella, erona on normalisoiva summatermi logistisessa regressiossa. Kuva 2.5 esittää logistisen regression lineaari-

2. Luokittimien teoriaa 13 x 1 x 2 x 3 x 4 x 5 x 6 Sisääntulokerros Ulostulokerros ŷ 1 ŷ 2 ŷ 3 ŷ 4 ŷ 5 ŷ 6 ŷ 7 ŷ 8 = P(g i x) Kuva 2.5: Logistinen regressio tulkittuna perseptroniverkoksi. Ulostulokerroksen arvot lasketaan parametrivektorin θ avulla, joka analoginen perseptroniverkon painokerroinvektorin w kanssa. Tuloksena saadaan havainnon x posterior luokkajakauma. seksi neuroverkoksi tulkittuna. Ainoa käytännön ero menetelmien välille syntyy siitä miten luokittimien parametrit (θ ja w) on optimoitu: logistisessa regressiossa maksimoimalla log-uskottavuusfunktio (2.5) Newton-Raphson -algoritmilla ja MLP:ssä minimoimalla keskimääräinen neliövirhe -funktio (2.9) backpropagation-algoritmilla. Lisäksi log-uskottavuusfunktion maksimointi voidaan varsin helposti tulkita neliövirheen minimoinniksi (ja päinvastoin), jos oletetaan että opetusnäytteiden mittauksessa tullut virhe on ainoastaan nolla-keskiarvoista, normaalijakautunutta kohinaa [8]. Näin ollen ainoa lineaarista regressiota ja 2-kerroksista (sisään- ja ulostulokerros) multilayer perceptronia erottava tekijä on opetusalgoritmi.

14 3. AINEISTO JA SEN LUOKITTELU 3.1 Aineisto 1: MNIST MNIST [7] on 70000 käsinkirjoitetusta numeromerkistä ja niiden luokkatiedoista koottuu tietokanta, jota on yleisesti käytetty koneoppimisen menetelmien testauksessa. Kuvien koko on 28 28 pikseliä. Tietokannasta 60000 merkkiä kuuluu opetusjoukkoon ja loput 10000 testijoukkoon. MNIST:in etuna vastaaviin tietokantoihin on se, että kuvat on valmiiksi esiprosessoitu helpottamaan tunnistusta. Merkkien kirjoittajina on ollut Yhdysvaltain väestönlaskentaviraston työntekijöitä ja lukioiden oppilaita, ja opetus- ja testijoukoissa kirjoittajien suhde on suurinpiirtein sama. MNIST:in sivuilla on listattu suuri määrä luokittimia ja niiden saavuttamat testivirheprosentit; kirjoittamisen hetkellä paras luokitin on 35 konvoluutioneuroverkosta koostuva luokitin, jonka tulos on 0.23%. Luokittimen tekijät väittävät, että luokitusvirhe on hyvin lähellä ihmisen saavuttamaa luokitusvirhettä, joka on noin 0.2% [3]. Erityistä tässä toteutuksessa verrattuna aiempiin on myös se, että opetus tehtiin GPU:n (näytönohjaimen) avulla. Kuva 3.1: Ote MNIST -tietokannasta. 3.2 Aineisto 2: Rekisterikilpidata Toinen aineisto on kuvattu rekisterikilvistä, ja on luokkien määrältään laajempi kuin MNIST, sillä mukana on myös kapitaaliaakkoset. Ainoa esiprosessointi joka

3. Aineisto ja sen luokittelu 15 oli sisällytetty dataan oli merkkien ja numeroiden erottaminen toisistaan erillisiksi kuviksi. Tietokannan koko on noin 16000 kuvaa, ja tämä jaettiin opetusjoukkoon, jonka koko on 14000 kuvaa ja loput testijoukkoon. Koska kuvien koot vaihtelivat 5 19 pikselistä 32 32 pikseliin, kaikkien kuvien koot normalisoitiin kokoon 16 16. Suurimmat kuvat yksinkertaisesti pienennettiin, pienempiä laajennettiin lisäämällä sivuille nollia. Kuva 3.2: Ote rekisterikilpidatasta. 3.3 Luokittimien toteutus ja käyttö Logistisen regression toteutukseksi valittiin Glmnet [11], joka on kokoelma tehokkaita algoritmeja lineaariseen regressioanalyysiin. Glmnetissä parametrivektori sovitetaan opetusjoukkoon suurimman log-todennäköisyyden menetelmällä (aliluku 2.1), mutta mukaan otetaan myös regularisaatioparametri λ, jolla pienennetään sovitetun mallin varianssia. Muokattu minimoitava kustannusfunktio on siis E(θ) = l(θ) + λe p (θ) (3.1) missä l on log-uskottavuus ja E p on sakkofunktio, joka on suoraan verrannollinen parametrivektorin 1- ja 2-normiin: E p (θ) = 1 α θ 2 2 + α θ 1 (3.2) 2 missä α on sisäinen parametri. Regularisaatioparametrin λ arvolla 0 suoritetaan pelkästään log-uskottavuuden maksimointi, mutta tällöin ylioppimisen riski on suurin. Glmnetin käyttö on suoraviivaista Matlab-ympäristössä. Oletetaan, että muuttujassa train_x on N havaintovektoria, joiden pituus on M, eli kyseessä on N M

3. Aineisto ja sen luokittelu 16 -matriisi (jokainen kuva vaakavektorina); ja train_y on N K -vastematriisi (jokaisen kuvan luokka koodattuna vaakavektorina). Sovite näiden välille saadaan komennolla 1 f i t = glmnet ( train_x, train_y, multinomial ) ; Huomaa, että regularisaatioparametrin arvoa ei annettu funktiolle, vaan Glmnet konvergoi λ:n arvon optimiksi. Kun sovite opetusjoukolle on laskettu, voidaan testijoukon kuvat (test_x) luokitella komennolla 1 pred = glmnetpredict ( f i t, test_x, [ ], c l a s s ) ; Tämä funktio palauttaa luokittelutulokset jokaista λ:n konvergointijonon arvoa kohti, mutta viimeinen λ:n arvo on se, jonka glmnet on laskenut ristiinvalidoimalla parhaaksi. Sitä vastaava luokitus saadaan komennolla 1 pred2 = pred ( :, end ) ; DeepLearnToolbox 1 [12] on Matlab-kirjasto, joka toteuttaa joukon deep learning - luokittimia, mukaanlukien konvoluutioneuroverkon. Se tarjoaa myös tavallisen MLPverkon, koska käytännössä suurin osa deep learning -luokittimista perustuu siihen. Sekä MLP että konvoluutioneuroverkko otettiin tästä kirjastosta. DeepLearnToolboxin käyttö on myös varsin suoraviivaista. Seuraavaksi esimerkki MNIST-datan luokittelusta MLP:llä. 1 nn = nnsetup ( [ 7 8 4 100 1 0 ] ) ; 2 nn. weightpenaltyl2 = 1e 4; 3 opts. numepochs = 100; 4 opts. b a t c h s i z e = 100; 5 nn = nntrain ( nn, train_x, train_y, opts ) ; 6 er = n ntest ( nn, test_x, test_y ) ; Rivillä 1 asetetaan kerrosten koot: kerros 1 eli sisääntulokerros sisältää 784 neuronia, koska kuvien koko on 28 28 pikseliä. Ensimmäinen ja ainoa piilokerros sisältää 100 neuronia ja ulostulokerros sisältää 10 neuronia, koska mahdollisia numeromerkkejä on 10 erilaista. Ensimmäisen ja viimeisen kerroksen koot siis määräytyvät suoraan datasta, kun taas piilokerrosten koko on täysin käyttäjän määrittelyvallassa. Tässä tapauksessa piilokerroksen koko 100:n alueella näytti tuottavan parhaan 1 saatavissa https://github.com/rasmusbergpalm/deeplearntoolbox

3. Aineisto ja sen luokittelu 17 testituloksen. Toisella rivillä asetetaan parametri joka heikentää piilokerrosten painokertoimien suuruutta ja toimii näin regularisaattorina, mahdollisesti laskien testivirhettä. Kolmannella ja neljännellä rivillä määritetään epookkimäärä ja kuinka monta opetusnäytettä ajetaan verkon läpi ennenkuin painokertoimia päivitetään. Epookki on yksittäinen opetusjoukon näyttökerta verkolle opetuksen aikana. Suurempi epookkimäärä pienentää opetusvirhettä, mutta liian pitkälle vietynä aiheuttaa ylioppimista, mikä nostaa testivirhettä. Rivillä 5 ajetaan backpropagation -algoritmi ja rivillä 6 lasketaan testivirhe. Konvoluutioneuroverkon käyttö aloitetaan määrittämällä kerrosten määrät ja tyypit, sekä konvoluutiokerneleiden koot. 1 cnn. l a y e r s = { 2 s t r u c t ( type, i ) 3 s t r u c t ( type, c, outputmaps, 12, k e r n e l s i z e, 7) 4 s t r u c t ( type, s, s c a l e, 1) 5 s t r u c t ( type, c, outputmaps, 24, k e r n e l s i z e, 7) 6 s t r u c t ( type, s, s c a l e, 2) 7 } ; Rivi 2 luo sisääntulokerroksen (= ei funktiota), rivi 3 konvoluutiokerroksen jossa on 12 feature mappia ja jokaisen konvoluutiokernelin koko on 7 7. Rivi 4 luo alinäytteistyskerroksen jonka ikkunan koko on 1 1, eli se ei käytännössä tee mitään. Rivit 5 ja 6 luovat konvoluutio- ja alinäytteistyskerroksen vastaavasti. Koko ylläoleva koodi määrittää siis kolmikerroksisen konvoluutioneuroverkon. Rivin 4 olemassaolo johtuu DeepLearnToolboxin toteustusteknisistä syistä. Alustuksen jälkeen käyttö on hyvin samanlaista kuin MLP: 1 opts. b a t c h s i z e = 5 0 ; 2 opts. numepochs = 100; 3 cnn = cnnsetup ( cnn, kuvat1, c l a s s 1 ) ; 4 cnn = c n n t r a i n ( cnn, kuvat1, c l a s s 1, opts ) ; 5 er = c n n t e s t ( cnn, kuvat2, c l a s s 2 ) ;

18 4. TULOKSET JA NIIDEN TARKASTELU Testivirheprosentit molemmille luokitettaville aineistoille on esitetty taulukossa 4.1. Tuloksista voidaan nähdä, että konvoluutioneuroverkko on kuvien luokittelussa testatuista menetelmistä paras. Ainoa kielteinen puoli, joka on syytä ottaa huomioon, on pitkä opetukseen kuluva aika. Taulukko 4.1: Kahden tietokannan testivirheprosentit eri luokittimille. LR = logistinen regressio. MLP(S1,S2,S3) = monikerroksinen perseptroniverkko, jonka sisääntulo-, piilo-, ja ulostulokerrosten koot ovat S1, S2 ja S3 vastaavasti. CNN(M1,M2;K) = konvoluutioneuroverkko, jonka ensimmäisessä konvoluutiokerroksessa on M1 feature mappia ja seuraavassa M2, ja konvoluutiokernelin koko on K K. Luokitin MNIST huom. LR 8.04 % opetusaika = 76 min MLP(784,100,10), 100 epookkia 4.58 % MLP(784,100,10), 200 epookkia 2.66 % L2 weight decay MLP(784,10), 100 epookkia 8.38 % MLP(784,400,100,10), 100 epookkia 2.93 % L2 weight decay CNN(12,24;5), 100 epookkia 1.17 % opetusaika = 3 h REKISTERIKILPI LR 2.73 % opetusaika = 5 min MLP(256,34), 500 epookkia 35.2 % opetusaika = 1 min MLP(256,34), 500 epookkia 2.2 % softmax-ulostulo MLP(256,50,34), 500 epookkia 8.67 % opetusaika = 2 min MLP(256,50,34), 500 epookkia 3.27 % softmax-ulostulo MLP(256, 75, 50, 34), 500 epookkia 46.7 % opetusaika = 3 min CNN(20,50;7), 100 epookkia 1.73 % opetusaika = 3 h 40 min MNIST:n luokittelussa konvoluutioneuroverkko oli selkeästi paras; luokitusvirhe oli alle puolet seuraavaksi parhaasta. Käytetyn nelikerroksisen konvoluutioneuroverkon rakenne oli seuraava: konvoluutiokerros jossa 12 feature mappia, alinäytteistyskerros jossa feature mappien koko puolitettiin keskiarvottamalla, 24 feature mapin konvoluutiokerros ja toinen alinäytteistyskerros. Konvoluutiokerneleiden koko oli 5 5 kummassakin kerroksessa. Ajamalla opetus 100 epookin ajan saatiin 1.17% tunnistusvirhe testijoukolle. Lisäämällä epookkien määrää esimerkiksi 300:aan olisi tunnistusvirhe mahdollisesti saatu alle 1%, mutta opetusaika olisi lisääntynyt samassa suhteessa, eikä mahdollisimman pientä testivirhettä pidetty oleellisena tämän työn puitteissa.

4. Tulokset ja niiden tarkastelu 19 Toiseksi parhaaksi menetelmäksi saatiin kolmikerroksinen perseptroniverkko, jonka kerrosten koot selvitettiin käytännön testeillä. Tuloksista ilmenee, että sekä kaksiettä nelikerroksinen MLP suoriutuu heikommin kuin kolmikerroksinen, joten kerrosten määrää lisäämällä ei voida saavuttaa CNN:n tasoista tulosta. Weight decay - parametri, joka heikentää piilokerrosten painokertoimia opetuksen edetessä, melkein puolittaa testivirheen verrattuna tilanteeseen, jossa se ei ole käytössä. Rivin 2 testivirhe 4.58% on siis mitä ilmeisimmin suurimmaksi osaksi ylioppimisen tulosta, jota weight decay yrittää estää. MLP-verkoilla testivirheen ero 100 ja 200 epookin välillä oli marginaalinen, ja testivirhe 1000 epookilla oli itseasiassa hiukan suurempi kuin 200 epookilla. Rekisterikilpimerkkien luokittelussa konvoluutioneuroverkko oli myös paras, mutta ero toiseksi parhaaseen oli pienempi. Erityisesti optimaalisen konvoluutioneuroverkon rakenteen selvittäminen oli haastavaa, mutta ratkaisu johon päädyttiin on luultavasti lähellä sitä. Kyseessä oli kolmikerroksinen CNN, jossa ensimmäisessä konvoluutiokerroksessa oli 20 ja toisessa 50 feature mappia. Toisen konvoluutiokerroksen perässä oli alinäytteistyskerros, joka puolitti jokaisen feature mapin koon. Rekisterikilpidata on selkeästi varsin pitkälle lineaarisesti erottuva, mikä voidaan päätellä logistisen regression saavuttamasta pienestä luokitusvirheestä, 2.73 %. Käytettäessä luokitukseen kaksikerroksista MLP-verkkoa ja ulostulona softmax-funktiota, joka on identtinen logistisen regression posterior-todennäköisyyskaavan 2.1 kanssa, saadaan vielä pienempi testivirhe, 2.2 %. Syy siihen, miksi MLP:n testivirhe on pienempi kuin logistisen regression, on epäselvä, mutta johtuu todennäköisesti MLP:n ja LR:n opetusalgoritmien eroista ja lopetusehdoista. Myös MLP:n testivirheiden suuri ero softmax- ja logistisen-ulostulon välillä, 2.2 % ja 35.2 %, on mielenkiintoista. Syytä tähän ei kuitenkaan ryhdytty systemaattisesti selvittämään. Konvoluutioneuroverkon ulostulovektori merkille J on esitetty kuvassa 4.1 ja merkille B kuvassa 4.2. Sisääntulon J tapauksessa luokitin epäilee luokaksi myös 1:stä, mutta luokan J varmuus on suurempi ja luokitus menee oikein. Kuvan 4.2 B-merkkiä luokitin ei osaa erottaa merkistä 8 ja niinpä luokitus menee väärin. Huomioitavaa on, että suurin osa B-merkeistä tunnistui oikein, virheet olivat vain yksittäistapauksia.

4. Tulokset ja niiden tarkastelu 20 Kuva 4.1: Esimerkki oikein luokitellusta kuvasta. Kuva 4.2: Esimerkki väärin luokitellusta kuvasta.

21 5. JOHTOPÄÄTÖKSET Tämän kandidaatintyön motivaationa oli selvittää, ovatko konvoluutioneuroverkot parempia visuaalisessa luokittelussa kuin yksinkertaisemmat mutta silti monta kertaa tehokkaaksi todistetut luokitusmenetelmät. Työn tulokset tukevat tätä väitettä, vaikka erot konvoluutioneuroverkkojen ja muiden luokitusmenetelmien välillä ovatkin verrattain pienet. Tämä on suoraa seurausta siitä, että käytetyt aineistot ovat luokitusvaikeudeltaan varsin yksinkertaisia. Kumpikin aineisto koostuu fyysisesti pienistä harmaasävykuvista, jotka esittävät yksikäsitteisesti vain yhtä objektia. Tästä syystä myös yksinkertaisemmilla menetelmillä luokittelu on realistista. Kun siirrytään suurempiin värikuviin, jotka esittävät numeroita ja kirjaimia monimutkaisempia objekteja, konvoluutioneuroverkkojen erityiset etuudet nousevat esiin, kuten ImageNet -tietokannan luokittelussa [4] on havaittu. Tälläisten aineistojen luokittelu luotettavasti muilla kuin raskaan sarjan deep learning -menetelmillä on erittäin epätodennäköistä. Konvoluutioneuroverkkoihin liittyvä asia, joka nousee tuloksista esiin, on huomattavasti pidempi opetusaika. Konvoluutioneuroverkkojen opetuksen käyttämä laskutoimitusten määrä on erittäin suuri, mutta hyvä puoli niissä, kuten muissakin neuroverkoissa, on koodin laaja rinnakkaistettavuus. Ovathan neuroverkot mallinnettu biologisten neuroverkkojen mukaan, joissa jokainen neuroni toimii toisistaan itsenäisenä laskentayksikkönä. Moniytimisen keskusprosessorin käyttö neuroverkkojen opetuksessa ei kuitenkaan ole optimaalista, sillä ytimiä on nykyisissä prosessoreissa liian vähän. Niitä olisi hyvä olla vähintään satoja, mielellään sama määrä kuin neuroverkossa on neuroneita. Tälläinen laskentayksikkö kuitenkin jo löytyy suuresta osasta pöytäkoneita ja tehokkaimmista kannettavista: näytönohjain (GPU, engl. graphics processing unit). Koska modernit GPU:t koostuvat suuresta määrästä rinnakkaisprosessoreita, ne soveltuvat erinomaisesti käytettäväksi neuroverkkojen kanssa. Aiemmin mainitut MNIST:n ja ImageNetin luokittimet [3; 4] toteutettiin juuri GPU-koodilla. Näiden tutkimusten innoittamana näytönohjainten käyttö koneoppimisessa ja muussa rinnaikkaislaskennassa tulee varmasti lisääntymään. Tulee mielenkiintoiseksi seurata, kehittyvätkö GPU:t ajan myötä rautapohjaisiksi neuroverkoiksi. Laskentakapasiteetin dramaattiselle lisäykselle tulee joka tapauksessa olemaan tarvetta, jos hahmontunnistimet halutaan saada toimimaan reaaliajassa oikeassa maailmassa ja samalla tehokkuudella kuin biologiset vastineet.

22 LÄHTEET [1] Balabin, Roman M. ja Ekaterina I. Lomakina: Neural network approach to quantum-chemistry data: Accurate prediction of density functional theory energies. J. Chem. Phys., 131, 2009. [2] Bottaci, Leonardo: Artificial Neural Networks Applied to Outcome Prediction of Colorectal Cancer Patients in Separate Institutions. The Lancet, 350:469 472, 1997. [3] Ciresan, Dan, Ueli Meier ja Jürgen Schmidhuber: Multi-column Deep Neural Networks for Image Classification. 2011. [4] Krizhevsky, Alex, Ilya Sutskever ja Goeffrey E. Hinton: ImageNet Classification with Deep Convolutional Neural Networks. 2012. [5] LeCun, Y., L. D. Jackel, L. Bottou, A. Brunot, C. Cortes, J. S. Denker, H. Drucker, I. Guyon, U. A. Muller, E. Sackinger, P. Simard ja V. Vapnik: Comparison of learning algorithms for handwritten digit recognition. International Conference on Artificial Neural Networks, sivut 53 60, 1995. [6] Bengio, Yoshua: Learning Deep Architectures for AI. Foundations and Trends in Machine Learning, 2:1 127, 2009. [7] LeCun, Yann, Corinna Cortes ja Christopher J.C. Burges: MNIST handwritten digit database. Internet. http://yann.lecun.com/exdb/mnist/, vierailtu 20.2.2014. [8] Hastie, Trevor, Robert Tibshirani ja Jerome Friedman: The Elements of Statistical Learning. Springer, 2. painos, 2009. ISBN: 0387848576. [9] Behnke, Sven: Hierarchical Neural Networks for Image Interpretation. väitöskirja, Freie Universität Berlin, 2003. ISBN: 3-540-40722-7. [10] LeCun, Y., B. Boser, J. S. Denker, D. Henderson, R. E. Howard, R. Hubbard ja L. D. Jackel: Handwritten digit recognition with a back-propagation network. Advances in Neural Information Processing Systems 2, 1990. [11] Qian, J., T. Hastie, J. Friedman, R. Tibshirani ja N. Simon: Glmnet for Matlab. Internet, 2013. http://www.stanford.edu/~hastie/glmnet_matlab/, vierailtu 30.3.2014. [12] Palm, Rasmus Berg: Prediction as a candidate for learning deep hierarchical models of data. Pro Gradu -työ, Technical University of Denmark, 2012.