implementacija kohonenovih nevronskih mreŽ za operacijski … · operacijski sistem android je...

44
Matija Vrbovšek IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI SISTEM ANDROID Diplomsko delo Maribor, september 2012

Upload: others

Post on 24-Oct-2019

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

Matija Vrbovšek

IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI

SISTEM ANDROID

Diplomsko delo

Maribor, september 2012

Page 2: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ

ZA OPERACIJSKI SISTEM ANDROID

Diplomsko delo

Študent: Matija Vrbovšek

Študijski program: UN

Računalništvo in informacijske tehnologije

Mentor: red. prof. dr. Milan Zorman

Somentor: asist. Bojan Butolen

Lektor: Matej Jazbinšek

Page 3: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

I

Page 4: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

II

ZAHVALA

Zahvaljujem se mentorju prof. dr. Milanu

Zormanu in somentorju asist. Bojanu Butolenu

za pomoč in vodenje pri diplomskem delu

Zahvaljujem se tudi mojim staršem za podporo

pri študiju in Janji za podporo pri izdelavi

diplomskega dela.

Page 5: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

III

Implementacija Kohonenovih nevronskih mrež za

operacijski sistem Android

Ključne besede: Kohonenove nevronske mreže, operacijski sistem Android, 3D-

vizualizacija, parametrične enačbe

UDK: 004.032.26:004.92(043.2)

Povzetek

V diplomski nalogi bo najprej opisan operacijski sistem Android in njegova razvojna

programska oprema, nato pa značilnosti Kohonenove nevronske mreže, njeni parametri in

učni algoritem.

Na operacijski sistem Android je bila implementirana Kohonenova nevronska mreža, za

lažjo interpretacijo delovanja algoritma in izhodov pa je bila narejena vizualizacija njenega

učenja v 3D-prostoru. Učenje je bilo izvedeno s parametričnimi enačbami likov in teles.

Page 6: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

IV

Implementation of Kohonen neural networks for

operating system Android

Keywords: Kohonen neural network, Android operating system, 3D visualization,

parametrical equations

UDK: 004.032.26:004.92(043.2)

Abstract

In this thesis we present the operating system Android, its software development kit and

then the characteristics of Kohonen neural networks, its parameters and a learning

algorithm.

We implemented Kohonen neural network on the operating system Android and for easier

interpretation of the algorithm and the results we show a visualization of training in 3D

space. We train it with parametrical equations of shapes and bodies.

Page 7: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

V

KAZALO

1 UVOD .............................................................................................................. 1

2 OPERACIJSKI SISTEM ANDROID................................................................. 2

2.1 Primerjava z drugimi operacijskimi sistemi za mobilne naprave ...........................4

2.2 Razvojna programska oprema .............................................................................5

3 KOHONENOVE NEVRONSKE MREŽE .......................................................... 8

3.1 Struktura Kohonenove nevronske mreže .............................................................8

3.2 Učenje Kohonenove nevronske mreže ..............................................................10

3.3 Parametri Kohonenove nevronske mreže ..........................................................12

4 OPIS IMPLEMENTACIJE .............................................................................. 15

4.1 Implementacija Kohonenove nevronske mreže ..................................................15

4.2 Enačbe likov in teles ter generiranje vhodnih podatkov ......................................19

4.3 Vizualizacija v 3D-prostoru.................................................................................21

4.4 Rezultati.............................................................................................................25

5 SKLEP ........................................................................................................... 29

VIRI ...................................................................................................................... 30

Page 8: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

VI

KAZALO SLIK

Slika 2.1: Prikaz arhitekture programske opreme operacijskega sistema Android ............. 2

Slika 2.2: Prikaz deleža različnih verzij operacijskega sistema Android ............................. 3

Slika 3.1: Dvodimenzionalna zgradba Kohonenove nevronske mreže ............................... 9

Slika 3.2: Prikaz različnih topologij povezav med nevroni, z leve si sledijo

enodimenzionalna, dvodimenzionalna pravokotna in dvodimenzionalna šesterokotna ...... 9

Slika 3.3: Prikaz oblik Kohonenove mreže, z leve si sledijo navadna mreža, valj brez

osnovnih ploskev in toroid. .............................................................................................. 10

Slika 4.1: Prikaz uporabniškega vmesnika zavihka »Nastavitve« .................................... 16

Slika 4.2: Del algoritma, ki ga uporabljamo za implementacijo navadne mreže ............... 18

Slika 4.3: Metoda za popravljanje uteži za mrežo toroidalne oblike ................................. 19

Slika 4.4: Prikaz uporabniškega vmesnika zavihka »Enačba« ......................................... 20

Slika 4.5: Prikaz zavihka »Vizualizacija« med učenjem Kohonenove mreže .................... 22

Slika 4.6: Metoda onDrawFrame(), kjer se izrisujejo objekti .......................................... 24

Slika 4.7: Del metode draw(), ki izriše neaktivni del Kohonenove mreže ....................... 25

Slika 4.8: Srčnica pri velikosti mreže 12 x 12 in krog pri velikosti 12 x 12 ........................ 27

Slika 4.9: Krogla pri velikosti 25 x 25 in stožec pri enaki velikosti..................................... 28

Slika 4.10: Toroid pri velikosti 15 x 15 in isti toroid z vidno luknjo .................................... 28

KAZALO TABEL

Tabela 2.1: Tabela razlik med operacijskimi sistemi za mobilne naprave .......................... 4

Tabela 2.2: Prikaz orodij, vsebovanih v Android SDK in ADT ............................................ 6

Tabela 2.3: Prikaz različnih velikosti in gostot pikslov mobilnih naprav .............................. 7

Tabela 4.1: Vpliv različnih parametrov na rezultate ......................................................... 25

Tabela 4.2: Vpliv različnih enačb na rezultat .................................................................... 26

Page 9: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

VII

UPORABLJENE KRATICE

OpenGL ES – odprta grafična knjižnica za vgrajene sisteme (angl. Open Graphics Library

for Embedded Systems)

SGL – razširljiva grafična knjižnica (angl. Scalable Graphics Library)

SSL – sloj varnih vtičnic (angl. Secure Socket Layer)

ARM – napredni stroj RISC (angl. Advanced RISC Machine)

RISC – računalnik z majhnim naborom inštrukcij (angl. reduced instruction set computer)

OS – operacijski sistem (angl. operating system)

SDK – razvojna programska oprema (angl. software development kit)

ADT – razvojna orodja Android (angl. Android development tools)

AVD – navidezna naprava Android (angl. Android virtual device)

API – programski vmesnik (angl. application programming interface)

dpi – slikovnik pik na palec (angl. dots per inch)

QVGA – (angl. Quarter Video Graphics Array)

WQVGA - (angl. Wide Quarter Video Graphics Array)

HVGA - (angl. Half-size Video Graphics Array)

WXGA - (angl. Wide Extended Graphics Array)

WVGA - (angl. Wide Video Graphics Array)

Page 10: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je
Page 11: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

1

1 UVOD

Kohonenove nevronske mreže so vrsta umetnih nevronskih mrež, ki jih je implementiral

Teuvo Kohonen leta 1982, in so najbolj znan predstavnik nenadzorovanega učenja

umetnih nevronskih mrež. Njihova uporabnost se kaže v sposobnosti gručenja podatkov

in interpretacije večdimenzionalnih podatkov, ki jih je Kohonenova nevronska mreža

