Gated Recurrent Unit (GRU) és un tipus de xarxa neuronal recurrent (RNN) que va ser introduïda per Cho et al. el 2014 com una alternativa més senzilla a les xarxes de memòria a curt termini (LSTM). Igual que LSTM, GRU pot processar dades seqüencials com ara dades de text, veu i sèries temporals.
La idea bàsica darrere de GRU és utilitzar mecanismes de gating per actualitzar selectivament l'estat ocult de la xarxa en cada pas de temps. Els mecanismes de gating s'utilitzen per controlar el flux d'informació dins i fora de la xarxa. El GRU té dos mecanismes de porta, anomenats porta de restabliment i porta d'actualització.
La porta de restabliment determina quanta part de l'estat ocult anterior s'ha d'oblidar, mentre que la porta d'actualització determina quanta part de la nova entrada s'ha d'utilitzar per actualitzar l'estat ocult. La sortida del GRU es calcula en funció de l'estat ocult actualitzat.
Les equacions utilitzades per calcular la porta de restabliment, la porta d'actualització i l'estat ocult d'una GRU són les següents:
Restableix la porta: r_t = sigmoide (W_r * [h_{t-1}, x_t])
Porta d'actualització: z_t = sigmoide(W_z * [h_{t-1}, x_t])
Estat ocult del candidat: h_t' = tanh(W_h * [r_t * h_{t-1}, x_t])
Estat ocult: h_t = (1 – z_t) * h_{t-1} + z_t * h_t’
on W_r, W_z i W_h són matrius de pes aprensibles, x_t és l'entrada al pas de temps t, h_{t-1} és l'estat ocult anterior i h_t és l'estat ocult actual.
com actualitzar en java
En resum, les xarxes GRU són un tipus de RNN que utilitzen mecanismes de gating per actualitzar selectivament l'estat ocult en cada pas de temps, cosa que els permet modelar eficaçment dades seqüencials. S'ha demostrat que són efectius en diverses tasques de processament del llenguatge natural, com ara el modelatge del llenguatge, la traducció automàtica i el reconeixement de veu.
Requisits previs: xarxes neuronals recurrents, xarxes de memòria a llarg termini
Per resoldre el problema dels gradients de desaparició-explosió que sovint es troba durant el funcionament d'una xarxa neuronal recurrent bàsica, es van desenvolupar moltes variacions. Una de les variacions més famoses és la Xarxa de memòria a curt termini (LSTM) . Una de les variacions menys conegudes però igualment efectives és la Xarxa d'unitats recurrents amb porta (GRU) .
A diferència de LSTM, només consta de tres portes i no manté un estat intern de la cèl·lula. La informació que s'emmagatzema a l'estat de la cèl·lula interna en una unitat recurrent LSTM s'incorpora a l'estat ocult de la unitat recurrent amb porta. Aquesta informació col·lectiva es passa a la següent Unitat Recurrent Gated. Les diferents portes d'un GRU són les que es descriuen a continuació:
- Porta d'actualització (z): determina quant del coneixement passat s'ha de transmetre al futur. És anàloga a la porta de sortida d'una unitat recurrent LSTM. Reset Gate(r): determina quant de coneixement passat cal oblidar. És anàloga a la combinació de la porta d'entrada i la porta d'oblit en una unitat recurrent LSTM. Porta de memòria actual (
): Sovint es passa per alt durant una discussió típica sobre Gated Recurrent Unit Network. S'incorpora a la porta de restabliment de la mateixa manera que la porta de modulació d'entrada és una subpart de la porta d'entrada i s'utilitza per introduir una mica de no linealitat a l'entrada i també per fer que l'entrada sigui zero. Un altre motiu per convertir-lo en una subpart de la porta de restabliment és reduir l'efecte que la informació anterior té sobre la informació actual que es transmet al futur.El flux de treball bàsic d'una xarxa d'unitats recurrents amb porta és similar al d'una xarxa neuronal recurrent bàsica quan s'il·lustra, la diferència principal entre ambdues està en el funcionament intern dins de cada unitat recurrent, ja que les xarxes d'unitats recurrents amb porta consisteixen en portes que modulen el l'entrada actual i l'estat ocult anterior.

