Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Softmax

Softmax converte um vetor de logits em probabilidades cuja soma é um. Aborda a fórmula, a temperatura, a estabilidade numérica, a atenção e o código.

Softmax é uma função que transforma um vetor de pontuações brutas, chamadas logits, em uma distribuição de probabilidade: cada valor de saída fica entre 0 e 1, e a soma das saídas é exatamente 1. Para um vetor z, ela calcula softmax(z)ᵢ = e^(zᵢ) / Σⱼ e^(zⱼ), aplicando a função exponencial a cada pontuação e dividindo pela soma de todas as exponenciais. Softmax é a camada de saída padrão das redes neurais que escolhem uma classe entre várias; transforma pontuações de similaridade em pesos dentro do mecanismo de atenção dos transformers e converte as pontuações de um modelo de linguagem sobre seu vocabulário em probabilidades do próximo token. Seu nome reflete que ela é uma versão suave e diferenciável de argmax, que atribuiria toda a probabilidade à maior pontuação.

Como funciona Softmax#

A exponencial torna todas as saídas positivas e amplia as diferenças entre as pontuações, de modo que o logit maior fica com uma parcela desproporcional da probabilidade. O softmax preserva a ordem dos logits, então a pontuação mais alta sempre recebe a maior probabilidade. Só importam as diferenças entre os logits: somar a mesma constante a todos os logits não altera a saída. As bibliotecas usam essa propriedade para garantir estabilidade numérica, subtraindo o logit máximo antes de calcular a exponencial, já que e¹⁰⁰⁰ excede o limite de ponto flutuante de 32 bits.

Uma temperatura T controla o grau de concentração da distribuição: softmax(z / T). Valores de T abaixo de 1 tornam a distribuição mais concentrada na classe principal, enquanto valores acima de 1 a tornam mais uniforme. A mesma fórmula aparece na mecânica estatística como distribuição de Boltzmann, em que T é literalmente a temperatura. O trecho de código PyTorch abaixo mostra os dois efeitos:

import torch

logits = torch.tensor([2.0, 1.0, 0.1])

# Divide logits by a temperature before softmax: low sharpens, high flattens
for temperature in [0.5, 1.0, 2.0]:
    probs = torch.softmax(logits / temperature, dim=0)
    print(f"T={temperature}: {[round(p, 3) for p in probs.tolist()]}")

# Adding a constant leaves softmax unchanged, so libraries subtract the max to avoid overflow
big = logits + 1000
naive = big.exp() / big.exp().sum()
print(f"Naive: {naive.tolist()}, torch.softmax: {[round(p, 3) for p in torch.softmax(big, dim=0).tolist()]}")

Com T = 1, os logits 2.0, 1.0 e 0.1 tornam-se [0.659, 0.242, 0.099]. Reduzir a temperatura pela metade torna a distribuição mais concentrada: [0.864, 0.117, 0.019]; dobrá-la a torna mais uniforme: [0.502, 0.304, 0.194]. Ao adicionar 1.000 a cada logit, a fórmula ingênua causa overflow e exibe [nan, nan, nan], enquanto torch.softmax ainda retorna [0.659, 0.242, 0.099].

Softmax no treinamento#

Os classificadores são treinados com softmax e perda de entropia cruzada em conjunto. A perda é −log(pᵧ), o logaritmo negativo da probabilidade atribuída à classe correta y, e seu gradiente em relação aos logits é simplesmente p − y: as probabilidades previstas menos o rótulo one-hot. Por isso, os frameworks fundem as duas operações: CrossEntropyLoss do PyTorch recebe logits brutos e calcula internamente o log-softmax, que é mais estável do que calcular o logaritmo de probabilidades calculadas separadamente. Um modelo treinado dessa maneira produz logits, e softmax só é aplicada quando as probabilidades são necessárias durante a inferência.

Onde Softmax é usada#

  • Classificação de imagens: A camada final de um classificador produz um logit por classe, e softmax os transforma nas pontuações de confiança exibidas ao usuário.
  • Atenção: Os Transformers calculam softmax(QKᵀ / √dₖ) sobre as pontuações de similaridade entre uma consulta e cada chave, de modo que os pesos de atenção de cada token somem 1. Dividir por √dₖ impede que as pontuações cresçam com a dimensão e saturem softmax.
  • Geração de texto: Um modelo de linguagem grande (LLM) aplica softmax sobre um vocabulário de dezenas ou centenas de milhares de tokens em cada etapa, e a temperatura de amostragem é o T mencionado acima. A amostragem por núcleo seleciona então o menor conjunto de tokens cujas probabilidades atingem um limite.
  • Aprendizado por reforço: Softmax aplicada aos valores das ações produz uma política que geralmente escolhe a melhor ação, mas continua explorando as demais, com a temperatura controlando o equilíbrio entre exploração e aproveitamento.

Os modelos de classificação YOLO26 aplicam softmax na cabeça de classificação durante a inferência, e o atributo probs de cada resultado contém a distribuição completa sobre as 1.000 classes do ImageNet:

from ultralytics import YOLO

# Load a YOLO26 classification model trained on ImageNet
model = YOLO("yolo26n-cls.pt")
results = model("https://ultralytics.com/images/bus.jpg")

# probs holds the softmax output of the classification head
probs = results[0].probs
for index, conf in zip(probs.top5, probs.top5conf.tolist()):
    print(f"{results[0].names[index]}: {conf:.3f}")
print(f"Sum over all 1,000 classes: {probs.data.sum().item():.3f}")

Ele exibe as cinco classes mais prováveis com suas probabilidades, e a soma das 1.000 classes aparece como 1.000 porque a cabeça retorna uma distribuição softmax.

  • Sigmoid: Reduz cada pontuação de forma independente para um valor entre 0 e 1, então as saídas não precisam somar 1. Sigmoid é adequada para problemas binários e multirrótulo, como uma imagem que contém uma pessoa e uma mochila, e os detectores de objetos geralmente usam essa função para pontuar cada classe. Para duas classes, softmax equivale exatamente a sigmoid da diferença entre os dois logits.
  • Argmax: Retorna o índice da maior pontuação, uma decisão rígida sem gradiente. Softmax mantém a mesma classificação, mas continua diferenciável, então pode ser treinada; além disso, aplicar argmax às probabilidades softmax produz o mesmo resultado que aplicar argmax aos logits.
  • Log-softmax: O logaritmo de softmax, calculado diretamente para garantir estabilidade, que é usado pela perda de entropia cruzada.
  • Escalonamento de temperatura: Um método de calibração que ajusta uma única temperatura aos dados de validação após o treinamento, para que as probabilidades softmax correspondam à frequência com que o modelo realmente acerta. Ele não altera a classe prevista, porque dividir todos os logits pelo mesmo T positivo preserva a ordem deles.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina