ANTTI EIVOLA KÄSINKIRJOITETTUJEN MERKKIEN LUOKITTELU

Samankaltaiset tiedostot
Johdatus tekoälyn taustalla olevaan matematiikkaan

MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 7: Lagrangen kertojat. Pienimmän neliösumman menetelmä.

Monte Carlo -menetelmä

Tchebycheff-menetelmä ja STEM

1. Luvut 1, 10 on laitettu ympyrän kehälle. Osoita, että löytyy kolme vierekkäistä

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

Jaksolliset ja toistuvat suoritukset

Epälineaaristen pienimmän neliösumman tehtävien ratkaiseminen numeerisilla optimointimenetelmillä (valmiin työn esittely)

Uuden eläkelaitoslain vaikutus allokaatiovalintaan

Tavoitteet skaalaavan funktion lähestymistapa eli referenssipiste menetelmä

Mat /Mat Matematiikan peruskurssi C3/KP3-I Harjoitus 2, esimerkkiratkaisut

3.5 Generoivat funktiot ja momentit

Työn tavoitteita. 1 Johdanto. 2 Ideaalikaasukäsite ja siihen liittyvät yhtälöt

Mat Lineaarinen ohjelmointi

1 0 2 x 1 a. x 1 2x c b 2a c a. Alimmalta riviltä nähdään että yhtälöyhmällä on ratkaisu jos ja vain jos b 3a + c = 0.

3 Tilayhtälöiden numeerinen integrointi

FYSA220/2 (FYS222/2) VALON POLARISAATIO

4. Datan käsittely lyhyt katsaus. Havaitsevan tähtitieteen peruskurssi I, luento Thomas Hackman

Puupintaisen sandwichkattoelementin. lujuuslaskelmat. Sisältö:

Mekaniikan jatkokurssi Fys102

Painotetun metriikan ja NBI menetelmä

BL20A0600 Sähkönsiirtotekniikka

3. Datan käsittely lyhyt katsaus

Mittausvirhe. Mittaustekniikan perusteet / luento 6. Mittausvirhe. Mittausepävarmuus ja siihen liittyvää terminologiaa

4. A priori menetelmät

Tarkastellaan kuvan 8.1 (a) lineaarista nelitahoista elementtiä, jonka solmut sijaitsevat elementin kärkipisteissä ja niiden koordinaatit ovat ( xi

Taustaa. Sekventiaalinen vaikutuskaavio. Päätöspuista ja vaikutuskaavioista. Esimerkki: Reaktoriongelma. Johdantoa sekventiaalikaavioon

HASSEN-WEILIN LAUSE. Kertausta

Sähkön- ja lämmöntuotannon kustannussimulointi ja herkkyysanalyysi

7. Modulit Modulit ja lineaarikuvaukset.

COULOMBIN VOIMA JA SÄHKÖKENTTÄ, PISTEVARAUKSET, JATKUVAT VARAUSJAKAUMAT

Mittausepävarmuus. Mittaustekniikan perusteet / luento 7. Mittausepävarmuus. Mittausepävarmuuden laskeminen. Epävarmuuslaskelma vai virhearvio?

Painokerroin-, epsilon-rajoitusehtoja hybridimenetelmät

SU/Vakuutusmatemaattinen yksikkö (5)

Markov-prosessit (Jatkuva-aikaiset Markov-ketjut)

Työssä tutustutaan harmonisen mekaanisen värähdysliikkeen ominaisuuksiin seuraavissa

Mat Lineaarinen ohjelmointi

Mat Lineaarinen ohjelmointi

Työn tavoitteita. 1 Johdanto. 2 Ideaalikaasukäsite ja siihen liittyvät yhtälöt

on määritelty tarkemmin kohdassa 2.3 ja pi kohdassa 2.2.

Tietojen laskentahetki λ α per ,15 0,18 per ,15 0,18 per tai myöhempi 0,20 0,18

Rahastoonsiirtovelvoitteeseen ja perustekorkoon liittyvät laskentakaavat. Soveltaminen

SU/Vakuutusmatemaattinen yksikkö (6)

Kuluttajahintojen muutokset

Timo Tarvainen PUROSEDIMENTIIANALYYSIEN HAVAINNOLLISTAMINEN GEOSTATISTIIKAN KEINOIN. Outokumpu Oy Atk-osasto

Hallin ilmiö. Laatija - Pasi Vähämartti. Vuosikurssi - IST4SE. Tekopäivä Palautuspäivä

LIITE 2 SUORAN SOVITTAMINEN HAVAINTOPISTEISIIN

Automaattinen 3D - mallinnus kalibroimattomilta kuvasekvensseiltä

Pyörimisliike. Haarto & Karhunen.

Moderni portfolioteoria

Sähkökiukaan kivimassan vaikutus saunan energiankulutukseen

Luento 6 Luotettavuus Koherentit järjestelmät

FDS-OHJELMAN UUSIA OMINAISUUKSIA

5. Datan käsittely lyhyt katsaus. Havaitsevan tähtitieteen peruskurssi I, luento Thomas Hackman

VERKKOJEN MITOITUKSESTA

Kollektiivinen korvausvastuu

Karttaprojektion vaikutus alueittaisten geometristen tunnuslukujen määritykseen: Mikko Hämäläinen 50823V Maa Kartografian erikoistyö

Lohkoasetelmat. Lohkoasetelmat. Lohkoasetelmat: Mitä opimme? Lohkoasetelmat. Lohkoasetelmat. Satunnaistettu täydellinen lohkoasetelma 1/4

A = B = T = Merkkijonon A osamerkkijono A[i..j]: n merkkiä pitkä merkkijono A:

Jaetut resurssit. Tosiaikajärjestelmät Luento 5: Resurssien hallinta ja prioriteetit. Mitä voi mennä pieleen? Resurssikilpailu ja estyminen

JYVÄSKYLÄN YLIOPISTO Taloustieteiden tiedekunta

Mittaustulosten käsittely

Rahastoonsiirtovelvoitteeseen, perustekorkoon ja vakuutusmaksukorkoon liittyvät laskentakaavat ja periaatteet

3.3 Hajontaluvuista. MAB5: Tunnusluvut

Esitä koherentin QAM-ilmaisimen lohkokaavio, ja osoita matemaattisesti, että ilmaisimen lähdöstä saadaan kantataajuiset I- ja Q-signaalit ulos.

Sähköstaattinen energia

Yksikköoperaatiot ja teolliset prosessit

Tilastollisen fysiikan luennot

A250A0100 Finanssi-investoinnit Harjoitukset

Paperikoneiden tuotannonohjauksen optimointi ja tuotefokusointi

Ilkka Mellin (2008) 1/24

Kansainvälisen konsernin verosuunnittelu ja tuloksenjärjestely

Kynä-paperi -harjoitukset. Taina Lehtinen Taina I Lehtinen Helsingin yliopisto

Tchebycheff-menetelmä ja STEM

Segmentointimenetelmien käyttökelpoisuus

Työllistääkö aktivointi?

Kokonaislukuoptimointi

d L q i = V = mc 2 q i 1 γ = = p i. = V = γm q i + QA i. ṗ i + Q A i + Q da i t + j + V + Q φ

Galerkin in menetelmä

Palkanlaskennan vuodenvaihdemuistio 2014

Aamukatsaus

ER-kaaviot. Ohjelmien analysointi. Tilakaaviot. UML-kaaviot (luokkakaavio) Tietohakemisto. UML-kaaviot (sekvenssikaavio) Kirjasto

r i m i v i = L i = vakio, (2)

AquaPro Bedienungsanleitung Operating instructions Gebruiksaanwijzing Käyttöohje FIN Rev.0607

1. (Monisteen teht. 5.16) Eräiden kuulalaakereiden kestoa (miljoonaa kierrosta) on totuttu kuvaamaan Weibull-jakaumalla, jonka tiheysfunktio on

Mat Tilastollisen analyysin perusteet, kevät 2007

TULEVAISUUDEN KILPAILUKYKY VAATII OSAAVAT TEKIJÄNSÄ. Suomen Ammattiin Opiskelevien Liitto - SAKKI ry

Mat Tilastollinen päättely 7. harjoitukset / Tehtävät. Hypoteesien testaus. Avainsanat:

= E(Y 2 ) 1 n. = var(y 2 ) = E(Y 4 ) (E(Y 2 )) 2. Materiaalin esimerkin b) nojalla log-uskottavuusfunktio on l(θ; y) = n(y θ)2

Raja-arvot. Osittaisderivaatat.

HY, MTO / Matemaattisten tieteiden kandiohjelma Tilastollinen päättely II, kevät 2018 Harjoitus 7B Ratkaisuehdotuksia.

