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 encontrados em campos como a visão computacional.

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:

  • Função de perda: Uma medida de quão bem as previsões do modelo correspondem aos valores-alvo reais. O SGD tem como objetivo minimizar esta função.
  • Taxa de aprendizagem: Um hiperparâmetro que controla o tamanho do passo dado durante cada atualização de parâmetro. Encontrar uma boa taxa de aprendizagem é crucial para um treino eficaz. As programações da taxa de aprendizagem são frequentemente utilizadas para a ajustar durante o treino.
  • Tamanho do lote: O número de amostras de treinamento usadas em uma iteração para estimar o gradiente. No SGD puro, o tamanho do lote é 1. Quando usa subconjuntos pequenos, é frequentemente chamado de Mini-batch Gradient Descent.
  • Dados de treino: O conjunto de dados usado para treinar o modelo. O SGD processa estes dados amostra por amostra ou em mini-lotes. Dados de alta qualidade são essenciais, muitas vezes exigindo uma cuidadosa recolha e anotação de dados.
  • Gradiente: Um vetor que indica a direção do aumento mais acentuado na função de perda. O SGD move os parâmetros na direção oposta do gradiente calculado a partir de uma amostra ou minilote.
  • Época: Uma passagem completa por todo o conjunto de dados de treino. Normalmente, o treino envolve várias épocas.

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 em lote (BGD): Calcula o gradiente utilizando todo o conjunto de dados de treino em cada passo. Isto fornece uma estimativa precisa do gradiente, mas é computacionalmente caro e consome muita memória para grandes conjuntos de dados. Leva a um caminho de convergência mais suave em comparação com as atualizações ruidosas do SGD.
  • Descida de Gradiente em Mini-batch: Um compromisso entre BGD e SGD. Calcula o gradiente utilizando um subconjunto pequeno e aleatório (mini-batch) dos dados. Equilibra a precisão do BGD com a eficiência do SGD e é a abordagem mais comum na prática. O desempenho pode depender do tamanho do lote.
  • Adam Optimizer: Um algoritmo de otimização da taxa de aprendizagem adaptativa que calcula taxas de aprendizagem adaptativas individuais para diferentes parâmetros. Converge frequentemente mais rápido do que o SGD padrão, mas pode por vezes generalizar de forma menos eficaz, como discutido em pesquisas como "The Marginal Value of Adaptive Gradient Methods in Machine Learning". Existem muitas variantes do Gradient Descent para além destas.

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)

Os modelos de treino, como os utilizados no Processamento de Linguagem Natural (PNL), envolvem frequentemente conjuntos de dados de texto maciços (milhares de milhões de palavras). SGD e suas variantes (como Adam) são essenciais para iterar através desses dados de forma eficiente, permitindo que modelos como GPT-4 ou aqueles encontrados em Hugging Face aprendam a gramática, o contexto e a semântica. A natureza estocástica ajuda a escapar de mínimos locais pobres no complexo cenário de perdas.

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. Esta eficiência suporta aplicações em áreas como veículos autónomos e robótica.

Lê tudo