Neurala nätverk och språkigenkänning. Henrik Linnarsson. Linköping University

Relevanta dokument
Att programmera en Beethoven

SPEECH RECOGNITION USING ARTIFICIAL NEURAL NETWORKS. Linköpings Universitet 729G43 Artificiell Intelligens

ARTIFICIELLA NEURALA NÄT. MARCO KUHLMANN Institutionen för datavetenskap

729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann

729G43 Artificiell intelligens (2016) Maskininlärning 3. Marco Kuhlmann Institutionen för datavetenskap

NEURAL MASKINÖVERSÄTTNING

729G43 Artificiell intelligens / Maskininlärning 2. Marco Kuhlmann

729G43 Artificiell intelligens (2016) Maskininlärning 2. Marco Kuhlmann Institutionen för datavetenskap

ANN fk. Örjan Ekeberg. Framåtkopplade Nät. återkopplade nät. Olika arkitekturer. BackPropagation through Time. Kalman-Filter tekniker

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Statistisk mönsterigenkänning

Artificial)Intelligence) Taligenkänning)

Google Assistant & WaveNet

Artificiell Intelligens Lektion 7

Fuzzy Logic: Den oskarpa skarpheten

SELF- ORGANIZING MAPS

Enlagersnät Flerlagersnät Generalisering. Artificiella Neuronnät

1 Minkostnadsflödesproblem i nätverk

Taligenkänning. Sanna Aronsson sanar429 Artificiell Intelligens, HKGBB0

Modeller och simulering av språkprocessning

Tentamen i Digitalteknik, EITF65

1 LP-problem på standardform och Simplexmetoden

Regler för: getsmart Grön

Vektorer, matriser, nätverk - några elementa

Linköpings universitet

Artificiella Neuronnät

Datorlaboration :: 1 Problembeskrivning ::

Liswi948, Lisa Widerberg, liswi948 Fördjupningsarbete Linköpings Universitet 729G43, Artificiell Intelligens

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping

Regression med Genetiska Algoritmer

Lösningar till SF1852 Optimeringslära för E, 16/1 08

Ett Neuralt Nätverk Tittar På Kläder

Sub-symbolisk kognition & Konnektionism. Kognitionsvetenskaplig Introduktionskurs (729G01) Mats Andrén,

Användarhandledning Version 1.2

Word2Vec. Högkvalitativa vektorrepresentationer av ord tränat på stora mängder data. Innehåll LINKÖPINGS UNIVERSITET. 1. Inledning...

Algebra I, 1MA004. Lektionsplanering

Föreläsning 7. Felrättande koder

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

FAKTAAVSNITT: ARBETSMINNETS UTVECKLING OCH KOPPLING TILL ANDRA FÖRMÅGOR

1 De fyra fundamentala underrummen till en matris

Gränssnitt för FakeGranska. Lars Mattsson

SF1624 Algebra och geometri

Registerforskning Oktober 2018, Stockholm City Conference Centre. Möjligheter med Artificiell Intelligens inom registerforskningen

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

1(15) Bilaga 1. Av Projekt Neuronnätverk, ABB Industrigymnasium, Västerås Vt-05

Dagens föreläsning Programmering i Lisp Fö 5

Manual för ett litet FEM-program i Matlab

Signalbehandling Röstigenkänning

Kompletterande lösningsförslag och ledningar, Matematik 3000 kurs A, kapitel 4. b) = 3 1 = 2

Linjära ekvationssystem

Kandidatuppsats. Jämförelse mellan neurala nätverk baserad AI och state-of-the-art AI i racing spel. Simon Karlsson, Christopher Jensen

HKGBB0, Artificiell intelligens

SHAZAM! En!smart!musiktjänst! Linha108! Fördjupningsarbete!729G43!

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Dagens ämnen. Linjära ekvationssystem: Successiv elimination Vektorer Definitionen Grundläggande räkneoperationer Bas och koordinater Ortsvektorer

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Interaktiva berättelser med Twine

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581