Kuntoilijan juoksumalli

KUVIEN LAADUN ANALYSOINTI

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

Geneettiset algoritmit ja luonnossa tapahtuva mikroevoluutio

SMG-1100: PIIRIANALYYSI I

6. Stokastiset prosessit (2)

7. Keko. Tarkastellaan vielä yhtä tapaa toteuttaa sivulla 162 määritelty tietotyyppi joukko

T p = 0. λ n i T i B = Käytetään kohdan (i) identiteetin todistamiseen induktiotodistusta. : Oletetaan, että väite on totta, kun n = k.

Kanoniset muunnokset

Transkriptio:

ANTTI EIVOLA KÄSINKIRJOITETTUJEN MERKKIEN LUOKITTELU Kanddaatntyö Tarkastaja: lehtor Hekk Huttunen

II TIIVISTELMÄ TAMPEREEN TEKNILLINEN YLIOPISTO Sgnaalnkästtelyn ja tetolkenneteknkan koulutusohjelma EIVOLA, ANTTI: Käsnkrjotettujen merkken luokttelu Kanddaatntyö, 22 svua, 7 ltesvua Toukokuu 2010 Pääane: Sgnaalnkästtely Tarkastaja: lehtor Hekk Huttunen Avansanat: lneaarnen dskrmnanttanalyys, tukvektorkoneet, hermoverkot, käsnkrjotettujen merkken tunnstus, OpenCV, MNIST Käsnkrjotettujen merkken tunnstamen helpottaa monella tavalla hmsten arkea. Se vodaan jakaa reaalakaseen ja jälkkäteen tehtävään tunnstamseen, jota tässä työssä kästellään. Työn tarkotuksena on vertalla kolmea er luoktusmenetelmää käsnkrjotettujen numeroden tunnstamsessa. Nästä lneaarnen dskrmnanttanalyys pyrk luokttelemaan merkt luokkn luokken hajontojen perusteella. Tukvektorkoneet taas muodostavat luokken väln erotnrajapnnan sten, että luokken väln jää mahdollsmman suur margnaal. Hermoverkot on er kerroksn kuuluvsta solmusta ja nden välsstä yhteyksstä muodostuva luoktn, joka tuottaa ulostuloonsa ssäänmenovektora vastaavan luokan tunnsteen. Luokttmen vertalemseks kutakn menetelmää testattn suurella joukolla er parametren arvoja pyrkmyksenä löytää kullekn menetelmälle se parametren yhdstelmä, joka tuottaa penmmän luoktusvrheprosentn testdatalle. Er arvolla saatuja tuloksa vertaamalla hermoverkot nähtn kolmesta vertallusta menetelmästä parhammaks käsnkrjotettujen numeroden luokttamseen. Hermoverkot tuottvat penmmän työssä löydetyn vrheen, tukvektorkoneden päästessä samaan suuruusluokkaan. Nästä hermoverkot ovat käytön kannalta suosteltavamp menetelmä, sllä parhamman luoktustuloksen tuottaven parametren löytämnen on slle huomattavast tukvektorkoneta yksnkertasempaa.

III ALKUSANAT Tämä työ on Tampereen teknllsen ylopston sgnaalnkästtelyn latoksen kanddaatntyösemnaarn opnnäytetyö, joka on krjotettu keväällä 2010. Työ tarjos ovan mahdollsuuden tutustua syvällsemmn etukäteen van pääprtettään tuttuun aheprn sekä hyvää harjotusta opnnäytetyön krjottamseen. Haluan esttää ertysen ktoksen perheellen tuesta ja joustamsesta työpäven venyessä opskeluakan kentes kresmmän kevään akana. Ktos myös työn ohjaajalle Hekk Huttuselle hyvstä kommentesta krjotusprosessn akana. Tampereella, 23. Toukokuuta 2010 Antt Evola antt.evola@k.f

IV SISÄLLYS 1. Johdanto... 1 2. Käytetyt menetelmät... 2 2.1. Fshern lneaarnen dskrmnanttanalyys... 2 2.1.1. Kahden luokan välnen luokttelu... 2 2.1.2. Useamman luokan luokttelu... 4 2.2. Tukvektorkoneet... 4 2.2.1. Lneaarsella pnnalla eroteltavssa olevat luokat... 5 2.2.2. Ylestys lneaarsella pnnalla erottamattomssa olevlle luoklle... 6 2.2.3. Kernelfunktot... 8 2.3. Hermoverkot... 9 2.3.1. Verkon rakenne... 9 2.3.2. Yksttäsen solmun rakenne... 10 2.3.3. Verkon opettamnen... 11 3. Menetelmen testaus... 13 3.1. Opetus- ja testanesto... 13 3.2. Fshern lneaarsen dskrmnanttanalyysn testaus... 14 3.3. Tukvektorkoneden testaus... 14 3.4. Hermoverkkojen testaus... 14 4. Tulokset... 16 4.1. Menetelmen vertalu... 16 4.2. Parametren vakutus luoktusvrheeseen... 16 4.2.1. Tukvektorkoneden sekä kernelen parametren vakutus... 17 4.2.2. Hermoverkkojen parametren vakutus... 19 4.3. Huomota menetelmen käytöstä... 20 4.4. Tulosten arvont... 20 5. Yhteenveto... 21 Lähteet... 22 Lte A: LDA-luoktteljan toteuttava Matlab-kood... 23 Lte B: Tukvektorkone-luokan rajapnta... 26 Lte C: Hermoverkko-luokan rajapnta... 28

V MERKINNÄT JA LYHENTEET C Tukvektorkoneen margnaalen väln ta väärälle puolelle margnaaleja jääven näytteden sakotusparametr C-SVM menetelmässä. m Keskarvovektor. n Näytteden lukumäärä. p Luokken lukumäärä. S w Luokken välnen hajontamatrs (between-class scatter matrx). S b Luokan ssänen hajontamatrs (wthn-class scatter matrx). ν Tukvektoreden määrää ja opetusdatan luoktusvrheen ylärajaa kontrollova parametr ν-svm menetelmässä. LDA Lneaarnen dskrmnanttanalyys. NN Hermoverkko (Neural network). RPROP Hermoverkkojen opetusmenetelmä, jonka tarkotuksena on nopeuttaa verkon opettamsta pernteseen vrheen takasnetenemsmenetelmään (error backpropagaton) verrattuna. SVM Tukvektorkone (Support Vector Machne).

1 1. JOHDANTO Käsnkrjotettujen merkken tunnstamnen on tärkeässä roolssa monssa nykyajan sovelluksssa. Osotteden tunnstamnen krjekuorsta ta erlasten lomakkeden ssällön lukemnen ols huomattavast vavallosempaa ja htaampaa lman tähän suunnteltuja automaattsa järjestelmä. Käsnkrjotettujen merkken tunnstamnen vodaan jakaa käyttökohteen mukaan kahteen osaan, reaalakaseen tunnstamseen (onlne recognton) ja jälkkäteen tunnstamseen (offlne recognton). Reaalakasta tunnstamsta käytetään ertysest kosketusnäytöllsssä lattessa tunnstamaan käyttäjän krjotus ja muuntamaan se sähköseen, tetokoneen ymmärtämään, muotoon. Jälkkäteen tehtävää tunnstamsta taas ovat esmerkks osotteden tunnstamnen krjestä ja muu tunnstamnen, jossa paperlla olevat merkt muunnetaan sähköseen muotoon ennen tunnstamsta. Tässä työssä luoktetaan käsnkrjotettuja numerota jälkkäteen. Pääpano on kolmen er luoktusmenetelmän vertalussa keskttymättä luokteltavan aneston eskästtelyyn, prteden valtsemseen ta luoktustuloksen edelleenkäyttöön. Kunkn luokttmen osalta on tutkttu parametren vakutusta luoktustulokseen ja pyrtty löytämään mahdollsmman hyvät parametren arvot luoktteluvrheen mnmomseks. Opetus ja testanestona käytettn vapaast saatavlla olevaa MNIST-tetokantaa. Lneaarnen dskrmnanttanalyys on luokttelumenetelmä, joka pohjautuu näytejoukkojen erottamseen nden hajonnan perusteella. Se pyrk maksmomaan luokken välsen hajonnan ja mnmomaan luokken ssäsen hajonnan. Tukvektorkoneet muodostavat er luokkn kuuluven näytejoukkojen vällle erotnrajapnnan sten, että luokken vällle jäävä margnaal maksmotuu. Tällön luoktn tom todennäkösmmn hyvn myös opetusnäytejoukkoon kuulumattomlle näyttelle. Hermoverkot ovat bologsn hermoverkkohn perustuva luokttelumenetelmä, joka rakentuu er kerrroksn kuuluvsta solmusta ja nden välsstä yhteyksstä. Työn rakenne noudattaa seuraavaa kaavaa. Luvussa 2 estellään työssä käytetyt luokttelumenetelmät, luvussa 3 menetelmen testaus sekä toteutukset ja luvussa 4 analysodaan tulokset.

