Pular para conteúdo

Modelos baseline

Inscreva-se na newsletter

Receba os novos tutoriais e faça parte da comunidade iafluente!

Modelos baseline são fundamentais em qualquer projeto de machine learning (ML). O problema é que geralmente uma de duas coisas acontece:

  1. ou eles são completamente negligenciados;
  2. ou são feitos de qualquer jeito, o que os tornam inúteis.

Neste tutorial, vamos explorar o uso de modelos baseline em ML.

O que é um modelo baseline?

De acordo com este post da Carnegie Mellon University,

um modelo baseline é um modelo simples que possui resultados razoáveis e que não requer muito tempo ou expertise para construir.1

Vamos analisar cada parte dessa definição.

Um modelo baseline é simples. É importante começar simples para construir intuição sobre o problema e realmente entendê-lo. Além disso, trabalhar com modelos simples ajuda a encontrar bugs e validar hipóteses iniciais.

Os resultados do modelo baseline são razoáveis. Eles não são perfeitos e você provavelmente não vai usá-lo como a solução final implantada em produção. No outro extremo, também é importante tomar cuidado para não escolher um modelo qualquer que tenha resultados muito ruins. Se não, você provavelmente perderá tempo desenvolvendo um modelo que não te ajudará em nada.

Finalmente, a construção de um modelo baseline não requer muito tempo. O modelo baseline é somente o ponto de partida que te ajudará bastante nos estágios posteriores de desenvolvimento.

Por que modelos baselines são úteis?

Após ler a seção anterior, você deve estar se perguntando: dado que o tempo é um recurso escasso, por que gastá-lo construindo um modelo que não será utilizado como solução final?

A resposta tem a ver com a estrutura do processo de desenvolvimento de modelos de ML.

O processo de desenvolvimento em ML é iterativo. Os insights que aparecem em uma iteração informam as decisões da próxima. Além disso, a velocidade de iteração é um fator crítico para os times de ML e ela dita quão bem eles navegam de protótipos para produtos.

Como os modelos baseline são rápidos de implementar, eles dão um pontapé inicial no ciclo de desenvolvimento. Não importa se ele não vai ser a solução final. Os insights aprendidos nas iterações iniciais são preciosos e podem pagar bons dividendos no futuro.

Os modelos baseline também são ótimas ferramentas para aumentar o entendimento dos dados, encontrar bugs e validar hipóteses. Alguns profissionais chegam a dizer que "um modelo baseline leva apenas 10% do tempo para ser desenvolvido, mas ajuda a percorrer 90% do caminho para alcançar bons resultados".

Por fim, os modelos baseline fornecem um senso de progresso. Em muitas áreas da ciência, o progresso é incremental e, em ML, não é diferente. “Quando perdemos baselines acuradas, perdemos nossa habilidade de medir o progresso ao longo do tempo”1, como diz Smerity em neste post.

As soluções de ML não devem ser mais complexas do que precisam. Isso só pode ser garantido se existir uma forma sistemática de medir o progresso.

Como usar modelos baseline na prática?

Agora que você entende o que são modelos baseline e está convencido de que eles são úteis, é hora de aprender como usá-los na prática.

Dividimos esse processo em cinco etapas, mas nem todos os problemas requerem todas elas.

Passo-a-passo

1. Modelo aleatório

Depois de entender o problema e ter um conjunto de dados em mãos, o primeiro passo no ciclo de desenvolvimento de ML costuma ser a análise exploratória de dados (EDA, em inglês). Esta é a etapa em que você se familiariza com os dados brutos para entender o tipo de padrões que seu modelo aprenderá eventualmente a explorar.

Nessa fase, também é útil fazer algumas contas rápidas que te fornecem limites inferiores para o desempenho que você deve esperar. Normalmente, a conta feita é a do desempenho do modelo aleatório (na literatura, chamado de chance).

Por exemplo, se você está diante de um problema de classificação binária e os seus dados são perfeitamente balanceados (isto é, metade são da classe 0 e a outra metade da classe 1), um modelo aleatório teria uma acurácia de 50%. Isto aconteceria porque se para cada dado o modelo previsse uma das classes aleatoriamente2, ele acertaria metade. Portanto, espera-se que qualquer modelo que você desenvolva, supere este desempenho.