sposobna preslikati v manj dimenzij. Prednost Kohonenove nevronske mreže je, da ji

lahko predstavimo podatke v neurejenem zaporedju, pa jih bo znala sama urediti, medtem

ko je njena slabost težka interpretacija izhodov. Zato je uporabna vizualna interpretacija

podatkov, kar je tudi eden izmed ciljev te diplomske naloge.

Operacijski sistem Android je trenutno najbolj priljubljen operacijski sistem za pametne

telefone, uporablja pa se tudi za druge mobilne naprave, kot so npr. tablični računalniki.

Glavna značilnost mobilnih naprav je intuitivnost uporabniškega vmesnika, kjer interakcija

z objekti na zaslonu deluje prek dotika zaslona, sama naprava pa omogoča interakcijo z

okoljem preko vgrajene strojne opreme (kamera, pospeškometer, kompas) in interneta.

Zaradi teh značilnosti bodo mobilne naprave vedno bolj priljubljene, prav tako pa tudi

operacijski sistem Android, ki je pomemben za prihodnost razvoja mobilnih naprav.

Interpretacija izhodov Kohonenove mreže je zahtevna, zato je dobro rezultate predstaviti

grafično. Android ima implementiran standard OpenGL ES, ki omogoča izrisovanje v 3D-

prostoru, kar je primerno za vizualizacijo izhodov Kohonenove nevronske mreže. To smo

izkoristili za animacijo učenja Kohonenove mreže.

Diploma je razdeljena na pet poglavij. V drugem poglavju predstavimo operacijski sistem

Android in njegove značilnosti ter opišemo, kako na njem poteka razvoj programske

opreme. V tretjem se posvetimo Kohonenovim nevronskim mrežam, predstavimo njihove

značilnosti in povemo, v čem se razlikujejo od umetnih nevronskih mrež. V naslednjih

podpoglavjih prikažemo različne strukture Kohonenovih nevronskih mrež in predstavimo

učenje Kohonenove nevronske mreže. Pri tem zajamemo različne procese, ki so del

učenja, in na koncu definiramo celoten učni algoritem. V zadnjem podpoglavju pri

Kohonenovih nevronskih mrežah predstavimo še različne parametre in izbiro različnih

funkcij, ki vplivajo na učenje Kohonenove nevronske mreže. V zadnjem poglavju opišemo

implementacijo. Pri tem predstavimo, kako je definirana naša Kohonenova nevronska

mreža, kako smo implementirali vizualizacijo izhodov Kohonenove mreže na operacijskem

sistem Android in katere vhodne podatke smo izbrali za učenje. V zadnjem podpoglavju

prikažemo rezultate testiranja naše aplikacije.

Page 12: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

2

2 OPERACIJSKI SISTEM ANDROID

Android je operacijski sistem, vendar ne zgolj to. Je sklad programske opreme, ki poleg

operacijskega sistema vsebuje še ključne aplikacije in vmesni sloj programske opreme,

narejen za razvoj aplikacij. Operacijski sistem Android je sestavljen iz navideznega stroja ,

ki teče na jedru Linux. Razvit je bil s strani Googla in drugih podjetij iz združenja Open

Handset Alliance za mobilne naprave, kot so pametni telefoni in tablični računalniki. Je

odprtokoden operacijski sistem, izdan pod licenco Apache[1].

Na Slika 2.1 je prikazan Androidov sklad programske opreme. Vsebuje aplikacije,

aplikacijsko ogrodje, programske knjižnice, Androidovo izvajalno okolje in jedro Linux [2].

Slika 2.1: Prikaz arhitekture programske opreme operacijskega sistema Android

Page 13: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

3

Aplikacijski sloj vsebuje najpomembnejše osnovne aplikacije, kot so spletni brskalnik,

odjemalec za e-pošto, SMS-program, koledar, seznam kontaktov. Vse aplikacije so

napisane v programskem jeziku Java.

Aplikacijsko ogrodje omogoča dostop do strojne opreme in enostavno upravljanje z njim

ter dostop do aplikacijskega sloja, da lahko uporablja njegove storitve. Namenjen je

razvijalcem za razvijanje bogatih in raznolikih aplikacij.

Programske knjižnice vsebujejo nabor komponent, ki jih uporabljajo različni deli

operacijskega sistema Android. Napisane so v programskem jeziku C ali C++.

Android izvajalno okolje poganja vsako aplikacijo v svojem navideznem stroju Dalvik.

Dalvik navidezni stroj je narejen tako, da lahko hkrati učinkovito poganja več navideznih

strojev. Navidezni stroj izvršuje programe v datotečnem formatu .dex, ker pa razvijamo v

programskem jeziku Java, mora prevedeno Javino zložno kodo (angl. Java bytecode) v

datotekah .class prevesti v .dex format.

Android temelji na jedru Linux verzije 2.6 in ga uporablja za sistemske storitve, kot so

upravljanje s pomnilnikom, upravljanje s procesi, upravljanje z gonilniki in varnost. Jedro

se obnaša tudi kot vmesni nivo abstrakcije med strojno in programsko opremo.

Poleg splošnih značilnosti operacijskega sistema Android je pomembno tudi to, da obstaja

veliko različnih verzij (Slika 2.2), kar povzroča probleme razvijalcem, saj morajo svoje

aplikacije prilagoditi tako, da bodo podpirale vse najbolj razširjene verzije[3].

Slika 2.2: Prikaz deleža različnih verzij operacijskega sistema Android

Page 14: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

4

2.1 Primerjava z drugimi operacijskimi sistemi za mobilne naprave

V Tabela 2.1 so prikazane razlike med operacijskim sistemom Android in drugimi

operacijskimi sistemi za mobilne naprave[4]. Razlike se nanašajo na razvijanje aplikacij,

razlike v arhitekturi in informacije glede razvoja operacijskega sistema.

Tabela 2.1: Tabela razlik med operacijskimi sistemi za mobilne naprave

Kategorija Android iOS[5] Windows Phone

Symbian OS

BlackBerry OS[6]

Razvojni jezik

Java, C++ Objective-C C#, C++ Java, C++,

Python Java

Emulator Da Da Da Da Da

Družina operacijskih

sistemov Linux OS X, Unix

Windows Phone

Symbian Blackberry

Zadnja izdana verzija

4.1 (Jelly Bean)

10.7. 2012

5.1.1 7. 5. 2012

7.5 8. 4. 2012

10.1. (Nokia Belle)

24.8.2011

7.1.0.649 27.8. 2012

Podprte računalniške

platforme

ARM, MIPS, x86

ARM(iPhone, iPod, iPad), Apple A4, Apple A5, Apple A5x

Qualcomm Snapdragon

ARM, x86 ARM

Obseg naprav

pametni telefoni, tablični

računalniki

pametni telefoni, tablični

računalniki, medijski

predvajalniki

pametni telefoni (za

tablične računalnike je Windows

RT)

pametni telefoni

pametni telefoni (za

tablične računalnike

je BlackBerry Tablet OS)

Podjetja, ki izdelujejo

naprave za OS

HTC, LG, Samsung,

Sony in drugi[7]

Apple HTC, Nokia,

Samsung

včasih največ

Nokia, tudi Samsung,

Sony Erricson

BlackBerry

Model izvorne kode

Odprtokoden Zaprta koda Zaprta koda Lastniška Zaprta koda

