Tällä viikolla ensimmäisellä tunnilla kuultiin vierailuluento Kalmarilta, jonka automaatio- ja softajohtaja Tommi Pettersson esitteli isojen työkoneiden ohjelmistoja. Kuten kaikissa liikkuvissa laitteissa, autonomiset koneet tekevät tuloaan kovaa kyytiä. Tämä vaatii erilaisia sensoriratkaisuja, joilla kone pystyy mm. päättelemään oman sijaintinsa. Hahmontunnistus mainittiin esimerkiksi kontin kulmien sijainnin etsinnässä kamerakuvasta. Tämä tieto tarvitaan että automaattinosturi osaa tarttua kuljetuskonttiin oikeasta kohdasta.
Toisella tunnilla tarkasteltiin aluksi vanhoja kanditöitä. Kandityöarkistossa on kaikki laitokselle v. 2005 lähtien tehdyt työt. Arkiston tunnus on sgnkandi ja salasana motiivi. Luennolla Sakari Nousiainen kävi esittelemässä omaa työtään, jonka aiheena oli junan nopeuden tunnistus. Jos kandityö on sinulle ajankohtainen, ole yhteydessä esimerkiksi minuun, niin voidaan pohtia olisiko yrityksiin tehtävä työ mahdollinen.
Luennon lopuksi käytiin läpi vuoden 2014 kevään tentti/välikoe. Tenttiin valmistautuessa kannattanee vilkaista luentovideosta tämä kohta.
SGN-11000 Kurssiblogi 2016
keskiviikko 27. huhtikuuta 2016
tiistai 19. huhtikuuta 2016
Luento 20.4: Koneoppiminen
Luennon aluksi muisteltiin edellisen viikon asioita lyhyesti, ja vilkaistiin mm. Matlab-demoa, jolla voidaan piirtää hiirellä projektiosuora kaksiulotteisen datan koordinaatistoon. Kun kaksi pistettä suoralta on merkitty, Matlab-skripti projisoi datan tälle suoralle ja piirtää tuloksena saatavien yksiulotteisten näytteiden jakauman sekä luokitteluprosentin. Hyvillä projektiosuorilla data oli täydellisesti luokiteltavissa, mutta huonoilla joukot menivät päällekkäin projisoinnin jälkeen. Fisherin lineaarinen erottelija laskee tämän suoran automaattisesti niin että erottelu on optimaalinen.
Tukivektorikone ja logistinen regressio ovat myös lineaarisia luokittimia, mutta niiden opetusalgoritmi on eri kuin LDA:n. Tukivektorikoneen erityispiirre on sen käyttö yhdessä kernelitempun kanssa ja logistisen regression ominaisuutena on sen todennäköisyystulkinta: LR antaa myös luokan todennäköisyyden, ei pelkästään ennustettua luokkaa.
Tämän jälkeen paneuduttiin hermoverkkoihin sekä niiden opetukseen, ja mainittiin lyhyesti opetusalgoritmin perustuvan derivaattaan ja ketjusääntöön. Näiden avulla voidaan päätellä suunta, jossa luokitteluvirhe pienenee jyrkimmin, ja kyseiset kaavat löytyvät esim. täältä. Perus-backpropagationin lisäksi on olemassa kehittyneempiä ja nopeampia opetusalgoritmeja, ja esim. Matlabissa niitä on lähes parikymmentä. Olennaisin ero algoritmien välillä on niiden nopeudessa ja muistin tarpeessa.

