Google Assistant & WaveNet Projektrapport om CNN Maja Albrektson 27/12 17 Linköpings universitet 729G43, Artificiell Intelligens 0
SAMMANFATTNING Denna rapport beskriver WaveNet, en generativ modell av ett neuralt nätverk som arbetar på ljudvågsnivå (van der Oord, et al., 2016). WaveNet har visat sig producera bättre tal som låter mer naturligt och realistiskt än tidigare modeller. Algoritmen är uppbyggd av ett Convolutional neuralt nätverk, CNN, och det är uppbyggnaden av detta som rapportens primära fokus ligger på. 1
INNEHÅLL Sammanfattning... 1 1. Inledning... 3 1.1 Bakgrund... 3 2. Talsyntes... 3 2.1 Konkateneringssyntes... 3 2.2 Parametrisk talsyntes... 4 2.3 Skillnader mellan WaveNet och tidigare system... 4 3. Artificiella Neurala Nätverk... 5 3.1 Convolutional Neurala Nätverk, CNN... 5 3.2 Beståndsdelar/lager... 5 1.3.2 Convolution... 5 2.3.2 Pooling... 6 3.3.2 Fully Connected... 6 4.3.2 Rectified Linear Units & Softmax... 7 3.3 Deep learning generellt... 7 3.4 Backpropagation... 7 3.5 Designerbeslut... 8 4. WaveNet och dess uppbyggnad... 8 4.1 Uppbyggnad... 8 4.2 Beståndsdelar/lager... 8 1.4.2 Causal convolution... 9 2.4.2 Dilated causal convolution... 10 3.4.2 Softmax & kvantisering... 10 4.4.2 Residual learning & skip connections... 11 5.4.2 Gated activation units... 12 4.3 Extra input... 13 5. Diskussion... 13 Referenser... 15 2
1. INLEDNING Utvecklingen inom artificiell intelligens går ständigt framåt. Nya lösningar till tekniska problem presenteras och utvecklas kontinuerligt. Maskininlärning utgör en stor del av detta och har den senaste tiden börjat användas flitigt när det handlar om taligenkänning (Levy, 2016). I princip alla moderna mobila enheter har idag någon sorts inbyggd röststyrning, exempelvis Apples Siri, Amaons Alexa, Microsofts Cortana eller Google Now (Betters & Langridge, 2017). Google valde år 2016 att släppa sin nya utveckling av Google Now som heter Google Assistant och marknadsföringen fokuserar på att sökmotorn Google skapades för att hjälpa alla, medan Google Assistant endast fokuserar på dig som individ (Huffman, 2017). Produkter som använder sig av Google Assistant ska därmed, vilket namnet indikerar, fungera som ägarens personliga assistent. Funktionen finns i många olika produkter och kan användas över flera olika enheter vilket medför naturlig interaktion med assistenten via såväl högtalare, tv, plattor och telefon. 1.1 Bakgrund Google Assistant använder sig av flertalet olika algoritmer för en fungerande interaktion mellan användare och maskin. Att kunna transformera text till tal (eng. text-to.speech), förkortat TTS, är återkommande i denna interaktion och Google har i deras senaste version av Google Assistant bland annat fokuserat på att få assistentens röst att likna en människas så mycket som möjligt (van der Oord, Walters, & Strohman, 2017). För att lyckas med detta har företaget DeepMind, numera ägt av Google, utvecklat WaveNet som är ett djupt neuralt nätverk som genererar råa ljudvågor (eng. raw audio wavelengths). WaveNet är ett fullständigt convolutional neuralt nätverk (eng. convolutional neural network), CNN. När WaveNet har tränats upp så har input bestått av tidigare inspelade data samt den mening som man vill att programmet ska uttala. Den modellen av WaveNet som började användas i Google Assistant år 2017 är en uppdaterad och förbättrad version av den första prototypen (van der Oord, Walters, & Strohman, 2017). Denna rapport kommer att fokusera på hur den första prototypen var uppbyggd, och främsta fokus kommer att ligga på hur olika CNN fungerar samt på vilket sätt WaveNet är utformat. 2. TALSYNTES 2.1 Konkateneringssyntes De flesta tidigare program på marknaden inom talsyntes använder sig utav konkateneringssyntes (eng. concatenative TTS) (Andersson, 2013). Konkateneringssyntes går ut på att man väljer ut en 3
röst som får spela in mängder med röstklipp som består av olika meningar. Meningarna är noga utvalda för att innehålla rätt sorts innehåll, ofta innebär det att de innehåller många olika kombinationer av fonem. Inspelningarna delas sedan upp i olika enheter så som fonem, ord eller meningar (Khan & Chitode, 2016). Väsentliga delar av dessa enheter väljs sedan ut och kombineras, även kallat konkateneras, och syntetiskt tal har skapats. Systemen bakom konkateneringssyntesen har således till uppgift att välja ut alla lämpliga delar från databasen bestående av all data, och sedan sammanfoga dessa delar till den slutgiltiga outputen. Denna typ av talsyntes gör det svårt att förändra rösten, och för att göra större förändringar så som att ändra känslor och toner i språket kan kräva att man spelar in en helt ny databas (van den Oord, Dieleman, & Zen, 2016). 2.2 Parametrisk talsyntes Parametrisk talsyntes (eng. parametric TTS) är ett annat sätt som man kan skapa text till tal på (van den Oord, Dieleman, & Zen, 2016). Den parametriska talsyntesen har all information som behövs sparad i modellens parametrar, vilket bidrar till att man kan kontrollera talet via inputen. Problemet med parametrisk talsyntes är att den tenderar till att låta mindre naturlig än konkateneringssyntesen. 2.3 Skillnader mellan WaveNet och tidigare system Skillnaden mellan WaveNets nya system och tidigare program är således att de har lyckats skapa en naturligare röst än tidigare (van den Oord, Dieleman, & Zen, 2016). Tidiga tester med WaveNet har visat en tydlig förbättring jämförelsevis med tidigare TTS-program. Programmets förmåga att generera råa ljudvågor möjliggör även att skapa andra typer av ljud, så som musik samt att byta mellan olika röster. Övriga saker som gör att ljudet som skapas av WaveNet blir mer naturligt än tidigare TTS-program är att även ljud i form av andning och munrörelser inkluderas. WaveNet kan dessutom använda och lära sig flera olika rösters karakteristiska drag utan att behöva en massa nya data. 4
3. ARTIFICIELLA NEURALA NÄTVERK 3.1 Convolutional Neurala Nätverk, CNN Det finns flera olika sorters neurala nätverk som utför djupinlärning och CNN är en typ av dessa som väldigt ofta är inblandad när det sker nya framsteg på marknaden (Rohrer, 2016). CNN används framförallt för bildigenkänning, men även för andra saker så som text eller ljud. 3.2 Beståndsdelar/lager För att förklara grundprincipen bakom CNN så kommer denna del av rapporten att utgå från hur det fungerar när man använder det neurala nätverket till att jämföra bilder. Ett exempel på detta kan vara att algoritmen ska bestämma vilken siffra en bild föreställer. En bild representeras i en tvådimensionell modell, medan ljud presenteras endimensionellt. Detta medför att utformningen på olika algoritmer kan variera lite, men grunden är samma. Ett av de viktigaste kriterierna för att man ska kunna använda CNN är att datan man arbetar med har någon sorts relation och ordning (Rohrer, 2016). Det ska inte gå att byta plats på olika rader eller kolumner i bilden (eller tidsstegen i ett ljudklipp) utan att det påverkar datan. CNN arbetar genom att dela upp den stora bilden som man har från början i mindre delar, pixlar. Genom att jämföra de mindre delarna med varandra så är det enklare att hitta liknelser, än om man jämför hela bilden. 1.3.2 Convolution CNN kan ses som en algoritm som arbetar i flera lager (Rohrer, 2016). Det lager som algoritmen har fått sitt namn ifrån kallas convolution layer. Det första som algoritmen utför i convolutionslagret är att filtrera (eng. filtering) (Karn, 2016). Vi tänker oss, för enkelhetens skull, att en bild består av 25 pixlar, fördelade i en matris som är 5x5 stor. Filtrering innebär att ett filter (även kallat kernel, eller feature detector ) som är mindre än ursprungsmatrisen, exempelvis 3x3, glider över bildens alla pixlar ett steg i taget. Den yta som filtret täcker är det som kallas receptive field. När filtret jämförs med ursprungsbilden på detta vis så används en matematisk uträkning kallad konvolution (eng. convolution). Uträkningen innebär att man multiplicerar värdet i varje ruta i filtret med värdet på den motsvarande pixeln i ursprungsbilden, även kallat elementbaserad multiplikation. Om man tar svaren från alla konvolutioner och placerar ut på de platser där uträkningen gjordes så skapas en filtrerad version (även kallat feature map) av originalbilden som visar hur väl det filter som användes passar in på olika ställen i bilden. Denna process genomförs med alla filter, vilket leder till ett flertal filtrerade bilder. Ju fler filter som 5
algoritmen använder, desto fler features kommer att upptäckas, och nätverket kommer att bli bättre på att upptäcka mönster i nya bilder. Anledningen till att man använder sig av convolutionlager är att man oftast söker efter något specifikt i bilderna, specifika features (Dettmers, 2015). En bild innehåller mängder med information, men oftast är det endast en liten del av all den informationen som faktiskt är relevant för algoritmen. Ett exempel på sådan information kan vara att man vill fokusera på konturer eller olika färger. Denna process är automatiserad med hjälp av algoritmen, det enda den som designar algoritmen behöver göra i detta avseende är att träna nätverket till att finna nya filter som är relevanta för uppgiften. 2.3.2 Pooling Ett CNN kan bestå av flera olika sorters lager och funktioner, alla behöver inte nödvändigast användas i samtliga algoritmer. Ett exempel på en sådan funktion är ett lager som kallas pooling (Dettmers, 2015). Pooling utförs för att minska storleken på bilder, eller data, medan man fortfarande behåller den viktigaste informationen som man har samlat in. Det är även bra eftersom att input inte behöver se ut på ett specifikt vis, vilket innebär att den inte är så känslig för rotationer och översättningar. Det finns flera olika sorters Pooling, men Max Pooling är det vanligaste (Karn, 2016). Processen genomförs genom att, med hjälp av en matris (några pixlar stor) som flyttas runt, välja ut det största värdet för varje del av bilden som matrisen befinner sig på (Rohrer, 2016). Detta reducerar storleken på bilden. Anledningen till att detta tillvägagångssätt är möjligt beror på att CNN inte bryr sig om vart inom en matris som ett visst filter passar bäst, utan endast ifall det passar eller inte. Om detta sker efter convolutionslagret och filtreringen som beskrevs ovan, så kommer det alltså fortfarande att vara lika många filtrerade bilder, men de kommer att ha en reducerad storlek. 3.3.2 Fully Connected Det sista steget i ett CNN är vanligtvis ett så kallat Fully Connected layer och det är här som den slutgiltiga kategoriseringen sker (Rohrer, 2016). Här hanteras inte längre datan som en tvådimensionell bild utan snarare som en lång lista där alla värden behandlas på samma vis. Detta innebär att varje neuron från det föreliggande lagret är kopplat till varje neuron i nästa lager (Karn, 2016). Syftet med Fully Connected-lager är att använda de features som de tidigare lagren har fått fram till att klassificera originalbilden och få fram vilken kategori som bilden tillhör. 6
4.3.2 Rectified Linear Units & Softmax En aktiveringsfunktion som ofta används inom CNN är det som kallas Rectified Linear Units, även förkortat ReLu (Rohrer, 2016). Denna funktion transformerar alla pixlar som består av negativa tal till nollor. Exempelvis skulle en pixel som har värdet -0.55 skrivas ut som 0. ReLU är därmed en elementbaserad operation (Karn, 2016). Huvudsyftet med en ReLu är att få in ickelinjäritet i algoritmen, eftersom den mesta datan som algoritmen kommer att komma i kontakt med ser ut på det viset. Det sista Fully Connected-lagret i en algoritm kan även använda en aktiveringsfunktion som kallas Softmax (Karn, 2016). Softmaxfunktionen korrigerar outputvärdena i algoritmen så att varje kategoris outputvärde är ett värde mellan 0 och 1 samt att alla outputvärden tillsammans får summan ett (Yang, 2017). Den kategori som har högst värde är den kategori som det neurala nätverket tror att inputen tillhör. 3.3 Deep learning generellt En förutsägelse för att CNN och andra djupinlärningsalgoritmer ska fungera är att alla lagers output har samma form som indata (Rohrer, 2016). Detta möjliggör användandet av ovanstående förklarade lager flertalet gånger efter varandra. Detta innebär att algoritmen i början kan ha fokus på mer generella mönster i indata, för att sedan bli alltmer detaljerat efterhand. Alla features uppdateras och blir mer innehållsrika efter varje lager, och datastorleken växer. 3.4 Backpropagation En förutsägelse för att ett CNN ska fungera så bra som möjligt är att man har tränat upp det, vilket kan göras med så kallad backpropagation (Rohrer, 2016). Detta innebär att man använder data som man redan har facit till, och ser till att de fel som uppstår när algoritmen kör denna data, korrigeras. De delar som korrigeras är filtrernas värden samt vikterna mellan noderna. Varje värde korrigeras och när man hittat det värde som gör felet så litet som möjligt, så används detta. Mönster som är återkommande i flera iterationer formar sedan algoritmens vikter och val av filter nästa gång. Ett exempel på ett sådant mönster skulle kunna vara att alla bilder som algoritmen tränar med föreställer sjuor, då kommer algoritmen att generalisera och tro att det gäller alla bilder i hela världen. Den optimala algoritmen generaliserar lagom mycket och specialiserar lagom mycket, vilket innebär att det varken sker en så kallad underfitting eller overfitting (Russell & Norvig, 2010). 7
3.5 Designerbeslut När man skapar ett neuralt nätverk så finns det vissa riktlinjer för vad som är en lagom mängd av lager, filter, pixlar etcetera (Rohrer, 2016). Det finns ett flertal beslut att ta angående hur algoritmens struktur ska byggas. Det som CNN har som en fördel, att man kan kombinera alla lager på många olika sätt, skapar även fler beslut som behöver tas. Det är viktigt att poängtera att dessa lager även kan presenteras med vissa förändringar, och att ovan nämnda delar endast utgör basen för alla möjliga varianter av CNNs. WaveNet använder sig inte av ovanstående modell av lager utan har satt ihop andra lager för att skapa den mest optimala lösningen för deras algoritm. Ovanstående sorters lager kan ses som en grund av vad som är vanligt förekommande i ett CNN samt fungera som riktlinjer för vad olika lager har för funktion. 4. WAVENET OCH DESS UPPBYGGNAD 4.1 Uppbyggnad WaveNet är, som tidigare nämnt, en generativ modell av ett neuralt nätverk som arbetar på ljudvågsnivå (van der Oord, et al., 2016). När man försöker skapa ett talsyntessystem så går man från text, vilket är en sekvens av diskreta symboler, till talsignaler. Till skillnad från konkateneringssyntes och parametrisk talsyntes så är inte WaveNet bundna till lika många bestämda regler som ska följas. Den enda tidigare kunskapen som WaveNet har angående ljudsignaler är att designaren har bestämt hur stort mottagarfältet (eng. receptive field) ska vara, samt använder sig av µ-law kodning av signalen, vilket även kan ses som ett icke-linjärt kausalt filter för kvantiserade signaler. 4.2 Beståndsdelar/lager Varje urval, eller tidssteg (eng. timestep), från en ljudsignal påverkas av de tidigare tidsstegen (van der Oord, et al., 2016). Detta då ljud har en viss ordning som de olika delarna behöver komma i, annars blir det inte samma ljud. Den sammanlagda sannolikheten (eng. joint probability) för en ljudsignal är därmed en produkt av de respektive villkorliga sannolikheterna för varje tidssteg. Se formel nedan. 8
Figure 1. Sammanlagda sannolikheten för en ljudvåg. Källa: https://arxiv.org/pdf/1609.03499.pdf X står här för den sammanlagda sannolikheten medan x t symboliserar varje tidsstegs villkorliga sannolikhet. WaveNets villkorliga sannolikhetsfördelning består av ett flertal convolutional-lager. 1.4.2 Causal convolution Figure 2. Visualisering av en stapling med causal convolutional - lager. Källa: https://arxiv.org/pdf/1609.03499.pdf Den största delen av WaveNet består av causal convolutions (van der Oord, et al., 2016). Denna typ av lager används främst för att säkerställa att modellen inte förändrar ordningen som all data befinner sig i. Det är som ett vanligt convolutional-lager med skillnaden att ingenting ska kunna påverkas av, eller vara beroende av, något som händer senare i algoritmen. Beräkningarna ska endast grundas i nuvarande och tidigare förekommen indata. Under träningen av ett nätverk som består av causal convolutions så kan alla förutsägelser för tidsstegen ske samtidigt, parallellt, eftersom att alla tidssteg som finns på samma nivå redan är kända för algoritmen (van der Oord, et al., 2016). Nätverket behöver inte generera nya data under träning, vilket gör detta möjligt. När modellen används och testas kommer däremot alla förutsägelser att vara sekventiella, och när en förutsägelse är gjord för ett urval, eller i detta fall tidssteg, så matas svaret tillbaka in i nätverket för att förutsäga nästa. 9
2.4.2 Dilated causal convolution Figure 3. Visualisering av en stapling med dilated causal convolutional - lager. Källa: https://arxiv.org/pdf/1609.03499.pdf WaveNet består inte av det så kallade poolinglagret som är vanligt förekommande i CNNs och som beskrevs tidigare i rapporten, istället använder det så kallad dilated convolution som på sätt och vis fungerar på samma sätt (van der Oord, et al., 2016). Den stora skillnaden mot ett poolinglager är att dilated convolution returnerar en output som har samma storlek som inputen. Flera dilated convolution-lager efter varandra möjliggör att nätverket har ett stort receptive field, det vill säga har tillgång till många noder, men fortfarande kan hålla sig till lika många lager som det hade varit om det inte var dilated. WaveNet har i sin algoritm valt att exponentiellt öka utvidgningen (eng. dilation) för varje lager upp till en förutbestämd gräns för att sedan börja om, de kallar det för ett block. Själva utvidgningen innebär, som bilden demonstrerar, att ett visst antal inputvärden hoppas över, eller ignoreras, när lagret används. Receptive field blir dubbelt så stort som storleken på utvidgningen, vilket kan ses på bilden. Detta innebär att om man använder dilation 1,2,4,,512 så kommer algoritmen ha ett receptive field på 1024 noder. 3.4.2 Softmax & kvantisering WaveNet använder aktiveringsfunktionen Softmax (se avsnitt 4.3.2) i det sista lagret för att modellera hur stor sannolikhet det är att varje individuell ljudsignal tillhör en viss kategori (van der Oord, et al., 2016). Detta innebär att om algoritmen fungerar korrekt så kommer den kategori som ljudsignalen tillhör att ha högst outputvärde. Råa ljudvågor representeras ofta som en 16-bits-sekvens, vilket medför 65,536 möjliga outputvärden för varje tidssteg om man använder sig av Softmax (van der Oord, et al., 2016). Då 65,536 möjliga outputvärden är en stor mängd att arbeta med så använder WaveNet µ-law (mulaw) för att sedan kvantisera (eng. quantize) datan. Mu-law är ett så kallat companding scheme vilket innebär att det förstorar små värden och komprimerar större värden (UCLA, u.å.). Detta innebär att när en signal passerar genom en compander så får de tidssteg som har en lägre 10
ljudstyrka (amplitud) ett större intervall medan de signaler som har en högre ljudstyrka får ett mindre intervall. Man kan säga att man kompenserar upp och ändrar distributionen så att det blir en jämnare fördelning. Varje tidssteg måste sedan transformeras till ett ändligt antal möjliga värden, som bör vara färre än 65,536. När det handlar om att digitalisera ljud och röster så brukar 256 möjliga värden att rekommenderas (Borth, Stark, & Lehnert, 2016). En optimal icke-linjär kvantiserare har fler möjliga värden på de ställen där tidssteget (signalen) troligtvis kommer att inträffa och färre på de ställen där den troligtvis inte kommer att inträffa. Med hjälp av mu-law, som har jämnat ut fördelningen av ljudstyrkan, kan algoritmen därför ha ett jämnt distribuerat avstånd mellan de möjliga outputvärdena. WaveNet använder av 256 möjliga värden, precis som tidigare nämnd rekommendation (van der Oord, et al., 2016). Anledningen till att man använder sig av ett icke-linjärt kausalt filter för kvantiserade signaler är för att kunna ta tillvara på detaljer i ljudet som annars hade gått till spillo (van der Oord, et al., 2016). Detta leder i sin tur till mer naturligt ljud, vilket var målet med algoritmen från början. 4.4.2 Residual learning & skip connections Figure 4. En överblick av ett "residual block" och hela algoritmens arkitektur. Källa: https://arxiv.org/pdf/1609.03499.pdf Det har visat sig att fler lager (mer djup) i djupa neurala nätverk ofta bidrar till bättre resultat (He, Zhang, Ren, & Sun, 2015). Problematiken med detta är att fler lager dessutom bidrar till en långsammare algoritm och större träningsfel. För att lösa det så kallade degraderingsfelet som uppstår och förbättra inlärningen så kan man använda residual learning. Residual learning 11
innebär att man gör nätverket djupare, snarare än vidare. Detta sker genom att det skapas residual-block med flera dilated causal convolutional-lager. Residual connections sker inom varje lager och mellan lagren används så kallade skip connections, även kallat genvägar (eng. shortcuts) vilket bilden nedan demonstrerar. Figure 5. Ett block inom residual learning från originalartikeln. Källa: https://arxiv.org/pdf/1512.03385.pdf Dessa genvägar hoppar över ett lager och för med sig information från input från lager ett (n) till output från lager två (n+1) (He, Zhang, Ren, & Sun, 2015). Genom att genvägen genomför en så kallad identity mapping så läggs det inte till några extra parametrar eller ökar datorkomplexiteten. Nätverket kan på detta vis använda redan inlärda data och lära sig med hjälp av dessa istället för att börja om inför varje lager. I figuren representerar f(x)+x det nya lagret, där x är input och f(x) är mellanlagrets funktion. Genvägen medför att man säkerställer att det nya lagret lär sig något nytt av nätverket, då man tvingar det nya lagret att lära sig något annat än det som redan finns kodat. Detta innebär att man inte behöver använda onödig data och man minskar därmed datorkomplexiteten. 5.4.2 Gated activation units Inom residual-blocket så använder WaveNet så kallade Gated activation units istället för Rectified Linear Units som nämndes tidigare i rapporten, då detta har visat sig vara mer effektivt när det handlar om ljudbehandling (van der Oord, et al., 2016). Unit refererar till aktiveringsfunktionen i ett lager som bidrar till att inputen förändras (Dettmers, 2015). Detta sker genom att en neurons inputsumma transformeras av aktiveringsfunktionen och skapar nodens output. Gated activation units är en av de mer komplexa aktiveringsfunktionerna och fungerar lite i likhet med LSTM-enheter (van der Oord, et al., 2016). Gated activation units är en kombination av en tanhfunktion och en sigmoidfunktion vilket medför att funktionen är icke- 12
linjär. Sigmoid och tanh fungerar på liknande sätt och tanh är egentligen sigmoidfunktionen i en annan skala (Sharma V, 2017). Aktiveringsfunktionen används för att implicera icke-linjäritet till neuronens output eftersom att den mesta datan i världen är icke-linjär, samt för att bestämma om en neuron har tillräckligt högt värde för att skicka vidare inputsignalen eller inte. Figure 6. Gated activation unit. Källa: https://arxiv.org/pdf/1609.03499.pdf Figuren ovan gestaltar WaveNets Gated activation unit. Sigmoidfunktionen skrivs som σ, multiplikationstecknet i mitten symboliserar att det är en elementbaserad multiplikation, k står för det aktuella lagrets index, f är filtret som används, g är gaten och W är ett convolution filter, vilket även kan ses som en viktmatris (van der Oord, et al., 2016). X kan antas stå för funktionens aktuella input. Hela Gated activation unit representerar således en elementbaserad multiplikation mellan en tanh-funktion och en sigmoidfunktion, som tillsammans bildar en ny sorts aktiveringsfunktion, eller ett aktiveringsblock. 4.3 Extra input Genom att addera en extra input till algoritmen så kan WaveNet producera den villkorliga fördelningen av ljudet utefter den inputen (van der Oord, et al., 2016). När det gäller TTS så innebär det att den extra inputen är själva texten som algoritmen ska skapa ljud av. Algoritmen guidas på detta vis till att producera ljud utefter just de karakteristiska dragen som texten har. Lokal betingning (eng. local conditioning) är ett sätt man kan applicera den extra inputen på (van der Oord, et al., 2016). Textens lingvistiska drag kommer då att transformeras till en tidsserie som har samma resolution som ljudsignalen. Tidsserien appliceras sedan som extra input i gated activation unit tillsammans med den ursprungliga ljudsignalen. 5. DISKUSSION Deepmind och Googles mål att skapa en röst som liknar en människas så mycket som möjligt är enligt mig ett bra fokuseringsområde då vi nog alla har stött på en automatiserad telefonsvarare eller GPS som låter omänsklig, vilket bidrar till att det känns lättare och mer okej att bli irriterad på den eftersom att det är svårt att känna samma sympati till en datoriserad röst som man gör till en människa. Jag anser att det är ett viktigt steg i utvecklingen om vi människor i 13
framtiden ska bli mer bemötliga och använda oss av alla de olika hjälpmedel och virtuella hjälpredor som börjar inta marknaden, så som Google Assistant. Förutom ovan nämnda fördelar så finns det även en del nackdelar med att en digital röst låter som en helt vanlig människa. Om man ringer en person eller ett företag och inte hör eller förstår att man pratar med en robot så kan det ge upphov till irritationer eller känslor av att känna sig lurad. Ju mer naturligt en robot låter, desto svårare blir det för oss vanliga människor att särskilja dem från oss. Konsekvenserna av detta kan således bli att allt fler människor förlitar sig på robotar och anförtror sig till dem med sina känslor och hemligheter. En sådan utveckling kan tyckas positiv om datan som kommer in behandlas på ett korrekt vis, men det blir snabbt negativt om datan hamnar i fel händer och missbrukas. CNN är ett neuralt nätverk som fungerar bra i många sammanhang. Jag anser det positivt att man har använt denna typ av nätverk i algoritmen och att man ständigt arbetar för att komma framåt i utvecklingen. Den uppdaterade versionen av WaveNet lanserades i Googles produkter så sent som år 2017, vilket innebär att det fortfarande är nytt och att många förbättringar kan väntas komma i framtiden. Att använda sig av WaveNet eller liknande algoritmer för att producera naturligt tal kan öppna dörrar för nya möjligheter. Konkateneringssyntes eller paramatrisk talsyntes har restriktionerna att för att skapa en ny röst så krävs det en helt ny databas med timtals av inspelningar. Att WaveNet istället kan generera nytt tal utan all den datan innebär att liknande algoritmer i framtiden kanske kan användas till att smidigare producera röster av personer som inte är tillgängliga. Det kan exempelvis handla om någon känd skådespelare som har en karaktär i en film och som har en känd röst, vilken man då skulle kunna gestalta även efter dennes bortgång. Detta skapar dock annan problematik i form av etiska frågor, men det är en möjlighet för framtiden. 14
REFERENSER Andersson, L. (den 17 September 2013). Machine language: how Siri found its voice. The Verge. Hämtat från https://www.theverge.com/2013/9/17/4596374/machine-language-howsiri-found-its-voice den 28 12 2017 Betters, E., & Langridge, M. (den 6 oktober 2017). What is Google Assistant, how does it work, and which devices offer it? Pocket-lint. Hämtat från Pocket-lint: https://www.pocketlint.com/apps/news/google/137722-what-is-google-assistant-how-does-it-work-andwhich-devices-offer-it den 27 12 2017 Borth, D. E., Stark, W. E., & Lehnert, J. S. (den 18 mars 2016). Telecommunication. Encyclopædia Britannica. Hämtat från https://www.britannica.com/technology/telecommunication/introduction den 6 januari 2018 Dettmers, T. (den 3 november 2015). Deep Learning in a Nutshell: Core Concepts. NVIDIA Accelerated Computing. Hämtat från https://devblogs.nvidia.com/parallelforall/deeplearning-nutshell-core-concepts/#convolutional-neural-network den 3 januari 2018 Dettmers, T. (den 26 mars 2015). Understanding Convolution in Deep Learning. TimDettmers - Making deep learning accessible. Hämtat från http://timdettmers.com/2015/03/26/convolution-deep-learning/ den 2 januari 2018 He, K., Zhang, X., Ren, S., & Sun, J. (2015). Deep Residual Learning for Image Recognition. Las Vegas: IEEE. Huffman, S. (den 4 oktober 2017). The Google Assistant, powering our new family of hardware. Google Blog. Hämtat från Google Blog: https://www.blog.google/products/assistant/google-assistant-powering-our-new-familyhardware/ den 27 12 2017 Karn, U. (den 11 augusti 2016). An Intuitive Explanation of Convolutional Neural Networks. the data science blog. Hämtat från https://ujjwalkarn.me/2016/08/11/intuitive-explanationconvnets/ den 2 januari 2018 Khan, R. A., & Chitode, J. S. (februari 2016). Concatenative Speech Synthesis: A Review. International Journal of Computer Applications, 136(3). Hämtat från http://www.ijcaonline.org/research/volume136/number3/khan-2016-ijca-907992.pdf den 28 12 2017 Levy, S. (den 24 augusti 2016). The ibrain Is Here and It s Already Inside. Wired. Hämtat från Wired: https://www.wired.com/2016/08/an-exclusive-look-at-how-ai-and-machinelearning-work-at-apple/ den 27 december 2017 Rohrer, B. (den 18 augusti 2016). How do Convolutional Neural Networks work? Data Science and Robots Blog. Hämtat från http://brohrer.github.io/how_convolutional_neural_networks_work.html den 28 12 2017 Russell, S. J., & Norvig, P. (2010). Artificial Intelligence: A Modern Approach (Vol. 3). New Jersey: Pearson Education. 15
Sharma V, A. (den 30 mars 2017). Understanding Activation Functions in Neural Networks. The Theory of Everything, Medium. Hämtat från https://medium.com/the-theory-ofeverything/understanding-activation-functions-in-neural-networks-9491262884e0 den 7 januari 2018 UCLA. (u.å.). Signal Quantization and Compression Overview. UCLA Engineering. Hämtat från http://www.seas.ucla.edu/dsplab/sqc/over.html den 6 januari 2018 van den Oord, A., Dieleman, S., & Zen, H. (den 8 september 2016). WaveNet: A Generative Model for Raw Audio. Deepmind. Hämtat från Deepmind: https://deepmind.com/blog/wavenet-generative-model-raw-audio/ den 27 12 2017 van der Oord, A., Dieleman, S., Zen, H., Simonyan, K., Vinyals, O., Graves, A.,... Kavukcuoglu, K. (2016). WaveNet: A Generative Model for Raw Audio. Arxiv. Hämtat från https://arxiv.org/pdf/1609.03499.pdf den 18 12 2017 van der Oord, A., Kalchbrenner, N., Vinyals, O., Espeholt, L., Graves, A., & Kavukcuoglu. (2016). Conditional Image Generation with PixelCNN Decoders. ArXiv. Hämtat från https://arxiv.org/pdf/1606.05328.pdf den 7 januari 2018 van der Oord, A., Walters, T., & Strohman, T. (den 4 oktober 2017). WaveNet launches in the Google Assistant. Deepmind. Hämtat från https://deepmind.com/blog/wavenet-launchesgoogle-assistant/ den 27 december 2017 Yang, J. (den 11 februari 2017). ReLU and Softmax Activation Functions. Hämtat från https://github.com/kulbear/deep-learning-nano-foundation/wiki/relu-and-softmax- Activation-Functions den 6 januari 2018 16