2 2. KÄYTETYT MENETELMÄT Kappaleessa kuvataan luoktusongelman ratkasemseen tässä työssä käytetyt menetelmät. Kukn menetelmä kuvataan omassa alluvussaan. Menetelmstä on kerrottu ylenen tomntaperaate sekä pyrtty esttelemään nden parametren merktys, jolle työssä pyrtään etsmään mahdollsmman hyvät arvot. 2.1. Fshern lneaarnen dskrmnanttanalyys Fshern lneaarnen dskrmnanttanalyys on kahteen luokkaan kuuluven näytteden luoktteluun kehtetty menetelmä, joka pyrk luokttelemaan näytteet luokkn näytteden hajonnan perusteella. Tarkotuksena on mnmoda luokken ssänen hajonta ja maksmoda luokken välnen hajonta.[1] 2.1.1. Kahden luokan välnen luokttelu Ideana on etsä opetusdatan perusteella sellanen projektosuora, jolle projsotujen näytejoukkojen hajonta mnmotuu luokken ssällä ja maksmotuu luokken välllä. Tämän suoran avulla näyte vodaan luoktella projsomalla se kyseselle suoralle ja luokttamaan näyte luokkaan, jonka projsotu keskpste on lähmpänä näytteen projektota. Kuvassa 2.1 on havannollstettu tämä projektosuora sekä luokken keskpsteet projsotuna tälle suoralle. Luokken keskarvoja on merktty rastlla.

2. Käytetyt menetelmät 3 Kuva 2.1: Fshern lneaarsen dskrmnanttmenetelmän projektosuora. Projektosuoran laskemseks lasketaan luokken ssänen hajontamatrs (wthn-class scatter matrx) sekä luokken välnen hajontamatrs (between-class scatter matrx). Hajontamatrs on skaalaamaton verso kovaranssmatrssta. Saatujen matrsen avulla etstään se ratkasu, joka maksmo luokken välsen hajonnan suhteen luokken ssäseen hajontaan. Tämä ratkasu on haettu projektosuora. [1] Luokkaan j kuuluven näytteden keskarvo vodaan laskea kaavalla 1 m x, (2.1) j n j x C j jossa m j on luokkaan j kuuluven näytteden keskarvo, n j luokkaan j kuuluven näytteden lukumäärä, x yksttänen näyte ja C j ssältää luokan j alkot. Luokan ssänen hajontamatrs vodaan laskea tämän avulla kaavasta T S ( x m )( x m ), (2.2) Wj xc j j j jossa S Wj on luokan j ssänen hajontamatrs. Projektosuoran laskemseen tarvtaan luokken yhdstetty hajontamatrs, joka saadaan matrsen S Wj summana el p S S, (2.3) W j1 Wj jossa p on luokken lukumäärä. Luokken välsen hajontamatrsn laskemsessa tarvttava kakken näytteden keskarvo vodaan laskea kaavalla n 1 m x, (2.4) n 1 jossa m on kakken näytteden keskarvo ja n kakken näytteden lukumäärä. Tämän ja kaavan (2.1) avulla vodaan laskea luokken välnen hajontamatrs kaavalla

2. Käytetyt menetelmät 4 p T S ( m m)( m m) (2.5) B n j j1 j Projektosuora w on se suora, joka maksmo yhtälön j T w S Bw J ( w) (2.6) T w S w W el maksmo luokken välsen hajonnan suhteen luokken ssäseen hajontaan. Vektor w, joka maksmo yhtälön (2.6), saadaan laskettua kaavalla 1 w S W ( m m2) (2.7) 1 Näytteet luoktellaan projsomalla luokteltava pste suoralle w ja luokttamalla näyte shen luokkaan, kumman luokan suoralle w projsotu keskpste on lähempänä luokteltavan näytteen projektota. [2] 2.1.2. Useamman luokan luokttelu Monluokkaongelman tapauksessa, el luokken määrän ollessa suuremp kun kaks, luoktn vodaan rakentaa vastaavalla tavalla kun kahdelle luokalle. Useamman luokan tapauksessa muodostetaan yhden sjaan p-1 dskrmnanttvektora, jolle luokteltava pste projsodaan, mssä p on luokken määrä. Luokttelu tapahtuu etsmällä samaan avaruuteen projsodusta luokkakeskpstestä lähmpänä oleva. Useamman luokan tapauksessa matrs S w määrtellään samon kun kahden luokan tapauksessa kaavalla (2.3). Matrs S b määrtellään useamman luokan tapauksessa kaavalla p T S ( m m)( m m), (2.8) B n 1 jossa c on luokken määrä, m luokan keskarvovektor ja m kakken näytteden keskarvovektor, joka lasketaan kaavan 1 m m (2.9) p n n 1 mukaan, jossa n on näytteden määrä, n luokkaan kuuluven näytteden määrä ja m luokan keskarvovektor kaavan (2.1) mukasest. Nän saatujen matrsen S W ja S B avulla vodaan laskea muunnosmatrs W, joka mnmo yhtälön T W S BW J( W) (2.10) T W S W W Näytteet ja luokkakeskpsteet projsodaan matrsn W avulla kaavalla T y W x, (2.11) mssä x on projsotava pste ja y sen projekto. [1] 2.2. Tukvektorkoneet Luokttmen suunntelun haasteena on luoda luoktn, joka osaa luoktella mahdollsmman hyvn näyttetä, jotka evät kuulu sen näytejoukon prn, jolla luoktn

2. Käytetyt menetelmät 5 on opetettu. Tukvektorkoneet (Support Vector Machnes, SVM) ovat luokttelumenetelmä, joka pyrk asettamaan luokken vällle erotnrajapnnan, joka on mahdollsmman kaukana kummastakn luokasta. Nän asetetun erotnrajapnnan ja er luokkn kuuluven opetusnäytejoukkojen vällle jää mahdollsmman suur margnaal. Tällä tavalla muodostettu luoktn tom mahdollsmman hyvn opetusnäytteden joukkoon kuulumattomen, ennalta tuntemattomen, näytteden luokttelussa.[3] 2.2.1. Lneaarsella pnnalla eroteltavssa olevat luokat Kuvassa 2.2 on estetty kaks tapaa asettaa erotnrajapnta luokken vällle. Margnaaleja on merktty b-krjamella. Molemmat erotnrajapnnat, jotka kaksulottesen näyteavaruuden tapauksessa ovat suora, ovat yhtä kaukana kumpaankn luokkaan kuuluvsta näyttestä. Yhtenäsellä vvalla prretyn erotnrajapnnan margnaalt ovat huomattavast katkovvalla prretyn suoran margnaaleja suuremmat, joten se tom paremmn luokttmena kuvan opetusnäytejoukkoon kuulumattomlle näyttelle. Kuva 2.2: Kaks er tapaa asettaa erotnrajapnta Erotnrajapnta on taso, jonka yhtälö on muotoa g( x) w T x b 0, (2.12) jossa w on tason normaalvektor ja w 0 tason pokkeama orgosta. [4] Psteen etäsyys tästä tasosta saadaan kaavalla g(x) z (2.13) w

2. Käytetyt menetelmät 6 Tarkotuksena on löytää taso, joka on mahdollsmman kaukana stä lähmmstä pstestä el tason ja lähmpen psteden väln jää mahdollsmman suur margnaal. Etstty erotnrajapnta mnmo yhtälön 1 2 J( w) w (2.14) 2 rajauksen T y ( w x b) 1, =1,2,...,n (2.15) ollessa vomassa. Tässä x on opetusnäytejoukon näyte ja y tämän näytteen luokka. Muuttuja y saa näytteen luokan perusteella joko arvon -1 ta 1. [1] Tämä optmontongelma vodaan ratkasta Lagrange-kertomen avulla, jollon yhtälöks saadaan 1 n 1 T T L( w, b, a) w w y w x b 1, (2.16) 2 jossa ovat Lagrange-kertoma. Yhtälön ratkasuna saadaan mssä n w x, (2.17) n 1 1 y 0 (2.18) y Lagrange-kertomet ovat nolla ta postvsa lukuja. Kertomet ovat postvsa anoastaan pstelle, jotka tomvat tukvektorena, ja nolla mulle. Vektor w rppuu ss van tukvektorpstestä el pstestä, jotka ovat vakempa luokttaa.[3; 4] 2.2.2. Ylestys lneaarsella pnnalla erottamattomssa olevlle luoklle Kakka näytejoukkoja e ole mahdollsta erottaa edellä kuvatulla lneaarsella erotnrajapnnalla sten, että kakk näytteet luokteltasn oken. Tällanen tlanne on estetty kuvassa 2.3