O exemplo anterior pode parecer trivial. Todavia, na prática, os dados são frequentemente desbalanceados. Dessa forma, não é raro que se espere uma acurácia na faixa dos 80-90% (ou até mais) para modelos aleatórios ou que prevejam sempre a classe majoritária.

Vale a pena gastar alguns minutos calculando suas métricas de desempenho mais importantes para um modelo aleatório. Qualquer modelo considerado a partir desse momento deve superar esse desempenho. Essa é a primeira linha de referência.

2. Modelo baseado em regras

Muitos dos problemas que hoje são resolvidos com ML, no passado, eram resolvidos com regras. Dessa forma, antes de recorrer ao ML, quando possível, você pode (e deve) explorar soluções baseadas em regras e avaliar como elas se saem.

Por exemplo, se você está trabalhando com classificação de sinais de áudio, antes de pular de cabeça nas redes neurais convolucionais (CNN), vale a pena explorar a área de processamento de sinais e entender como era feita a classificação de tais sinais com base em features projetadas por especialistas (como MFCC).

Não há garantia de que existam soluções baseadas em regras para o problema que você quer resolver. No entanto, se existirem, elas certamente te trarão insights valiosos.

3. Modelo de ML simples

É hora de escolher um modelo de ML simples para começar. Lembre-se, a ideia não é encontrar uma solução perfeita logo de cara, mas sim começar a iterar rapidamente pelas diferentes etapas do desenvolvimento de ML.

Quando estamos falando de simplicidade de modelos de ML, existem duas variáveis que podemos explorar: a representação dos dados e a arquitetura do modelo.

Em dados tabulares (estruturados), a representação dos dados não costuma ser um grande problema. Porém, quando se está trabalhando com texto, séries temporais, imagens, por exemplo, existem muitas formas de processar os dados e construir a representação que o modelo vai utilizar. Nesta etapa, dê preferência para representações mais simples, baseadas em conhecimento do domínio (como features) em vez de representações aprendidas (como word embeddings ou convoluções em cima dos dados brutos).

Quanto à arquitetura do modelo, é comum começar com modelos como regressão linear, regressão logística e árvores gradient-boosted. Alguns profissionais também começam com modelos pré-treinados famosos, bem estabelecidos na literatura, como ResNet para imagens e variates do BERT para processamento de linguagem natural (NLP).

4. Limites do modelo de ML simples

Com um modelo simples em mãos, é hora de encontrar o seu limite. Isso significa tentar extrair todo o suco que esse modelo pode dar. Isso vai ser feito testando hipóteses, debugando, regularizando, ajustando hiper parâmetros etc.

Esse processo de melhora do modelo simples te familiarizará com os dados e revelará as limitações dessa modelagem inicial escolhida. Além disso, o desempenho desse modelo estabelecerá um nível forte que você deve superar nas suas iterações futuras.

5. Modelos de ML complexos

Modelos complexos não devem ser construídos só por serem complexos. Na verdade, eles devem ser usados por sua ampla capacidade de representação. Na etapa anterior, você chegou no limite da modelagem simples e isso deve ter te dado uma ideia das suas limitações.

Agora, o objetivo é aumentar a complexidade do modelo um componente por vez para superar as limitações mapeadas. Nesse processo, analisar sistematicamente os erros cometidos pelo modelo (error analysis) é fundamental para que, a cada etapa, você esteja ciente dos compromissos que está fazendo.

Além disso, lembre-se dos princípios da IA centrada em dados (data-centric AI). Os modelos de ML podem ser vistos como "sumários estatísticos" dos dados. Dessa forma, cultivar um bom dataset de treinamento, encontrando mais dados que ajudem a evidenciar padrões a serem aprendidos, é muitas vezes preferível a aumentar a complexidade do modelo.


O progresso rápido em IA/ML faz com que seja tentador começar a trabalhar com modelos complexos. Porém, esses modelos são difíceis de debugar, interpretar e muitas vezes nem são necessários para resolver o problema real de interesse. Dessa forma, no processo de desenvolvimento, é importante manter os pés no chão e começar com os modelos baseline.

O progresso em ML é incremental. Modelos baseline são essenciais para estabelecer padrões e mensurar se estamos caminhando na direção correta. Lembre-se: um bom modelo baseline te leva longe; um modelo de baseline fraco desperdiça o seu tempo.3


  1. Tradução livre. 

  2. Assumindo uma distribuição uniforme. 

  3. Este tutorial foi modificado a partir de um post que escrevi no blog do Openlayer