AI-For-Beginners/translations/sv/lessons/5-NLP/16-RNN
leestott 68b3c9c9e7 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
..
README.md 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
RNNPyTorch.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
RNNTF.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
assignment.md 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00

README.md

Rekurrenta neurala nÀtverk

Quiz före förelÀsning

I tidigare avsnitt har vi anvÀnt rika semantiska representationer av text och en enkel linjÀr klassificerare ovanpÄ inbÀddningarna. Vad denna arkitektur gör Àr att fÄnga den aggregerade betydelsen av ord i en mening, men den tar inte hÀnsyn till ordningen av orden, eftersom aggregeringsoperationen ovanpÄ inbÀddningarna tog bort denna information frÄn den ursprungliga texten. Eftersom dessa modeller inte kan modellera ordordning, kan de inte lösa mer komplexa eller tvetydiga uppgifter som textgenerering eller frÄgehantering.

För att fÄnga betydelsen av textsekvenser behöver vi anvÀnda en annan neural nÀtverksarkitektur, som kallas ett rekurrent neuralt nÀtverk, eller RNN. I ett RNN skickar vi vÄr mening genom nÀtverket en symbol i taget, och nÀtverket producerar ett tillstÄnd, som vi sedan skickar tillbaka till nÀtverket tillsammans med nÀsta symbol.

RNN

Bild av författaren

Givet en inmatningssekvens av token X0,...,Xn, skapar RNN en sekvens av neurala nÀtverksblock och trÀnar denna sekvens frÄn början till slut med hjÀlp av backpropagation. Varje nÀtverksblock tar ett par (Xi,Si) som indata och producerar Si+1 som resultat. Det slutliga tillstÄndet Sn eller (utdata Yn) skickas till en linjÀr klassificerare för att producera resultatet. Alla nÀtverksblock delar samma vikter och trÀnas frÄn början till slut med en enda backpropagation-pass.

Eftersom tillstÄndsvektorerna S0,...,Sn skickas genom nÀtverket, kan det lÀra sig sekventiella beroenden mellan ord. Till exempel, nÀr ordet inte dyker upp nÄgonstans i sekvensen, kan det lÀra sig att negera vissa element inom tillstÄndsvektorn, vilket resulterar i negation.

✅ Eftersom vikterna för alla RNN-block i bilden ovan Ă€r delade, kan samma bild representeras som ett block (till höger) med en rekurrent Ă„terkopplingsslinga, som skickar nĂ€tverkets utgĂ„ngstillstĂ„nd tillbaka till indata.

Anatomi av en RNN-cell

LÄt oss se hur en enkel RNN-cell Àr organiserad. Den tar emot det föregÄende tillstÄndet Si-1 och den aktuella symbolen Xi som indata och mÄste producera utgÄngstillstÄndet Si (och ibland Àr vi ocksÄ intresserade av nÄgon annan utdata Yi, som i fallet med generativa nÀtverk).

En enkel RNN-cell har tvĂ„ viktmatriser inuti: en som transformerar en indatasymbol (vi kallar den W) och en annan som transformerar ett indatatillstĂ„nd (H). I detta fall berĂ€knas nĂ€tverkets utdata som σ(W×Xi+H×Si-1+b), dĂ€r σ Ă€r aktiveringsfunktionen och b Ă€r en ytterligare bias.

RNN Cell Anatomy

Bild av författaren

I mĂ„nga fall skickas indatatoken genom inbĂ€ddningslagret innan de gĂ„r in i RNN för att minska dimensionen. I detta fall, om dimensionen av indatavektorerna Ă€r emb_size och tillstĂ„ndsvektorn Ă€r hid_size - Ă€r storleken pĂ„ W emb_size×hid_size, och storleken pĂ„ H Ă€r hid_size×hid_size.

Long Short Term Memory (LSTM)

Ett av de största problemen med klassiska RNN Àr det sÄ kallade försvinnande gradienter-problemet. Eftersom RNN trÀnas frÄn början till slut i en enda backpropagation-pass, har det svÄrt att sprida fel till de första lagren i nÀtverket, och dÀrmed kan nÀtverket inte lÀra sig relationer mellan avlÀgsna token. Ett sÀtt att undvika detta problem Àr att införa explicit tillstÄndshantering genom att anvÀnda sÄ kallade grindar. Det finns tvÄ vÀlkÀnda arkitekturer av detta slag: Long Short Term Memory (LSTM) och Gated Relay Unit (GRU).

Bild som visar ett exempel pÄ en long short term memory-cell

BildkÀlla TBD