Iz tabele lahko razberemo da se trenutno najhitreje razvijajo Android, iOS, BlackBerry OS

in Windows Phone, čeprav se slednji še ni tako uveljavil, saj je bila prva verzija izdana

šele proti koncu leta 2010[8]. Razvoj pa se je ustavil pri Symbian OS, ki je bil leta 2010

celo vodilni na trgu, zdaj pa so se podjetja odločila za podporo Androidu ali Windows

Phone[9]. Večina operacijskih sistemov je namenjena za računalniško platformo ARM

Page 15: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

5

(Advanced RISC Machine), razen Windows Phone, ki je razvit za platformo Qualcomm, ki

temelji na ARM. Večina, razen Windows Phone in iOS, jih podpira razvijanje v

programskem jeziku Java, skoraj vsi pa podpirajo programiranje v C/C++. Aplikacijo lahko

hkrati za vse mobilne naprave razvijaš le pri Androidu in iOS, kar je prednost pred

preostalimi operacijskimi sistemi. Razlika je tudi v podpori proizvajalcev mobilnih naprav,

saj sta iOS in BlackBerry OS le na napravah njunih podjetij Apple in BlackBerry, medtem

ko drugi podpirajo več različnih proizvajalcev mobilnih naprav, največ pa prav Android.

Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih

prednosti in razlog, da je najbolj uporabljan operacijski sistem za pametne telefone z 59-

odstotnim deležem na trgu glede na raziskave v prvem polletju leta 2012. Za njim so iOS

s 23 %, Symbian OS ter BlackBerry OS z malo več kot 6 % in nazadnje WindowsPhone z

2 % [10].

2.2 Razvojna programska oprema

Android ima obširno skupnost razvijalcev, ki aplikacije pišejo v prirejeni različici Jave,

objavijo pa jih lahko v spletni trgovini GooglePlay (prej Android Market). Za razvoj

programov potrebujemo Android SDK, Android SDK Platform-tools in verzijo

operacijskega sistema Android, za katero bomo razvijali aplikacijo[11]. Razvijalci pri

Androidu so naredili tudi ADT – vtičnik za razvojno okolje Eclipse, ki v razvojno okolje

integrira razhroščevanje, gradnjo uporabniškega vmesnika in testiranje na navideznih ali

pravih mobilnih napravah. Zato je najbolj razširjeno razvijanje v razvojnem okolju Eclipse,

lahko pa uporabimo tudi kakšno drugo razvojno okolje ali tekstovni urejevalnik, za

prevajanje pa ustrezna orodja iz razvojnega paketa Android SDK [12].

V Tabela 2.2 bomo predstavili razvojna orodja, ki so vsebovana v razvojnem

programskem paketu Android SDK [4].

Page 16: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

6

Tabela 2.2: Prikaz orodij, vsebovanih v Android SDK in ADT

Orodje v Android SDK Opis

Android Za ustvarjanje oz. posodabljanje Android projektov in ustvarjanje navideznih naprav Android.

Android Emulator Za izvajanje programa v posnemanem okolju Android.

Android Debug Bridge

Za komunikacijo z emulatorjem ali povezano mobilno napravo (omogoča namestitev programa in izdajanje ukazov napravi).

Ant Za prevajanje in pretvarjanje v datoteko .apk.

Keytool Za generiranje varnostnih certifikatov in privatnega ključa, potrebnega za podpis datoteke .apk.

Jarsigner Za podpis datoteke .apk s privatnim ključem.

Treba je omeniti, da če razvijamo v razvojnem okolju Eclipse, so ta orodja samodejno

klicana in nam jih ni treba uporabljati pri samem razvoju programov za Android.

Stopnje razvijanja aplikacije za Android so naslednje:

Nastavitev okolja: v tej stopnji namestimo prej omenjene potrebne programe in

nastavimo svoje razvojno okolje. Ustvarimo tudi Androidovo navidezno napravo –

emulator ali AVD.

Razvijanje: nastavimo nastavitve v projektu in razvijemo program.

Prevajanje, razhroščevanje in testiranje: v tej stopnji se projekt prevede v paket

.apk, ki ga lahko namestimo na Android napravo. Program lahko razhroščujemo in

testiramo s pomočjo orodij, ki so v razvojnem programskem paketu Android SDK.

Objavljanje: v tej stopnji program pripravimo za izdajo in dostopnost

uporabnikom.

Pri razvoju želimo, da bo naša aplikacija dostopna za vse mobilne naprave. Zato moramo

upoštevati različne velikosti zaslonov mobilnih naprav in s tem povezano različno gostoto

pikslov na zaslonih. To dosežemo tako, da v aplikaciji deklariramo, katere velikosti

zaslonov podpiramo in zanje izdelamo različne uporabniške vmesnike. Za različne

zaslone moramo izdelati šest uporabniških vmesnikov, poleg velikosti v prvem stolpcu

Tabela 2.3 še za dve različni orientaciji – horizontalno in vertikalno. Priskrbeti moramo tudi

vse ikone oz. slike, ki jih bomo uporabljali v štirih različnih velikostih glede na različno

gostoto pikslov na zaslonu (prva vrstica Tabela 2.3). Android nato ob zagonu aplikacije

sam izbere najprimernejši uporabniški vmesnik[13].

Page 17: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

7

Tabela 2.3: Prikaz različnih velikosti in gostot pikslov mobilnih naprav

Nizka gostota (120), ldpi

Srednja gostota (160), mdpi

Visoka gostota (240), hdpi

Zelo visoka gostota (320), xhdpi

Majhen zaslon QVGA (240x320)

480x640

Normalen zaslon

WQVGA400 (240x400) WQVGA (240x432)

HVGA (320x480)

WVGA (480x800) WVGA854 (480x854)

640x960

Velik zaslon

WVGA800 (480x800) WVGA854 (400x854)

WVGA800 (480x800) WVGA854 (480x854) 600x1024

Zelo velik zaslon

1024x600

WXGA (1280x800) 1024x768 1280x768

1536x1152 1920x1152 1920x1200

2048x1536 2560x1536 2560x1600

Aplikacijo lahko razvijamo za točno določeno Android platformo ali pa za najnovejšo

Android platformo in nato omogočimo podporo prejšnjim verzijam Android operacijskega

sistema. To dosežemo s pomočjo Android Support Library, ki omogoča podporo verzijam

vse do Android 1.6. To sicer pomeni, da za določene stvari ne bomo mogli uporabljati

najnovejših knjižnic, ampak bomo morali uporabljati ustrezno nadomestilo iz knjižnice

Android Support Library. Tako lahko za svojo aplikacijo dosežemo podporo za okoli 90 %

mobilnih naprav na trgu [14].

Page 18: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

8

3 KOHONENOVE NEVRONSKE MREŽE

Nastanek umetnih nevronskih mrež je bil stimuliran zaradi ugotovitve, da človeški

možgani delujejo popolnoma drugače kot računalnik, a so vseeno dosti hitrejši pri

računanju. Kohonenove nevronske mreže so vrsta umetnih nevronskih mrež, ki so bile

razvite zaradi posebne lastnosti možganov, da organizirajo vhodne informacije v obliki

topološko urejenih računskih mrež. Te računske mreže so tako sestavni blok

infrastrukture procesiranja informacij živčnega sistema [15].

