• No results found

Röststyrning och dess neurala nätverk.

N/A
N/A
Protected

Academic year: 2022

Share "Röststyrning och dess neurala nätverk."

Copied!
13
0
0

Loading.... (view fulltext now)

Full text

(1)

Röststyrning och dess neurala nätverk.

Projektrapport om DNN och RNN gällande Apples assistent “Siri”.

Magdalena Haglund Holst 13/1-2019

(2)

Innehållsförteckning:

1. Inledning………..2

1.1 Bakgrund………....2

2. Deep neural network………2

2.1 DNN och Siri….……….3

2.1.1 Two pass detector………....4

3. Recurrent Neural network………5

3.1 RNN och LSTM……….6

3.2 Träning av RNN……….6

3.2.1 Sigmoid squashing function………..7

3.2.2 Stochastic gradient descent………...8

3.2.3 Backpropagation………...………9

4. Sammanfattning………..…...10

Referenser…….………....….12

(3)

1. Inledning

Kommunikationen mellan användare och olika system utvecklas ständigt. Från att endast kunna trycka på knappar på mobiltelefonerna, till att kunna använda sig av

touchfunktionen och nu även röststyrning. Det finns flera olika företag och dess enheter som använder sig av röststyrning. Exempel på dessa är Googles “Assistent”, Iphones “Siri” samt Amasons “Alexa”. Gemensamt för dessa är att de alla kan föra en verbal

tvåvägskommunikation, dvs. att enheten i fråga både kan lyssna samt svara på användarens frågor eller föra en konversation med hen​.​ Denna kommunikation möjliggörs med hjälp av maskininlärning via neurala nätverk. Då olika röststyrningsenheter kan vara modifierade på olika sätt kommer denna rapport främst att fokusera på Apples assistent kallad “Siri”. Denna rapport kommer inriktas på hur Siris neurala nätverk är uppbyggt, dess beståndsdelar, samt nätverkets funktion för en fungerande röststyrningsenhet.

1.1 Bakgrund

Apples röstassistent “Siri” lanserades i oktober 2011. Siri har en mängd olika funktioner såsom att söka upp information på nätet, göra påminnelser, skriva anteckningar samt ringa kontakter för att bara nämna några få möjligheter. Alla dessa kommandon utförs verbalt, genom att användaren yttrar orden “Hej Siri”, för att sedan säga det önskade

kommandot till systemet. Systemet Siri fungerar genom att en språkigenkännare ständigt är aktiverad, för att just lystra efter orden “Hej Siri”. Denna detektor använder ett Deep Neural Network (DNN), för att konvertera det akustiska mönstret som användaren utger, till en sannolikhetsdistribution över språkliga ljud. När systemets användare just uttrycker orden

“Hej Siri”, avgör sannolikhetsdistributionen just sannolikheten för att orden som precis uttrycktes faktiskt var “Hej Siri”. Om sannolikheten för att orden faktisk var “Hej Siri” är övervägande, aktiveras Siri och lystrar därmed till vad användaren vill ha hjälp med (Apple, Siri team, 2017).

2. Deep Neural Network

Ett neuralt nätverk består av en mängd noder, ​perceptroner,​ som är sammankopplade via riktade länkar till andra perceptroner i nätverket. Dessa sammankopplingar ger

perceptronerna inputs och outputs med information, som tillsammans utgör det neurala

(4)

nätverket. (Russel & Norvig, 2010). Omfattningen på neurala nätverk kan te sig väldigt olika från nätverk till nätverk. Allt från nätverk med två sammankopplingar mellan perceptronerna och ett fåtal lager, till nätverk med tusentals sammankopplingar och lager (Rohrer, 2017)​.

Djupa neurala nätverk innefattar även så kallade dolda lager. Dessa består likt andra lager i nätverket av noder, skillnaden är att ett dolt lager är beläget mellan ett input-lager och ett output-lager (Goodfellow, Bengio & Courville, 2016). Det är i ett dolt lager som neuronerna i nätverket tar in data, vilket är ​viktade​ inputs i form av ​vektorer​, och kan därefter ge ut en output genom en aktiveringsfunktion som beräknar de dolda lagrens värden. Vektorer är en samling värden (Rohrer, 2017)​.​ Det som menas med att inputen är viktad är att den har en numerisk vikt som ger information om styrkan i den aktuella kopplingen mellan noderna.

