logo

Reti di unità ricorrenti recintate

Gated Recurrent Unit (GRU) è un tipo di rete neurale ricorrente (RNN) introdotta da Cho et al. nel 2014 come alternativa più semplice alle reti LSTM (Long Short-Term Memory). Come LSTM, GRU può elaborare dati sequenziali come testo, parlato e dati di serie temporali.

L'idea di base alla base del GRU è quella di utilizzare meccanismi di gating per aggiornare selettivamente lo stato nascosto della rete in ogni fase temporale. I meccanismi di controllo vengono utilizzati per controllare il flusso di informazioni in entrata e in uscita dalla rete. Il GRU ha due meccanismi di controllo, chiamati cancello di ripristino e cancello di aggiornamento.



La porta di ripristino determina quanto del precedente stato nascosto deve essere dimenticato, mentre la porta di aggiornamento determina quanto del nuovo input deve essere utilizzato per aggiornare lo stato nascosto. L'output del GRU viene calcolato in base allo stato nascosto aggiornato.

Le equazioni utilizzate per calcolare il gate di ripristino, il gate di aggiornamento e lo stato nascosto di un GRU sono le seguenti:

Reimposta cancello: r_t = sigmoide(W_r * [h_{t-1}, x_t])
Porta di aggiornamento: z_t = sigmoide(W_z * [h_{t-1}, x_t])
Stato nascosto del candidato: che cavolo = tanh(L_h * [r_t * h_{t-1}, x_t])
Stato nascosto: h_t = (1 – z_t) * h_{t-1} + z_t * h_t'
dove W_r, W_z e W_h sono matrici di pesi apprendibili, x_t è l'input nel passo temporale t, h_{t-1} è lo stato nascosto precedente e h_t è lo stato nascosto corrente.



In sintesi, le reti GRU sono un tipo di RNN che utilizzano meccanismi di gating per aggiornare selettivamente lo stato nascosto in ogni fase temporale, consentendo loro di modellare in modo efficace dati sequenziali. Hanno dimostrato di essere efficaci in varie attività di elaborazione del linguaggio naturale, come la modellazione del linguaggio, la traduzione automatica e il riconoscimento vocale

Prerequisiti: Reti Neurali Ricorrenti, Reti di Memoria a Lungo Breve Termine

Per risolvere il problema dei gradienti di fuga-esplosione spesso riscontrato durante il funzionamento di una rete neurale ricorrente di base, sono state sviluppate molte varianti. Una delle varianti più famose è la Rete di memoria a breve termine (LSTM) . Una delle varianti meno conosciute ma ugualmente efficaci è la Rete di unità ricorrenti recintate (GRU) .

A differenza di LSTM, è costituito da sole tre porte e non mantiene uno stato di cella interna. Le informazioni archiviate nello stato cella interna in un'unità ricorrente LSTM sono incorporate nello stato nascosto dell'unità ricorrente recintata. Queste informazioni collettive vengono trasmesse alla successiva unità ricorrente recintata. Le diverse porte di un GRU sono come descritte di seguito: -

    Update Gate(z): determina quanta conoscenza passata deve essere trasmessa al futuro. È analogo all'Output Gate in un'unità ricorrente LSTM. Reset Gate(r): determina quanta conoscenza passata dimenticare. È analogo alla combinazione di Input Gate e Forget Gate in un'unità ricorrente LSTM.Current Memory Gate( overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1})) ): Viene spesso trascurato durante una tipica discussione sulla Gated Recurrent Unit Network. È incorporato nel Reset Gate proprio come l'Input Modulation Gate è una sottoparte dell'Input Gate e viene utilizzato per introdurre una certa non linearità nell'ingresso e anche per rendere l'ingresso a media zero. Un altro motivo per renderlo una sottoparte del cancello Reset è ridurre l'effetto che le informazioni precedenti hanno sulle informazioni attuali che vengono trasmesse al futuro.

Il flusso di lavoro di base di una rete di unità ricorrenti recintate è simile a quello di una rete neurale ricorrente di base quando illustrato, la differenza principale tra i due è nel funzionamento interno all'interno di ciascuna unità ricorrente poiché le reti di unità ricorrenti recintate consistono di porte che modulano il ingresso corrente e lo stato nascosto precedente.



