Uma introdução suave aos modelos de geração de legenda de aprendizado profundo

Uma introdução suave aos modelos de geração de legenda de aprendizado profundo

A geração de legendas é o problema desafiador de inteligência artificial de gerar uma descrição textual legível a partir de uma fotografia.

Requer tanto a compreensão da imagem do domínio da visão computacional quanto um modelo de linguagem do campo do processamento de linguagem natural.

É importante considerar e testar várias maneiras de enquadrar um determinado problema de modelagem preditiva e, de fato, existem muitas maneiras de enquadrar o problema de geração de legendas para fotografias.

Neste tutorial, você descobrirá 3 maneiras de gerar legenda de quadro e como desenvolver um modelo para cada uma.

Os três modelos de geração de legenda que veremos são:

  • Modelo 1: Gerar a Sequência Completa
  • Modelo 2: Gerar Word a partir do Word
  • Modelo 3: Gerar palavra a partir da sequência

Também revisaremos algumas das melhores práticas a serem consideradas ao preparar dados e desenvolver modelos de geração de legenda em geral.

Comece seu projeto com meu novo livro Deep Learning for Natural Language Processing, incluindo tutoriais passo a passo e a Código-fonte Python arquivos para todos os exemplos.

Vamos começar.

Modelo 1: Gerar a Sequência Completa

A primeira abordagem envolve a geração de toda a descrição textual da foto dada a uma fotografia.

  • Entrada: Fotografia
  • Resultado: Descrição textual completa.

Este é um modelo de predição de sequência um-para-muitos que gera toda a saída de uma maneira única.

Modelo 1 - Gerar Sequência Inteira

Modelo 1 - Gerar a sequência inteira

Esse modelo sobrecarrega o modelo de linguagem para gerar as palavras certas na ordem certa.

A fotografia passa por um modelo de extração de recursos, como um modelo pré-treinado no conjunto de dados ImageNet.

Uma codificação one hot é usada para a sequência de saída, permitindo que o modelo preveja a distribuição de probabilidade de cada palavra na sequência em todo o vocabulário.

Todas as sequências são preenchidas com o mesmo comprimento. Isso significa que o modelo é forçado a gerar vários “nenhuma palavra”Intervalos de tempo na sequência de saída.

Testando esse método, descobri que um modelo de linguagem muito grande é necessário e, mesmo assim, é difícil ultrapassar o modelo gerando o equivalente em PNL de persistência, por exemplo, gerando a mesma palavra repetida para todo o comprimento da sequência como saída.

Modelo 2: Gerar Word a partir do Word

Esta é uma abordagem diferente em que o LSTM gera uma previsão de uma palavra dada uma fotografia e uma palavra como entrada.

  • Entrada 1: Fotografia.
  • Entrada 2: Palavra gerada anteriormente ou token de início de sequência.
  • Resultado: Próxima palavra na sequência.

Este é um modelo de predição de sequência um para um que gera a descrição textual por meio de chamadas recursivas ao modelo.

Modelo 2- Gerar Word a partir do Word

Modelo 2 - Gerar Word a partir do Word

A entrada de uma palavra é um token para indicar o início da sequência no caso da primeira vez que o modelo é chamado ou é a palavra gerada na hora anterior em que o modelo foi chamado.

A fotografia passa por um modelo de extração de recursos, como um modelo pré-treinado no conjunto de dados ImageNet. A palavra de entrada é codificada por inteiro e passa por uma incorporação de palavra.

A palavra de saída é uma codificação quente para permitir que o modelo preveja as probabilidades das palavras em todo o vocabulário.

O processo recursivo de geração de palavras é repetido até que um token de fim de sequência seja gerado.

Testando esse método, descobri que o modelo gera algumas boas sequências de n-gram, mas fica preso em um loop repetindo as mesmas sequências de palavras para longas descrições. Não há memória suficiente no modelo para lembrar o que foi gerado anteriormente.

Precisa de ajuda com Deep Learning for Text Data?

Faça meu curso intensivo de e-mail gratuito de 7 dias agora (com código).

Clique para se inscrever e também obter uma versão gratuita do Ebook em PDF do curso.

Comece Seu Crash-Course GRÁTIS Agora

Modelo 3: Gerar palavra a partir da sequência

Dada uma fotografia e uma sequência de palavras já geradas para a fotografia como entrada, preveja a próxima palavra na descrição.

  • Entrada 1: Fotografia.
  • Entrada 2: Sequências de palavras geradas anteriormente ou token de início de sequência.
  • Resultado: Próxima palavra na sequência.

Este é um modelo de predição de sequência muitos-para-um que gera uma descrição textual por meio de chamadas recursivas ao modelo.

