logo

Gated Recurrent Unit Networks

Gated Recurrent Unit (GRU) je typ rekurentní neuronové sítě (RNN), kterou zavedli Cho et al. v roce 2014 jako jednodušší alternativa k sítím Long Short-Term Memory (LSTM). Stejně jako LSTM může GRU zpracovávat sekvenční data, jako je text, řeč a data časových řad.

Základní myšlenkou GRU je použití hradlových mechanismů k selektivní aktualizaci skrytého stavu sítě v každém časovém kroku. Hradlovací mechanismy se používají k řízení toku informací do a ze sítě. GRU má dva hradlové mechanismy, nazývané resetovací brána a aktualizační brána.



Resetovací brána určuje, kolik z předchozího skrytého stavu by mělo být zapomenuto, zatímco aktualizační brána určuje, jak velká část nového vstupu by měla být použita k aktualizaci skrytého stavu. Výstup GRU se vypočítá na základě aktualizovaného skrytého stavu.

Rovnice použité k výpočtu resetovací brány, aktualizace brány a skrytého stavu GRU jsou následující:

Resetovat bránu: r_t = sigmoid(W_r * [h_{t-1}, x_t])
Aktualizovat bránu: z_t = sigmoid(W_z * [h_{t-1}, x_t])
Kandidátský skrytý stav: h_t' = tanh(W_h * [r_t * h_{t-1}, x_t])
Skrytý stav: h_t = (1 – z_t) * h_{t-1} + z_t * h_t’
kde W_r, W_z a W_h jsou naučitelné váhové matice, x_t je vstup v časovém kroku t, h_{t-1} je předchozí skrytý stav a h_t je aktuální skrytý stav.



Stručně řečeno, sítě GRU jsou typem RNN, které používají hradlové mechanismy k selektivní aktualizaci skrytého stavu v každém časovém kroku, což jim umožňuje efektivně modelovat sekvenční data. Ukázalo se, že jsou účinné v různých úlohách zpracování přirozeného jazyka, jako je modelování jazyka, strojový překlad a rozpoznávání řeči

Předpoklady: Rekurentní neuronové sítě, Sítě s dlouhodobou krátkodobou pamětí

K vyřešení problému mizejících-explodujících gradientů, se kterým se často setkáváme během provozu základní rekurentní neuronové sítě, bylo vyvinuto mnoho variant. Jednou z nejznámějších variací je Síť dlouhodobé paměti (LSTM) . Jednou z méně známých, ale stejně účinných variant je Gated Recurrent Unit Network (GRU) .

Na rozdíl od LSTM se skládá pouze ze tří bran a neudržuje vnitřní stav buňky. Informace, které jsou uloženy ve stavu vnitřní buňky v rekurentní jednotce LSTM, jsou začleněny do skrytého stavu gated recurrent unit. Tyto souhrnné informace jsou předány další Gated Recurrent Unit. Různé brány GRU jsou popsány níže: -

    Update Gate(z): Určuje, kolik z minulých znalostí je třeba předat do budoucnosti. Je analogický s výstupní bránou v rekurentní jednotce LSTM. Reset Gate(r): Určuje, kolik z minulých znalostí zapomenout. Je to analogie ke kombinaci vstupní brány a brány Forget v rekurentní jednotce LSTM. Aktuální paměťová brána( overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1})) ): Během typické diskuse o Gated Recurrent Unit Network je často přehlížena. Je začleněno do resetovací brány stejně jako vstupní modulační brána je dílčí částí vstupní brány a používá se k zavedení určité nelinearity do vstupu a také k vytvoření nulové střední hodnoty vstupu. Dalším důvodem, proč z ní udělat dílčí část brány Reset, je snížit účinek, který mají předchozí informace na aktuální informace, které jsou předávány do budoucnosti.

Základní pracovní postup sítě Gated Recurrent Unit Network je podobný jako u základní Recurrent Neuron Network, když je znázorněn, hlavní rozdíl mezi těmito dvěma je ve vnitřní práci v rámci každé rekurentní jednotky, protože sítě Gated Recurrent Unit se skládají z bran, které modulují aktuální vstup a předchozí skrytý stav.