Funcionament d'una unitat recurrent tancada:
- Introduïu l'entrada actual i l'estat ocult anterior com a vectors.
- Calcula els valors de les tres portes diferents seguint els passos que s'indiquen a continuació:
- Per a cada porta, calculeu l'entrada de corrent parametritzat i els vectors d'estat anteriorment ocults realitzant una multiplicació per elements (producte Hadamard) entre el vector en qüestió i els pesos respectius per a cada porta.
- Apliqueu la funció d'activació respectiva per a cada element de porta als vectors parametritzats. A continuació es mostra la llista de les portes amb la funció d'activació que s'ha d'aplicar a la porta.
Update Gate : Sigmoid Function Reset Gate : Sigmoid Function>
- El procés de càlcul de la porta de memòria actual és una mica diferent. En primer lloc, es calcula el producte de Hadamard de la porta de restabliment i el vector d'estat anteriorment ocult. A continuació, aquest vector es parametritza i després s'afegeix al vector d'entrada actual parametritzat.

- Per calcular l'estat ocult actual, primer, es defineix un vector d'uns i les mateixes dimensions que la de l'entrada. Aquest vector s'anomenarà uns i matemàticament es denotarà amb 1. En primer lloc, calculeu el producte de Hadamard de la porta d'actualització i el vector d'estat anteriorment ocult. A continuació, genereu un vector nou restant la porta d'actualització d'uns i després calculeu el producte Hadamard del vector recent generat amb la porta de memòria actual. Finalment, afegiu els dos vectors per obtenir el vector d'estat ocult actualment.
El treball esmentat anteriorment s'indica a continuació:

Tingueu en compte que els cercles blaus denoten la multiplicació per elements. El signe positiu del cercle indica una suma de vectors mentre que el signe negatiu denota una resta de vectors (suma de vectors amb valor negatiu). La matriu de pes W conté diferents pesos per al vector d'entrada actual i l'estat ocult anterior per a cada porta.
Igual que les xarxes neuronals recurrents, una xarxa GRU també genera una sortida a cada pas de temps i aquesta sortida s'utilitza per entrenar la xarxa mitjançant la baixada del gradient.

Tingueu en compte que, igual que el flux de treball, el procés d'entrenament per a una xarxa GRU també és esquemàticament similar al d'una xarxa neuronal recurrent bàsica i només difereix en el funcionament intern de cada unitat recurrent.
L'algoritme de retropropagació a través del temps per a una xarxa d'unitats recurrents amb porta és similar al d'una xarxa de memòria a llarg termini i només difereix en la formació de la cadena diferencial.
Deixar
sigui la sortida prevista a cada pas de temps i
ser la sortida real a cada pas de temps. Llavors l'error a cada pas de temps ve donat per: -
Per tant, l'error total ve donat per la suma d'errors en tots els passos de temps.
De la mateixa manera, el valor
es pot calcular com la suma dels gradients en cada pas de temps.
Utilitzant la regla de la cadena i utilitzant el fet que
és una funció de
i que efectivament és una funció de
, sorgeix la següent expressió:
Així, el gradient d'error total ve donat per la següent:
Tingueu en compte que l'equació de gradient implica una cadena de
que sembla similar a la d'una xarxa neuronal recurrent bàsica, però aquesta equació funciona de manera diferent a causa del funcionament intern de les derivades de
.
Com solucionen les unitats recurrents amb gated el problema dels gradients de fuga?
El valor dels gradients està controlat per la cadena de derivades a partir de
. Recordeu l'expressió per
:-
Utilitzant l'expressió anterior, el valor de
és:-
Recordeu l'expressió per
:-
Utilitzant l'expressió anterior per calcular el valor de
:-
Com que tant la porta d'actualització com la de restabliment utilitzen la funció sigmoide com a funció d'activació, ambdues poden prendre valors 0 o 1.
Cas 1 (z = 1):
En aquest cas, independentment del valor de
, el terme
és igual a z que al seu torn és igual a 1.
Cas 2A(z=0 i r=0):
En aquest cas, el terme
és igual a 0.
Cas 2B(z=0 i r=1):
En aquest cas, el terme
és igual a
. Aquest valor està controlat per la matriu de pes que es pot entrenar i, per tant, la xarxa aprèn a ajustar els pesos de manera que el terme
s'acosta a 1.
Així, l'algoritme de retropropagació a través del temps ajusta els pesos respectius de manera que el valor de la cadena de derivades sigui el més proper a 1 possible.
funció chr python
