Recurrent Neural Netowrks (RNNs)

Un recurrent Neural Network rappresenta un tipo di Neural network nel quale è presente un numero arbitrario di input e hidden layer asocati a un ultimo layer di output. Per esempio, in figura viene rappresentata una rete con un livello di input, due hidden layer e un valore in output.

In un recurrent Neural Network gli hidden layer hanno la possibilità di inserire come propri input i loro stessi output, introducendo in questo modo la presenza di un sistema dinamico che riesce a mantere memoria dei dati generati dalla rete durante l’esecuzione.

Un RNN è dunque un Neural Network che ammette la presenza di cicli al suo interno. Il più semplice RNN è il seguente

Dove è presente un unico hidden layer che riesce a inserire come propri input gli output prodotti da se stesso, generando così una elaborazione più profonda dei dati.
Il continuo reinserimento dei propri output come input si traduce in un feed-foreward Neural Network come il seguente

In cui è stata mascherato il ciclo generato tramite un unico hidden layer in molteplici coppie input/output che vengono fornite a porzioni successive della rete.

Le tecniche di allenamento per una rete del genere sono infatti le stesse di quelle già utilizzate per le normali reti feed-foreward, infatti dopo averla “srotolata” ci ritroviamo con un Neural Network che abbiamo già analizzato.

Nota bene: per ogni hidden layer deve valore l’assunzione di Markov.

Il problema del vanishing gradient (scomparsa del gradiente) per gli RNNs

Durante lo step della back-propagation, nel caso in cui venga utilizzata una funzione di attivazione come \text{sigmoid}, \tanh o \text{ReLU}, l’RNN soffrirà del vanishing gradient.

Il problema della scomparsa del gradiente si riferisce alla tendenza del gradiente a diventare sempre più piccolo (eventualmente infinitesimo) durante la fase di back-propagation. A causa di ciò, i pesi dell’intero network sono modificati in maniera molto lenta, dunque ci vorrà più tempo per arrivare alla convergenza del medesimo.

Esiste anche il problema opposto: l’Exploding Gradient, che aggiorna invece i pesi dell’intera rete in maniera troppo veloce, facendoli variare sostanzialmente durante ogni iterazione dell’algoritmo, rendendo così difficile la sua convergenza.

Per ovviare la presenza del vanishing gradient si può modificare la struttura della rete tramite l’utilizzo degli LSTM (Long-Short-Term Memory), spiegati nella relativa pagina.

In poche parole

‎‏‏‎ ‎‏‏‎✅ Un Recurrent Neural Network (RNN) è un tipo di rete neurale che comprende un numero arbitrario di input, hidden layer e un ultimo layer di output. Gli hidden layer in un RNN possono utilizzare i propri output come input, creando un sistema dinamico che conserva la memoria dei dati generati dalla rete durante l’esecuzione.

Se hai trovato errori o informazioni mancanti scrivi a:
giacomo.dandria@esercizistem.com

Se hai trovato errori o informazioni mancanti scrivi a:
giacomo.dandria@esercizistem.com

Questa pagina è stata utile?
No
Torna in alto