SKRIVNING I VEKTORGEOMETRI

Inlärning utan övervakning

Taligenkänning med fördjupning på Hidden Markov Models

TMV166 Linjär algebra för M. Datorlaboration 2: Matrisalgebra och en mekanisk tillämpning

729G43 Artificiell intelligens Maskininlärning. Arne Jönsson HCS/IDA

Kognitiv Modellering

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Objektorienterad Programmering (TDDC77)

Addition och subtraktion generalisering

5B1817 Tillämpad ickelinjär optimering. Metoder för problem utan bivillkor, forts.

729G43. Neurala faltningsnät MASKINSYN PÅ SVENSKA VENDELA FOLKER ÅKERLIND

Vad är Artificiell Intelligens (AI) Olika typer av AI och deras användningsområden Innovation med hjälp av AI Framtiden och etiska frågeställningar

Fördjupningsarbete HT 2012 FUZZY LOGIC

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

BAS A01 Baskurs för universitetsstudier!

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Perceptron som ordklasstaggare: ett fördjupningsarbete i 729G43 -Artificiell Intelligens

Föreläsning 9: NP-fullständighet

Artificiell intelligens II, 729g11 Projekt HT-11. Taligenkänning. Nina Knez

Programmeringsteknik med C och Matlab

Geometriska vektorer

SF1624 Algebra och geometri Lösningsförsag till modelltentamen

1 Duala problem vid linjär optimering

TAL OCH RÄKNING HELTAL