LSTM-nÀtverket Àr organiserat pÄ ett sÀtt som liknar RNN, men det finns tvÄ tillstÄnd som skickas frÄn lager till lager: det faktiska tillstÄndet C och den dolda vektorn H. Vid varje enhet sammanfogas den dolda vektorn Hi med indata Xi, och de styr vad som hÀnder med tillstÄndet C via grindar. Varje grind Àr ett neuralt nÀtverk med sigmoidaktivering (utdata i intervallet [0,1]), som kan ses som en bitmask nÀr den multipliceras med tillstÄndsvektorn. Följande grindar finns (frÄn vÀnster till höger i bilden ovan):

  • Glömskegrinden tar en dold vektor och avgör vilka komponenter i vektorn C vi behöver glömma och vilka vi ska slĂ€ppa igenom.
  • Indatagrinden tar viss information frĂ„n indata- och dolda vektorer och inför den i tillstĂ„ndet.
  • UtgĂ„ngsgrinden transformerar tillstĂ„ndet via ett linjĂ€rt lager med tanh-aktivering och vĂ€ljer sedan vissa av dess komponenter med hjĂ€lp av den dolda vektorn Hi för att producera ett nytt tillstĂ„nd Ci+1.

Komponenter i tillstÄndet C kan ses som flaggor som kan slÄs pÄ och av. Till exempel, nÀr vi stöter pÄ namnet Alice i sekvensen, kanske vi vill anta att det hÀnvisar till en kvinnlig karaktÀr och höja flaggan i tillstÄndet att vi har ett kvinnligt substantiv i meningen. NÀr vi senare stöter pÄ frasen och Tom, höjer vi flaggan att vi har ett plural substantiv. Genom att manipulera tillstÄndet kan vi alltsÄ hÄlla reda pÄ de grammatiska egenskaperna hos meningsdelar.

✅ En utmĂ€rkt resurs för att förstĂ„ LSTM:s interna funktioner Ă€r denna fantastiska artikel Understanding LSTM Networks av Christopher Olah.

Bidirektionella och flerskikts-RNN

Vi har diskuterat rekurrenta nÀtverk som arbetar i en riktning, frÄn början av en sekvens till slutet. Det verkar naturligt, eftersom det liknar hur vi lÀser och lyssnar pÄ tal. Men eftersom vi i mÄnga praktiska fall har slumpmÀssig Ätkomst till inmatningssekvensen, kan det vara vettigt att köra rekurrent berÀkning i bÄda riktningarna. SÄdana nÀtverk kallas bidirektionella RNN. NÀr vi arbetar med ett bidirektionellt nÀtverk behöver vi tvÄ dolda tillstÄndsvektorer, en för varje riktning.

Ett rekurrent nÀtverk, antingen enkelriktat eller bidirektionellt, fÄngar vissa mönster inom en sekvens och kan lagra dem i en tillstÄndsvektor eller skicka dem till utdata. Precis som med konvolutionella nÀtverk kan vi bygga ett annat rekurrent lager ovanpÄ det första för att fÄnga högre nivÄmönster och bygga frÄn lÄg-nivÄmönster som extraherats av det första lagret. Detta leder oss till begreppet ett flerskikts-RNN, som bestÄr av tvÄ eller fler rekurrenta nÀtverk, dÀr utdata frÄn det föregÄende lagret skickas till nÀsta lager som indata.

Bild som visar ett flerskikts long-short-term-memory-RNN

Bild frÄn detta fantastiska inlÀgg av Fernando López

✍ Övningar: InbĂ€ddningar

FortsÀtt ditt lÀrande i följande anteckningsböcker:

Slutsats

I denna enhet har vi sett att RNN kan anvÀndas för sekvensklassificering, men de kan faktiskt hantera mÄnga fler uppgifter, sÄsom textgenerering, maskinöversÀttning och mer. Vi kommer att titta pÄ dessa uppgifter i nÀsta enhet.

🚀 Utmaning

LÀs igenom lite litteratur om LSTM och fundera över deras tillÀmpningar:

Quiz efter förelÀsning

Granskning & SjÀlvstudier

Uppgift: Anteckningsböcker


Ansvarsfriskrivning:
Detta dokument har översatts med hjĂ€lp av AI-översĂ€ttningstjĂ€nsten Co-op Translator. Även om vi strĂ€var efter noggrannhet, bör du vara medveten om att automatiserade översĂ€ttningar kan innehĂ„lla fel eller felaktigheter. Det ursprungliga dokumentet pĂ„ dess originalsprĂ„k bör betraktas som den auktoritativa kĂ€llan. För kritisk information rekommenderas professionell mĂ€nsklig översĂ€ttning. Vi ansvarar inte för eventuella missförstĂ„nd eller feltolkningar som uppstĂ„r vid anvĂ€ndning av denna översĂ€ttning.