Umetne nevronske mreže sestavlja množica nevronov, ki svoje znanje vsebujejo v utežeh

nevrona, razlikujejo pa se po organiziranosti nevronov in načinu učenja. Kohonenove

nevronske mreže so primer nenadzorovanega učenja, kjer se priskrbijo le učni vzorci,

Kohonenova mreža se nato sama organizira glede na dane učne vzorce. Zato ji pravimo

tudi samoorganizirajoča mreža (angl. self-organizing map). Za učenje uporablja

tekmovalno učenje, kjer se izmed vseh nevronov izbere eden – zmagovalec, ki se najbolj

prilega učnemu vzorcu.

Kohonenove nevronske mreže se uporabljajo kot računska metoda za vizualizacijo

podatkov in analizo večdimenzionalnih podatkov, predvsem eksperimentalno pridobljenih

podatkov (neurejeni podatki, za katere ne vemo, kaj vsebujejo).

3.1 Struktura Kohonenove nevronske mreže

Pri samoorganizirajočih mrežah poznamo dva različna modela: prvi je Willshaw - von der

Malsburg, drugi pa Kohonenov, ki ga je predstavil Teuvo Kohonen leta 1982. Izkazalo se

je, da je ta bolj splošno uporaben in učinkovit, zato je tudi bolj poznan, saj se je hitro

razširil na različna področja uporabe. Kohonenov model nevronske mreže ima po navadi

svoje nevrone razporejene v dvodimenzionalno mrežo, ki ji pravimo tudi Kohonenov nivo,

pri čemer je vsak nevron povezan z vsemi nevroni iz vhodnega nivoja. To je razvidno na

Slika 3.1. Obstaja tudi poseben primer enodimenzionalne mreže nevronov, ki so kar ena

vrstica nevronov. Tri- ali večdimenzionalne mreže se le redko uporabljajo.

Page 19: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

9

Slika 3.1: Dvodimenzionalna zgradba Kohonenove nevronske mreže

Pri zgradbi so pomembne tudi topologije povezav med posameznimi nevroni v

Kohonenovem nivoju. Pomembne so zato, ker z izbrano topologijo določimo, kako se

bodo popravile uteži okoli zmagovalnega nevrona in s tem, kako bo vhodni podatek vplival

na obliko Kohonenove nevronske mreže. Različne topologije, prikazane na Slika 3.2, so:

pravokotna: vsak nevron ima največ štiri sosede (manj jih imajo le nevroni na

robovih mreže),

šesterokotna (heksagonalna): vsak nevron ima največ šest sosedov (manj jih

imajo nevroni na robovih mreže).

Slika 3.2: Prikaz različnih topologij povezav med nevroni, z leve si sledijo

enodimenzionalna, dvodimenzionalna pravokotna in dvodimenzionalna šesterokotna

Page 20: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

10

Pri obeh vrstah topologij lahko med sabo povezujemo tudi robne nevrone in tako

zagotovimo, da se bodo robovi mreže lepše prilagajali vhodnim podatkom. Tako dobimo

različne oblike Kohonenove mreže, ki so prikazane na Slika 3.3. [16]:

Valj brez osnovnih ploskev, če povežemo zgornji in spodnji rob mreže ali levi in

desni rob mreže.

Toroid, če povežemo zgornji in spodnji rob mreže in tudi levi in desni rob mreže.

Opozorimo še, da če imamo heksagonalno topologijo, mora biti število vrstic

sodo[17].

Slika 3.3: Prikaz oblik Kohonenove mreže, z leve si sledijo navadna mreža, valj brez

osnovnih ploskev in toroid.

3.2 Učenje Kohonenove nevronske mreže

Kohonenovo nevronsko mrežo učimo tako, da ji predstavimo nove učne vzorce, mreža pa

se jim potem prilagodi. Tako podatki, ki so podobni prejšnjim, aktivirajo isti nevron oz. isto

področje nevronov. Tej lastnosti pravimo gručenje (angl. clustering), iz nje pa izhaja tudi

dejstvo, da Kohonenova mreža podatke stisne, saj lahko shrani v majhno število nevronov

podatke od velikega števila iteracij.

Vhodni podatki so zvezna števila, njihovo območje ni pomembno, saj se Kohonenova

mreža prilagodi tudi območju podatkov [18]. Potrebno je dovolj veliko število vhodnih

podatkov, da se lahko Kohonenova mreža ustrezno prilagodi, poleg tega morajo biti

vhodni podatki tudi enakomerno razporejeni po prostoru rešitve, saj se bo le tako lahko

Kohonenova mreža ustrezno razvila in zajela celoten prostor rešitve.

Pred začetkom učenja je pomembna tudi inicializacija uteži nevronov, ki se nastavi na

naključno majhno vrednost iz izbranega ozkega območja.

Sam učni algoritem je sestavljen iz več procesov. Ti si sledijo v naslednjem vrstnem redu:

tekmovalni proces, kooperativni proces in proces prilagajanja.

Page 21: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

11

Tekmovalni proces

V tem procesu se primerjajo vektor vhodnih podatkov z vektorjem uteži

posameznega nevrona . Treba je izračunati razdaljo med podatki,

za kar uporabimo izbrano funkcijo razdalje – po navadi se uporabi Evklidska razdalja

(3.1).

(3.1)

V enačbi je z označen j-ti nevron v Kohonenovi nevronski mreži. Tisti nevron, ki ima

najkrajšo razdaljo od vektorja vhodnih podatkov, postane zmagovalni nevron. To

ponazarja (3.2).

(3.2)

Kooperativni proces

Po določitvi zmagovalnega nevrona je treba definirati tudi njegovo soseščino, ta pa določa

nevrone, ki se jim bodo popravile uteži. Pred začetkom učenja je treba definirati začetni

radij, ki se med učenjem glede na izbrano funkcijo zmanjševanja radija zmanjšuje.

Odvisno od izbrane funkcije sosednosti pa se določi tudi vpliv, ki se uporabi pri

popravljanju uteži. Pri Gaussovi funkciji se na primer z oddaljenostjo nevrona od

zmagovalnega nevrona eksponentno zmanjšuje vpliv in tako se nevronom uteži

popravljajo vedno manj.

Proces prilagajanja

V procesu prilagajanja se izbranim nevronom popravijo uteži po ((3.3)), kjer je

vhodni vektor podatkov, vektor uteži nevrona,

oznaka pa predstavlja stanje vektorja v času n oz. v n-ti iteraciji algoritma.

Na popravljanje uteži vpliva tudi hitrost učenja in funkcija sosednosti .

(3.3)

Page 22: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

12

Proces prilagajanja ima tudi več stopenj.

Prva je urejanje in obsega prvih tisoč ali še več ponovitev. V tej stopnji Kohonenova

mreža organizira vhodne vzorce. Pomembno je, da sta pravilno nastavljena začetni radij

in hitrost učenja, ki se potem postopoma zmanjšujeta skozi učni proces [15].

Druga je stopnja konvergence in je potrebna, da se Kohonenova mreža natančneje

prilagodi vhodnim podatkom. Ta stopnja bi morala trajati vsaj 500-krat toliko, kot je število

nevronov v mreži, kar po navadi pomeni več deset tisoč ponovitev. Pomembno je, da

hitrost učenja nikoli ne pride na nič, saj se sicer uteži ne bodo mogle več popravljati.

Učni algoritem

