google assistant & wavenet › ~729g43 › projekt › studentpapper-17 › ... ·...
TRANSCRIPT
0
Linköpings universitet
729G43, Artificiell Intelligens
Google Assistant & WaveNet Projektrapport om CNN
Maja Albrektson
27/12–17
1
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å.
2
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
3
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
4
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.
5
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
6
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.
7
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 icke-
linjä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).
8
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.
9
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 xt 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.
10
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 (mu-
law) 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
11
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
12
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-
13
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
14
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.
15
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-how-siri-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.pocket-lint.com/apps/news/google/137722-what-is-google-assistant-how-does-it-work-and-which-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/deep-learning-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-family-hardware/ 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-explanation-convnets/ 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-machine-learning-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.
16
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-of-everything/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-launches-google-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