

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à.

# Funzionamento di Sequence-to-Sequence
<a name="seq-2-seq-howitworks"></a>

In genere, una rete neurale per la sequence-to-sequence modellazione è composta da alcuni livelli, 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. Ciò è necessario perché un vettore di caratteristiche ad alta dimensione è più in grado di codificare le informazioni relative a un particolare token (parola per corpora di testo) rispetto a un vettore semplice. one-hot-encoded È inoltre prassi standard inizializzare questo layer di incorporamento con un vettore di parole già addestrato 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. Di solito, un codificatore è costituito da reti di tipo RNN come memoria a lungo-breve termine (LSTM, Long Short Term Memory) o unità ricorrenti vincolare (GRU, Gated Recurrent Unit) (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 ulteriori dettagli, consulta il whitepaper [Effective Approaches to Attention-based Neural Machine Translation](https://arxiv.org/abs/1508.04025) di Luong e altri che spiega e semplifica i calcoli per i 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.