logo

Gated gjentatte enhetsnettverk

Gated Recurrent Unit (GRU) er en type tilbakevendende nevrale nettverk (RNN) som ble introdusert av Cho et al. i 2014 som et enklere alternativ til Long Short-Term Memory (LSTM) nettverk. I likhet med LSTM kan GRU behandle sekvensielle data som tekst, tale og tidsseriedata.

Den grunnleggende ideen bak GRU er å bruke portmekanismer for selektivt å oppdatere den skjulte tilstanden til nettverket ved hvert tidstrinn. Gatemekanismene brukes til å kontrollere flyten av informasjon inn og ut av nettverket. GRUen har to portmekanismer, kalt tilbakestillingsporten og oppdateringsporten.



Tilbakestillingsporten bestemmer hvor mye av den tidligere skjulte tilstanden som skal glemmes, mens oppdateringsporten bestemmer hvor mye av den nye inngangen som skal brukes til å oppdatere den skjulte tilstanden. Utgangen til GRUen beregnes basert på den oppdaterte skjulte tilstanden.

Ligningene som brukes til å beregne tilbakestillingsporten, oppdateringsporten og skjult tilstand til en GRU er som følger:

Tilbakestill port: r_t = sigmoid(W_r * [h_{t-1}, x_t])
Oppdater gate: z_t = sigmoid(W_z * [h_{t-1}, x_t])
Kandidatens skjulte tilstand: h_t' = tanh(W_h * [r_t * h_{t-1}, x_t])
Skjult tilstand: h_t = (1 – z_t) * h_{t-1} + z_t * h_t’
der W_r, W_z og W_h er innlæringsbare vektmatriser, x_t er inndata på tidspunktet trinn t, h_{t-1} er forrige skjulte tilstand, og h_t er gjeldende skjulte tilstand.



Oppsummert er GRU-nettverk en type RNN som bruker portmekanismer for selektivt å oppdatere den skjulte tilstanden ved hvert tidstrinn, slik at de effektivt kan modellere sekvensielle data. De har vist seg å være effektive i ulike naturlige språkbehandlingsoppgaver, som språkmodellering, maskinoversettelse og talegjenkjenning

Forutsetninger: Tilbakevendende nevrale nettverk, langtidsminnenettverk

For å løse problemet med Vanishing-Exploding gradients som ofte oppstår under driften av et grunnleggende tilbakevendende nevralt nettverk, ble det utviklet mange variasjoner. En av de mest kjente variantene er Langtidsminnenettverk (LSTM) . En av de mindre kjente, men like effektive variantene er Gated Recurrent Unit Network (GRU) .

I motsetning til LSTM, består den av bare tre porter og opprettholder ikke en intern celletilstand. Informasjonen som er lagret i den interne celletilstanden i en LSTM tilbakevendende enhet, er inkorporert i den skjulte tilstanden til den lukkede tilbakevendende enheten. Denne samleinformasjonen sendes videre til neste Gated Recurrent Unit. De forskjellige portene til en GRU er som beskrevet nedenfor:

    Oppdater gate(z): Den bestemmer hvor mye av fortidens kunnskap som må overføres til fremtiden. Det er analogt med Output Gate i en LSTM tilbakevendende enhet.Reset Gate(r): Den bestemmer hvor mye av tidligere kunnskap som skal glemmes. Det er analogt med kombinasjonen av inngangsporten og glemporten i en LSTM tilbakevendende enhet. Current Memory Gate( overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1})) ): Det blir ofte oversett under en typisk diskusjon om Gated Recurrent Unit Network. Den er integrert i Reset Gate akkurat som Input Modulation Gate er en underdel av Input Gate og brukes til å introdusere noe ikke-linearitet i inngangen og for også å gjøre inngangen nullmiddel. En annen grunn til å gjøre den til en underdel av Reset-porten er å redusere effekten som tidligere informasjon har på gjeldende informasjon som sendes inn i fremtiden.

Den grunnleggende arbeidsflyten til et Gated Recurrent Unit-nettverk er lik den for et grunnleggende Recurrent Neural Network når illustrert, hovedforskjellen mellom de to er i den interne driften i hver tilbakevendende enhet ettersom Gated Recurrent Unit-nettverk består av porter som modulerer gjeldende inngang og forrige skjulte tilstand.



Arbeid av en inngjerdet tilbakevendende enhet:

java pause
  • Ta inn gjeldende inngang og forrige skjulte tilstand som vektorer.
  • Beregn verdiene til de tre forskjellige portene ved å følge trinnene nedenfor:
    1. For hver gate, beregn den parameteriserte strøminngangen og tidligere skjulte tilstandsvektorer ved å utføre elementvis multiplikasjon (Hadamard-produkt) mellom den aktuelle vektoren og de respektive vektene for hver gate.
    2. Bruk den respektive aktiveringsfunksjonen for hver portelementvis på de parameteriserte vektorene. Nedenfor er en liste over portene med aktiveringsfunksjonen som skal brukes for porten.
 Update Gate : Sigmoid Function Reset Gate : Sigmoid Function>
  • Prosessen med å beregne Current Memory Gate er litt annerledes. Først beregnes Hadamard-produktet av Reset Gate og den tidligere skjulte tilstandsvektoren. Deretter blir denne vektoren parametrisert og deretter lagt til den parameteriserte gjeldende inngangsvektoren.

    h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}
  • For å beregne gjeldende skjult tilstand, defineres først en vektor av enere og de samme dimensjonene som for inngangen. Denne vektoren vil bli kalt enere og matematisk betegnes med 1. Beregn først Hadamard-produktet til oppdateringsporten og den tidligere skjulte tilstandsvektoren. Generer deretter en ny vektor ved å trekke oppdateringsporten fra enere og beregne Hadamard-produktet til den nylig genererte vektoren med gjeldende minneport. Til slutt legger du til de to vektorene for å få den for øyeblikket skjulte tilstandsvektoren.
    E_{t} = -y_{t}logg(overline{y}_{t})

    Ovennevnte arbeid er angitt som nedenfor:-

Merk at de blå sirklene angir elementvis multiplikasjon. Det positive tegnet i sirkelen angir vektoraddisjon mens det negative tegnet angir vektorsubtraksjon (vektoraddisjon med negativ verdi). Vektmatrisen W inneholder forskjellige vekter for gjeldende inngangsvektor og forrige skjulte tilstand for hver port.

Akkurat som tilbakevendende nevrale nettverk, genererer et GRU-nettverk også en utgang ved hvert tidstrinn, og denne utgangen brukes til å trene nettverket ved å bruke gradientnedstigning.

Legg merke til at akkurat som arbeidsflyten, er opplæringsprosessen for et GRU-nettverk også skjematisk lik den for et grunnleggende tilbakevendende nevralt nettverk og skiller seg bare i den interne driften til hver tilbakevendende enhet.

Algoritmen for tilbakeforplantning gjennom tid for et gated gjentakende enhetsnettverk er lik den for et langtidsminnenettverk og skiller seg bare i differensialkjedeformasjonen.

La E = sum _{t} E_{t}være den forutsagte utgangen ved hvert tidstrinn og Rightarrow E = sum _{t} -y_{t}log(overline{y}_{t})være den faktiske utgangen på hvert tidstrinn. Da er feilen ved hvert tidstrinn gitt av:-

frac{partial E}{partial W} = sum _{t} frac{partial E_{t}}{partial W}

Den totale feilen er altså gitt ved summering av feil ved alle tidstrinn.

frac{partial E_{t}}{partial W} = frac{partial E_{t}}{partial overline{y}_{t}}frac{partial overline{y}_ {t}}{partial h_{t}}frac{partial h_{t}}{partial h_{t-1}}frac{partial h_{t-1}}{partial h_{t -2}}......frac{partial h_{0}}{partial W}
frac{partial E}{partial W} = sum _{t}frac{partial E_{t}}{partial overline{y}_{t}}frac{partial overline{ y}_{t}}{partial h_{t}}frac{partial h_{t}}{partial h_{t-1}}frac{partial h_{t-1}}{partial h_{t-2}}......frac{partial h_{0}}{partial W}

Tilsvarende verdien h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}kan beregnes som summeringen av gradientene ved hvert tidstrinn.

frac{partial h_{t}}{partial h_{t-1}} = z + (1-z)frac{partial overline{h}_{t}}{partial h_{t- 1}}

Bruker kjederegelen og bruker det faktum at overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1}))er en funksjon av frac{partial overline{h_{t}}}{partial h_{t-1}} = frac{partial (tanh(Wodot x_{t}+Wodot (r_{t} odot h_{t-1})))}{partial h_{t-1}} Rightarrow frac{partial overline{h_{t}}}{partial h_{t-1}} = (1 -overline{h}_{t}^{2})(Wodot r)og som faktisk er en funksjon av , oppstår følgende uttrykk:-



Dermed er den totale feilgradienten gitt av følgende:



Merk at gradientligningen involverer en kjede av som ligner på et grunnleggende tilbakevendende nevralt nettverk, men denne ligningen fungerer annerledes på grunn av den interne funksjonen til derivatene til .

Hvordan løser Gated Recurrent Units problemet med forsvinnende gradienter?

Verdien av gradientene styres av kjeden av derivater som starter fra . Husk uttrykket for :-



Ved å bruke uttrykket ovenfor, verdien for er:-



Husk uttrykket for :-



Bruke uttrykket ovenfor for å beregne verdien av :-



Siden både oppdaterings- og tilbakestillingsporten bruker sigmoid-funksjonen som aktiveringsfunksjon, kan begge ha verdiene enten 0 eller 1.

Tilfelle 1(z = 1):

I dette tilfellet, uavhengig av verdien av , begrepet er lik z som igjen er lik 1.

Tilfelle 2A(z=0 og r=0):

I dette tilfellet begrepet er lik 0.

Tilfelle 2B(z=0 og r=1):

I dette tilfellet begrepet er lik . Denne verdien styres av vektmatrisen som er trenbar og dermed lærer nettverket å justere vektene på en slik måte at termen kommer nærmere 1.

Således justerer tilbake-propagasjon gjennom tid-algoritmen de respektive vektene på en slik måte at verdien av kjeden av derivater er så nær 1 som mulig.