Spodnji učni algoritem prikazuje zaporedje korakov, ki jih je treba izvesti za en učni cikel –

epoho [15].

1. Inicializacija uteži nevronov na naključne majhne vrednosti, npr. med 0,5 in -0,5.

Treba je nastaviti tudi začetni radij in hitrost učenja.

2. Naključno izberemo nov vhodni vektor iz učne množice.

3. Opravimo tekmovalni proces, kjer poiščemo zmagovalni nevron glede na funkcijo

razdalje.

4. Opravimo kooperativni proces, kjer uporabimo izbrano funkcijo za zmanjšanje

radija r in funkcijo za zmanjšanje hitrosti učenja α.

5. Opravimo proces prilagajanja, kjer izbranim nevronom v soseski popravimo

nevrone.

3.3 Parametri Kohonenove nevronske mreže

Pri Kohonenovih mrežah lahko nastavljamo več različnih parametrov, in sicer:

Velikost Kohonenove mreže: definiramo število nevronov horizontalno in

vertikalno.

Število iteracij učnega algoritma: za dobre rezultate je treba učni algoritem ponoviti

vsaj 10-krat toliko, kot je vhodnih vzorcev[16]. Od te nastavitve sta odvisni funkcija

sosednosti in funkcija zmanjševanja hitrosti učenja.

Začetni radij: odvisen je od nastavljene velikosti Kohonenove mreže, dobro je, da

je vsaj polovica premera mreže ali pa malo več (npr. če je velikost mreže 8 x 8,

potem bi izbrali začetni radij 5).

Page 23: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

13

Hitrost učenja: na začetku določimo vrednost, malo manjšo od 1,0. Hitrost učenja

se med učnim procesom zmanjšuje glede na izbrano funkcijo zmanjševanja hitrosti

učenja, vendar ne sme pasti prenizko.

Poleg parametrov lahko izbiramo tudi med različnimi funkcijami za zmanjševanje radija in

hitrosti učenja.

a) Funkcija sosednosti

Funkcija sosednosti se izračuna za nevron pred popravljanjem uteži. Uporablja

se pri izračunu novih uteži in določa, kako zelo se bodo uteži popravile. Gaussova funkcija

(3.4) je najpogosteje uporabljena funkcija, saj se enakomerno zmanjšuje z oddaljenostjo

od zmagovalnega nevrona, tako se nevronom, ki so bolj oddaljeni, manj popravijo uteži

[15].

(3.4)

V (3.4) je trenutni radij po izračunani funkciji zmanjševanja radija, pa je razdalja

med zmagovalnim in trenutnim nevronom.

Najpreprostejša funkcija, ki se uporablja, je mehurčna. Pri njej se vsem nevronom v

soseski uteži popravijo z enakim vplivom, ki je enak 1.

b) Funkcija hitrosti učenja

Funkcija hitrosti učenja ima velik vpliv v procesu prilagajanja, vendar le v stopnji

urejanja. V stopnji konvergence je že tako majhna, da nima velikega vpliva na učenje.

Obstaja več različnih funkcij hitrosti učenja, uporabljajo se linearna (3.5), eksponentna

(3.6) in inverz časa (3.7). V enačbah n označuje trenutno iteracijo algoritma.

(3.5)

(3.6)

(3.7)

Page 24: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

14

c) Funkcija zmanjševanja radija

Za Kohonenove mreže je značilno tudi, da se radij, ki definira širino soseske, zmanjšuje

skozi učni proces. Najpogosteje uporabljena funkcija je eksponentni razpad (3.8), kjer je

začetni radij, pa trenutna iteracija algoritma [15].

(3.8)

konstanta je definirana s spodnjo enačbo (3.9).

(3.9)

Page 25: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

15

4 OPIS IMPLEMENTACIJE

Program smo implementirali v razvojnem okolju Eclipse [19], uporabljali smo zadnjo

verzijo Android SDK [20] in Android SDK Platform-tools [11], za razvojno platformo pa

operacijski sistem Android 2.1 (API 7). Za to smo se odločili, da smo lahko aplikacijo

testirali tudi na pravi mobilni napravi, ta pa je imela operacijski sistem Android 2.1.

Aplikacijo smo preizkusili tudi na razvojni platformi Android 4.1, ki je zadnja verzija

operacijskega sistema Android. Pri tem smo uporabili programsko knjižnico Android

Support Library, ki omogoča podporo za prejšnje verzije Androida. To nam je tudi uspelo,

saj smo lahko aplikacijo za Android 4.1 namestili na Android 2.1. Med samim razvojem

smo aplikacijo testirali s pomočjo emulatorja, prej smo si morali ustvariti navidezno

napravo Android za razvojno platformo Android 2.1 in Android 4.1. Slike aplikacije so iz

emulatorja, in sicer na levi za Android 2.1 in na desni za Android 4.1. Aplikacijo smo

napisali v programskem jeziku Java.

4.1 Implementacija Kohonenove nevronske mreže

Za implementacijo Kohonenove nevronske mreže smo uporabili postopke, opisane v

poglavju 3, pri tem pa smo poskušali implementirati čim več raznolikosti Kohonenovih

nevronskih mrež. Namen je bil, preizkusiti raznolike Kohonenove nevronske mreže in

ugotoviti, katera se najbolj približa želenim rezultatom. Torej smo raziskovali, kakšen vpliv

imajo oblike in parametri Kohonenovih nevronskih mrež na to, da se Kohonenova

nevronska mreža čim lepše prilagodi vhodnim podatkom, ki jih dobimo iz enačb likov in

teles.

Implementirali smo dve različni obliki Kohonenove mreže, in sicer:

navadno mrežo in

mrežo toroidalne oblike.

Od topologij Kohonenovih nevronskih mrež smo implementirali le pravokotno mrežo,

poleg tega pa veliko različnih funkcij, ki nastopajo v parametrih Kohonenove nevronske

mreže:

Funkcije hitrosti učenja:

o inverz časa,

o eksponentna funkcija in

Page 26: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

16

o linearna funkcija.

Funkcije sosednosti:

o Gaussova funkcija in

o mehurčna funkcija.

Funkcije zmanjševanja radija:

o Eksponentni razpad, ki se uporablja, ko je izbrana Gaussova funkcija.

o Zmanjševanje radija po vnaprej določenem številu iteracij, uporablja se,

ko je izbrana mehurčna funkcija.

Poleg tega se lahko nastavljajo še preostali parametri Kohonenove mreže:

velikost mreže, definirana kot število nevronov v širino in višino mreže (npr. 12

x 12),

število iteracij učnega algoritma,

začetni radij in

začetna hitrost učenja.

Vse te nastavitve se lahko v aplikaciji nastavljajo pod zavihkom »Nastavitve«, kot je vidno

na Slika 4.1.

Slika 4.1: Prikaz uporabniškega vmesnika zavihka »Nastavitve«

Page 27: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

17

Nastavitve lahko enostavno urejamo z dotikom na želeno nastavitev, vrednosti pa se

shranijo v objekt SharedPreferences. To je razred v programskih knjižnicah Android, ki

omogoča hranjenje nastavitev za uporabnika, tako da mu nastavitev ni treba določati

vedno znova.

Kohonenova nevronska mreža je implementirana v razredih Neuron in

KohonenNeuralNetwork. Izvajanje Kohonenove mreže poteka v novi niti, saj na ta

