logo

Gated återkommande enhetsnätverk

Gated Recurrent Unit (GRU) är en typ av recurrent neural network (RNN) som introducerades av Cho et al. 2014 som ett enklare alternativ till LSTM-nätverk (Long Short-Term Memory). Liksom LSTM kan GRU behandla sekventiell data som text, tal och tidsseriedata.

Grundidén bakom GRU är att använda grindmekanismer för att selektivt uppdatera nätverkets dolda tillstånd vid varje tidssteg. Grindmekanismerna används för att styra informationsflödet in och ut ur nätverket. GRU:n har två grindmekanismer, kallade återställningsgrinden och uppdateringsgrinden.



Återställningsgrinden bestämmer hur mycket av det tidigare dolda tillståndet som ska glömmas bort, medan uppdateringsgrinden bestämmer hur mycket av den nya ingången som ska användas för att uppdatera det dolda tillståndet. Utdata från GRU:n beräknas baserat på det uppdaterade dolda tillståndet.

Ekvationerna som används för att beräkna återställningsgrinden, uppdateringsgrinden och det dolda tillståndet för en GRU är följande:

Återställ gate: r_t = sigmoid(W_r * [h_{t-1}, x_t])
Uppdatera gate: z_t = sigmoid(W_z * [h_{t-1}, x_t])
Dold kandidatstatus: h_t' = tanh(W_h * [r_t * h_{t-1}, x_t])
Dolt tillstånd: h_t = (1 – z_t) * h_{t-1} + z_t * h_t’
där W_r, W_z och W_h är inlärbara viktmatriser, x_t är inmatningen vid tidssteg t, h_{t-1} är det tidigare dolda tillståndet och h_t är det nuvarande dolda tillståndet.



Sammanfattningsvis är GRU-nätverk en typ av RNN som använder grindmekanismer för att selektivt uppdatera det dolda tillståndet vid varje tidssteg, vilket tillåter dem att effektivt modellera sekventiell data. De har visat sig vara effektiva i olika naturliga språkbehandlingsuppgifter, såsom språkmodellering, maskinöversättning och taligenkänning

Förkunskaper: Återkommande neurala nätverk, långtidsminnesnätverk

För att lösa problemet med försvinnande-exploderande gradienter som ofta stöter på under driften av ett grundläggande återkommande neuralt nätverk, utvecklades många varianter. En av de mest kända varianterna är Long Short Term Memory Network (LSTM) . En av de mindre kända men lika effektiva varianterna är Gated Recurrent Unit Network (GRU) .

Till skillnad från LSTM består den av endast tre grindar och upprätthåller inte ett internt celltillstånd. Informationen som lagras i det interna celltillståndet i en återkommande LSTM-enhet är inkorporerad i det dolda tillståndet för den grindade återkommande enheten. Denna samlade information skickas till nästa Gated Recurrent Unit. De olika grindarna för en GRU är som beskrivs nedan:-

    Update Gate(z): Den bestämmer hur mycket av den tidigare kunskapen som behöver föras vidare in i framtiden. Det är analogt med Output Gate i en LSTM återkommande enhet. Reset Gate(r): Den bestämmer hur mycket av den tidigare kunskapen som ska glömmas. Det är analogt med kombinationen av Input Gate och Forget Gate i en LSTM återkommande enhet. Current Memory Gate( overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1})) ): Det förbises ofta under en typisk diskussion om Gated Recurrent Unit Network. Den är inkorporerad i Reset Gate precis som Input Modulation Gate är en underdel av Input Gate och används för att introducera viss icke-linjäritet i ingången och för att även göra ingången nollmedelvärd. Ett annat skäl att göra det till en underdel av Reset-porten är att minska effekten som tidigare information har på den aktuella informationen som skickas in i framtiden.

Det grundläggande arbetsflödet för ett Gated Recurrent Unit Network liknar det för ett grundläggande Recurrent Neural Network när det illustreras, den största skillnaden mellan de två ligger i det interna arbetet inom varje återkommande enhet eftersom Gated Recurrent Unit-nätverk består av grindar som modulerar aktuell ingång och föregående dolda tillstånd.



