Neuroverkot akustisen sirontaongelman ratkaisemisessa Jaan Johansson Pro-gradu tutkielma Sovelletun fysiikan koulutusohjelma Itä-Suomen yliopisto, Sovelletun fysiikan laitos 16. lokakuuta 2018
ITÄ-SUOMEN YLIOPISTO, Luonnontieteiden ja metsätieteiden tiedekunta Sovelletun fysiikan koulutusohjelma, laskennallinen fysiikka Jaan Johansson: Neuroverkot akustisen sirontaongelman ratkaisemisessa Pro-gradu tutkielma, 54 sivua Tutkielman ohjaajat: FT, Timo Lähivaara, FT, Tomi Huttunen Lokakuu 2018 Avainsanat: neuroverkko, akustinen sironta, HRTF, 3D-ääni Tiivistelmä Ihminen hyödyntää kolmiulotteista (3D) äänen paikantamista jokapäiväisessä elämässä. Korvakuulokkeilla tällainen äänen paikantamiskyky tavallisesti kadotetaan, mutta se on mahdollista saavuttaa keinotekoisesti. Tekemällä kuulokkeista tulevan äänen eri taajuuksille samat muutokset kuin ihmiskeho tekee luonnostaan, saadaan 3D ääni luotua myös kuulokkeisiin. Ihmiskehon muokkaama äänen taajuusspektri tunnetaan nimellä HRTF (Head-Related Transfer Function). Jokaisella ihmisellä on eri muotoinen keho, joten myös jokaisella on yksilöllinen HRTF. Kuluttajatuotteisiin yksilölle personoitu HRTF saadaan simuloimalla jokaiselle ihmiselle kehosta siroavan aallon paine. Tällainen simulointi on laskennallisesti raskasta ja tässä tutkielmassa tutkittiin neuroverkkojen hyödyntämistä simuloinnin korvaajana. Ihmiskehon sijaan käytettiin helpommin parametrisoitavia ellipsoideja äänen sirottajina. Neuroverkon oli tarkoitus muodostaa HRTF:ta edustava taajuusspektri, kun sille syötetään ellipsoidin puoliakseleiden suuruudet. Myös tarvittavaa opetusdatan määrää taajuusspektrin estimoinnin onnistumiseen tutkittiin. Neuroverkko oppi puoliakseleita vastaavat taajuusspektrit 100:n näytteen opetusjoukolla.
Sanasto Syötekerros Tulostekerros Piilokerros Syöte Ulostulo Opetusdata Koedata Kelpuutusdata HRTF Leveystaso Korkeustaso Kynnysarvo ReLU Myötäsyötteinen Stokastinen gradienttioptimointialgoritmi, SGD Eräalgoritmi Osajoukkoalgoritmi Opetus-osajoukko Näyte-erä Opetusaskel Sakkofunktio Epokki Täysin yhdistetty neuroverkko Pudotusmenetelmä Input layer Output layer Hidden layer Input / Feature / Observation Output / Label Training data Test data Validation data Head Related Transfer Function Azimuth Elevation Bias Rectified Linear Unit Feed-Forward Steepest Gradient Descent Batch Gradient Descent Mini-Batch Gradient Descent Mini-batch Batch Training Step Cost Function Epoch Fully Connected Neural Network Dropout 3
Sisältö 1 Johdanto 5 1.1 Akustinen sironnan ratkaiseminen....................... 5 1.2 Simuloinnin korvaaminen neuroverkolla.................... 7 1.3 Tutkielman rakenne............................... 8 2 Neuroverkot 9 2.1 Neuroni..................................... 9 2.2 Aktivointifunktiot................................ 10 2.3 Sakkofunktio.................................. 11 2.4 Gradient descent................................ 13 2.5 Vastavirta-algoritmi............................... 14 2.6 Optimointialgoritmit.............................. 15 2.7 Verkon parametrien alustaminen........................ 18 2.8 Hyperparametrit ja neuroverkon tyyppi.................... 18 2.9 Ylisovittaminen................................. 19 2.10 Regularisointimenetelmät............................ 20 3 Yksilöllisen HRTF:n opettaminen neuroverkolla 22 3.1 CIPIC-tietokanta................................ 22 3.2 HRTF:n opettaminen antropometrisista mitoista............... 23 4 Menetelmät 25 5 Tulokset 30 6 Pohdinta 42 4
1 Johdanto Kuulo on tärkeässä roolissa ihmisten havainnoidessa ympäristöään. Äänilähteen paikantaminen on tässä merkityksellistä. Äänen paikantamisen mahdollistavat kumpaankin korvaan saapuneen äänen aikaero (Interaural Time Difference, ITD), korviin saapuneiden äänten voimakkuusero (Interaural Level Difference, ILD) sekä saapuneiden äänten taajuussisältö (Spectral cue). ITD:n, ILD:n ja taajuussisällön yhteisvaikutusta kuvataan yhden taajuusspektrin (Head-Related Transfer Function, HRTF) avulla. ITD ja ILD muodostuvat äänilähteen etäisyydestä kummastakin korvasta sekä pään ulkoisista dimensioista. Taajuusspektrin muoto perustuu ihmiskehon taajuusriippuvaan äänen muokkaamiseen. Kuten ITD ja ILD, taajuusspektrikin on erilainen eri suunnissa oleville äänilähteille. Äänen taajuussisällön muuttuminen johtuu kehon eri kohdista siroavan äänen ja suoraan korvakäytävään kulkevan äänen interferenssistä, sekä korvassa tapahtuvista äänen resonansseista. Spektrin muotoon vaikuttaa erityisesti ulkokorvan muoto [1]. Taajuusspektri ja asetelma sen muodostumiseen on esitetty Kuvassa 1. Korvakuulokkeilla kuunneltaessa tällainen äänen paikantamiskyky tavallisesti kadotetaan ja ääni kuulostaa tulevan pään sisältä. Uudet sovellukset voisivat kuitenkin hyödyntää kolmiulotteista äänihavainnointia. Virtuaalitodellisuudessa, joka voi sisältää esimerkiksi pelejä tai oppimisympäristön, 3D ääni parantaa kokemusta merkittävästi. Tämän lisäksi myös vanhempaan teknologiaan on mahdollista tuoda uusia elementtejä 3D äänen avulla. Tällaisia ovat musiikki ja elokuvat. Jotta kolmiulotteisen (3D) äänen kuuntelu olisi mahdollista, ääni on suodatettava. Äänelle on tehtävä samanlainen muokkaus, minkä keho tekee itse. Taajuusspektrin muodon määrittäminen on hankalin osa 3D äänen muodostamisessa korvakuulokkeille. Ihmisten kehot ovat anatomisesti erilaisia, jolloin ääni siroaa jokaisesta eri tavalla ja jokaisella ihmisellä on yksilöllinen HRTF. HRTF voidaan mitata asettamalla mikrofoni korvakäytävän suulle ja mittaamalla eri suunnista toistetun äänen taajuusspektri [2]. Tämä on hankalasti toteutettava menetelmä, kun 3D ääni halutaan käyttöön kuluttajatuotteisiin. Voidaan myös valita jo olemassa olevista HRTF:stä parhaiten sopiva perustuen ulkokorvan ja pään mittoihin [3], mutta tämä ei vastaa yksilöllistä HRTF:ää. 1.1 Akustinen sironnan ratkaiseminen Äänen paikantamisessa tärkeässä roolissa ovat erityisesti HRTF:ssä olevien syvien kuoppien sijainti taajuusakselilla [1]. Jotta käytetty HRTF saadaan vastaamaan todellista, voidaan korvakäytävän suulla taajuusvaste määrittää simuloimalla sironnut ääni tarkasti muodostetusta 3D mallista. Tämä vaatii akustisen sirontaongelman ratkaisua. HRTF kuvaa akustisen kokonaispaineen p suuruutta taajuuden funktiona. Kokonaispaine koostuu äänilähteen aiheuttamasta paineesta p i ilman sirottavaa kappaletta sekä 5
(a) (b) (c) Kuva 1: HRTF:n mittaamiseksi äänilähteestä toistettu akustinen aalto mitataan mikrofonilla korvakäytävän suulla. Kuvassa (a) äänilähteestä toistettu aalto saapuu korvakäytävän suulle ajassa, joka riippuu aallon kulkemasta matkasta (b). Kuljetun matkan pituus määrittää, mikä on aallon vaihe, kun se saapuu mikrofonille (musta piste). Eri polkuja pitkin saapuneet aallot ovat eri vaiheessa ja eri voimakkuuksilla, jolloin niiden interferenssi voi olla vahvistavaa tai heikentävää. (c) esittää esimerkki-hrtf:n, jossa aallon paine on taajuusriippuva. 6
kappaleesta siroavasta kentästä p s p = p i + p s. (1) Pistelähteen kenttä p i on p i = eikr 4πr, (2) missä k on aaltoluku ja r on etäisyys pistelähteestä. Akustisesti kovasta kappaleesta sironnut kenttä saadaan ratkaisemalla Helmholtzin ongelma [4, 5] 2 p + k 2 p = 0. (3) Sirottavan kappaleen pinnalla käytetään Neumann reunaehtoa p n = 0, (4) missä p on paineen normaalin suuntainen derivaatta. Koska kokonaispaine p koostuu n tulevasta paineesta ja sironneesta paineesta, ratkaistavaksi jää 2 p s + k 2 p s = 0 (5) p s n = p i n ( lim R ps R R ikp s (6) ) = 0, (7) kun kenttä p i tunnetaan. Ratkaisun on toteutettava Sommerfieldin ehto (7), jonka mukaan sironnut aalto vaimenee kulkiessaan sirottavasta kappaleesta äärettömyyteen. [5] Joissakin erikoistapauksissa tämä voidaan ratkaista analyyttisesti sarjakehitelmien avulla [6, 7], mutta yleisissä geometrioissa tulee aina ratkaista numeerisesti. Tässä työssä ratkaisu on tehty numeerisesti käyttäen reunaelementtimenetelmää (Boundary Element Method, BEM) [8]. 1.2 Simuloinnin korvaaminen neuroverkolla Simuloinnissa haasteena on riittävän tarkan sirottavan kappaleen mallin muodostaminen sekä aikaa vievä laskenta. Tämä tutkielma tutkii neuroverkon mahdollista hyödyntämistä laskennallisesti vaativan simuloinnin korvaajaksi. Tavoitteena on opettaa neuroverkko antamaan ulostulona HRTF, kun sille annetaan syötteenä parametrisoitu sirottava kappale. Neuroverkon toiminta on esitetty Kuvassa 2. Sirottavana kappaleena käytetään ihmiskehon sijasta eri kokoisia ellipsoideja, jotta pystytään tekemään yksinkertainen geometrinen parametrisointi. 7
Neuroverkon opettaminen Syöte NN Ulostulo Neuroverkon muokkaaminen Virheen määritys HRTF Opetetun neuroverkon käyttö Syöte NN HRTF Kuva 2: Neuroverkko halutaan antamaan ulostulona HRTF, kun sille syötetään ihmisen parametrisaatio. Neuroverkon opetusvaiheessa syötteen tuottamaa ulostuloa verrataan todelliseen HRTF:n ja verkkoa muokataan siten, että ulostulon ja HRTF:n välinen virhe pienenee. Opettamisen jälkeen neuroverkkoa voidaan käyttää antamaan HRTF ihmisen parametrisaation perusteella. 1.3 Tutkielman rakenne Tutkielma koostuu seuraavista kappaleista. Kappaleessa 2 tutustutaan neuroverkkojen toimintaan. Kappaleessa 3 kuvaillaan aiemmin kirjallisuudessa toteutettua neuroverkkojen soveltamista HRTF:n määrittämiseen perustuen ihmisen antropometrisiin mittoihin. Lisäksi tässä kappaleessa esitetään lyhyesti aiemmasta julkaisusta muokatun menetelmän tulokset. Kappaleessa 4 esitetään menetelmät tämän tutkielman varsinaisen tutkimuksen suorittamiseen. Kappaleessa 5 esitetään tutkimuksen tulokset ja kappaleessa 6 pohditaan tuloksia. 8
2 Neuroverkot Vaikka neuroverkot ovat viimeaikoina yleistyneet, niiden idea on vanha. 1943, Warren S. McCulloch ja Walter H. Pitts käyttivät yksinkertaista neuroverkkoa mallintamaan tietotekniikassa käytettyjä loogisia operaatioita AND/OR/NOT [9]. Heidän käyttämänsä neuroverkko oli kuitenkin vain approksimaatio näille operaatioille ja siltä puuttui toinen tärkeä neuroverkkojen ominaisuus, oppiminen. 1949 Donald Hebb kuvasi kirjassaan, miten neuroverkko pystyy oppimaan [10]. Esimmäinen tosielämän ongelmaan sovellettu neuroverkkokin syntyi kymmenen vuotta tämän jälkeen [11]. Laajempi neuroverkkojen yleistymistä ei kuitenkaan tapahtunut tähän aikaan. Seuraava aalto neuroverkkojen suosiossa tuli 1990-luvulla [12]. Tämän vuosikymmenen aikana yksi suurimmista kehitysaskelista oli konvoluutioneuroverkkojen (Convolutional neural networks, CNN) keksiminen [13]. Kaikesta huolimatta tällöinkään neuroverkot eivät tulleet nimenä tutuksi laajemmalle yleisölle. 90-luvulta 2010 luvulle tapahtui kaksi asiaa, jotka mahdollistivat neuroverkkojen laajemman hyödyntämisen. Yksi näistä on tietokoneiden laskentatehon kasvaminen ja erityisestä näytönohjainten kehittyminen ja pilvilaskennan mahdollisuus. Toinen on suuren datamäärän saatavuus internetin yleistymisen myötä, jota tarvitaan neuroverkkojen opettamiseen. Viime vuosina neuroverkkojen saavutukset sekä tutkimuksessa että teknologiateollisuudessa ovat olleet merkittäviä. Tästä kertoo suuret koneoppimiseen liittyvien julkaisujen määrät ja esimerkkejä merkittävistä saavutuksista teollisuudessa ovat puheen tunnistamiseen (Speech Recognition) [14, 15] ja kuvien tunnistamiseen (Image Recognition) [16, 17] liittyvät sovellukset. Perinteisesti tietokone suorittaa ihmisen ohjelmoimat käskyt. Nämä ovat tehokkaita menetelmiä, kun tiedetään millaista algoritmia tarvitaan. Algoritmin suunnittelemiseen tulee ongelma, kun halutaan esimerkiksi tunnistaa kuvassa olevia esineitä. Tähän on hankala suunnitella algoritmia ja siksi tällaisissa tehtävissä hyödynnetään koneoppimista. Koneoppimisen tarkoituksena on, että algoritmi oppii itse suoriutumaan halutusta tehtävästä mahdollisimman hyvin. Tällöin ihminen ei määrittele algoritmia vaan se oppii itsenäisesti kaikki yksityiskohdat. Oppimisesta vastaa neuroverkko. [12, 18, 19] Neuroverkko on tietokonealgoritmi, joka pystyy oppimaan funktioita sille syötetyn datan perusteella. Neuroverkko mukailee ihmisaivojen toimintaa ja se koostuu toisiinsa kytketyistä neuroneista. Tässä kappaleessa tutustutaan neuroverkkojen rakenteeseen ja niiden oppimisprosessiin. 2.1 Neuroni Neuroverkko koostuu yksittäisistä neuroneista, joiden toiminta mukailee ihmisaivossa olevien neuronien toimintaa. Aivoissa yksittäiset neuronit ovat yhteydessä toisiinsa eri vahvuisten liitosten avulla ja tämä mahdollistaa aivojen toiminnan. Keinotekoisessa neuro- 9
verkossa (artificial neural network) neuronit on jaettu kerroksiin. Kuvassa 3 on neuroverkko, jossa on kolme kerrosta. Ensimmäistä kerrosta sanotaan syötekerrokseksi ja viimeistä ulostulokerrokseksi. Näiden välissä ovat piilokerrokset. Kuvassa näkyvät nuolet kertovat, miten neuronit ovat yhteydessä toisiinsa. Jokaisen kerroksen jokainen neuroni on yhteydessä jokaiseen vierekkäisten kerrosten neuroniin. Jokaisella neuronilla on yksi skalaariarvo. Syötekerroksen neuroneilla tämä arvo määräytyy verkkoon syötettävän datan mukaan. Muiden kerrosten neuroneilla tämä skalaariarvo määräytyy edellisten kerrosten neuronien arvojen ja neuronien välisten yhteyksien mukaan. Neuronien yhteyksien voimakkuutta kuvataan painokertoimilla wkj l, jotka ovat yksilöllisiä jokaiselle neuronien väliselle yhteydelle. Edellä esitetty painokerroin on kerroksessa l olevan j:n neuronin ja kerroksessa l 1 olevan k neuronin välillä, kun syötekerroksessa l = 1 ja ulostulokerroksessa l = L. Neuronien välisiä yhteyksiä kuvaavien painojen lisäksi jokaiselle neuronille on oma kynnysarvo (bias) b l j. Yksinkertaisimmassa neuroverkossa jokaisella neuronilla suoritetaan laskutoimitus, jossa edellisen kerroksen neuronien arvot x l 1 k painotetaan painokertoimilla. Neuronin arvoksi tulee 1, jos summa on suurempi kuin kynnysarvo ja 0, jos summa on pienempi kuin kynnystermi ulostulo = 1, jos Σw l kj xl 1 k 0, jos Σw l kj xl 1 k b l j. (8) < b l j Tällaisia neuroneja kutsutaa perseptroneiksi ja neuroverkkoa, joka koostuu perseptroneista kutsutaan perseptronineuroverkoksi. Todellisuudessa neuroverkoissa ei käytetä perseptroneja, koska niiden binäärisestä arvosta on haittaa opettamisen aikana. Opetettaessa neuroverkkoa, toivottavana ominaisuutena on muutokset syötekerroksessa saavat aikaan jatkuvia muutoksia ulostulokerroksessa. Tämä ei toteudu käytettäessä perseptroneja. Vaihtoehto perseptroneille on käyttää neuronien arvona summaa Σ k wkj l xl 1 k +b l j. Tällainen neuroverkko on lineaarinen funktio nimeltään Linear Regression Model. Vaikka lineaarinen verkko helpottaa oppimista, se pystyy approksimoimaan ainoastaan lineaarisia funktioita. Todellisuudessa valtaosa ongelmista, joihin neuroverkkoja pyritään hyödyntämään, ovat epälineaarisia. Neuroverkon approksimoiva funktio saadaan epälineaariseksi käyttämällä aktivointifunktiota (activation function). 2.2 Aktivointifunktiot Neuroverkon kyky oppia epälineaarisia funktioita mahdollistuu, kun käytetään aktivointifunktiota. Aktivointifunktion halutaan olevan jatkuva, jotta pienet muutokset syötteessä aiheuttavat vain pieniä muutoksia ulostulossa. Kuitenkaan ei haluta lineaarista aktivointifunktiota. Aktivointifunktiona voitaisiin käyttää monenlaisia funktioita, mutta nykyään eniten käytettyjä ovat sigmoidi σ(x), hyperbolinen tangentti tanh(x) ja ReLU (Rectified 10
Syötekerros Piilokerros Ulostulokerros b 1 1 x 1 b 1 2 b 2 1 y x 2 w 1 2,1 b 1 3 w 2 1,3 Kuva 3: Esimerkki täysin yhdistetystä neuroverkosta. Siinä on kolme kerrosta: syötekerros, piilokerros ja ulostulokerros. Kaikissa kerroksissa jokainen neuroni on yhdistetty vierekkäisten kerrosten neuroneihin. Linear Unit) R(x)[18] σ(x) = 1 1 + e x (9) tanh(x) = ex e x e x + e x (10) R(x) = max{0, x}. (11) Aktivaatiofunktion arvoa neuronin arvolla x kutsutaan aktivaatioksi. Kuvassa 4 on esitetty edellä mainitut aktivointifunktiot. On huomioitava, että aktivaatio voi saada vain tiettyjä arvoja. Tämän vuoksi ulostulot on skaalattava, jotta ulostulokerroksen aktivaation on mahdollista saada jokainen ulostulon arvo. Tämä tarkoittaa, että esimerkiksi sigmoidia käytettäessä ulostulokerros on skaalattava välille ]0,1[. 2.3 Sakkofunktio Neuroverkon opettaminen tarkoittaa painojen ja kynnysarvojen muokkaamista siten että neuroverkon syöte x tuottaa ulostulokerroksella L aktivaation a L (x), joka on mahdollisimman lähellä todellista ulostuloa y. Tämä tarkoittaa optimointiongelman ratkaisua, jossa minimoidaan residuaali y a L (x) jossakin muodossa. Neuroverkon opettamiseksi tarvitaan opetusdataa. Opetusdata sisältää syötteitä ja niitä vastaavat ulostulot. Syötteiden syöttämistä neuroverkkoon ja näitä vastaavien ulostulojen laskemista kutsutaan myötäsyötteiseksi (feed-forward) prosessiksi. Sakkofunktiok- 11
Kuva 4: Yleisimmin käytetyt aktivointifunktiot sigmoidi, hyperbolinen tangentti ja ReLU sekä näiden derivaattafunktiot. si voidaan valita residuaalin normin neliö C x = y(x) a L (x) 2. (12) Sigmoidin ja hyperbolisen tangentin derivaatat ovat lähellä nollaa, muualla kuin pisteen x = 0 läheisyydessä. Tämän seurauksena käytettäessä sigmoidia tai hyperbolista tangenttia aktivointifunktiona ja normin neliötä sakkofunktiona, neuroverkon oppiminen tapahtuu nopeasti, kun verkko on vain vähän väärässä, mutta hitaasti kun verkko on enemmän väärässä. Tämä heikentää verkon kykyä oppia ja johtuu näiden aktivointifunktioiden derivaatan suuresta arvosta lähellä nollaa ja pienenevästä arvosta etäännyttäessä nollasta. Tämä ongelma voidaan huomioida käyttämällä sakkofunktiona nk. cross-entropy:ä C = 1 n Σ x[y ln a L + (1 y) ln(1 a L )]. (13) 12
Tämän sakkofunktion derivaatassa painojen ja kynnysarvojen suhteen C = 1 w j n Σ xx j (σ(z) y) (14) C b = 1 n Σ x(σ(z) y) (15) ei ole σ termejä, jotka aiheuttavat neuroverkon oppimisen hidastumisen. Lisäksi sakko C on suurin, kun aktivaatio ulostulokerroksessa tuottaa suurimman virheen. 2.4 Gradient descent Oppimisen aikana neuroverkko muuttaa parametrejään wkj l ja bl k sopivammiksi. Tämä tapahtuu muuttamalla niitä kohti sakkofunktion negatiivista gradienttia. Gradientin analyyttinen laskeminen globaalin minimin löytämiseksi ei ole mahdollista, koska muuttujien määrä on liian suuri. Tämän vuoksi opetusjoukon näytettä x vastaavat gradientit on laskettava erikseen jokaiselle ulostulokerroksen neuronille. Sakkofunktion gradienttina käytetään koko opetusjoukon yksittäisille näytteille laskettujen gradienttien keskiarvoa C = 1 n Σ x C x. (16) Lasketusta sakkofunktion gradientista saadaan gradientti jokaisessa ulostulokerroksen neuronissa sekä painokertoimien että kynnysarvon suhteen. Näille parametreille saadaan nyt laskettua päivitetyt arvot w L jk =w L jk η C w L jk b L j (17) =b L j η C. (18) b L j Tämä eräalgoritmi (Batch gradient descent) [20] muuttaa neuroverkon painoja ja kynnysarvoja koko opetusjoukon sakkofunktion negatiivisen gradientin suuntaan. Mikäli sakkofunktiossa on useita lokaaleja minimikohtia, verkon oppiminen voi pysähtyä näihin kohtiin (Kuva 5). Vaihtoehtoinen tapa on päivittää neuroverkon parametreja erikseen jokaisella näytteellä lasketulla sakkofunktiolla käyttäen stokastista gradienttioptimointialgoritmia (Stochastic gradient descent, SGD) [20]. Tällöin yksittäisten näytteiden erilaiset sakkofunktiot saavat neuroverkon muuttamaan parametreja eri tavoin (Kuva 5). Tällöin vähennetään riskiä opettamisen pysähtymiseen lokaaleihin minimeihin. Mutta toisaalta tällöin neuroverkon oppiminen hidastuu, koska yksittäisten näytteiden sakkofunktiot ovat erilaisia, eivätkä approksimoi hyvin koko datan sakkofunktiota ja globaalia minimiä. Kompromissina näille 13
Kuva 5: Eräalgoritmi muodostaa lokaaleja minimejä, joihin neuroverkon oppiminen voi pysähtyä. SGD:ssä yksittäisten näytteiden sakkofunktioiden lokaalit minimit ovat eri kohdissa, jolloin oppimisen pysähtymiseltä ennen globaalia minimiä on mahdollista välttyä. kahdelle menetelmälle on osajoukkoalgoritmi (mini-batch gradient descent). Tässä menetelmässä koko opetusjoukosta on valittu osajoukko, jonka näytteille lasketaan sakkofunktion gradientit ja näiden keskiarvoa käytetään parametrien päivittämiseen. Tämän avulla voidaan ehkäistä lokaalien minimien ongelmaa, mutta toisaalta yksittäisten näytteiden sakkofunktiot eivät hidasta opettamista. Opetus-osajoukko vaihdetaan jokaisen opetusaskeleen (training step) jälkeen. Opetusaskeleen aikana yksi näyte tai näytejoukko (batch) syötetään neuroverkkoon ja verkon kaikki parametrit muutetaan negatiivisen gradientin suuntaan. Opetusaskel toistetaan, kunnes kaikkia opetusnäytteitä on käytetty opettamisessa. Kun kaikkia näytteitä on käytetty opettamisessa, on kulunut yksi epokki. 2.5 Vastavirta-algoritmi Sakkofunktion ja SGD:n avulla saadaan muutettua ulostulokerroksen painoja ja kynnysarvoja, siten että verkko suoriutuu paremmin. Aiempien kerrosten parametrien muuttamiseen käytetään vastavirta (backpropagation) -algoritmia [21]. Algoritmi laskee ensin ulostulokerroksen aktivaatioiden virheet δj L jokaiselle neuronille δ L j = C σ (z a L j L ). (19) j 14
Ensimmäinen termi mittaa sakkofunktion muutoksen j neuronin aktivaation suhteen. Tähän termiin vaikuttaa valittu sakkofunktio. Toinen termi mittaa, miten j neuronin aktivaatio muuttuu neuronin arvon zj L funktiona. Tähän termiin vaikuttaa valittu aktivaatiofunktio. Kun ulostulokerroksen aktivaatioiden virheet tiedetään, virheet jatketaan neuroverkon edelliselle kerrokselle l = L 1 δ L 1 = ((w L ) T δ L ) σ (z L 1 ). (20) Tämä yhtälö voidaan yleistää pätemään kaikille kerroksille, jolloin saadaan tietää virhe jokaisella kerroksella. Kerroksen l aktivaatioiden virhe on δ l = ((w l+1 ) T δ l+1 ) σ (z l ). (21) Virheen suuruuden eteneminen kuhunkin edellisen kerroksen neuroniin määräytyy neuronien välisen painon suuruudella eli sillä, miten vahva näiden neuronien liitos on. SGD tarvitsee sakkofunktion osittaisderivaatat neuroverkon parametrien suhteen. Nämä saadaan neuronin aktivaation virheestä seuraavien yhtälöiden avulla C b l j C w l jk = δ l j (22) = a l 1 k δ l j. (23) Sijoittamalla nämä yhtälöön (17) ja (18), saadaan päivitettyä kaikki neuroverkon parametrit. 2.6 Optimointialgoritmit Tähän asti neuroverkon parametrien päivittäminen on tehty muuttamalla niitä sakkofunktion negatiivisen gradientin suuntaan askelparametrin määräämän matkan. Tällainen optimointi johtaa jyrkkiin suunnanmuutoksiin opetuksen aikana. Lisäämällä optimointiin parametrien liikemäärä, saadaan oppimispolkua ja siten opetukseen käytettyä aikaa lyhennettyä (kuva 6). Tämä myös pienentää lokaalien minimien vaikutusta. Liikemäärän vaikutus saadaan, kun opetusaskeleessa huomioidaan myös aiemman opetusaskeleen sakkofunktion gradientin suunta. Voidaan ajatella että gradientin määräämä kiihtyvyys muuttaa parametrien edellisen muutoksen liikemäärää samalla tavalla kuin gravitaatio vaikuttaa mäessä vierivän pallon etenemiseen. Liikemäärän vaikutus saadaan lisäämällä painojen päivittämiseen (17) edellisellä iteraatiolla tehdyn muutoksen sisältävä termi. Käytetään parametreille wjk l ja bl j yhteistä 15
Kuva 6: Liikemäärän lisääminen lisää saman vaikutuksen kuten kappaleen massa mekaniikassa. Massa saa aikaan edellisellä iteraatiolla käytetyn parametrien muutoksen lisäämisen seuraavan iteraation parametrin arvon estimointiin. Liikemäärää hyödyntämällä on mahdollista vähentää opetukseen käytettyä aikaa. merkintää θ, jota voidaan käyttää jokaisen painon ja kynnysarvon päivittämiseen. Lisäksi = dθ. Tällöin iteraatiolla i päivitetty parametrin θ arvo liikemäärä huo- merkitään C θ mioituna on missä iteraatiolla i tapahtuva muutos parametrissa θ θ i = θ i 1 + η θ i, (24) θ i = β θ i 1 (1 β)dθ i. (25) Kerroin β ja määrittää, miten paljon painotetaan edellisen iteraation liikemäärää. Optimointialgoritmeissa oppimiskertoimen suuruuden valinnalla on suuri merkitys neuroverkon oppimiseen. Liian suurella arvolla neuroverkon on hankala supeta lähestyttäessä minimikohtia ja liian pieni arvo vaatii liian paljon aikaa supetakseen. Nykyaikaisilla optimointialgoritmeilla on mahdollista vaikuttaa liikemäärän merkitykseen ja oppimiskertoimen mukautumiseen opetuksen aikana. AdaGrad [22], RMSProp [23] ja Adam [24] ovat eräitä suosituimpia optimointialgoritmeja [18]. Näillä algoritmeilla on jokaisella omat vahvuutensa ja heikkoutensa. AdaGrad mahdollistaa jokaiselle parametrille oman oppimiskertoimen asettamisen ja näiden parametrien muuttamisen omien sakkofunktioiden gradienttien perusteella. Neuroverkon seuraava parametri θ i saadaan päivittämällä aiemman iteraation parametria θ i = θ i 1 η ɛ + r i dθ. (26) 16
ɛ on pieni luku nollalla jakamisen välttämiseksi ja r i on aiemmat gradientit huomioiva funktio r i = r i 1 + (dθ) 2. (27) r i kasvaa jokaisella iteraatiolla ja sen vuoksi tämän algoritmin ongelmana on, että sen askelparametri pienenee jokaisella iteraatiolla. Suurin ongelma tämä on lokaalien minimien kohdalla, jossa askelparametri pienenee voimakkaasti ja globaaliin minimiin suppeneminen hidastuu huomattavasti. RMSProp-algoritmi vastaa AdaGradia muuten kuin oppimiskertoimen mukautumisella. RMSProp muuttaa oppimiskerrointa siten että aiempien iteraatioiden sakkofunktiot huomioidaan eksponentiaalisesti pienenevällä painolla. Funktiona r i käytetään r i = ρr i 1 + (1 ρ)dθ 2, (28) missä ρ on positiivinen luku. Adam vastaa RMSProp-algoritmia sillä muutoksella, että siinä lisätään liikemäärän vaikutus. Parametrien muutosta edustava termi koostuu kahdesta osasta. Ensimmäinen osa vastaa liikemäärää ja se koostuu aiemman iteraation muutoksen suunnasta m i 1 ja tämänhetkisen iteraation sakkofunktion gradientista dθ m i = β 1 m i 1 + (1 β 1 )dθ. (29) Toinen osa koostuu RMSProp-algoritmin termistä v i = β 2 v i 1 + (1 β 2 )dθ 2. (30) Liikemääräosassa ja RMSProp-osassa on eri painokertoimet β 1 ja β 2, jotka määrittävät aiempien gradienttien ja nykyisen gradientin painotuksen. Adam-algoritmissa termit m i ja v i alustetaan nolliksi. Tämä aiheuttaa harhan todellisiin arvoihin verrattuna. RMSPropalgoritmissa vastaavaa ongelmaa ei ole huomioitu, mutta Adam käyttää termien m i ja v i sijaan korjattuja termejä m i = ṽ i = m i 1 β i 1 v i (31), (32) 1 β2 i missä parametrien β 1 ja β 2 eksponentti on tämänhetkinen iteraatio. Lopullinen Adamalgoritmin parametrien päivitys on m i θ i = θ i 1 α ṽi + ɛ. (33) 17
2.7 Verkon parametrien alustaminen Ennen ensimmäistä myötäsyötteistä operaatiota kaikki neuroverkon parametrit on alustettava. Alustaminen tehdään tavallisesti valitsemalla painoille ja kynnysarvoille satunnaiset arvot jostakin jakaumasta. Jakauma voi olla esimerkiksi normaalijakauma tai tasajakauma. Satunnaisesti valituilla parametrin arvojen suuruudella on merkitys syötekerroksen neuroneista lähtevän signaalin etenemiseen neuroverkossa. Liian pienet parametrien arvot aiheuttavat neuroverkossa edetessään signaalin heikkenemisen jokaisella kerroksella ja liian suuret aiheuttavat signaalin kasvamisen jokaisella kerroksella. Xavier-algoritmi [25] valitsee automaattisesti painot sopiviksi ja kynnysarvot alustetaan usein nollaksi. Algoritmi valitsee kerroksen l painot w l yleensä normaalijakaumasta tai tasajakaumasta määrittelemällä jakauman varianssin syöte- ja ulostulokerrosten neuronien määrän mukaan. Jakauman varianssi on Γ(w l ) = 2 n 1 + n L, (34) missä n 1 on ensimmäisen kerroksen neuronien määrä ja n L on viimeisen kerroksen neuronien määrä. Parametrien alustamisella on suuri merkitys neuroverkon oppimiseen. Xavier algoritmistä on suurin hyöty sigmoidia tai hyperbolista tangenttia neuronien aktivointifunktiona, jolloin vältytään suurten tai pienten arvojen aiheuttamalta pieneltä gradientilta, jonka seurauksena neuroverkko oppii hitaasti. Käytettäessä ReLU:a aktivointifunktiona, sopivampi varianssi Γ painokertoimien jakaumalle on [26] Γ(w l ) = 2 n l, (35) missä n l on kerroksessa l olevien neuronien lukumäärä. 2.8 Hyperparametrit ja neuroverkon tyyppi Neuroverkon oppimien parametrien lisäksi käyttäjän on määritettävä hyperparametrit (hyper-parameters). Hyperparametrit valitaan ennen opettamista ja niiden avulla pysytään vaikuttamaan neuroverkon kykyyn oppia. Näitä parametreja ovat muun muassa neuroverkon rakenteen määrittävät piilokerroksien määrä ja neuronien määrä kussakin kerroksessa sekä SGD:n oppimiskertoimen koko. Hyperparametrien valitsemiseksi ei ole selviä sääntöjä, mutta neuroverkon sovelluskohde on ensimmäinen asia, jossa joudutaan tekemään päätöksiä hyperparametreista. Vielä ennen varsinaisten parametrien määrittämistä joudutaan tekemään valinta, millaista neuroverkkoa halutaan käyttää. Tämän tutkielman tulokset on saatu käyttämällä täysin yhdistettyä neuroverkkoa, mutta mainittakoon että monissa ongelmissa on käytössä kon- 18
voluutio neuroverkot (Convolutional Neural Networks, CNN) [13] ja takaisinkytkeytyvä neuroverkko (Recurrent Neural Network, RNN) [18] muun muassa niiden kuvien spatiaalisen ja puheen temporaalisen informaation säilyttämisen kyvyn vuoksi. Neuroverkon tyypin valinnan jälkeen parhaiten sopivien hyperparametrien valinta suoritetaan usein kokeilemalla. Verkon toiminnasta saadaan informaatiota, jonka perusteella saadaan käsitys, millaisia muutoksia parametreihin pitäisi tehdä. Muutokset voivat liittyä verkon kykyyn oppia opetusdatan pieniä piirteitä tai liian hitaaseen oppimiseen, joita pystytään säätämään oppimiskertoimen avulla. Tämän lisäksi liian pieni verkon koko voi aiheuttaa sen, ettei se kykene oppimaan haluttua monimutkaista funktiota. Toisaalta isoja verkkoja on hankala opettaa katoavan gradientin (vanishing gradient) ongelman takia [12]. Tämä johtuu siitä, että myöhemmillä kerroksilla parametrit muuttuvat aiempia nopeammin. Sopivien hyperparametrien löytämiseksi neuroverkon suorituskykyä testataan erillisellä datajoukolla, jota kutsutaan kelpuutusdataksi (validation data). Tässä datajoukossa ei ole samoja näytteitä kuin opetusdatassa tai testidatassa, jota käytetään neuroverkon suorituskyvyn mittaamiseen. Neuroverkkoa kutsutaan ylisovitetuksi (overfitting) [27], jos se on opetettu ja toimii hyvin yhdessä datajoukossa, mutta suoriutuu huonosti yleistetyn datan kanssa. Ylisovittamiselta pyritään välttymään hyödyntämällä kelpuutusdataa. Hyperparametrien automaattista valintaa on myös tutkittu [28]. Sopivimpien hyperparametrien valinta voidaan tehdä esimerkiksi määritetystä diskreetistä parametrijoukosta, tekemällä satunnainen valinta [29] tai gradienttiin pohjautuvalla valinnalla [30]. 2.9 Ylisovittaminen Neuroverkko on funktio, joka approksimoi kuvausta syötteiden ja ulostulojen välillä. Approksimointi suoritetaan parametrien, painojen ja kynnysarvojen avulla. Parametrien määrän kasvaessa ylisovittamisen riski kasvaa. Ylisovittaminen tarkoittaa, että verkko oppii opetusdatan tietyt piirteet, mutta sitä ei pystytä yleistämään tämän datajoukon ulkopuolelle. Samanlainen ilmiö tapahtuu, kun polynomi sovitetaan dataan, jonka datapisteiden määrä on enintään yksi enemmän kuin polynomin asteluku. Tällöin polynomi saadaan sovitettua dataan täydellisesti, mutta se ei yleensä ole paras kuvaus datalle. Ylisovittamista tapahtuu herkimmin, kun datajoukko on pieni, eli parametrien määrä on pieni tai neuroverkkoa opetetaan liian pitkään (liian monta epokkia). Ylisovittaminen voidaan huomata tarkastelemalla opetusjoukon ja kelpuutusjoukon sakkofunktion arvoa epokkien funktiona. Neuroverkon oppiessa molempien joukkojen sakkofunktion arvo vähenee, mutta kun tapahtuu ylisovittamista, opetusjoukon sakkofunktion arvo jatkaa vähenemistä ja validaatiojoukon sakkofunktio siirtyy kasvuun. Kuvassa 7 on kaksi neuroverkon ennustamaa signaalia. Näiden signaalien opettamises- 19
Kuva 7: Kaksi näytettä ylisovitetusta neuroverkon ulostulosta. a) Näyte opetusdatasta, johon neuroverkko on ylisovitettu voimakkaasti. b) Näyte testidatasta, johon neuroverkko ei kykene ennustamaan oikeaa signaalia. sa neuroverkolle on annettu kaksi parametria, joiden perusteella sen on pitänyt ennustaa näiden parametrien tuottama signaali. Vasemmanpuolinen näyte oli mukana opetuksessa ja oikeanpuoleinen näyte ei ollut. Tässä tapauksessa huomataan, että neuroverkko on ylisovittanut voimakkaasti opetusdataan, mutta ei osaa yleistää tämän datan ulkopuolelle. 2.10 Regularisointimenetelmät Ylisovittamisen ehkäisemiseksi voidaan käyttää regularisointimenetelmiä. Yksi tärkeä keino on käyttää kelpuutusdataa, josta mainittiin aiemmin. Tämä ehkäisee hyperparametrien valinnan ylisovittamisen testidataan. Paras keino ylisovittamisen ehkäisemiseksi on lisätä opetusdataa. Tavallisesti opetusdataa on saatavilla rajallinen määrä ja tämä ei ole mahdollista. Toinen keino on vähentää verkon parametrien määrää pienentämällä neuroverkon kokoa. Tämä menetelmä on suositeltava, mikäli mahdollista mutta pieni neuroverkon koko rajaa pois sovelluskohteet, jotka vaativat tehokkaamman neuroverkon. Regularisointimenetelmät muokkaavat joko itse neuroverkkoa tai sakkofunktiota siten että on mahdollista välttyä ylisovittamiselta. L2 regularisointi [31] muokkaa sakkofunktiota lisäämällä regularisointitermin sakkofunktioon. Regularisoitu residuaalin normi on [12] C x = y(x) a L (x) 2 + λ 2n Σ ww 2. (36) Regularisointitermi sisältää painojen neliöiden summan ja regularisointiparametrin λ > 0. Regularisointi voidaan tehdä muillekin sakkofunktioille. Regularisointitermi määrittää, suosiiko verkko enemmän pieniä painoja vai sakkofunktion minimoimista. Pudotusmenetelmä (Dropout) [32] on toisenlainen regularisointimenetelmä. Sakkofunktion muokkaamisen sijaan se muokkaa verkon rakennetta. Muokkaaminen tapahtuu 20
poistamalla tilapäisesti osa neuroneista. Tämän jälkeen neuroverkkoa opetetaan jäljelle jääneillä neuroneilla opetus-osajoukolle (Mini-batch). Yhdelle opetus-osajoukolle opettamisen jälkeen poistetut neuronit palautetaan ja uudet poistettavat neuronit valitaan satunnaisesti. Tämä toistetaan koko opetusdatalle. Tämän prosessin aikana ei opeteta koko neuroverkkoa, joten se ei kärsi ylisovittamisesta. Jäljelle jääneistä neuroneista koostuvat neuroverkot ovat ylisovittuneet opetus-osajoukon datalle, jolle ne on opetettu. Neuroverkko kokonaisuudessaan ei kuitenkaan ole ylisovitettu, koska sitä ei ole käytetty kaikkine neuroneineen millään opetusjoukolla opettamiseen. 21
Kuva 8: CIPIC-tietokannassa käytetyt mitat ihmisen parametrisointiin. (Kuva: V. R. Algazi and R. O. Duda and D. M. Thompson. The CIPIC HRTF Database. IEEE Workshop on Applications of Signal Processing to Audio and Acoustics, 21-24 October, 2001.) 3 Yksilöllisen HRTF:n opettaminen neuroverkolla Neuroverkkoja on aiemmin käytetty yksilöllisen HRTF:n muodostamiseen [34]. Tällöin opetusdata saatiin tietokannasta, jossa on henkilöiden HRTF:ta vastaavat impulssivasteet. HRTF on korvakäytävään menevän ääniaallon amplitudispektri ihmiskehosta sironneelle aallolle. Impulssivaste tällöin on taajuustasossa olevan amplitudispektrin informaatio ilmaistuna aikatasossa. Tällöin impulssivaste (Head-Related Impulse Response, HRIR) ja HRTF ovat yhteydessä Fourier-muunnoksen avulla. HRIR f(t) saadaan muutettua taajuustasoon HRTF:ksi ˆf(t) Fourier-muunnoksella ˆf(ω) = f(t)e iωt dt, (37) missä aikatason impulssivaste f(t) muunnetaan taajuuden ω funktioksi. HRTF saadaan aikatasoon Fourier n käänteismuunnoksella f(t) = 1 2π ˆf(ω)e iωt dω. (38) 3.1 CIPIC-tietokanta CIPIC (UC Davis, Center for Image Processing and Integrated Computing) on HRTF:n tutkimiseen luotu tietokanta [33]. Sinne on kerätty kokeellisesti mitattu HRIR 45 koehenkilöltä 1250 suunnasta 2 metrin etäisyydeltä pään keskipisteestä. Tietokanta sisältää myös koehenkilöistä mitattuja antropometrisia mittoja. Mitat sisältävät pään ja hartioiden koon sekä erityisesti ulkokorvasta tehtyjä mittoja, joiden oletetaan olevan tärkeitä HRTF:n määrittämiseksi (Kuva 8). 22
3.2 HRTF:n opettaminen antropometrisista mitoista Neuroverkkojen hyödyntämistä HRTF:n muodostamisessa antropometrisiin mittoihin perustuen on tutkittu käyttämällä opetuksessa syötteenä henkilön antropometrisiä mittoja ja ulostulona saman henkilön HRIR [34]. Heidän saamansa tulokset näyttivät lupaavilta siinä mielessä, että neuroverkko oppi impulssivasteen suurimpien piikkien paikat ja oli virheeltään pienempi kuin impulssivasteiden keskiarvon virhe. Työssä [34] käytettiin CIPIC-tietokannan 35 koehenkilön dataa, joilla oli kaikki heidän haluamat antropometriset mitat sekä HRIR:t. Tämän tutkielman ensimmäinen askel oli toistaa edellä mainittu koe HRIR:n sijaan HRTF:llä. Tällöin neuroverkko oppisi suoraan HRTF:n sille annettujen antropometristen mittojen perusteella. Tämä tehtiin sen takia, että opittu impulssivaste on mahdollisesti kadottanut paljon taajuusinformaatiota, vaikka sen antama impulssivaste on lähellä haluttua. Sen sijaan HRTF:ta opetettaessa sakkofunktion arvo pienenee taajuusinformaation ollessa oikein. Neuroverkon opetusjoukoksi valittiin 35 koehenkilöstä 34, jolloin yhtä koehenkilöä käytettiin neuroverkon suoriutumisen mittaamiseen testidatana. Neuroverkolle opetettiin HRTF vain yhdestä suunnasta. Neuroverkon syötteenä oli koehenkilöiden 7 antropometrista mittaa, jotka määrittävät pääosin HRTF:n muodon [35]. Ulostulona oli tämän henkilön HRTF. Koe suoritettiin kaksi kertaa. Molemmissa tapauksissa neuroverkon suorituskykyä mittaava koehenkilö valittiin satunnaisesti, kuitenkin eri henkilö kummassakin tapauksessa. Käytetyssä neuroverkossa oli 5 piilokerrosta, joissa oli 64 neuronia. Kaikkien muiden paitsi ulostulokerroksessa olevien neuroneiden aktivaatiofunktiona käytettiin ReLU:a. Ulostulokerroksessa käytettiin sigmoidia aktivointifunktiona. Askelparametri oli 0.001 ja neuroverkko hyödynsi pudotusmenetelmää neuronien verkkoon jättämistodennäköisyydellä 0.9. Neuroverkkoa opetettiin 2000 epokkia. Käytetty neuroverkko vastaa aiemmassa HRIR:n opetuksessa käytettyä. Poikkeuksena ulostulokerroksen aktivointifunktiona käytettiin ReLU:n sijasta sigmoidia, koska sen huomattiin tuottavan parempia oppimistuloksia. Lisäksi käytetty antropometristen mittojen määrä (7) poikkeaa HRIR kokeessa käytetystä 23:sta mitasta. Kuvassa 9 on kahden erillisen opetetun neuroverkon ennustamat HRTF:t. Lisäksi kuvassa on sakkofunktion arvo verkkojen opettamisen aikana. Näissä kahdessa neuroverkossa oli käytetty satunnaisesti valittuja henkilöitä testidatana. 23
Kuva 9: Opetetun neuroverkon ennustama HRTF ja todellinen HRTF kahdelle opetusjoukolle sekä näiden sakkofunktio epokkien funktiona. HRTF:t ovat skaalattuja kymmenesosaan alkuperäisestä opetuksen vuoksi. 24
4 Menetelmät Tämän tutkielman pääasiallinen tarkoitus oli opettaa neuroverkolle ihmistä yksinkertaisemman ja paremmin parametrisoitavan kappaleen sirottaman ääniaallon taajuusvaste ennalta määritellyissä pisteissä. Sirottavaksi kappaleeksi valittiin erikokoisia sferoidisia kappaleita. Ne ovat ellipsoideja, joilla kaksi kolmesta puoliakselista ovat samanpituisia (kuva 12). Mittausasetelmaa muutettiin HRTF:n mittauksesta siten että äänilähteen paikka oli aina 1 mm päässä ellipsoidista positiivisen y-akselin puolella, kun origo oli kappaleen keskellä. Lisäksi mittauspisteisteet olivat ellipsoidin ympäröivällä ympyrän pinnalla. Pallopinta oli origokeskeinen ja säteeltään 2 m. Mittauspisteitä oli 836. Kuvassa 10 on esitetty simuloinnissa käytetty asetelma, jossa ellipsoidin ympärille on kuvattu mittauspisteet. 0 elevaatio tasossa äänilähde, ellipsoidi ja kaikki tason mittauspisteet on kuvassa 11. Tässä työssä neuroverkkoja pyritään opettamaan pienellä datamäärällä. Koetta varten simuloitiin BEM:llä 200:sta erikokoisesta ellipsoidista siroava äänikenttä mittauspisteissä. Jokaiselle mittauspisteelle opetettiin oma neuroverkko antamaan taajuusspektri, kun sille syöttää ellipsoidin puoliakseleiden arvot. Neuroverkon opettaminen tehtiin viidellä eri suuruisella opetusjoukolla. Opetus tehtiin 20, 50, 100, 150 ja 190 ellipsoidilla. Jokaisessa tapauksessa käytettiin 10 ellipsoidia arvioimaan neuroverkon suorituskykyä laskemalla keskiarvo taajuusspektrin suhteelliselle virheelle { } y ŷ 2 C = E, (39) y 2 missä ŷ on neuroverkon approksimaatio taajuusspektrille ja y on todellinen taajuusspektri. y ja ŷ ovat vektoreita, jotka sisältävät koko testidatan. Sakkofunktion lopulliseksi arvoksi määriteltiin keskiarvo viiden viimeisen epokin virheen arvosta, jotta vähennetään mahdollisen sakon arvon heilahtelun vaikutusta. Testaukseen käytettyjä näytteitä ei käytetty opettamisessa. Opettamiseen käytetyn neuroverkon hyperparametrit optimoitiin 100 opetusnäytteellä mittauspisteessä (φ, θ) = (0, 90) ja samoja hyperparametreja käytettiin jokaisessa mittauspisteessä ja kaikilla opetusdatan määrillä. Neuroverkot olivat täysin yhdistettyjä, ja koostuivat 3 piilokerroksesta, joissa kussakin oli 256 neuronia. Syötekerroksessa oli 2 neuronia puoliakselin arvoille ja ulostulokerroksessa oli 375 neuronia, joka on taajuusspektrin pituus. Askelparametri oli η = 0.001 ja sitä pienennettiin jokaisen epokin jälkeen 0.99 kertaiseksi. Aktivointifunktiona käytettiin jokaisessa piilokerroksessa ReLU:a ja ulostulo kerroksessa sigmoid funktiota. Optimointialgoritmi oli AdamOptimizer. Jokaisen suunnan keskiarvon lisäksi tarkasteltiin kolmen yksittäisen suunnan suoriutumista tarkemmin, jotta on mahdollista nähdä, miten neuroverkon approksimoiva taajuusvaste vertautuu todelliseen taajuusvasteeseen. Ensimmäinen suunta on äänilähteen 25
Kuva 10: Mittauspisteet ympäröivät ellipsoidia 2 m säteisellä pallopinnalla. Kuva 11: Mittausasetelmasta 0-elevaatiotasossa. Kuvaan on merkitty ellipsoidi, äänilähde ja kaikki 0-elevaation mittauspisteet. Ellipsoidi ei ole todellisessa mittakaavassa. 26
Kuva 12: Ääniaaltoa sirottavana kappaleena käytettiin ellipsoideja, joiden kaksi puoliakselia ovat samanpituisia. Tällaisia ellipsoideja kutsutaan prolate ja oblate sferoideiksi. Ne muodostuvat, kun ellipsi pyöräytetään puoliakselinsa ympäri. Prolate sferoidi (vasemman puoleinen kuva) muodostuu kun pyöräytys tehdään pidemmän puoliakselin ympäri ja oblate sferoidi (oikean puoleinen kuva) muodostuu kun pyöräytys tehdään lyhyemmän puoliakselin ympäri. Ellipsoideille muodostuu tällöin kaksi samanmittaista puoliakselia. 2 neuronia 256 neuronia 256 neuronia 256 neuronia 375 neuronia Kuva 13: Taajuusspektrin opettamiseen käytetyn neuroverkon rakenne. Syötekerroksessa on kaksi neuronia puoliakselien arvoille ja ulostulokerroksessa on 375 neuronia, joka on taajuusspektrin pituus. Piilokerroksessa on kolme ja jokaisessa on 256 neuronia. Kaikki kerrokset ovat täysin yhdistettyjä. 27
z θ ϕ y x Kuva 14: Tässä tutkielmassa käytetty koordinaatisto. Leveystason ja korkeustason kulmat on määritelty kuvan mukaisesti siten että kulma (φ, θ) = (0, 0) on positiivisen x-akselin suunnassa. puolelta, (φ, θ) = (+90, 0), toinen on äänilähteeseen nähden sivulta, (φ, θ) = (0, 0) ja kolmas on äänilähteeseen nähden vastakkaiselta puolelta (φ, θ) = ( 90, 0). Kuvassa 14 on tässä kuvassa käytetty koordinaatisto. Kolmelle suunnalle opettamisen tarkoituksena oli lisäksi tutkia ekstrapolointiongelmaa. Kuvassa 15 on esimerkkinä opettamiseen ja testaukseen käytetyt puoliakseleiden arvot 50 näytteen kokeessa. Kuvasta näkyy opettamiseen käytetyt puoliakselien arvot ja kaksi testivaiheessa käytettyä arvoa. Neuroverkon kykyä ennustaa taajuusspektri tutkittiin, kun puoliakseleiden arvot ovat näytejoukon reunoilla. Tämä tarkoittaa puoliakseleiden arvojen valitsemista läheltä 5 cm tai 15 cm. Näytejoukon koon vaikutusta ekstrapolointiongelmaan tutkittiin käyttämällä eri kokoisia opetusjoukkoja. Opetusjoukkojen koot olivat samat kuin aiemmassa kokeessa: 20, 50, 100, 150 ja 190. Testidataa ei valittu satunnaisesti kuten aiemmin, vaan reunalta valittiin yksi näyte, jonka verkon estimoima taajuusspektri vastaa huonosti todellista 50 näytteellä opetettaessa. Samaa näytettä käytettiin muillakin opetusdatan määrillä. Sakkofunktion arvon kehittymistä seurattiin näillä kahdella näytteellä, kun opetusdatan määrää kasvatettiin. Todellisuudessa ellipsoidien puoliakseleiden pituudet sisältävät mittauksesta johtuvaa satunnaista virhettä. Tässä työssä opetettaviin taajuusvasteisiin tai puoliakseleiden pituuksiin ei lisätty kohinaa. Tulokset eivät siis ota kantaa neuroverkon kykyyn sietää mittausvirhettä. Jokainen tässä työssä käytetty neuroverkko opetettiin käyttäen Python-kielellä toi- 28
Kuva 15: Semiakseleiden arvot, joita käytettiin neuroverkon opettamiseen ja testaamiseen, kun tutkittiin ekstrapolointiongelmaa. Punaisella on merkitty neuroverkon opettamiseen käytetyt puoliakseleiden arvot, vihreällä testidatan ekstrapolointinäyte ja mustalla testidatan interpolointinäyte. mivaa Tensorflow-kirjastoa [36]. Liitteissä 1 ja 2 on luonnokset opettamiseen käytetyistä koodeista. 29
5 Tulokset Kuvissa 16 ja 17 on sakkofunktion keskiarvo viideltä viimeiseltä epokilta, kun opetusdatan määrä on 20, 50, 100, 150 ja 190 näytettä. Kuvassa 18 on edellisille kuville jokaisen suunnan sakon keskiarvo opetusdatan määrän funktiona. Kuvissa 19 ja 20 on suunnasta (φ, θ) = (0, 0), kuvissa 22 ja 23 on suunnasta (φ, θ) = (90, 0) ja kuvissa 25 ja 26 on suunnasta (φ, θ) = (0, 90) interpolointi- ja ekstrapolointinäytteille todellinen ja neuroverkon ennustama taajuusspektri kaikilla opetusdatan määrillä. Kuvassa 21, 24 ja 27 on näillä jokaisella datamäärällä vastaaville suunnille opetetun verkon sakkofunktion arvo epokkien funktiona. 30
Kuva 16: Sakkofunktion arvo jokaisessa mittauspisteessä opetuksen lopussa eri määrällä opetusdataa. Opetusdatan määrä on kuvissa ylimmästä alimpaa 20, 50 ja 100. 31
Kuva 17: Sakkofunktion arvo jokaisessa mittauspisteessä opetuksen lopussa eri määrällä opetusdataa. Opetusdatan määrä on kuvissa ylimmästä alimpaa 150 ja 190. Kuva 18: Keskiarvo kuvien 16 ja 17 datasta opetusdatan koon funktiona. 32
Kuva 19: Neuroverkon ennustamat ja todelliset interpolointi- ja ekstrapolointitaajuusspektrit näytteiden määrillä 20, 50 ja 100 mittauspisteessä (φ, θ) = (0, 0). 33
Kuva 20: Neuroverkon ennustamat ja todelliset interpolointi- ja ekstrapolointitaajuusspektrit näytteiden määrillä 150 ja 190 mittauspisteessä (φ, θ) = (0, 0). 34
Kuva 21: Sakkofunktion arvo 20, 50, 100, 150 ja 190 opetusnäytteellä epokkien funktiona mittauspisteessä (φ, θ) = (0, 0). 35
Kuva 22: Neuroverkon ennustamat ja todelliset interpolointi- ja ekstrapolointitaajuusspektrit näytteiden määrillä 20, 50 ja 100 mittauspisteessä (φ, θ) = (90, 0). 36
Kuva 23: Neuroverkon ennustamat ja todelliset interpolointi- ja ekstrapolointitaajuusspektrit näytteiden määrillä 150 ja 190 mittauspisteessä (φ, θ) = (90, 0). 37
Kuva 24: Sakkofunktion arvo 20, 50, 100, 150 ja 190 opetusnäytteellä epokkien funktiona mittauspisteessä (φ, θ) = (90, 0). 38
Kuva 25: Neuroverkon ennustamat ja todelliset interpolointi- ja ekstrapolointitaajuusspektrit näytteiden määrillä 20, 50 ja 100 mittauspisteessä (φ, θ) = ( 90, 0). 39
Kuva 26: Neuroverkon ennustamat ja todelliset interpolointi- ja ekstrapolointitaajuusspektrit näytteiden määrillä 150 ja 190 mittauspisteessä (φ, θ) = ( 90, 0). 40
Kuva 27: Sakkofunktion arvo 20, 50, 100, 150 ja 190 opetusnäytteellä epokkien funktiona mittauspisteessä (φ, θ) = ( 90, 0). 41
6 Pohdinta Työssä tutkittiin neuroverkkojen soveltuvuutta akustisesta siroamisesta syntyvän taajuusspektrin oppimiseen sirottavan kappaleen parametrisaation perusteella. Lisäksi tutkittiin opetusdatan vaikutusta neuroverkon kykyyn oppia taajuusspektri. Sirottavana kappaleena käytettiin ellipsoideja, joiden kaksi puoliakselia ovat samanpituisia. Taajuusspektrit mitattiin 836:ssa kappaleen ympäröivässä pallopinnalla olevassa pisteessä. Neuroverkolle opetettiin taajuusspektri kussakin pisteessä sirottavan kappaleen puoliakseleiden pituuksien perusteella. Opetettavan neuroverkon hyperparametrit optimoitiin käyttämällä opetukseen 100 näytettä ja mittauspisteenä (φ, θ) = (0, 0). Tämän seurauksena muiden mittauspisteiden taajuusspektrien virhettä saataisiin mahdollisesti pienennettyä optimoimalla neuroverkko jokaiselle mittauspisteelle erikseen. Suurin suhteellinen taajuusspektrin virhe on äänilähteen vastakkaisella puolella ellipsoidia (φ, θ) = ( 90, 0). On yllättävää, että neuroverkon on tällöin todella hankala oppia taajuusspektri. Kuvassa 27 huomataan, ettei sakkofunktio edes lähde suppenemaan kaikilla opetuskerroilla. Tässäkin suunnassa mitattu taajuusspektri on luultavasti mahdollista opettaa neuroverkolle, mikäli verkon rakenne muutetaan tälle suunnalle sopivaksi. Kuvassa 18 kaikkien suuntien sakkofunktioiden arvojen keskiarvo pienenee datamäärän kasvaessa. Tämä oli haluttu tulos, mutta datan määrällä oletettiin olevan vieläkin suurempi vaikutus. Opetuksessa käytettiin pientä datamäärää, koska haluttiin tutkia, onko pienellä määrällä dataa mahdollista opettaa taajuusspektri ellipsoidista siroavalle aallolle. Sovelluskohteena neuroverkolle on taajuusspektrin opettaminen ihmisen korvasta siroavalle äänelle (HRTF). HRTF:n tapauksessa sirottava kappale, eli korva, on paljon monimutkaisempi, joten sen oletetaan vaativan enemmän opetusdataa ja lisäksi datan kerääminen HRTF:n opettamiseen on hidasta, joten siinä joudutaan jokatapauksessa työskentelemään pienen datamäärän kanssa. Pienen datamäärän käyttäminen tuottaa yleisesti ongelmia, koska uusien näytteiden joukossa on todennäköisemmin näytteitä, joiden kanssa neuroverkko joutuu ekstrapoloimaan. Ekstrapolointiongelmaa haluttiin tutkia valitsemalla ekstrapolointinäyte, jonka puoliakseleiden arvot ovat opetusjoukon reunalta ja vertaamalla tätä interpolointinäytteeseen, jonka puoliakseleiden arvot ovat lähellä keskiarvoja. Näillä näytteillä neuroverkon approksimoivaa taajuusspektriä vertailtiin tarkemmin kolmessa mittauspisteessä. Kahdelle suunnalle kuvissa 19, 20, 22 ja 23 olevat taajuusspektrien approksimaatiot ovat heikkoja pienimmillä datamäärillä ja paranevat datan määrän kasvaessa 100 näytteeseen. Yllättäen tätä suuremmilla datamäärillä approksimaation paranemista ei tapahtunut. Interpolointinäytteen ja ekstrapolointinäytteen välillä ei ollut suurta eroa vaikkakin interpolointinäyte näytti suoriutuvan hieman paremmin leveystasoilla 0 ja 90. Äänilähteen 42
varjopuolella olevalla opetussuunnalla neuroverkko ei oppinut taajuusspektriä kummallakaan näytteellä. Opetusdatan suurempikaan määrä ei parantanut oppimista tältä suunnalta. Tämä interpoloinnin ja ekstrapoloinnin tutkiminen suoritettiin sen vuoksi, että HRTF:n laskemisessa joudutaan mahdollisesti myös ekstrapoloimaan, koska ihmisten korvat ovat eri muotoisia. Interpoloinnin ja ekstrapoloinnin vaikutuksen tutkimiseen voisi jatkossa ottaa mukaan enemmän näytteitä. Esimerkiksi kaikki näytteet voitaisiin jakaa kahtia interpolointi ja ekstrapolointinäytteisiin. Tällöin olisi mahdollista tutkia esimerkiksi kummankin joukon virheiden keskiarvoa, jolloin vältyttäisiin yksittäisen näytteen antamalta satunnaisuudelta. Jatkossa opetettavien neuroverkkojen määrää on mahdollista vähentää esittämällä data paremmassa muodossa. Data voitaisiin esittää sen pääkomponenttien avulla [37]. Tällöin mittauspisteiden määrä olisi mahdollista pienentää, kun kaikkien taajuusvasteiden esittämiseen tarvitaan vain osasta suunnista määritetyt taajuusvasteet. Viitteet [1] B. Xie. Head-Related Transfer Function and Virtual Auditory Display. J. Ross Publishing, Inc., 2013. [2] W. G. Gardner and K. D. Martin. Hrtf measurements of a kemar. J. Acoust. Soc. Amer., 97(3907-3908), 1995. [3] S-N. Yao, T. Collins, and C. Liang. Head-related transfer function selection using neural networks. Archieves of Acoustics, 42(3), 2017. [4] J. S. Asvestas, J. J. Bowman, P. L. Christiansen, O. Einarsson, R. E. Kleinman, D. L. Sengupta, T. B. A. Senior, F. B. Sleator, P. L. E. Uslenghi, and N. R. Zitron. Electromagnetic Acoustic Scattering by Simple Shapes. North-Holland Publishing Company, 1969. [5] F. Ihlenburg. Finite Element Analysis of Acoustic Scattering. Springer, 1998. [6] R. Adelman, N. A. Gumerov, and R. Duraiswami. Semi-analytical computation of acoustic scattering by spheroids and disks. Acoustic Society of America, 136, 2014. [7] R. Adelman, N. A. Gumerov, and R. Duraiswami. Software for computing the spheroidal wave functions using arbitrary precision arithmetic. arxiv:1408.0074v1, 2014. [8] S. Järvenpää, T. Huttunen, A. Vanne, M. Malinen, J. Roivainen, and P. Ylä-Oijala. Fast boundary element simulation of noise emission from vibrating structures. Journal of Structural Mechanics, 49, 2016. 43