Luentotauolla Matlabilla opetettiin hermoverkko, joka osasi tunnistaa eurooppalaisista rekisterikilvistä kerättyjä merkkejä.Opetus kesti noin 15 minuuttia, ja virheen kehittyminen on esitetty oikealla olevassa kuvassa. Opetuksen aikana mitattiin luokittelijan virhettä opetusaineistossa (10 000 merkkiä) sekä erillisessä testiaineistossa (1 000 merkkiä). Kuvasta nähdään että virhe oli selvästi pienempi opetusaineistolla kuin testijoukossa. Ilmiöstä käytetään nimeä ylioppiminen, ja se tarkoittaa että järjestelmä alkaa oppia opetusaineiston epäolennaisia ja satunnaisia ominaisuuksia, jotka eivät ole yleisesti voimassa. Ensisijainen ratkaisu tähän on lisätä opetusmateriaalin määrää (joko todellisella uudella datalla tai augmentoimalla käytettävissä olevaa dataa; esim. venyttelemällä kuvia, lisäämällä kohinaa jne.).
Verkkoa testattiin esimerkkikuvilla, joista näytettiin hiirellä merkin sijainti. Testissä havaittiin luokittelun toimivan täysin oikein kun merkki oli hyvin laatikon sisällä. Jos merkin lisäksi 10x10-laatikon sisällä oli muutakin, luokittelu meni väärin.
Tavallisen hermoverkon herkkyys merkin oikealle kohdistukselle on yleinen ongelma. Tämä on saatu valtaosin ratkaistua uudemmissa ns. konvoluutioverkoissa, jotka esiteltiin alun perin jo 1980-luvulla, mutta ovat saavuttaneet valtavan suosion vasta laskentatehon lisäännyttyä 2010-luvulla. Syvät (yli 3 tasoa; jopa 1000 tasoa) konvoluutioverkot ovat aiheuttaneet läpimurron kuvan- ja puheentunnistuksessa.
Lopuksi vilkaistiin tuoreita esimerkkejä syvillä hermoverkoilla saavutetuista tuloksista. Ensimmäisenä esillä oli video jossa Googlen verkko pelaa Atarin Breakout-peliä:
Toisena aihepiirinä tarkasteltiin hermoverkkopohjaisia tekstigeneraattoreita:
- @DeepDrumpf, joka generoi Tweettejä Donald Trumpilta oppimallaan tyylillä.
- Microsoftin rohkea mutta valitettavasti hyökkäyksen kohteeksi joutunut Tay-botti. [The Vergen artikkeli; ei lapsille]
- Suomi24-aineistolla opetettu suomenkielinen tekstigeneraattori, joka oppii tekstin tuottamisen Suomi24-aineistosta:
- 1. iteraatio: kusta siin koista siin kuusta siin kuiken kaisin kuukan kuinan koikan ja kainan
- 20. iteraatio: perkamentti ja sitten koskeen kanssa tulee tulevaiset halla-aho soini perussuomalaiset halla-aho soini perussuomalaiset halla-aho soini perussuomalaiset halla-aho soini perussuomalaiset halla-aho soini
- 40. iteraatio: viimeistä mieltä on myös kerrattu
ja ollaan tulevaan vaikutus olisi lisää mitkakin
kannatus oli saa näyttää suomalaisesta kaupankäyntikoneelle. mutta kuinka
paljon kaikkee
samanlaisia ei ole koko kun tarjoilun laittaa kun miten on maanantuisin
tarkoituksen aikana kanssa.
–http://www.iltasanomat.fi/kotimaa/art-1288707252824.html?pos=ok-nln–http://www.taloussanomat.fi/2114965
- 60. iteraatio: hullulta kun ajattelee täällä
pitkään suuri nyt kuitenkin itseäni pitäisi olla rahat oikeasti tämän kanssa
kun oli kalliilla ja siitä tuli kohtaan....
–http://www.youtube.com/watch?v=houkgurikqqminä kaikki katsoa hankkia kun ei ole mitään palstan katsella ja kuin arvokkaalla kokemuksia ja siitä enää tai kotittaa pieneneen ollen muutama pelkästään, että olen lähinnä kaikki tarkoittaa
keskiviikko 13. huhtikuuta 2016
Luento 13.4: Interpoloinnin sovelluksia ja koneoppimista
Ensimmäisen tunnin aiheena oli 1-bittinen D/A-muunnos, jonka tavoitteena on yksinkertaistaa analogiapuolta äärimmilleen kvantisoimalla D/A-muunnettava signaali 1-bittiseksi. Ratkaisusta käytetään nimeä kohinanmuokkaus, englanniksi noise shaping tai sigma delta modulation. Kvantisointi onnistuu äänenlaatua heikentämättä, kun nostetaan näytteenottotaajuus ensin riittävän suureksi. Tällöin näytteiden suuri määrä kompensoi niiden heikkoa tarkkuutta. Pelkkä ylinäytteistys ei kuitenkaan vielä riitä: ilman muita temppuja näytteenottotaajuus pitäisi nostaa jopa miljardikertaiseksi, mikä ei käytännössä ole mahdollista. Siksi täytyy ottaa käyttöön alla olevan lohkokaavion mukainen takaisinkytkentä, joka aiheuttaa kvantisointivirheen siirtymisen korkeammille taajuuksille.
Korkeilla taajuuksilla kohina ei haittaa, koska se voidaan erottaa hyötysignaalista analogisella alipäästösuodatuksella D/A-muunnoksen jälkeen. Jäljelle jäävän kvantisointikohinan määrä voidaan laskea, ja havaitaan että suuruusluokassa 1500 oleva muunnoskerroin riittää (miljardien sijaan). Ratkaisua voidaan edelleen tehostaa tarkastelemalla korkeampiasteisia kohinanmuokkaimia, jotka siirtävät vieläkin tehokkaammin kvantisointikohinaa korkeammalle.
Jotkin audioformaatit kuten Super Audio CD tallentavat äänen suoraan yksibittisenä. Tästä on etuna se, että kohinanmuokkaus täytyy tehdä vain kerran äänitysstudiossa eikä jokaisessa kuluttajalaitteessa erikseen.
Toisella tunnilla aloitimme kappaleen 11, joka käsittelee hahmontunnistusta. Hahmontunnistusjärjestelmän ideana on esittää järjestelmälle näytteitä ja opettaa se tuottamaan oikea ulostulo kun sille esitetään opetusjoukkoon kuulumaton uusi näyte. Yksi oppivien järjestelmien osajoukko ovat luokittelijat, jossa ulostulo kertoo luokan johon esitetty näyte kuuluu.
Suosittuja luokittelualgoritmeja ovat ainakin seuraavat (kasvavan monimutkaisuuden järjestyksessä):
- k-nearest neighbor eli KNN
- Lineaarinen luokittelija eli LDA eli Fisherin diskriminantti
- Logistinen regressio
- Tukivektorikone (support vector machine); SVM
- Hermoverkot; NN
Luentomonisteen seuraava menetelmä on Fisherin diskriminantti eli LDA. Tätä voidaan havainnollistaa alla olevalla Matlab-demolla, jossa näkyy erilaisia projektiosuoria kaksiulotteisen datan koordinaatistossa. Suoran suunta vaihtelee ja tuloksena piirretään alle näin saatavien yksiulotteisten näytteiden jakauma sekä luokitteluprosentti. Hyvillä projektiosuorilla data oli täydellisesti luokiteltavissa, mutta huonoilla joukot menivät päällekkäin projisoinnin jälkeen. Fisherin lineaarinen erottelija laskee tämän suoran automaattisesti niin että erottelu on optimaalinen. Suora ratkaistaan maksimoimalla ns. Fisherin suhde (näkyy myös kuvassa alla), joka kertoo kuinka hyvin tulosjoukot erottuvat toisistaan (isompi parempi). Oikessa tilanteessa paras suunta ratkaistaan suljetussa muodossa olevan kaavan avulla eikä kokeilemalla (mikä olisikin mahdotonta 1000-ulotteiselle datalle).
Taustoitettaessa koneoppimista vilkaistiin demoa jossa hermoverkko tunnistaa hiirellä piirreltyn merkin. Lisäksi mainittiin tamperelainen Visy Oy, joka tekee automaattista rekisterikilven tunnistusta mm. Hämpin parkissa.
tiistai 5. huhtikuuta 2016
Luento 6.4: Näytteenottotaajuuden muuntelu
Tänään käsiteltiin desimointi ja interpolointi, jotka toimivat kokonaislukukertoimilla. Näitä yhdistelemällä saadaan kaikki rationaalikertoimet. Molemmat operaatiot tarvitsevat alipäästösuodattimen, joka on yleensä FIR, ja suunnitellaan normaaleilla menetelmillä. Suotimen siirtymäkaistasta todettiin, että se laitetaan aina rajataajuuden alapuolelle. Näin signaaliin tulee vähemmän virhettä kuin jos laskostumista pääsisi tapahtumaan.
Desimoinnissa tapahtuva näytteenottotaajuuden pieneminen toteutetaan yksinkertaisesti jättämällä näytteitä pois tasaisin väliajoin. Esimerkiksi kertoimella kolme jätetään vain joka kolmas näyte jäljelle. Tämä kuitenkin aiheuttaa laskostumista, koska signaalin sisältämät taajuudet pysyvät samoina mutta näytteenottotaajuus pienenee. Tämä saadaan luonnollisesti estettyä suodattamalla signaali ennen alinäytteistämistä sopivalla alipäästösuotimella.
Interpolointi puolestaan koostuu nollien
lisäämisestä sekä tämän operaation tuottamien roskien poistamisesta.
Nollien lisääminenhän tuottaa kopioita ja peilikuvia alkuperäisestä
spektristä, jotka voidaan myös poistaa kätevästi alipäästösuodatuksella.
Oikealla olevassa kuvassa on luennolla ollut esimerkki
näytteenottotaajuuden kolminkertaistamisesta, jossa kahden näytteen
väliin sijoitetaan aina 2 nollaa (yläkuva). Alakuvassa on tuloksen
spektrogrammi, jossa näkyy selkeästi kolme versiota alkuperäisestä
(kaista 0-4000 Hz) taajuuskaistasta (kopio-peilikuva-kopio).Yhdistämällä interpolointi ja desimointi päästään yksinkertaisempaan rakenteeseen huomaamalla kokonaisuudessa olevan kaksi suodatinta peräkkäin, jotka molemmat poistavat tietyn kaistan ylätaajuuksilta. Näin ollen vain toinen niistä on tarpeellinen. Piirtämällä kuva näiden suodinten amplitudivasteista voidaan päätellä kumpi on tarpeeton (aina se, jota vastaava muunnoskerroin on isompi).
Toisen tunnin lopuksi tutustuttiin interpoloinnin sovellukseen D/A-muunnoksessa. Menetelmää käytettiin jo ensimmäisissä CD-soittimissa 1980-luvun alussa ja sen ideana on tehostaa nollannen asteen pitopiirin toimintaa nostamalla näytteenottotaajuus korkeammaksi ennen pitopiiriä. Tämä näkyy aikatasossa porraskuvion hienontumisena ja tätä kautta pitopiirin virheen pienenemisenä jä siirtymisenä korkeammille taajuuksille. Taajuustasossa yli 22,05 hertsin taajuuksille tulee vastaavia heijastuksia kuin interpoloinnin yhteydessäkin. Erona on, että nyt heijastumat vaimenevat sitä enemmän mitä korkeammalle mennään. Digitaalinen interpolointi helpottaa näiden heijastusten poistamista: ilman digitaalista interpolointia tarvittavan analogisen suotimen siirtymäkaistan leveys olisi 2,05 kHz (20kHz...22.05kHz), kun esim. nelinkertaisella interpoloinnilla se saadaan yli 130 kHz:n levyiseksi (väli 20kHz...154,35 kHz).
keskiviikko 30. maaliskuuta 2016
Luento 30.3: Äärellinen sananpituus
Tänään käsiteltiin äärellisen sananpituuden vaikutuksia. Meidän tarkastelussamme nämä ilmenevät A/D-muunnoksen yhteydessä sekä suodatettaessa äärellisellä laskentatarkkuudella. Pääpaino on ensimmäisessä tyypissä. Luennolla käsiteltiin näytteistyksessä käytettävät kvantisointitasot: esimerkiksi (1+7) bitin esityksessä käytettävissä ovat seuraavat 256 tasoa: -128/128, -127/128, ..., 0, ..., 126/128, 127/128.
Pyöristettäessä
lähimpään lukuun syntyvä kvantisointivirhe on aina välillä
-1/256...1/256. Yleisesti pyöristys (1+b) bittiin aiheuttaa enintään
virheen 2^(-b) / 2 suuntaan tai toiseen. Vasemmalla olevassa kuvassa on
esimerkkitapaus jossa "seiska" kvantisoidaan 1+9 bittiin.Seuraavaksi tätä yksinkertaista virhemallia käytettiin johdettaessa arvio virheen varianssille, joka on suoraan verrannollinen syntyvän kvantisointivirheen tehoon. Tätä kautta määritellään SNR, eli signaali-kohinasuhde, eli häiriöetäisyys. Tämä suure kertoo jotain äänenlaadusta, ja saatavia tuloksia tullaan tarvitsemaan kappaleessa 6, kun päätellään montako bittiä signaalista uskalletaan poistaa kompressiossa ilman äänenlaadun havaittavaa heikkenemistä.
Jos ehtojen oletetaan olevan voimassa, voidaan osoittaa kohinan odotusarvon olevan nolla ja varianssin yhtä kuin 2^(-2b) / 12.
Yllä olevaa kaavaa voidaan edelleen jalostaa signaali-kohinasuhteen käsitteeksi (SNR), joka kertoo signaalin tehon suhteessa kohinan tehoon. Kun kaavaa pyöriteltiin, havaittiin jokaisen ylimääräisen bitin (per näyte) nostavan SNR:ää kuudella desibelillä.
Lopuksi johdettiin kaava varianssille suodatuksen jälkeen ja sekä tutkittiin suotimen kertoimien pyöristämisen vaikutusta. Tämähän täytyy tehdä aina kun suodin toteutetaan huonomman tarkkuuden alustalla kuin Matlab (esim. tällä 17-bitin DSP:llä).
Toisen tunnin lopuksi käsiteltiin alku kappaleesta "näytteenottotaajuuden muuntelu". Kappale tarkastelee menetelmiä, joilla voidaan muuntaa näytteenottotaajuus näytteistämisen jälkeen toiseksi. Perusoperaatiot ovat desimointi ja interpolointi, jotka toimivat kokonaislukukertoimilla. Näitä yhdistelemällä saadaan kaikki rationaalikertoimet. Molemmat operaatiot tarvitsevat alipäästösuodattimen, joka on yleensä FIR, ja suunnitellaan normaaleilla menetelmillä.
tiistai 15. maaliskuuta 2016
Luento 16.3: IIR-suodinten suunnittelu
Tänään tutkittiin IIR-suodatusta sekä Matlabin valmiita IIR-suodattimen suunnittelumenetelmiä.
Välikoetta ei ole vielä tarkastettu. Pyrin hoitamaan asian ensi viikkoon mennessä.
IIR-suodinten suunnittelun aluksi muisteltiin ns. pole-zero-placement -suunnittelumenetelmää, jossa hiirellä sijoiteltiin napoja ja nollia yksikköympyrälle ja laskettiin näitä vastaava suodin. Alla olevassa kuvassa on eräs näin saatu napanollakuvio, jossa tavoitellaan alipäästösuodinta. Tätä vastaava amplitudivaste on seuraavassa kuvassa, jossa selvästi erottuu hyppäys ylös- tai alaspäin jokaisen lähellä kehää olevan navan tai nollan kohdalla. Alimmassa kuvassa on vielä esitetty siirtofunktion itseisarvo |H(z)|, josta saadaan keskimmäinen amplitudivasteen |H(exp(iw))| kuvaaja sijoittamalla exp(iw) lausekkeessa z:n tilalle.