(Russel & Norvig, 2010​). ​ Aktiveringsfunktionerna kan se olika ut och därmed även ge olika typer av output i nätverket. Exempel på en aktiveringsfunktion är att den ger ett tröskelvärde, där en output endast ges om värdet funktionen beräknar överstiger det givna tröskelvärdet (Kang, 2017).

Funktionen hos ett neuralt nätverk är att känna igen mönster. Dessa mönster kan röra flera möjliga kategorier, exempelvis kulörer eller som i detta fall, ljud (Rohrer, 2017).

2.1 DNN och Siri

När användaren till en Iphone eller en Iwatch yttrar orden “Hej Siri”, bryts ljudet av användarens röst ned till en ström av momentana våglängder, i en hastighet på 16000 per sekund. Det är dessa våglängder som sedan omvandlas till ramar i det neurala nätverket, där varje ram beskriver ett ljudspektra på ca 0.01 sekunder (Apple, Siri team, 2017​)​. Ungefär 20 av dessa ramar matas in i det neurala nätverket åt gången, där varje ram omvandlas till en sannolikhetsfördelning över en uppsättning talljudsklasser, se figur 1 nedan.

(5)

Figur 1. Deep neural network över Siris system.

Den akustiska modellen för det neurala nätverket ger en distribution över värden för fonetiska klasser för varje ram (Apple, Siri team, 2017​). ​Det som ingår i en fonetisk klass är den minsta möjliga beståndsdelen i ett ord, dvs. språkljuden. Figur 1 ovan visar hur det neurala nätverket för Siri är uppbyggt, dvs. en grafisk bild över de dolda lagrena i nätverket samt dess funktion för nätverket som helhet. Målet för det neurala nätverket är att först och främst detektera frasen “Hej Siri” bland dessa ramar i den akustiska modellen. Detta görs genom att varje ram får ett värde som ackumuleras över en viss tidssekvens. Om värdet överstiger tröskelvärdet i aktiveringsfunktionen, dvs. att sannolikheten för att frasen “Hej Siri” yttrats är övervägande, aktiveras systemet och lystrar därmed till andra ord än just den sagda frasen.

2.1.1 Two-pass detection

För att Siri inte ska kräva allt för mycket energi för den aktuella enheten är systemet uppdelat i två delar. Den första delen av systemet är alltid på, och är inte lika energikrävande som den andra delen. Den akustiska inputen från mikrofonen på enheten åker in i den första delen av Siris system, även kallat AOP (always on processor), som lystrar efter just orden

“Hej Siri”. Denna AOP har i sig en mindre version av det stora DNN (som finns i den andra delen). När gränsvärdet överstigs för aktiveringsfunktionen i AOP, skickas informationen vidare till ett större DNN, se figur 2 nedan (Apple, Siri team, 2017).

(6)

Figur 2. Two-pass detection

3. Recurrent Neural Network

Det finns olika typer av neurala nätverk, beroende på syftet med nätverket samt dess önskade output. När systemet för Siri har aktiverats är dess syfte inte att enbart lystra efter frasen “Hej Siri” som tidigare, utan måste nu även komma ihåg längre meningar för att uppfatta användarens kommando. För att detta ska möjliggöras krävs ett så kallat “Recurrent Neural Network” (RNN). Ett RNN kan fungera likt ett “long short term memory” (LSTM), då det baserat på sagda ord kan förutse nästkommande yttringar. Detta sker genom att RNN sparar outputen från tidigare tillstånd, som sedan används i det aktuella inputlagret med eventuell ny data. Detta genererar en ny output. Denna process fortgår sedan.

Figur 3. Recurrent Neural Network

(7)

3.1 RNN och LSTM

Ett RNN fungerar som tidigare nämnt likt ett long short term memory (LSTM). Detta genom att tidigare output sparas och sedan används som input i det aktuella lagret. Detta sker genom att outputinformationen inte försvinner då den översätts till data i form av vektorer, dvs. ett antal samlade värden (Rohrer, 2017). Med hjälp av LSTM kommer därmed RNN inte enbart ihåg den senaste outputen, utan ​alla​ tidigare outputs. LSTM fungerar genom att vektorer i RNN adderas (element-by-element addition), samt multipliceras