5B1146 med Matlab. Laborationsr. Laborationsgrupp: Sebastian Johnson Erik Lundberg, Ann-Sofi Åhn ( endst tal1-3

Neurala nätverk vid bildsökning

SF1624 Algebra och geometri Lösningsförslag till modelltentamen DEL A

Finns det över huvud taget anledning att förvänta sig något speciellt? Finns det en generell fördelning som beskriver en mätning?

Vad behövs för att skapa en tillståndsrymd?

A B C D E F A B C D E F (3) Svar: Tabellen ger grafen:

Ekvivalensrelationer

Självkoll: Ser du att de två uttrycken är ekvivalenta?

kl Tentaupplägg

MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht Block 5, översikt

Algoritmer, datastrukturer och komplexitet

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation

Lösningsförslag till tentamen i SF1861 Optimeringslära för T. Torsdag 28 maj 2010 kl

Korttidsminne-arbetsminne

Linjär Algebra, Föreläsning 2

1 Ortogonalitet. 1.1 Skalär produkt. Man kan tala om vinkel mellan vektorer.

Transkript:

Neurala nätverk och språk Henli807!1 Neurala nätverk och språkigenkänning Henrik Linnarsson Linköping University

Neurala nätverk och språk Henli807!2 RNN, LSTM och språkigenkänning Inledning Idag är språkigenkänning något vi tar för givet och något som får allt större plats i vår vardag i och med att fler enheter blir kompatibla med dem. Varje smartphone är utrustad med en så kallad assistent som kan interageras med via talat språk, exempel på assistenter av detta slag är Siri, Google Assistent, Cortana och Alexa. Grunden för att dessa assistenter ska fungera är att de kan höra samt förstå vad användaren säger till dem. Detta kallas för språkigenkänning och denna artikel förklarar hur det fungerar med hjälp av neurala nätverk. RNN och LSTM Kort om neurala nätverk Neurala nätverk består av perceptroner, dessa är cellerna i nätverket genom vilka all data passerar. Varje perceptron tar emot data, input, och sänder ut data, output. Input som ges till en perceptron kommer har formen av en vektor vilket är en samling värden (Rohrer, 2017). Varje värde tas emot via en vikt som multiplicerar det givna värdet. Produkterna från samtliga inputvärden och vikter summeras och ifall denna summa överstiger ett tröskelvärde som perceptronen har så sänds en output, annars sker inget alls. Detta tröskelvärde definieras av en tröskelfunktion, även kallas aktiveringsfunktion, vilken kan se ut på många olika vis. Detta beskrivs mer i detalj senare. Det neurala nätverket består av många perceptroner av detta slag och ofta flera lager utav dem, ett inputlager, ett outputlager och något antal dolda lager mellan in- och outpulagret. Feedforward och varför det inte räcker till Ett neuralt nätverk som tar in information och returnerar någon ny information efter att informationen passerat genom nätverket kallas för feedforward-nätverk (FF). Med dessa kan vi utifrån given data få en output från nätverket som på något vis beskriver input som blev given nätverket. Detta kan handla om att exempelvis känna igen en handskriven bokstav som den bokstav det är. Vi kan använda FF för att uttala oss om det rådande tillståndet vid tidpunkt t för den variabel v som vi är intresserade av utifrån den input vi har. Dock så kan vi inte använda oss av FF för att förutse ett kommande tillstånd vid tidpunkt t+1 utifrån tidigare tillstånd (edureka!, 2017). Den output som vi får utifrån vår input är oberoende av output från tidigare tillstånd, dessa har inget med varandra att göra. Således kan vi inte utifrån ett ord i en mening förutse det kommande ordet i meningen. För att göra detta behövs en annan typ av nätverk än FF.

Neurala nätverk och språk Henli807!3 Recurrent Neural Network (RNN) Recurrent Neural Network (RNN) tillåter oss att förutse tillstånd utifrån indatan i ett tidigare tillstånd. Vi kan utifrån indatan i tillstånd t1 förutse tillståndet i t4 eller något annat tillstånd (Raval, 2017b; Rohrer, 2017). I ett RNN så behålls output från föregående tillstånd, t-1, och används som input i den aktuella tidpunkten t tillsammans med eventuell ny data, vilket i sin tur ger en ny output. På detta vis fortsätter nätverket att generera output med föregående output som input så länge som vi önskar det. Den nya informationen tillsammans med informationen från föregående tidpunkt ges till nätverket i form av vektorer. Bild 1. Recurent neural network Träna RNN Vi vill träna vårt RNN för att få det att generera korrekt output och minimera eventuella fel. När vi tränar nätverket justeras dess vikter så att outputen från nätverket matchar den förväntade outputen, vilken kan vara angiven i en yttre standard som ett facit. Denna träning av nätverket görs med hjälp av metoden gradient descent och backpropagation. Träningen görs för varje tidssteg och kallas därför för backpropagation through time (BTT). När vi använder oss av gradient descent så räknar vi ut felet för vårt nätverk, detta är skillnaden mellan det värde nätverket genererade och det förväntade värdet. Vi får detta värde genom att subtrahera det förväntade värdet ifrån det som nätverket gav. Vi vill alltid ha ett positivt felvärde och kvadrerar därför denna differens. e = (Actual output - Model output) ^ 2 = error

Neurala nätverk och språk Henli807!4 I gradient descent vill vi se hur stort fel som generas beroende på värdet av vikten. När vi gör gradient descent så utgår utgår vi ifrån felfunktionen som visar hur stort fel som genereras av nätverket givet de viktvärden som råder. För att förstå hur detta fungerar börjar vi med att kolla på en nod. Inledningsvis sätter vi ett slumpmässigt värde på vikten hos noden som ska tränas och ser sedan hur pass stort felet är i slutet av nätverket. Felet säger oss alltså hur stort fel vi får ifall noden har den vikten som den har. När vi sett storleken på felet för ett visst viktvärde så räknar vi ut gradienten för den punkten i felfunktionen, vilket görs genom att räkna ut tangenten i punkten. Gradienten beskriver förändringsgraden hos punkten vi räknar på. Är värdet på felet stigande, sjunkande eller stillastående? I vilken riktning är storleken på felet påväg om vi ökar vikten? För att hitta det lägsta möjliga felet går vi i motsatt riktning av gradienten. Det innebär att om gradienten är positiv i den aktuella punkten, att felet blir större ju högre värde vikten har, så undersöker vi hur stor felet är för ett lägre värde på vikten. Och om gradienten är negativ, felet blir mindre ju högre vikt man har, så undersöker vi felvärdet för en punkt med högre värde på vikten. (de/dw) = förändring hos felet i förhållande till förändring i vikten n = inlärningsparameter/steglängdsfaktor w = vikten e = (Actual output - Model output) ^ 2 = felet (error) < Kvadratfelet Δw = n(de/dw) = vad vikten ska uppdateras med w = w + Δw = uppdatering av vikten Bild 2. Backpropagation genom nätverket

Neurala nätverk och språk Henli807!5 Bild 3. Gradient descent Varje nod påverkas av de föregående noderna och påverkar således de noder som ligger efter sig. För att veta hur mycket felet påverkas av att en specifik vikt ändras så räknar vi ut gradienten för alla noder från outputlagret tillbaka till den nod vars vikt vi ändrat och multiplicerar dessa med varandra. Gradient descent börjar med outputvärdet i nätverket och jobbar sig sedan bakåt i nätverket nod för nod (Raval, 2017a). När vi tränar nätverket börjar vi i det yttersta lagret av noder, outputlagret och justerar dess vikter. Vi går sedan bakåt i nätverket, backpropagate, och justerar vikterna där. Eftersom noderna i nätverket påverkar varandra är det viktigt att inte förändra vikterna drastiskt utan det behöver göras försiktigt och träningen av nätverket kan ta många tusen rundor för att nå lägsta möjliga felvärde. Problem för RNN och backpropagation Ett problem för backpropagation är att när det görs över många tidssteg så kan gradienten till slut bli oerhört liten vilket innebär att vikten knappt uppdateras alls. När vikten inte längre kan uppdateras ordentligt blir det svårt att träna nätverket och nå ett lägre felvärde. Detta problem kallas för vanishing gradient

Neurala nätverk och språk Henli807!6 (edureka!, 2017). Detta fel händer inte bara vanliga FF där backpropagation används utan även RNN. Orsaken är de så kallade squashing functions som tar emot värden och beroende på värdets storlek returnerar ett nytt värde inom ett betydligt mindre spann, ofta mellan 0 och 1 eller -1 och 1. När detta görs och många steg i nätverket multipliceras med varandra så kan gradienten till slut vara näst intill icke existerande. Ett sätt att lösa detta på för RNN är att använda en typ av RNN som kallas Long Short Term Memory (edureka!; Gibiansky, 2014). RNN har även problem med att minnas saker över längre tid. Den kan ta in information från föregående tidpunkt för att göra en bedömning i rådande tidpunkt, men när informationen som är relevant för den aktuella tidpunkten ligger långt bak i tiden så är inte vanliga RNN till hjälp. Detta kallas för problem of long term dependencies (Colah, 2015). Det kan sägas att RNN bara har ett korttidsminne, men eftersom vi ofta vill basera vår output på mer än bara det föregående tillståndet så behöver vi en annan typ av nätverk. Även detta problem kan lösas med LSTM. Long Short Term Memory (LSTM) Long Short Term Memory (LSTM) är en form av RNN men gör det möjligt att lösa problemet med kort minne och problemet med vanishing gradient. En LSTM-cell har till skillnad från en RNN-cell flera komponenter och med hjälp av dessa kan vi åstadkomma fler funktioner än vi annars kunnat göra. Det är tack vare dessa olika interna delar som LSTM kan hålla saker i minnet över längre tid. Innan vi går igenom de olika delarna av LSTM-cellen är behöver vi förstå hur information är representerad i cellen och hur den hanteras i de olika stegen. Vektorer I RNN och LSTM representeras all information med hjälp av vektorer som beskriver olika tillstånd hos variabler. En vektor är inget mer än en samling av värden (Rohrer, 2017). Dessa värden kan beskriva sannolikheter för saker, intensitet, styrka, riktning, vilket av olika alternativ som är sant/inte sant (ex. vilken veckodag det är. One hot coding), och så vidare (Rohrer, 2017; Russel & Norvig, 2010; Serrano, 2017). Vektorerna används i nätverket för att sända vidare information och de olika delarna av cellen interagerar med denna information på olika vis, de kommer bland annat att adderas och multipliceras med varandra. Additionen av vektorer går till så att elementen i de vektorer som ska adderas blir adderade till det motsvarande värdet på elementet i den andra vektorn, element för element. Ex. addition A = [1, 2, 3] B = [4, 5, 6]

Neurala nätverk och språk Henli807!7 A + B = [1+4, 2+5, 3+6] = [5, 7, 9] Vid multiplikationen går det till på liknande vis, element multipliceras med sin motsvarande element en den andra vektorn, element för element. Ex. multiplikation C = [1, 0,5, 0] D = [1, 1, 0,7] C x D = [1x1, 0,5x1, 0x0,7] = [1, 0,5, 0] Cell state och Hidden state Ytterligare ett centralt begrepp för LSTM är cell state vilket är den information som sänds från cell till cell och på vilken de olika funktionerna appliceras. Cell state kan ses som långtidsminnet i algoritmen, det är här som information bevaras och förändras över tid (Raval, 2017b). Informationen är som nämnt representerad med vektorer. Hidden state är också en output från varje cell men denna innehåller inte all information som behövs framöver likt cell state och kan istället ses som arbetsminnet för nätverket (Raval, 2017b). Här finns saker som är relevanta just för stunden. Gates Vår LSTM-cell består av tre huvudsakliga delar, ofta kallade gates (egen översättning till svenska: portar). Varje gate fyller en specifik funktion i cellen och tillsammans möjliggör de att cellen kan minnas information över lång tid, avgöra vad som inte behöver minnas och ge output som antas stämma för stunden. Varje gate består av multiplikation av elementen i vektorer som beskrivet tidigare vilket möjliggör att vissa värden stängs ute medan andra släpps igenom, därav namnet gate (Raval, 2017b; Rohrer, 2017). Dessa gates är i sig själva egna nätverk bestående av ett enda lager, en enda perceptron, som tränas för att genomföra dess funktion. Varje gate har en vikt som justeras för att minimera felet från gaten vilket görs via gradient descent. Gate 1. Forget gate I forget gate avgörs det vad som ska lagras i cellens långtidsminne, cell state, och vad som inte ska minnas (Raval, 2017b). Gaten består av en activation function som avgörs nivån av aktivering utifrån inputsignalen och här används en variant som heter sigmoid function, vilket är en typ av squashing function. Vad en squashing function gör är ett en tar ett värde som en input och returnerar ett värde som befinner sig mellan två bestämda värden för att på så vis normalisera och håller värden under kontroll så att inget växer sig för stort (Rohrer,

Neurala nätverk och språk Henli807!8 2017). Sigmoidfunktionen specifikt returnerar värden mellan 0 och 1. Ju större ett värde är desto närmre 1 kommer det returnerade värdet att vara och ju mindre det är desto närmre 0 kommer det att vara. Denna funktion att få värden mellan 0 och 1 möjliggör en slags bedömning för vad som ska minnas och vad som ska glömmas bort. Om något får värdet 0 kommer det att bli helt bortglömt och om något får 1 så kommer det att minnas helt och hållet. När värdena passerat genom sigmoidfunktionen så multipliceras de med värdena i cell state vilket gör att cell state kommer att uppdateras i enlighet med vad som ska minnas alternativt glömmas. De element som multipliceras med 0 kommer som förklarat tidigare att glömmas helt medan de som multipliceras med 1 förblir oförändrade. wf = Vikt ht-1 = Output från föregående cell state xt = Den nya informationen bt = Bias σ = Sigmoid ct-1 = Cell state ft = σ(wf [ht-1, xt] + bt) = Vad som returneras av sigmoidfunktionen. ft x ct-1- = Uppdatering av cell state genom multiplicering av ft och ct-1. Gate 2. Input gate Input gate hanterar vilken ny information som ska tilläggas till cell state utifrån föregående output och den nya informationen. Denna funktion består av två stycken squashing functions, en sigmoidfunktion precis som i forget gate men även en Tanh function vilken likt sigmoid normaliserar värden men istället för att returnera värden mellan 0 och 1 så returnerar denna värden mellan -1 och 1. Värdena från Tanhfunktionen och simgoidfunktionen multipliceras med varandra för att sedan adderas till cell state som nu uppdateras från att vara ct-1 x ft till att vara ct (se bild 3.), det gällande tillståndet för stunden vilket kommer att sändas vidare till nästa cell. Input gate kallas även för save gate eftersom att den avgör vilken information som ska spara till cell state och vilken som inte ska det. it = σ(wi[ht-1, xt] + bi)

Neurala nätverk och språk Henli807!9 Gate 3. Output gate Den tredje gaten är output gate vilken bedömer vad som kommer att returneras som output ur cellen. I detta steg multipliceras informationen från cell state som passerat genom en tanhfunktion med information som passerat genom en sigmoidfunktion. Sigmoidfunktionen här har i uppgift att bedöma som ska ges som output i hidden state. Medan cell state är långtidsminnet där allt vi vill minnas finns sparat så är hidden state snarare ett arbetsminne där vi har det som för stunden är relevant. Cell state och hidden state utgör cellens två output. ot = σ(w[ht-1, xt] + bo) Bild 4. LSTM-cell LSTM och språkigenkänning LSTM används för många olika syften och appliceringsområden där man arbetar med sekvenser av data och vill att nätverket ska kunna minnas saker från tidigare. Eftersom LSTM kan minnas saker över längre tid så presterar de bättre än vanliga RNN (Raval, 2017a). Bland annat används LSTM för språkigenkänning, alltså för att avgöra vad som muntligt sägs. För att göra detta behövs dock några till delar som kompletterar LSTMcellerna. Bidirectional RNN Eftersom att LSTM kan hålla information i minnet och på så vis minnas kontexten så är den lämplig vid språkigenkänning eftersom den vet bättre vad som troligtvis kommer att

Neurala nätverk och språk Henli807!10 sägas i en mening utifrån vad som har sagts innan. Tänker vi oss ett exempel där en man berättar om sin resa till Spanien och i sin avslutande mening säger: Jag talar nu helt flytande så kan ett LSTM-nätverk minnas kontexten som är Spanien och då förstå att det är ordet Spanska som söks. Dock så påverkas inte bara sannolikheten för vad som sägs vid tidpunkt t av vad som har sagts innan utan det som sägs efter påverkar också sannolikheten för vad som sägs vid t (Gibiansky, 2014). För att ta nytta av detta används så kallade bidirectional RNN. Dessa är nätverk som till går åt motsatt håll i tiden. Från det senaste i sekvensen till det första. De två nätverket gående åt var sitt hål interagerar inte med varandra vilket innebär att de inte påverkar varandra. Dock så är de båda med och påverkar vilket output som ges, alltså påverkas outputen i tidpunkt t både av vad som har sagts och vad som kommer att sägas (Graves, Mohamed, & Hinton). Och tack vare att vi använder LSTM kan vi använda beroenderelationer som sträcker sig långt över tid för att avgöra vad som är det mest sannolikt korrekta outputen. Akustisk model & lingvistisk model För att kunna bedöma vad som sagts behövs även en akustisk modell. Funktionen som en akustisk modell fyller är att den kan känna igen olika fonem, den minsta ljudbyggstenen av ett ord. Modellen kan ta emot en signal och avgöra vilket fonem det är den har uppfattat (Gibiansky, 2014). Detta görs genom ett eget neuralt nätverk vilket även behöver tränas. Den lingvistiska modellen kan utifrån de fonem som den akustiska modellen uppfattat tolka om det till de tecken som används i det mänskliga språket. Detta behövs eftersom fonemen i sig inte säger vilka ord det är som har uppfattats, bara vilka olika ljud som har uppfattats. Den lingvistiska modellen klassificerar alltså fonemen till språkliga enheter (Gibiansky, 2014). Sammanfattning Neurala nätverk tillåter oss att sända in information i ett nätverk för att få ut output av en visst slag, exempelvis tal till text eller bild till namn. Dessa nät kan tränas för att prestera bättre och detta görs med backpropagation och gradient descent. När vi vill kunna lagra information i minnet i nätverket för att kunna göra kommande bedömningar så fungerar inte ett vanligt feedforward-nätverk utan vi använder oss istället av recurrent neural networks där outputen från den föregående tidpunkten ht-1 används som input tillsammans med ny information i det aktuella tidpunkten ht. RNN får problem med vanishing gradient vilket orsakas av att man multiplicerar gradienten genom alla noder vilket kan leda till att värdet blir väldigt litet och på så vis hindrar att noderna kan tränas och uppdatera sina vikter. RNN lider även av att inte kunna hålla information i minnet över längre tid och använda sig att beroenderelationer som sträcker

Neurala nätverk och språk Henli807!11 sig över lång tid. Dessa problem med RNN kan man lösa med LSTM som är en variant av RNN fast med fler interna funktioner. De interna funktionerna i LSTM utgörs av så kallades gates som hanterar var sin funktion, minne, input och output. I samband med dessa gates finns aktiveringsfunktioner av typen squashing functions som tar in värden och returnerar nya värden mellan 0 och 1 alternativt -1 och 1. Träning av LSTM ändrar på vikterna i nätverket så att cellerna lär sig vad som ska glömmas, kommas ihåg, tas emot och sändas vidare. Att träna nätverket görs genom att försiktigt uppdatera vikterna med gradient descent och det görs många tusen gånger för att få vikterna rätt inställda. LSTM används inom många områden bland annat språkigenkänning där nätverket utgör basen för ett nätverk som kan omvandla talat språk till text. Detta görs tillsammans med bidirectional recurrent neural networks, en akustisk och en lingvistisk modell.

Neurala nätverk och språk Henli807!12 Referenser Colah, C. (2015). Understanding LSTM Networks. Retrieved from http://colah.github.io/ posts/2015-08-understanding-lstms/ edureka! (Producer). (2017, 22 aug). Recurrent Neural Networks (RNN) RNN LSTM Deep Learning Tutorial Tensorflow Tutorial Edureka. Retrieved from https:// www.youtube.com/watch?v=y7qrile- Zlc&index=1&list=PLYg58GLuMZLwkBef6nozpwMDGeH12byEw&t=561s Gibiansky, A. (2014). Speech Recognition with Neural Networks. Retrieved from http:// andrew.gibiansky.com/blog/machine-learning/speech-recognition-neural-networks/ Graves, A., Mohamed, A.-r., & Hinton, G. Speech recognition with deep recurrent neural networks. Retrieved from http://www.cs.toronto.edu/~fritz/absps/rnn13.pdf Raval, S. (Producer). (2017a, 2 apr). Backpropagation in 5 Minutes. Retrieved from https:// www.youtube.com/watch?v=q555kfifucm Raval, S. (Producer). (2017b, 9 aug). LSTM Networks - The Math of Intelligence (Week 8). Retrieved from https://www.youtube.com/watch? v=9zhrxe5pqgy&index=8&list=plyg58glumzlwkbef6nozpwmdgeh12byew&t= 1451s Rohrer, B. (Producer). (2017, 27 jun). Recurrent Neural Networks (RNN) and Long Short- Term Memory (LSTM). Retrieved from https://www.youtube.com/watch? v=wcunpb-5eyi&index=2&list=plyg58glumzlwkbef6nozpwmdgeh12byew& t=535s Russel, S. J., & Norvig, P. (2010). Artificial Intelligence - A modern approach (Third ed.). New Jersey: Pearson Education. Serrano, L. (Producer). (2017, 18 aug). A friendly introduction to Recurrent Neural Networks. Retrieved from https://www.youtube.com/watch? v=unmqtionrfg&index=4&list=plyg58glumzlwkbef6nozpwmdgeh12byew