# Unitats recurrents controlades

Les unitats recurrents controlades (GRU) són un mecanisme de gating en xarxes neuronals recurrents, introduït el 2014 per Kyunghyun Cho i altres. El GRU és com una memòria a llarg termini (LSTM) amb una porta oblidada, però té menys paràmetres que LSTM, ja que no té una porta de sortida. Es va trobar que el rendiment de GRU en determinades tasques de modelatge de música polifònica, modelatge de senyals de parla i processament de llenguatge natural era similar al de LSTM. Els GRU van demostrar que el gating és realment útil en general i l'equip de Bengio va concloure que no hi havia cap conclusió concreta sobre quina de les dues unitats de gating era millor.

## Arquitectura

Hi ha diverses variacions a la unitat completa de control, amb l'obtenció feta utilitzant l'estat ocult anterior i el biaix en diverses combinacions, i una forma simplificada anomenada unitat mínima de control.
L'operador $\odot$ denota el producte de Hadamard a continuació.

### Unitat totalment controlada

Inicialment, per $t=0$, el vector de sortida és $h_{0}=0$
${\begin{aligned}z_{t}&=\sigma _{g}(W_{z}x_{t}+U_{z}h_{t-1}+b_{z})\\r_{t}&=\sigma _{g}(W_{r}x_{t}+U_{r}h_{t-1}+b_{r})\\{\hat {h}}_{t}&=\phi _{h}(W_{h}x_{t}+U_{h}(r_{t}\odot h_{t-1})+b_{h})\\h_{t}&=z_{t}\odot h_{t-1}+(1-z_{t})\odot {\hat {h}}_{t}\end{aligned}}$
Les variables
* $x_{t}$: vector d'entrada
* $h_{t}$: vector de sortida
* ${\hat {h}}_{t}$: vector d'activació candidat
* $z_{t}$: actualitza el vector de la porta
* $r_{t}$: reinicia el vector de la porta
* $W$, $U$ i $b$: matrius de paràmetres i vector
Funcions d'activació
* $\sigma _{g}$: L' original és una funció sigmoide.
* $\phi _{h}$: L' original és una tangent hiperbòlica.
Són possibles funcions d'activació alternatives, sempre que això $\sigma _{g}(x)\in [0,1]$.
Es poden crear formes alternatives canviant $z_{t}$ i $r_{t}$
* Tipus 1, cada porta depèn només de l'estat ocult anterior i del biaix.
    ${\begin{aligned}z_{t}&=\sigma _{g}(U_{z}h_{t-1}+b_{z})\\r_{t}&=\sigma _{g}(U_{r}h_{t-1}+b_{r})\\\end{aligned}}$
* Tipus 2, cada porta només depèn de l'estat ocult anterior.
    ${\begin{aligned}z_{t}&=\sigma _{g}(U_{z}h_{t-1})\\r_{t}&=\sigma _{g}(U_{r}h_{t-1})\\\end{aligned}}$
* Tipus 3, cada porta es calcula utilitzant només el biaix.
    ${\begin{aligned}z_{t}&=\sigma _{g}(b_{z})\\r_{t}&=\sigma _{g}(b_{r})\\\end{aligned}}$

## Referències

* ↑ Cho, Kyunghyun; van Merrienboer, Bart; Bahdanau, DZmitry; Bougares, Fethi; Schwenk, Holger Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation, 2014. arXiv: 1406.1078.
* ↑ Felix Gers; Jürgen Schmidhuber; Fred Cummins Proc. ICANN'99, IEE, London, 1999, 1999, pàg. 850–855. DOI: 10.1049/cp:19991218.
* ↑ «Recurrent Neural Network Tutorial, Part 4 – Implementing a GRU/LSTM RNN with Python and Theano – WildML» (en anglès), 27-10-2015. Arxivat de l'original el 2021-11-10. [Consulta: 18 maig 2016].
* ↑ Ravanelli, Mirco; Brakel, Philemon; Omologo, Maurizio; Bengio, Yoshua IEEE Transactions on Emerging Topics in Computational Intelligence, 2, 2, 2018, pàg. 92–102. arXiv: 1803.10225. DOI: 10.1109/TETCI.2017.2762739.
* ↑ Su, Yuahang; Kuo, Jay Neurocomputing, 356, 2019, pàg. 151–161. arXiv: 1803.01686. DOI: 10.1016/j.neucom.2019.04.044.
* ↑ Frontiers in Artificial Intelligence. DOI: 10.3389/frai.2020.00040.
* ↑ Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling, 2014.
* ↑ Gate-Variants of Gated Recurrent Unit (GRU) Neural Networks.