Arbeta med en gated återkommande enhet:

  • Ta in den aktuella ingången och det tidigare dolda tillståndet som vektorer.
  • Beräkna värdena för de tre olika grindarna genom att följa stegen nedan:-
    1. För varje grind, beräkna den parametriserade strömingången och tidigare dolda tillståndsvektorer genom att utföra elementvis multiplikation (Hadamard-produkt) mellan den berörda vektorn och respektive vikter för varje grind.
    2. Applicera respektive aktiveringsfunktion för varje gate elementmässigt på de parametriserade vektorerna. Nedan ges en lista över de grindar med aktiveringsfunktionen som ska användas för grinden.
 Update Gate : Sigmoid Function Reset Gate : Sigmoid Function>
  • Processen för att beräkna Current Memory Gate är lite annorlunda. Först beräknas Hadamard-produkten av återställningsporten och den tidigare dolda tillståndsvektorn. Därefter parametriseras denna vektor och adderas sedan till den parametriserade strömingångsvektorn.

    h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}
  • För att beräkna det aktuella dolda tillståndet definieras först en vektor med ettor och samma dimensioner som den för ingången. Denna vektor kommer att kallas ettor och betecknas matematiskt med 1. Beräkna först Hadamard-produkten för uppdateringsgrinden och den tidigare dolda tillståndsvektorn. Generera sedan en ny vektor genom att subtrahera uppdateringsgrinden från ettor och beräkna sedan Hadamard-produkten för den nyligen genererade vektorn med den aktuella minnesgrinden. Lägg slutligen till de två vektorerna för att få den för närvarande dolda tillståndsvektorn.
    E_{t} = -y_{t}logg(överlinje{y}_{t})

    Ovanstående arbete anges enligt nedan:-

Observera att de blå cirklarna anger elementvis multiplikation. Det positiva tecknet i cirkeln anger vektoraddition medan det negativa tecknet anger vektorsubtraktion (vektoraddition med negativt värde). Viktmatrisen W innehåller olika vikter för den aktuella ingångsvektorn och det tidigare dolda tillståndet för varje grind.

Precis som återkommande neurala nätverk genererar ett GRU-nätverk också en utdata vid varje tidssteg och denna utdata används för att träna nätverket med hjälp av gradientnedstigning.

Observera att precis som arbetsflödet, är träningsprocessen för ett GRU-nätverk också schematiskt lik den för ett grundläggande återkommande neuralt nätverk och skiljer sig endast i det interna arbetet för varje återkommande enhet.

Algoritmen för bakåtpropagation genom tid för ett gated recurrent Unit Network liknar den för ett Long Short Term Memory Network och skiljer sig endast i differentialkedjebildningen.

Låta E = summa _{t} E_{t}vara den förutsagda uteffekten vid varje tidssteg och Rightarrow E = sum _{t} -y_{t}log(overline{y}_{t})vara den faktiska produktionen vid varje tidssteg. Då ges felet vid varje tidssteg av:-

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

Det totala felet ges alltså av summan av fel vid alla tidssteg.

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}

Likaså värdet h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}kan beräknas som summeringen av gradienterna vid varje tidssteg.

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

Att använda kedjeregeln och använda det faktum att overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1}))är en funktion 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 -överlinje{h}_{t}^{2})(Wodot r)och som faktiskt är en funktion av , uppstår följande uttryck:-



Den totala felgradienten ges alltså av följande:



Observera att gradientekvationen involverar en kedja av som liknar det för ett grundläggande återkommande neuralt nätverk, men denna ekvation fungerar annorlunda på grund av de interna funktionerna hos derivaten av .

Hur löser Gated Recurrent Units problemet med försvinnande gradienter?

Gradienternas värde styrs av kedjan av derivat som börjar från . Kom ihåg uttrycket för :-



Med hjälp av uttrycket ovan, värdet för är:-



Kom ihåg uttrycket för :-



Använd uttrycket ovan för att beräkna värdet på :-



Eftersom både uppdaterings- och återställningsgrinden använder sigmoid-funktionen som sin aktiveringsfunktion, kan båda ta värdena antingen 0 eller 1.

Fall 1(z = 1):

I det här fallet, oavsett värdet på , termen är lika med z som i sin tur är lika med 1.

Fall 2A(z=0 och r=0):

I detta fall termen är lika med 0.

Fall 2B(z=0 och r=1):

I detta fall termen är lika med . Detta värde styrs av viktmatrisen som är träningsbar och därmed lär sig nätverket att justera vikterna på ett sådant sätt att termen kommer närmare 1.

Således justerar Back-propagation Through Time-algoritmen de respektive vikterna på ett sådant sätt att värdet på kedjan av derivat är så nära 1 som möjligt.