Melhores práticas para classificação de texto com aprendizado profundo

Melhores práticas para classificação de texto com aprendizado profundo

A classificação de texto descreve uma classe geral de problemas, como prever o sentimento de tweets e resenhas de filmes, bem como classificar e-mails como spam ou não.

Os métodos de aprendizado profundo estão provando ser muito bons na classificação de textos, alcançando resultados de última geração em um conjunto de problemas de benchmark acadêmico padrão.

Nesta postagem, você descobrirá algumas práticas recomendadas a serem consideradas ao desenvolver modelos de aprendizado profundo para classificação de texto.

Depois de ler esta postagem, você saberá:

  • A combinação geral de métodos de aprendizagem profunda a considerar ao iniciar seus problemas de classificação de texto.
  • A primeira arquitetura a ser tentada com conselhos específicos sobre como configurar hiperparâmetros.
  • Essas redes mais profundas podem ser o futuro da área em termos de flexibilidade e capacidade.

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.

Melhores práticas para classificação de documentos com aprendizado profundo

Melhores práticas para classificação de documentos com aprendizado profundo
Foto por storebukkebruse, alguns direitos reservados.

Visão geral

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

  1. Embeddings de palavras + CNN = classificação de texto
  2. Use uma arquitetura CNN de camada única
  3. Disque em hiperparâmetros CNN
  4. Considere CNNs em nível de personagem
  5. Considere CNNs mais profundos para classificação

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

1. Embeddings de palavras + CNN = Classificação de texto

O modus operandi para classificação de texto envolve o uso de embedding de palavras para representar palavras e uma Rede Neural Convolucional (CNN) para aprender como discriminar documentos em problemas de classificação.

Yoav Goldberg, em sua cartilha sobre aprendizado profundo para processamento de linguagem natural, comenta que as redes neurais em geral oferecem melhor desempenho do que os classificadores lineares clássicos, especialmente quando usadas com embeddings de palavras pré-treinadas.

A não linearidade da rede, bem como a capacidade de integrar facilmente embeddings de palavras pré-treinadas, geralmente levam a uma precisão de classificação superior.

- A Primer on Neural Network Models for Natural Language Processing, 2015.

Ele também comenta que as redes neurais convolucionais são eficazes na classificação de documentos, principalmente porque são capazes de selecionar características salientes (por exemplo, tokens ou sequências de tokens) de uma forma que é invariável em relação à sua posição nas sequências de entrada.

Redes com camadas convolucionais e de pooling são úteis para tarefas de classificação nas quais esperamos encontrar fortes pistas locais sobre a associação de classe, mas essas pistas podem aparecer em diferentes lugares na entrada. […] Gostaríamos de saber que certas sequências de palavras são bons indicadores do tópico e não se importam necessariamente onde aparecem no documento. As camadas convolucionais e de pooling permitem que o modelo aprenda a encontrar esses indicadores locais, independentemente de sua posição.

- A Primer on Neural Network Models for Natural Language Processing, 2015.

A arquitetura é, portanto, composta por três peças principais:

  1. Word Embedding: Uma representação distribuída de palavras em que palavras diferentes com um significado semelhante (com base no uso) também têm uma representação semelhante.
  2. Modelo Convolucional: Um modelo de extração de recursos que aprende a extrair recursos importantes de documentos representados por meio de incorporação de palavras.
  3. Modelo Totalmente Conectado: A interpretação dos recursos extraídos em termos de uma saída preditiva.

Yoav Goldberg destaca o papel da CNN como um modelo extrator de recursos em seu livro:

… A CNN é, em essência, uma arquitetura de extração de recursos. Ele não constitui uma rede útil e autônoma por si só, mas sim deve ser integrado em uma rede maior e ser treinado para trabalhar em conjunto com ela a fim de produzir um resultado final. A responsabilidade da camada CNNs é extrair subestruturas significativas que são úteis para a tarefa de previsão geral em mãos.

- Página 152, Métodos de rede neural para processamento de linguagem natural, 2017.

A vinculação desses três elementos é demonstrada talvez em um dos exemplos mais amplamente citados da combinação, descrito na próxima seção.