2. Käytetyt menetelmät 7 Kuva 2.3: Lneaarnen erotnrajapnta ja margnaalt lneaarsest separomattomalle näytejoukolle. Ratkasuna tähän ongelmaan lsätään yhtälöön (2.15) uus term, jollon yhtälöks tulee jossa y T ( x w b) 1, (2.19) on löysennysmuuttuja, joka nmensä mukasest mahdollstaa näytteden sjottumsen margnaalen väln ta väärälle puolelle margnaaleja. Nälle näyttelle pätee yhtälö 0. Tarkotuksena on nyt samanakasest etsä mahdollsmman suur margnaal ja ptää nden näytteden määrä mahdollsmman vähäsenä, jolle suuremp kun nolla. Tällön yhtälö (2.14) vodaan krjottaa muodossa jossa n 1 2 J ( w) w CI( ), (2.20) 2 1 1, 0 I( ) (2.21) 0, 0 on Tässä C on postvnen vako, joka määrää margnaalen väln jääven psteden vakutuksen lopputulokseen. Mtä suuremp C:n arvo, stä enemmän nästä pstestä sakotetaan. Tätä menetelmää kutsutaan nmellä C-SVM.[3] Tonen tapa vakuttaa margnaalen ssään ta nden väärälle puolelle jääven psteden määrään on nmeltään ν-svm. Tarkotuksena on parametrn ν avulla

2. Käytetyt menetelmät 8 kontrolloda margnaalen leveyttä paremmn kun parametrn C avulla. Krjotetaan margnaaln määräven tasojen yhtälö muodossa g( x) w T x b, (2.22) jossa ( 0) on optmotava muuttuja, joka määrää tasojen sjannn. Yhtälö (2.14) vodaan nyt krjottaa muodossa 1 J ( w) w, (2.23) 2 n 2 1 n 1 jossa parametrlla ν ( 0 1) vodaan säätää sekä margnaalen leveyttä. ν myös asettaa ylärajat opetusvrheelle sekä tukvektoreden määrälle kaavojen P (2.24) e n n s (2.25) mukasest. Kaavossa P e on opetusvrhe, n opetusnäytteden lukumäärä ja n s tukvektoreden lukumäärä.[4] 2.2.3. Kernelfunktot Tukvektorkoneden yhteydessä käytetään ylesest ns. kernelfunktota, joden avulla näyteavaruuden erotnpnta vodaan luoda korkeampulottesessa avaruudessa. Etuna tässä tavassa on, että näyteavaruudessa lneaarsest erottamattomat näytejoukot on mahdollsta erottaa lneaarsella erotnrajapnnalla korkeampulottesessa avaruudessa. Nän muodostettu luoktn on lneaarnen valtussa korkeampulottesessa avaruudessa, mutta epälneaarnen tse näyteavaruudessa. Tukvektoreden laskemsessa tse näytteet lmenevät näytepsteden välsnä pstetulona x x j, mkä nähdään krjottamalla yhtälö (2.12) muodossa Ns T T g( x) w x b y x x b (2.26) 1 j Kernelfunkto e ole yksttäsen näytteen muunnos korkeampulotteseen avaruuteen vaan se kertoo näytteden pstetulon korkeampulottesessa avaruudessa.[3] Yksttäsen näytteen muunnosta korkeampulotteseen avaruuteen e ole edes tarpeen tetää, vaan erotnrajapnta vodaan laskea käyttäen kernelfunkton tarjoama pstetuloja. Tyypllsä esmerkkejä kernelfunktosta on estetty taulukossa 2.1. Taulukko 2.1: Tyypllsä kernerlfunktota [5; 6] Kernelfunkton nm Kernelfunkton yhtälö d:nnen asteen polynom d K( x, z) ( x T z 1), d 0 sädefunkto (Radal Bass Functon, RBF) K ( x, z) exp x z 2 hyperbolnen tangentt (Sgmod) T K ( x, z) tanh( x z ) 2

2. Käytetyt menetelmät 9 2.3. Hermoverkot Hermoverkot (Neural Networks, NN) ovat usean luokan luoktukseen soveltuva menetelmä, joka jäljttelee bologsa hermoverkkoja. Verkko rakentuu solmusta ja nden välsstä yhteyksstä. 2.3.1. Verkon rakenne Solmut vodaan jakaa kerroksn sen mukaan, mssä osassa verkkoa ne sjatsevat. Verkko koostuu ssäänmenokerroksesta, yhdestä ta useammasta plokerroksesta (hdden layer) sekä yhdestä ulostulokerroksesta. Kuvassa 2.4 on havannollstettu hermoverkko, jolla on ssäänmeno- ja ulostulokerroksen lsäks yks plokerros. Järjestelmän ssäänmenot on kuvattu nuollla, jotka osottavat ylmpään kerrokseen el ssäänmenokerrokseen. Ssäänmenokerroksen ulostuloja käytetään plokerroksen ssäänmenona ja vastaavast plokerroksen ulostuloja ulostulokerroksen ssäänmenona. Yhteydet solmujen välllä ovat ana kahden verekkäsen kerroksen välllä ja jokasesta solmusta on yhteys kakkn stä edeltävän ja seuraavan kerroksen solmuhn.[7] Kuva 2.4: Hermoverkko, jossa on ssäänmeno- ja ulostulokerroksen lsäks yks plokerros.

2. Käytetyt menetelmät 10 Käytettäessä verkkoa luoktteluun, verkon ssäänmenohn syötetään luokteltavan näytteen arvo sten, että kukn prre syötetään omaan ssäänmenoonsa. Verkon ulostulona on näytteen luokka nn, että ulostuloja on yhtä monta kun mahdollsa luokka ja van yks ulostulo kerrallaan on aktvnen. Kerrostasolla verkko tom sten, että järjestelmän ssäänmeno syötetään ssäänmenokerrokseen, joka tuottaa ulostulot plokerrokselle ja se taas vastaavast ulostulokerrokselle. 2.3.2. Yksttäsen solmun rakenne Kakken verkon solmujen vodaan ajatella tomvan samalla peraatteella. Verkon solmu on estetty kuvassa 2.5. Solmu laskee ssääntulojensa panotetun summa, ets tetyn funkton arvon tämän summan määräämässä psteessä ja antaa tämän arvon ulostulohnsa. x 1 x 2 x p w k1 w k2 w kp Σ u k θ k y k Kuva 2.5: Hermoverkon solmun rakenne. Ssäänmenokerroksessa kukn solmu saa van yhden ssäänmenon ja välttää tämän ulostulonsa kautta kaklle (ensmmäsen) plokerroksen solmulle. Solmun ssäänmenoja on merktty kuvassa 2.5 x 1, x 2,, x p. Solmu laskee ssäänmenojensa panotetun summan käyttäen panoja w k1, w k2,, w kp. Nän saatu arvo u k syötetään solmun aktvontfuntolle, joka laskee ulostulon y k kaavalla y k ( u k k ), (2.27) jossa y k on solmun ulostulo, () on solmun aktvontfunkto, u k solmun ssäänmenojen panotettu summa ja k kynnysarvo.[8]

2. Käytetyt menetelmät 11 2.3.3. Verkon opettamnen Jotta hermoverkkoa vodaan käyttää luoktteluun, ptää verkon rakenne ja solmujen panovektort sekä aktvontfunktot määrttää. Työssä käytetään tähän kahta opetustapaa, jotka perustuvat luoktusvrheen etenemseen verkossa pänvastaseen suuntaan normaaln luoktuskäyttöön verrattuna. Vrheen takasnetenemnen (Error Backpropagaton ta Backpropagaton) on algortm, jonka tarkotuksena on löytää verkon parametrelle arvot nn, että opetusdatan luoktusvrhe mnmotuu. Määrtellään opetusvrhe penmpään nelösummaan perustuen kaavalla c 1 2 1 2 J( w ) ( t k z k ) t z, (2.28) 2 2 k1 jossa w on matrs, joka ssältää verkon solmujen panovektort, c on ulostulojen lukumäärä, t haluttu ulostulovektor, z saatu ulostulovektor ja t k, z k näden vektoren k:s komponentt el yhden ulostulokerroksen solmun ulostulo. [8] Alussa w alustetaan satunnaslla arvolla. Panoja muutetaan suuntaan, joka penetää opetusvrhettä el J w, (2.29) w mssä on opetusnopeuden parametr, joka määrää muutoksen suuruuden. [8] Algortm tom teratvsest nn, että se syöttää verkkoon ssäänmenon el opetusdatan näytteen, laskee w :n ja muuttaa panomatrsa w kaavan w( m 1) w( m) w( m) (2.30) mukasest. Yksttäsen solmun panovektorn muutos lasketaan kaavalla w kj p ' ( t z ) ( x w ) y, (2.31) k k j0 j kj j jossa p on ssäänmenojen lukumäärä, x j j:nnen ssäänmenon arvo ja y j solmun ulostulo. Huomaa, että w k0 on kuvassa 2.5 estetty kynnysarvo k. [2] Vrheen takasnetenemnen käyttää gradentn lasketutumseen (gradent descent) perustuvaa tapaa muuttaessaan panoja. Muutoksen suuruuden määräävän parametrn valnta on tärkeä algortmn tomnnan kannalta. Lan pen arvo johtaa lan htaaseen oppmseen kun taas lan suur arvo saattaa johtaa shen, että optmaalsta arvoa e löydetä. [2] Tähän ongelmaan pyrk löytämään ratkasun vrheen takasnetememsalgortmsta luotu paranneltu verso nmeltään joustava etenemnen (reslent propagaton, RPROP). RPROP lsää jokaselle yksttäselle panolle w k pävtysarvon, joka määrää tämän panon muutoksen suuruuden. Tarkotuksena on nopeuttaa oppmsta ja parantaa mahdollsuuksa löytää optmaalnen arvo panolle. Pävtysarvo määrtellään kaavalla

