

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Come Sequence-to-Sequence funziona
<a name="seq-2-seq-howitworks"></a>

Solitamente, una rete neurale per la modellazione sequence-to-sequence è composta da alcuni layer, tra cui: 
+ Un **livello di incorporamento**. In questo layer, la matrice di input, ossia token di input codificati in modo sparso (ad esempio, con codifica one-hot), viene mappata a un layer di caratteristiche dense. Questa operazione è necessaria in quanto un vettore caratteristico altamente dimensionale può codificare meglio le informazioni che riguardano un particolare token (parola di raccolta testi) rispetto a un semplice vettore con codifica one-hot. È anche pratica standard inizializzare questo livello di incorporamento con un vettore di parole preimpostato come [FastText](https://fasttext.cc/)o [Glove](https://nlp.stanford.edu/projects/glove/) o inizializzarlo in modo casuale e apprendere i parametri durante l'allenamento. 
+ Un **livello codificatore**. Una volta che i token di input sono stati mappati in uno spazio caratteristico altamente dimensionale, la sequenza viene trasmessa a un layer codificatore per comprimere tutte le informazioni provenienti dal layer di integrazione dell'input (dell'intera sequenza) in un vettore caratteristico a lunghezza fissa. In genere, un encoder è costituito da RNN-type reti come Long Short-Term Memory (LSTM) o unità ricorrenti chiuse (GRU). (il [blog di Colah](http://colah.github.io/posts/2015-08-Understanding-LSTMs/) spiega in modo approfondito la memoria LSTM). 
+ Un **livello decodificatore**. Il layer decodificatore acquisisce il vettore caratteristico codificato e produce la sequenza di output dei token. Inoltre, di solito questo layer è costruito con architetture RNN (LSTM e GRU). 

L'intero modello viene preparato congiuntamente per aumentare al massimo la possibilità di sequenza di destinazione considerata la sequenza di origine. Questo modello è stato introdotto per la prima volta da [Sutskever e altri](https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf) nel 2014. 

**Meccanismo di attenzione**. Lo svantaggio di un framework codificatore-decodificatore è che le prestazioni del modello diminuiscono mano a mano che la lunghezza della sequenza di origine aumenta; questo a causa del limite imposto alla quantità di informazioni che può contenere il vettore caratteristico codificato a lunghezza fissa. Per risolvere questo problema, nel 2015 Bahdanau e altri ha proposto il [meccanismo di attenzione](https://arxiv.org/pdf/1409.0473.pdf). In un meccanismo di attenzione, il decodificatore tenta di trovare la posizione in cui le informazioni più rilevanti potrebbero trovarsi nella sequenza del codificatore e le utilizza con le parole precedentemente decodificate per prevedere il successivo token nella sequenza. 

Per maggiori dettagli, consultate il white paper [Approcci efficaci alla traduzione automatica Attention-based neurale](https://arxiv.org/abs/1508.04025) di Luong, et al. che spiega e semplifica i calcoli per vari meccanismi di attenzione. Inoltre, il whitepaper [Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation](https://arxiv.org/abs/1609.08144) di Wu e altri descrive l'architettura di Google per la traduzione automatica, che si avvale di ignorare le connessioni tra i livelli codificatore e decodificatore.