(element-by-element multiplication). Det är denna addition samt multiplikation som utgör själva minnet i nätverket. Minnet möjliggörs genom så kallad “gating”. Gating kan jämföras med olika vägar i nätverket, som delar upp och avgränsar nätverket utifrån dess olika

funktioner. Dessa gates behövs för att RNN ska veta vilken information som bör kommas ihåg, vad som kan glömmas, samt ge en output för vad som kan antas stämma för tillfället.

Vilken information som ska kommas ihåg och vilken som ska glömmas avgörs genom den tidigare nämnda element-by-element additionen samt multiplikationen. Dessa beräkningar tilldelar informationen i nätverket ett värde mellan exempelvis 0-1. Gaterna släpper igenom information med exempelvis värdet 1, och väljer att glömma information med värdet 0.

Informationen tilldelas därmed ett värde beroende på vilket signal/informationsvärde som multipliceras samt adderas med vilket gate-värde. Den information som nätverket väljer att komma ihåg stannar kvar i RNN och hjälper nätverket att kunna förutse nästa output.

(Rohrer, 2017).

Det finns olika gates som utgör olika funktioner för att kunna uppnå sållandet samt

ihågkommandet av information i nätverket. Dessa olika gates är ​forget gate​, ​input gate​ samt output gate​.

3.2 Träning av RNN

En stor skillnad mellan RNN och andra neurala nätverk är att RNN kommer ihåg tidigare input, medan de i andra neurala nätverk är oberoende av varandra. Ett RNN tränas ständigt genom att köras, då all tidigare input lagras för att sedan ihågkommas och användas för att förutspå nästkommande output, i detta fall ord. För att kunna förutspå nästkommande ord, jämförs relationen mellan tidigare sagda ord, för att möjliggöra en förutsägning om

(8)

nästkommande ord. På så sätt kommer ett RNN ihåg alla tidigare relationer mellan noderna i nätverket, samtidigt som det ständigt tränas genom att spara nya relationer (Shekhar, 2018).

Apples system för Siri tränas genom att justera nodernas vikter genom backpropagation samt stochastisk gradient descent (Apple, Siri team, 2017). Denna process beskrivs mer i detalj senare.

Figur 4. Hur RNN använder sig av tidigare outputs i kombination med ny information för att kunna förutse kommande output.

3.2.1 Sigmoid squashing function

Sigmoid squashing function hjälper nätverket att vara kontrollerat, samt att tränas för att förbättra sannolikhetsgraden för kommande output. Det fungerar genom att värdet för en viss output, exempelvis 0.5, sätts in i squashing funktionen, och får därmed ut en squashed version av det värdet. Det insatta värdet sätts in på grafens x-axel. Där det insatta x-värdet möter sigmoid-axeln i grafen utläses y-värdet för samma punkt. Det är denna punkt som blir den squashade versionen av x-värdet. Värdet som utläses ur squashed funktionen hamnar alltid mellan 0 och 1.0. Ju större det insatta värdet är, desto större kommer även att squashed-värdet att bli (Rohrer, 2017). Denna funktion hjälper RNN att få feedback över sannolikheten för kommande utfall. Om exempelvis en specifik ordföljd upprepas 3 gånger i rad, ökas sannolikhetsvärdet för att just den ordföljden kommer att upprepas om det första ordet i ordföljden nämns en ytterligare gång.

(9)

Figur 5. Sigmoid squashing function.

3.2.2 Stochastic gradient Descent

För att träna systemet Siri används bland annat en metod som kallas stochastic gradient descent (SGD) (Apple, Siri team, 2017). Stochastic gradient descent är en iterativ metod, med mål att optimera en differentierbar objektiv funktion, samt minimera nätverkets cost function. En cost function är en funktion som räknar ut felen i nätverkets prestanda (Watson, 2017 ). Med SGD tränas därmed nätverket till att minimera antal fel. Det som menas med en ​gradient​ i SGD är hur mycket outputen i nätverket kommer förändras

beroende på om inputen förändras. För att exemplifiera tillvägagångssättet för hur en gradient descent beräknas kan vi titta på figur 5 nedan. Funktionen är konvex, där de horisontella axlarna i figuren representerar parametrarna w samt b, och de vertikala axlarna representerar cost function J(w,b). Målet är att ta reda på värdena för w och b som motsvarar minimumet för cost function, dvs. vilka värden för w och b som bidrar till att förändringen i outputen beroende på vilken input det är, är så liten som möjligt. Denna punkt är markerad med rött i figur 5. För att hitta dessa värden börjar funktionen med att sätta randomiserade värden för w och b, för att sedan “vandra” nedåt mot målet, dvs. bakåt i nätverket (Donges, 2018 ). Varje