2. Käytetyt menetelmät 12 mssä ( m) kj ( ( m1) kj m kj J, w ( m1) kj ( m1) J w 1) J J, wkj w ( m1), muullon 0 1. Kaavassa kj parametrt. Jos osttasdervaatta kj kj ( m) kj ( m) 0 0, (2.32) on pävtysarvo ja J w kj, ovat opetusnopeuden muuttaa merkkään edellseen teraatoon verrattuna, haettu mnm ohtettn, joten pävtysarvoa penennetään kertomalla edellnen arvo :lla. Jos taas osttasdervaatan merkk pysyy samana, kasvatetaan pävtysarvoa oppmsen nopeuttamseks kertomalla edellnen arvo :lla. Pävtysarvojen laskemsen jälkeen lasketaan varsnasten panojen muutokset kaavan ( m) ( m) J kj, 0 wkj ( m) m ( m) J wkj kj, 0 (2.33) wkj 0, muullon mukasest ja pävtetään panot kaavan (2.32) mukasest. Muutoksen suunta on kaavan (2.33) mukasest nn, että osttasdervaatan ollessa postvnen, vrhe on kasvanut, joten panoa penennetään ja pänvaston. Pokkeuksena tähän sääntöön osttasdervaatan merkn muuttuessa, el kun ollaan ohtettu etstty mnm, lasketaan panon muutos kaavalla ( m1) ( m) ( m) ( m1) J J w kj wkj, 0, (2.34) w w kj kj mkä mahdollstaa peruuttamsen ja nän mnmn etsmsen uudelleen seuraavalla teraatolla.[9]

13 3. MENETELMIEN TESTAUS Työssä vertaltn edellsessä luvussa kuvattuja kolmea luoktusmenetelmää hyödyntäen osn olemassaoleva toteutuksa. Tässä luvussa estellään menetelmen testaus. Lneaarsta dskrmnanttanalyysa testattn Matlabn avulla ja tukvektorkoneta sekä hermoverkkoja käyttäen avomen lähdekoodn OpenCV-konenäkökrjaston [10] tarjoama koneoppmsluokka. 3.1. Opetus- ja testanesto Testausdatana käytettn vapaast saatavlla olevaa MNIST-tetokantaa, joka muodostuu opetusdatasta ja erllsestä testdatasta. Opetusdata koostuu 60000:sta käsnkrjotetusta numerosta 28x28 pkseln kokosna harmaasävykuvna, josta esmerkkejä on kuvassa 3.1, sekä nätä vastaavsta luoksta el numeroarvosta. Testdata on ssällöltään vastaava, mutta numerota on 10000. Kuva 3.1: Esmerkkejä MNIST-aneston ssältämstä numerosta. Varsnanen data on MNIST-anestossa bnäärdataa, jossa kukn numeroa vastaava kuva on estetty 28x28 tavun jonona. [11] Yksttänen numero koostuu 28x28=784:stä pkselstä. Luokttmen opetuksessa ja testauksessa käytettn prtenä näden pkselen arvoja. Prtedenrrotusta e tehty, sllä työssä kesktyttn puhtaast luokttmen vertaluun. Kukn luoktn opetettn käyttäen MNIST:n opetusdataa ja luokttmen vrheprosentt laskettn luokttamalla MNIST:n testdata ja laskemalla väärn luokteltujen näytteden määrän suhde testdatan näytteden määrään. MNIST-

3. Menetelmen testaus 14 anestosta on saatavlla myös vertalutuloksa er luokttmlle, jota käytettn hyödyks tulosten analysonnssa. [12] 3.2. Fshern lneaarsen dskrmnanttanalyysn testaus Lneaarsen dskrmnanttanalyysn testausta varten krjotettn omat Matlab-funktot, jotka laskevat yhtälön (2.10) mnmovan matrsn W, projsovat luokteltavat näytteet sekä luokken keskpsteet tämän matrsn avulla ja luokttavat näytteet lähmpään luokkakeskpsteeseen. Tämän toteuttavat Matlab-funktot on estetty ltteessä A. 3.3. Tukvektorkoneden testaus Tukvektorkoneta testattn hyödyntäen OpenCV-konenäkökrjaston tarjoamaa C++kelellä krjotettua SVM-luokkaa. Testausta varten krjotettn oma Tukvektorkoneluokka, joka hyödyntää funktossaan OpenCV:n valmsta SVM-luokkaa.[10] Tällä pyrttn tosaalta helpottamaan parametren vahtamsta er testajojen välllä ja tosaalta mahdollstamaan tulosten helppo tallentamnen jokasen testajon jälkeen. Tukvektorkone-luokan rajapnta on estetty ltteessä B. Testauksessa käytettn luvussa 2 estettyjä tukvektorkonetyyppejä C-SVM ja ν- SVM. C-SVM:lle pyrttn hakemaan parhaan tuloksen el penmmän testvrheprosentn antava arvo parametrlle C ja ν-svm:lle vastaavast parametrlle ν. Kumpaakn tyyppä testattn RBF-kernelfunktolla sekä lman varsnasta kernelfunktota (lneaarnen kernel). Muta taulukossa 2.1 estettyä kernelfunktota e testattu optmotaven parametren suuren määrän ja rajallsen testausajan vuoks. RBFkernelfunktolle pyrttn optmomaan parametr γ kullonkn testattavalle parametrlle C/ν. Testaus tapahtu kummallakn SVM-tyypllä valtsemalla ensn arvo parametrlle C/ν ja testaamalla sekä lneaarsta että RBF-kernelfunktota tällä arvolla käymällä läp joukko kernelfunkton parametreja. Parametren arvoja etsttn käyttämällä ensn mahdollsmman laajaa arvoaluetta, kasvattaen tarkkuutta sllä välllä, jolle testdatan luoktusvrhe ol penn. Samaan akaan kullekn parametren C/ν arvolle etsttn RBFkerneln tapauksessa arvoa parametrlle γ vastaavalla peraatteella. C:lle käytettn arvoja välltä [2-5, 2 5 ], ν:lle välltä [0.01, 0.9] ja γ:lle välltä [2-40, 2 24 ]. Kullekn testatulle parametryhdstelmälle laskettn testvrhe MNIST:n testdatalla. Opetuksen lopetuskrteerenä käytettn teststä rppuen 5-50:tä datan läpkäyntä ta opetusvrheprosentn tppumsta alle yhden prosentn. 3.4. Hermoverkkojen testaus Hermoverkkojen testaus toteutettn vastaavast kuten tukvektorkonelle. Testausta varten luotn Hermoverkko-luokka, jonka rajapnta on estetty ltteessä C Hermoverkko-luokka käyttää OpenCV:n valmsta ANN_MLP-luokkaa (Artfcal

3. Menetelmen testaus 15 Neural Network, Multlayer Perceptron).[10] Työssä testattn luvussa 2 estettyjä opetusmenetelmä el vrheen takasnetenemstä (error backpropagaton) ja joustavaa etenemstä (reslent propagaton, RPROP). Kumpaakn opetusmenetelmää testattn erkokoslla verkolla, jotka koostuvat ssääntulo- ja ulostulokerroksen lsäks yhdestä plokerroksesta. Plokerroksen koolle testattn solmujen lukumäärä välltä [25, 900]. Vrheen takasnetenemsen tapauksessa opetuksessa käytettn opetusnopeuden parametrn arvona lukuja välltä [0.0001, 0.1]. Suurn osa testestä tehtn käyttäen arvoa 0,001. Joustavan etenemsen kohdalla asetettava parametreja on vs: opetusnopeuden parametrt, sekä opetusnopeuden alkuarvo 0. Testessä 0 :lle on käytettn arvoja välltä [0.001, 0.01]. Lsäks parametrena ovat opetusnopeuden mnm- ja maksmarvot, jolle työssä on käytetty arvoja välltä [10-10, 10-2 ] mnmlle ja välltä [1, 500] maksmlle. Joustavan etenemsen testauksessa pyrttn löytämään parhaat arvot opetusnopeuden parametrelle olvat välllä [0.01, 0.5] ja sten, että testvrhe mnmotuu. Käytetyt arvot :lle ja välllä [1.1, 1.5] :lle.

