Cross-Entropy Loss
A entropia cruzada compara as probabilidades de classe previstas com os rótulos de destino, orientando os modelos de classificação e segmentação durante o treinamento.
A entropia cruzada mede o quanto as probabilidades de classe previstas por um modelo correspondem aos rótulos de destino. Ela aplica uma penalidade pequena quando a classe correta recebe uma probabilidade alta e uma penalidade grande quando essa probabilidade é baixa. Como função de perda para aprendizado supervisionado, ela fornece um objetivo a minimizar durante o treinamento.
A A Mathematical Theory of Communication, de Claude Shannon, publicada em 1948, estabeleceu os fundamentos da entropia. D. F. Kerridge introduziu a medida de entropia cruzada como "imprecisão" em seu artigo de 1961, Inaccuracy and Inference. Em classificação, perda logarítmica é um sinônimo; tanto a regressão logística quanto os classificadores neurais a utilizam.
Como funciona a entropia cruzada#
Para um exemplo com uma única classe correta, a entropia cruzada sem ponderação é loss = -ln(p_correct). Uma probabilidade de 0,9 para a classe correta resulta em uma perda de aproximadamente 0,105; uma probabilidade de 0,1 resulta em aproximadamente 2,303. Os logaritmos naturais expressam o resultado em unidades chamadas nats. Em geral, o treinamento calcula a média dessas penalidades em um lote.
De forma mais geral, a entropia cruzada multiplica cada probabilidade de destino pelo logaritmo negativo da probabilidade prevista correspondente e soma os resultados entre as classes. Um destino one-hot atribui 1 à classe correta e 0 às demais, deixando apenas o termo da classe correta. Para destinos one-hot sem ponderação, minimizar a entropia cruzada equivale a maximizar a verossimilhança dos rótulos observados. A retropropagação calcula os gradientes, e o gradiente descendente atualiza os parâmetros do modelo.
Entropia cruzada binária, categórica e esparsa#
A forma adequada depende dos rótulos:
- Entropia cruzada binária com sigmoid: Para um destino
yigual a 0 ou 1 e uma probabilidade previstappara a classe 1, a perda é-[y * ln(p) + (1 - y) * ln(1 - p)]. A classificação multirrótulo aplica essa função de forma independente aos rótulos que podem ocorrer simultaneamente. - Entropia cruzada categórica com softmax: Essa função avalia classes mutuamente exclusivas cujas probabilidades somam 1. Softmax converte as pontuações brutas do modelo, chamadas logits, nessa distribuição.
- Entropia cruzada categórica esparsa: Essa função usa o índice inteiro da classe em vez de um vetor one-hot. Ela calcula a mesma perda; "esparsa" descreve a codificação do destino.
Os destinos suaves distribuem a probabilidade entre as classes. Eles aparecem em suavização de rótulos e destilação de conhecimento, nas quais um modelo aluno aprende a partir da distribuição de probabilidades de um modelo professor.
Calculando a entropia cruzada em PyTorch#
O PyTorch aceita logits brutos em CrossEntropyLoss. Para destinos com índices de classe, o cálculo equivale a aplicar log-softmax seguido de log-verossimilhança negativa. Aplicar softmax antes faz com que a função trate as probabilidades como logits, alterando a perda e os gradientes. Destinos inteiros usam torch.long; destinos de probabilidade usam valores de ponto flutuante e têm o mesmo formato dos logits.
import torch
from torch import nn
# Both predictions select class 0; the second is more confident.
logits = torch.tensor([[2.0, 0.0, 0.0], [4.0, 0.0, 0.0]])
targets = torch.tensor([0, 0], dtype=torch.long)
loss_fn = nn.CrossEntropyLoss(reduction="none")
losses = loss_fn(logits, targets)
print(f"Lower confidence loss: {losses[0].item():.4f}")
print(f"Higher confidence loss: {losses[1].item():.4f}")As perdas diminuem de 0,2395 para 0,0360, enquanto ambas as previsões permanecem corretas. A acurácia registra as decisões de classe; a entropia cruzada também considera a atribuição de probabilidades. Para logits binários ou multirrótulo, BCEWithLogitsLoss combina sigmoid e entropia cruzada binária.
Aplicações em visão computacional#
A classificação de imagens com rótulo único usa entropia cruzada para aprender uma classe por imagem. O treinamento de classificação do YOLO26 da Ultralytics usa a média da entropia cruzada sobre os logits das classes para atualizar o classificador e aproximá-lo da categoria rotulada.
Na segmentação de imagens na área da saúde, o U-Net original foi treinado com imagens de microscopia biomédica, usando softmax pixel a pixel e entropia cruzada ponderada. O mapa de pesos aumentava as penalidades nos limites entre células em contato, ajudando a separar células vizinhas. Isso aplica a classificação a cada pixel na segmentação semântica.
Interpretando os valores da perda#
A entropia cruzada discreta com distribuições de destino válidas e pesos não negativos é não negativa. Para um destino rígido sem ponderação, ela chega a zero quando a classe correta recebe probabilidade 1 e cresce sem limite à medida que essa probabilidade se aproxima de zero. Valores negativos indicam um erro na entrada ou na implementação, como entradas ou pesos de destino negativos.
A entropia mede a incerteza dentro de uma distribuição; a entropia cruzada compara destinos com previsões. A entropia cruzada é igual à entropia do destino mais a divergência de Kullback–Leibler, a penalidade adicional por discrepância. Portanto, destinos suaves têm um mínimo positivo quando sua entropia é positiva.
A ponderação de classes aumenta a contribuição de classes selecionadas. A perda focal reduz a contribuição de exemplos fáceis para lidar com o desequilíbrio entre o plano de fundo e o primeiro plano na detecção de objetos. Para uma previsão uniforme, a perda logarítmica sem ponderação é igual a ln(number_of_classes): aproximadamente 0,693 para duas classes e 2,303 para dez.










