Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Linköpingsuniversitet729G43
NEURALMASKINÖVERSÄTTNING
Moa Wallin moawa859
Moa Wallin moawa859 Inledning
Manuell översättning är en mycket tidskrävande process som kräver stor kunskap och bred
kompetens och behovet av översättning är större än vad mänskliga översättare någonsin skulle
kunna hinna med. Att istället låta en maskin sköta översättningen underlättar avsevärt, inte
minst då man är i behov av en snabb översättning. Idag erbjuds en uppsjö av olika
översättningsprogram och Googles kända översättningstjänst Google Translate har
exempelvis numera stöd för över 100 språk och nyttjas av miljontals människor dagligen.
Utöver att hjälpa människor att förstå information på främmande språk i vardagen, har även
maskinöversättning en kommersiell betydelse. Det blir allt viktigare för företag och liknande
att kunna tillhandahålla information på flertalet språk i takt med att nationaliteter och
språkkunskaper hos tillgängliga läsare breddas och att kunna erbjuda användare ett gränssnitt
eller en instruktionsmanual på deras egna modersmål kan väga tungt i att locka människor till
att nyttja en produkt.
Att hitta en maskinöversättningsmetod som genererar korrekta översättningar är alltså någon
eftersträvansvärt, men som tyvärr är mycket svårt att uppnå. Den senaste ansatsen kring
maskinöversättning nyttja neurala nätverk och har redan på mycket kort tid ersatt tidigare
system hos bland annat stora företag som Google och Facebook.
Terminologi
Under rapporten förekommer ett antal termer som läsaren bör vara införstådd i för att kunna
tillägna sig övrig information och fakta i rapporten. Nedan presenteras därför en mängd
termer och en kortare tillhörande förklaring för att underlätta för läsandet.
MT: abbreviation av maskinöversättning (eng. machine learning).
Deep learning: en typ av maskininlärningsmetod som använder neurala nätverk med flera
dolda lager.
Korpus (pl. korpora): en stor mängd språkliga data, antingen skriftlig text eller transkriberat
tal. I denna uppsats refereras dock endast till korpora med skriven text. En korpus som
innehåller texter på fler än ett språk kallas för en parallell korpus (Weisser, 2016).
Sequence-to-sequence learning (seq2seq): handlar om att träna modeller att omvandla
sekvenser i en domän till sekvenser i en annan domän. Tekniken har främst används inom
Moa Wallin moawa859 maskinöversättning och i detta fall representerar de två domänerna ett källspråk respektive ett
målspråk.
Upplägg och avgränsningar
Följande rapport ämnar redogöra för de grundläggande principerna som ligger bakom neural
maskinöversättning. Då flera olika angreppssätt existerar inom ansatsen kommer denna
rapport att avgränsas till att endast innefatta neural maskinöversättning med vanilla recurrent
neural networks av typen vanilla long short-term memories.
Först ges läsaren en kort bakgrund över tidigare tekniker inom maskinöversättning. Därefter
ges en översiktlig beskrivning av principen bakom neural maskinöversättning för att sedan gå
djupare in i de olika delområdena som bygger upp ett neuralt maskinöversättningssystem.
Slutligen has för avsikt att koppla samman teorierna och ge en diskussion kring ämnet i
allmänhet.
Moa Wallin moawa859 Tidigare maskinöversättningssysten
Maskinöversättning var ett av de tidigare tilltänkta användningsområdena för datorer, men
utvecklingen av fungerande maskinöversättningssystem har dock varit långt ifrån
bekymmersfri (Hutchins, 2007). Det visade sig vara svårare än vad som först hade förväntats
att skapa ett system som generera en acceptabel översättning av en text mellan två språk, och
det är inte förrän det senaste decenniet som maskinöversättningen på riktigt fått sitt uppsving
(Russel & Norvig, 2014).
En av de tidiga teknikerna för maskinöversättning var den regelbaserade översättningen
(RBMT). Denna teknik baseras på lexikon och manuellt utvecklade lingvistiska regler som
systemet sedan översätter en text utifrån. Fördelarna med RBMT är att tekniken inte kräver
tillgång till parallella korpora. En annan fördel är att utvecklarna av systemet har total kontroll
och enkelt kan lokalisera eventuella buggar och förstå vad som orsakar ett fel. Problemet med
RBMT är att mänskligt språk inte alltid följer bestämda regler utan det förekommer massvis
med undantag och dialektala variationer – för att inte tala om den påverkan kontexten har för
betydelsen av ett ord. Den regelbaserade översättningen producerar därmed ofta undermåliga
översättningar som saknar språkligt flyt och som i slutändan ändå kräver mänskligt
redigerande.
Sedan flera år tillbaka har istället den dominerande maskinöversättningstekniken varit den
statistiska maskinöversättningen (SMT). Som namnet antyder använder sig SMT av statistik
och sannolikheter, istället för grammatiska regler, för översättning. Genom att träna
probabilistiska modeller efter statistik i stora parallella korpora kan ett SMT-system avgöra
vilken översättning som mest troligt är korrekt. Denna typ av översättning är dock alltså
beroende av tillgång till mängder av parallella korpora och för de stora språken, så som
engelska och spanska, är det oftast inte ett problem att finna parallella översättningar. För
många andra språk existerar det dock helt enkelt inte tillräckligt med texter för att producera
fullgoda översättningar genom SMT (Lopez, 2008).
Under de senaste åren har stora förändringar skett inom MT i och med att den nya tekniken
neural maskinöversättning (NMT) anammats av flertalet stora företag. Den statistiska
maskinöversättningen framstår fortfarande vara dominant, men brukandet av NMT verkar
ständigt ökar i popularitet och efterfrågan, och är således ett mycket aktuellt ämne.
Moa Wallin moawa859
Neural maskinöversättning (NMT)
Övergripande beskrivning
Tekniken hos NMT frångår den tidigare dominerande statistiska ansatsen och använder
istället deep learning med stora neurala nätverk för att möjliggöra översättning mellan olika
språk. De neurala nätverken i NMT bildar en så kallad encoder-decoder-arkitektur bestående
av recurrent neural networks. Med encoder-decoder-arkitektur menas att NMT-systemet
innefattar en kodare (eng. encoder) som läser in en källsats och summerar denna genom att
skapa en vektor bestående av en sekvens med unika siffror som representerar satsens mening,
dess innebörd. En kodare skapar alltså en enda vektor som output ur en input-sekvens. Denna
vektor går sedan igenom en avkodare (eng, decoder) som i sin tur tar in vektorn som input
och avkodar till orginalsatsen igen. Men istället för att avkoda satsen på källspåket igen tränas
istället en avkodare att avkoda på ett annat språk istället, ett så kallat målspråk. En avkodare
producerar alltså en output-sekvens ur en enskild input-vektor (Stanford University School of
Engineering, 2017).
Som nämnt används så kallade recurrent neural networks (RNN), både som kodare och
avkodare. Dessa RNN förekommer dock även i sin tur i olika former, så som long short-term
memory (LSTM) eller gated recurrent unit (GRU). Denna uppsats kommer dock endast att
fokusera på NMT där LSTM används och övriga metoder kommer således att utelämnas.
För att förstå principerna bakom tekniken hos ett NMT och det ovan beskrivna krävs en del
kunskaper som ämnas klargöras i kommande stycken.
Allmänt om neurala nätverk
Den mänskliga hjärnan innehåller flera miljarder neuroner som genom förbindelser till
varandra skapar ett komplext nätverk. Ett enskilt neuron utför endast en mycket enkel uppgift
genom att reagera på en input-signal, men tillsammans kan ihopkopplade neuroner utföra
oerhört komplexa uppgifter på väldigt kort tid. Anslutningen mellan neuroner kallas synaps
och har till uppgift att föra vidare elektrokemiska signaler. Då ett neuron mottar en total signal
som är större än synapsens tröskelvärde leder det till att neuronen avfyras och sänder vidare
den elektrokemiska signalen till dess grann-neuroner och så vidare (Zou, Han & So, 2008).
Moa Wallin moawa859 Det var med vårt biologiska nervsystem som inspiration som de så kallade artificiella neurala
nätverken (hädanefter ANN) utvecklades. Likväl bör uppmärksammas att ANN för den
sakens skull inte utgör en modell av den mänskliga hjärnan. Hjärnans komplexitet är alltför
stor för att dagens artificiella neurala nätverk skulle kunna efterlikna alla dess funktioner.
ANN är däremot ett mycket användbart och starkt verktyg inom artificiell intelligens, som
genom träning på stora mängder data kan hitta mönster och på så sätt lära sig lösa problem
(Russell & Norvig, 2014).
Som motsvarighet till hjärnans neuroner består ANN av ett antal noder som är ordnade i
skilda lager. Det förekommer alltid minst två stycken lager - ett för input och ett för output.
För att lösa okomplicerade uppgifter kan ett enkelt nätverk bestående av endast dessa två
lager räcka, men de flesta uppgifter kräver dock även att ett eller flera så kallade dolda lager
införs mellan input-lagret och output-lagret. Ett ANN med flera dolda lager kallas för ett djupt
neuralt nätverk (DNN) (se figur 1) och krävs för maskinöversättning (Russell & Norvig,
2014). Precis som namnet avslöjar går det inte att observera vad som sker i de dolda lagren,
utan de utgör vad som brukar benämnas ”en svart låda”.
Figur 1. Exempel på visualisering av ett djupt neuralt nätverk (Nielsen, 2015).
Som synes i figur 1 binds noderna i ett ANN samman med hjälp av länkar som har till uppgift
att föra vidare en aktivering. Varje länk mellan två noder har alltså även en tillhörande vikt,
ofta kallad parameter, som avgör styrkan hos förbindelsen. En nod mottar därmed flera olika
input från närliggande noder och ger varje en vikt som förändras då nätverket lär sig. Denna
Moa Wallin moawa859 förmåga att kunna korrigera parametrarna under träningsperioden är ett av ANNs
nyckelelement.
Likt hos de biologiska neurala nätverken existerar även en tröskel i form av en
aktiveringsfunktion som avgör huruvida signalen ska sändas vidare eller inte – alltså hur stor
summan av alla vikter måste vara för att noden ska föra vidare informationen till
nästkommande lager. Aktivering i ett lager avgör följaktligen aktivering i nästa lager.
Aktiveringsfunktionen kan vara en hård tröskelfunktion där neuronen genererar en positiv
signal då summan överstiger 0 och en negativ signal då den är mindre än 0 – alltså:
f(x)=0()* < 01()* ≥ 0
Den aktiveringsfunktion som dock främst används inom maskinöversättning är den logistiska
funktionen, även kallad sigmoidfunktion (se figur 2.) (Russell & Norvig, 2012).
Figur 2. Den logistiska funktionen (Russell & Norvig, 2012).
Till skillnad från den hårda tröskelfunktionen har den logistiska funktionen som synes en
mjukare kurva och följaktligen ett mer kontinuerligt spann av värden mellan 0 och 1. Istället
för att ha 0 som en tröskel för aktivering används följande matematiska funktion:
f(x)= .
./012
Detta innebär att allt eftersom aktiveringen x går mot -∞ går funktionen mot 0 och vice versa
då x går mot +∞ så går funktionen mot 1. Detta ger den logistiska funktionen fördelen i att
den är differentierbar överallt vilket förenklar inlärning av det neurala nätverkets vikter.
Moa Wallin moawa859 Denna rapport kommer inte att gå djupare in på hur denna träning går till men kort sagt
används bakåtpropagering (eng. back propagation) från output-lagret och bakåt i nätverket
där vikterna med hjälp av gradientsökning (eng. gradient descent) modifieras för att minska
felet och för att träna ett neuralt nät att korrekt kunna klassificera input (Russell & Norvig,
2012).
Ytterligare en aktiveringsfunktion som ibland används inom NMT, och som således
förekommer senare i denna rapport, är den hyperboliska funktionen tangens hyperbolicus
(hädanefter tanh). Istället för mellan 0 och 1, som hos den logistiska funktionen, har tanh ett
spann på -1 till 1.
Vad en nod i ett ANN sedan genererar för output beräknas kort sagt genom att multiplicera
den input som mottas i input-lagret med en viktvektor, summera resultaten och applicera en
aktiveringsfunktion på summan (se figur 3.).
Figur 3. En enkel modell av en nod i ett ANN.
Den matematiska funktionen för detta är följande:
y=f(*5*65+b)
x representerar alltså input och w är vikterna. f är aktiveringsfunktionen. I ekvationen
betecknat b och även i figur 3 förekommer något som kallas bias. Vad denna bias gör är att
lägga till ett värde i summan av input som låter oss förflytta en funktion vertikalt. Genom att
ha en positiv bias förflyttas funktionen åt höger på y-axeln och vice versa, alltså till vänster,
Moa Wallin moawa859 då bias är negativ. Möjligheten att göra detta kan behövas för att finna en lösning i flertalet
problem.
Vanligtvis rör sig information i ett ANN framåt från input-lagret till output-lagret utan
möjlighet att backa, vilket kallas feed-forward network (FNN). Nätverket har således inget
”minne” av tidigare uträkningar, utan hanterar varje input oberoende av tidigare input, och
givet samma input kommer nätverket att producera samma output. Denna modell fungerar
utmärkt till vissa typer av uppgifter där input har bestämd storlek. När det kommer till språk
skiljer sig dock självfallet längden på satser och således storleken på input. Likaså kräver
maskinöversättning möjlighet att inkludera någon slags minne då ett element i sekvensen kan
vara beroende av tidigare. Som tidigare nämnt används alltså istället för FNN främst så
kallade recurrent neural networks (hädanefter RNN) inom NMT.
Recurrent Neural Networks (RNN)
RNN innehåller loopar vilket möjliggör flödet av information att färdas tillbaka i nätverket.
Likaså kan nätverket ta input av en arbiträr längd. Detta innebär implicit att input inte bara
består av vad nätverket för tillfället varseblir, utan även vad nätverket tidigare varseblivit. Det
beslut ett RNN fattar vid en tidpunkt t påverkar således det beslut som kommer att fattas vid
en senare tidpunkt t+1.
Figur 4. Modell av RNN och hur den vecklas ut till ett fullt nätverk (LeCun, Bengio & Hinton,
2015).
I figur 4 demonstreras en allmän modell för RNN och hur ett RNN kan skrivas ut för en
komplett sats som en kedja av feed-forward networks. I den utvecklade modellen existerar en
nod i det dolda lagret för varje ord i satsen. En sats med fyra ord ger således ett dolt lager med
fyra noder. *9 står för input, alltså en vektor som representerar ett ord i satsen, vid tidssteget t.
Det som i modellen i figur 4 benämns som :9 kan liknas vid ett kort ”minne”, det vill säga ett
Moa Wallin moawa859 dolt, internt tillstånd som beräknas baserat på det förra dolda tillståndet samt den input som
mottas vid nuvarande tidssteg t. Detta dolda minne kommer dock hädanefter att istället
benämnas ℎ9. Slutligen representerar <9 output vid tidssteget t. Denna output beräknas enbart
utefter ℎ9, som alltså används för att räkna ut sannolikheten för nästa ord (Liu, Yang, Li &
Zhou, 2014). Input utgör alltså en sammanlänkning av *9 och ℎ9. Detta demonstreras på ett
ytterligare, möjligen mer påtagligt sätt, i figur 5. Som synes används parametrarna U, V och
W, som representerar viktmatriserna, i varje tidssteg. Detta visar på hur ett RNN utför samma
uppgift, men med olika input vid varje tidssteg.
Figur 5. Modell av RNN (Liu, Yang, Li & Zhou, 2014). Observera att modellen i denna
modell till skillnad från modellen i figur 2 använder h för det dolda tillståndet och y för
output istället för s respektive o. Principen är dock densamma.
Ekvationen för hur information sparas i det dolda tillståndet, ℎ9, ser ut som följande:
ℎ9 = s (Uℎ9=.+ W*9)
Som tidigare avser *9 input vid tidpunkt t och ℎ9=. är som tidigare det dolda tillståndet vid
föregående tidssteg. s avser sigmoid som aktiveringsfunktion.
För att återgå till den utvecklade modellen av RNN i figur 4 syns hur modellen genererar
output vid varje tidssteg. Inom maskinöversättning är detta dock inte något som eftersträvas,
utan man vill endast ge output först efter att hela texten, det vill säga all input, har setts.
Endast det slutliga dolda tillståndet används då för att göra en förutsägelse. För att repetera
innehåller dock NMT två RNN där den första RNN kodar en sekvens till en enskild vektor
och den andra avkodar vektorn till en sekvens ånyo. Den första RNN går således från
Moa Wallin moawa859 ”många” till ”en” och den andra från ”en” till ”många” (Bahdanau, Cho & Bengio, 2015) (se
figur 6.).
Figur 6. Modell av encoder-decoder-arkitekturen med två RNN (Geitgey, 2016).
Som tidigare nämnt används bakåtpropagering för att träna vikterna i ett neuralt nätverk, men
då RNN innehåller loopar måste även varje tidssteg länkas till nästa. En utvidgad typ av
bakåtpropagering som kallas gradient backprogagation through time (BPTT) används då
istället. I dessa konventionela RNN, även kallade vanilla RNN, innebär det att information i
nätverket passerar genom flera lager och således flera steg av multiplikation vilket kan leda
till problem. Om gradienten är mindre än 1 minskar gradientvärdet successivt och kommer
allt närmre 0 allt eftersom vi propagerar bakåt, och alltså multiplicerar med gradienten,
genom varje lager (se figur 7). Detta problem kallas the vanishing gradient problem. Den
motsatta effekten uppstår då gradienten är större än 1 och benämns då istället the exploding
gradient problem. Gradienten behöver således vara 1 för att problemet inte ska uppstå och
detta är något som sällan förekommer.
Figur 7. Illustration av vanishing gradient problem (Graves et al., 2009).
Problemet med gradienten som försvinner eller exploderar gör alltså att RNN inte kan lagra
information och lära sig under en längre tid, något som krävs för att korrekt klassificera den
sekventiella input som används vid MT. Då en sats ofta består av flertalet ord kan det
innebära långa dependenslängder (eng. long-term dependencies), alltså ett längre avstånd
Moa Wallin moawa859 mellan viss input och då information om denna input i fråga behövs för att göra en
förutsägelse (Grosse, 2017). Ett exempel på vad som avses med en lång dependenslängd kan
noteras i följande sats: ”Katten som jag såg när jag gick över gatan igår var svart”. För en
människa är det inte svårt att komma ihåg och förstå det är katten som nämns i inledningen av
satsen som är svart, trots att flertalet andra ord befinner sig mellan ordet ”katten” och ordet
”svart”. För ett RNN är detta dock inte lika problemfritt utan mycket svårt, exempelvis i
jämförelse med satsen ”katten är svart” som inte har denna långa dependenslängden. Vad som
behövs vid maskinöversättning är då ett sätt för nätverket att minnas långa dependenser
genom att kunna minnas gradientvärdet vid bakåtpropagering. En lösning på detta problem är
att införa RNN-varianten long short-term memory, som alltså är speciellt effektiv vid
maskinöversättning. Nästa stycke ämnar beskriva den grundläggande strukturen hos LSTM.
Long short-term memory (LSTM)
LSTM avser alltså lösa gradientproblemen hos RNN genom att, för att kort sammanfatta,
avgöra vad som ska behållas i minnet och vad som ska raderas. Detta gör LSTM till det
självklara valet vid maskinöversättning där, som påvisats i föregående stycke, data ofta
innehåller dessa långa temporala dependenser.
En LSTM-enhet innehåller till skillnad från vanilla RNN fler interna strukturer. De kan se ut
på olika sätt men den vanligaste typen av LSTM-enhet, vanilla LSTM, har ett minnesblock
som innehåller minnesceller och tre så kallade portar (eng. gates) (se figur 8.). Minnescellen
har som namnet antyder till uppgift att minnas information och agerar som ett långtidsminne.
Portarna, likt noder i ett ANN, agerar utifrån de signaler de mottar genom att antingen vara
stängda eller öppna (ha värdet 0 respektive 1). De tre portarna som existerar i LSTM-blocket
är en input-port, en output-port och en forget-port.
Figur 8. Modell av ett minnesblock i vanilla LSTM.
Moa Wallin moawa859
Input-porten avgör huruvida ny inkommande information får komma in. Är input-porten
öppen ändrar denna inkommande information minnescellens tillstånd och skriver över den
information som befinner sig där. Output-porten avgör huruvida minnescellens tillstånd ska
föras vidare till resten av nätverket och andra minnesceller. Forget-porten i sin tur ser till så
att cellens tillstånd återställs då allt innehåll har använts och inte är av betydelse längre (Greff
et al., 2017).
De tre portarnas ekvationer för att räkna ut huruvida de ska vara öppna eller stängda ser ut
som följande:
Input-porten: (9=s(HI*[ℎ9=.,*9]+MI)
Output-porten: <9=s(HO*[ℎ9=.,*9]+MO)
Forget-porten: )9=s(HR*[ℎ9=.,*9]+MR)
Notera hur dessa ekvationer liknar ekvationerna för att beräkna output i en nod i ett ANN. De
är uppbyggda på samma sätt och är som små neurala nätverk. Vi har input från nuvarande
tidssteg, *9, och i form av det dolda tillståndet i förra tidssteget, ℎ9=.. Denna input
multipliceras med en viktvektor och slutligen adderas en bias, b. Då vi i det här fallet vill ha
siffror mellan 0 och 1 används den logistiska funktionen som aktiveringsfunktion och
betecknas som s.
Under träning lär sig minnesblocket vilka portar som ska vara öppna respektive stängda –
alltså vad minnescellen ska minnas och vad som ska glömmas. Detta görs likt hos ANN
genom att vikterna justeras genom gradientssökning. Beroende på input-portens och forget-
portens värden uppträder alltså en minnescell på olika sätt. Nedanstående ekvation visar hur
minnescellens, alltså S9, tillstånd ändras:
S9=)9*S9=.+(9*tanh(HV*[ℎ9=.,*9]+MV)
Observera hur istället för sigmoid så används den hyperboliska funktionen som
aktiveringsfunktion. Som tidigare nämnt har den hyperboliska funktionen ett spann mellan -1
och 1 så genom att använda sig av den övervinns the vanishing gradient problem.
Moa Wallin moawa859
Till slut ska det avgöras vilket det slutgiltiga output som ska skickas vidare till andra
minnesblock blir och detta beräknas enligt följande formel:
ℎ9=<9*tanh(S9)
Sammanfattning
Denna rapport har visat hur neural maskinöversättning frångår tidigare översättningsmetoder
genom att använda en modell med en kodare, som ur en sats på ett språk kan skapa en vektor
för att representera satsens mening, och en avkodare som utifrån nämnda vektor kan återskapa
satsen och dess innebörd fast på ett annat språk. För att kunna genomföra detta används RNN,
ofta av typen LSTM, där nätverket innehar en form av minne vilket möjliggör att systemet
kan tränas end-to-end.
Diskussion
Neural maskinöversättning är fortfarande en mycket ny metod, men trots det har den under de
få år som den har funnits redan anammats av flertalet stora företag som ersättare av andra
typer av maskinöversättningsmetoder. År 2016 lanserades exempelvis Microsofts Bing
Translator som använder tekniken och sedan dess har jättar inom maskinöversättning som
Google Translate och Facebook successivt ersatt tidigare översättningssystem med NMT.
Google har för sitt översättningssystem utvecklat en egen typ av NMT kallad GNMT. Vid
översättning mellan exempelvis engelska och franska samt engelska till spanska presterade
detta system avsevärt mycket bättre och reducerade antalet översättningsfel med hela 60%
jämfört med den tidigare frasbaserade översättningsmetoden (Wu, Schuster, Chen, Le,
Norouzi, 2016).
Neural maskinöversättning är dock långt ifrån en problemfri metod. Ett av de stora problemen
med NMT är att det är en mycket dyr metod rent beräkningsmässigt som kräver stora
mängder träningsdata och mycket tid för inlärning. Dessutom uppstår problem med mer
ovanliga ord som NMT-systemet inte har kunnat träna på. Ett annat betydande problem ligger
i svårigheterna att finna och korrigera eventuella buggar då den större delen av beräkningen
sker i de dolda lagren som alltså utgör en så kallad svart låda.
Moa Wallin moawa859 Avslutningsvis kan konstateras att det fortfarande förekommer problem och begås
signifikanta misstag vid översättning även med denna typ av metod. Mycket arbete återstår
följaktligen för att skapa en maskinöversättningsmetod som kan mäta sig med mänsklig
översättning. Dock framstår NMT ha en lovande tid framför sig där förhoppningsvis stora
framsteg görs för att tackla de återstående problemen.
Moa Wallin moawa859 Referenser
Bahdanau, D., Cho, K., Bengio, Y. (2015) Neural Machine Translation by Jointly Learning to
Align and Translate. Published as a conference paper at ICLR.
Geitgey, A., (2016-08-21). Machine Learning is Fun Part 5: Language Translation with Deep
Learning and the Magic of Sequences. Hämtad från
https://medium.com/@ageitgey/machine-learning-is-fun-part-5-language-translation-
with-deep-learning-and-the-magic-of-sequences-2ace0acca0aa [2017-01-10]
Graves, A., Liwicki, M., Fernandez, S., Bertolami, R., Bunke, H., Schmidhuber, J. (2008). A
Novel Connectionist System for Unconstrained Handwriting Recognition.
Greff, K., Srivastava, R. K., Koutník, J., Steunebrink, B. R., Schmidhuber, J. (2017). LSTM:
A Search Space Odyssey. IEEE Transactions on Neural Networks and Learning
Systems, 28(10), 2222-2232.
Grosse, R. (2017) Lecture 15: Exploding and Vanishing Gradients. Hämtad från
http://www.cs.toronto.edu/~rgrosse/courses/csc321_2017/readings/L15%20Explodin
g%20and%20Vanishing%20Gradients.pdf [2017-01-09]
Hutchins, J. (2007). Machine translation: a concise history. In C. S. Wai (Ed.) Computer
Aided Translation: Theory and Practice. Chinese University of Hong Kong.
LeCun, Y., Bengio, Y. & Hinton, G. (2015) Deep learning. Nature, 521, 436-444.
Liu, Y., Yang, N., Li, M., Zhou, M. (2014). A recursive recurrent neural network for
statistical machine translation. 52nd Annual Meeting of the Association for
Computational Linguistics (pp. 1491-1500).
Lopez, A. (2008). Statistical machine translation. ACM Computing Surveys, 40 (3), art nr 8.
University of Edinburgh, UK.
Moa Wallin moawa859 Nielsen, M. A. (2015) Neural Networks and Deep Learning, Determination Press. Hämtad
från http://neuralnetworksanddeeplearning.com/chap5.html [2017-01-08]
Russell, S., & Norvig, P. (2014). Artificial Intelligence - a Modern Approach. Edinburgh:
Pearson Education Limited.
Sutskever, I., Vinyals, O., & Le, Q. V. (2014) Sequence to sequence learning with neural
networks. Advances in Neural Information Processing System, 4, 3104 – 3112.
Stanford University School of Engineering. (2017, August). Lecture 10 | Recurrent Neural
Networks [Video]. Hämtad från https://www.youtube.com/watch?v=6niqTuYFZLQ
Weisser, M. (2016) Practical Corpus Linguistics – An Introduction to Corpus-Based
Language Analysis. Hoboken: Wiley-Blackwell.