ELEKTRONIIKAN JA TIETOLIIKENNETEKNIIKAN TUTKINTO-OHJELMA
|
|
- Kaarina Kapulainen
- 6 vuotta sitten
- Katselukertoja:
Transkriptio
1 KANDIDAATINTYÖ Neuroverkkojen FPGA-toteutus Ville Paananen Ohjaaja: Jukka Lahti ELEKTRONIIKAN JA TIETOLIIKENNETEKNIIKAN TUTKINTO-OHJELMA 2018
2 2 Paananen V. 1 (2018) Neuroverkkojen FPGA-toteutus. Oulun yliopisto, Elektroniikan ja tietoliikennetekniikan tutkinto-ohjelma. Kandidaatintyö, 21 s TIIVISTELMÄ Tässä työssä esitellään kaksi erilaista neuroverkkoa, monikerrosperceptron ja konvolutionaalinen neuroverkko, ja tutkitaan niiden toteutettavuutta käyttämällä FPGA-piirirakennetta. Työssä kuvataan neuroverkkojen taustaa ja esitellään niiden toimintaa ja suunnittelua ohjaavia parametreja. Lisäksi tutkitaan FPGA-piirien eduja ja haasteita. Työ tehtiin kirjallisuuskatsauksena käyttämällä lähteinä ajankohtaisten neuroverkkotutkimusten tuloksia. Avainsanat: FPGA, CNN, konvoluutio, neuroverkko
3 3 Paananen V. 1 (2018) FPGA implementation of Neural Networks. University of Oulu, Degree Program in Electrical Engineering, Bachelor s Thesis, 21 p. ABSTRACT This work presents two different neural networks, multi-layer-perceptron and convolutional neural network and their FPGA-implementation is researched. The work describes the background for neural networks and presents their operation and the parameters that guide their design. The benefits and challenges of FPGA-circuits are also researched. The work was done as a literature review using the the contemporary neural network research. Key words: FPGA, CNN, convolution, neural network
4 4 SISÄLLYS TIIVISTELMÄ... 2 ABSTRACT... 3 SISÄLLYS... 4 LYHENTEIDEN JA MERKKIEN SELITYKSET JOHDANTO TEORIA Neuroverkot Perceptron Monikerros-perceptron Opettaminen ja optimointi Ongelmanratkaisu Konvolutionaalinen neuroverkko FPGA-piirit NEUROVERKKOJEN FPGA-TOTEUTUS Konvoluutiokerros Aktivointikerros Näytteistyskerros Luokittelukerros Koko verkon toteutus POHDINTA YHTEENVETO LÄHTEET... 21
5 5 LYHENTEIDEN JA MERKKIEN SELITYKSET ASIC CNN CPU FPGA GFLOPS GMAC/s GPU HDL MLP ReLU XOR Application-Specific Integrated Circuit Convolutional Neural Network Central Processing Unit Field Programmable Gate Array Giga Floating-Point Operations Per Second Giga Multiply-Accumulate Operations Per Second Graphics Processing Unit Hardware Description Language Multilayer Perceptron Rectified Linear Unit Exclusive-OR
6 6 1. JOHDANTO Tutkimuksessa selvitetään miten neuroverkkoja voidaan toteuttaa käyttämällä FPGA-piirejä. FPGA (Field Programmable Gate Array) on digitaalilogiikkaa hyödyntävä piirityyppi, joka perustuu loogisten porttien massiiviseen rinnakkaisuuteen. Neuroverkot ovat yksi tekoälyn muoto, joka pohjautuu ihmisaivojen neuronien biologiseen toimintaan. On kuitenkin huomattava, että neuroverkkojen malli on erittäin yksinkertaistettu neuronien toiminnasta, joten keinotekoisen älykkyyden sijaan on järkevämpää puhua ongelmaratkaisukyvystä. Kyseessä ei siis ole tapa tehdä digitaaliset ihmisaivot, vaan mallintaa yksinkertaistetusti sen toimintaa ja tuottaa älykäs laite, joka kykenee parempaan ongelmanratkaisuun. Työssä esitellään kaksi erilaista neuroverkkoa: monikerrosperceptron [1] ja konvolutionaalinen neuroverkko [2], joiden ominaisuudet esitellään ja selvitetään miten ne soveltuvat FPGA-piirillä toteutettavaksi. Tutkimus toteutetaan kartoittamalla kirjallisuudessa esitettyjä tutkimustuloksia neuroverkkojen FPGAtoteutuksen eduista ja haasteista ja jäsentämällä niistä järkevä kokonaisuus, joka toimii hyvänä esittelynä aiheeseen entuudestaan perehtymättömälle. Optimaalisen tekoälyn ja ongelmanratkaisykyvyn saavuttamiseksi tulee tehdä paljon tutkimusta käytettävästä laitteistosta, jolle neuroverkot toteutetaan. Oleellinen tekijä neuroverkkojen optimaalisuudessa on rautatason tehokas hyödyntäminen. Neuroverkkotutkimusta on tehty hyvin paljon ja erilaisia verkkoja on kehitetty lukuisia. Sen vuoksi onkin tärkeä tutkia mitä haasteita neuroverkkojen toteutettavuus voi asettaa. Lukijalle valaistaan miksi FPGA:n ominaisuudet ovat erittäin hyvin soveltuvia neuroverkkojen toteutukseen verrattuna esimerkiksi CPU- tai GPU-toteutukseen, mutta kuitenkin samalla tuoden esille FPGA-piirin rajoitukset. Perinteiset, yhtä tapausta varten suunnitellut ASIC-piirit (Application Specific Integrated Circuit), sisältävät rajoitetun määrän kytkentöjä eri piirielementtien välillä ja ne ovat huonosti uudelleenkonfiguroitavissa, mutta voivat olla tehokkaampia kuin FPGA-toteutukset. Neuroverkkojen painoarvovektorit vaativat nopeaa kirjoitus- ja lukunopeutta, joten rinnakkainen toiminta mahdollistaa nopeamman oppimisen. FPGA-piirien rajoituksena toimii haasteet suurten liukulukujen esittämisessä verkon tarkkuuden ja oppimisnopeuden osalta. Tämä vaatii siten kompromisseja FPGA-piirin käytetyn pinta-alan ja numeerisen tarkkuuden välillä.
7 7 2. TEORIA 2.1. Neuroverkot Neuroverkot ovat yksi tekoälyn muoto, jonka kehitys alkoi 1960-luvulla, mutta matemaattista pohjaa luotiin jo 1940-luvulla. Vuosituhannen loppupuoliskolla tehtiin paljon tutkimusta neuroverkoista, mutta elektroniikan tehokkuuden ja valmistustiheyden rajoitukset olivat esteenä kehityksen jatkumiselle. Teknologian kehittyessä tehokkaampien prosessoreiden myötä 2010-luvulla neuroverkot nousivat takaisin suosioon ja tekoälystä tuli varteenotettava työkalu vaativissa ongelmanratkaisuissa. [1] Neuroverkot saavat nimensä ihmisen aivojen neuronirakenteesta, ja siten neuroverkon pohjalla on yksinkertaistettu malli aivojen toiminnasta neuronitasolla. Neuroverkkojen tarkoituksena on mallintaa neuronien oppimista ja luoda verkko, joka pystyy muistamaan sille annetut syötteet ja luokittelemaan uutta dataa sen perusteella. Vuosikymmenien aktiivisen tutkimuksen myötä erilaisia neuroverkkoja on kehitetty paljon ja niiden uniikkien ominaisuuksien myötä kullakin on tietty ongelma-avaruus, jossa ne toimivat parhaiten. Näitä neuroverkkoja ovat esimerkiksi tässä työssä esiteltävät perinteinen monikerros-perceptron (multilayer perceptron, MLP) ja uudempi kuvantunnistamisessa käytetty konvolutionaalinen neuroverkko (convolutional neural network, CNN). Muita neuroverkkoja on esimerkiksi puheentunnistamisessa ja kielen kääntämisessä tehokkaaksi havaittu LSTM, eli longshort term memory -verkko tai takaisinkytkentää hyödyntävä RNN, eli recurrent neural network Perceptron Ihmisaivojen hermoimpulsseja välittävää neuronia mallintamiseen kehitettiin perceptron, joka kuvaa neuronin syttymistä tiettyjen tulosignaalien ja painoarvojen funktiona. Perceptronin mallin esitteli Frank Rosenblatt vuonna 1962 kirjassaan Principles of Neurodynamics. Perceptroneista rakennettua neuroverkkoa usein kuvataan virheellisesti ihmisaivojen malliksi ja ajatellaan, että riittävän suuressa mittakaavassa toteutettuna se voisi tuottaa tietoisuutta samaan tapaan kuin ihmisaivoissa. Tätä kuvaa hyvin seuraava lainaus: He describes these perceptrons as simplified networks in which certain properties of real nervous systems are exaggerated whilst others are ignored. He stated that they are not intended to serve as detailed copies of any real nervous system; in other words, he realised at this early stage that he was dealing with a basic model. This fact is often lost in the popular press as the idea of computer brains, based on these techniques, grabs the imagination. We are not attempting to build computer brain, nor are we trying to mimic parts of real brains - rather we are aiming to discover the properties of models that take their behaviour from extremely simplified versions of natural neural systems, usually on a massively reduced scale as well. Whereas the brain has at least neurons, each connected to 10 4 others, we
8 8 are concerned here with maybe a few hundred neurons at most, connected to a few thousand input lines. [1 s ] On siis huomattava, että perceptronin malli jättää aina jotain pois, joten on siis on hyvin epätodennäköistä, että sitä hyödyntämällä voitaisiin toteuttaa ihmiseen verrattavaa älykkyyttä. Siitä huolimatta on todistetusti huomattu, että perceptroneja hyödyntämällä on saatu hyvin tehokkaita neuroverkkoja, jotka pystyvät ratkaisemaan tietokoneille aiemmin mahdottomia ongelmia. Perceptronin rakenne on alla olevan kuvan 1 mukainen, jossa on tulovektori xx, painovektori ww, summausfunktio ja aktivointifunktio φ. Toiminta on seuraavanlainen: jokainen tulovektorin elementti xx kerrotaan vastaavan painoarvovektorin elementin ww kanssa, ja summataan yhteen. Tämä painotettu summa syötetään aktivointifunktioon, joka antaa lähtöön arvon 0 tai 1, kuvastaen neuronin syttymistä. Kuva 1. N-tuloisen perceptronin malli. Aktivointifunktion φ tarkoituksena on normalisoida arvot tietylle alueelle ja epälinearisoida ne siten, että lähdössä voidaan havaita pienet tulojen vaihtelut. Jos aktivointifunktio lähtö saisi pelkästään arvon 0 tai 1, olisi mahdotonta opettaa neuroverkkoa. Lisäksi ilman epälineaarisuutta koko verkon voisi yksinkertaistaa yhdeksi funktioksi [1, s. 66]. Aktivointifunktio voi olla alla olevan kuvan 2 mukainen yleisesti käytetty yksinkertainen tasasuuntausfunktio tai sigmoid. Eri aktivointifunktioiden käyttö vaikuttaa erityisesti neuroverkon oppimisnopeuteen.
9 9 Kuva 2. Neuroverkoissa usein käytetyt aktivointifunktiot: tasasuuntaaja (Rectified Linear Unit, ReLu), vasen ja sigmoid, oikea Monikerros-perceptron Kytkemällä monituloiset perceptronit rinnakkain ja kerroksittain saadaan yleisin neuroverkkojen malli, eli monikerros-perceptron (Multilayer Perceptron, MLP), kuten kuvassa 3, alla. Kuvassa jokainen solmu sisältää aiemmin esitellyn perceptronin, mukaan lukien aktivointifunktion. Tälläinen kytkentä kasvattaa neuroverkon ongelmanratkaisukykyä huomattavasti. On huomattu, että jo kolmella kerroksella saadaan tehokas neuroverkko [1]. Ensimmäistä kerrosta nimetään tulokerrokseksi (input layer), viimeistä lähtökerrokseksi (output layer), ja niiden välissä olevat kerrokset ovat piilotettuja kerroksia (hidden layers), joka viittaa siihen että sen solmujen tilat eivät näy suoraan tulossa tai lähdössä. Kuva 3. MLP-verkon eri kerrokset ja niiden väliset painoarvovektorien kytkennät. Kerroksen jokaisen solmun lähtö on siis kytketty jokaiseen seuraavan kerroksen solmun tuloon. Nämä kerrosten välissä olevat kytkennät ovat painoarvokertoimia
10 10 (weights), joiden optimaalisten arvojen määrittäminen on oleellista kun neuroverkkoja opetetaan. Koska jokainen lähtö on kytketty jokaiseen seuraavan kerroksen tuloon, huomataan, että painoarvojen määrä kasvaa eksponentiaalisesti kun kerroksessa lisätään rinnakkaisia perceptroneita. Tämä eksponentiaalisuus näkyy suoraan realisoituvuudessa: sarjassa toimivassa piirissä painoarvovektorien arvojen päivittäminen kestää kauemmin kuin samanaikaisesti toimivassa rinnakkaisessa piirissä Opettaminen ja optimointi Kuten kaikki neuroverkot, myös MLP tulee opettaa, jotta pystytään ratkaisemaan ongelmia suurella tarkkuudella ja luotettavuudella. Tämä tapahtuu löytämällä oikeat arvot painovektoreille. Verkon optimointi voi olla haastavaa ja oppimista seurataan tehtyjen virheiden ja virheiden muutosgradienttien avulla, mikä auttaa löytämään neuroverkkosysteemin globaalit minimit. Haasteena neuroverkon opetuksessa on tilanteet, jossa verkko löytää yhden paikallisen minimin, eikä lähde kehittymään eteenpäin, kuten alla olevassa kuvassa 4. Kuva 4. Painoarvovektorien määrittämisessä ja virheiden minimoimisessa saattaa tulla tilanne, jossa verkko löytää paikallisen minimin globaalin minimin sijaan. Voidaan kuvitella, että pallo asettuu paikallisen minimin kohdalla olevaan kuoppaan, jolloin vaaditaan ylimääräistä energiaa, jotta saavutettaisiin globaali minimi.
11 11 Neuroverkon opettaminen tapahtuu syöttämällä sille ensin suuri määrä opetusdataa, jonka jälkeen sen tarkkuutta testatataan testidatalla, joka poikkeaa opetusdatasta. Usein käytetään niin sanottua valvottua oppimista, jossa syötettävän datan oikeat luokitukset tunnetaan. Siten voidaan arvioida päätyykö neuroverkko oikeaan luokitukseen vai ei. Erilaisia malleja opettamiselle on useita, mutta usein käytetään positiivista vahvistusta, jossa oikeissa luokituksissa vahvistetaan niitä painoarvokertoimia, jotka johtivat siihen luokitukseen. Vastaavasti virheellisissä luokituksissa heikennetään relevantteja painoarvokertoimia Ongelmanratkaisu Perinteinen ensimmäinen testi tekoälyn testaamisessa on XOR-ongelma sen yksinkertaisuuden, mutta haastavuuden vuoksi. XOR-ongelmassa pyritään luokittelemaan lähtö tietyillä kriteereillä. Kuvassa 5, alla, on esitetty XOR-funktio, joka saa arvon 0 tai 1 riippuen tulojen X 1 ja X 2 arvoista. Nähdään, että funktioavaruutta ei voida jakaa yhdellä viivalla, jotta saataisiin lineearisesti erotetut luokat. Funktion lähdön luokitteluun vaaditaan kaksi viivaa, johon monikerroksinen neuroverkko pystyy. Kuva 5. XOR-funktion lähtö, tulojen X 1 ja X 2 perusteella. Neuroverkkojen ongelmanratkaisussa on oleellisessa osassa ongelmien luokittelu. Esimerkiksi kuvantunnistamisessa hyödynnetään erilaisten visuaalisten elementtien luokittelua, kuten viivat, muodot, kontrastit ja värit. Kun neuroverkko havaitsee tietyt luokat, pystyy se opetuksen perusteella tarkkaan luokitteluun. Siten neuroverkon ei tarvitse opetella jokaista korkean tason elementtiä erikseen, vaan yksinkertaisempia lohkoja, joista ne muodostuvat.
12 Konvolutionaalinen neuroverkko Konvolutionaalinen neuroverkko (Convolutional Neural Network, CNN) on yksi tekoälyn syväoppimisen neuroverkkomuoto, jossa hyödynnetään perinteisen monikerros-perceptronin luokitteluominaisuuksia ja konvoluutio-operaation mahdollistamaa ominaisuuksien erottelua ja tunnistamista. Siinä missä MLP on saanut inspiraationsa aivoneuronien toiminnasta, on CNN luotu mallintamaan eläinten näköhermojen toimintaa. CNN on osoittautunut erittäin tehokkaaksi kuvantunnistuksessa, joka on ollut perinteisesti haastava ongelma tietokoneille. Kuvantunnistuksessa on paljon sovelluskohteita, mikä on ajanut kehitystä eteenpäin myös CNN:n kohdalla. CNN:ssä käytetään useita erilaisia kerroksia muokkaamaan ja erottelemaan tulovektorista erilaisia ominaisuuksia. Näitä kerroksia ovat konvoluutio-, aktivointi-, näytteistys- ja luokittelukerrokset (convolution, activation, subsampling ja categorisation/fully connected vastaavasti), kuten kuvassa 6, alla. Kuva 6. Konvolutionaalisen neuroverkon eri osat. Konvoluutiokerros (convolutional layer) tekee suurimman osan laskennasta hyödyntäen konvoluutio-operaatiota ja kernelvektoria, jolle on asetettu tietyt painoarvot. Konvoluutio on operaatio, jossa liu utetaan konvoluutiokerneliä tulovektorin yli, tuottaen niin sanotun ominaisuusvektorin (feature map). Matemaattisesti konvoluutiossa tulovektorin elementit kerrotaan kernelin vastaavilla arvoilla ja summataan yhteen, jolloin saadaan lähtövektorin arvo. Tämän jälkeen kerneliä siirretään eteenpäin ja suoritetaan uusi konvoluutio-operaatio lähtövektorin seuraavan arvon laskemiseksi. Tätä jatketaan kunnes saadaan laskettua lähtövektorin kaikki arvot eli konvoluutiokerneli on liu utettu koko tulovektorin yli. Konvoluutiokerroksessa jokainen kernel tuottaa yhden ominaisuusvektorin, joten useaa kerneliä käyttämällä saadaan erotettua erilaisia ominaisuuksia tulovektorista. Aktivointikerros (activation layer) epälinearisoi vektorin, jotta saadaan paremmin eroteltua ominaisuudet toisistaan, mikä edesauttaa oppimista. Konvoluutioneuroverkkojen aktivointikerroksissa käytetään usein yksinkertaista tasasuuntaus-funktiota (rectified linear unit, ReLU), joka tuottaa arvon 0, jos lähtö on negatiivinen, mutta muuten tulo pysyy muuttumattomana. Näytteistyskerros (subsampling/max pooling layer) pienentää kerroksen dimensioita jakamalla alue pienempiin ei-päällekäisiin alueisiin valitsemalla kunkin alueen maksimiarvo. Tämä helpottaa laskemista ilman suuria kompromissejä oppimisessa. Luokittelukerros (categorisation/fully-connected layer) on samanlainen kuin monikerros-perceptron -verkko ja siten jokainen tulo on kytketty edellisen kerroksen lähtöön. Tämän myötä saadaan muunnettua 2-ulotteiset ominaisuudet 1-ulotteiseksi
13 13 vektoriksi, jossa kutakin luokiteltavaa kategoriaa vastaa yksi arvo. Suurimman arvon saanut luokitellaan aiemman opetuksen perusteella. [2] Tyypillisesti CNN opetetaan valvotusti käyttämällä suurta määrää opetusdataa ja, kuten MLP-verkossa, tutkimalla virheiden suuruuksia kun tiedetään mitä verkon olisi pitänyt tuottaa. Opetuksen aikana CNN muokkaa konvoluutiokerneleiden arvoja virheiden minimoimiseksi. CNN:n toimintaa voidaan lopuksi arvioida syöttämällä opetusdatasta eroavaa testidataa, jolloin voidaan nähdä miten verkko kykenee tulkitsemaan ja luokittelemaan uutta dataa FPGA-piirit Field Programmable Gate Array, eli FPGA, on digitaalinen piirirakenne, jolla pystytään toteuttamaan uudelleenohjelmoitavia loogisia piirejä. FPGA on siten tehokas työkalu, jolla voidaan tuottaa piirien prototyyppejä suhteellisen vaivattomasti. FPGA:n toiminta perustuu hyvin suureen määrään loogisia portteja, jotka ovat aseteltu matriisiin. Nämä loogiset portit ovat kytketty muihin portteihin, mahdollistaen suuren rinnakkaisuuden. Tämän lisäksi FPGA:t usein sisältävät erilaisia loogisia lohkoja esimerkiksi muistia ja aritmeettisia operaatioita varten. Koska FPGA:t sisältävät paljon lohkoja ja niiden välisiä kytköksiä, piirien suunnittelu on huomattavan tärkeää jotta saadaan pinta-alaltaan mahdollisimman tiivis lopputulos. Noin % FPGA-piirien pinta-alasta menee reititykseen, joten kytkennät ovat optimoitava tarkasti [4]. Lukujen esityksessä käytetään loogisia kiikkuja, joten lukujen esittäminen vaativat paljon FPGA-piiriltä. Tämän myötä FPGA-suunnittelijan tulee tehdä kompromissi käytettävän pinta-alan ja lukutarkkuuden välillä. FPGA-piirit suunnitellaan käyttämällä erilaisia laitteistonkuvauskieliä (hardware description language, HDL), jotka toimivat rekisteritasolla, esimerkiksi VHDL ja Verilog, tai systeemitasolla, kuten SystemVerilog tai SystemC. FPGA-piirien yhtenä vaihtoehtona voidaan nähdä tavanomaiset tietokonesuorittimet (CPU, Central Processing Unit). Ne ovat edullisia ja helposti saatavissa, mutta niiden haittapuolena on rajoitettu käskykanta ja sarjaoperaatio, mikä on laskennallisesti tehotonta neuroverkkojen tapauksessa. Rinnakkaisuutta vaativa laskenta sopii siis hyvin FPGA:lla toteutettavaksi. Toinen vaihtoehto FPGA-piireille on tietokoneiden näytönohjaimet, eli GPU:t (Graphics Processing Unit). Kuten FPGA:t, ne sisältävät paljon rinnakkaisuutta, mutta haittana niillä on erittäin suuri tehonkulutus ja suuri pinta-ala, mikä johdosta se soveltuu huonosti sulautettuihin toteutuksiin. Tämän lisäksi GPU:n toimintaperiaate, jossa dataa käsitellään nipuissa, aiheuttaa paljon viivettä neuroverkkototeutuksessa, mikä ei ole suotuisaa reaaliaikaisessa kuvantunnistuksessa [2]. Yhtä sovellusta varten toteutetut ASIC-piirit (Application Specific Integrated Circuit) sopivat hyvin kun tiedetään tarkalleen millainen neuroverkko ollaan rakentamassa laitteistotasolla. FPGA:n avulla voidaan tutkia neuroverkon optimaalisuutta pienellä mittakaavalla ja lopulta toteuttaa se massatuotannossa ASIC-piirillä.
14 14 3. NEUROVERKKOJEN FPGA-TOTEUTUS Johtuen konvoluutioverkkojen vaatimuksista kaistanleveyden, muistin ja nopeuden suhteen, se vaatii myös sille tarkasti määritellyn laitteistotason toteutuksen. Tämän myötä yleiskäyttöiset prosessorit eivät ole sopivia CNN:n toteutukseen. Konvoluutioneuroverkkoja on toteutettu muun muassa FPGA-, GPU- (Graphics Processing Unit) ja ASIC-pohjaisina. Viimeisimpien tutkimusten myötä on todettu, että FPGA:n tehokkuus tulee ohittamaan GPU:n, lisäten sen kannattavuutta [5]. GPU:lla on huono hyötysuhde ja se sopii huonosti sulautettuun toteutukseen. FPGA:n houkuttelevuutta lisää sen hyvä suorituskyky, suuri tehohyötysuhde, nopea kehitys ja uudelleenrekonfiguroinnin mahdollisuus [6]. CNN:n toteuttamiseen on olemassa useita erilaisia kehyksiä (framework), kuten AlexNet, SqueezeNet, GoogLeNet, Caffe ja VGG-16. Näiden eroina on pääosin kerneleiden koko ja kerrosten määrä. Lisäksi erilaiset toteutukset hyödyntävät rinnakkaisuutta eri tavalla, jolloin niiden tehokkuuden vertaaminen on haastavaa, vaikka käytössä olisi samat yksiköt, kuten GMAC/s. [2] Konvoluutioverkon erilaisten kerrosten toteutusta on kuvattu seuraavissa luvuissa Konvoluutiokerros Konvoluutiokerrokset ovat CNN:n tärkeimmät kerrokset. Niitä voi olla konvoluutioverkossa useita ja niiden kernelien koot voivat vaihdella. Noin 90 prosenttia konvolutionaalisen neuroverkon laskennasta tapahtuu konvoluutiokerroksissa, joten niiden huolellinen optimointi on tärkeää [3]. Konvoluutio voidaan toteuttaa FPGA-piireissä yksinkertaisesti MAC-operaatiolla (Multiply-Accumulate operation), jossa nimensä mukaisesti kerrotaan ja summataan lukuja yhteen. Nykyiset FPGA-piirit ovat hyvin tehokkaita toteuttamaan MACoperaatioita, esimerkiksi yksinkertaisesti porttitasolla käyttämällä summaimia ja kertoimia, kuten kuvassa 7, alla. Konvoluutioverkkoa suunnitellessa oleellisia parametrejä on konvoluutiokernelien koko, määrä ja liuku, eli stride. Konvoluutiossa on aiemmin käytetty 11*11 kerneleitä, mutta on huomattu, että pienemmät, 3*3 kernelit toteuttavat vastaavan tehokkuuden [2]. Konvoluutiokernelin koko määrittää miten pieniä ominaisuuksia voidaan tulkita tulovektorista. Toinen oleellinen parametri on kerneleiden määrä. N kappaletta kerneleitä tuottaa N kappaletta ominaisuusvektoreita (feature maps). Mitä enemmän kerneleitä on, sitä paremmin se pystyy tunnistamaan erilaisia ominaisuuksia tulovektorista. Stride-parametri kuvaa sitä, miten paljon konvoluutiokerneliä liu utetaan kerrallaan. Toisin sanoen stride määrää kuinka päällekäin eri kernelit ovat. Tyypillisesti käytetään stride-parametrin arvoa 2, jolloin konvoluutiokerneli hyppää jokaisen laskun jälkeen 2 pikseliä eteenpäin. Siten verrattuna stride-parametrin arvoon 1, päällekkäisyys on pienempi ja siten lähdön koko on pienempi.
15 15 Kuva 7. Konvoluutio-operaation toteuttaminen kertoimella ja summaimella Aktivointikerros Aktivointikerroksen toteutus on yksinkertainen: käydään tulovektorin kaikki arvot läpi yksi kerrallaan ja annetaan lähtöön aktivointifunktion mukainen arvo, kuten alla olevassa kuvassa 8. Siten aktivointikerroksessa dimensio ei muutu, mutta data muuttuu epälineaariseksi, mikä helpottaa erojen tunnistamista. Useimmiten käytetään ReLU-aktivointifunktiota [2], joka tuottaa lähtöön arvon 0 negatiivisilla tulon arvoilla, mutta muuten tuottaa lähtöön tulon arvon sellaisenaan. Aktivointikerros voidaan toteuttaa erillisenä moduulina tai osana konvoluutiokerrosta, kuten usein tehdään. Erillisenä moduulina tulisi käydä koko tulovektori läpi, mikä on laskennallisesti kallista jos verkossa on monta parametria. Siksi on helpompi suorittaa aktivointifunktio suoraan konvoluutio-operaation jälkeen. Tällöin pelkästään luvun etumerkkiin perustuva operaatio voidaan toteuttaa yksinkertaisesti ja tehokkaasti porttitasolla. Kuva 8. Aktivointikerros, jossa on käytetty ReLU-aktivointifunktiota 3*3 vektorille.
16 Näytteistyskerros Näytteistyskerros (max pooling layer) pienentää vektorin kokoa jakamalla se pienempiin ei-päällekäisiin alueisiin ja valitsemalla jokaisesta alueesta suurin arvo, kuten alla olevassa kuvassa 9. Siten saadaan yksinkertaistettua laskentaa ilman suuria menetyksiä tarkkuudessa. Vaihtoehtoisesti voidaan myös keskiarvoistaa jokaisen alueen arvot. FPGA:lla tämä voidaan toteuttaa yksinkertaisesti moduulina, joka käy läpi kunkin alueen läpi ja asettaa lähtöön niiden suurimmat arvot. Alueiden koko on määritettävissä ulkoisilla parametreilla, useimmiten alueen koko on 2*2, mikä puolittaa tulovektorin koon lähtöön. Koska alueet eivät ole päällekäin, voidaan koko operaatio suorittaa rinnakkain, mikä hyödyntää hyvin FPGA:n rinnakkaisprosessointia. Tämä on laskennallisesti kevyt operaatio, joten sen optimoinnilla ei saada niin suurta etua kuin esimerkiksi konvoluutiokerroksessa. Kuva 9. Näytteistyskerroksen max pooling-operaatio Luokittelukerros CNN-verkon viimeisenä kerroksena on usein luokittelukerros (categorisation/fully connected layer), kuva 10, jonka avulla pystytään luokittelemaan tulovektori edellisen kerroksen feature map -vektorien perusteella. Luokittelukerroksen tehokkuus riippuu siitä miten hyvin se on opetettu. Vaikkakin luokittelukerroksesta käytetään eri nimeä, on se pääpiirteiltään sama kuin kappaleessa esitetty MLPverkko. Luokittelukerroksessa suurin pullonkaula on paljon muistia ja nopeaa kaistaa vaativat painoarvovektorit, ja ongelma kasvaa eksponentiaalisesti kun luokittelukerroksessa käytetään suurta määrää solmuja. Yksi mahdollisuus on jakaa luokittelukerroksen painoarvot konvoluutiokerroksen kanssa. Toinen vaihtoehto on käyttää yhtä jaettua summainta koko luokittelukerroksessa.
17 17 Kuva 10. Luokittelukerros Koko verkon toteutus Konvolutionaalinen neuroverkko vaatii paljon laskentatehoa ja muistia, joten nykyteknologialla sen toteuttaminen vaatii yksinkertaistamista, jolloin opetusaika ja tarkkuus kärsivät. Tämä näkyy erityisesti tilanteissa, joissa halutaan toteuttaa konvolutionaalinen neuroverkko sulautetusti. Konvoluutioverkossa on monta osaa, joten sitä voidaan optimoida monella tapaa, mikä tekee myös optimaalisen verkon löytämisestä haastavaa. Yleisimmät optimointitavat liittyvät konvoluutiokerroksen tai luokittelukerroksen optimointiin, mutta nykyään tutkimus on keskittynyt enemmän konvoluutiokerrokseen [2]. Ensimmäisessä ongelmana on suuri MAC-operaatioiden määrä ja jälkimmäisessä suuri vaadittava muistin määrä. Lisäksi kaistanleveyden tulee olla sopiva prosessointitehoon nähden. Konvoluutioverkon tehokkuutta mitattaessa voidaan käyttää useita erilaisia tunnuslukuja riippuen toteutuksesta. Koska konvoluutiokerroksen oleellinen tekijä on MAC-operaatio ja siten verkon tehokkuutta usein mitataan yksiköllä GMAC/s, eli miljardi MAC-operaatiota sekunnissa. Toinen käytettävä yksikkö on GFLOPS, eli miljardi liukulukuoperaatiota sekunnissa. Lisäksi käytetään myös laajempaa tunnuslukua GOP/s, eli miljardia operaatiota sekunnissa. Erityisesti sulautetuissa sovelluksissa vaaditaan suurta tehokkuutta pinta-alaa kohden, jolloin voidaan käyttää yksikköä GOPS/Slice, eli miljardia operaatiota sekunnissa pinta-ala-yksikköä kohden. GOPS/Slice soveltuu siten erilaisten FPGA-toteutusten vertaamiseen, sillä se ei ole riippuvainen käytetystä laitteistosta [6]. Oleellisesti FPGA-piirin energiatehokkuuteen vaikuttavat käytetty lukutarkkuus ja muistin kaistanleveys. Lisäksi konvoluutioverkon tulee hyödyntää käytettävää rautaa mahdollisimman tehokkaasti [2]. Verkon tehokkuutta tarkastellessa on oleellista myös mihin sovellukseen FPGA- CNN toteutetaan; sulautetussa järjestelmässä on tarkemmat kriteerit tehonkulutukselle ja pinta-alalle kuin pelkällä FPGA-kehityslaudalla suunnitellulla neuroverkolla. Neuroverkot ovat tehokkaita ratkaisemaan tietynlaisia ongelmia, joten nykyään on suosittua toteuttaa neuroverkko sulautettuna piirinä, niin sanottuna kiihdyttimenä (accelerator). Tosielämän käyttökohteita sulautetuille neuroverkoille
18 löytyy paljon, esimerkiksi itseohjautuvien autojen kameroista ja iphone-puhelimien kasvojentunnistimista. CNN on tehokas työkalu kun sitä käytetään sille soveltuvissa ongelmissa ja asianmukaisella rautatason toteutuksella. Vaadittava laskentateho riippuu paljon tulossa olevan kuvan dimensioista. Esimerkiksi kuvantunnistuksessa riippuu onko tulossa 3-kanavainen RGB-kuva, 16-bittinen harmaasävykuva vai yksinkertainen mustavalkokuva. RGB-kuvassa voidaan hyödyntää 3-ulotteista konvoluutiokerneliä, mutta tällöin laskenta on huomattavasti vaativampaa kuin 2-ulotteisessa kuvassa. Konvoluutioneuroverkon suunnittelijan vastuulla on siis tiedostaa hyvin selvästi se ongelma-avaruus, jossa neuroverkko tulee toimimaan, sekä käytetyn laitteiston mahdollisuudet ja rajoitukset. FPGA:n ominaisuuksia hyödyntämällä voi suunnittelija tehdä nopeita muutoksia ja optimoida neuroverkko mahdollisimman hyvin. 18
19 19 4. POHDINTA Konvolutionaalinen neuroverkko on haastava toteuttaa FPGA-piireillä ilman kompromissejä tarkkuuden suhteen. FPGA on rinnakkaistoiminnallaan hyvin soveltuva konvolutionaalisen neuroverkon toteutukseen, mutta yksittäisten kerrosten erilaiset vaatimukset tekevät optimoinnista haastavaa. Oleellisimmat tekijät ovat FPGA:n tehokkuus pinta-alaa kohti, muistin kaistanleveys ja nopeus, MAC-lohkojen määrä ja nopeus, sekä käytettyjen lukuformaattien pituus. Konvolutionaalisen neuroverkon toteutus vaatii myös sopivien hyperparametrien valitsemista, jolloin suunnittelijan vastuulla on löytää optimaalinen verkon rakenne lukuisista vaihtoehdoista. Toisaalta tekoälyn saralla tehdään paljon tutkimusta parhaiden käytäntöjen löytämiseksi, joten hyväksi todettuja neuroverkkoja muodostuu tutkimuksen myötä. MLP-verkon toteuttaminen on triviaali konvolutionaaliseen neuroverkkoon nähden ja olennaisesti konvolutionaalisessa neuroverkossa on MLP-verkko luokittelukerroksessa. Siten konvolutionaaliverkko on huomattavasti haastavampi toteuttaa. Tämä myös kuvastaa hyvin tekoälyn saralla tapahtunutta kehitystä vuosikymmenien aikana. Nanovalmistusteknologioiden kehittyessä pystytään valmistamaan entistä tiiviimpiä piirejä kasvattaen tehokkuutta tilavuutta kohden, mutta FPGA-piirien reititys vie paljon tilaa, mikä on konkreettinen haaste piirinvalmistuksessa. Erityisesti sulautetuissa toteutuksissa, kuten matkapuhelimien tekoälykiihdyttimissä, vaaditaan pientä pinta-alaa. Tässä työssä esiteltiin kahden erilaisen neuroverkon toimintaperiaatteet ja selvitettiin toteutusmahdollisuuksia FPGA:lla. On kuitenkin huomattava, että lisäkirjallisuuteen on hyvä tutustua, mikäli haluaa toteuttaa työssä esiteltyjä neuroverkkoja käyttämällä FPGA-piiriä. Neuroverkkojen toteutuksessa haastavaa on niille luonteenomainen todennäköisyyksiin perustuva toiminta. Lähdön määrittäminen verkon painoarvojen perusteella on vaikeaa, joten verkon käytännön toimintaa voidaan arvioida vasta lopuksi. Virheiden minimointi on oleellisessa osassa ja verkon tarkkuus mitataan todennäköisyyksinä, joten satunnaisuus tekee käytännön toteutuksen haastavaksi. Siten neuroverkkojen toteuttaminen on nykyisellään haastavaa sovelluskohteissa, joissa vaaditaan ehdotonta tarkkuutta. On kuitenkin huomattava, että sovelluskohteissa, kuten kuvantunnistus, joissa neuroverkot kilpailevat ihmisen kanssa, se on usein nopeampi reagoimaan. Suunnittelijan tulee olla tietoinen näistä tekoälyn rajoituksista ja käyttää huolellisuutta neuroverkkojen implementoinnissa.
20 20 5. YHTEENVETO Tässä työssä esiteltiin yleisellä tasolla MLP- ja konvolutionaalisen neuroverkon perusperiaatteet ja toteutusmahdollisuudet. FPGA-piirin rinnakkaisuus on selkeä etu kun halutaan toteuttaa massiivista rinnakkaisuutta hyödyntävää neuroverkkoa ja FPGA:n uudelleenohjelmoitavuus mahdollistaa yksinkertaisen prototypioinnin neuroverkkoa optimoidessa. Konvolutionaalisen neuroverkon haasteet laskentatehon ja muistin osalta ovat suurin haaste FPGA-toteutukselle. 90 prosenttia laskennasta tapahtuu CNN:n konvoluutiokerroksissa kun taas luokittelukerros vaatii suurta muistin määrää ja kaistanleveyttä. FPGA-piireissä 90 prosenttia pinta-alasta menee loogisten lohkojen väliseen reititykseen, joten tehokkaan FPGA-piirin suunnittelu vaatii kompromisseja pinta-alan, sekä rinnakkaisuuden ja tehokkuuden välillä. Neuroverkkojen sulautettu toteutus tekoälykiihdyttimenä esimerkiksi matkapuhelimissa vaatii huolellista optimointia tehonkulutuksen, ja laskentatehon suhteen. Konvolutionaalisen neuroverkon ongelmanratkaisukyky on havaittu erittäin tehokkaaksi kuvantunnistuksessa, joka on ollut perinteisesti haastava laskennallinen ongelma.
21 21 6. LÄHTEET [1] Beale, R., & Jackson, T. (1998). Neural computing: An introduction (Reprinted ed.). Bristol [u.a.]: Inst. of Physics Publ. [2] Guo, K. (2018). Angel-Eye: A Complete Design Flow for Mapping CNN Onto Embedded FPGA. Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on, 37(1), pp [3] Yuteng Zhou, Shrutika Redkar, & Xinming Huang. (Jan 1, 2017). Deep learning binary neural network on an FPGA. Paper presented at the 281. [4] Farooq U., Marrakchi Z., Mehrez H. (2012) FPGA Architectures: An Overview. In: Tree-based Heterogeneous FPGA Architectures. Springer, New York, NY [5] Nurvitadhi, E., Subhaschandra, S., Boudoukh, G., Venkatesh, G., Sim, J., Marr, D., Moss, D. (2017). Can FPGAs Beat GPUs in Accelerating Next-Generation Deep Neural Networks? In Proceedings of the 2017 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays - FPGA 17. ACM Press. [6] Zhang, C., Li, P., Sun, G., Guan, Y., Xiao, B., & Cong, J. (2015). Optimizing FPGA-based Accelerator Design for Deep Convolutional Neural Networks. Proceedings of the 2015 ACM/SIGDA International Symposium on Field- Programmable Gate Arrays - FPGA 15. doi: /
Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun
Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Sami Hokuni 12 Syyskuuta, 2012 1/ 54 Sami Hokuni Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Turun Yliopisto. Gradu tehty 2012 kevään
Johdatus tekoälyn taustalla olevaan matematiikkaan
Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 2. luento 10.11.2017 Keinotekoiset neuroverkot Neuroverkko koostuu syöte- ja ulostulokerroksesta
VHDL/Verilog/SystemC. Jukka Jokelainen 20.10.2009
VHDL/Verilog/SystemC Jukka Jokelainen 20.10.2009 Sisältö Mitä ihmettä on hardwaren ohjelmointi? VHDL Verilog SystemC Analogiaelektroniikan yhdistäminen digitaaliseen maailmaan Yhteenveto ja pohdintaa Hardwaren
JOHDATUS TEKOÄLYYN TEEMU ROOS
JOHDATUS TEKOÄLYYN TEEMU ROOS NEUROVERKOT TURINGIN KONE (TAI TAVALLINEN OHJELMOINTI) VAIN YKSI LASKENNAN MALLI ELÄINTEN HERMOSTOSSA LASKENTA ERILAISTA: - RINNAKKAISUUS - STOKASTISUUS (SATUNNAISUUS) - MASSIIVINEN
Tekoäly ja alustatalous. Miten voit hyödyntää niitä omassa liiketoiminnassasi
Tekoäly ja alustatalous Miten voit hyödyntää niitä omassa liiketoiminnassasi AI & Alustatalous AI Digitaalisuudessa on 1 ja 0, kumpia haluamme olla? Alustatalouden kasvuloikka Digitaalisen alustatalouden
Tee-se-itse -tekoäly
Tee-se-itse -tekoäly Avainsanat: koneoppiminen, tekoäly, neuroverkko Luokkataso: 6.-9. luokka, lukio, yliopisto Välineet: kynä, muistilappuja tai kertakäyttömukeja, herneitä tms. pieniä esineitä Kuvaus:
TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)
JOHDATUS TEKOÄLYYN TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA) KONEOPPIMISEN LAJIT OHJATTU OPPIMINEN: - ESIMERKIT OVAT PAREJA (X, Y), TAVOITTEENA ON OPPIA ENNUSTAMAAN Y ANNETTUNA X.
Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena
Mikrotietokone Moderni tietokone Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena Sen käyttötarkoitus on yleensä työnteko, kissavideoiden katselu internetistä tai pelien pelaaminen. Tietokoneen
Johdatus tekoälyn taustalla olevaan matematiikkaan
Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 3.11.2017 Mitä tekoäly on? Wikipedia: Tekoäly on tietokone tai tietokoneohjelma, joka kykenee älykkäiksi
JOHDATUS TEKOÄLYYN TEEMU ROOS
JOHDATUS TEKOÄLYYN TEEMU ROOS NEUROVERKOT TURINGIN KONE (TAI TAVALLINEN OHJELMOINTI) VAIN YKSI LASKENNAN MALLI ELÄINTEN HERMOSTOSSA LASKENTA ERILAISTA: - RINNAKKAISUUS - STOKASTISUUS (SATUNNAISUUS) - MASSIIVINEN
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO Opinnäytetyö KESKI-POHJANMAAN AMMATTIKORKEAKOULU Puutekniikan koulutusohjelma Toukokuu 2009 TIIVISTELMÄ OPINNÄYTETYÖSTÄ Yksikkö Aika Ylivieska
JOHDATUS TEKOÄLYYN TEEMU ROOS
JOHDATUS TEKOÄLYYN TEEMU ROOS NEUROVERKOT TURINGIN KONE (TAI TAVALLINEN OHJELMOINTI) VAIN YKSI LASKENNAN MALLI ELÄINTEN HERMOSTOSSA LASKENTA ERILAISTA: - RINNAKKAISUUS - STOKASTISUUS (SATUNNAISUUS) - MASSIIVINEN
Tekoäly muuttaa arvoketjuja
Tekoäly muuttaa arvoketjuja Näin kartoitat tekoälyn mahdollisuuksia projektissasi Harri Puolitaival Harri Puolitaival Diplomi-insinööri ja yrittäjä Terveysteknologia-alan start-up: Likelle - lämpötilaherkkien
CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen
CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden
Puheentunnistus. Joel Pyykkö 1. 1 DL-AT Consulting
Puheentunnistus Joel Pyykkö 1 1 DL-AT Consulting 2018 Sisällysluettelo Puheentunnistus Yleisesti Chattibotin Luonti Esimerkkinä - Amazon Lex Puheentunnistus Yleisesti Puheentunnistus Yleisesti Puheentunnistus
Kognitiivinen mallintaminen Neuraalimallinnus, luento 1
Kognitiivinen mallintaminen Neuraalimallinnus, luento 1 Nelli Salminen nelli.salminen@helsinki.fi D433 Neuraalimallinnuksen osuus neljä luentokertaa, muutokset alla olevaan suunnitelmaan todennäköisiä
Johdatus tekoälymatematiikkaan (kurssilla Johdatus Watson-tekn
Johdatus tekoälymatematiikkaan (kurssilla Johdatus Watson-tekniikkaan ITKA352) Informaatioteknologian tiedekunta Jyväskylän yliopisto 23.3.2018 Tekoälyn historiaa 6 1 Introduction Kuva Fig. lähteestä 1.3
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann
Flash AD-muunnin. Ominaisuudet. +nopea -> voidaan käyttää korkeataajuuksisen signaalin muuntamiseen (GHz) +yksinkertainen
Flash AD-muunnin Koostuu vastusverkosta ja komparaattoreista. Komparaattorit vertailevat vastuksien jännitteitä referenssiin. Tilanteesta riippuen kompraattori antaa ykkösen tai nollan ja näistä kootaan
TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?
Miksi moniprosessorijärjestelmä? Laskentaa voidaan hajauttaa useammille prosessoreille nopeuden, modulaarisuuden ja luotettavuuden vaatimuksesta tai hajauttaminen voi helpottaa ohjelmointia. Voi olla järkevää
Efficiency change over time
Efficiency change over time Heikki Tikanmäki Optimointiopin seminaari 14.11.2007 Contents Introduction (11.1) Window analysis (11.2) Example, application, analysis Malmquist index (11.3) Dealing with panel
monitavoitteisissa päätöspuissa (Valmiin työn esittely) Mio Parmi Ohjaaja: Prof. Kai Virtanen Valvoja: Prof.
Epätäydellisen preferenssiinformaation hyödyntäminen monitavoitteisissa päätöspuissa (Valmiin työn esittely) Mio Parmi 15.1.2018 Ohjaaja: Prof. Kai Virtanen Valvoja: Prof. Kai Virtanen Tausta Päätöspuu
ImageRecognition toteutus
ImageRecognition toteutus Simo Korkolainen 27 kesäkuuta 2016 Projektin tarkoituksena on tehdä ohjelma, joka opettaa neuroverkon tunnistamaan kuvia backpropagation-algoritmin avulla Neuroverkon opetuksessa
Digitaalitekniikan matematiikka Luku 5 Sivu 1 (22) Lausekkeiden sieventäminen F C F = B + A C. Espresso F = A (A + B) = A A + A B = A B
igitaalitekniikan matematiikka Luku 5 Sivu (22).9.2 e = + = ( + ) = + = Espresso igitaalitekniikan matematiikka Luku 5 Sivu 2 (22).9.2 e Johdanto Tässä luvussa esitetään perusteet lausekemuodossa esitettyjen
Ohjelmistoradio. Mikä se on:
1 Mikä se on: SDR = Software Defined Radio radio, jossa ohjelmisto määrittelee toiminnot ja ominaisuudet: otaajuusalue olähetelajit (modulaatio) olähetysteho etuna joustavuus, jota tarvitaan sovelluksissa,
TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010
TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta Yliassistentti Jussi Hakanen jussi.hakanen@jyu.fi syksy 2010 Optimaalisuus: objektiavaruus f 2 min Z = f(s) Parhaat arvot alhaalla ja vasemmalla
Integrointialgoritmit molekyylidynamiikassa
Integrointialgoritmit molekyylidynamiikassa Markus Ovaska 28.11.2008 Esitelmän kulku MD-simulaatiot yleisesti Integrointialgoritmit: mitä integroidaan ja miten? Esimerkkejä eri algoritmeista Hyvän algoritmin
Julkaisun laji Opinnäytetyö. Sivumäärä 43
OPINNÄYTETYÖN KUVAILULEHTI Tekijä(t) SUKUNIMI, Etunimi ISOVIITA, Ilari LEHTONEN, Joni PELTOKANGAS, Johanna Työn nimi Julkaisun laji Opinnäytetyö Sivumäärä 43 Luottamuksellisuus ( ) saakka Päivämäärä 12.08.2010
Tietokonearkkitehtuuri 2 TKT-3201 (5 op)
Tietokonearkkitehtuuri 2 (5 op) syksyllä 2012 periodit I & II (viikot 35-41 & 43-49) luennot tiistaisin klo 14-16 (periodi I: sali S4, periodi II: sali TB109) Kurssin tavoite Käydään läpi tietokoneen toimintaa
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen
Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen 16.06.2014 Ohjaaja: Urho Honkanen Valvoja: Prof. Harri Ehtamo Työn saa tallentaa ja julkistaa Aalto-yliopiston
Modul-Fleet KALUSTONHALLINNAN OPTIMOINTIIN. I can help! Ordered 3 items. Can t serve last client. Running late!
Modul-Fleet KALUSTONHALLINNAN OPTIMOINTIIN I can help! Ordered 3 items Can t serve last client Running late! Modul-Fleet KALUSTONHALLINNAN OPTIMOINTIIN Haluatko hallita organisaatiosi suurempaa liikkuvuutta
BL40A17x0 Digitaalielektroniikka A/B: Ohjelmoitavat logiikkapiirit
BL4A17x Digitaalielektroniikka A/B: Ohjelmoitavat logiikkapiirit Ohjelmoitavat logiikkapiirit (PLD, Programmable Logic Device) PLD (Programmable Logic Device) on yleinen nimitys integroidulle piirille,
Tiedonsiirron kokonaisoptimointi erilaisten tietoverkkojen yhteiskäytössä
Tiedonsiirron kokonaisoptimointi erilaisten tietoverkkojen yhteiskäytössä Juuso Meriläinen 27.11.2015 Juuso Meriläinen Tiedonsiirron kokonaisoptimointi erilaisten tietoverkkojen yhteiskäytössä 1 / 11 Johdanto
Mitä on konvoluutio? Tutustu kuvankäsittelyyn
Mitä on konvoluutio? Tutustu kuvankäsittelyyn Tieteenpäivät 2015, Työohje Sami Varjo Johdanto Digitaalinen signaalienkäsittely on tullut osaksi arkipäiväämme niin, ettemme yleensä edes huomaa sen olemassa
Gap-filling methods for CH 4 data
Gap-filling methods for CH 4 data Sigrid Dengel University of Helsinki Outline - Ecosystems known for CH 4 emissions; - Why is gap-filling of CH 4 data not as easy and straight forward as CO 2 ; - Gap-filling
Kognitiivinen mallintaminen. Nelli Salminen
Kognitiivinen mallintaminen Neuraalimallinnus 24.11. Nelli Salminen nelli.salminen@tkk.fi Tällä kerralla ohjelmassa vielä perseptronista ja backpropagationista kilpaileva oppiminen, Kohosen verkko oppimissääntöjen
Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen
Hävittäjälentokoneen reitin suunnittelussa käytettävän dynaamisen ja monitavoitteisen verkko-optimointitehtävän ratkaiseminen A*-algoritmilla (valmiin työn esittely) Joonas Haapala 8.6.2015 Ohjaaja: DI
Tällä kerralla ohjelmassa. Kognitiivinen mallintaminen Neuraalimallinnus Kertausta: Perseptronin oppimissääntö
Tällä kerralla ohjelmassa Kognitiivinen mallintaminen Neuraalimallinnus 19.2. Nelli Salminen nelli.salminen@helsinki.fi D433 vielä perseptronista ja backpropagationista kilpaileva oppiminen, Kohosen verkko
How to Support Decision Analysis with Software Case Förbifart Stockholm
How to Support Decision Analysis with Software Case Förbifart Stockholm (Valmiin työn esittely) 13.9.2010 Ohjaaja: Prof. Mats Danielson Valvoja: Prof. Ahti Salo Tausta -Tukholman ohikulkutien suunnittelu
Johdatus tekoälyn taustalla olevaan matematiikkaan
Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 4. luento 24.11.2017 Neuroverkon opettaminen - gradienttimenetelmä Neuroverkkoa opetetaan syöte-tavoite-pareilla
Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi
Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi 24.01.2011 Ohjaaja: Tapio Niemi Valvoja: Harri Ehtamo Tausta ja työn tavoite Työ tehtiin Helsinki Institute of Physics:ille,
Koneoppiminen ja tekoäly suurten tietomassojen käsittelyssä yleensä ja erityisesti sovellettuina satelliittidatan käyttöön metsien arvioinnissa
Koneoppiminen ja tekoäly suurten tietomassojen käsittelyssä yleensä ja erityisesti sovellettuina satelliittidatan käyttöön metsien arvioinnissa Metsätieteen päivä 26.11.2018 Jorma Laaksonen, vanhempi yliopistonlehtori
1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä
OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 811122P (5 op.) 12.12.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Taulukon edut Taulukon haitat Taulukon haittojen välttäminen Dynaamisesti linkattu lista Linkatun listan solmun määrittelytavat Lineaarisen listan toteutus dynaamisesti linkattuna
Johdatus tekoälyn taustalla olevaan matematiikkaan
Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 3. luento 17.11.2017 Neuroverkon opettaminen (ohjattu oppiminen) Neuroverkkoa opetetaan syöte-tavoite-pareilla
Digitaalitekniikan matematiikka Luku 6 Sivu 1 (20) Kombinaatiopiirit & & A B A + B
igitaalitekniikan matematiikka Luku 6 Sivu (20).9.20 e 0 0 0 0 0 + 0 0 0 0 0 0 0 igitaalitekniikan matematiikka Luku 6 Sivu 2 (20).9.20 e Johdanto Tässä luvussa esitellään porttipiirityypit J-EI ja TI-EI
Yleisen PSCR-menetelmän toteutus ohjelmoitavalla näytönoh
Yleisen n toteutus ohjelmoitavalla näytönohjaimella Mirko Myllykoski mirko.myllykoski@jyu.fi 15.2.2011 Mitä teen? Tarkoituksena toteuttaa (ja osin jo toteutettukin) stä versio ohjelmoitavalle näytönohjaimelle
A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.
Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =
Tilastotiede ottaa aivoon
Tilastotiede ottaa aivoon kuinka aivoja voidaan mallintaa todennäköisyyslaskennalla, ja mitä yllättävää hyötyä siitä voi olla Aapo Hyvärinen Laskennallisen data-analyysin professori Matematiikan ja tilastotieteen
6. Analogisen signaalin liittäminen mikroprosessoriin 2 6.1 Näytteenotto analogisesta signaalista 2 6.2. DA-muuntimet 4
Datamuuntimet 1 Pekka antala 19.11.2012 Datamuuntimet 6. Analogisen signaalin liittäminen mikroprosessoriin 2 6.1 Näytteenotto analogisesta signaalista 2 6.2. DA-muuntimet 4 7. AD-muuntimet 5 7.1 Analoginen
Johdatus tekoälyyn. Luento 6.10.2011: Koneoppiminen. Patrik Hoyer. [ Kysykää ja kommentoikaa luennon aikana! ]
Johdatus tekoälyyn Luento 6.10.2011: Koneoppiminen Patrik Hoyer [ Kysykää ja kommentoikaa luennon aikana! ] Koneoppiminen? Määritelmä: kone = tietokone, tietokoneohjelma oppiminen = ongelmanratkaisukyvyn
Testaaminen ohjelmiston kehitysprosessin aikana
Testaaminen ohjelmiston kehitysprosessin aikana 04.02.2004 http://cs.joensuu.fi/tsoft/ Sisällys 1. Johdanto 2. Yksikkö- ja integrointitestaus 3. Järjestelmätestaus 4. Hyväksymistestaus http://cs.joensuu.fi/tsoft/
Data Envelopment Analysis (DEA) - menetelmät + CCR-DEA-menetelmä
Data Envelopment Analysis (DEA) - menetelmät + CCR-DEA-menetelmä Mat-2.4142 Optimointiopin seminaari kevät 2011 Esityksen rakenne I osa Tehokkuudesta yleisesti DEA-mallin perusajatus CCR-painotus II osa
Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely)
Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely) Jani Laine 31.10.2017 Ohjaaja: DI Jimmy Kjällman Valvoja: Prof. Kai Virtanen Työn saa tallentaa ja julkistaa Aalto-yliopiston
7.4 Variability management
7.4 Variability management time... space software product-line should support variability in space (different products) support variability in time (maintenance, evolution) 1 Product variation Product
Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005
Graafin 3-värittyvyyden tutkinta T-79.165 Graafiteoria, projektityö (eksakti algoritmi), kevät 2005 Mikko Malinen, 36474R 29. maaliskuuta, 2005 Tiivistelmä Artikkelissa käydään läpi teoriaa, jonka avulla
Paavo Kyyrönen & Janne Raassina
Paavo Kyyrönen & Janne Raassina 1. Johdanto 2. Historia 3. David Deutsch 4. Kvanttilaskenta ja superpositio 5. Ongelmat 6. Tutkimus 7. Esimerkkejä käyttökohteista 8. Mistä näitä saa? 9. Potentiaali 10.
Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
Tilastotiede ottaa aivoon
Tilastotiede ottaa aivoon kuinka aivoja voidaan mallintaa todennäköisyyslaskennalla, ja mitä yllättävää hyötyä siitä voi olla Aapo Hyvärinen Laskennallisen data-analyysin professori Matematiikan ja tilastotieteen
SIMULINK S-funktiot. SIMULINK S-funktiot
S-funktio on ohjelmointikielellä (Matlab, C, Fortran) laadittu oma algoritmi tai dynaamisen järjestelmän kuvaus, jota voidaan käyttää Simulink-malleissa kuin mitä tahansa valmista lohkoa. S-funktion rakenne
Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu
Luento 1: Optimointimallin muodostaminen; optimointitehtävien luokittelu Merkintöjä := vasen puoli määritellään oikean puolen lausekkeella s.e. ehdolla; siten että (engl. subject to, s.t.) vasemman puolen
The CCR Model and Production Correspondence
The CCR Model and Production Correspondence Tim Schöneberg The 19th of September Agenda Introduction Definitions Production Possiblity Set CCR Model and the Dual Problem Input excesses and output shortfalls
AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 5, ratkaisuja
AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 5, ratkaisuja s2009 Tehtävien ratkaisussa käytän yhteistä top-level -suunnitteluyksikköä, jonka komponentilla toteutetaan erilaiset piirin topologiat.
7. Product-line architectures
7. Product-line architectures 7.1 Introduction 7.2 Product-line basics 7.3 Layered style for product-lines 7.4 Variability management 7.5 Benefits and problems with product-lines 1 Short history of software
Algoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
Verilogvs. VHDL. Janne Koljonen University of Vaasa
Verilogvs. VHDL Janne Koljonen University of Vaasa Sälää Huom! Verilogistauseita versioita: 1995, 2001 ja 2005. Kommentit Javasta tutut // ja /* */ ovat kommenttimerkkejä. Case sensitivity Isot ja pienet
Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen
Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka
Ongelma(t): Miten digitaalista tietoa voidaan toisintaa ja visualisoida? Miten monimutkaista tietoa voidaan toisintaa ja visualisoida?
Ongelma(t): Miten digitaalista tietoa voidaan toisintaa ja visualisoida? Miten monimutkaista tietoa voidaan toisintaa ja visualisoida? 2 Tieto on koodattu aikaisempaa yleisemmin digitaaliseen muotoon,
1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI
1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI 1 1.1 Funktion optimointiin perustuvat klusterointialgoritmit Klusteroinnin onnistumista mittaavan funktion J optimointiin perustuvissa klusterointialgoritmeissä
ELEC-C3240 Elektroniikka 2 Digitaalielektroniikka Karnaugh n kartat ja esimerkkejä digitaalipiireistä
ELE-324 Elektroniikka 2 Digitaalielektroniikka Karnaugh n kartat ja esimerkkejä digitaalipiireistä Materiaalia otettu myös: https://www.allaboutcircuits.com/textbook/digital/chpt-8/introduction-to-karnaughmapping/
Kombinatorisen logiikan laitteet
Kombinatorisen logiikan laitteet Kombinatorinen logiikka tarkoittaa logiikkaa, jossa signaali kulkee suoraan sisääntuloista ulostuloon Sekventiaalisessa logiikassa myös aiemmat syötteet vaikuttavat ulostuloon
1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI
1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI 1 1.1 Funktion optimointiin perustuvat klusterointialgoritmit Klusteroinnin onnistumista mittaavan funktion J optimointiin perustuvissa klusterointialgoritmeissä
Digitaalilaitteen signaalit
Digitaalitekniikan matematiikka Luku 3 Sivu 3 (9) Digitaalilaitteen signaalit Digitaalilaitteeseen tai -piiriin tulee ja siitä lähtee digitaalisia signaaleita yksittäisen signaalin arvo on kunakin hetkenä
Laskut käyvät hermoille
Laskut käyvät hermoille - Miten ja miksi aivoissa lasketaan todennäköisyyksiä Aapo Hyvärinen Matematiikan ja tilastotieteen laitos & Tietojenkäsittelytieteen laitos Helsingin Yliopisto Tieteen päivät 13.1.2011
Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.
Roolit Tommi Perälä Department of Mathematics, Hypermedia Laboratory Tampere University of Technology 25.3.2011 J. Kleinberg kehitti -algoritmin (Hypertext Induced Topic Search) hakukoneen osaksi. n taustalla
Kaksiluokkainen tapaus, lineaarinen päätöspinta, lineaarisesti erottuvat luokat
1 Tukivektoriluokittelija Tukivektorikoneeseen (support vector machine) perustuva luoikittelija on tilastollisen koneoppimisen teoriaan perustuva lineaarinen luokittelija. Perusajatus on sovittaa kahden
Tänään ohjelmassa. Kognitiivinen mallintaminen Neuraalimallinnus laskarit. Ensi kerralla (11.3.)
Tänään ohjelmassa Kognitiivinen mallintaminen Neuraalimallinnus 26.2. Nelli Salminen nelli.salminen@helsinki.fi D433 autoassosiaatio, attraktorin käsite esimerkkitapaus: kolme eri tapaa mallintaa kategorista
Algoritmit 2. Luento 1 Ti Timo Männikkö
Algoritmit 2 Luento 1 Ti 14.3.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin valinta Algoritmin analysointi Algoritmin suoritusaika Peruskertaluokkia Kertaluokkamerkinnät Kertaluokkien ominaisuuksia
Simulation model to compare opportunistic maintenance policies
Simulation model to compare opportunistic maintenance policies Noora Torpo 31.08.18 Ohjaaja/Valvoja: Antti Punkka Työn saa tallentaa ja julkistaa Aalto-yliopiston avoimilla verkkosivuilla. Muilta osin
Fraktaalit. Fractals. Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto. 1 / 8 R. Kangaslampi Fraktaalit
Fraktaalit Fractals Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 5.-7.10.2012 1 / 8 R. Kangaslampi Fraktaalit Bottomless wonders spring from simple rules, which are repeated
Numeeriset menetelmät
Numeeriset menetelmät Luento 2 To 8.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 2 To 8.9.2011 p. 1/33 p. 1/33 Lukujen tallennus Kiintoluvut (integer) tarkka esitys aritmeettiset operaatiot
Infrastruktuurin asemoituminen kansalliseen ja kansainväliseen kenttään Outi Ala-Honkola Tiedeasiantuntija
Infrastruktuurin asemoituminen kansalliseen ja kansainväliseen kenttään Outi Ala-Honkola Tiedeasiantuntija 1 Asemoitumisen kuvaus Hakemukset parantuneet viime vuodesta, mutta paneeli toivoi edelleen asemoitumisen
LIITE 1 VIRHEEN ARVIOINNISTA
Oulun yliopisto Fysiikan opetuslaboratorio Fysiikan laboratoriotyöt 1 1 LIITE 1 VIRHEEN RVIOINNIST Mihin tarvitset virheen arviointia? Mittaustuloksiin sisältyy aina virhettä, vaikka mittauslaite olisi
Kustannustehokkaat riskienhallintatoimenpiteet kuljetusverkostossa (Valmiin työn esittely)
Kustannustehokkaat riskienhallintatoimenpiteet kuljetusverkostossa (Valmiin työn esittely) Joonas Lanne 23.2.2015 Ohjaaja: Eeva Vilkkumaa Valvoja: Ahti Salo Työn saa tallentaa ja julkistaa Aalto-yliopiston
Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone
ja ylläpito computer = laskija koostuu osista tulostuslaite näyttö, tulostin syöttölaite hiiri, näppäimistö tallennuslaite levy (keskusyksikössä) Keskusyksikkö suoritin prosessori emolevy muisti levy Suoritin
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Tässä luvussa käsitellään optimaalisten piirteiden valintaa, luokittelijan optimointia ja luokittelijan suorituskyvyn arviointia.
1 Luokittelijan suorituskyvyn optimointi Tässä luvussa käsitellään optimaalisten piirteiden valintaa, luokittelijan optimointia ja luokittelijan suorituskyvyn arviointia. A. Piirteen valinnan menetelmiä
1. NEUROVERKKOMENETELMÄT
1. NEUROVERKKOMENETELMÄT Ihmisten ja eläinten loistava hahmontunnistuskyky perustuu lukuisiin yksinkertaisiin aivosoluihin ja niiden välisiin kytkentöihin. Mm. edellisen innoittamana on kehitelty laskennallisia
Toimilohkojen turvallisuus tulevaisuudessa
Toimilohkojen turvallisuus tulevaisuudessa Turvallisuusseminaari ASAF 30.10-1.11.2006 Mika Strömman Teknillinen korkeakoulu 1 Sisältö Luotettavuuden lisääminen hyvillä tavoilla Toimilohkokirjastot Turvatoimilohkot
Ohjelmoijan binaarialgebra ja heksaluvut
Paavo Räisänen Ohjelmoijan binaarialgebra ja heksaluvut www.ohjelmoinaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta
Successive approximation AD-muunnin
AD-muunnin Koostuu neljästä osasta: näytteenotto- ja pitopiiristä, (sample and hold S/H) komparaattorista, digitaali-analogiamuuntimesta (DAC) ja siirtorekisteristä. (successive approximation register
Algoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
812336A C++ -kielen perusteet, 21.8.2010
812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys
LIITE 1 VIRHEEN ARVIOINNISTA
1 Mihin tarvitset virheen arviointia? Mittaustuloksiin sisältyy aina virhettä, vaikka mittauslaite olisi miten uudenaikainen tai kallis tahansa ja mittaaja olisi alansa huippututkija Tästä johtuen mittaustuloksista
Sähkötekniikan tutkintoohjelma. DI-tutkinto ja uranäkymät
Sähkötekniikan tutkintoohjelma DI-tutkinto ja uranäkymät Tervetuloa opiskelemaan sähkötekniikkaa Oulun yliopistoon! ITEE RESEARCH UNITS Tutkinto-ohjelman tuottajat CAS CIRCUITS AND SYSTEMS PROF. JUHA KOSTAMOVAARA
811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto
811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien
LIITE 1 VIRHEEN ARVIOINNISTA
1 LIITE 1 VIRHEEN ARVIOINNISTA Mihin tarvitset virheen arviointia? Mittaustulokset ovat aina todellisten luonnonvakioiden ja tutkimuskohdetta kuvaavien suureiden likiarvoja, vaikka mittauslaite olisi miten
Miehittämättömän lennokin ottamien ilmakuvien käyttö energiakäyttöön soveltuvien biomassojen määrän nopeassa arvioinnissa
Miehittämättömän lennokin ottamien ilmakuvien käyttö energiakäyttöön soveltuvien biomassojen määrän nopeassa arvioinnissa Anna Lopatina, Itä-Suomen yliopisto, Metsätieteiden osasto, Anna.lopatina@uef.fi
Määrittelydokumentti
Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta
DownLink Shared Channel in the 3 rd Generation Base Station
S-38.110 Diplomityöseminaari DownLink Shared hannel in the 3 rd Diplomityön tekijä: Valvoja: rofessori Samuli Aalto Ohjaaja: Insinööri Jari Laasonen Suorituspaikka: Nokia Networks 1 Seminaarityön sisällysluettelo