16 4. TULOKSET Tässä luvussa estellään löydetyt tulokset sekä huomota testausprosesssta. Kakken yl 2500:n opetetun ja testatun luokttmen tuloksa e ole estetty, vaan on ptäydytty menetelmen vertalun sekä yksttästen menetelmen käytön kannalta olennasssa tuloksssa. Elle tosn ole manttu, luoktusvrheprosentt on laskettu luokttmlla, jotka on opetettu käyttäen 10000:ta opetusdatan näytettä koko opetusdatan sjaan opetuksen nopeuttamseks. 4.1. Menetelmen vertalu Taulukossa 4.1 on estetty paras kullakn menetelmällä saavutettu testvrheprosentt. Taulukon arvojen laskennassa on käytetty luokttma, jotka on opetettu käyttäen kakka opetusdatan 60000:ta näytettä. Taulukko 4.1: Penmmät saavutetut testvrheprosentt menetelmttän Menetelmä Testvrheprosentt Lneaarnen dskrmnanttanalyys 18,16 Tukvektorkoneet 4,65 Hermoverkot 3,06 Tukvektorkoneden tapauksessa tämä saavutettn käyttäen C-SVM-menetelmää RBF-kernelfunktolla parametrella C=0,1 ja γ=2-20. Hermoverkkojen tapauksessa taas vrheen takasnetenemsmenetelmällä verkolla, jossa plokerroksessa ol 500 solmua opetusnopeuden η ollessa 0,001. Näden tulosten valossa MNIST-aneston luoktuksessa paras menetelmä ol hermoverkot, tukvektorkoneden saavuttessa lähes saman tuloksen. Huonomman tuloksen anto LDA. Tukvektorkonella on saavutettu samalle anestolle muden tomesta vastaavalla menetelmällä non yhden prosentn luoktusvrhetä, joten saatu tulos on nätä huomattavast hekomp. Hermoverkolla taas tulokset ovat vertalukohtn nähden non puoltosta prosenttykskköä alhasemmat. [12] 4.2. Parametren vakutus luoktusvrheeseen Tukvektorkoneden ja hermoverkkojen er parametren valnnalla ol huomattava vakutus lopputulokseen. Tässä kappaleessa estellään testattujen parametren vakutusta testaneston luoktusvrheeseen.

4. Tulokset 17 4.2.1. Tukvektorkoneden sekä kernelen parametren vakutus Tukvektorkoneden kohdalla opetettaessa luoktnta C-SVM menetelmällä parametrn C vakutus luoktusvrheeseen on estetty kuvassa 4.1. Kuvan käyrä esttää testdatan luoktusvrheprosentta er C:n arvolla käytettäessä lneaarsta kernelfunktota. Kuva 4.1: Parametrn C vakutus testdatan luoktusvrheeseen C-SVM menetelmällä käytettäessä lneaarsta kernelfunktota. Lan suur arvo C:lle sakott margnaalen väln ta nden väärällä puolelle jäänestä näyttestä lkaa, mkä nost vrheprosentta. Penentämällä C:n arvoa tetyn psteen alle se e enää vakuttanut lneaarsen kerneln tapauksessa luoktusvrheeseen. Käytetäessä RBF-kernelä lan pen C:n arvo taas nost vrheprosentta, sllä väärn luoktellusta pstestä e enää sakotettu rttäväst. C:n arvon valnnalla on vakutusta luoktusvrheeseen, mutta käytettäessä esmerkks RBF-kernelä parametrn γ valnnalla on C:tä suuremp merktys. Kuvassa 4.2 on estetty parametrn ν vakutus luoktusvrheeseen opetettaessa tukvektorkone ν-svm menetelmällä käytettäessä RBF-kernelfunktota parametrn γ ollessa 2-20.

4. Tulokset 18 Kuva 4.2: Parametrn ν vakutus testdatan luoktusvrheeseen ν-svm menetelmällä. Lan pen arvo ν:lle johtaa peneen opetusvrheprosenttn kaavan (2.24) mukasest, jollon vaarana on, että luoktn ylopp opetusdatan ekä enää tom hyvn testdatalla. Lan suur arvo taas johtaa shen, ette luoktn op luoktusongelman malla rttävän hyvn, mkä aheuttaa testvrheprosentn kasvamsen. RBF-kerneln parametrn γ vakutus luoktusvrheeseen on estetty kuvassa 4.3. Kuvan käyrä esttää vrheprosentta er γ:n arvolla sekä C-SVM menetelmällä C:n arvolla 0,1 että ν-svm menetelmällä ν:n arvolla 0,05. Kuva 4.3: RBF-kernelfunkton parametrn γ vakutus testdatan luoktusvrheeseen. Kuva 4.3 näyttää, mten lan suur arvo γ:lle nostaa luoktusvrheen setämättömälle tasolle, sllä kakk näytteet luokteltn sllon samaan luokkaan. Vastaavas lan pen

4. Tulokset 19 arvo joht shen, että luokka e pystytty erottamaan tosstaan. Parhaat tulokset saavutettn musta parametresta rppumatta γ:n ollessa luokkaa 2-20. 4.2.2. Hermoverkkojen parametren vakutus Hermoverkolla verkon luoktuskyvyn määräävä tekjä ol plokerroksen koko. Koon vakutuksen eslle saamseks anesto pt käydä läp rttävän monta kertaa, sllä suuremmat verkot evät ehtneet löytää penntä vrheprosenttaan yhtä nopeast kun penemmät. Testdatan luoktusvrhe vrheen takasnetenemsmenetelmää käytettäessä on estetty kuvassa 4.4. Käyrät esttävät testdatan luoktusvrhettä 25:n ja 50:n datanläpkäyntkerran tapauksssa, kun luoktn opetettn muuten denttsllä parametrella käyttäen 10000:ta opetusnäytettä. Lsäks kuvassa on estetty luoktusvrhe, kun luoktn opetettn käyttäen kakka opetusdatan 60000:ta näytettä 100:lla datan läpkäyntkerralla. Kuva 4.4: Plokerroksen koon ja datanläpkäyntmäären vakutus luoktusvrheeseen. Datan läpkäyntkertojen määrä vakuttaa luoktusvrheprosenttn huomattavast. Ertysest suurmmlla testatulla plokerroksen kolla vaadttn huomattavast pdemp opetusprosess penempn verkkohn verrattuna, jotta luoktn eht asettaa kakk muuttujansa optmaalsn arvohn. Tämä on nähtävssä kuvan käyren erosta plokerroksen kokojen ollessa 200-400. Teoran perusteella RPROP-menetelmällä ptäs saavuttaa samat tulokset kun vrheen takasnetemsellä, veläpä nopeammn, mutta testessä e löydetty yhtä hyvä tuloksa tuottava parametreja tälle menetelmälle.

