logo

Gated Recurrent Unit Networks

Gated Recurrent Unit (GRU) je typ rekurentnej neurónovej siete (RNN), ktorú zaviedli Cho a kol. v roku 2014 ako jednoduchšiu alternatívu k sieťam s dlhou krátkodobou pamäťou (LSTM). Podobne ako LSTM, aj GRU dokáže spracovať sekvenčné údaje, ako sú text, reč a údaje z časových radov.

Základnou myšlienkou GRU je použitie hradlových mechanizmov na selektívnu aktualizáciu skrytého stavu siete v každom časovom kroku. Hradlovacie mechanizmy sa používajú na riadenie toku informácií do a zo siete. GRU má dva hradlové mechanizmy, nazývané resetovacia brána a aktualizačná brána.



Resetovacia brána určuje, koľko z predchádzajúceho skrytého stavu by sa malo zabudnúť, zatiaľ čo aktualizačná brána určuje, koľko z nového vstupu by sa malo použiť na aktualizáciu skrytého stavu. Výstup GRU sa vypočíta na základe aktualizovaného skrytého stavu.

Rovnice použité na výpočet resetovacej brány, aktualizačnej brány a skrytého stavu GRU sú nasledovné:

Resetovať bránu: r_t = sigmoid(W_r * [h_{t-1}, x_t])
Aktualizovať bránu: z_t = sigmoid(W_z * [h_{t-1}, x_t])
Kandidátsky 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 sú naučiteľné matice váh, x_t je vstup v časovom kroku t, h_{t-1} je predchádzajúci skrytý stav a h_t je aktuálny skrytý stav.



Stručne povedané, siete GRU sú typom RNN, ktoré používajú mechanizmy hradlovania na selektívnu aktualizáciu skrytého stavu v každom časovom kroku, čo im umožňuje efektívne modelovať sekvenčné údaje. Ukázalo sa, že sú účinné pri rôznych úlohách spracovania prirodzeného jazyka, ako je modelovanie jazyka, strojový preklad a rozpoznávanie reči

Požiadavky: Rekurentné neurónové siete, siete s dlhou krátkodobou pamäťou

Na vyriešenie problému miznúcich-explodujúcich gradientov, ktorý sa často vyskytuje počas prevádzky základnej rekurentnej neurónovej siete, bolo vyvinutých mnoho variácií. Jednou z najznámejších variácií je Sieť s dlhou krátkou pamäťou (LSTM) . Jednou z menej známych, ale rovnako účinných variácií je Gated Recurrent Unit Network (GRU) .

Na rozdiel od LSTM pozostáva iba z troch brán a neudržiava stav vnútornej bunky. Informácie, ktoré sú uložené v stave vnútornej bunky v rekurentnej jednotke LSTM, sú začlenené do skrytého stavu hradlovej rekurentnej jednotky. Tieto súhrnné informácie sa prenesú na ďalšiu hradenú opakujúcu sa jednotku. Rôzne brány GRU sú opísané nižšie: -

    Update Gate(z): Určuje, koľko z minulých vedomostí je potrebné odovzdať do budúcnosti. Je to analogické s výstupnou bránou v rekurentnej jednotke LSTM. Reset Gate(r): Určuje, koľko z minulých vedomostí treba zabudnúť. Je to analogické ku kombinácii vstupnej brány a brány zabudnutia v rekurentnej jednotke LSTM. Aktuálna pamäťová brána( overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1})) ): Často sa prehliada počas typickej diskusie o Gated Recurrent Unit Network. Je začlenený do resetovacej brány, rovnako ako vstupná modulačná brána je podčasť vstupnej brány a používa sa na zavedenie určitej nelinearity do vstupu a tiež na vytvorenie nulovej strednej hodnoty vstupu. Ďalším dôvodom, prečo sa má stať súčasťou brány Reset, je zníženie vplyvu, ktorý majú predchádzajúce informácie na aktuálne informácie, ktoré sa prenášajú do budúcnosti.

Základný pracovný tok siete hradlových rekurentných jednotiek je podobný ako pri základnej rekurentnej neurónovej sieti, keď je znázornené, hlavný rozdiel medzi nimi je vo vnútornej práci v rámci každej rekurentnej jednotky, pretože siete hradlových rekurentných jednotiek pozostávajú z brán, ktoré modulujú aktuálny vstup a predchádzajúci skrytý stav.