način preprečimo obremenjenost niti z uporabniškim vmesnikom. Implementirali pa smo

tudi sporočanje dogodkov. Tako lahko vsako iteracijo učenja dobimo podatke o novih

utežeh nevronov, ki jih uporabimo za izrisovanje Kohonenove mreže. Razred

KohonenNeuralNetwork vsebuje tudi lastnost animationSpeed, ki določa čas v ms

med posameznimi iteracijami učenja in s tem hitrost animacije učenja Kohonenove

nevronske mreže.

Posebnosti učnega algoritma

Učni algoritem je implementiran po postopku, opisanem v poglavju 3.2. Vseeno pa so

določene posebnosti pri implementaciji učnega algoritma za različne oblike Kohonenove

mreže. Razlike so v določitvi oddaljenosti nevronov od zmagovalnega nevrona in s tem

določitvi okolice okoli zmagovalnega nevrona, kjer se bodo popravile uteži. Za določitev

zmagovalnega nevrona smo pri obeh oblikah uporabili Evklidsko razdaljo (3.1).

a) Navadna mreža

Pri navadni mreži smo uporabili Evklidsko razdaljo (3.1), in sicer za določitev razdalje med

nevroni in zmagovalnim nevronom. Trenutnemu nevronu se popravi utež, če je njegova

oddaljenost manjša od trenutnega radija, kar je razvidno iz odseka kode na Slika 4.2.

Page 28: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

18

Slika 4.2: Del algoritma, ki ga uporabljamo za implementacijo navadne mreže

Metoda GetNeighbourhoodWidth vrne okolico, ki je definirana kot kvadrat trenutnega

radija.

b) Mreža toroidalne oblike

Pri tej obliki pa zaradi povezav med robnimi nevroni ni mogoče določiti oddaljenosti med

nevroni s pomočjo Evklidske razdalje. Zato smo pri vsakem nevronu dodali polje, ki

določa sosede trenutnega nevrona. To smo uporabili pri samem algoritmu tako, da

popravljamo uteži nevronom toliko časa, dokler ne pridemo do oddaljenosti, ki je večja od

trenutnega radija. Implementacija tega dela algoritma je v rekurzivni metodi

AdjustWeightsAroundWinningNeuron. Del kode s to metodo je prikazan na Slika

4.3.

Page 29: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

19

Slika 4.3: Metoda za popravljanje uteži za mrežo toroidalne oblike

4.2 Enačbe likov in teles ter generiranje vhodnih podatkov

Vhodne podatke, s katerimi učimo Kohonenovo nevronsko mrežo, dobimo iz enačbe lika

ali telesa. Končni rezultat naj bi bila Kohonenova nevronska mreža, kjer dobimo obliko

izbranega lika ali telesa, če izrišemo njene uteži. Enačba generira točke, ki se nahajajo na

obrisu likov oz. na površini teles. Za generiranje teh točk smo uporabili parametrične

enačbe, kjer s parametri določimo velikost in pri nekaterih enačbah tudi obliko lika oz.

telesa.

Enačbo lahko izberemo pod zavihkom »Enačba«, uporabniški vmesnik tega zavihka je

prikazan na Slika 4.4.

Page 30: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

20

Slika 4.4: Prikaz uporabniškega vmesnika zavihka »Enačba«

Po izbiri se izbrana enačba shrani v objekt razreda SharedPreferences in se pozneje

uporabi za učenje Kohonenove mreže.

Implementirali smo enačbe naslednjih likov in teles:

Krog, kjer je polmer kroga (4.1) [21].

(4.1)

Srčnica ali kardioida, kjer je polmer stalnega kroga in polmer krogov, ki se

premikajo okoli njega, ter tako naredijo krivuljo (4.2) [22].

(4.2)

Page 31: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

21

Krogla, kjer je polmer krogle (4.3)[23].

(4.3)

Stožec, kjer je polmer osnovne ploskve in višina stožca (4.4)[24].

(4.4)

Toroid, kjer je polmer cevi in polmer kroga na sredini toroida (4.5) [25].

,

(4.5)

V enačbah smo parametre , in izbirali naključno iz njihovega območja ter tako

zagotovili enakomerno razporejenost točk po površini.

4.3 Vizualizacija v 3D-prostoru

V operacijskem sistemu Android je za potrebe risanja v 3D implementiran standard

OpenGL ES. Android je do verzije 2.2 podpiral le standarde OpenGL ES 1.0 in 1.1, zdaj

pa podpira še OpenGL ES 2.0[26]. Za potrebe vizualizacije Kohonenove nevronske mreže

smo uporabili Androidovo programsko knjižnico za OpenGL ES 1.1, in to zaradi dveh

razlogov. Prvi je, da aplikacijo razvijamo za Android 2.1, ki podpira le to verzijo, drugi pa,

da je ta verzija implementirana tako, da je lažje razumljiva za začetnika v OpenGL in

primerna za enostavno 3D-izrisovanje.

Vizualizacija je osrednji del aplikacije, zato je zavihek »Vizualizacija« izbran, ko odpremo

aplikacijo. Uporabniški vmesnik tega zavihka je na Slika 4.5.

Page 32: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

22

Slika 4.5: Prikaz zavihka »Vizualizacija« med učenjem Kohonenove mreže

Učenje Kohonenove nevronske mreže lahko začnemo z dotikom na prvi gumb z leve,

začasno zaustavimo pa ga lahko s pritiskom na isti gumb. S pritiskom na gumb v sredini

zaustavimo učenje, ki se mora nato začeti znova. S pritiskom na tretji gumb z leve se

aplikacija razširi čez cel ekran, s ponovnim pritiskom pa se vrne v prejšnje stanje. Učenje

se začne glede na trenutno določene nastavitve enačbe in Kohonenove mreže. Če

spreminjamo te nastavitve, se trenutno učenje Kohonenove mreže prekine in ga moramo

začeti znova, v veljavi pa so nove nastavitve.

Pri vizualizaciji smo implementirali izrisovanje več stvari:

Izrisovanje stanja Kohonenove mreže med učenjem. Pri tem izrisujemo daljice

med trenutnim nevronom in njegovimi sosedi (ti so različni, odvisno je od oblike in

topologije Kohonenove mreže), tako da nastane povezana Kohonenova mreža.

Točko, ki določa položaj nevrona v prostoru, določajo njene uteži. Nevronu med

učenjem določimo tudi njegovo stanje med učenjem, to je lahko:

Page 33: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

23

o Neaktiven: nevronu se niso popravile uteži (povezave so označene z modro

barvo).

o Aktiven: nevronu so se popravile uteži (povezave so označene z zeleno

barvo).

o Zmagovalec: zmagovalni nevron, okoli katerega se bodo popravile uteži

(označen je z vijolično barvo).

Tako lahko med učenjem spremljamo, na katerem področju nevronske mreže se

bodo popravile uteži, vidimo pa tudi, kako se zmanjšuje radij oz. območje

popravljanja uteži.

Izrisovanje vhodnih podatkov oz. točk, s katerimi učimo Kohonenovo mrežo

(označeni so z rdečo barvo).

Rotacija objektov v 3D-prostoru med učenjem in po njem.

Med učenjem se zgoraj desno izpisuje trenutna številka iteracije učnega algoritma, v

kateri se nahaja Kohonenova mreža in število vseh iteracij.

Risanje v 3D na Androidu