4. Tulokset 20 4.3. Huomota menetelmen käytöstä Menetelmstä LDA on helpon käyttää, sllä se e vaad parametren asettamsta. Tämän vo nähdä myös LDA:n hekkona kohtana; LDA:ta e pysty säätämään parametren avulla tuottamaan parempa tuloksa. Hermoverkkojen opetus ol suhteellsen suoravvasta. Hyvään tulokseen päästn käyttämällä rttävän pentä opetusnopeutta ja rttävää määrää datan läpkäyntejä. Tosn RPROP-menetelmällä opetusparametren löytämnen ol vrheen takasnetenemsmenetelmää vakeampaa, ekä samohn tuloksn päästy. Tukvektorkoneden parametren etsmnen ol haastavnta, ekä esmerkks kaklle käytettävssä ollelle kernelfunktolle löydetty sopva parametreja työn puttessa. 4.4. Tulosten arvont Parametren arvojen valnta tukvektorkoneden ja hermoverkkojen kohdalla vakuttaa suurest luokttmen suortuskykyyn. Rajallsesta ajasta ja kysesten menetelmen opettamsen laskennallsesta raskaudesta johtuen parametrelle ol mahdollsta testata van pen määrä arvoja. Erlaslla parametrella menetelmen suortuskyky ols vonut muuttua huomattavastkn. Tästä johtuen menetelmen testauksessa saadut tulokset vrheprosentelle ovat suuntaa-antava, ekä ntä voda suoraan käyttää kertomaan, mkä menetelmstä on paras edes kysesen aneston luokttamseen. Luvussa 3 estettyjen parametren lsäks tukvektorkoneden ja hermoverkkojen opetuksessa käytetyt arvot opetuksen lopetuskrteerelle ovat rttämättömä. Vakka lopetuskrteert olvat yhdstelmä vrheen laskemsesta tetyn tason alle ja datan läpkäyntkertojen lukumäärästä, e kaklla parametren yhdstelmllä saavutettu asetettua vrheprosentn rajaa opetuksen lopettamsehdossa. Tällön opetuksen laajuuden määräs pelkästään datan läpkäyntkertojen lukumäärä, joka ol käytössä olleen tetokoneen laskentatehon rajallsuudesta johtuen pdettävä penenä, jotta votn kokella mahdollsmman mona parametren yhdstelmä. Käytetyn yhden prosentn opetusvrheprosentn rajan sjaan ols votu käyttää penempää rajaa, mutta yhteen prosenttn päädyttn opetusakojen ptämsessä järkevssä rajossa. Monen parametryhdstelmen tuottamat vrheprosentt olsvatkn todennäkösest laskeneet pdemmän opetusprosessn myötä, mkä todettn yksttässsä kokelussa ja on nähtävssä myös kuvasta 4.4.

21 5. YHTEENVETO Kakk työssä käytetyt luokttmet onnstuvat luokttelussa ennakko-odotusten mukasest. Käytetystä anestosta ja aneston eskästtelyn puutteesta johtuen puhtaast lneaarset luokttmet evät päässeet yhtä alhasn vrheprosenttehn kun epälneaarset klpakumppannsa. Suurmpana haasteena tukvektorkoneden ja hermoverkkojen tapauksssa ol löytää luokteltavalle anestolle parhaten soveltuvat parametren arvot. Luokteltaven prteden suuresta ulottuvuudesta johtuen parametren etsmseks vaadtut lukusat luokttmen opettamset olvat laskennallsest hyvn raskata, mkä rajott testatun parametrjoukon määrää. Vakka tulokset evät olleetkaan luoktusvrheprosenteltaan parhata mahdollsa, löydettn testattujen parametren vakutukset luoktusvrheprosenttn, joden perusteella paremman luoktusvrheprosentn tuottaven parametren arvojen löytämnen ols suoravvasta. Luoktustuloksa ols mahdollsta parantaa myös laajentamalla luokttmen vertalua kästtämään myös aneston eskästtely.

22 LÄHTEET [1] C. Bshop, Pattern Recognton and Machne Learnng, Sprnger, 2006. [2] R. Duda, P. Hart & D. Stork, Pattern Classfcaton, John Wley & Sons, 2001. [3] V. Kecman, Learnng and Soft Computng: support vector machnes, neural networks and fuzzy logc models, MIT Press, 2001. [4] S. Theodords, K. Koutroumbas, Pattern Recognton, Academc Press, 2006. [5] C.J.C. Burges, A Tutoral on Support Vector Machnes for Pattern Recognton, Sprnger, 1998. [6] T. Hofmann, B. Schölkopf, A.J. Smola, Kernel Methods n Machne Learnng, The Annals of Statstcs, vol. 36, 2008, pp. 1171-1220. [7] B. Jähne, H. Haubecker, P. Gebler, Handbook of Computer Vson and Applcatons, Sgnal Processng and Pattern Recognton, vol 2, Academc Press, 1999. [8] S. Haykn, Neural Networks: A Comprehensve Foundaton, Prentce Hall, 1994. [9] M. Redmller, H. Braun, A Drect Adaptve Method for Faster Backpropagaton Learnng: The RPROP, Neural Networks: IEEE nternatonal conference, vol. 1, 1993, pp. 586-591. [10] OpenCV Wk, May 2010; http://opencv.wllowgarage.com/wk/ [11] Y. LeCun, C. Cortes, MNIST handwrtten dgt database, May 2010; http://yann.lecun.com/exdb/mnst/ndex.html. [12] Y. LeCun et al., Gradent-Based Learnng Appled to Document Recognton, Proceedngs of the IEEE, November, 1998.

23 LIITE A: LDA-LUOKITTELIJAN TOTEUTTAVA MATLAB-KOODI LDA_tester.m clc clear all close all %LDA-tester kandntyöhön %% luetaan MNIST-data %opetuslabelt flen='tran-labels.dx1-ubyte'; fd = fopen(flen,'r','eee-be'); olh = fread(fd,2,'unt32'); %OpetusLabelHeaders ols = fread(fd,olh(2),'unt8'); %OpetusLabelS fclose(fd); %opetusdata flen='tran-mages.dx3-ubyte'; fd = fopen(flen,'r','eee-be'); odh = fread(fd,4,'unt32'); %luetaan data 60000 x (28x28) matrsn (2D) rv kerrallaan od = zeros(odh(2), odh(3)*odh(4) ); %60000 x (28*28) matrs for =1:odh(2) od(,:) = fread( fd, odh(3)*odh(4), 'unt8'); end fclose(fd); %testlabelt flen='t10k-labels.dx1-ubyte'; fd = fopen(flen,'r','eee-be'); tlh = fread(fd,2,'unt32'); %TranngLabelHeaders tls = fread(fd,tlh(2),'unt8'); %TranngLabelS fclose(fd); %testdata flen='t10k-mages.dx3-ubyte'; fd = fopen(flen,'r','eee-be'); tdh = fread(fd,4,'unt32'); %luetaan data 10000 x (28x28) matrsn (2D) rv kerrallaan td = zeros(tdh(2), tdh(3)*tdh(4) ); %10000 x (28*28) matrs for =1:tdh(2) td(,:) = fread( fd, tdh(3)*tdh(4), 'unt8'); end fclose(fd); %Näytä muutama kuva, jotta nähdään datan lukemsen onnstumnen fgure; kuva=5; for =1:kuva kuva = reshape(td(,:), 28, 28)'; %muutetaan 784-ptunen rv -> 28x28 subplot(1,kuva,); mshow(kuva,[]); %näytetään kuva end

LIITE A: LDA-luoktteljan toteuttava Matlab-kood 24 %el opetusdata: od, opetuslabelt: ols % testdata: td, testlabelt: tls [W,M]=opetaLDA( od, ols ); %luoktellaan dataa vaara = 0; %väärn luokteltuja näyttetä naytteta = sze(td,1); %testnäytteden lukumääräs luokat = []; %tähän tallennetaan luokteltaven näytteden luoktukset for = 1 : naytteta [luokka, etasyydet] = luokttelelda( td(,:), W,M); luokat = [luokat luokka]; okealuokka = tls(,1); f luokka ~= okealuokka vaara = vaara + 1; end end %Näytetään tulostettuja kuva vastaavat luoktukset luoktustulokset=luokat(1:kuva) %sekä nden okeat luokat okeat_luokat=tls(1:kuva)' %Näytetään vrheprosentt vrheprosentt = 100*(vaara/naytteta) opetalda.m functon [W, M] = opetalda( data, luokat ) %% Funkto, joka opettaa Fshern LDA-luokttmen %Parametrt: % data: n x d kokonen matrs, jossa d on näytevektoreden ptuus ja % n näytteden lukumäärä. data:n rv on yksttänen opetusnäyte, % datan sarake taas taas yhden prteen arvoja. % luokat: n x 1 kokonen vektor, joka ssältää data:n % näyttetä vastaavat luokat arvona nollasta c:hen %Paluuarvo: % W: Muunnosmatrs, jolla luokteltavat psteet vodaan % muuntaa luokkenlkm-1 avaruuteen % M: Luokken keskpsteet luokkenlkm-1 avaruudessa % %Noudattelee Duda, R., Hart, E., Stork D. : Pattern Classfcaton %-krjassa kuvattua tapaa (kappale 3.8.3, svu 121->) %% Lasketaan ssänen hajontamatrs luokkenlkm = max(luokat(:)) + 1; %luokken lukumäärä pptuus = sze(data,2); %prrevektorn ptuus lk_kat = zeros(luokkenlkm, pptuus); %luokkakeskarvot (rvvektoreta) %(Luokken yhtenen) ssänen hajontamatrs Sw = zeros( pptuus, pptuus ); %luokken keskarvot ja hajontamatrst for =1:luokkenLKM nd = fnd( luokat == -1 ); %luokan näytteden ndekst

