Glossário

Tamanho do lote

Descubra o impacto do tamanho do lote na aprendizagem profunda. Optimize a velocidade de formação, a utilização da memória e o desempenho do modelo de forma eficiente.

O tamanho do lote é um hiperparâmetro fundamental na aprendizagem automática que define o número de amostras de treino processadas antes de os parâmetros internos do modelo serem actualizados. Em vez de processar todo o conjunto de dados de treino de uma só vez, o que pode ser computacionalmente proibitivo, os dados são divididos em subconjuntos mais pequenos ou "lotes". A escolha do tamanho do lote é uma decisão crítica que afecta diretamente a dinâmica de aprendizagem do modelo, a velocidade de treino e o desempenho final. Representa um compromisso entre a eficiência computacional e a precisão da estimativa do gradiente utilizada para atualizar os pesos do modelo.

O papel do tamanho do lote no treino do modelo

Durante o treino, uma rede neural (NN) aprende ajustando os seus pesos com base no erro que comete. Este ajuste é orientado por um algoritmo de otimização, como o gradiente de descida. O tamanho do lote determina o número de exemplos que o modelo "vê" antes de calcular o gradiente e efetuar uma atualização de pesos.

  • Descida de gradiente estocástica (SGD): Quando o tamanho do lote é 1, o processo é designado por descida gradiente estocástica. O gradiente é calculado para cada amostra individual, o que leva a actualizações frequentes mas com ruído.
  • Descida de gradiente em lote: Quando o tamanho do lote é igual ao número total de amostras no conjunto de dados de treino, é conhecido como descida de gradiente em lote. Este método fornece uma estimativa de gradiente muito precisa, mas é computacionalmente dispendioso e consome muita memória.
  • Descida de gradiente em mini-lotes: Esta é a abordagem mais comum, em que o tamanho do lote é definido para um valor entre 1 e o tamanho total do conjunto de dados (por exemplo, 32, 64, 128). Oferece um equilíbrio entre a estabilidade da descida de gradiente em lote e a eficiência da descida de gradiente estocástica.

A seleção do tamanho do lote influencia significativamente o processo de formação. Um tamanho de lote maior fornece uma estimativa mais precisa do gradiente, mas o custo computacional de cada atualização é mais elevado. Por outro lado, um tamanho de lote menor leva a estimativas de gradiente menos precisas, mas permite actualizações mais rápidas.

Escolher o tamanho certo do lote

Encontrar o tamanho ótimo do lote é uma parte crucial da afinação de hiperparâmetros e depende do conjunto de dados, da arquitetura do modelo e do hardware disponível.

  • Grandes tamanhos de lote: O processamento de mais dados de uma só vez pode aproveitar totalmente os recursos de processamento paralelo das GPUs, levando a tempos de treinamento mais rápidos por época. No entanto, a pesquisa mostrou que lotes muito grandes podem, às vezes, levar a uma "lacuna de generalização", em que o modelo tem um bom desempenho nos dados de treinamento, mas um desempenho ruim em dados não vistos. Também requerem muita memória, o que pode ser um fator limitante.
  • Pequenos tamanhos de lote: Estes requerem menos memória e conduzem frequentemente a uma melhor generalização do modelo, uma vez que o ruído nas actualizações do gradiente pode ajudar o modelo a escapar aos mínimos locais e a encontrar uma solução mais robusta. Isto pode ajudar a evitar o sobreajuste. A principal desvantagem é que o treinamento é mais lento porque as atualizações de peso são mais frequentes e menos dados são processados em paralelo.

Para muitas aplicações, os tamanhos de lote que são potências de dois (como 32, 64, 128, 256) são recomendados, pois geralmente se alinham bem com as arquiteturas de memória da GPU. Ferramentas como o Ultralytics HUB permitem a experimentação fácil com diferentes tamanhos de lote ao treinar modelos.

Tamanho do lote na formação vs. inferência

Embora o tamanho do lote seja um conceito central na formação, também se aplica à inferência, mas com um objetivo diferente. Durante a inferência, o tamanho do lote é usado para processar várias entradas (por exemplo, imagens ou frases) simultaneamente para maximizar o rendimento. Isto é frequentemente referido como inferência em lote.

Para aplicações que requerem resultados imediatos, como a inferência em tempo real num veículo autónomo, é utilizado um tamanho de lote de 1 para minimizar a latência da inferência. Em cenários offline, como o processamento de uma grande coleção de imagens durante a noite, pode ser utilizado um tamanho de lote maior para melhorar a eficiência.

Aplicações no mundo real

  1. Análise de imagens médicas: Ao treinar um modelo YOLO11 para a deteção de tumores em imagens médicas, as imagens são frequentemente de alta resolução. Devido a restrições de memória numa GPU, é normalmente utilizado um tamanho de lote pequeno (por exemplo, 4 ou 8). Isso permite que o modelo seja treinado em dados de alto detalhe sem exceder a memória disponível, garantindo um treinamento estável.
  2. Controlo de qualidade do fabrico: Numa configuração de IA no fabrico, um modelo pode ser treinado para detetar defeitos numa linha de montagem. Com um grande conjunto de dados de milhões de imagens de produtos, um tamanho de lote maior (por exemplo, 256 ou 512) pode ser usado em um poderoso cluster de treinamento distribuído. Isto acelera o processo de formação, permitindo uma iteração e implementação mais rápidas do modelo.

Tamanho do lote vs. termos relacionados

É importante distinguir a dimensão do lote de outros conceitos relacionados:

  • Tamanho do lote vs. época e iteração: Uma iteração é uma atualização dos pesos do modelo. Uma época é uma passagem completa por todo o conjunto de dados de treinamento. O número de iterações em uma época é o número total de amostras de treinamento dividido pelo tamanho do lote.
  • Tamanho do lote vs. Normalização do lote: A normalização de lotes (BatchNorm) é uma técnica usada em uma camada da rede neural para padronizar as entradas de cada minilote. Embora sua eficácia possa ser influenciada pelo tamanho do lote (ele tem melhor desempenho com lotes maiores), é uma camada distinta na arquitetura do modelo, não um parâmetro de loop de treinamento. A maioria das estruturas modernas de aprendizagem profunda, como PyTorch e TensorFlow, fornece implementações robustas.

Junte-se à comunidade Ultralytics

Junte-se ao futuro da IA. Ligue-se, colabore e cresça com inovadores globais

Aderir agora
Ligação copiada para a área de transferência