Recursos/Treinamento de modelo/Preparação de dados

Etapa do pipeline

Divisão de validação

Uma proporção das conversas é reservada do treinamento e usada para observar a perda em dados com os quais o modelo não aprende. A divisão é feita por conversas inteiras, para que nenhuma parte de um chat reservado vaze para o treinamento — e não é o mesmo que o conjunto de teste mantido para avaliação.

Capítulo 55 min de leitura3 referências

O que é

Uma divisão de validação separa parte dos seus dados antes do início do treinamento. Essas conversas são separadas: o modelo nunca treina nelas. O provedor as utiliza para calcular a perda de validação enquanto o treinamento é executado. Elas não são o conjunto de teste, um segundo grupo separado de conversas guardado para avaliação posterior.

O motivo é simples. Um modelo com fine-tuning pode memorizar. Ao receber uma pergunta na qual foi treinado, ele pode reproduzir a resposta de referência quase palavra por palavra, o que não diz nada sobre como ele lidará com as perguntas da próxima semana. Apenas dados que ele não viu podem mostrar se ele aprendeu o padrão ou apenas os exemplos.

Como funciona

Treinamento · 90% das conversasValidação · 10%, nunca usado no treinamento
Conversas inteiras vão para um lado ou para o outro. Dividir por mensagem colocaria a primeira metade de um chat no treinamento e sua resposta na validação, e a pontuação favoreceria o modelo.

As conversas são atribuídas aleatoriamente a um lado ou ao outro, como conversas inteiras. Dividir por mensagem seria uma forma de vazamento de dados: a primeira metade de um chat poderia treinar o modelo enquanto sua resposta fica na validação, ou a mesma resposta poderia aparecer em ambos os lados em dois registros vizinhos. A pontuação de validação mediria então a memorização, não a capacidade. O vazamento é uma armadilha bem documentada muito além dos modelos de linguagem — Kapoor e Narayanan (2022) encontraram erros de vazamento afetando 329 artigos em 17 campos científicos.

Durante o treinamento, o provedor executa periodicamente o modelo nos registros de validação e relata sua perda sem atualizar nenhum peso. Quando a perda de treinamento continua caindo, mas a perda de validação aumenta, o modelo começou a sofrer overfitting.

A validação não é o conjunto de teste

Os registros de validação são enviados ao provedor com o arquivo de treinamento e observados durante toda a execução; as pessoas também escolhem épocas e taxas de aprendizado olhando para eles. Isso os torna um pouco menos do que não vistos, portanto, não são um teste final limpo. Um teste limpo precisa de conversas que não toquem nem no treinamento nem na validação e nunca saiam de suas mãos: o conjunto de teste. A avaliação o utiliza por padrão e recorre às perguntas de validação apenas quando não há conjunto de teste.

ConjuntoVisto durante o treinamento?Usado para
TreinamentoSim, usado para aprendizadoAlterar os pesos
ValidaçãoVisto pelo provedor, não usado para aprendizadoA perda de validação; uma segunda opinião na avaliação quando não há conjunto de teste
TesteNão, nunca enviado ao provedorAvaliar se o modelo realmente melhorou

Qual deve ser o tamanho?

É um compromisso. Cada conversa separada é uma com a qual o modelo não aprende; cada conversa treinada é uma com a qual você não pode testar. A precisão de uma pontuação depende do número de exemplos separados, não de sua proporção, e é por isso que pequenos conjuntos de dados são o caso difícil. Para uma taxa de vitória, a incerteza diminui aproximadamente com a raiz quadrada do número de perguntas:

como o tamanho da amostra define a precisão
standard error of a win rate  ≈  √( p × (1 − p) ÷ n )
95% margin                    ≈  1.96 × standard error
at p = 0.5                    ≈  1 ÷ √n

n = 10   →  ± 31 points
n = 50   →  ± 14 points
n = 100  →  ± 10 points
n = 400  →  ±  5 points
Proporção de validaçãoTípico 10% (10–20%)#

A fração de conversas reservadas para validação. Com milhares de conversas, até mesmo 5% produzem uma curva de validação estável; com algumas centenas, 15–20% tornam a curva menos ruidosa a um custo modesto para o treinamento.

Mínimo de conversas reservadasTípico 10#

Abaixo desse número, a perda de validação seria majoritariamente ruído, portanto, nenhuma divisão de validação é feita e tudo o que está fora do conjunto de teste é direcionado ao treinamento.

Exemplo prático: três tamanhos de conjuntos de dados a 10%
  1. 2.000 conversas: 200 vão primeiro para o conjunto de teste, depois 10% do restante (180) para validação, deixando 1.620 para treinamento. Uma avaliação nas 200 conversas de teste mede uma taxa de vitória com uma margem de cerca de ±7 pontos — o suficiente para comparar execuções.
  2. 300 conversas: 30 conversas de teste e 27 de validação. Uma avaliação em 30 conversas de teste tem uma margem de cerca de ±18 pontos e não consegue separar um modelo de 55% de um de 45%; apenas mais dados podem estreitar essa margem.
  3. 60 conversas: 6 vão para o conjunto de teste. 10% das 54 restantes são 5, abaixo do mínimo de 10, portanto não há curva de validação e todas as 54 são usadas no treinamento. A avaliação ainda conta com 6 conversas de teste não vistas: poucas, então interprete o resultado como um indício.
  4. 8 conversas: muito poucas para um conjunto de teste, que precisa de um conjunto de dados de pelo menos 10. Nada é separado, e uma avaliação só pode recorrer, com um aviso, às perguntas nas quais o modelo foi treinado.

Erros comuns

  • Dividir por mensagem ou por registro, de modo que partes da mesma conversa caiam em ambos os lados.
  • Separar uma parcela que é muito pequena para medir qualquer coisa e, em seguida, atribuir significado a um resultado de 6 contra 4.
  • Adicionar quase duplicatas de conversas de validação a um conjunto de treinamento posterior, o que as transforma silenciosamente em dados de treinamento.
  • Comparar dois modelos que foram avaliados em conjuntos separados diferentes como se as pontuações estivessem na mesma escala.
  • Pular a divisão em um conjunto de dados real para “usar todos os dados” e perder a única medição honesta que você tinha.
  • Tratar os resultados da validação como um teste final limpo, embora o provedor tenha visto esses registros durante todo o treinamento.

Referências e leitura complementar

Fontes externas abrem em uma nova aba.

  1. 01Datasets: Dividing the original datasetGoogle Machine Learning Crash Course · developers.google.comUma introdução clara aos conjuntos de treinamento, validação e teste.
  2. 02Training, validation, and test data setsWikipedia · en.wikipedia.orgDefinições e o papel de cada conjunto.
  3. 03Leakage and the Reproducibility Crisis in ML-based ScienceKapoor & Narayanan, 2022 · arXiv · arxiv.orgUma pesquisa sobre como o vazamento entre dados de treinamento e de teste infla os resultados relatados.

Transforme semanas de trabalho especializado em minutos

Veja como o Scalata se adapta à sua equipe, aos seus dados e aos seus Controles.

Fale com vendas