O que são Softmax e Entropia Cruzada? Transformando Logits em Probabilidades e Perda de Treinamento
Softmax e entropia cruzada formam uma combinação que permite a uma rede neural multiclasse expressar, como probabilidades, qual classe está correta entre vários candidatos e avaliar numericamente o quanto essa previsão difere da resposta correta. Softmax converte as saídas brutas do modelo, chamadas de logits, em uma distribuição de probabilidades cuja soma é 1. A entropia cruzada calcula como perda a diferença entre essa distribuição de probabilidades e a distribuição-alvo. O treinamento é o processo de ajustar os pesos do modelo para reduzir essa perda.
Por exemplo, suponha que você esteja classificando uma imagem como gato, cachorro ou pássaro. Inicialmente, o modelo muitas vezes não responde algo como “70% de probabilidade de gato”. Em vez disso, ele produz logits: pontuações comparativas para as três classes. Softmax normaliza essas pontuações em probabilidades comparáveis, e a entropia cruzada atribui uma penalidade de acordo com a probabilidade que o modelo atribuiu à resposta real. Entender ambos em conjunto pode reduzir confusões comuns sobre a camada de saída final, os formatos de rótulo e a configuração da função de perda.
O que a função softmax faz?
Softmax é uma função que converte um vetor de logits para classes em probabilidades de classe . A probabilidade da classe é calculada da seguinte forma.
Aqui, a função exponencial dá às classes com pontuações maiores um peso relativo maior. Como o denominador é a soma das pontuações exponenciadas de todas as classes, cada saída fica entre 0 e 1, e a probabilidade total soma 1. Assim, a saída de softmax representa a probabilidade relativa de uma entrada pertencer a cada classe como uma única distribuição de probabilidades. A documentação do PyTorch também descreve softmax como uma função que redimensiona cada elemento de entrada para o intervalo de 0 a 1, de modo que os elementos somem 1. docs.pytorch.org
Softmax é especialmente apropriada quando os candidatos são mutuamente exclusivos. Ou seja, se um deles for verdadeiro, os outros não podem ser a resposta correta. Exemplos incluem classificar uma imagem cujo animal principal é exatamente um entre gato, cachorro ou pássaro, ou atribuir uma frase a exatamente uma categoria de sentimento predefinida.
Em contraste, as probabilidades de softmax não são independentes umas das outras. Se a probabilidade de gato aumenta, a probabilidade de cachorro ou pássaro precisa diminuir relativamente para manter a soma das três probabilidades em 1. Essa característica geralmente não é apropriada para casos nos quais vários rótulos podem ser verdadeiros simultaneamente, como um problema em que uma pessoa e uma bicicleta podem aparecer na mesma imagem. Nesse caso, considere aplicar sigmoide de forma independente a cada classe.
Como logits diferem de probabilidades?
Um logit é uma pontuação não normalizada produzida por uma camada linear final ou componente semelhante. Logits podem ser negativos ou maiores que 1, e a soma dos logits entre as classes não tem significado particular. Por exemplo, pode ser um conjunto de logits para três classes, mas não é um vetor de probabilidades.
Uma característica importante dos logits é que as diferenças entre as classes importam mais do que seus valores absolutos. Adicionar a mesma constante a todos os logits não altera o resultado de softmax.
Isso acontece porque tanto o numerador quanto o denominador são multiplicados pelo fator comum , que é cancelado. Portanto, os logits e podem parecer pontuações brutas diferentes, mas produzem as mesmas probabilidades de softmax. Softmax transforma em probabilidades as diferenças relativas entre os candidatos, e não o ponto de referência das pontuações.
O que a entropia cruzada mede?
A entropia cruzada é uma perda que indica o quanto a distribuição-alvo real difere da distribuição prevista pelo modelo. Sua forma multiclasse básica é a seguinte.
Aqui, é o peso que o rótulo real atribui à classe , e é a probabilidade prevista pelo modelo para a classe . Uma perda menor significa que a distribuição prevista está mais próxima da distribuição-alvo. Quando se usa o logaritmo natural, a unidade é o nat.
Essa fórmula não é simplesmente um cálculo que separa respostas corretas e incorretas como 0 ou 1. Ela reflete não apenas se o modelo acertou a resposta, mas também quão confiante ele estava de que a resposta estava correta. Uma previsão que atribui 0,51 à classe correta e outra que atribui 0,99 podem ter a mesma acurácia se a classe de maior probabilidade estiver correta em ambas. No entanto, a entropia cruzada atribui uma perda menor à segunda. É por isso que o treinamento incentiva o modelo não apenas a colocar a resposta correta em primeiro lugar, mas a atribuir a ela uma probabilidade maior.
Por que a fórmula se simplifica para rótulos one-hot?
Os alvos para classificação mutuamente exclusiva costumam ser representados como vetores one-hot. Se a primeira classe for correta entre três classes, o rótulo será . Como somente a classe-alvo tem e as demais têm 0, a entropia cruzada se reduz ao seguinte.
Em outras palavras, a perda é determinada apenas pela probabilidade prevista da classe correta. À medida que se aproxima de 1, se aproxima de 0. Em contraste, quando fica menor, a perda cresce rapidamente. Por causa dessa propriedade, previsões que atribuem baixa probabilidade à resposta correta — especialmente aquelas que preveem uma resposta incorreta com confiança muito alta — recebem uma grande penalidade durante o treinamento.
Teoricamente, se a probabilidade da classe correta for exatamente 0, é indefinido e a perda diverge para o infinito. Implementações reais de redes neurais normalmente usam cálculos estáveis baseados em logits, evitando a abordagem de produzir explicitamente uma probabilidade 0 e depois calcular seu logaritmo.
Como softmax e entropia cruzada se conectam?
A parte final de um modelo multiclasse típico pode ser entendida em três etapas.
- A camada linear final produz os logits de classe .
- Softmax converte os logits em probabilidades .
- A entropia cruzada compara as probabilidades com o rótulo-alvo para calcular a perda .
Para um alvo one-hot, essa conexão pode ser expandida da seguinte maneira.
Essa expressão é frequentemente chamada de entropia cruzada softmax ou entropia cruzada categórica. O primeiro termo, , diminui à medida que o logit da classe correta aumenta, enquanto o segundo termo, , também considera as pontuações de todas as classes concorrentes. Assim, o modelo aprende a aumentar a pontuação da classe correta enquanto a torna relativamente mais destacada do que as classes incorretas.
Aqui, softmax e entropia cruzada devem ser distinguidas conceitualmente. Softmax é uma função que altera como as saídas são representadas, enquanto a entropia cruzada é uma perda que quantifica o objetivo de treinamento. Em frameworks práticos, porém, as duas etapas costumam ser fornecidas como uma única função de perda combinada, o que pode fazê-las parecer uma única função.
O que o cálculo revela com números?
Considere um problema de três classes com logits . Ao aplicar softmax, obtêm-se probabilidades aproximadas de . O exemplo de softmax do TensorFlow apresenta as mesmas probabilidades aproximadas para esses logits. docs.pytorch.org
Se a primeira classe estiver correta, o rótulo one-hot será , e a perda será a seguinte.
A primeira classe tem a maior probabilidade entre os três candidatos, e essa probabilidade é aproximadamente 0,665, portanto a perda é relativamente pequena. No entanto, “pequena” não indica um limite absoluto de aprovação. A magnitude adequada da perda pode variar conforme o número de classes, a dificuldade dos dados, a incerteza dos rótulos e se a perda é somada ou calculada como média em um lote.
Se, para os mesmos logits, a terceira classe fosse a correta, a perda seria e, portanto, muito maior. O modelo considerou a terceira classe o candidato menos provável. Dessa forma, a entropia cruzada reflete de maneira sensível não apenas se uma previsão está errada, mas também quão confiantemente ela está errada.
Por que o ranking de probabilidades e o valor da perda devem ser considerados juntos?
A acurácia geralmente seleciona a única classe com a maior probabilidade e verifica se ela corresponde à resposta correta. Portanto, uma previsão de quando a primeira classe está correta e uma previsão de quando a primeira classe está correta são ambas contabilizadas como uma previsão correta.
A entropia cruzada não trata essas previsões de forma igual. A primeira mal distingue entre as três classes, enquanto a segunda atribui probabilidade muito alta à resposta correta. Por outro lado, quando a classe de maior probabilidade está incorreta, a perda também varia conforme a probabilidade da classe correta foi baixa. Por isso, o treinamento geralmente minimiza a entropia cruzada, enquanto a avaliação também verifica métricas separadas, como acurácia, de acordo com o objetivo da tarefa.
Por que logits devem ser passados diretamente à função de perda de treinamento?
As funções de perda combinadas de muitos frameworks de deep learning recebem logits, e não probabilidades de softmax, como entrada. Por exemplo, softmax_cross_entropy_with_logits do TensorFlow, como seu nome indica, aceita logits e executa internamente os cálculos correspondentes a softmax e entropia cruzada. Sua documentação alerta contra fornecer saídas às quais softmax já foi aplicado. www.tensorflow.org
Se você violar essa regra aplicando softmax no fim do modelo e depois passar o resultado a uma função de perda destinada a logits, as probabilidades poderão ser interpretadas novamente como logits, em vez de receberem a única aplicação de softmax pretendida. Isso altera o significado da perda e de seus gradientes, deixando a configuração de treinamento incorreta. A confirmação de se uma perda “inclui softmax internamente” ou “aceita probabilidades já convertidas” deve ser feita pelo contrato de entrada da API, e não apenas pelo nome da função.
O objetivo de inferência ou exibição é diferente. Após o treinamento, você pode aplicar softmax aos logits quando quiser mostrar probabilidades de classe ou realizar pós-processamento baseado em probabilidade. O ponto principal não é que softmax nunca deva ser usado, mas que ele deve ser aplicado exatamente uma vez no estágio de entrada esperado pela perda de treinamento.
Por que a estabilidade numérica é importante?
A fórmula de softmax contém exponenciais e logaritmos. Se os logits forem extremamente grandes ou pequenos, calcular pode exceder o intervalo representável por um computador, criando risco de overflow ou underflow. Calcular primeiro as probabilidades e depois aplicar logaritmos separadamente pode ser vulnerável a esses problemas.
Funções de perda combinadas e implementações da família log_softmax geralmente usam formas estáveis de calcular . A documentação do PyTorch também explica que log_softmax tem propriedades numéricas melhores do que calcular softmax e logaritmo separadamente. docs.pytorch.org
A propriedade de deslocamento por constante descrita antes também pode ser usada para estabilização. Subtrair o valor máximo de todos os logits não altera o resultado de softmax.
Isso faz com que o maior termo exponencial seja , reduzindo a necessidade de lidar com números desnecessariamente grandes. No código de produção, porém, geralmente é preferível usar uma perda combinada fornecida pelo framework e baseada em logits ou uma operação log-softmax estável, em vez de implementar os componentes separadamente por conta própria.
Os rótulos devem ser vetores one-hot ou inteiros?
A representação dos rótulos está relacionada ao contrato de entrada da função de perda. Formatos comuns incluem rótulos one-hot ou de probabilidade, e rótulos inteiros esparsos.
| Formato de rótulo | Exemplo quando a primeira classe está correta entre três | Características |
|---|---|---|
| Rótulo one-hot | [1, 0, 0] | Um vetor com o mesmo comprimento que o número de classes; apenas a posição correta é 1. |
| Rótulo de probabilidade | [0.8, 0.1, 0.1] | Uma distribuição-alvo cujos elementos não são negativos e somam 1. |
| Rótulo inteiro esparso | 0 | Armazena somente o índice da classe correta. |
Rótulos one-hot correspondem diretamente à fórmula básica de entropia cruzada. Rótulos inteiros esparsos podem armazenar a mesma informação de maneira mais compacta, o que pode ser útil quando há muitas classes. Contudo, os dois formatos têm formas de tensor e tipos de dados diferentes, portanto você deve usar o formato exigido por uma função de perda específica.
A documentação do TensorFlow para entropia cruzada softmax baseada em logits explica que vetores de rótulo devem ser distribuições de probabilidades válidas e distingue formatos de rótulo relacionados para classificação mutuamente exclusiva. www.tensorflow.org Por exemplo, passar um único inteiro diretamente a uma função de perda one-hot, ou passar um vetor one-hot a uma função para rótulos inteiros esparsos, pode não calcular a quantidade pretendida.
Rótulos de probabilidade flexibilizam a suposição de que exatamente uma classe deve ter valor 1. Contudo, isso não significa o mesmo que um problema multirrótulo, no qual várias classes podem ser verdadeiras independentemente. Na classificação com softmax, os rótulos de probabilidade ainda representam uma distribuição cujos elementos somam 1.
Como classificação binária, multiclasse e multirrótulo diferem?
Funções de saída e perdas não devem ser escolhidas apenas observando o número de classes. Primeiro, determine se os eventos-alvo podem ocorrer ao mesmo tempo. A seguinte distinção é útil na prática.
| Estrutura do problema | Exemplo | Representação de saída típica | Perda típica |
|---|---|---|---|
| Classificação multiclasse mutuamente exclusiva | Um entre gato, cachorro ou pássaro | Softmax entre todas as classes | Entropia cruzada softmax |
| Classificação binária | Verdadeiro/falso, aprovar/rejeitar | Uma sigmoide ou softmax de duas classes | Entropia cruzada binária ou entropia cruzada softmax |
| Classificação multirrótulo | Uma foto contém uma pessoa e uma bicicleta | Sigmoide por classe | Entropia cruzada binária por classe |
Na classificação multiclasse, é natural que as probabilidades das classes somem 1. Se a probabilidade de uma imagem ser um gato aumenta, a probabilidade de essa mesma imagem ser um cachorro ou pássaro deve diminuir relativamente. A documentação do TensorFlow também distingue o uso de entropia cruzada softmax quando os rótulos são mutuamente exclusivos de situações com vários rótulos independentes, que exigem uma configuração diferente. www.tensorflow.org
Na classificação multirrótulo, cada saída se aproxima mais de uma pergunta separada: “Há uma pessoa?”, “Há uma bicicleta?” e “Há uma árvore?” podem todas receber resposta positiva simultaneamente. Se softmax força o total a 1, aumentar a probabilidade de um rótulo reduz as probabilidades dos outros, o que pode não corresponder à estrutura do problema. Aplicar sigmoide a cada classe permite que a probabilidade de cada item seja tratada de modo independente.
A classificação binária pode ser especialmente confusa porque ambas as abordagens parecem possíveis. Aplicar sigmoide a uma saída representa diretamente a probabilidade da classe positiva. Aplicar softmax a dois logits representa positivo e negativo como uma distribuição de duas classes que soma 1. Qualquer que seja a abordagem escolhida, a codificação do rótulo e a função de perda devem corresponder a esse formato de saída.
Minimizar a entropia cruzada significa corresponder a distribuições?
Quando tanto o alvo quanto a previsão são distribuições de probabilidades válidas, a entropia cruzada pode ser expressa por sua relação com a entropia e a divergência KL da seguinte forma.
Aqui, é a entropia que representa a incerteza da própria distribuição verdadeira, e é a divergência KL que representa a diferença entre a distribuição verdadeira e a distribuição prevista . Se a distribuição-alvo nos dados de treinamento for fixa, não muda com os parâmetros do modelo. Portanto, à parte essa constante, reduzir a entropia cruzada pode ser interpretado como reduzir a divergência KL entre e .
Essa interpretação mostra por que a entropia cruzada é amplamente usada como objetivo de aprendizado para distribuições de probabilidades. O modelo é pressionado não apenas a colocar a classe correta no topo, mas também a distribuir probabilidades próximas à distribuição-alvo observada.
Entretanto, essa equação tem pressupostos. Tanto quanto devem ser distribuições de probabilidades: seus componentes devem estar no intervalo apropriado e somar 1. Os próprios logits não são distribuições de probabilidades, portanto não são substituídos diretamente nessa relação. Logits se conectam aos cálculos de distribuição de probabilidades por meio de softmax ou de uma perda combinada baseada em logits.
Quais são os equívocos e erros comuns?
O primeiro é o equívoco de que logits são probabilidades. A classe com o maior logit também possui a maior probabilidade de softmax, mas os valores de logit em si não podem ser interpretados como porcentagens. Quanto uma diferença de logits como 2 versus 1 se traduz em uma diferença de probabilidade só é determinado após aplicar softmax junto com todos os demais logits.
O segundo é o equívoco de que o treinamento de classificação só funciona se softmax for adicionado ao fim do modelo. Se você usa uma perda de entropia cruzada combinada que aceita logits, é comum não adicionar explicitamente softmax final durante o treinamento. Isso favorece o cálculo interno e a estabilidade numérica. www.tensorflow.orgdocs.pytorch.org
O terceiro é o equívoco de que entropia cruzada softmax serve para todo problema de classificação. Essa combinação de perda é natural quando as classes são mutuamente exclusivas. Se várias tags corretas puderem coexistir para uma amostra, softmax, que restringe a probabilidade total das classes a 1, pode não representar adequadamente o significado dos dados.
O quarto é o equívoco de que entropia cruzada e acurácia são a mesma métrica. A acurácia geralmente considera apenas a única classe de probabilidade máxima, enquanto a entropia cruzada reflete toda a probabilidade atribuída à resposta correta. Portanto, dois modelos com a mesma acurácia podem ter valores de entropia cruzada diferentes. Essa também é uma razão pela qual a perda de treinamento pode diminuir sem que a acurácia aumente monotonicamente a cada etapa.
O quinto é o erro de julgar se um modelo é bom ou ruim apenas por um único valor de perda. Os valores de entropia cruzada são afetados pelo número de classes, pela dificuldade da tarefa, pelo formato do rótulo e pelo método de agregação. É mais apropriado considerar as mudanças sob a mesma tarefa e configuração, a perda nos dados de validação e métricas de avaliação separadas que sejam adequadas à tarefa.
O que você deve verificar antes de configurar o modelo?
Antes de aplicar softmax e entropia cruzada, é útil verificar as seguintes perguntas em ordem.
- Cada amostra tem exatamente uma classe correta? Se sim, a classificação multiclasse baseada em softmax é uma candidata. Se vários rótulos puderem ser verdadeiros simultaneamente, primeiro considere sigmoide por classe e perda binária.
- A saída final do modelo são logits ou já são probabilidades? Logits são pontuações brutas sem restrições, enquanto probabilidades são valores normalizados. Se a perda combinada espera logits, não aplique softmax antecipadamente.
- O formato do rótulo corresponde à função de perda? Verifique se ela aceita vetores one-hot ou de probabilidade, ou índices inteiros. Além do formato, verifique a dimensão do lote e a posição da dimensão de classe.
- Você distinguiu os objetivos de treinamento e inferência? Durante o treinamento, calcule com uma perda estável baseada em logits. Durante a inferência, use softmax quando precisar exibir probabilidades ou aplicar regras baseadas em probabilidade.
- Você interpreta perda e métricas de avaliação separadamente? A entropia cruzada é um objetivo de treinamento que reflete a qualidade das previsões probabilísticas, enquanto a acurácia mede se a escolha final corresponde ao alvo. Interprete-as em conjunto de acordo com a tarefa.
Essa lista de verificação não se limita a uma biblioteca específica. No entanto, mesmo quando os nomes reais das APIs são parecidos, eles podem diferir quanto a esperar logits, probabilidades ou rótulos inteiros como entradas. Imediatamente antes da implementação, consulte a documentação oficial da função usada para confirmar a forma de entrada e se ela inclui uma função de ativação interna.
Conclusão: entenda a conversão de probabilidade e o cálculo da perda pelos seus papéis
Softmax converte vários logits em uma distribuição de probabilidades que soma 1, representando a probabilidade relativa de classes mutuamente exclusivas. A entropia cruzada calcula como perda a diferença entre essa distribuição prevista e a distribuição-alvo, atribuindo uma penalidade maior a previsões que dão baixa probabilidade à resposta correta. Para um alvo one-hot, a perda se simplifica para , tornando claro o objetivo de aprendizado de aumentar a probabilidade da classe correta.
Na prática, softmax e entropia cruzada muitas vezes não são calculadas separadamente. Em vez disso, usa-se uma função de perda combinada que aceita logits. Isso preserva o objetivo matemático e permite um cálculo numericamente mais estável. Contudo, essa combinação é mais natural quando a estrutura do problema é “classificação multiclasse com exatamente uma resposta correta”. Ao selecionar saídas e perdas, o essencial é verificar se os rótulos são mutuamente exclusivos e qual entrada a função de perda espera antes de considerar o número de classes.