Android ima za risanje v 3D pripravljene določene razrede, ki olajšajo samo

implementacijo. Te razrede bomo opisali v naslednjih odstavkih.

a) GLSurfaceView

Je kontrola, ki omogoča izrisovanje na površino in upravljanje z objekti na površini preko

knjižnice OpenGL. Privzeto poteka v posebni niti, da ne obremenjuje niti z uporabniškim

vmesnikom. V naši aplikaciji je implementirana v razredu KohonenMapView.

Implementirali smo njeno metodo onTouchEvent(MotionEvent event), ki se odzove

na dogodek, ko se uporabnik dotakne zaslona. Tako smo lahko implementirali rotacijo

Kohonenove mreže.

b) GLSurfaceView.Renderer

Je razred, kjer definiramo, kaj se izrisuje na GLSurfaceView. Zato je treba

GLSurfaceView ob inicializaciji določiti ta razred z metodo

setRenderer(GLSurfaceView.Renderer renderer). V naši aplikaciji je

implementiran v razredu KohonenMapRenderer. Razred GLSurfaceView.Renderer

vsebuje tri ključne metode, ki jih je treba implementirati:

onSurfaceCreated(): ta metoda se kliče le enkrat, ko se ustvari

GLSurfaceView. Tukaj opravimo nastavljanje okolja OpenGL.

Page 34: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

24

onSurfaceChanged(): ta metoda se kliče, ko se spremeni velikost kontrole ali

ko se spremeni orientacija zaslona naprave. V tej metodi smo poskrbeli, da se

GLSurfaceView prilagodi na novo velikost.

onDrawFrame(): ta metoda se kliče vsakič, ko je izražena potreba po risanju. V

tej funkciji določimo vse objekte, ki jih želimo izrisati. V naši aplikaciji smo izbrali

možnost, da izrisujemo le takrat, ko to zahtevamo sami. To dosežemo tako, da pri

inicializaciji GLSurfaceView kličemo funkcijo setRenderMode() z argumentom

GLSurfaceView.RENDERMODE_WHEN_DIRTY. Izrisovanje lahko nato sprožimo s

klicem funkcije requestRender(). V nasprotnem primeru je privzeto omogočeno

stalno izrisovanje z določenim številom okvirjev na sekundo. Slika 4.6 prikazuje del

kode s funkcijo onDrawFrame().

Slika 4.6: Metoda onDrawFrame(), kjer se izrisujejo objekti

Izrisovanje Kohonenove mreže poteka v metodi draw() razreda

DrawKohonenNetwork, kjer uporabimo medpomnilnike (angl. buffer) podatkov,

potrebnih za izrisovanje Kohonenove mreže.

Page 35: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

25

Slika 4.7: Del metode draw(), ki izriše neaktivni del Kohonenove mreže

4.4 Rezultati

Aplikacijo smo testirali na pametnem telefonu Sony Xperia X8 z naslednjimi značilnostmi:

320 x 480 pikslov velik na dotik občutljiv zaslon,

600 MHz ARM 11 procesor in

grafična kartica Adreno 200.

Po testiranju Kohonenove mreže z različnimi parametri smo dobili rezultate, predstavljene

v Tabela 4.1.

Tabela 4.1: Vpliv različnih parametrov na rezultate

Parametri Kohonenove mreže

Vpliv parametrov na rezultat

Oblika mreže

Liki: vseeno katera mreža.

Telesa: boljša toroidalna oblika mreže, lepše prilagajanje pri telesih, čeprav ima vedno luknjo, medtem ko se navadna

mreža težko preoblikuje v zaključeno celoto.

Velikost mreže

Večja, kot je mreža, bolje se prilagaja vhodnim podatkom in

lepša je oblika telesa oz. lika. V splošnem je dobro, da je velikost vsaj okoli 10 x 10 nevronov. Pri velikem številu

nevronov (npr. 40 x 40) je potrebno veliko število iteracij, pri tem pridobimo na prilagajanju enačbi, ne pa vedno na obliki.

Število iteracij

Večje, kot je število iteracij, boljše je prilagajanje enačbi.

Odvisno je od velikosti mreže, če je premajhna, veliko število iteracij ne pomaga. V splošnem je dobro, da je več tisoč

iteracij. Mi smo testirali z do 10.000 iteracijami.

Page 36: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

26

Funkcija hitrosti učenja

Nima vidnega vpliva na rezultat.

Funkcija sosednosti

Boljša je Gaussova funkcija, saj mehurčna preostro zmanjšuje

radij.

Preostale parametre, kot sta začetna hitrost učenja in začetni radij, je treba nastaviti, kot

smo predlagali v poglavju 3.3. Rezultati so odvisni tudi od enačbe, s katero smo učili

Kohonenovo mrežo. Vsaka enačba ima določene posebnosti, kar je predstavljeno v

Tabela 4.2.

Tabela 4.2: Vpliv različnih enačb na rezultat

Enačba Vpliv enačbe na rezultat

Krog (Slika 4.8)

Se lepo prilagaja že pri manjših mrežah in številu iteracij.

Srčnica (Slika 4.8)

Se lepo prilagaja. Problematična je točka, kjer se začnejo

premikati premikajoči krogi, ki naredijo obliko srca. V tej točki se ne prilagaja v redu ne glede na število iteracij in velikost.

Krogla (Slika 4.9)

Pomembno je, da je mreža velika in da je število iteracij

veliko. Pri navadni mreži je težava, ker se težko preoblikuje v zaključeno celoto, pri mreži toroidalne oblike pa, ker ima

obliko toroida in je vedno nekje luknja.

Stožec (Slika 4.9)

Lažje se prilagodi kot krogla, potrebna je manjša mreža in

manj iteracij. Zelo lepo se prilagodi pri vrhu, saj je tam veliko točk. Težje se prilagodi na spodnji krog, saj enačba da točke

le na površini plašča.

Toroid (Slika 4.10)

Najlepše se pričakovano prilagaja toroidalna oblika mreže,

predvsem na luknjo v sredini. Bolje je, če je mreža manjša, v tem primeru se vedno prilagodi na luknjo v sredini, če je večja, se pa ne. Veliko težav z njo ima navadna mreža zaradi luknje

v sredini.

Page 37: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

27

Treba je tudi omeniti, da se rezultati lahko razlikujejo ob izbranih enakih parametrih

Kohonenove mreže in enačbe. To se zgodi zaradi različnih naključno generiranih

podatkov, vendar z večjo velikostjo mreže in številom iteracij ta vpliv zmanjšamo.

Po testiranju aplikacije smo vzeli tudi slike z zaslona pametnega telefona, da lahko vidimo

rezultate. Dobljene slike so bile narejene po učenju s toroidalno obliko Kohonenove

mreže, Gaussovo funkcijo sosednosti in funkcijo učenja inverz časa. Velikost mreže se

razlikuje in jo lahko razberemo ob opisu slike, medtem ko je podatek o številu iteracij na

sliki.

Slika 4.8: Srčnica pri velikosti mreže 12 x 12 in krog pri velikosti 12 x 12

Page 38: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

28

Slika 4.9: Krogla pri velikosti 25 x 25 in stožec pri enaki velikosti

Slika 4.10: Toroid pri velikosti 15 x 15 in isti toroid z vidno luknjo

Page 39: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

29

5 SKLEP

Cilj diplomske naloge je bil implementacija Kohonenovih nevronskih mrež na

