

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como o Sequence-to-Sequence funciona
<a name="seq-2-seq-howitworks"></a>

Normalmente, uma rede neural para sequence-to-sequence modelagem consiste em algumas camadas, incluindo: 
+ Uma **camada de incorporação**. Nessa camada, a matriz de entrada, que é codificada por tokens de entrada em uma forma esparsa (por exemplo, codificação one-hot), é mapeada para uma camada de atributos densa. Isso é necessário porque um vetor de características de alta dimensão é mais capaz de codificar informações sobre um determinado token (palavra para corpora de texto) do que um vetor simples. one-hot-encoded Também é uma prática padrão inicializar essa camada de incorporação com um vetor de palavras pré-treinado, como [FastText](https://fasttext.cc/)ou [Glove](https://nlp.stanford.edu/projects/glove/), ou inicializá-la aleatoriamente e aprender os parâmetros durante o treinamento. 
+ Uma **camada de codificador**. Depois que os tokens de entrada são mapeados em um espaço de atributo altamente dimensional, a sequência é passada por uma camada de codificador para compactar todas as informações da camada de incorporação de entrada (de toda a sequência) em um vetor de atributo de comprimento fixo. Normalmente, um codificador é feito de redes do tipo RNN, como a memória de longo a curto prazo (LSTM) ou a unidade recorrente fechada (GRU). (O [blog de Christopher Olah](http://colah.github.io/posts/2015-08-Understanding-LSTMs/) explica a LSTM em detalhes.) 
+ Uma **camada de decodificador**. A camada de decodificador pega esse vetor de atributo codificado e produz a sequência de tokens de saída. Essa camada também é geralmente criada com arquiteturas (LSTM e GRU). 

O modelo inteiro é treinado em conjunto para maximizar a probabilidade da sequência de destino tendo em conta a sequência de origem. Este modelo foi introduzido pela primeira vez por [Sutskever et al.](https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf) em 2014. 

**Mecanismo de atenção**. A desvantagem de uma estrutura de codificador e decodificador é que o desempenho do modelo diminui à medida que o comprimento da sequência de origem aumenta, devido ao limite de quantidade de informações que o vetor de atributo codificado de comprimento fixo pode conter. Para enfrentar esse problema, em 2015, Bahdanau et al. propuseram o [mecanismo de atenção](https://arxiv.org/pdf/1409.0473.pdf). Em um mecanismo de atenção, o decodificador tenta encontrar o local na sequência do codificador onde poderiam estar as informações mais importantes e usa essas informações e as palavras decodificadas anteriormente para prever o próximo token na sequência. 

Para obter mais detalhes, consulte o whitepaper [Effective Approaches to Attention-based Neural Machine Translation](https://arxiv.org/abs/1508.04025), de Luong, et al., que explica e simplifica cálculos para vários mecanismos de atenção. Além disso, o whitepaper [Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation](https://arxiv.org/abs/1609.08144), de Wu, et al., descreve a arquitetura do Google para tradução automática, que usa conexões de salto entre camadas de codificadores e decodificadores.