“steg” nedåt i figuren är en jämförelse mellan hur mycket outputen för det aktuella läget i nätverket kommer förändras beroende på inputen. Hur stora dessa steg är beror på hur stor learning rate​ vi har. Learning raten avgör hur snabbt eller långsamt funktionen ska röra sig mot målet, de optimala vikterna. Om learning raten för gradient descent är för stor, kan den hoppa över minimumet för cost function, och istället bara studsa fram och tillbaka i den konvexa funktionen. Om learning raten är för liten kommer den tillslut hitta minimumet för cost function, men det kan ta väldigt lång tid. Därför är det viktigt att ha en learning rate som

(10)

varken är för stor eller för liten. När gradient descent körs för nätverket, kommer därmed värdet för cost function att sjunka för varje iteration.

Figur 6. Gradient descent

Stochastic gradient descent minskar därmed felen i nätverket som helhet genom att minska cost function, och nå nätverkets lokala minimum för fel, genom att modifiera dess

parametrar. (Donges, 2018).

Skillnaden mellan ​stochastic ​gradient descent och gradient descent är just det att den stokastiska varianten väljer ut ett randomiserat urval av från nätverket, istället för en hel grupp, eller en grupp som är i följording i nätverket. Stochastic gradient descent uppdaterar även parametrarna för varje träningsexempel för datasetet, vilka andra typer av gradient descent inte gör. Detta leder till att SGD kan ge en mer detaljerad förbättringshastighet än andra typer av gradient descent. (Donges, 2018​)

3.2.3 Backpropagation

Backpropagation är en metod som tränar RNN genom att beräkna ​gradienten​ som behövs för att kunna beräkna vikterna i nätverket. Vikterna ger som tidigare nämnt

information om styrkan i kopplingen mellan noderna i nätverket. Genom att ändra vikterna i nätverket ändras även the cost function. (Nielsen, 2018 )

Backpropagation är en förkortning av “the backward propagation of errors”, vilket på svenska går att översätta till en sökning efter fel som går bakåt i nätverket. Detta sker genom

(11)

att felet beräknas vid outputen, för att sedan felsökas bakåt genom nätverkets lager. (DeepAI, 2018)

Backpropagation går därmed hand i hand med SGD, då backpropagation beräknar gradienten som SGD sedan använder vid optimeringen av det neurala nätverket, med syfte att minska the cost function. På så vis samarbetar de två metoderna för att träna RNN.

Figur 7. Backpropagation

4. Sammanfattning

Siris neurala nätverk är ett så kallat ​djupt ​neuralt nätverk, som även innefattar ett recurrent neural network.​ Det som menas med att nätverket är djupt är att det har flera lager, samt även ​dolda lager. ​Det är i dolda lager som neuronerna i nätverket tar in data. Denna data, information, är viktad och kommer i form av vektorer, vilket är en samling värden. Att informationen är viktad innebär att den ger en information om styrkan i den aktuella

kopplingen mellan noderna i nätverket som informationen transporteras mellan.

Det neurala nätverket för Siri är uppdelat i flera delar. Den första delen, som ska lystra efter aktiveringsfrasen “Hej Siri”, kallas AOP (always on processor) och innefattar en mindre neuralt nätverk. När systemet uppfattat aktiveringsfrasen åker datan med den

akustiska informationen vidare till systemets recurrent neural network. I denna del av nätverket är det nödvändigt med ett recurrent neural network då systemet här måste komma ihåg, och med fördel även kunna förutse vad användaren säger och kommer säga. Detta möjliggörs med ett recurrent neural network, till skillnad från nätverk som exempelvis ett feed forward neural network. För att detta ska fungera har ett RNN en form av long short term memory (LSTM). Genom ett LSTM kan RNN därmed med hjälp av vad användaren

(12)

sagt tidigare, ha lättare för att kunna förutse och svara på vad användaren kommer säga härnäst. På detta sätt tränas Siri för att ständigt bli bättre och bättre.

