Introdução gentil à atenção global para redes neurais recorrentes codificador-decodificador

Introdução gentil à atenção global para redes neurais recorrentes codificador-decodificador

O modelo codificador-decodificador fornece um padrão para o uso de redes neurais recorrentes para resolver problemas desafiadores de predição de sequência a sequência, como tradução automática.

Atenção é uma extensão do modelo codificador-decodificador que melhora o desempenho da abordagem em sequências mais longas. A atenção global é uma simplificação da atenção que pode ser mais fácil de implementar em bibliotecas de aprendizado profundo declarativas como Keras e pode alcançar melhores resultados do que o mecanismo de atenção clássico.

Nesta postagem, você descobrirá o mecanismo de atenção global para modelos de redes neurais recorrentes de codificador-decodificador.

Depois de ler esta postagem, você saberá:

  • O modelo codificador-decodificador para problemas de predição de sequência a sequência, como tradução automática.
  • O mecanismo de atenção que melhora o desempenho dos modelos codificador-decodificador em sequências longas.
  • O mecanismo de atenção global que simplifica o mecanismo de atenção e pode alcançar melhores resultados.

Comece seu projeto com meu novo livro Long Short-Term Memory Networks With Python, incluindo tutoriais passo a passo e a Código-fonte Python arquivos para todos os exemplos.

Vamos começar.

Introdução gentil à atenção global para redes neurais recorrentes codificador-decodificador

Introdução gentil à atenção global para redes neurais recorrentes codificador-decodificador
Foto de Kathleen Tyler Conklin, alguns direitos reservados.

Visão geral

Este tutorial é dividido em 4 partes; eles estão:

  1. Modelo codificador-decodificador
  2. Atenção
  3. Atenção Global
  4. Atenção global em mais detalhes

Modelo codificador-decodificador

O modelo codificador-decodificador é uma maneira de organizar redes neurais recorrentes para lidar com problemas de predição de sequência para sequência em que o número de etapas de tempo de entrada e saída diferem.

O modelo foi desenvolvido para o problema da tradução automática, como a tradução de frases do francês para o inglês.

O modelo envolve dois submodelos, como segue:

  • Codificador: Um modelo RNN que lê toda a sequência de origem em uma codificação de comprimento fixo.
  • Decodificador: Um modelo RNN que usa a sequência de entrada codificada e a decodifica para gerar a sequência de destino.

A imagem abaixo mostra a relação entre o codificador e os modelos do decodificador.

Exemplo de uma rede codificador-decodificador

Exemplo de uma rede codificador-decodificador
Retirado de “Sequence to Sequence Learning with Neural Networks,” 2014.

A rede neural recorrente Long Short-Term Memory é comumente usada para o codificador e o decodificador. A saída do codificador que descreve a sequência fonte é utilizada para iniciar o processo de decodificação, condicionada às palavras já geradas como saída até o momento. Especificamente, o estado oculto do codificador para a última etapa da entrada é usado para inicializar o estado do decodificador.

O LSTM calcula esta probabilidade condicional obtendo primeiro a representação de dimensão fixa v da sequência de entrada (x1, ..., xT) dada pelo último estado oculto do LSTM e, em seguida, calculando a probabilidade de y1, ..., yT 'com um formulação LSTM-LM padrão cujo estado oculto inicial é definido como a representação v de x1, ..., xT

- Sequence to Sequence Learning with Neural Networks, 2014.

A imagem abaixo mostra a codificação explícita da sequência de origem para um vetor de contexto c que é usado junto com as palavras geradas até agora para produzir a próxima palavra na sequência de destino.

Codificação da sequência de origem para um vetor de contexto que é então decodificado

Codificação da sequência de origem para um vetor de contexto que é então decodificado
Retirado de "Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation", 2014.

Contudo, […], yt e h

- Aprendizagem de representações de frases usando RNN Encoder-Decoder for Statistical Machine Translation, 2014.

Atenção

