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

Samankaltaiset tiedostot
Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun

Johdatus tekoälyn taustalla olevaan matematiikkaan

Johdatus tekoälyn taustalla olevaan matematiikkaan

Johdatus tekoälyn taustalla olevaan matematiikkaan

ImageRecognition toteutus

Johdatus tekoälymatematiikkaan (kurssilla Johdatus Watson-tekn

Kognitiivinen mallintaminen Neuraalimallinnus, luento 1

JOHDATUS TEKOÄLYYN TEEMU ROOS

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

Kognitiivinen mallintaminen. Nelli Salminen

JOHDATUS TEKOÄLYYN TEEMU ROOS

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

JOHDATUS TEKOÄLYYN TEEMU ROOS

Johannes Lehmusvaara Konvoluutioneuroverkot kirjain- ja numeromerkkien tunnistuksessa. Kandidaatintyö

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

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

1. NEUROVERKKOMENETELMÄT

Harha mallin arvioinnissa

MS-C1340 Lineaarialgebra ja

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

Sovellettu todennäköisyyslaskenta B

Viikko 2: Ensimmäiset ennustajat Matti Kääriäinen

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Tee-se-itse -tekoäly

Harjoitus 7: NCSS - Tilastollinen analyysi

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

1. NEUROVERKKOMENETELMÄT

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Osa 2: Otokset, otosjakaumat ja estimointi

MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

JOHDATUS TEKOÄLYYN TEEMU ROOS

Osakesalkun optimointi

Tilastollinen aineisto Luottamusväli

JOHDATUS TEKOÄLYYN TEEMU ROOS

Johdatus tekoälyn taustalla olevaan matematiikkaan

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

T Luonnollisten kielten tilastollinen käsittely

Tässä luvussa käsitellään optimaalisten piirteiden valintaa, luokittelijan optimointia ja luokittelijan suorituskyvyn arviointia.

pitkittäisaineistoissa

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.

Jatkuvat satunnaismuuttujat

HY, MTL / Matemaattisten tieteiden kandiohjelma Todennäköisyyslaskenta IIb, syksy 2017 Harjoitus 1 Ratkaisuehdotuksia

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

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat.

Optimaalisuusehdot. Yleinen minimointitehtävä (NLP): min f(x) kun g i (x) 0 h j (x) = 0

Kimppu-suodatus-menetelmä

Tekoäly ja koneoppiminen metsävaratiedon apuna

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

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

Tilastotieteen kertaus. Vilkkumaa / Kuusinen 1

Avainsanojen poimiminen Eeva Ahonen

Sovellettu todennäköisyyslaskenta B

805306A Johdatus monimuuttujamenetelmiin, 5 op

Matematiikan tukikurssi

BM20A5840 Usean muuttujan funktiot ja sarjat Harjoitus 7, Kevät 2018

Diskriminanttianalyysi I

Lauri Sintonen KEINOTEKOISTEN NEUROVERKKOJEN HYÖDYNTÄMINEN AUTOMAATTISESSA LINTUJEN TUNNISTAMISESSA ÄÄNEN PERUSTEELLA

MS-A0503 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Parametrin estimointi ja bootstrap-otanta

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

2 Osittaisderivaattojen sovelluksia

1 Komparatiivinen statiikka ja implisiittifunktiolause

Näihin harjoitustehtäviin liittyvä teoria löytyy Adamsista: Ad6, Ad5, 4: 12.8, ; Ad3: 13.8,

Mat Sovellettu todennäköisyyslasku A

pitkittäisaineistoissa

Tilastollinen testaus. Vilkkumaa / Kuusinen 1

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

Backpropagation-algoritmi

3.6 Su-estimaattorien asymptotiikka

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

Numeeriset menetelmät

FoA5 Tilastollisen analyysin perusteet puheentutkimuksessa. 6. luento. Pertti Palo

Johdatus tekoälyn taustalla olevaan matematiikkaan

¼ ¼ joten tulokset ovat muuttuneet ja nimenomaan huontontuneet eivätkä tulleet paremmiksi.

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

30A02000 Tilastotieteen perusteet

Kokonaislukuoptimointi hissiryhmän ohjauksessa

Takaisinkytkeytyvät neuroverkot. 1 Johdanto. Toni Helenius. Tiivistelmä

Numeeriset menetelmät

Väliestimointi (jatkoa) Heliövaara 1

2D piirrelaskennan alkeet, osa I

Kombinatorinen optimointi

T DATASTA TIETOON

Luku 8. Aluekyselyt. 8.1 Summataulukko

Kuinka paljon dataa on tarpeeksi?

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

805324A (805679S) Aikasarja-analyysi Harjoitus 4 (2016)

ELEKTRONIIKAN JA TIETOLIIKENNETEKNIIKAN TUTKINTO-OHJELMA

Esimerkkejä vaativuusluokista

Tekoäly muuttaa arvoketjuja

Lisätehtäviä ratkaisuineen luentomonisteen lukuun 6 liittyen., jos otoskeskiarvo on suurempi kuin 13,96. Mikä on testissä käytetty α:n arvo?

Algoritmit 2. Luento 13 Ti Timo Männikkö

Etsintä verkosta (Searching from the Web) T Datasta tietoon Heikki Mannila, Jouni Seppänen

MS-A0502 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Transkriptio:

Roni Ahola Esiopetetun konvoluutioneuroverkon käyttö kuvantunnistuksessa Kandidaatintyö Tarkastaja: Heikki Huttunen 28.4.2017

I TIIVISTELMÄ Roni Ahola: Esiopetetun konvoluutioneuroverkon käyttö kuvantunnistuksessa Tampereen Teknillinen Yliopisto Kandidaatintyö, 21 sivua Huhtikuu 2017 Pääaine: Signaalinkäsittely tarkastaja: Yliopistonlehtori Heikki Huttunen Avainsanat: Neuroverkko, konvoluutioneuroverkko, esiopetus, hahmontunnistus, luokittelu, konenäkö, syväoppiminen Tässä kandidaatintyössä tutkitaan kuvan luokittelemiseen tarkoitettua syvää konvoluutioneuroverkkoa. Konvoluutioneuroverkot ovat erityisen hyviä piirteidenirrottimia kuville ja niiden esiopetuksen ansioista niitä voidaan hyödyntää hyvinkin vaivattomasti. Työssä verrataan esiopetetun konvoluutioneuroverkon eri syvyyksien kykyä luokitella kuva niiden tarkkuuden mukaan. Tuloksista selviää, että esiopetettu konvoluutioneuroverkko on erinomainen piirteenirroittaja ja sen käyttö kuvien luokittelemiseen on kannattavaa. Tulosten mukaan esiopetetun neuroverkon optimaalisin käyttö ei kuitenkaan välttämättä ole suoraan viimeisen kerroken kautta, vaan jotenkin eri kerroksia yhdistelemällä.

II SISÄLLYS 1. Johdanto.................................... 1 2. Teoria...................................... 3 2.1 Neuroverkon rakenne........................... 3 2.1.1 Tiheä kerros............................. 3 2.1.2 Konvoluutiokerros.......................... 5 2.1.3 Aktivointikerros........................... 7 2.2 Neuroverkon opetus............................ 9 2.2.1 Neuronien optimointi........................ 9 2.2.2 Verkon yleistys............................ 12 3. Neuroverkon käyttö kuvanluokitteluun.................... 14 3.1 Aineistot.................................. 14 3.2 Malli.................................... 16 3.3 Tulokset.................................. 18 4. Johtopäätökset................................. 21 Lähteet....................................... 22 LIITE A. Tarkkuudet ja opetusajat........................ 24

III LYHENTEET JA MERKINNÄT CIFAR-10 VGG x y W b φ (engl.: Canadian Institute for Advanced Research) Pienistä RGBkuvista muodostuva 60000 kuvan tietokanta Oxfordin yliopiston tutkijaryhmä Visual Geometry Group Sisääntulovektori Ulostuloskalaari Painomatriisi Neuronin tai kernelin bias-arvo Aktivaatiofunktio

1 1. JOHDANTO Koneoppiminen on viime vuosina noussut kiinnostuksen kohteeksi etenkin konenäön osalta. Konenäön ajatuksena on saada koneet ymmärtämään kuvista asioita, jotka eivät perinteisesti ole olleet itsestäänselviä muotoja tietokoneelle. Viime vuosien pöhinä on keskittynyt hahmontunnistuksen alueelle, jossa kuvista pyritään tunnistamaan tiettyjä yksityiskohtia tai hahmoja. Kyky tähän on ollut aiemmin heikko, mutta viime vuosien kehitys neuroverkkojen alueella on herättänyt suurta huomiota. Suurimman tämänhetkisen innostuksen aloitti vuoden 2012 Krizhevsky et al. julkaisu AlexNet[4], jonka syvä konvoluutioneuroverkko voitti ILSVRC 2012 (ImageNet Large Scale Visual Recognition Competition) kilpailun osa-alueita selvillä huipputuloksilla. Tehokkaimmasta tunnetusta hahmontunnistajasta eli ihmisestä inspiraatiota haettu syvä konvoluutioneuroverkkomalli onkin erinomainen konenäön alalla [2, s. 364], joten niiden tutkiminen kasvavassa konenäön maailmassa tuntuu tärkeältä. Syviin konvoluutioneuroverkkoihin perustuvat laskennalliset mallit ovat tietokoneellekin oivallisia hyvän muistinkäytön, laskennallisen tehokkuuden sekä kehittyneen rinnakkaistamisen ansiosta. Tässä kandidaatintyössä vertaillaan konvoluutioneuroverkon syvyyttä sen kykyyn luokitella kuva oikeaan luokkaan. Turhan syvä neuroverkko voi löytää kuvista yksityiskohtia tai yhteyksiä, jotka eivät enää auta kuvan luokittelemiseen. Liian pieni verkko taas voi johtaa ongelmaan, jossa etsittäviä yksityiskohtia ei löytynyt tai piirteiden määrä on liian suuri. Oikean syvyyden löytäminen on tarkkuuden ja laskennallisen ajan tasapainon tutkimista, ja sopivan syvyyden selvittäminen ei välttämättä ole ratkaistavissa. Työssä käytetään valmiiksi opetettua syvää konvoluutioneuroverkkoa VGG16 [1], johon liitetään luokittelua varten muutama kerros perinteisiä tiheitä neuronikerroksia. Tämä kokonaisrakenne on kuvan luokitteluun suunniteltu syvä neuroverkko, jonka syvyyttä säädetään konvoluutioneuroverkon kerrosten lukumäärää vaihtelemalla. Verkon syvyyden vaikutusta lopputulokseen tutkitaan sen kyvyllä luokitella kuvia kahdesta eri kuva-aineistosta. VGG16 sekä siitä vielä hieman syvempi versio VGG19 jotka tunnetaan myös nimellä VGG-net ovat Oxfordin yliopiston kuvantunnistukseen liittyvän tutkimusryhmän VGG (Visual Geometry Group) julkaisemia esiopetettuja syviä konvoluutioneuro-

1. Johdanto 2 verkkoja [1]. VGG-net on yksi tunnetuimpia konvoluutioneuroverkko julkaisuja viime vuosilta ja se voitti vuoden 2014 ILSVRC-kilpailun lokalisaatio osakilpailun ja tuli toiseksi kuvanluokittelussa. Verkkoja on esiopetettu 1000 eri luokalla 224x224 kokoisisilla RGB-kuvilla ja esiopetetut painot pystytään siirtämään suoraan omaan malliin, joka voi nyt ilman yhtään opetusta irroittaa samat piirteet kuvista kuin VGG-net. Esiopetetun verkon käyttö voi olla laskennallisen ajan säästön ansioista erittäin tavoiteltava asia jos sitä pystytään hyödyntämään. Seuraavassa kappaleessa käydään tarkemmin verkon rakenne läpi osa kerrallaan. Kappaleessa 3 esitellään aineistot, käydään malli tarkemmin läpi ja lopuksi esitellään tulokset. Viimeiseksi kappaleessa 4 pohditaan tuloksia ja mietitään tutkimuksen merkitystä.

3 2. TEORIA Luvussa käydään läpi neuroverkon kerrokset sekä neuroverkon opetus. Työssä käytetyssä syvässä konvoluutioneuroverkossa on useita kerroksia ja niiden toiminta käydään läpi. Tämän jälkeen puhutaan siitä, miten kerrosten parametrejä saadaan opetettua eli muokattua haluttuun suuntaan. Lopuksi puhutaan myös yleisistä metodeista joita käytetään verkon rakentamisen sekä opetuksen yhteydessä. 2.1 Neuroverkon rakenne Universaalin approksimaatioteorian mukaan kolmikerroksinen tarpeeksi leveä tiheä neuroverkko voi approksimoida minkä tahansa funktion F : R n R m sisääntulon ja ulostulon välille epälineaarisen aktivaatiofunktion avulla [17]. Neuroverkko onkin rakenne, jonka tehtävänä on arvioida halutut funktiot tarpeellisella tarkkuudella ihmisen neuronien tapaan. Keinotekoisissa neuroverkoissa neuronit liitetään toisiinsa painollisina suunnattuina graafeina, jolloin näitä painoja muuttamalla pystytään muuttamaan verkon toimintaa. Yksinkertainen monikerroksinen neuroverkkomalli MLP (multilayer perceptron) muodostuu monesta kerroksesta perseptroneita. Jokaista perseptroni yksikköä voidaan mallintaa omana rakenteena, joka sisältää kaikkien sisään tulevien perseptroni-yhteyksien painot W, sekä perseptronin bias-arvon b. Jotta verkkoa voidaan pitää universaalina approksimoijana, tulee sen kuitenkin sisältää myös epälineaarisuutta jolloin yhtä yksikköä voidaan kutsua neuroniksi. Epälineaarisuuden ansioista jokaisen neuronin ulostulo on epälineaarinen kuvaus kahden arvon välillä, jolloin jokaisen neuronin sisääntulo kääntyy erilaiseksi ulostuloksi ja verkon kompleksisuus sekä kyky arvioida funktioita kasvaa merkittävästi. 2.1.1 Tiheä kerros Tiheä on yhteensuuntaan suunnattu graa, jossa jokainen aiemman kerroksen neuroni on yhteydessä jokaiseen seuraavan kerroksen neuroniin. Saman kerroksen neuronit eivät ole yhteydessä toisiinsa eikä aiempiin kerroksiin, jolloin tiheä kerros on

2.1. Neuroverkon rakenne 4 eteenpäin syöttävä (feedforward) neuroverkkorakenne. Yhdessä neuroverkon tiheässä kerroksessa on m kappaletta neuroneita, joihin jokaiseen yhdistyy kaikki kerrokseen tulevat arvot. Jos sisään tulevia arvoja on n kappaletta, on helppoa nähdä, että tiheän kerroksen parametrien määrä on n m + m, (2.1) missä viimeinen termi muodostuu neuronien bias-arvoista. Jokainen tiheän kerroksen neuroni vastaakin kuvausta vektorista skaalariksi, joka voidaan kuvata kaavalla y = φ(w x + b), (2.2) missä y on yhden neuronin ulostulo, x sisääntulovektori ja φ on yleensä neuroniin liitetty aktivointikerros. Jos aktivointikerroksen aktivointifunktio on epälineaarinen, neuroverkon kerros saavuttaa halutun epälineaarisuuden ja pystyy jo arvioimaan mitä tahansa funktiota tarpeeksi suurella neuronimäärällä. Tällaisen neuroverkon käyttö on kuitenkin laskennallisesti raskasta, sillä opetettavien parametrien määrä on huomattavan suuri, eikä kaikkien haluttujen funktioiden löytäminen ole välttämättä laskennallisesti mahdollista[2, s. 192], joten neuroverkon suunnittelussa kannattaa tutkia muita mahdollisuuksia. Kuva 2.1 Matemaattinen malli kolme neuronia sisältävästä tiheästä kerroksesta joiden aktivaatiofunktiona on hyperbolinen tangentti. Kerros voisi olla myös syvän neuroverkkorakenteen keskellä, jolloin sisääntulovektori x sisältäisi edellisen kerroksen ulostulojen arvoja.

2.1. Neuroverkon rakenne 5 2.1.2 Konvoluutiokerros Ihmisen näköjärjestelmästä motivaatiota saanut konvoluutioneuroverkko pyrkii tuomaan topologista tietoa sisääntulosta esille konvoluutio-operaation avulla. Konvoluutioneuroverkkoja voidaan pitää piirteiden irrottimina, milloin niiden ulostulosta saadaan selville sisääntulossa esiintyviä piirteitä. Konvoluution ja kerneleiden käyttö on ollut kuvanmuokkauksessa ja pienten piirteiden löytämisessä jo vuosikymmeniä tunnettu taito[15, s. 30], mutta vasta viime vuosina sen käyttö neuroverkoissa on yleistynyt. Jokainen konvoluutiokerneli pyrkii oppimaan jonkin ominaisuuden ja aktivoitumaan, kun sisääntulosta löytyy vastaava ominaisuus. Konvoluutiokerroksessa on yleensä 3 vaihetta: jokaisen konvoluutiokernelin lineaariset operaatiot, epälineaarisen aktivointifunktion käyttö sekä alinäytteistys (pooling). Konvoluutiokerneli on 2D tapauksessa m n kokoinen matriisi, jonka arvoja voidaan pitää neuroverkon painoina, eli opetettavina parametreina. Jokaisessa kerroksessa voi olla N kappaletta kerneleitä, jolloin konvoluutiokerroksen parametrien määrä on M (m n) N + b, (2.3) missä M on edellisen kerroksen kernelien määrä ja b on kernelin bias-arvo. Syvissä konvoluutioneuroverkoissa kernelin koon valitseminen on tärkeä hyperparametri. VGG-netissä jokaisen kernelin kooksi on valittu 3 3, jolloin laskettavan pisteen ympäriltä tulee 1 arvo jokaisesta suunnasta. Jokainen kerneli käy 2D tapauksessa jokaisen sisääntulon piirrekartan I arvon (i, j) läpi ja tuottaa ulos arvon g(i, j) = (I K)(i, j) = m I(i + m, j + n)k(m, n), (2.4) n missä K kuvaa m n kokoista kerneliä jolloin yhden pikselin kuvaus lasketaan kuvan 2.2 mukaan. Kaavan 2.4 todellinen nimi on korrelaatio, mutta koska kernelin painot opitaan eikä ne ole vakiot, sitä usein kutsutaan konvoluutioksi [2, s. 384]. Koska konvoluutiokernelin tulee saada arvoja koko ikkunan alueelta, ei sitä voi käyttää kuvan reunoissa missä ikkunan reunat olisivat kuvan ulkopuolella, minkä seurauksena sisääntulo pienenee jokaisen operaation jälkeen. Tästä syystä ennen jokaista konvoluutiota reunoille lisätään yleensä arvoja, jotka yleisesti asetetaan nollaksi (zero padding). Konvoluutiokerroksen tuloksena on siis N syvyinen, sisääntulosta sekä kaavasta 2.4 riippuva uusi joukko kuvia, joiden syvyyksiä kutsutaan piirrekartoiksi (feature map) ja niiden lukumäärää pidetään hyperparametrinä. Syvän konvoluutioneuroverkon viimeisen konvoluutiokerroksen piirrekartat ovat konvoluutiokerrosten ulostulo ja niiden arvot voidaan syöttää luokittelijalle arvoparametreinä.

2.1. Neuroverkon rakenne 6 Kuva 2.2 Yhden kernelin painomatriisilla W m,n saadaan muodostettua 1 piirrekartta. Koska samoja parametrejä käytetään koko kuvalle, on konvoluutiokerneli laskennallisen tehokkuuden ansioista hyvä työkalu topologisen 2D-datan ymmärtämiseen. Kerneli-ikkunaa ei voi liu'uttaa reunoille, joten nolla-reunustus vaaditaan jos leveys ja korkeus halutaan säilyttää samana. Alinäytteistys kerroksen tarkoituksena on vähentää herkkyyttä häiriölle sekä yleistää alueita sisääntulossa eli lisätä sisääntulon invarianssia ja kontrolloida parametrien määrää sekä ylioppimista [2, s. 330]. Eräs alinäytteistys operaatio on maxpooling, joka valitsee ikkunan muotoiselta alueelta pelkästään suurimman arvon, ja näin pienentää sisääntulon kokoa, mutta säilyttää alueelliset ominaisuudet. Muita alinäytteistys operaatioita ovat esimerkiksi keskiarvotus sekä L2-normi alinäytteistys, mutta max pooling on nykyisissä verkoissa suurimmassa suosiossa. Joidenkin tutkijoiden mielestä alinäytteistyksestä tulisi pyrkiä eroon sen informaatiohukan takia, ja tulevaisuudessa neuroverkkoarkkitehtuureissa sen tilalla voisi olla esimerkiksi konvoluutio isommalla askelkoolla [11]. Alinäytteistyksen, sopivan konvoluutiokernelin askelkoon (stride) sekä nolla lisäysten oikealla kontrolloinnilla voidaan konvoluutiokerneleiden avulla esittää sisääntulosta kuvioita, joita normaali kokonaan yhdistetty neuroverkko ei välttämättä ikinä oppisi näkemään. Samojen kerneleiden käyttäminen koko kuvalle, parametrien pieni määrä, laskennallinen tehokkuus sekä konvoluutiokerneleiden kyky yleistää antavat hyvän syyn käyttää konvoluutiokerroksia neuroverkoissa, joissa pyritään etsimään vaikeista topologisista rakenteista pieniä tai suuria yhtäläisyyksiä.

2.1. Neuroverkon rakenne 7 2.1.3 Aktivointikerros Lineaariset kuvaukset pystyvät kuvaamaan vain lineaarisia funktioita. Neuroverkkojen halutaan kuitenkin usein kuvaavan funktioita, joita ei lineaarisilla kuvauksilla pysty kuvaamaan, joten verkkoon tarvitaan epälineaarisuutta. Biologisissa neuroneissa epälineaarisuudesta vastaavat aktiopotentiaalit, jotka aktivoituvat sisääntulostimuluksen jännityseron ollessa tarpeeksi suuri. Epälineaarisuuden neuroverkon kerrokseen pystyy lisäämään aktivointifunktiolla φ, joista perinteisin neuroverkkojen tapauksissa on ollut hyperbolinen tangentti tanh(x) = ex e x, e x (2.5) + e x joka antaa ulostulolle kuvauksen väliltä [-1, 1]. Toinen hyperbolista tangenttia lähellä oleva aktivointifunktio on sigmoidi φ(x) = 1, (2.6) 1 + e x jonka ulostulo on välillä [0,1]. Sigmoidin ulostulo ei kuitenkaan ole keskitetty nollaan kuten hyperbolisessa tangentissa (kts. 2.3). Ulostulon keskittäminen nollaan on tärkeä ominaisuus syvillä neuroverkoilla, sillä kaikkien kerrosten arvojen keskiarvoja pyritään pitämään nollassa jotta informaation takaisinkulun aikana muutkin kerrokset pysyisivät nollassa, eivätkä kasvaisi positiiviseen tai negatiiviseen suuntaan. Sigmoidin sekä hyperbolisen tangentin suurimpana ongelmana [2, s. 189] voidaan kuitenkin pitää niiden ominaisuutta saturoida (kyllästää) niiden arvot. Hyperbolisen tangentin ja sigmoidin saturoituessa niiden häntäpäiden gradientit ovat lähes nollia, jolloin ne tappavat koko takaisinleviävän gradientin eikä signaalia kulje neuronien lävitse ja opetusta ei tapahdu. Koska nämä aktivointifunktiot ovat saturoituvia kaikkialla paitsi lähellä nollaa, on niistä pyritty pääsemään eroon neuroverkkojen aktivointifunktiona. Sigmoidia voidaan vielä käyttää neuroverkon ulostuloskerroksessa, sillä sen ulostulojen arvot eivät riipu toisistaan, mikä on joskus haluttu ominaisuus ulostulokerroksessa. Jos ulostulon arvot halutaan riippuvaisiksi toisistaan, esimerkiksi todennäköisyyksiä esitettäessä, voidaan käyttää softmax funktiota S(y i ) = ey i, (2.7) eyn n missä n on neuronien lukumäärä, y i on neuronin i todennäköisyys ja y i = 1. Jokaista neuronia voidaan nyt siis käyttää esittämään halutun ulostulon todennäköisyyttä. Luokittimen tapauksessa tällä ratkaisulla saadaan jokaiselle luokalle to-

2.1. Neuroverkon rakenne 8 dennäköisyys, milloin todennäköisimmän luokan esittäminen ulostulosta on suoraviivaista. Nykyisissä neuroverkoissa suositeltu[18] ramppifunktiota muistuttava aktivointifunktio φ(x) = max(0, x) (2.8) on nimeltään rektioija, ja sitä käyttäviä neuroneita kutsutaan nimellä ReLU (rectied linear unit). ReLUssa on paljon etuja jatkuva-aikaisiin epälineaarisiin aktivointifunktioihin syvien neuroverkkojen opetuksessa. Arvojen laskeminen on hyvin edullista, sillä ulostulo on suoraan nolla puolissa ulostuloavaruuden arvoista. Vaikka tämä saattaa tuntua epäluonnolliselta, tuo se kuitenkin verkkoon harvoja yhteyksiä (sparse connectivity), joita pidetään yhtenä neuroverkon tärkeimpinä ominaisuuksina [10]. ReLU nopeuttaa verkon opettamista yleisten opetusalgoritmien kanssa jopa kuusinkertaisesti [4], eikä gradienttien saturointia tapahdu, sillä ReLU kuvaa arvoja äärettömyyteen asti jos sille ei aseteta ylärajaa. ReLUn epäderivoituvuus nollassa ei ole yleensä tietokoneille ongelma, mutta sen käyttäytyminen alle nollassa voi johtaa ongelmiin. Suuren gradientin mennessä neuroverkon läpi ReLUn sisääntulojen painot voi päivittyä niin, ettei se aktivoidu enää lähes koskaan. Tätä kutsutaan katoavan gradientin ongelmaksi tai kuolevaksi ReLUksi. Eräs ratkaisu tälle on [5] esittelemä aktivointifunktio ELU (exponential linear unit) x x > 0 φ(x) = (2.9) α(exp(x) 1) x < 0, missä α on positiivinen reaaliluku. ELU saavuttaa suurimman osan ReLUn hyödyistä ja myös vie ReLUn ulostulon keskiarvoa lähemmäs nollaa.

2.2. Neuroverkon opetus 9 Kuva 2.3 Hyperbolinen tangentti, sigmoidi, ReLU ja ELU. Hyperbolisen tangentin ja sigmoidin gradientit ovat häntäpäissä lähes 0, mikä on huono ominaisuus gradienttiopetuksessa. Näistä vain hyperbolisen tangentin ulostulo on aidosti keskitetty nollaan, mutta ReLUsta paranneltu ELU pyrkii samaan. Sopivien aktivointikerrosten valitseminen on neuroverkon rakentamisen yhteydessä tärkeä valinta. Muita tunnettuja aktivointifunktioita ovat mm. RBF, Softplus eli pehmeä versio rektioinnista, hard tanh sekä Maxout yksikkö. Parhaan aktivointifunktion löytäminen on aktiivinen tutkimusalue, eikä joka verkolle soveltuvaa yleiskäyttöistä funktiota välttämättä ole edes olemassa. 2.2 Neuroverkon opetus Eteenpäin syöttävien neuroverkkojen opettamista voidaan pitää vaikeiden funktioiden approksimaatioiden optimointina. Neuroverkkojen nopea toiminta perustuu siihen, ettei kaikkea laskentaa tarvitse tehdä, jos approksimaatio on tarpeeksi lähellä todellisuutta. Verkon opettamista voidaankin pitää taiteluna sopivan arvion löytämisessä laskennalliseen aikaan suhteutettuna. Sopivia aktivointifunktioita, optimointifunktioita sekä muita keinoja, jotka muuttavat neuronien parametrejä oikeaan suuntaan, voidaan pitää neuroverkon opetuksesta vastaavina keinoina. Sopivien arkkitehtuuristen valintojen lisäksi voidaan verkon oppimista parantaa vielä valitsemalla sopivat yleistysalgoritmit jotka perustuvat pitkälti opetuksen sopivaan tahdittamiseen. 2.2.1 Neuronien optimointi Hyvä optimointi on oikeastaan ratkaisu etsintäongelmaan, jolla tarkoitetaan lopullisen määränpään saavuttamista virheen suunnan arvioinnilla. Apuna tähän ongelmaan käytetään virhettä arvioivaa virhefunktiota. Perinteinen valinta virhefunktiolle

2.2. Neuroverkon opetus 10 on ollut neliövirheen laskeminen, mutta on kuitenkin osoitettu, että suurimman uskottavuuden (maximum likelihood) menetelmä on osoittautunut syvien neuroverkkojen opetuksessa paremmaksi menetelmäksi useissa tapauksissa [6]. Suurimman uskottavuuden estimointi perustuu siihen, että pyritään maksimoimaan sitä ulostuloa, jonka verkko uskoo eniten olevan oikeassa. Suurimpaan uskottavuuteen sekä softmaxin logistiseen ulostuloon perustuva multinominen logistinen häviöfunktio (multinomial logistic loss) kuvaa ulostulovektorille y häviön N L = y j log (p j ), (2.10) j=1 missä p on logistisen funktion antama arvo ulostuloneuronille j, ja y vastaa oikean luokan todennäköisyyttä. Vaikka virhefunktio kontrolloi verkon oppimista oikeaan suuntaan, ei verkon onnistumista sillä yleensä arvioida. Suurimpaan uskottavuuteen perustuva häviöfunktio virhemetriikkana johtaa myös yleisesti käytetyn optimointimetriikan eli tarkkuuden kasvamiseen, mutta muilla optimointimetriikoilla eri häviöfunktio tuottaa parempia tuloksia. Optimointimetriikka on riippuvainen optivoitavasta ongelmasta ja häviöfunktio on vain matemaattinen johdattelu, jolla kyseinen optimointi ratkaistaan parhaalla mahdollisella tavalla. Häviöfunktion saatua jonkin arvon jollekin joukolle sisään tulleita arvoja, tulee verkon pystyä päivittämään parametrejaan oikeaan suuntaan. Tiedon häviöstä pitää siis pystyä liikkumaan takaisin verkossa, ja tähän käytetään takaisinlevitys- sekä gradientin lasku- algoritmeja. Ensimmäinen vastaa informaation kulusta takaisinpäin, kun taas toinen vastaa painojen oikeasta muokkaamisesta niin, että häviöfunktio pienenee aiemmin lasketulle ulostulolle. Takaisinlevitys käytännössä hoitaa dierentiaalilaskennan ketjusäännön df dx = df dg dg dx, (2.11) kun g = g(x) ja f = f(g(x)). Näin tieto häviöstä saadaan levitettyä verkon loppupäästä alkupäähän asti ketjutettuna. Sisääntulolle x laskettu häviö 2.10 päivitetään nyt kaikille painoille käyttäen gradientin laskua jokaiselle painolle kaavan 2.11 mukaan, jolloin yhden painon w muutos saadaan kaavaksi

2.2. Neuroverkon opetus 11 B 1 w t = w t 1 1 α t 1 B b=0 L(x b, w), (2.12) w missä α on oppimisnopeus ja B on opetusjoukon koko. Oppimisnopeus on hyperparametri, jonka valinta on tärkeää. Jos se on liian suuri, saattaa virhe supistumisen sijaan kasvaa väärään suuntaan. Liian pieni oppimisnopeus saattaa jäädä oppimisesteisiin ja oppiminen saattaa pysähtyä ennenaikaisesti [13]. Gradientin lasku voidaan laskea koko opetusjoukolle kerrallaan, mutta monet algoritmit suorittavat laskemisen vain pienelle osajoukolle kerrallaan, jolloin oppiminen nopeutuu huomattavasti. Tunnetuin näistä on SGD (stochastic gradient descent), missä B=1 ja jonka käyttöön suurin osa nykyisistä neuroverkoista perustuu. Oikean oppimisnopeuden käytöllä, sekä muutamalla oletuksella, osajoukkoa käyttävä SGD supistuu lähes aina globaaliin minimiin, ja muussa tapauksessa lähes täysin varmasti lokaaliin minimiin [7]. Osajoukkoa käyttävä SGD on myös laskennallisuuden tehokkuuden kannalta hyvä asia, sillä muistissa ei tarvitse pitää niin montaa arvoa kerrallaan. Joskus gradientin laskun yhteydessä kannattaa käyttää oppimisnopeutta heikentävää tekijää decay, sillä oppiminen on yleensä alussa suurempaa kuin lopussa. Gradientin laskun ongelmana on tietyissä tapauksissa syvien virheiden ylipääseminen lokaalien minimien lähistöllä, jolloin kiihtyvyyteen perustuva momentti voi auttaa oppimista. Nesterovin momentti NAG (Nesterov accelerated gradient) [14] on varsinkin osajoukolla laskettavan gradientin laskun yhteydessä paljon käytetty kiihtyvyyteen perustuva algoritmi. Siinä lasketaan kiihtyvyyden arvo v momenttihyperparametrin γ avulla kaavalla B 1 v t = γv t 1 1 + α t 1 B b=0 L(x b, w γv t 1 ), (2.13) w jolloin painon uudeksi arvoksi kaavan 2.12 sijaan saadaan w t = w t 1 v t. (2.14) Optimoinnin automatisointiin kehitettyjä algoritmeja jotka adaptoivat opetusnopeuden muutosta opetuksen aikana voidaan myös käyttää perinteisen gradientin laskun tilalta. Tunnetuimpia näistä ovat muun muuassa Adagrad, Adadelta, RMSprop ja Adam. Virheen optimoiminen on tärkeä tutkimusalue neuroverkkojen ja koneoppimisen kehityksen kannalta ja oikeiden optimointiratkaisujen löytäminen on ongelmakohtaista.

2.2. Neuroverkon opetus 12 2.2.2 Verkon yleistys Neuroverkkoa opettaessa on tärkeää yleistää opetus kaikelle aineistolle, mitä verkkoon tullaan syöttämään. Jos verkkoa opetetaan liikaa opetusainestolla, saattaa verkon painot ylioppia opetusaineiston ja epäonnistua yleistämään testi- sekä käyttövaiheessa. Tällaisissa tilanteissa pyritään joko optimoimaan verkon opettamista paremmaksi, tai parantamaan opetusdatan määrää ja laatua. Alkuperäinen opetusaineisto yleensä jaetaan kolmeen osaan: opetus-, validointi- ja testiaineisto. Opetusaineistolla verkkoa opetetaan, validointiaineistolla etsitään parhaat hyperparametrit verkolle ja kontrolloidaan opetuksen lopettaminen oikeaan ajankohtaan, ja lopuksi testiaineistolla arvioidaan verkon kyky yleistää opitut asiat samankaltaiselle aineistolle jota se ei ole ennen nähnyt. Verkon oppimista voidaan kontrolloida sopivilla hyperparametreillä, jolloin käytetään esimerkiksi ristiin validointia löytämään sopivat arvot kaikenlaisille sisääntuloille. Validointiaineistoa ei ikinä opeteta verkolle, vaan sen tarkkuutta käytetään optimaalisten hyperparametrien löytämiseen, joita sitten käytetään verkon lopulliseen opetukseen. Tämä on kuitenkin usein laskennallisesti hidasta, tai sopivien hyperparametrien löytäminen ei aina riitä verkon yleistämiseen. Tällöin verkossa käytetään usein regularisointia, jonka voi määritellä miksi tahansa keinoksi muokata opetusalgoritmia minkä tavoitteena on vähentää verkon yleistämisvirhettä, mutta ei sen opetusvirhettä [2, s. 117]. Regularisointia voi olla verkon opetuksen vaikeuttaminen, virhefunktion muuttaminen opetuksen aikana, satunnaisen häiriön lisäämistä opetusaineistoon tai mikä tahansa muu opettamista vaikeuttava tekijä. Satunnaisen häiriön lisääminen aineistoon (dataset augmentation) on osoittanut hyvää menestystä kuvantunnistuksessa [4]. Sama kuva pienellä variaatolla saattaa tuoda esiin yhteyksiä, joita alkuperäisessä kuvassa ei ollut, mutta jotka ovat kuitenkin merkityksellisiä kyseiselle kuvaluokalle. Kuvatietokannan kasvattamista voidaan tehdä mm. satunnaisella kuvan pikseliarvojen muutoksilla, kuvan kiertämisellä, kuvan zoomaamisella, kuvan siirtämisellä tai pääkomponenttianalyysiin perustuvalla kuvanmuokkauksella. Motivaatiota eri yleistyskeinojen käytölle tuo myös neuroverkkojen synnynnäinen epädeterministisyys. Painojen alkuarvot, optimointialgoritmin käyttäytyminen sekä mahdollisen keinotekoisen aineiston satunnaisuus saattavat kaikki aiheuttaa verkon oppimaan erilaiseksi jokaisella opetuskerralla. Satunnaisuuden poistamiseksi ja parempien tulosten saamiseksi verkkoja pyritään yleensä keskiarvoittamaan. Monen opetuskerran keskiarvottamista (model averaging) voidaan käyttää parempien tulosten saamiseksi, mutta laskennallisen ajan moninkertaistumisen takia yleensä

2.2. Neuroverkon opetus 13 pyritään ensisijaisesti parantamaan opetusalgoritmejä. Viime vuosina suosioon noussut keskiarvoittamiseen perustuva häipymä (Dropout) tekniikka [8] on noussut hyväksi tavaksi yleistää syviä neuroverkkoja. Tässä tekniikassa jokaiseen kerroksen neuroniin kohdistuu yksi parametri p, joka määrittää todennäköisyyden, jolla neuronin aktivointi muuttuu nollaksi. Tätä käytetään vain verkon opetusvaiheessa, jolloin verkko ei voi luottaa samoihin neuroneihin koko opetuksen ajan vaan joutuu yleistämään opetusaineiston koko verkolle. Verkon käyttövaiheessa häipymä katoaa. Joskus syvissä neuroverkoissa arvot eivät pysy keskiarvoisesti nollassa, jolloin niitä kannattaa uudelleenparametrisoida. Syvissä neuroverkoissa laskettaessa takaisinlevitystä gradientit saavat joskus suuria arvoja ja muokkaavat verkon kerroksia siten, että haluttu normaalijakauma katoaa. Tämä voi johtaa suuriin arvoihin verkon kerrosten välillä, joka vaikeuttaa opettamista. Tämän vuoksi verkon arvoja pyritään arvioimaan keskiarvon odotusarvolla ja varianssin odotusarvolla, joita voidaan kontrolloida Batch N ormalization [3] algoritmin avulla, joka korjaa sen läpi kulkevat arvot haluttuun normaalijakaumaan. Häipymää sekä erän normalisointia voidaan ajatella kerroksina, joita syvään neuroverkkoon voidaan lisätä verkon yleistämisen tavoittelemiseksi. Verkon yleistämisessä pyritään saavuttamaan arkkitehtuuri, jolla verkon kapasiteetti, oppimisnopeus sekä kyky yleistää ovat sopivassa tasapainossa. Kuva 2.4 Normalisointikerroksen vaikutus arvojakaumaan. Batch Normalization sisältää oppivia parametrejä, joilla se pyrkii muuttamaan arvot normaalijakautuneiksi nollan ympärille pienellä keskihajonnalla, jotta arvot olisivat helpompia käsitellä. Paras tapa kontrolloida oppimista on kuitenkin jättää se kokonaan tekemättä. Vaikka syvässä konvoluutioneuroverkkomallissa on parametrejä niin konvoluutiokerroksilla kuin tiheillä kerroksilla, ei niitä kaikkia tarvitse opettaa. Esiopetetun konvoluutioneuroverkon käytöllä voidaan jättää konvoluutiokerroksien opettaminen tekemättä, sillä niiden oletetaan jo osaavan haluttu piirteidenirrotus, jos alkuperäinen aineisto on ollut samankaltaista dataa. Jos konvoluutiokerros on neuroverkkomallissa ensimmäisenä, ei takaisinlevityksen tarvitse edetä konvoluutiokerrosten läpi ja tarvittava laskennallinen aika vähenee huomattavasti.

14 3. NEUROVERKON KÄYTTÖ KUVANLUOKITTELUUN Kuvanluokittelu on ollut jo postikorttien kirjaintunnistuksesta asti mielenkiintoinen automatisoinnin kohde. Perinteiset koneoppimismenetelmät kuten lähimmän naapurin menetelmä, tukivektorikoneet tai satunnaismetsät pärjäävät joissain luokitteluhaasteissa riittävän hyvin, mutta kuvanluokittelijat haastavissa tehtävissä käyttävät nykyään lähes aina laajoja neuroverkkoja. Luokittelijaan tulee jokin piirrevektori, jonka perusteella se ohjatulla oppimisella opetetaan ymmärtämään ne piirteet, mitkä sille kyseiselle luokalle kuuluvat. Käyttämällä neuroverkkoarkkitehtuuria jossa on viimeisessä kerroksessa n luokan verran neuroneita, pystytään opetetulla syvällä neuroverkolla kaavan 2.7 avulla päättelemään todennäköisyys kuvan kuulumiseen jokaiselle luokalle. 3.1 Aineistot CIFAR-10 [9] on 10 luokkaa sisältävä tietokanta, joka on yksi yleisimmistä koneoppimisen menetelmien testaukseen käytettävistä tietokannoista ja sen huipputulokset ovat ~96% syvillä konvoluutioneuroverkoilla. Kuvat ovat 32 32 pikseliä RGBmuodossa olevia kuvia, joita on 6000 jokaiselle luokalle. Tietokanta on jaettu 10000 testikuvaan ja 50000 opetuskuvaan. Tietokannan kuville on valmiiksi merkattu luokat, joten verkon opetus suoritetaan kokonaan ohjattuna oppimisena. Määrittelyn mukaisesti jokainen kuva on valokuva joka sisältää vain yhden luokkaa vastaavan objektin satunnaisesta kulmasta, ja sen tulee olle ihmissilmälle selkeästi erottuva [9]. Kuvan 50000 opetuskuvasta 5000 kuvaa valittiin validointia varten ja niitä käytettiin opetuksen lopettamisen ajoittamiseen. Esiprosessointina kuvat laajennettiin 64 64 muotoon. Ilman tätä laajennusta verkon syvyyden takia konvoluutiokerrokset pienentäisivät kuvan alle 1 1 kokoon, mikä ei ole sallittua. Tämän jälkeen jokaisesta pikselistä vähennettiin koko opetustietokannan värikeskiarvo, jolloin värikeskiarvo on koko tietokannalle nolla. Värikeskiarvon vähentäminen oli tehty myös alkuperäistä VGG-netiä opetettaessa [1], joten esiopetetut konvoluutiokerrokset odottavat saman tyylisiä arvoja.

3.1. Aineistot 15 Kuva 3.1 Satunnainen ote CIFAR-10 tietokannasta. Aineisto on tarkkaan valittu, eikä sitä tarvi esivalmistella. Kuva 3.2 Satunnainen ote toisesta aineistosta automaattisen rajauksen jälkeen. Aineiston mukana tulleet rajausehdot olivat suurimmassa osassa tapauksia hyviä, mutta joissain tapauksissa johti virheellisiin kuviin.

3.2. Malli 16 Toisena aineistona työssä käytetään kissoista ja koirista muodostuvaa tietokantaa [16], jonka Oxfordin VGG-ryhmä julkaisi vuonna 2012. Siihen sisältyy yhteensä 37 eri rotua, joista 12 on kissoja ja 25 koiria. Jokaista rotua kohden on noin 200 vaihtelevan pikselikoon RGB-kuvaa. Kuvien esiprosessointiin kuului niiden muuttaminen 224 224 kokoon, jotta ne pystyttäisiin syöttämään verkkoon. Tietokannan mukana tuli määrittelyt jokaiselle kuvalle siitä, mikä osa kuvasta on eläintä ja mikä osa on taustaa. Näiden määrittelyjen avulla kuvat pyrittiin rajaamaan siten, että suurin osa kuvasta on eläintä ja taustaa rajattiin pois. Rajauksen jälkeen kuvat muutettiin 224 224 kokoon. Alkuperäissä 2012 julkaisussa VGG-ryhmä käytti monen mallin yhdistelmää joista osa tulkitsi eläimen päätä, osa kehoa ja osa koko kuvaa. Piirteiden irroitukseen sekä luokitteluun he käyttivät perinteisiä kuvantunnistusmenetelmiä kuten SIFT, HOG, bag-of-words ja tukivektorikoneita. Tulokseksi he saivat parhaillaan kaikkia malleja yhdistämällä 59.21% tarkkuudeksi kaikkien 37 luokan luokittelussa. 3.2 Malli Mallin rakentamiseen käytettiin Keras-kirjastoa. Keras on syviin neuroverkkoihin keskittynyt Python ohjelmointikielellä toteutettu neuroverkkokirjasto. Keras toimii TensorFlow tai Theano kehyksen päällä, joista tähän työhön valittiin Googlen TensorFlow. Keras yhdistää kaikki syvän neuroverkkomallin rakentamiseen tarvittavat osat yhteen kirjastoon, kun taas TensorFlow vastaa laskennallisen osuuden prosesseista ja muistinkäytöstä. Mallien opettamiseen käytettiin Nvidian GPU laskentayksikköä, jonka monen CUDA ytimen ansioista rinnakkaistamisen etuja pystyttiin hyödyntämään nopeamman oppimisen saavuttamiseksi. Lopulliseen luokittelijaan valittiin kuvan 3.3 mukainen malli. Ensin konvoluutioosasta ulostuleva arvotensori muutetaan vektorimuotoon, sillä muut verkon kerrokset odottavat vektorimuodossa olevia arvoja. Tämän jälkeen arvot normalisoitiin Batch Normalization kerroksella. Konvoluution arvoparametreinä voi tulla konvoluutiokerrosten syvyydestä riippuen hyvin vaihtelevia arvoja, joten niiden normalisointi ennen tiheää kerrosta on suositeltavaa, ja osoittautui validointia käytettäessä opetusta huomattavasti parantavaksi keinoksi. Normalisointikerroksen jälkeen tulee luokittelun hoitavat tiheät kerrokset. Ensimmäisen tiheän kerroksen aktivaatiofunktiona toimii ELU. Normaaliin ReLUun verrattuna ELU saavutti parempia tarkkuuksia validointidatalle, joten sen käyttö oli kannattavaa. Tiheään kerrokseen oli yhteydessä myös häipymä (Dropout) kerros. Ilman häipymää malli ylioppi opetusdatan liian nopeasti eikä se kyennyt yleistämään tarkkuutta validointidatalle. Tämän jälkeen tuli luokkien verran neuroneita sisältävä tiheä ulostulokerros, eli 10 CIFARissa,

3.2. Malli 17 ja 37 kissat ja koirat tietokannassa. Ulostulokerroksen aktivaatiofunktiona on Softmax, jolloin ulostulo on luokkien verran eri todennäköisyyttä sisältävä vektori, joista jokainen vektorin alkio vastaa eri luokan esiintymistodennäköisyyttä sisääntulolle. Kuva 3.3 Työssä käytetty syvä neuroverkko malli. Ylätason kerrokset muodostavat VGGnetin ja niistä punaiset ovat alinäytteistykseen käytettyjä maxpooling kerroksia. Kaikkia kerroksia ei välttämättä tarvitse, jos tarvittavat piirteet löydetään jo aiemmilta kerroksilta. Neuronien painot molemmissa tiheissä kerroksissa alustettiin käyttäen normaalijakauman arvoja. Tässä nimenomaisessa jakaumassa sisääntulevien arvojen lukumäärä sekä ulosmenevien arvojen lukumäärä määräävät jakauman arvoalueen [12]. Painojen alkuarvojen oikea asetus on tärkeää, sillä huonoilla alkuarvoilla opetus voi hidastua epävakaiden gradienttien takia [14]. Painojen alkuperäinen jakauma myös määrää niiden lopullisen jakauman oppimisen jälkeen, joten nollakeskitetty normaalitai tasajakauma ovat hyviä ratkaisuja. Bias-arvot asetettiin nollaksi. Häipymän arvoksi annettiin suositeltu [8] arvo p = 0.5, eli 50% mahdollisuus jokaisen neuronin ulostulon arvon muuttua nollaksi ja ELUn α parameteri asetettiin suositeltuun [5] arvoon 1. Tiheän kerroksen neuronien määrä oli 250. Häviöfunktioksi valittiin multinominen logistinen häviöfunktio eli ristienropia joka saa pienjoukolle B laskettuna kaavasta 2.10 kasvaneen muodon

3.3. Tulokset 18 L = 1 B B N y ij log (p ij ), (3.1) i=1 j=1 missä jokaisen joukon kuvan häviö siis keskiarvotetaan joukon koolla. Opetusdatan keinotekoiseen kasvattamiseen käytettiin Keraksen kuvanmuokkaus generaattoria, joka syöttää verkolle halutun joukon verran kuvia kerrallaan ja lisää näihin joukkoihin satunnaista pikseliarvojen muutosta, rotaatiota, zoomausta, kääntämistä vaakatasossa sekä kuvan siirtoa johonkin suuntaan. CIFAR-10 opetusvaiheessa käytettiin gradientin laskua 2.12 joukkokoolla B = 200. Oppimisnopeudeksi annettiin α = 0.001, momentiksi γ = 0.9 nesterov momentti, eikä oppimisnopeutta muuttavia tekijöitä käytetty. Validoinnin avulla opetus lopetettiin siinä vaiheessa, kun validointidatan tarkkuus ei enää parantunut 15 eepokkiin, missä yksi eepokki vastaa opetusaineiston kokoisen joukon opettamista koko verkolle. Kissojen ja koirien rotuerottelussa gradientin laskun joukkokooksi valittiin B = 16 32, oppimisnopeudeksi α = 0.00025 0.001, momentiksi γ = 0.95 nesterov momentti sekä opetuksen hidastamisen arvoksi µ = 1 10 6. Tarkat arvot mallista riippuen liitteessä 1. Oppimisnopeus hidastuu jokaisen joukon jälkeen kaavalla α t = αt 1 1 + µ k, (3.2) missä k on opetettujen joukkojen lukumäärä. Aineisto jaettiin tässä tapauksessa 70% opetukseen, 15% validointiin sekä 15% testaamiseen. Opetus lopetettiin kun validointijoukon tarkkuus ei parantunut 15 eepokkiin. 3.3 Tulokset Aineistojen tarkkuudet eri määrällä konvoluutiokerroksia on esitetty kuvassa 3.4. Tarkemmat arvot sekä opetukseen käytetyt ajat ovat liitteessä 1.

3.3. Tulokset 19 Kuva 3.4 Tarkkuudet eri malleilla. Vaaka-akselilla on mallin syvyys, ja y-akselilla on sen tarkkuus testiaineistoilla. CIFAR-10 luokittelussa konvoluutioverkon syvyys oli parhaillaan, kun VGG-netistä vähensi kaksi kerrosta pois. Syötetyn kuvan koolla on mahdollisesti suuri merkitys, sillä alkuperäinen VGG-net oli opetettu suuremmilla kuvilla. Tarkempaa syytä ei tähän lähdettä tämän työn ohessa etsimään. Luokittelu kaksikerroksisella MLPverkolla toimi hyvin, mutta sen neuronien lukumäärä saattoi olla liian pieni kerroksille, missä ulostulevien arvojen lukumäärä oli huomattavan suuri, mikä teki luokittelusta vaikeampaa. CIFAR-10 luokittelussa VGG-netin painoja opetettiin koko opetuksen ajan, mikä hidasti oppimista, mutta paransi selvästi tulosta verrattuna opetuskertoihin, jossa konvoluutiokerrosten painoja ei opetettu. Tämä voi olla seurausta siitä, että VGG-net on opetettu isompi resoluutioisilla 224 224 kuvilla, jolloin niiden piirteet ovat selvempiä kuin CIFAR-10 kuvien. Kissojen ja koirien aineistossa paras tulos tuli suoraan viimeiseltä kerrokselta. Koska kuvat olivat hyvin samankaltaisia alkuperäisen VGG-net aineiston kanssa, ei tämä ole suuri yllätys. Tämän aineiston opettamisen aikana konvoluutiokerrosten parametrejä ei opetettu, jolloin opetus oli helpompaa ja nopeampaa. Paremman tarkkuuden olisi saanut opettamalla parametrejä, mutta verrattuna vuoden 2012 59% tarkkuuteen tämä kuitenkin oli jo selvä parannus. Parempaa tulosta olisi kannattanut ensisijaisesti lähteä hakemaan parantamalla esiprosessointia ja etenkin kuvien rajausta, sillä pienellä kuvamäärällä jokaisen kuvan laatu on tärkeä. Softmax ulostulojen summaaminen eri mallien väleillä osoittautui lopullista tark-

3.3. Tulokset 20 kuutta parantavaksi tekijäksi ja parhaan tuloksen tarkkuus parantui CIFAR-10 tapauksessa noin 1 prosenttiyksikköä kun taas kissojen ja koirien aineistossa noin 3 prosenttiyksikköä. Liitteessä 1 on esitetty lopulliset tarkkuudet molemmille aineistoille, sekä muutama eri summauksen tuloksena tullut tarkkuus. Tämä parantunut tulos voi kertoa siitä, että aiempien kerrosten piirteet ovat joissain tilanteissa parempia luokittelemaan oikean luokan, kuin yksittäisen kerroksen ulostulo. Eri konvoluutiokerrosten ulostulojen piirre-erot ovatkin mielenkiintoinen tutkimuksen aihe, johon ei tällä kertaa tarpeeksi ehditty syventymään.

21 4. JOHTOPÄÄTÖKSET Työn motivaationa oli tutkia syitä käyttää esiopetettuja konvoluutioneuroverkkoja mahdollisesti vähentämällä niistä joitain kerroksia. Kissojen ja koirien aineistossa esiopetettu konvoluutioneuroverkko toimi hyvin, mutta kerrosten vähentäminen ei suoraan nostanut tarkkuutta. Muista kerroksista otettujen ulostulojen avulla tehty mallien keskiarvottaminen kuitenkin nosti tarkkuutta, joten mahdollisesti muiden kerrosten piirtenirroitus pystyisi esittämään ominaisuuksia, mitä viimeisen kerroksen piirteet eivät esitä. Lopullinen tarkkuus neljän kerroksen yhdistämisen jälkeen 88.63% oli kuitenkin hyvä tulos yksinkertaiselle luokittelijalle ja hieman heikolle aineistolle, joka kertoo syvien konvoluutioneuroverkkojen erinomaisesta luokittelukyvystä. Vaikka CIFAR-10 tapauksessa jouduttiinkin konvoluutiokerrosten painoja opettamaan luokittimen opetuksen aikana, oli esiopetus selvästi hyödyntävä tekijä. Ilman esiopetusta koko konvoluutioneuroverkon noin 15 miljoonaa painoa olisi pitänyt opettaa pelkällä CIFAR-10 aineistolla, eikä lopulliseen kerrosten yhdistämisen kautta saatuun 95.11% tarkkuuteen olisi välttämättä ikinä päästy. Luokittimen laajentamisella tai tarkemmalla piirtenirrotimen yhdistelyllä olisi tulosta varmasti saatu vielä kuitenkin paremmaksi. Syvät konvoluutioneuroverkot ovat selvästi erinomaisia piirteenirrottimia vaikeillekin aineistoille ja niiden avulla kuvien luokittelu on hyvin aiheellista. Niiden opettaminen on raskasta, joten esiopetettujen neuroverkkojen käyttö tulee olemaan potentiaalisesti tulevaisuudessa suuressa suosiossa. Valmiiden kirjastojen ansiosta niiden mahdollinen lisäopetus on kuitenkin helppoa nykyisillä laskentayksiköillä, joita voi myös pilvipalvelujen kautta hyödyntää. Pohdittavaksi työstä jää, pystyykö muiden kerrosten parempia piirteitä käyttämään lopullisen tarkkuuden parantamiseen ilman suurta laskennallista kuormaa.

22 LÄHTEET [1] Simonyan, Karen and Zisserman, Andrew Very Deep Convolutional Networks for Large-Scale Image Recognition. arxiv preprint arxiv:1409.1556, 2014. [2] Goodfellow, Ian and Bengio, Yoshua and Courville, Aaron Deep Learning. MIT Press, 2016. http://www.deeplearningbook.org/ vierailtu 28.4.2017. [3] Sergey Ioe and Christian Szegedy Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. arxiv preprint arxiv:1502.03167, 2015. [4] Krizhevsky, Alex, Ilya Sutskever, and Georey E. Hinton Imagenet classication with deep convolutional neural networks. Advances in neural information processing systems. 2012. s. 10971105. [5] Djork-Arné Clevert, Thomas Unterthiner, Sepp Hochreiter: Fast and Accurate Deep Network Learning by Exponential Linear Units(ELUs). arxiv preprint arxiv:1511.07289, 2015. [6] Nuno Vasconcelos and Andrew Lippman A Unifying View of Image Similarity. Pattern Recognition, 2000. Proceedings. 15th International Conference on. IEEE, 2000. s. 3841 [7] Bottou, Léon: Online Algorithms and Stochastic Approximations. Online Learning 5, 1998. [8] Srivastava, Nitish and Hinton, Georey E and Krizhevsky, Alex and Sutskever, Ilya and Salakhutdinov, Ruslan Dropout: A Simple Way to Prevent Neural Networks from Overtting. Journal of Machine Learning Research, 2014, vol.15 s. 19291958. [9] Alex Krizhevsky Learning Multiple Layers of Features from Tiny Images. Technical report, University of Toronto 2009, ch. 3. [10] Xavier Glorot, Antoine Bordes, Yoshua Bengio Deep Sparse Rectier Neural Networks. AISTATS'11, vol. 15 s. 275. [11] Springenberg, Jost Tobias and Dosovitskiy, Alexey and Brox, Thomas and Riedmiller, Martin Striving for Simplicity: The All Convolutional Net. arxiv preprint arxiv:1412.6806, 2014.

23 [12] Glorot, Xavier and Bengio, Yoshua Understanding the diculty of training deep feedforward neural networks. AISTATS'10, vol.9, s. 249256. [13] Bengio, Yoshua Practical recommendations for gradient-based training of deep architectures. Neural networks: Tricks of the trade, 2012, s. 437478. [14] Sutskever, Ilya and Martens, James and Dahl, George and Hinton, Georey On the Importance of Initialization and Momentum in Deep Learning. International conference on machine learning, 2013, s. 11391147. [15] Ballard, Dana and Brown, Craig Computer Vision. 1982, s.30. [16] Parkhi, Omkar M and Vedaldi, Andrea and Zisserman, Andrew and Jawahar, CV Cats and Dogs, Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference, s. 34983505 http://www.robots.ox.ac.uk/ vgg/publications/2012/parkhi12a/parkhi12a.pdf [17] Funahashi, Ken-Ichi On the approximate realization of continuous mappings by neural networks Neural Networks vol. 2, 1989, s. 183192 [18] Dmytro Mishkin and Nikolay Sergievskiy and Jiri Matas Systematic evaluation of CNN advances on the ImageNet arxiv preprint arxiv:1606.02228, 2016.

24 LIITE A. TARKKUUDET JA OPETUSAJAT Taulukko 1 Eri mallien lopulliset tarkkuudet ja aika. VGG-net ulostulo CIFAR-10 Eepokkeja s/eepokki Huomioitavaa block5_pool 0.9336 75 93.2 block5_conv3 0.9334 72 92.8 block5_conv2 0.9419 52 90.6 block5_conv1 0.9327 73 86.3 block4_pool 0.9284 78 83.8 block4_conv3 0.9324 94 86.4 block4_conv2 0.9306 109 74.6 block4_conv1 0.9203 95 66.9 block3_pool 0.8940 135 60.2 block3_conv3 0.9047 116 64.1 block3_conv2 0.8907 114 57.2 block3_conv1 0.8729 115 48.9 block2_pool 0.8434 108 43.5 block2_conv2 0.8304 95 51.0 block2_conv1 0.7955 74 41.3 block1_pool 0.7861 142 29.3 block1_conv2 0.7670 111 45.6 block1_conv1 0.7207 157 34.2 4 ylintä kerrosta 0.9511 8 ylintä kerrosta 0.9507 kaikki listatut kerrokset 0.9402 Cats and Dogs block5_pool 0.8565 65 38.3 α=0.001, B=32 block5_conv3 0.8087 53 40.8 α=0.001, B=32 block5_conv2 0.8050 73 39.5 α=0.001, B=32 block5_conv1 0.7139 56 40.5 α=0.001, B=32 block4_pool 0.6832 75 43.8 α=0.001, B=32 block4_conv3 0.7202 65 49.8 α=0.00025, B=16 block4_conv2 0.6652 73 46.5 α=0.00025, B=16 block4_conv1 0.6345 104 43.2 α=0.00025, B=16 block3_pool 0.6083 105 34.5 α=0.00025, B=16 block3_conv3 0.5740 89 56.9 α=0.00025, B=16 block3_conv2 0.5289 131 53.2 α=0.00025, B=16 block3_conv1 0.5001 120 50.2 α=0.00025, B=16 block2_pool 0.4278 117 33.4 α=0.00025, B=16 4 ylintä kerrosta 0.8863 8 ylintä kerrosta 0.8448 kaikki listatut kerrokset 0.8042