Práce hradlové opakovací jednotky:

  • Vezměte vstup aktuálního vstupu a předchozího skrytého stavu jako vektory.
  • Vypočítejte hodnoty tří různých bran podle následujících kroků: -
    1. Pro každé hradlo vypočítejte parametrizovaný proudový vstup a dříve skryté stavové vektory provedením násobení po prvcích (Hadamardův součin) mezi příslušným vektorem a příslušnými váhami pro každé hradlo.
    2. Aplikujte příslušnou aktivační funkci pro každý prvek brány na parametrizované vektory. Níže je uveden seznam bran s aktivační funkcí, která se má pro bránu použít.
 Update Gate : Sigmoid Function Reset Gate : Sigmoid Function>
  • Proces výpočtu Brány aktuální paměti je trochu jiný. Nejprve se vypočítá Hadamardův součin Resetovací brány a dříve skrytý stavový vektor. Poté je tento vektor parametrizován a poté přidán k parametrizovanému vektoru proudového vstupu.

    h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}
  • Pro výpočet aktuálního skrytého stavu je nejprve definován vektor jedniček a stejných rozměrů, jako má vstup. Tento vektor se bude nazývat jedničky a matematicky bude označen 1. Nejprve vypočítejte Hadamardův součin aktualizační brány a dříve skrytý stavový vektor. Poté vygenerujte nový vektor odečtením aktualizační brány od jedniček a poté vypočítejte Hadamardův součin nově vygenerovaného vektoru s aktuální paměťovou bránou. Nakonec přidejte dva vektory, abyste získali aktuálně skrytý vektor stavu.
    E_{t} = -y_{t}log(overline{y}_{t})

    Výše uvedená práce je uvedena níže: -

Všimněte si, že modré kroužky označují násobení po prvcích. Kladné znaménko v kruhu značí sčítání vektoru, záporné znaménko odečítání vektoru (sčítání vektoru se zápornou hodnotou). Hmotnostní matice W obsahuje různé váhy pro aktuální vstupní vektor a předchozí skrytý stav pro každou bránu.

Stejně jako u rekurentních neuronových sítí generuje síť GRU také výstup v každém časovém kroku a tento výstup se používá k trénování sítě pomocí gradientního sestupu.

Všimněte si, že stejně jako pracovní postup je trénovací proces pro síť GRU také schematicky podobný procesu základní rekurentní neuronové sítě a liší se pouze vnitřním fungováním každé rekurentní jednotky.

Algoritmus zpětného šíření v čase pro síť s hradlovými rekurentními jednotkami je podobný jako u sítě s dlouhodobou krátkodobou pamětí a liší se pouze v diferenciální formaci řetězce.

Nechat E = součet _{t} E_{t}být předpokládaným výstupem v každém časovém kroku a Rightarrow E = sum _{t} -y_{t}log(overline{y}_{t})být skutečným výstupem v každém časovém kroku. Pak je chyba v každém časovém kroku dána:-

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

Celková chyba je tedy dána součtem chyb ve všech časových krocích.

frac{částečné E_{t}}{částečné W} = frac{částečné E_{t}}{částečné overline{y}_{t}}frac{částečné overline{y}_ {t}}{částečné h_{t}}frac{částečné h_{t}}{částečné h_{t-1}}frac{částečné h_{t-1}}{částečné h_{t -2}}......frac{částečné h_{0}}{částečné W}
frac{partial E}{partial W} = sum _{t}frac{partial E_{t}}{partial overline{y}_{t}}frac{partial overline{ y}_{t}}{částečné h_{t}}frac{částečné h_{t}}{částečné h_{t-1}}frac{částečné h_{t-1}}{částečné h_{t-2}}......frac{částečné h_{0}}{částečné W}

Podobně i hodnota h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}lze vypočítat jako součet gradientů v každém časovém kroku.

frac{částečné h_{t}}{částečné h_{t-1}} = z + (1-z)frac{částečné overline{h}_{t}}{částečné h_{t- 1}}

Použití řetězového pravidla a využití skutečnosti, že overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1}))je funkcí frac{částečný overline{h_{t}}}{částečný h_{t-1}} = frac{částečný (tanh(Wodot x_{t}+Wodot (r_{t} odot h_{t-1})))}{částečné h_{t-1}} Šipka doprava frac{částečná overline{h_{t}}}{částečná h_{t-1}} = (1 -overline{h}_{t}^{2})(Wodot r)a která je skutečně funkcí , vznikne následující výraz:-



Celkový gradient chyby je tedy dán následovně:



Všimněte si, že gradientová rovnice zahrnuje řetězec která vypadá podobně jako základní rekurentní neuronová síť, ale tato rovnice funguje jinak kvůli vnitřnímu fungování derivátů .

Jak řeší Gated Recurrent Units problém mizejících gradientů?

Hodnota gradientů je řízena řetězcem derivací počínaje . Vybavte si výraz pro :-



Pomocí výše uvedeného výrazu je hodnota pro je:-



Vybavte si výraz pro :-



Pomocí výše uvedeného výrazu vypočítat hodnotu :-



Protože jak aktualizační, tak resetovací brána používají jako aktivační funkci sigmoidní funkci, obě mohou nabývat hodnot 0 nebo 1.

Případ 1 (z = 1):

V tomto případě bez ohledu na hodnotu , termín se rovná z, což se zase rovná 1.

Případ 2A(z=0 a r=0):

V tomto případě termín se rovná 0.

Případ 2B(z=0 a r=1):

V tomto případě termín je rovný . Tato hodnota je řízena váhovou maticí, která je trénovatelná, a tak se síť naučí upravovat váhy tak, aby blíží se k 1.

Algoritmus Back-Propagation Through Time tedy upravuje příslušné váhy tak, aby hodnota řetězce derivátů byla co nejblíže 1.