Rete Neurale Ricorrente (RNN): differenze tra le versioni
Nessun oggetto della modifica |
|||
(52 versioni intermedie di 6 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
= Reti Neurali | {{template architettura | ||
|NomeInglese=Recurrent Neural Networks | |||
|Sigla=RNN | |||
|AnnoDiCreazione=1990 | |||
|Pubblicazione=Finding Structure in Time | |||
|URLHomePage=https://onlinelibrary.wiley.com/doi/epdf/10.1207/s15516709cog1402_1 | |||
|Topic=sequenze, Reti neurali | |||
}} | |||
Sono una delle due tipologie in cui si dividono le Reti Neurali, insieme a quella [[Feed-Forward]], dalla quale si differenziano per avere la capacità di "memoria": l'output a una determinata esecuzione non dipende solamente dall'input corrente, ma anche dagli output passati. Questo le rende particolarmente adatte all'elaborazione di '''sequenze di lunghezza arbitraria'''. | |||
=== Funzionamento === | |||
Al centro del funzionamento della RNN vi è un '''vettore monodimensionale''' chiamato "hidden layer", di lunghezza arbitraria a seconda della dimensione del contenuto che si vuole la rete apprenda: questo parametro è chiamato normalmente ''dimensione del layer nascosto, o hidden_layer_size.'' Un vettore troppo piccolo per l'obiettivo dell'addestramento non convergerà, un vettore troppo grande provocherà overfitting. | |||
In un determinato step di esecuzione, chiamato normalmente ''t'', come mostrato in Figura 1: | |||
* all'input della rete viene passato un vettore di input ''X_t'' di lunghezza predefinita (''input_size_'': questa può essere ad esempio una rappresentazione one-hot, embedding, le posizioni sui tre assi cartesiani, i pixel di un'immagine oppure una concatenazione di features provenienti da sensori | |||
* ''X_t'' viene moltiplicato per la matrixe ''Wih'' e vengono aggiunti i bias ''Bih'' | |||
* Il contenuto precendente (''H_1)'' del vettore nascosto viene moltiplicato per la matrice ''Whh'', e vengono aggiunti i bias ''Bhh'' | |||
* I vettori precedenti vengono sommati, e questa somma è il nuovo valore del vettore del layer nascosto, '''H_t''' | |||
* Questo valore viene poi passato da un Layer di pesi e bias per ottenere i [[Logit (Reti Neurali)|logit]] in output | |||
[[File:Calcolo Matriciale RNN.png|nessuno|miniatura|600x600px|Figura 1: Calcolo matriciale all'interno di una RNN]] | |||
[[File:Rete Neurale Ricorrente (RNN).png|nessuno|miniatura|600x600px|Rete Neurale Ricorrente (RNN) - RNN Standard e RNN Srotolata]] | |||
[[File:Rete Neurale Ricorrente - Funzionamento.png|nessuno|miniatura|600x600px|Rete Neurale Ricorrente - Funzionamento]] | |||
== | == Tutorial == | ||
[[Come creare una RNN da zero con PyTorch]] | |||
[https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html Tutorial ufficiale di Pytorch] | |||
== | == Link == | ||
[https://onlinelibrary.wiley.com/doi/epdf/10.1207/s15516709cog1402_1 Finding Structure in Time (Elman, 1990)] | |||
https://karpathy.github.io/2015/05/21/rnn-effectiveness/ | |||
[https://arxiv.org/pdf/1308.0850.pdf Generating Sequences With Recurrent Neural Networks (2014)] | |||
[https://www.youtube.com/watch?v=AsNTP8Kwu80 Miglior Tutorial su Youtube] | |||
[https://gist.github.com/karpathy/d4dee566867f8291f086 Karpathy: Minimal character-level Vanilla RNN model in C] | |||
[[Category:architettura]] | |||
== | {{#seo: | ||
|title=Your page title | |||
|title_mode=append | |||
|keywords=reti neurali, "deep learning", "intelligenza artificiale", "apprendimento automatico", "RNN", "reti neurali ricorrenti", "elaborazione del linguaggio naturale", "serie temporali", "modelli predittivi", "algoritmi di apprendimento" | |||
|description=Le Reti Neurali Ricorrenti (RNN) sono un tipo di rete neurale artificiale particolarmente adatta all'elaborazione di sequenze di dati. Questo articolo spiega il funzionamento delle RNN, la loro struttura e le loro applicazioni, come l'elaborazione del linguaggio naturale e le serie temporali. | |||
|image="Calcolo Matriciale RNN.png" | |||
}} |
Versione attuale delle 13:47, 17 ago 2024
Rete Neurale Ricorrente (RNN) | |
---|---|
Nome Inglese | Recurrent Neural Networks |
Sigla | RNN |
Anno Di Creazione | 1990 |
Pubblicazione | Finding Structure in Time |
URL | https://onlinelibrary.wiley.com/doi/epdf/10.1207/s15516709cog1402 1 |
Topic | sequenze, Reti neurali |
Sono una delle due tipologie in cui si dividono le Reti Neurali, insieme a quella Feed-Forward, dalla quale si differenziano per avere la capacità di "memoria": l'output a una determinata esecuzione non dipende solamente dall'input corrente, ma anche dagli output passati. Questo le rende particolarmente adatte all'elaborazione di sequenze di lunghezza arbitraria.
Funzionamento
Al centro del funzionamento della RNN vi è un vettore monodimensionale chiamato "hidden layer", di lunghezza arbitraria a seconda della dimensione del contenuto che si vuole la rete apprenda: questo parametro è chiamato normalmente dimensione del layer nascosto, o hidden_layer_size. Un vettore troppo piccolo per l'obiettivo dell'addestramento non convergerà, un vettore troppo grande provocherà overfitting.
In un determinato step di esecuzione, chiamato normalmente t, come mostrato in Figura 1:
- all'input della rete viene passato un vettore di input X_t di lunghezza predefinita (input_size_: questa può essere ad esempio una rappresentazione one-hot, embedding, le posizioni sui tre assi cartesiani, i pixel di un'immagine oppure una concatenazione di features provenienti da sensori
- X_t viene moltiplicato per la matrixe Wih e vengono aggiunti i bias Bih
- Il contenuto precendente (H_1) del vettore nascosto viene moltiplicato per la matrice Whh, e vengono aggiunti i bias Bhh
- I vettori precedenti vengono sommati, e questa somma è il nuovo valore del vettore del layer nascosto, H_t
- Questo valore viene poi passato da un Layer di pesi e bias per ottenere i logit in output



Tutorial
Come creare una RNN da zero con PyTorch
Link
Finding Structure in Time (Elman, 1990)
https://karpathy.github.io/2015/05/21/rnn-effectiveness/
Generating Sequences With Recurrent Neural Networks (2014)
Karpathy: Minimal character-level Vanilla RNN model in C