Fungovanie uzavretej rekurentnej jednotky:

  • Vezmite vstup aktuálny vstup a predchádzajúci skrytý stav ako vektory.
  • Vypočítajte hodnoty troch rôznych brán podľa nasledujúcich krokov: -
    1. Pre každé hradlo vypočítajte parametrizovaný prúdový vstup a predtým skryté stavové vektory vykonaním prvkového násobenia (Hadamardov súčin) medzi príslušným vektorom a príslušnými váhami pre každé hradlo.
    2. Použite príslušnú aktivačnú funkciu pre každý prvok brány na parametrizované vektory. Nižšie je uvedený zoznam brán s aktivačnou funkciou, ktorá sa má použiť pre bránu.
 Update Gate : Sigmoid Function Reset Gate : Sigmoid Function>
  • Proces výpočtu Brány aktuálnej pamäte je trochu odlišný. Najprv sa vypočíta Hadamardov súčin Reset Gate a predtým skrytý stavový vektor. Potom sa tento vektor parametrizuje a potom sa pridá k parametrizovanému vektoru prúdového vstupu.

    h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}
  • Na výpočet aktuálneho skrytého stavu je najprv definovaný vektor jednotiek a rovnakých rozmerov, ako má vstup. Tento vektor sa bude nazývať jedničky a matematicky bude označený 1. Najprv vypočítajte Hadamardov súčin aktualizačnej brány a predtým skrytý stavový vektor. Potom vygenerujte nový vektor odčítaním aktualizačnej brány od jednotiek a potom vypočítajte Hadamardov súčin novovygenerovaného vektora s aktuálnou pamäťovou bránou. Nakoniec pridajte dva vektory, aby ste získali aktuálne skrytý vektor stavu.
    E_{t} = -y_{t}log(overline{y}_{t})

    Vyššie uvedená práca je uvedená nižšie: -

Všimnite si, že modré krúžky označujú násobenie po prvkoch. Kladné znamienko v kruhu označuje sčítanie vektora, zatiaľ čo záporné znamienko označuje odčítanie vektora (sčítanie vektora so zápornou hodnotou). Matica váh W obsahuje rôzne váhy pre aktuálny vstupný vektor a predchádzajúci skrytý stav pre každú bránu.

Rovnako ako rekurentné neurónové siete, sieť GRU tiež generuje výstup v každom časovom kroku a tento výstup sa používa na trénovanie siete pomocou gradientového zostupu.

Všimnite si, že rovnako ako pracovný postup, aj tréningový proces pre sieť GRU je tiež schematicky podobný procesu základnej rekurentnej neurónovej siete a líši sa iba vo vnútornom fungovaní každej rekurentnej jednotky.

Algoritmus spätného šírenia v čase pre sieť s hradlovými rekurentnými jednotkami je podobný ako v sieti s dlhou krátkodobou pamäťou a líši sa iba v diferenciálnom vytváraní reťazca.

Nechaj E = suma _{t} E_{t}byť predpovedaný výstup v každom časovom kroku a Rightarrow E = sum _{t} -y_{t}log(overline{y}_{t})byť skutočným výstupom v každom časovom kroku. Potom je chyba v každom časovom kroku daná: -

frac{čiastočné E}{čiastočné W} = sum _{t} frac{čiastočné E_{t}}{čiastočné W}

Celková chyba je teda daná súčtom chýb vo všetkých časových krokoch.

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

Podobne aj hodnota h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}možno vypočítať ako súčet gradientov v každom časovom kroku.

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

Pomocou pravidla reťaze a pomocou skutočnosti, že overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1}))je funkciou frac{partial overline{h_{t}}}{partial h_{t-1}} = frac{partial (tanh(Wodot x_{t}+Wodot (r_{t} odot h_{t-1})))}{čiastočné h_{t-1}} Šípka doprava frac{čiastočné overline{h_{t}}}{čiastočné h_{t-1}} = (1 -overline{h}_{t}^{2})(Wodot r)a ktorá je skutočne funkciou , vzniká nasledujúci výraz: -



Celkový chybový gradient je teda daný nasledovne:



Všimnite si, že gradientová rovnica zahŕňa reťazec ktorá vyzerá podobne ako základná rekurentná neurónová sieť, ale táto rovnica funguje inak kvôli vnútornému fungovaniu derivátov .

Ako riešia Gated Recurrent Units problém miznúcich gradientov?

Hodnota gradientov je riadená reťazcom derivátov, ktoré začínajú od . Spomeňte si na výraz pre :-



Použitím vyššie uvedeného výrazu je hodnota pre je:-



Spomeňte si na výraz pre :-



Pomocou vyššie uvedeného výrazu vypočítame hodnotu :-



Keďže aktualizačná aj resetovacia brána používajú ako svoju aktivačnú funkciu sigmoidnú funkciu, obe môžu nadobúdať hodnoty 0 alebo 1.

Prípad 1 (z = 1):

V tomto prípade bez ohľadu na hodnotu , termín sa rovná z, čo sa zase rovná 1.

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

V tomto prípade termín sa rovná 0.

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

V tomto prípade termín rovná sa . Táto hodnota je riadená váhovou maticou, ktorá je trénovateľná a tak sa sieť naučí upravovať váhy tak, aby blíži sa k 1.

Algoritmus Back-Propagation Through Time teda upravuje príslušné váhy tak, aby hodnota reťazca derivátov bola čo najbližšie k 1.