2. Use uma arquitetura CNN de camada única

Você pode obter bons resultados para a classificação de documentos com uma única camada CNN, talvez com kernels de tamanhos diferentes nos filtros para permitir o agrupamento de representações de palavras em escalas diferentes.

Yoon Kim, em seu estudo sobre o uso de vetores de palavras pré-treinados para tarefas de classificação com Redes Neurais Convolucionais, descobriu que o uso de vetores de palavras estáticos pré-treinados funciona muito bem. Ele sugere que embeddings de palavras pré-treinados que foram treinados em corpora de texto muito grandes, como os vetores word2vec disponíveis gratuitamente treinados em 100 bilhões de tokens do Google news podem oferecer bons recursos universais para uso no processamento de linguagem natural.

Apesar do pouco ajuste de hiperparâmetros, um CNN simples com uma camada de convolução funciona muito bem. Nossos resultados somam-se à evidência bem estabelecida de que o pré-treinamento não supervisionado de vetores de palavras é um ingrediente importante no aprendizado profundo para PNL

- Redes neurais convolucionais para classificação de sentenças, 2014.

Ele também descobriu que outros ajustes específicos de tarefas dos vetores de palavras oferecem uma pequena melhoria adicional no desempenho.

Kim descreve a abordagem geral do uso de CNN para processamento de linguagem natural. As frases são mapeadas para vetores de incorporação e estão disponíveis como uma entrada de matriz para o modelo. As convoluções são realizadas em toda a entrada de palavras usando kernels de tamanhos diferentes, como 2 ou 3 palavras por vez. Os mapas de recursos resultantes são então processados ​​usando uma camada de pooling máxima para condensar ou resumir os recursos extraídos.

A arquitetura é baseada na abordagem usada por Ronan Collobert, et al. em seu artigo “Processamento de linguagem natural (quase) do zero“, 2011. Nele, eles desenvolvem um único modelo de rede neural ponta a ponta com camadas convolucionais e de pooling para uso em uma variedade de problemas fundamentais de processamento de linguagem natural.

Kim fornece um diagrama que ajuda a ver a amostra dos filtros usando kernels de tamanhos diferentes em cores diferentes (vermelho e amarelo).

Exemplo de um filtro CNN e arquitetura de pesquisa para processamento de linguagem natural

Um exemplo de um Filtro CNN e Arquitetura de Pesquisa para Processamento de Linguagem Natural.
Retirado de “Redes Neurais Convolucionais para Classificação de Sentença”, 2014.

De forma útil, ele relata sua configuração de modelo escolhida, descoberta por meio de pesquisa em grade e usada em um conjunto de 7 tarefas de classificação de texto, resumidas a seguir:

  • Função de transferência: linear retificado.
  • Tamanhos do kernel: 3, 4, 5.
  • Número de filtros: 100
  • Taxa de abandono: 0,5
  • Regularização de peso (L2): 3
  • Tamanho do lote: 50
  • Regra de atualização: Adadelta

Essas configurações podem ser usadas para inspirar um ponto de partida para seus próprios experimentos.

3. Disque hiperparâmetros CNN

Alguns hiperparâmetros são mais importantes do que outros ao ajustar uma rede neural convolucional em seu problema de classificação de documentos.

Ye Zhang e Byron Wallace realizaram uma análise de sensibilidade nos hiperparâmetros necessários para configurar uma rede neural convolucional de camada única para classificação de documentos. O estudo é motivado pela afirmação de que os modelos são sensíveis à sua configuração.

Infelizmente, uma desvantagem dos modelos baseados em CNN - mesmo os mais simples - é que eles exigem que os profissionais especifiquem a arquitetura de modelo exata a ser usada e definam os hiperparâmetros que os acompanham. Para os não iniciados, tomar tais decisões pode parecer uma espécie de arte negra, porque existem muitos parâmetros livres no modelo.

- Uma análise de sensibilidade de (e guia do profissional para) redes neurais convolucionais para classificação de sentenças, 2015.

