Bramkowana jednostka rekurencyjna (GRU) to rodzaj rekurencyjnej sieci neuronowej (RNN), który został wprowadzony przez Cho i in. w 2014 r. jako prostsza alternatywa dla sieci długoterminowej pamięci krótkotrwałej (LSTM). Podobnie jak LSTM, GRU może przetwarzać dane sekwencyjne, takie jak tekst, mowa i dane szeregów czasowych.
Podstawową ideą GRU jest wykorzystanie mechanizmów bramkujących do selektywnej aktualizacji ukrytego stanu sieci w każdym kroku czasowym. Mechanizmy bramkujące służą do kontrolowania przepływu informacji do i z sieci. GRU ma dwa mechanizmy bramkujące, zwane bramką resetowania i bramką aktualizacji.
Bramka resetowania określa, jaka część poprzedniego stanu ukrytego powinna zostać zapomniana, natomiast bramka aktualizacji określa, jaka część nowego wejścia powinna zostać wykorzystana do aktualizacji stanu ukrytego. Dane wyjściowe GRU są obliczane na podstawie zaktualizowanego stanu ukrytego.
Równania użyte do obliczenia bramki resetowania, bramki aktualizacji i stanu ukrytego GRU są następujące:
Zresetuj bramę: r_t = sigmoida(W_r * [h_{t-1}, x_t])
Aktualizuj bramkę: z_t = sigmoida(W_z * [h_{t-1}, x_t])
Stan ukryty kandydata: h_t” = tanh(W_h * [r_t * h_{t-1}, x_t])
Ukryty stan: h_t = (1 – z_t) * h_{t-1} + z_t * h_t’
gdzie W_r, W_z i W_h są możliwymi do nauczenia się macierzami wag, x_t jest wejściem w kroku czasowym t, h_{t-1} jest poprzednim stanem ukrytym, a h_t jest bieżącym stanem ukrytym.
Podsumowując, sieci GRU są rodzajem RNN, które wykorzystują mechanizmy bramkowania do selektywnej aktualizacji stanu ukrytego w każdym kroku czasowym, umożliwiając im efektywne modelowanie danych sekwencyjnych. Wykazano, że są skuteczne w różnych zadaniach związanych z przetwarzaniem języka naturalnego, takich jak modelowanie języka, tłumaczenie maszynowe i rozpoznawanie mowy
Wymagania wstępne: Rekurencyjne sieci neuronowe, Długoterminowe sieci pamięci
Aby rozwiązać problem gradientów zanikających i eksplodujących, często spotykany podczas działania podstawowej sieci neuronowej, opracowano wiele jej odmian. Jedną z najbardziej znanych odmian jest Sieć pamięci długoterminowej (LSTM) . Jedną z mniej znanych, ale równie skutecznych odmian jest Bramkowana sieć jednostek cyklicznych (GRU) .
W przeciwieństwie do LSTM składa się tylko z trzech bramek i nie utrzymuje wewnętrznego stanu komórki. Informacje przechowywane w wewnętrznym stanie komórki w jednostce cyklicznej LSTM są włączane do stanu ukrytego bramkowanej jednostki cyklicznej. Ta zbiorcza informacja jest przekazywana do następnej bramkowanej jednostki cyklicznej. Różne bramy GRU opisano poniżej: -
- Update Gate(z): Określa, jaka część wiedzy z przeszłości musi zostać przekazana w przyszłość. Jest to analogiczne do bramki wyjściowej w jednostce rekurencyjnej LSTM. Bramka resetowania (r): Określa, ile wiedzy z przeszłości należy zapomnieć. Jest to analogiczne do połączenia bramki wejściowej i bramki zapominania w jednostce rekurencyjnej LSTM. Bramka pamięci prądu (
): Często jest to pomijane podczas typowej dyskusji na temat sieci bramkowanych jednostek cyklicznych. Jest on wbudowany w bramkę resetowania, tak jak bramka modulacji wejścia jest podczęścią bramki wejściowej i służy do wprowadzenia pewnej nieliniowości na wejściu, a także do uzyskania średniej zerowej na wejściu. Innym powodem, aby uczynić go podczęścią bramki resetowania, jest zmniejszenie wpływu poprzednich informacji na bieżące informacje przekazywane w przyszłość.Podstawowy przepływ pracy w sieci bramkowanych jednostek rekurencyjnych jest podobny do podstawowej sieci neuronowej rekurencyjnej, jak pokazano na ilustracji. Główna różnica między nimi polega na wewnętrznym działaniu każdej jednostki rekurencyjnej, ponieważ sieci bramkowanych jednostek rekurencyjnych składają się z bramek modulujących sygnał bieżące wejście i poprzedni stan ukryty.