Modelo 3 - Gerar palavra a partir da sequência

Modelo 3 - Gerar palavra a partir da sequência

É uma generalização do Modelo 2 acima, onde a sequência de palavras de entrada fornece ao modelo um contexto para gerar a próxima palavra na sequência.

A fotografia passa por um modelo de extração de recursos, como um modelo pré-treinado no conjunto de dados ImageNet. A fotografia pode ser fornecida a cada passo de tempo com a sequência, ou uma vez no início, que pode ser a abordagem preferida.

A sequência de entrada é preenchida com um comprimento fixo e codificado por inteiro para passar por uma incorporação de palavra.

A palavra de saída é codificada a quente para permitir que o modelo preveja as probabilidades de palavras em todo o vocabulário.

O processo recursivo de geração de palavras é repetido até que um token de fim de sequência seja gerado.

Este parece ser o modelo preferido descrito em artigos sobre o assunto e pode ser a melhor estrutura que temos para esse tipo de problema por enquanto.

Testando esse método, descobri que o modelo gera prontamente descrições legíveis, cuja qualidade é freqüentemente refinada por modelos maiores treinados por mais tempo. A chave para a habilidade deste modelo é o mascaramento de sequências de entrada preenchidas. Sem mascarar, as sequências de palavras geradas resultantes são terríveis, por exemplo, o token de fim de sequência é repetido indefinidamente.

Melhores práticas de modelagem

Esta seção lista algumas dicas gerais ao desenvolver modelos de geração de legenda.

  • Modelo de extração de recurso de foto pré-treinado. Use um modelo de extração de recurso de foto pré-treinado em um grande conjunto de dados como ImageNet. Isso é chamado de aprendizagem por transferência. Os modelos do Oxford Vision Geometry Group (VGG) que ganharam a competição ImageNet em 2014 são um bom começo.
  • Modelo de incorporação de palavras pré-treinado. Use um modelo de incorporação de palavras pré-treinado com vetores treinados em um corpus grande médio ou treinados em seus dados de texto específicos.
  • Modelos pré-treinados de ajuste fino. Explore como tornar os modelos pré-treinados treináveis ​​em seu modelo para ver se eles podem ser discados para seu problema específico e resultar em um ligeiro aumento na habilidade.
  • Pré-Processamento de Texto. Pré-processe descrições textuais para reduzir o vocabulário de palavras para gerar e, por sua vez, o tamanho do modelo.
  • Pré-processamento de fotos. Pré-processe fotos para o modelo de extração de recurso de foto e até mesmo pré-extraia recursos para que o modelo de extração de recurso completo não seja necessário ao treinar seu modelo.
  • Texto de preenchimento. Pad sequências de entrada para um comprimento fixo; na verdade, isso é um requisito para vetorizar sua entrada para bibliotecas de aprendizado profundo.
  • Preenchimento de máscara. Use o mascaramento na camada de incorporação para ignorar “nenhuma palavra”Intervalos de tempo, geralmente um valor zero quando as palavras são codificadas por inteiro.
  • Atenção. Preste atenção na sequência de entrada ao gerar a palavra de saída para obter um melhor desempenho e entender onde o modelo está “olhando”Quando cada palavra está sendo gerada.
  • Avaliação. Avalie o modelo usando métricas de tradução de texto padrão, como BLEU, e compare as descrições geradas com as legendas de imagens de várias referências.

Você tem suas próprias práticas recomendadas para desenvolver modelos de legenda robustos?
Deixe-me saber nos comentários abaixo.

Leitura Adicional

Esta seção fornece mais recursos sobre o tópico se você estiver procurando ir mais fundo.

Resumo

Neste tutorial, você descobriu 3 modelos de previsão de sequência que podem ser usados ​​para resolver o problema de geração de descrições textuais legíveis por humanos para fotografias.

Você já experimentou algum desses modelos?
Compartilhe suas experiências nos comentários abaixo.

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

Desenvolva modelos de aprendizado profundo para dados de texto hoje!

Aprendizado profundo para processamento de linguagem natural

Desenvolva seus próprios modelos de texto em minutos

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

Descubra como em meu novo Ebook:
Aprendizado profundo para processamento de linguagem natural

Ele fornece tutoriais de auto-estudo em tópicos como:
Saco de palavras, incorporação de palavras, modelos de linguagem, geração de legendas, tradução de texto e muito mais...

Finalmente, leve o aprendizado profundo para seus projetos de processamento de linguagem natural

Ignore os acadêmicos. Apenas resultados.

Veja o que há dentro

Você também pode estar interessado em