O objetivo era fornecer configurações gerais que podem ser usadas para configurar CNNs em novas tarefas de classificação de texto.

Eles fornecem uma bela representação da arquitetura do modelo e os pontos de decisão para configurar o modelo, reproduzidos abaixo.

Arquitetura de rede neural convolucional para classificação de sentenças

Arquitetura de rede neural convolucional para classificação de sentenças
Tirado de "Uma análise de sensibilidade de (e guia do profissional para) redes neurais convolucionais para classificação de sentenças“, 2015.

O estudo apresenta uma série de descobertas úteis que podem ser usadas como ponto de partida para configurar modelos superficiais da CNN para classificação de texto.

As conclusões gerais foram as seguintes:

  • A escolha de embeddings word2vec e GloVe pré-treinados difere de problema para problema e ambos tiveram um desempenho melhor do que usar vetores de palavras codificados por um único hot
  • O tamanho do kernel é importante e deve ser ajustado para cada problema.
  • O número de mapas de recursos também é importante e deve ser ajustado.
  • O pool 1-max geralmente superou outros tipos de pool.
  • O abandono tem pouco efeito no desempenho do modelo.

Eles passam a fornecer heurísticas mais específicas, da seguinte forma:

  • Use palavras embeddings word2vec ou GloVe como ponto de partida e ajuste-as enquanto ajusta o modelo.
  • Pesquisa em grade em diferentes tamanhos de kernel para encontrar a configuração ideal para o seu problema, no intervalo de 1-10.
  • Pesquise o número de filtros de 100-600 e explore uma eliminação de 0,0-0,5 como parte da mesma pesquisa.
  • Explore o uso de tanh, relu e funções de ativação linear.

A principal ressalva é que as descobertas são baseadas em resultados empíricos sobre problemas de classificação de texto binário usando frases únicas como entrada.

Recomendo a leitura do artigo completo para obter mais detalhes:

4. Considere CNNs em nível de personagem

Os documentos de texto podem ser modelados no nível do caractere usando redes neurais convolucionais que são capazes de aprender a estrutura hierárquica relevante de palavras, frases, parágrafos e muito mais.

Xiang Zhang, et al. use uma representação de texto baseada em caracteres como entrada para uma rede neural convolucional. A promessa da abordagem é que todo o esforço intensivo de mão de obra necessário para limpar e preparar o texto poderia ser superado se uma CNN pudesse aprender a abstrair os detalhes importantes.

… Os ConvNets profundos não exigem o conhecimento de palavras, além da conclusão de pesquisas anteriores de que os ConvNets não exigem o conhecimento da estrutura sintática ou semântica de uma linguagem. Essa simplificação da engenharia pode ser crucial para um único sistema que pode funcionar para diferentes idiomas, uma vez que os caracteres sempre constituem uma construção necessária, independentemente de a segmentação em palavras ser possível. Trabalhar apenas com caracteres também tem a vantagem de que combinações anormais de caracteres, como erros ortográficos e emoticons, podem ser aprendidas naturalmente.

- Redes convolucionais em nível de caractere para classificação de texto, 2015.

O modelo lê em caracteres codificados one-hot em um alfabeto de tamanho fixo. Os caracteres codificados são lidos em blocos ou sequências de 1.024 caracteres. Segue-se uma pilha de 6 camadas convolucionais com agrupamento, com 3 camadas totalmente conectadas na extremidade de saída da rede para fazer uma previsão.

Rede neural convolucional baseada em caracteres para classificação de texto

Rede neural convolucional baseada em caracteres para classificação de texto
Tirado de "Redes convolucionais em nível de caractere para classificação de texto“, 2015.

O modelo obtém algum sucesso, tendo um melhor desempenho em problemas que oferecem um corpus de texto maior.

… A análise mostra que ConvNet em nível de caractere é um método eficaz. […] o desempenho de nosso modelo em comparações depende de muitos fatores, como tamanho do conjunto de dados, se os textos são selecionados e escolha do alfabeto.

- Redes convolucionais em nível de caractere para classificação de texto, 2015.

Resultados usando uma versão estendida desta abordagem ...

Você também pode estar interessado em