Działanie bramkowanej jednostki cyklicznej:
- Przyjmij bieżące wejście i poprzedni stan ukryty jako wektory.
- Oblicz wartości trzech różnych bramek, wykonując kroki podane poniżej:
- Dla każdej bramki oblicz sparametryzowany prąd wejściowy i wcześniej ukryte wektory stanu, wykonując elementarne mnożenie (iloczyn Hadamarda) między danym wektorem a odpowiednimi wagami dla każdej bramki.
- Zastosuj odpowiednią funkcję aktywacji dla każdego elementu bramki na sparametryzowanych wektorach. Poniżej podana jest lista bramek z funkcją aktywacji jaką należy zastosować dla bramki.
Update Gate : Sigmoid Function Reset Gate : Sigmoid Function>
- Proces obliczania aktualnej bramki pamięci jest nieco inny. Najpierw obliczany jest iloczyn Hadamarda bramki Reset i wcześniej ukryty wektor stanu. Następnie wektor ten jest parametryzowany i następnie dodawany do sparametryzowanego wektora wejściowego prądu.

- Aby obliczyć bieżący stan ukryty, najpierw definiuje się wektor jedynek i takie same wymiary jak wejście. Wektor ten będzie nazywany jednościami i matematycznie będzie oznaczony przez 1. Najpierw oblicz iloczyn Hadamarda bramki aktualizacji i wcześniej ukrytego wektora stanu. Następnie wygeneruj nowy wektor, odejmując bramkę aktualizacji od jedności, a następnie oblicz iloczyn Hadamarda nowo wygenerowanego wektora z bieżącą bramką pamięci. Na koniec dodaj dwa wektory, aby uzyskać aktualnie ukryty wektor stanu.
Wyżej wymienione działanie przedstawiono poniżej: -

Zauważ, że niebieskie kółka oznaczają mnożenie elementarne. Znak dodatni w okręgu oznacza dodawanie wektorów, a znak ujemny oznacza odejmowanie wektorów (dodawanie wektorów o wartości ujemnej). Macierz wag W zawiera różne wagi dla bieżącego wektora wejściowego i poprzedniego stanu ukrytego dla każdej bramki.
Podobnie jak reprądowe sieci neuronowe, sieć GRU również generuje sygnał wyjściowy w każdym kroku czasowym, który jest używany do uczenia sieci przy użyciu opadania gradientowego.

Należy zauważyć, że podobnie jak przepływ pracy, proces uczenia sieci GRU jest również schematycznie podobny do podstawowej sieci neuronowej rekurencyjnej i różni się jedynie wewnętrznym działaniem każdej jednostki rekurencyjnej.
Algorytm propagacji wstecznej w czasie dla sieci bramkowanych jednostek rekurencyjnych jest podobny do algorytmu sieci pamięci długoterminowej i różni się jedynie tworzeniem łańcucha różnicowego.
Pozwalać
być przewidywanym wyjściem w każdym kroku czasowym i
być rzeczywistym wyjściem w każdym kroku czasowym. Następnie błąd w każdym kroku czasowym jest określony wzorem: -
Całkowity błąd jest zatem określony przez sumę błędów we wszystkich krokach czasowych.
Podobnie wartość
można obliczyć jako sumę gradientów w każdym kroku czasowym.
Korzystając z reguły łańcuchowej i korzystając z faktu, że
jest funkcją
i która rzeczywiście jest funkcją
powstaje następujące wyrażenie:
Zatem całkowity gradient błędu jest określony przez:
Należy zauważyć, że równanie gradientu obejmuje łańcuch:
który wygląda podobnie do podstawowej rekurencyjnej sieci neuronowej, ale to równanie działa inaczej ze względu na wewnętrzne działanie pochodnych
.
W jaki sposób bramkowane jednostki rekurencyjne rozwiązują problem zanikających gradientów?
Wartość gradientów jest kontrolowana przez łańcuch pochodnych rozpoczynający się od
. Przypomnij sobie wyrażenie dla
:-
Używając powyższego wyrażenia, wartość for
Jest:-
Przypomnij sobie wyrażenie dla
:-
Używając powyższego wyrażenia do obliczenia wartości
:-
Ponieważ zarówno bramka aktualizacji, jak i resetowania wykorzystują funkcję sigmoidalną jako funkcję aktywacji, obie mogą przyjmować wartości 0 lub 1.
Przypadek 1 (z = 1):
W tym przypadku niezależnie od wartości
, termin
jest równe z, które z kolei jest równe 1.
Przypadek 2A(z=0 i r=0):
W tym przypadku termin
jest równe 0.
Przypadek 2B(z=0 i r=1):
W tym przypadku termin
jest równe
. Wartość ta jest kontrolowana przez macierz wag, którą można trenować, dzięki czemu sieć uczy się dostosowywać wagi w taki sposób, aby termin
zbliża się do 1.
Zatem algorytm propagacji wstecznej w czasie dostosowuje odpowiednie wagi w taki sposób, aby wartość łańcucha pochodnych była jak najbliższa 1.