operacijskem sistemu Android. Najprej smo implementirali Kohonenovo mrežo, nato pa

poskrbeli za vizualizacijo rezultatov v 3D-prostoru. Za učenje smo uporabili enačbe likov

in teles, ki se jim je Kohonenova mreža poskušala prilagoditi. Poskrbeli smo tudi za

animacijo učenja in interaktivnost uporabniškega vmesnika ter s tem izkoristili eno glavnih

značilnosti operacijskega sistema Android. Za implementacijo smo se odločili zaradi

priljubljenosti operacijskega sistema Android in preizkušanja dejstva, da imajo mobilne

naprave omejeno procesorsko moč.

V drugem poglavju smo povzeli glavne značilnosti operacijskega sistema Android in

spoznali, da se njegova zgradba razlikuje od operacijskih sistemov za namizne

računalnike, ker je prilagojena za mobilne naprave. Primerjali smo ga tudi s

konkurenčnimi operacijskimi sistemi za mobilne naprave in ugotovili, da je trenutno

vodilen na področju pametnih telefonov in da je edini operacijski sistem za mobilne

naprave, ki je odprtokoden. Spoznali smo tudi, kakšno razvojno opremo potrebujemo za

razvoj programov na Androidu in da je najprimernejše razvojno okolje Eclipse, ki nam z

vtičnikom ADT olajša razvijanje programov.

V tretjem poglavju smo opisali Kohonenove nevronske mreže, ki se razlikujejo od drugih

umetnih nevronskih mrež. Spoznali smo tudi več različnih struktur Kohonenovih mrež. V

naslednjih dveh podpoglavjih smo opisali učenje Kohonenovih nevronskih mrež in različne

parametre, ki vplivajo na učenje. Ugotovili smo, da obstaja veliko različnih parametrov in

da lahko izbiramo med različnimi funkcijami, ki različno vplivajo na učenje in s tem

uspešno implementacijo Kohonenove nevronske mreže. Prav tako se učenje nevronske

mreže zelo razlikuje od učenja drugih umetnih nevronskih mrež, ki so predstavnice

nadzorovanega učenja. Razlikujejo se v tem, da nimamo pravilnih rezultatov in ne

moremo računati napake oz. uspešnosti nevronske mreže.

V četrtem poglavju smo opisali našo implementacijo Kohonenove nevronske mreže, in

katere enačbe smo izbrali za njeno učenje, ter predstavili delovanje vizualizacije izhodnih

podatkov na operacijskem sistemu Android. Predstavili smo tudi rezultate našega dela.

Page 40: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

30

VIRI

[1] Android (operating system) - Wikipedia, the free encyclopedia. Dostopno na:

http://en.wikipedia.org/wiki/Android_%28operating_system%29 [6. 9. 2012].

[2] Android: The Developer's Guide. Dostopno na :

http://www.scribd.com/doc/14757121/Android-The-Developers-Guide [6. 9. 2012].

[3] Dashboards | Android Developers. Dostopno na :

http://developer.android.com/about/dashboards/index.html [6. 9. 2012].

[4] AT&T. AT&T Developer Program Developing Applications for Android. AT&T, 2009.

[5] iOS - Wikipedia, the free encyclopedia. Dostopno na: http://en.wikipedia.org/wiki/Ios

[6. 9. 2012].

[6] BlackBerry OS - Wikipedia, the free encyclopedia. Dostopno na:

http://en.wikipedia.org/wiki/BlackBerry_OS [6. 9. 2012].

[7] Comparison of Android devices - Wikipedia, the free encyclopedia. Dostopno na:

http://en.wikipedia.org/wiki/Comparison_of_Android_devices [6. 9. 2012].

[8] Windows Phone - Wikipedia, the free encyclopedia. Dostopno na:

http://en.wikipedia.org/wiki/Windows_phone [6. 9, 2012].

[9] Symbian - Wikipedia, the free encyclopedia. Dostopno na:

http://en.wikipedia.org/wiki/Symbian_os [6. 9. 2012].

[10] Android, iOS Crush BlackBerry Market Share - Mobility - Smartphones -

Informationweek. Dostopno na: http://www.informationweek.com/mobility/smart-

phones/android-ios-crush-blackberry-market-shar/240001008 [6. 9. 2012].

[11] Adding Platforms and Packages | Android Developers. Dostopno na:

http://developer.android.com/sdk/installing/adding-packages.html [6. 9. 2012].

[12] Introduction | Android Developers. Dostopno na:

http://developer.android.com/guide/developing/index.html [6. 9. 2012].

[13] Supporting Multiple Screens | Android Developers. Dostopno na:

http://developer.android.com/guide/practices/screens_support.html#support [6. 9.

2012].

[14] Supporting Different Platform Versions | Android Developers. Dostopno na:

http://developer.android.com/training/basics/supporting-devices/platforms.html [6. 9.

Page 41: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

31

2012].

[15] Haykin, S. Neural Networks - A Comprehensive Foundation, Second Edition. Pearson

Prentice Hall, 1999.

[16] Vesanto, J. SOM Toolbox: implementation of the algorithm. Dostopno na:

http://www.cis.hut.fi/somtoolbox/documentation/somalg.shtml [6. 9. 2012].

[17] Data Mining Algorithms In R/Clustering/Self-Organizing Maps (SOM) - Wikibooks,

open books for an open world. Dostopno na:

http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/Self-

Organizing_Maps_%28SOM%29 [6. 9. 2012].

[18] Kokol, P., Hleb Babič, Š., Podgorelec V., Zorman, M. Inteligentni sistemi. Maribor:

Fakulteta za elektrotehniko, računalništvo in informacijske tehnologije, 2001.

[19] Eclipse - The Eclipse Foundation open source community website. Dostopno na:

http://www.eclipse.org/ [6. 9. 2012].

[20] Installing the SDK | Android Developers. Dostopno na:

http://developer.android.com/sdk/installing/index.html [6. 9. 2012].

[21] circle - Wolfram|Alpha. Dostopno na: http://www.wolframalpha.com/input/?i=circle [6.

9. 2012].

[22] cardioid - Wolfram|Alpha. Dostopno na:

http://www.wolframalpha.com/input/?i=cardioid [6. 9. 2012].

[23] sphere - Wolfram|Alpha. Dostopno na: http://www.wolframalpha.com/input/?i=sphere

[6. 9. 2012].

[24] cone - Wolfram|Alpha. Dostopno na: http://www.wolframalpha.com/input/?i=cone [6.

9. 2012].

[25] torus surface - Wolfram|Alpha. Dostopno na:

http://www.wolframalpha.com/input/?i=torus+surface&lk=4&num=3 [6. 9. 2012].

[26] OpenGL | Android Developers. Dostopno na:

http://developer.android.com/guide/topics/graphics/opengl.html#compatibility [6. 9.

2012].

[27] Android (operating system) - Wikipedia, the free encyclopedia. Dostopno na:

http://en.wikipedia.org/wiki/Android_%28operating_system%29#Market_share [6. 9.

2012].

Page 42: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

32

Page 43: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

33

Page 44: IMPLEMENTACIJA KOHONENOVIH NEVRONSKIH MREŽ ZA OPERACIJSKI … · Operacijski sistem Android je edini, ki je odprtokoden, kar je tudi ena izmed njegovih prednosti in razlog, da je

34