RNN tränas även med hjälp av sigmoid squashing function, stochastic gradient descent samt backpropagation. Sigmoid squashing function tränar nätverket genom att hålla det kontrollerat, samt genom att förbättra säkerheten för sannolikhetsgraden för kommande output. Stochastic gradient descent (SGD) samt backpropagation samarbetar med varandra för att optimera RNN. SGD har som mål att minimera nätverkets cost function vilket förenklat sätt kan jämföras med att minska nätverkets antal fel. Backpropagation beräknar gradienten som behövs för att kunna beräkna vikterna i nätverket via SGD. Genom att ändra vikterna i nätverket ändras också cost function.

På detta sätt aktiveras Siris neurala nätverk, förstår vad användaren ger för kommando, samt ger passande återkoppling genom att nätverket tränats med SGD och backpropagation.

(13)

Referenser:

Siri Team, Apple (2017). Hey Siri: An On-device DNN-powered Voice Trigger for Apple’s Personal Assistant. Hämtad 19-01-10 från: ​https://machinelearning.apple.com/2017/10/01/hey-siri.html

Russel, S., & Norvig, P. (2010) ​Artificial intelligence A modern Approach. (Third edition). New Jersey:

PearsonEducation, Inc.

Rohrer, B. [Brandon Rohrer]. (2017, 2/3). ​How deep neural networks work. Hämtad från:

https://www.youtube.com/watch?v=ILsA4nyG7I0

Goodfellow, I., Bengio, Y., Courville, A. (2016). ​Deep learning. MIT press. Hämtad från:

http://www.deeplearningbook.org/

Rohrer, B. [Brandon Rohrer]. (2017, 27/6). ​Recurrent Neural Networks (RNN) and Long Short-Term Memory (LSTM). Hämtad från: ​https://www.youtube.com/watch?v=WCUNPb-5EYI

Kang, N. (2017, 27/6). Multi-Layer Neural Networks with Sigmoid Function - Deep Learning for Rookies (2). Hämtad från:

https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rook ies-2-bf464f09eb7f

Shakhar, A. (2018, 14/4). Understanding The Recurrent Neural Network. Hämtad från:

https://medium.com/mindorks/understanding-the-recurrent-neural-network-44d593f112a2

Watson, D. (2017, 7/1). How are the cost functions for Neural Networks derived? Hämtad från:

https://www.quora.com/How-are-the-cost-functions-for-Neural-Networks-derived

Donges, N. (2018, 7/3). Gradient Descent in a Nutshell. Hämtad från:

https://towardsdatascience.com/gradient-descent-in-a-nutshell-eaf8c18212f0

Nielsen, M. (2018, Oktober). How the Backpropagation works. Hämtad från:

http://neuralnetworksanddeeplearning.com/chap2.html

DeepAI (2018). Backpropagation. DeepAI Inc. Hämtad från:

https://deepai.org/machine-learning-glossary-and-terms/backpropagation

References

Related documents

Lasse Nilsson säger att Luleå kommun höjer priset för ungdomskortet för bussar till 2 100 kronor.. Lars Wäppling säger att det senaste man kan åka till Bodsvedjan är

Det är tveksamt om Derkert från början hade bestämt sig för vilka personer hon skulle ha med, då man bland skisserna kan se flera personer som inte finns med i det slutliga verket,

Vi får dock i romanens fjärde del veta att Iris skrivit ut sig själv från sjukhuset efter endast tio dagar (s. Här gäller samma princip som för del två, där en händelse

Detta eftersom många spel skulle kunna dra fördel av tekniken då denna tillåter att artificiella neurala nätverk tillämpas på problem där dessa inte skulle vara lönsamma

ss 329–332 Diskussionen om hur tid representeras i nervsystemet, inte minst i form av korttidsminne, omedelbart minne och motoriska planer, är mycket intensiv i dag och i den

Att samla in data med Nintendo Wii kontrollen, träna start- och slutletarnätverken med en del av denna data och utvärdera på en annan del av denna data skulle vara intressant för

My own reading of Summer left me amazed by Hustvedt’s skilled, multifaceted work of art but also wondering why smart and tough women end up being diminished in heterosexual

Denna rapport jämför två nätverksarkitekturer för artificiella neurala nätverk vars uppgift är att realisera ett styrsystem för ett fordon som det även skall lära sig att