Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Recurrent Neurale Netværk (RNN'er) og Sekvensgenerering | Teoretiske Grundlag
Dybe Generative Modeller med Python

Recurrent Neurale Netværk (RNN'er) og Sekvensgenerering

Stryg for at vise menuen

Introduktion til rekursive neurale netværk (RNN'er)

Rekursive neurale netværk (RNN'er) er en klasse af neurale netværk, der er specielt designet til at behandle sekventielle data. I modsætning til traditionelle feedforward-netværk har RNN'er forbindelser, der tillader information at vedvare på tværs af tidssteg, hvilket gør dem særligt nyttige til opgaver, hvor tidligere information påvirker fremtidige forudsigelser, såsom sprogmodellering, talegenkendelse og sekvensgenerering.

RNN

Sådan fungerer RNN'er

Et RNN behandler sekvenser ét trin ad gangen og opretholder en skjult tilstand, der indfanger information fra tidligere input. Ved hvert tidssteg:

  • Netværket modtager det aktuelle input og den forrige skjulte tilstand.
  • Det beregner en ny skjult tilstand ved hjælp af en vægtet transformation efterfulgt af en ikke-lineær aktiveringsfunktion.
  • Den skjulte tilstand bruges derefter som input til næste tidssteg og kan også bruges til at generere en output.

Matematisk defineres et RNN som:

ht=σ(Whht1+Wxxt+b)h_t=\sigma\left( W_hh_{t-1}+W_xx_t+b \right)

hvor:

  • hth_t er den skjulte tilstand ved tid tt;
  • xtx_t er input ved tid tt;
  • WhW_h og WxW_x er vægtmatricer;
  • bb er et bias-led;
  • σ\sigma er en ikke-lineær aktiveringsfunktion (ofte tanh eller ReLU).

RNN'er opfanger afhængigheder i sekventielle data, men de lider under problemer som det forsvindende gradientproblem, hvilket begrænser deres evne til at lære langtrækkende afhængigheder.

Varianter af RNN'er: LSTM og GRU

Standard RNN'er har udfordringer med langtidshukommelse på grund af det forsvindende gradientproblem. For at løse dette blev mere avancerede arkitekturer som Long Short-Term Memory (LSTM) og Gated Recurrent Units (GRU) introduceret.

Long Short-Term Memory (LSTM)

LSTM

LSTM'er introducerer hukommelsesceller og portmekanismer til at kontrollere informationsstrømmen:

  • Forget Gate: bestemmer, hvilken tidligere information der skal kasseres;
  • Input Gate: afgør, hvilken ny information der skal gemmes i hukommelsen;
  • Output Gate: kontrollerer, hvilken information der sendes som output.

LSTM-ligninger:

ft=σ(Wfxt+Ufht1+bf)f_t=\sigma(W_f x_t + U_f h_{t-1} + b_f) it=σ(Wixt+Uiht1+bj)i_t = \sigma (W_i x_t + U_i h_{t-1} + b_j) ot=σ(Woxt+Uoht1+bo)o_t = \sigma (W_o x_t + U_o h_{t-1} + b_o) ct=ftct1+ittanh(Wcxt+Ucht1+bc)c_t = f_t \odot c_{t-1} + i_t \odot \tanh (W_c x_t + U_c h_{t-1} + b_c)

hvor:

  • ftf_t, iti_t og oto_t er henholdsvis forget, input og output gates;
  • ctc_t er hukommelsescellen, der bevarer langtidshukommelse;
  • σ\sigma repræsenterer sigmoid-funktionen, som giver værdier mellem 0 og 1 og muliggør selektiv informationsstrøm;
  • tanh\tanh er den hyperbolske tangensfunktion, som holder værdier mellem -1 og 1 for at normalisere opdateringen.

LSTM'er bevarer effektivt langtidshukommelse, hvilket gør dem meget velegnede til sekventielle opgaver såsom talegenkendelse og tekstgenerering.

Gated Recurrent Units (GRU'er)

GRU

GRU'er forenkler LSTM'er ved at reducere antallet af porte, samtidig med at de opretholder stærk ydeevne. De anvender:

  • Opdateringsport: styrer hvor meget af den tidligere information, der skal bevares;
  • Nulstillingsport: bestemmer hvor meget af den tidligere information, der skal ignoreres.

GRU-ligninger:

zt=σ(Wzxt+Uzht1+bz)z_t = \sigma (W_z x_t + U_z h_{t-1} + b_z) rt=σ(Wrxt+Urht1+br)r_t = \sigma(W_r x_t + U_r h_{t-1} + b_r) ht=(1zt)ht1+zttanh(Whxt+Uc(rtht1)+bh)h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tanh(W_h x_t + U_c (r_t \odot h_{t-1}) + b_h)

hvor:

  • ztz_t (opdateringsport) balancerer den gamle skjulte tilstand og den nye information;
  • rtr_t (nulstillingsport) hjælper med at kassere irrelevant tidligere information;
  • hth_t er den opdaterede skjulte tilstand ved tid tt;
  • WW og UU er vægtmatricer, og bb er bias-termen;
  • \odot repræsenterer elementvis multiplikation.

GRU'er kræver færre parametre end LSTM'er og er beregningsmæssigt effektive, samtidig med at de håndterer langtidshukommelse effektivt.

Sekvensgenerering med RNN'er

RNN'er anvendes bredt til sekvensgenerering, hvor netværket forudsiger det næste element i en sekvens baseret på tidligere kontekst. Almindelige eksempler inkluderer:

  • Tekstgenerering: forudsigelse af det næste ord i en sætning;
  • Musikkomposition: generering af melodier baseret på en given stil;
  • Billedtekstgenerering: generering af beskrivende tekst til billeder.

Eksempel: Tekstgenerering med RNN'er

  1. Træn et RNN på et stort tekstdatasæt;
  2. Giv et indledende ord eller en sætning som input;
  3. RNN'et forudsiger det næste ord baseret på tidligere kontekst;
  4. Det forudsagte ord føres tilbage i netværket til næste forudsigelse;
  5. Gentag denne proces for at generere en sammenhængende sekvens;

Denne teknik driver applikationer såsom chatbots, AI-drevet historiefortælling og autofuldførelsessystemer.

Anvendelser af RNN'er i generativ AI

RNN'er anvendes i forskellige generative AI-applikationer:

  • Maskinoversættelse: brugt i tidlige modeller af Google Translate;
  • Talegenkendelse: konverterer talt sprog til tekst (f.eks. Siri, Google Assistant);
  • AI-baseret indholdsgenerering: tidlige versioner af generative AI-modeller før transformere;
  • Musik- og poesi-generering: AI-modeller som OpenAI’s MuseNet genererer kompositioner i forskellige stilarter.

Konklusion

RNN'er er essentielle til håndtering af sekventielle data, men de har udfordringer med langtidshukommelse på grund af vanishing gradient-problemet. LSTM'er og GRU'er afhjælper dette problem, hvilket gør RNN'er effektive til generative anvendelser inden for tekst, tale og musik. Dog er moderne arkitekturer som Transformers i vid udstrækning blevet foretrukket frem for RNN'er i avancerede generative AI-modeller, da de mere effektivt kan håndtere langtrækkende afhængigheder.

1. Hvordan adskiller en RNN sig fra et feedforward-neuralt netværk?

2. Hvorfor foretrækkes LSTM'er og GRU'er frem for standard RNN'er til lange sekvenser?

question mark

Hvordan adskiller en RNN sig fra et feedforward-neuralt netværk?

Vælg det korrekte svar

question mark

Hvorfor foretrækkes LSTM'er og GRU'er frem for standard RNN'er til lange sekvenser?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Recurrent Neurale Netværk (RNN'er) og Sekvensgenerering

Introduktion til rekursive neurale netværk (RNN'er)

Rekursive neurale netværk (RNN'er) er en klasse af neurale netværk, der er specielt designet til at behandle sekventielle data. I modsætning til traditionelle feedforward-netværk har RNN'er forbindelser, der tillader information at vedvare på tværs af tidssteg, hvilket gør dem særligt nyttige til opgaver, hvor tidligere information påvirker fremtidige forudsigelser, såsom sprogmodellering, talegenkendelse og sekvensgenerering.

RNN

Sådan fungerer RNN'er

Et RNN behandler sekvenser ét trin ad gangen og opretholder en skjult tilstand, der indfanger information fra tidligere input. Ved hvert tidssteg:

  • Netværket modtager det aktuelle input og den forrige skjulte tilstand.
  • Det beregner en ny skjult tilstand ved hjælp af en vægtet transformation efterfulgt af en ikke-lineær aktiveringsfunktion.
  • Den skjulte tilstand bruges derefter som input til næste tidssteg og kan også bruges til at generere en output.

Matematisk defineres et RNN som:

ht=σ(Whht1+Wxxt+b)h_t=\sigma\left( W_hh_{t-1}+W_xx_t+b \right)

hvor:

  • hth_t er den skjulte tilstand ved tid tt;
  • xtx_t er input ved tid tt;
  • WhW_h og WxW_x er vægtmatricer;
  • bb er et bias-led;
  • σ\sigma er en ikke-lineær aktiveringsfunktion (ofte tanh eller ReLU).

RNN'er opfanger afhængigheder i sekventielle data, men de lider under problemer som det forsvindende gradientproblem, hvilket begrænser deres evne til at lære langtrækkende afhængigheder.

Varianter af RNN'er: LSTM og GRU

Standard RNN'er har udfordringer med langtidshukommelse på grund af det forsvindende gradientproblem. For at løse dette blev mere avancerede arkitekturer som Long Short-Term Memory (LSTM) og Gated Recurrent Units (GRU) introduceret.

Long Short-Term Memory (LSTM)

LSTM

LSTM'er introducerer hukommelsesceller og portmekanismer til at kontrollere informationsstrømmen:

  • Forget Gate: bestemmer, hvilken tidligere information der skal kasseres;
  • Input Gate: afgør, hvilken ny information der skal gemmes i hukommelsen;
  • Output Gate: kontrollerer, hvilken information der sendes som output.

LSTM-ligninger:

ft=σ(Wfxt+Ufht1+bf)f_t=\sigma(W_f x_t + U_f h_{t-1} + b_f) it=σ(Wixt+Uiht1+bj)i_t = \sigma (W_i x_t + U_i h_{t-1} + b_j) ot=σ(Woxt+Uoht1+bo)o_t = \sigma (W_o x_t + U_o h_{t-1} + b_o) ct=ftct1+ittanh(Wcxt+Ucht1+bc)c_t = f_t \odot c_{t-1} + i_t \odot \tanh (W_c x_t + U_c h_{t-1} + b_c)

hvor:

  • ftf_t, iti_t og oto_t er henholdsvis forget, input og output gates;
  • ctc_t er hukommelsescellen, der bevarer langtidshukommelse;
  • σ\sigma repræsenterer sigmoid-funktionen, som giver værdier mellem 0 og 1 og muliggør selektiv informationsstrøm;
  • tanh\tanh er den hyperbolske tangensfunktion, som holder værdier mellem -1 og 1 for at normalisere opdateringen.

LSTM'er bevarer effektivt langtidshukommelse, hvilket gør dem meget velegnede til sekventielle opgaver såsom talegenkendelse og tekstgenerering.

Gated Recurrent Units (GRU'er)

GRU

GRU'er forenkler LSTM'er ved at reducere antallet af porte, samtidig med at de opretholder stærk ydeevne. De anvender:

  • Opdateringsport: styrer hvor meget af den tidligere information, der skal bevares;
  • Nulstillingsport: bestemmer hvor meget af den tidligere information, der skal ignoreres.

GRU-ligninger:

zt=σ(Wzxt+Uzht1+bz)z_t = \sigma (W_z x_t + U_z h_{t-1} + b_z) rt=σ(Wrxt+Urht1+br)r_t = \sigma(W_r x_t + U_r h_{t-1} + b_r) ht=(1zt)ht1+zttanh(Whxt+Uc(rtht1)+bh)h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tanh(W_h x_t + U_c (r_t \odot h_{t-1}) + b_h)

hvor:

  • ztz_t (opdateringsport) balancerer den gamle skjulte tilstand og den nye information;
  • rtr_t (nulstillingsport) hjælper med at kassere irrelevant tidligere information;
  • hth_t er den opdaterede skjulte tilstand ved tid tt;
  • WW og UU er vægtmatricer, og bb er bias-termen;
  • \odot repræsenterer elementvis multiplikation.

GRU'er kræver færre parametre end LSTM'er og er beregningsmæssigt effektive, samtidig med at de håndterer langtidshukommelse effektivt.

Sekvensgenerering med RNN'er

RNN'er anvendes bredt til sekvensgenerering, hvor netværket forudsiger det næste element i en sekvens baseret på tidligere kontekst. Almindelige eksempler inkluderer:

  • Tekstgenerering: forudsigelse af det næste ord i en sætning;
  • Musikkomposition: generering af melodier baseret på en given stil;
  • Billedtekstgenerering: generering af beskrivende tekst til billeder.

Eksempel: Tekstgenerering med RNN'er

  1. Træn et RNN på et stort tekstdatasæt;
  2. Giv et indledende ord eller en sætning som input;
  3. RNN'et forudsiger det næste ord baseret på tidligere kontekst;
  4. Det forudsagte ord føres tilbage i netværket til næste forudsigelse;
  5. Gentag denne proces for at generere en sammenhængende sekvens;

Denne teknik driver applikationer såsom chatbots, AI-drevet historiefortælling og autofuldførelsessystemer.

Anvendelser af RNN'er i generativ AI

RNN'er anvendes i forskellige generative AI-applikationer:

  • Maskinoversættelse: brugt i tidlige modeller af Google Translate;
  • Talegenkendelse: konverterer talt sprog til tekst (f.eks. Siri, Google Assistant);
  • AI-baseret indholdsgenerering: tidlige versioner af generative AI-modeller før transformere;
  • Musik- og poesi-generering: AI-modeller som OpenAI’s MuseNet genererer kompositioner i forskellige stilarter.

Konklusion

RNN'er er essentielle til håndtering af sekventielle data, men de har udfordringer med langtidshukommelse på grund af vanishing gradient-problemet. LSTM'er og GRU'er afhjælper dette problem, hvilket gør RNN'er effektive til generative anvendelser inden for tekst, tale og musik. Dog er moderne arkitekturer som Transformers i vid udstrækning blevet foretrukket frem for RNN'er i avancerede generative AI-modeller, da de mere effektivt kan håndtere langtrækkende afhængigheder.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5
some-alt