Menetelmä ei luonnollisestikaan ole kovin tarkka. Kappaleessa 6 esitetäänkin menetelmiä tarkempaan IIR-suodinten suunnitteluun, ja ne käydään melko yleisellä Matlab-komentojen osaamisen tasolla. Kappaleen ydin on koottu monisteen taulukkoon, jossa suodintyyppejä vertaillaan amplitudivasteen ominaisuuksien ja kertoimien määrän suhteen. Kertoimia tarvitaan eri menetelmillä 29+28, 13+12 ja 8+7 kappaletta. Suurin määrä tulee Butterworth-suotimella ja pienin elliptisellä suotimella. Kahden Chebyshev-suotimen kerroinmäärä on näiden kahden ääripään välissä. Vertailun vuoksi FIR-suotimen kertoimien määrä vastaavilla vaatimuksilla olisi N = [5.5/0.035] = 159 käytettäessä Blackman-ikkunaa.
Muita luennolla esiin tulleita seikkoja olivat mm.
- Matlabin kerroinvektorit a ja b eivät ole suoraan käytettävissä ulostulon y(n) laskennassa, vaan takaisinkytkentäkertoimien (siis esim. termin y(n-1) kertoimen) merkki täytyy vaihtaa vastakkaiseksi.
- Elliptisellä suotimella on aina vähemmän kertoimia kuin muilla. Lisäksi tasavärähtely-ominaisuus on yleensä hyvä asia.
tiistai 8. maaliskuuta 2016
Luento 9.3: Suodinsuunnittelu käytännössä
Tänään käsiteltiin kappale 5 loppuun. Alussa oli alla olevan kuvan mukainen demo, jossa suotimen kertoimien määrää kasvatettiin ja havaittiin ettei amplitudivastetta saa tällä keinolla tiettyjen rajojen alle.
Tämän jälkeen käytiin kappale 5 loppuun, ja todettiin että suodinsuunnittelu sisältää seuraavat vaiheet.
- Valitse ikkuna vaimennusvaatimusten perusteella.
- Päättele tarvittava kertoimien määrä N siirtymäkaistan leveyden (delta_f) perusteella.
- Laske ideaalinen impulssivaste (vaatii siirtymäkaistan keskipisteen f_c laskennan).
- Kerro ideaalinen impulssivaste valitun ikkunafunktion lausekkeella.
- Muuttujat f_c ja delta_f sekoittuvat keskenään
- Käytetään normalisoimattomia taajuuksia (esim. 11000 eikä 11000/32000)
- Rajataajuudet on laskettu väärin tai sekoitettu keskenään.
- Ikkuna on valittu väärin tai N on laskettu väärin.
- Lopputuloksessa on avoimia muuttujia (f_c, delta_f tai N).
Tilaa:
Kommentit (Atom)


