Glossário

Descida de Gradiente Estocástico (SGD)

Descobre como o Stochastic Gradient Descent optimiza os modelos de aprendizagem automática, permitindo uma formação eficiente para grandes conjuntos de dados e tarefas de aprendizagem profunda.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

O Gradiente Descendente Estocástico, vulgarmente conhecido como SGD, é um algoritmo de otimização popular e eficiente utilizado extensivamente na Aprendizagem Automática (AM) e, em particular, na Aprendizagem Profunda (AP). Funciona como uma variação do algoritmo Gradient Descent padrão, mas é especificamente projetado para velocidade e eficiência ao lidar com conjuntos de dados muito grandes. Em vez de calcular o gradiente (a direção da descida mais íngreme para a função de perda) usando todo o conjunto de dados em cada etapa, o SGD aproxima o gradiente com base em uma única amostra de dados selecionada aleatoriamente ou um pequeno subconjunto chamado de minilote. Esta abordagem reduz significativamente o custo computacional e os requisitos de memória, tornando viável o treinamento de modelos complexos em grandes quantidades de dados.

Relevância na aprendizagem automática

O SGD é uma pedra angular para o treinamento de modelos de aprendizado de máquina em larga escala, especialmente as complexas Redes Neurais (NN) que alimentam muitos aplicativos modernos de IA. A sua eficiência torna-o indispensável quando se trabalha com conjuntos de dados que são demasiado grandes para caber na memória ou que demorariam demasiado tempo a processar utilizando a Descida de Gradiente em Lote tradicional. Modelos como o Ultralytics YOLO utilizam frequentemente o SGD ou as suas variantes durante o processo de formação para aprender padrões para tarefas como a deteção de objectos, a classificação de imagens e a segmentação de imagens. As principais estruturas de aprendizagem profunda, como o PyTorch e TensorFlow fornecem implementações robustas de SGD, destacando o seu papel fundamental no ecossistema de IA.

Conceitos-chave

Compreender o SGD implica algumas ideias fundamentais:

  • Natureza estocástica: O termo "estocástico" refere-se à aleatoriedade introduzida pela utilização de apenas uma ou algumas amostras para estimar o gradiente em cada passo. Esta aleatoriedade adiciona ruído ao processo de otimização, o que por vezes pode ajudar o modelo a escapar a mínimos locais pobres e a encontrar melhores soluções globais.
  • Mini-batches: Embora o SGD puro use uma única amostra por atualização, é mais comum na prática usar um pequeno "mini-lote" de amostras (por exemplo, 32, 64, 128). Esta abordagem, muitas vezes ainda referida como SGD, equilibra a eficiência das actualizações de amostra única com a estabilidade obtida com a média dos gradientes num pequeno lote. O tamanho deste lote é controlado pelo hiperparâmetro Batch Size.
  • Taxa de aprendizagem: Este hiperparâmetro crucial determina o tamanho dos passos dados durante o processo de otimização. Uma taxa de aprendizagem bem escolhida é vital para a convergência; se for demasiado elevada, o processo pode ultrapassar o mínimo; se for demasiado baixa, o treino torna-se excessivamente lento. Técnicas como o escalonamento da taxa de aprendizagem são frequentemente utilizadas juntamente com o SGD.
  • Função de perda: O SGD tem como objetivo minimizar uma função de perda, que mede a diferença entre as previsões do modelo e os valores-alvo reais nos dados de treino.

Diferenças em relação a conceitos relacionados

O SGD é um dos vários algoritmos de otimização, pelo que é importante distingui-lo dos outros:

  • Descida de gradiente (Batch GD): A principal diferença reside na forma como o gradiente é calculado. O GD em lote usa todo o conjunto de dados para cada atualização de parâmetro, fornecendo um gradiente preciso, mas tornando-se computacionalmente caro e lento para grandes conjuntos de dados. O SGD usa uma amostra (ou um mini-lote), tornando cada atualização muito mais rápida, mas mais ruidosa. Podes saber mais sobre o método padrão na página do glossário Gradient Descent.
  • Descida de Gradiente em Mini-Batelada: Esta é a implementação prática mais comum, muitas vezes referida simplesmente como SGD. Calcula o gradiente em subconjuntos pequenos e aleatórios (mini-batches) dos dados. Encontra um equilíbrio entre a precisão do GD em lote e a eficiência do SGD puro.
  • Optimizador Adam: Adam é um algoritmo de otimização de taxa de aprendizagem adaptativa, o que significa que ajusta a taxa de aprendizagem para cada parâmetro individualmente com base em gradientes anteriores. Embora o Adam muitas vezes converge mais rápido do que o SGD básico, o SGD (especialmente com momentum) pode às vezes generalizar melhor para dados não vistos, como discutido em pesquisas como "The Marginal Value of Adaptive Gradient Methods in Machine Learning".

Aplicações no mundo real

A eficiência do SGD permite a sua utilização em numerosas aplicações de IA em grande escala:

Exemplo 1: Treinar modelos linguísticos de grande dimensão (LLMs)

O treino de modelos como os utilizados no Processamento de Linguagem Natural (PLN) envolve frequentemente conjuntos de dados de texto massivos (milhares de milhões de palavras). O SGD e suas variantes são essenciais para iterar através desses dados de forma eficiente, permitindo que os modelos aprendam gramática, contexto e semântica. Plataformas como Hugging Face dependem muito desses otimizadores para treinar modelos de transformadores.

Exemplo 2: Treino de deteção de objectos em tempo real

Para modelos como o Ultralytics YOLO , projetado para inferência em tempo real, o treinamento precisa ser eficiente. O SGD permite que os desenvolvedores treinem esses modelos em grandes conjuntos de dados de imagens como o COCO ou conjuntos de dados personalizados gerenciados por meio de plataformas como o Ultralytics HUB. As atualizações rápidas permitem uma convergência mais rápida em comparação com o Batch GD, crucial para iterar rapidamente durante o desenvolvimento do modelo e o ajuste de hiperparâmetros.

Lê tudo