Temas como LSTM, Encoder-Decoder e Attention estão muito quentes no mundo de deep learning. Que tal passarmos pelos pontos principais destes assuntos com teoria e prática na medida certa?

LSTM e o problema das sequências

Long Short-Term Memory (LSTM) são tipos de redes neurais classificadas como Recurrent Neural Network (RNN) e foram especificamente desenvolvidas para prever sequências.

Sequências são estruturas de dados comuns em problemas como tradução de textos, image captioning – atribuição de textos à imagens e conversational modeling – geração de respostas para perguntas escritas. Veja como é simples:

Sequência de entrada A = [I, love, beer], sequência de saída B = [Eu, adoro, cerveja]

Como podemos ver, sequências nada mais são do que vetores de alguma coisa! Chamamos de time steps o tamanho da sequência, por exemplo, no caso acima temos sequências com time steps igual a 3.

Sabendo disso, podemos classificar o problema de previsão de sequências (seq2seq) em algumas categorias como:

  • one-to-one: sequências de 1 time step para sequências de 1 time step
  • many-to-one: sequências de n time steps para sequências de 1 time step
  • many-to-many: sequências de n time steps para sequências de n time steps

Simples até aqui, não? Se você quer saber um pouco mais LSTM e RNN, veja um post que escrevi sobre este assunto aqui. Caso queira voltar um pouco mais e revisar o tema de redes neurais em geral, confira este post.

Eu sei que o texto acima + links de referência que citei já possuem bastante informação. Tire seu tempo para lê-los com calma, talvez executar os códigos…e assim ter uma visão geral sobre as redes neurais e alguns de seus tipos. Dica: não se cobre tanto para entender tudo de primeira, apenas divirta-se 😉

Encoder-Decoder

Uma abordagem para predição de sequências que se mostrou muito eficiente é conhecida como Encoder-Decoder LSTM. Esta abordagem foi proposta originalmente em dois artigos:

Como o próprio nome sugere, Encoder-Decoder é composto por dois modelos:

  • Um para ler a sequência de entrada e codificá-la em uma sequência de saída de tamanho fixo (Encoder)
  • E outro   para decodificar esta sequência de tamanho fixo que foi criada e gerar os resultados

A inovação deste modelo é justamente a presença deste vetor codificado de tamanho fixo, que é capaz de orquestrar a comunicação entre a sequência de entrada e saída. Por este motivo, este modelo pode também ser classificado como sequence embedding.

Encoder-Decoder-LSTM-Model-Architecture

Fonte: Show and Tell: A Neural Image Caption Generator, 2014.

Pensando na implementação técnica da imagem acima em Python (Keras) temos a seguinte arquitetura (nesta ordem):

  • Uma ou mais camadas LSTM para implementar o encoder
  • Uma camada auxilar entre o encoder e decoder para conectar suas saídas e entradas. Isso é necessário porque o encoder retorna uma estrutura de dados em 2D; no entanto, o decoder espera uma estrutura em 3D
  • Uma ou mais camadas LSTM para implementar o decoder
  • Uma camada Dense para implementar a saída do modelo

Veremos sua implementação na parte prática deste artigo, incluvise mais explicações sobre o formato 3D esperado pelas LSTMs.

Attention

Os mesmos Dzmitry Bahdanau, et al., que apresentaram a abordagem Encoder-Decoder, também propuseram o modelo “Attention” como uma extensão natural ao Encoder-Decoder, em “Neural Machine Translation by Jointly Learning to Align and Translate”.

Os próprios autores dizem que a abordagem Encoder-Decoder possui um potencial problema ao tentar codificar uma sequência de entrada em um vetor de saída de tamanho fixo, especialmente em sequências muito grandes. .

Attention tenta resolver este ponto, mantendo as saídas intermediárias do codificador LSTM de cada time step da seqüência de entrada e treinando o modelo para aprender a prestar atenção seletiva a essas entradas e relacioná-las com itens na seqüência de saída.

Se você quiser simular o passo a passo da implementação de Attention, siga este post. Se já estiver satisfeito de teorias e quiser ver tudo isso na prática, siga este notebook.

Grande abraço!
Weslley Moura

 

 

Anúncios