Etapa 2.5: escolher um modelo

Neste ponto, reunimos nosso conjunto de dados e recebemos insights sobre as principais características dos dados. Em seguida, com base nas métricas coletadas na Etapa 2, precisamos pensar no modelo de classificação a ser usado. Isso significa fazer perguntas como "Como apresentamos os dados de texto em um algoritmo que espera entrada numérica?", isso é chamado de pré-processamento e vetorização de dados, "Que tipo de modelo precisamos usar", "Quais parâmetros de configuração precisamos usar no modelo?" etc.

Graças a décadas de pesquisa, temos acesso a uma grande variedade de opções de configurações de modelos e pré-processamento de dados. No entanto, a disponibilidade de uma grande variedade de opções viáveis para escolha aumenta muito a complexidade e o escopo do problema específico em questão. Como as melhores opções podem não ser óbvias, uma solução simples seria testar completamente todas as opções possíveis, excluindo algumas opções por meio da intuição. No entanto, isso seria muito caro.

Neste guia, tentamos simplificar significativamente o processo de seleção de um modelo de classificação de texto. Para um determinado conjunto de dados, nosso objetivo é encontrar o algoritmo que alcance uma precisão próxima à máxima, minimizando o tempo de computação necessário para treinamento. Realizamos um grande número (cerca de 450 mil) experimentos em problemas de diferentes tipos (especialmente problemas de análise de sentimento e classificação de temas), usando 12 conjuntos de dados, alternados para cada conjunto entre diferentes técnicas de pré-processamento de dados e arquiteturas de modelos diferentes. Isso nos ajudou a identificar parâmetros de conjunto de dados que influenciam as escolhas ideais.

O algoritmo de seleção de modelos e o fluxograma abaixo são um resumo da nossa experimentação. Não se preocupe se você ainda não entender todos os termos usados neles. As seções a seguir deste guia vão explicá-los em detalhes.

Algoritmo para preparação de dados e criação de modelos

1. Calculate the number of samples/number of words per sample ratio.
2. If this ratio is less than 1500, tokenize the text as n-grams and use a
simple multi-layer perceptron (MLP) model to classify them (left branch in the
flowchart below):
  a. Split the samples into word n-grams; convert the n-grams into vectors.
  b. Score the importance of the vectors and then select the top 20K using the scores.
  c. Build an MLP model.
3. If the ratio is greater than 1500, tokenize the text as sequences and use a
   sepCNN model to classify them (right branch in the flowchart below):
  a. Split the samples into words; select the top 20K words based on their frequency.
  b. Convert the samples into word sequence vectors.
  c. If the original number of samples/number of words per sample ratio is less
     than 15K, using a fine-tuned pre-trained embedding with the sepCNN
     model will likely provide the best results.
4. Measure the model performance with different hyperparameter values to find
   the best model configuration for the dataset.

No fluxograma abaixo, as caixas amarelas indicam processos de preparação de dados e modelos. As caixas cinza e verde indicam as opções que consideramos para cada processo. As caixas verdes indicam nossa escolha recomendada para cada processo.

Use este fluxograma como ponto de partida para criar seu primeiro experimento, já que ele proporciona uma boa precisão e baixo custo de computação. Continue melhorando o modelo inicial em relação às iterações subsequentes.

Fluxograma de classificação de texto

Figura 5: fluxograma de classificação de texto

Este fluxograma responde a duas perguntas importantes:

  1. Qual algoritmo ou modelo de aprendizado precisamos usar?

  2. Como devemos preparar os dados para aprender de forma eficiente a relação entre texto e rótulo?

A resposta à segunda pergunta depende da resposta à primeira pergunta. A maneira como pré-processamos os dados a serem alimentados em um modelo depende do modelo que escolhemos. Os modelos podem ser amplamente classificados em duas categorias: as que usam informações de ordenação de palavras (modelos de sequência) e aquelas que apenas veem o texto como "bagagens" (conjuntos) de palavras (modelos de n-grama). Os tipos de modelos sequenciais incluem redes neurais convolucionais (CNNs), redes neurais recorrentes (RNNs, na sigla em inglês) e as variações delas. Os tipos de modelos n-grama incluem regressão logística, perceptrons simples de várias camadas (MLPs ou redes neurais totalmente conectadas), árvores otimizadas de gradiente e máquinas de vetor de suporte.

Em nossos experimentos, observamos que a proporção entre "número de amostras" (S) e "número de palavras por amostra" (W) está relacionada com qual modelo tem um bom desempenho.

Quando o valor dessa proporção é pequeno (<1500), pequenos perceptrons de várias camadas que usam n-gramas como entrada (que chamamos como Opção A) têm melhor desempenho ou pelo menos, bem como modelos sequenciais. Os MLPs são simples de definir e entender e levam muito menos tempo de computação do que modelos sequenciais. Quando o valor dessa proporção for grande (>= 1.500), use um modelo sequencial (Opção B). Nas etapas a seguir, você pode pular para as subseções relevantes (rotuladas como A ou B) para o tipo de modelo escolhido com base na proporção de amostras/palavras por amostra.

No caso do nosso conjunto de dados de avaliação do IMDb, a proporção de amostras/palavras por amostra é de aproximadamente 144. Isso significa que vamos criar um modelo de MLP.