O modelo codificador-decodificador mostrou ser um modelo ponta a ponta que teve um bom desempenho em problemas desafiadores de previsão de sequência a sequência, como tradução automática.

O modelo parecia estar limitado a sequências muito longas. A razão para isso foi considerada a codificação de comprimento fixo da sequência de origem.

Um problema potencial com essa abordagem de codificador-decodificador é que uma rede neural precisa ser capaz de compactar todas as informações necessárias de uma sentença fonte em um vetor de comprimento fixo. Isso pode tornar difícil para a rede neural lidar com frases longas, especialmente aquelas que são mais longas do que as frases no corpus de treinamento.

- Tradução automática neural por Jointly Learning to Align and Translate, 2015.

Em seu artigo de 2015 intitulado “Tradução automática neural aprendendo conjuntamente a alinhar e traduzir, ”Bahdanau, et al. descrever um mecanismo de atenção para resolver este problema.

Atenção é um mecanismo que fornece uma codificação mais rica da sequência de origem a partir da qual construir um vetor de contexto que pode então ser usado pelo decodificador.

Atenção permite que o modelo aprenda a quais palavras codificadas na sequência de origem prestar atenção e em que grau durante a previsão de cada palavra na sequência de destino.

Exemplo do modelo codificador-decodificador com atenção

Exemplo do modelo codificador-decodificador com atenção
Retirado de "Neural Machine Translation by Jointly Learning to Align and Translate", 2015.

O estado oculto para cada etapa de tempo de entrada é obtido do codificador, em vez do estado oculto para a etapa de tempo final da sequência de origem.

Um vetor de contexto é construído especificamente para cada palavra de saída na sequência de destino. Primeiro, cada estado oculto do codificador é classificado usando uma rede neural e, em seguida, normalizado para ser uma probabilidade sobre os estados ocultos do codificador. Finalmente, as probabilidades são usadas para calcular uma soma ponderada dos estados ocultos do codificador para fornecer um vetor de contexto a ser usado no decodificador.

Para uma explicação mais completa de como a atenção Bahdanau funciona com um exemplo prático, consulte a postagem:

Atenção Global

Em seu artigo “Abordagens Eficazes para Tradução Automática Neural Baseada na Atenção”, os pesquisadores de PNL de Stanford Minh-Thang Luong, et al. propor um mecanismo de atenção para o modelo codificador-decodificador para tradução automática denominado "atenção global".

É proposto como uma simplificação do mecanismo de atenção proposto por Bahdanau, et al. em seu artigo “Tradução automática neural por aprendizado conjunto para alinhar e traduzir.” Na atenção de Bahdanau, o cálculo de atenção requer a saída do decodificador da etapa de tempo anterior.

A atenção global, por outro lado, usa a saída do codificador e do decodificador apenas para o intervalo de tempo atual. Isso o torna atraente para implementação em bibliotecas vetorizadas, como Keras.

… Nosso caminho de computação é mais simples; vamos de ht -> at -> ct -> ~ ht, em seguida, fazemos uma previsão […] Por outro lado, em qualquer momento t, Bahdanau et al. (2015) constrói a partir do estado oculto anterior ht − 1 -> at -> ct -> ht, que, por sua vez, passa por uma camada de saída profunda e maxout antes de fazer previsões.

- Abordagens eficazes para a tradução automática neural baseada na atenção, 2015.

O modelo avaliado no Luong et al. artigo é diferente daquele apresentado por Bahdanau, et al. (por exemplo, sequência de entrada reversa em vez de entradas bidirecionais, LSTM em vez de elementos GRU e o uso de dropout), no entanto, os resultados do modelo com atenção global alcançam melhores resultados em uma tarefa de tradução automática padrão.

… A abordagem de atenção global dá um aumento significativo de +2,8 BLEU, tornando nosso modelo ligeiramente melhor do que o sistema de atenção básico de Bahdanau et al.

- Abordagens eficazes para a tradução automática neural baseada na atenção, 2015.

A seguir, vamos examinar mais de perto como a atenção global é calculada.

Atenção global em mais detalhes