Funzionamento di un'unità ricorrente recintata:

  • Prendi in input l'input corrente e lo stato nascosto precedente come vettori.
  • Calcolare i valori delle tre diverse porte seguendo i passaggi indicati di seguito: -
    1. Per ciascuna porta, calcolare l'ingresso di corrente parametrizzato e i vettori di stato precedentemente nascosti eseguendo la moltiplicazione per elemento (prodotto Hadamard) tra il vettore interessato e i rispettivi pesi per ciascuna porta.
    2. Applicare la rispettiva funzione di attivazione per ciascun elemento della porta sui vettori parametrizzati. Di seguito è riportato l'elenco dei cancelli con la funzione di attivazione da applicare al cancello.
 Update Gate : Sigmoid Function Reset Gate : Sigmoid Function>
  • Il processo di calcolo del Current Memory Gate è leggermente diverso. Innanzitutto viene calcolato il prodotto Hadamard del Reset Gate e del vettore di stato precedentemente nascosto. Quindi questo vettore viene parametrizzato e quindi sommato al vettore di ingresso corrente parametrizzato.

    h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}
  • Per calcolare lo stato nascosto corrente, innanzitutto viene definito un vettore di unità e delle stesse dimensioni di quello dell'input. Questo vettore sarà chiamato unità e sarà matematicamente indicato con 1. Per prima cosa, calcola il prodotto Hadamard della porta di aggiornamento e del vettore di stato precedentemente nascosto. Quindi generare un nuovo vettore sottraendo la porta di aggiornamento da quelle e quindi calcolare il prodotto Hadamard del vettore appena generato con la porta di memoria corrente. Infine, aggiungi i due vettori per ottenere il vettore di stato attualmente nascosto.
    E_{t} = -y_{t}log(overline{y}_{t})

    Il funzionamento sopra indicato è indicato come di seguito: -

Nota che i cerchi blu indicano la moltiplicazione per elemento. Il segno positivo nel cerchio indica l'addizione vettoriale mentre il segno negativo indica la sottrazione vettoriale (addizione vettoriale con valore negativo). La matrice dei pesi W contiene pesi diversi per il vettore di input corrente e il precedente stato nascosto per ciascuna porta.

Proprio come le reti neurali ricorrenti, anche una rete GRU genera un output in ogni fase temporale e questo output viene utilizzato per addestrare la rete utilizzando la discesa del gradiente.

Katrina Kaif

Si noti che, proprio come il flusso di lavoro, anche il processo di addestramento per una rete GRU è schematicamente simile a quello di una rete neurale ricorrente di base e differisce solo nel funzionamento interno di ciascuna unità ricorrente.

L'algoritmo di retropropagazione nel tempo per una rete di unità ricorrenti recintate è simile a quello di una rete di memoria a lungo termine e differisce solo nella formazione della catena differenziale.

Permettere E = somma _{t} E_{t}essere l'output previsto in ogni fase temporale e Rightarrow E = sum _{t} -y_{t}log(overline{y}_{t})essere l'output effettivo in ogni fase temporale. Quindi l'errore in ogni passaggio temporale è dato da: -

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

L'errore totale è quindi dato dalla somma degli errori in tutti i passaggi temporali.

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

Allo stesso modo, il valore h_{t} = z_{t}odot h_{t-1} + (1-z_{t})odot overline{h}_{t}può essere calcolato come la somma dei gradienti in ogni fase temporale.

frac{partial h_{t}}{partial h_{t-1}} = z + (1-z)frac{partial overline{h}_{t}}{partial h_{t- 1}}

Usando la regola della catena e sfruttando il fatto che overline{h}_{t} = tanh(Wodot x_{t}+Wodot (r_{t}odot h_{t-1}))è una funzione di frac{partial overline{h_{t}}}{partial h_{t-1}} = frac{partial (tanh(Wodot x_{t}+Wodot (r_{t} odot h_{t-1})))}{partial h_{t-1}} Rightarrow frac{partial overline{h_{t}}}{partial h_{t-1}} = (1 -overline{h}_{t}^{2})(Wodot r)e che in effetti è una funzione di , risulta la seguente espressione: -



Pertanto il gradiente di errore totale è dato da quanto segue: -



Si noti che l'equazione del gradiente coinvolge una catena di che sembra simile a quella di una rete neurale ricorrente di base ma questa equazione funziona in modo diverso a causa del funzionamento interno dei derivati ​​di .

In che modo le unità ricorrenti recintate risolvono il problema dei gradienti evanescenti?

Il valore dei gradienti è controllato dalla catena di derivati ​​a partire da . Ricorda l'espressione per :-



Utilizzando l'espressione precedente, il valore for È:-



Ricorda l'espressione per :-



Utilizzando l'espressione precedente per calcolare il valore di :-



Poiché sia ​​la porta di aggiornamento che quella di ripristino utilizzano la funzione sigmoide come funzione di attivazione, entrambe possono assumere valori 0 o 1.

Caso 1(z = 1):

In questo caso, indipendentemente dal valore di , il termine è uguale a z che a sua volta è uguale a 1.

Caso 2A(z=0 e r=0):

In questo caso, il termine è uguale a 0.

Caso 2B(z=0 e r=1):

In questo caso, il termine è uguale a . Questo valore è controllato dalla matrice dei pesi che è addestrabile e quindi la rete impara a regolare i pesi in modo tale che il termine si avvicina a 1.

Pertanto l'algoritmo Back-Propagation Through Time regola i rispettivi pesi in modo tale che il valore della catena di derivati ​​sia il più vicino possibile a 1.