LIITE A: LDA-luoktteljan toteuttava Matlab-kood 25 lk_kat(,:) = mean(data(nd,:),1); %luokkakeskarvot %Varsnanen hajontamatrs luokken kovaranssmatrsen summana Sw = Sw + cov( data(nd,:) ); end %% Lasketaan luokken välnen hajontamatrs Sb = cov( data ); %% Ratkastaan W % %yhtälöstä J(W)=abs(W'SbW)/abs(W'SwW) %ratkastaan W, käytetään matrsn nverssn sjaan pseudonverssä, %sllä matrs e ole postvdefntt [U,S,W, flag]=svds( pnv(sw)*sb, luokkenlkm-1); %% Lasketaan velä W:n avulla muunnetut luokkakeskpsteet M = zeros(luokkenlkm, luokkenlkm-1); %jokaselle luokalle omansa for = 1:luokkenLKM M(,:)= (W'*lk_kat(,:)')'; end %Ja opetus on valms luokttelelda.m functon [luokka, etasyydet] = luokttelelda( nayte, W, M ) %% Funkto, joka luokttelee yhden naytteen % %Parametrt: % W: Muunnosmatrs W (tällä vo muuntaa luokteltavan näytteen % c-1 avaruuteen, jossa c on luokken määrä) % M: Luokken keskpsteet c-1 avaruudessa % (molemma parametrt saadaan opetalda-funktolla %% Muunnos c-1 avaruuteen y = ( W'*nayte' )'; %% Etäsyyden laskemnen kuhunkn luokkakeskpsteeseen luokkenlkm = sze(m,1); etasyydet = zeros(1, luokkenlkm); for = 1:luokkenLKM etasyydet(1,) = sqrt( sum( (y-m(,:)).^2 ) ); end %palautetaan luokka. %-1 sks, että ensmmänen rv M:ssä vastaa luokkaa nmeltä 0 luokka = fnd( etasyydet==mn(etasyydet) ) - 1;

26 LIITE B: TUKIVEKTORIKONE-LUOKAN RAJAPINTA #nclude <ml.h> //OpenCV:n koneoppmskrjasto #nclude <strng> //OpenCV:n tukvektorluokasta CvSVM perytetty oma luokka /* Käyttö: 1. Luo uus nstanss (oletus)rakentajalla (2. Hae arvot parametrelle funktolla haeparametrt) JOKO 3. Opeta tukvektorkone opeta-funktolla datan perusteella TAI 3. Hae aemmn opetettu tukvektorkone tedostosta opeta-funktolla 4. Luokttele joukko dataa ta yksttänen näyte luoktteledata ta luokttelenayte -funktolla */ class Tukvektorkone : publc CvSVM { publc: //Oletusrakentaja //Luo tukvektorkoneen, e suorta velä opetustta Tukvektorkone(); //Purkaja ~Tukvektorkone(); //Parametren haku (vapaaehtonen) //Hakee datan perusteella arvot kullekn parametrlle //Opettaaa myös tukvektorkoneen, joten jo tämän //jälkeen luokttelu on mahdollsta // //parametrt: // opetusdata: opetuksessa käytettävä data // labelt: opetusdatan näyttetä vastaavat luokat // svm_tyyypp: cv::svm::nu_svc ta cv::svm::c_svc // kerneltyypp: cv::svm::linear, cv::svm::poly, cv::svm::rbf ta // cv::svm::sigmoid // kerroksa: datan läpkäyntkertojen määrä cv::svmparams haeparametrt( const cv::mat& opetusdata, const cv::mat& labelt, const nt svmtyypp, const nt kerneltyypp, const nt kerroksa = 1 ); //Varsnanen opetus //Opettaa tukvektorkoneen käyttäen annettuja parametreja. //Parametrt vodaan hakea haeparametrt-funktolla //ta määrttää käsn. // //parametrt: // parametrt: luokttmen opetusparametrt, ks. ref.manual // muut: ks. haeparametrt-funkton esttely vod opeta( const cv::mat& opetusdata, const cv::mat& labelt, const nt svm_tyypp, const nt kerneltyypp, const cv::svmparams parametrt ); //"Opettaa" tukvektorkoneen //Funkto lataa aemmn opetetun tukvektorkoneen //annetusta tedostosta // //parametrt: // tedostonnm: tedoston nm, josta aemmn // tallennettu SVM löytyy vod lataa( const std::strng& tedostonnm );

Lte B: Tukvektorkone-luokan rajapnta 27 prvate: }; //Luokttelee annetun näytteen //paluuarvona luokkaa, johon näyte luokteltn // //parametrt: // luokteltava: matrs, jonka anoalla rvllä on // luokteltava näyte nt luokttelenayte( const cv::mat& luokteltava ); //Luokttelee joukon näyttetä //paluuarvona vrheprosentt // //parametrt: // luoktetavat: matrs, joka ssältää luokteltavat näytteet // referensst: näyttetä vastaavat luokken arvot float luoktteledata( const cv::mat& luokteltavat, const cv::mat& referensst ); //Tallentaa opetetun tukvektorkoneen tedostoon // //parametrt: // tedostonnm: tedoston nm, johon SVM tallennetaan vod tallenna( const std::strng& tedostonnm ); //Tyhjentää tukvektorkoneen vod tyhjenna(); cv::svm svm_;

28 LIITE C: HERMOVERKKO-LUOKAN RAJAPINTA #nclude <ml.h> #nclude <strng> //OpenCV:n hermoverkkoluokasta CvANN_MLP perytetty oma luokka /* Käyttö: 1. Luo uus nstanss rakentajalla Hermoverkko(...) JOS verkko e ole valmks opetettu (ladattu tedostosta) NIIN 2. Opeta verkko funktolla Hermoverkko::opeta(...) 3. Käytä verkkoa funktolla Hermoverkko::luokttele(...) */ class Hermoverkko : publc CvANN_MLP { publc: //Rakentaja, jolla vo luoda hermoverkon, jossa on //yks plokerros (hdden layer) // //parametrt: // ssaankoko: ssaanmenokerroksen koko (montako solmua) // plokoko: plotetun kerroksen koko // uloskoko: ulostulokerroksen koko // aktvontfunkto: käytetty aktvontfunkto Hermoverkko( nt ssaankoko, nt plokoko, nt uloskoko, nt aktvontfunkto=cvann_mlp::sigmoid_sym ); //Rakentaja, jolla hermoverkko vodaan luoda valmks tallennetusta //verkosta tedostosta. // //parametrt: // tednm: tallennetun verkon ssältävän tedoston nm Hermoverkko( std::strng& tednm ); //Purkaja ~Hermoverkko(); //Hotaa varsnasen verkon opettamsen // //parametrt: // ssaanmenot: harjotusdata // ulostulot: harjotusdataa vastaavat luokkalabelt // ssaanmenojenpanot: ssaamenojen panotukset // huomotavat: rvt, jotka ssaanmenosta huomodaan // parametrt: verkon opetusparametrt // lput: panojen pävtykseen ja datan skaalaukseen // lttyvät lput vod opeta( const cv::mat& ssaanmenot, const cv::mat& ulostulot, CvANN_MLP_TranParams parametrt, nt lput = 0); //Tällä vo luoktella haluamansa psteen //parametrt: // luokteltava: luokteltava näyte // // paluuarvo: palauttaa sen luokan numeron, johon pste luokteltn nt luokttelenayte( const cv::mat& luokteltava); //Tällä luoktellaan kokonanen matrs (el matrsn //rven ssältämät näytteet) // //parametrt: // luokteltavadata: luokteltava data // referenss: dataa vastaavat luokat (vrheen laskemsta varten) //

Lte C: Hermoverkko-luokan rajapnta 29 prvate: //paluuarvona vrheprosentt float luoktteledata( const cv::mat& luokteltavadata, const cv::mat& referenss ); //tallentaa opetetun verkon tedostoon // //parametrt: // tednm: tedoston nm, johon verkko tallennetaan vod tallenna( std::strng& tednm); //Muuntaa labelt numeromuodosta vektoreks, sllä toteutus e //tue kategorsa arvoja //parametrt: // numerot: (1xn)-kokonen matrs, jonka alkot ovat // numerota yhdestä m:ään (numerot on tyyppä nt) // bnaart: matrs, jonka alkona on n kpl m:n kokosa // float vektoreta (bnaart on tyyppä float) vod numerostabnaarvektorks( const cv::mat& numerot, cv::mat& bnaart ); }; CvANN_MLP* verkko_; nt nsze_; //ssääntulokerroksen koko nt hlsze_; //plokerroksen koko nt outsze_; //ulostulokerroksen koko