A atenção global é uma extensão do modelo de codificador-decodificador atencional para redes neurais recorrentes.

Embora desenvolvido para tradução automática, é relevante para outras tarefas de geração de linguagem, como geração de legenda e resumo de texto, e até tarefas de previsão de sequência em geral.

Podemos dividir o cálculo da atenção global nas seguintes etapas de computação para uma rede codificador-decodificador que prevê uma etapa de tempo dada uma sequência de entrada. Veja o artigo para as equações relevantes.

  • Problema. A sequência de entrada é fornecida como entrada para o codificador (X).
  • Codificação. O codificador RNN codifica a sequência de entrada e produz uma sequência de mesmo comprimento (hs).
  • Decodificação. O decodificador interpreta a codificação e produz uma decodificação de destino (ht).
  • Alinhamento. Cada etapa de tempo codificada é pontuada usando a decodificação de destino, então as pontuações são normalizadas usando uma função softmax. Quatro funções de pontuação diferentes são propostas:
    • ponto: o produto escalar entre a decodificação de destino e a codificação de origem.
    • em geral: o produto escalar entre a decodificação de destino e a codificação de origem ponderada.
    • concat: um processamento de rede neural da codificação de origem concatenada e decodificação de destino.
    • localização: um softmax da decodificação do alvo ponderado.
  • Vetor de contexto. Os pesos de alinhamento são aplicados à codificação de origem calculando a soma ponderada para resultar no vetor de contexto.
  • Decodificação Final. O vetor de contexto e a decodificação de destino são concatenados, pesados ​​e transferidos usando uma função tanh.

A decodificação final é passada por um softmax para prever a probabilidade da próxima palavra na sequência no vocabulário de saída.

O gráfico a seguir fornece uma ideia de alto nível do fluxo de dados ao calcular a atenção global.

Descrição da atenção global em uma rede neural recorrente codificador-decodificador

A descrição da Atenção Global em uma Rede Neural Recorrente de Codificador-Decodificador.
Retirado de "Abordagens eficazes para tradução automática neural baseada na atenção".

Os autores avaliaram todas as funções de pontuação e descobriram geralmente que a função de pontuação simples parecia ter um bom desempenho.

É interessante observar que o ponto funciona bem para a atenção global ...

- Abordagens eficazes para a tradução automática neural baseada na atenção, 2015.

Por causa do fluxo de dados mais simples e mais abrangente, a atenção global pode ser um bom candidato para implementação em bibliotecas declarativas de aprendizado profundo, como TensorFlow, Theano e wrappers como Keras.

Leitura Adicional

Esta seção fornece mais recursos sobre o tópico se você deseja se aprofundar.

Codificador-decodificador

Atenção

Atenção Global

Resumo

Nesta postagem, você descobriu o mecanismo de atenção global para modelos de redes neurais recorrentes de codificador-decodificador.

Especificamente, você aprendeu:

  • O modelo codificador-decodificador para problemas de predição de sequência a sequência, como tradução automática.
  • O mecanismo de atenção que melhora o desempenho dos modelos codificador-decodificador em sequências longas.
  • O mecanismo de atenção global que simplifica o mecanismo de atenção e pode alcançar melhores resultados.

Você tem alguma pergunta?
Tire suas dúvidas nos comentários abaixo e farei o possível para responder.

Desenvolva LSTMs para Predição de Sequência hoje!

Redes de memória de longo prazo com Python

Desenvolva seus próprios modelos LSTM em minutos

... com apenas algumas linhas de código python

Descubra como em meu novo Ebook:
Redes de memória de longo prazo com Python

Ele fornece tutoriais de auto-estudo em tópicos como:
CNN LSTMs, codificador-decodificador LSTMs, modelos generativos, preparação de dados, fazer previsões e muito mais...

Finalmente traga redes neurais recorrentes LSTM para
Seus projetos de previsão de sequência

Ignore os acadêmicos. Apenas resultados.

Veja o que há dentro

Você também pode estar interessado em