¿Qué son softmax y la entropía cruzada? Convertir logits en probabilidades y pérdida de entrenamiento

Por 쉬었음.com

Softmax y la entropía cruzada son una combinación que permite a una red neuronal multiclase expresar como probabilidades qué clase es correcta entre varios candidatos y evaluar numéricamente cuánto difiere esa predicción de la respuesta correcta. Softmax convierte las salidas sin procesar del modelo, denominadas logits, en una distribución de probabilidad cuya suma es 1. La entropía cruzada calcula como pérdida la diferencia entre esa distribución de probabilidad y la distribución objetivo. El entrenamiento es el proceso de ajustar los pesos del modelo para reducir esta pérdida.

Por ejemplo, suponga que clasifica una imagen como gato, perro o ave. El modelo a menudo no responde inicialmente con algo como «70 % de probabilidad de gato». En su lugar, produce logits: puntuaciones comparativas para las tres clases. Softmax normaliza estas puntuaciones en probabilidades comparables, y la entropía cruzada asigna una penalización según cuánta probabilidad haya asignado el modelo a la respuesta real. Comprender ambos conceptos en conjunto puede reducir confusiones frecuentes sobre la capa de salida final, los formatos de etiqueta y la configuración de la función de pérdida.

¿Qué hace la función softmax?

Softmax es una función que convierte un vector de logits z=(z1,,zK)z=(z_1,\dots,z_K) para KK clases en probabilidades de clase p=(p1,,pK)p=(p_1,\dots,p_K). La probabilidad de la clase ii se calcula de la siguiente manera.

pi=softmax(z)i=ezij=1Kezjp_i=\operatorname{softmax}(z)_i= \frac{e^{z_i}}{\sum_{j=1}^{K}e^{z_j}}

Aquí, la función exponencial ezie^{z_i} otorga mayor peso relativo a las clases con puntuaciones más altas. Como el denominador es la suma de las puntuaciones exponenciadas de todas las clases, cada salida se sitúa entre 0 y 1, y la probabilidad total suma 1. Por tanto, la salida de softmax representa la probabilidad relativa de que una entrada pertenezca a cada clase como una única distribución de probabilidad. La documentación de PyTorch también describe softmax como un reescalado de cada elemento de entrada al intervalo de 0 a 1, de modo que los elementos sumen 1. docs.pytorch.org

Softmax es especialmente apropiada cuando los candidatos son mutuamente excluyentes. Es decir, si uno es verdadero, los demás no pueden ser la respuesta correcta. Algunos ejemplos son clasificar una imagen cuyo animal principal es exactamente uno entre gato, perro o ave, o asignar una oración a exactamente una categoría de sentimiento predefinida.

En cambio, las probabilidades de softmax no son independientes entre sí. Si la probabilidad de gato aumenta, la de perro o ave debe disminuir relativamente para mantener la suma de las tres probabilidades en 1. Esta característica normalmente no es adecuada para casos en los que varias etiquetas pueden ser verdaderas simultáneamente, como un problema en el que pueden aparecer tanto una persona como una bicicleta en una imagen. En ese caso, considere aplicar sigmoide de forma independiente a cada clase.

¿En qué se diferencian los logits de las probabilidades?

Un logit es una puntuación no normalizada producida por una capa lineal final o un componente similar. Los logits pueden ser negativos o mayores que 1, y la suma de los logits entre las clases no tiene ningún significado particular. Por ejemplo, [2,1,0][2,1,0] puede ser un conjunto de logits para tres clases, pero no es un vector de probabilidades.

Una característica importante de los logits es que las diferencias entre clases importan más que sus valores absolutos. Sumar la misma constante cc a cada logit no cambia el resultado de softmax.

softmax(z)i=softmax(z+c)i\operatorname{softmax}(z)_i= \operatorname{softmax}(z+c)_i

Esto se debe a que tanto el numerador como el denominador se multiplican por el factor común ece^c, que se cancela. Por tanto, los logits [2,1,0][2,1,0] y [102,101,100][102,101,100] pueden parecer puntuaciones sin procesar diferentes, pero producen las mismas probabilidades softmax. Softmax convierte en probabilidades las diferencias relativas entre candidatos, en lugar del punto de referencia de las puntuaciones.

¿Qué mide la entropía cruzada?

La entropía cruzada es una pérdida que indica cuánto difiere la distribución objetivo real yy de la distribución pp predicha por el modelo. Su forma multiclase básica es la siguiente.

H(y,p)=i=1KyilogpiH(y,p)=-\sum_{i=1}^{K}y_i\log p_i

Aquí, yiy_i es el peso que la etiqueta real asigna a la clase ii, y pip_i es la probabilidad predicha por el modelo para la clase ii. Una pérdida menor significa que la distribución predicha está más cerca de la distribución objetivo. Cuando se utiliza el logaritmo natural, la unidad es el nat.

Esta fórmula no es simplemente un cálculo que separa las respuestas correctas e incorrectas como 0 o 1. Refleja no solo si el modelo acertó la respuesta, sino también cuán seguro estaba de que la respuesta era correcta. Una predicción que asigna 0.51 a la clase correcta y otra que asigna 0.99 pueden tener la misma exactitud si la clase de mayor probabilidad es correcta en ambos casos. Sin embargo, la entropía cruzada asigna una pérdida menor a la segunda. Por ello, el entrenamiento anima al modelo no solo a clasificar la respuesta correcta en primer lugar, sino a asignarle una probabilidad mayor.

¿Por qué se simplifica la fórmula para etiquetas one-hot?

Los objetivos de clasificación mutuamente excluyente se representan a menudo como vectores one-hot. Si la primera clase es correcta entre tres clases, la etiqueta es [1,0,0][1,0,0]. Como solo la clase objetivo tt tiene yt=1y_t=1 y el resto son 0, la entropía cruzada se reduce a lo siguiente.

L=logptL=-\log p_t

En otras palabras, la pérdida se determina únicamente por la probabilidad predicha ptp_t de la clase correcta. A medida que ptp_t se acerca a 1, logpt-\log p_t se acerca a 0. En cambio, a medida que ptp_t disminuye, la pérdida crece rápidamente. Debido a esta propiedad, las predicciones que asignan una probabilidad baja a la respuesta correcta —especialmente las que predicen una respuesta incorrecta con una confianza muy alta— reciben una gran penalización durante el entrenamiento.

En teoría, si la probabilidad de la clase correcta es exactamente 0, log0\log 0 no está definido y la pérdida diverge hacia infinito. Las implementaciones reales de redes neuronales suelen utilizar cálculos estables basados en logits, evitando producir explícitamente una probabilidad de 0 y luego tomar su logaritmo.

¿Cómo se conectan softmax y la entropía cruzada?

La parte final de un modelo multiclase típico puede entenderse en tres pasos.

  1. La capa lineal final genera logits de clase zz.
  2. Softmax convierte los logits en probabilidades pp.
  3. La entropía cruzada compara las probabilidades pp con la etiqueta objetivo yy para calcular la pérdida LL.

Para un objetivo one-hot, esta conexión puede desarrollarse de la siguiente forma.

L=log(eztj=1Kezj)=zt+logj=1KezjL=-\log\left(\frac{e^{z_t}}{\sum_{j=1}^{K}e^{z_j}}\right) =-z_t+\log\sum_{j=1}^{K}e^{z_j}

Esta expresión se denomina a menudo entropía cruzada softmax o entropía cruzada categórica. El primer término, zt-z_t, disminuye a medida que aumenta el logit de la clase correcta, mientras que el segundo término, logjezj\log\sum_j e^{z_j}, también tiene en cuenta las puntuaciones de todas las clases competidoras. Por ello, el modelo aprende a aumentar la puntuación de la clase correcta y a hacerla relativamente más destacada que las clases incorrectas.

Aquí, softmax y la entropía cruzada deben distinguirse conceptualmente. Softmax es una función que cambia cómo se representan las salidas, mientras que la entropía cruzada es una pérdida que cuantifica el objetivo de entrenamiento. Sin embargo, en los frameworks prácticos los dos pasos se proporcionan a menudo como una única función de pérdida combinada, lo que puede hacer que parezcan una sola función.

¿Qué revela el cálculo con números?

Considere un problema de tres clases con logits [2,1,0][2,1,0]. Al aplicar softmax se obtienen probabilidades aproximadas de [0.665,0.245,0.090][0.665,0.245,0.090]. El ejemplo de softmax de TensorFlow presenta las mismas probabilidades aproximadas para estos logits. docs.pytorch.org

Si la primera clase es correcta, la etiqueta one-hot es [1,0,0][1,0,0] y la pérdida es la siguiente.

L=log(0.665)0.408L=-\log(0.665)\approx0.408

La primera clase tiene la mayor probabilidad entre los tres candidatos, y esa probabilidad es aproximadamente 0.665, por lo que la pérdida es relativamente pequeña. Sin embargo, «pequeña» no indica un umbral absoluto de aprobación. Una magnitud de pérdida apropiada puede variar según el número de clases, la dificultad de los datos, la incertidumbre de las etiquetas y si la pérdida se suma o se promedia en un lote.

Si, con los mismos logits, la tercera clase fuera realmente correcta, la pérdida sería log(0.090)-\log(0.090) y, por tanto, mucho mayor. El modelo consideró que la tercera clase era el candidato menos probable. De esta manera, la entropía cruzada refleja con sensibilidad no solo si una predicción es incorrecta, sino también cuán seguro está el modelo de que es incorrecta.

¿Por qué deben considerarse juntos el orden de probabilidades y el valor de pérdida?

La exactitud suele seleccionar la única clase con la probabilidad mayor y cuenta si coincide con la respuesta correcta. Por ello, una predicción de [0.34,0.33,0.33][0.34,0.33,0.33] cuando la primera clase es correcta y una predicción de [0.99,0.005,0.005][0.99,0.005,0.005] cuando la primera clase es correcta cuentan ambas como una predicción correcta.

La entropía cruzada no las trata por igual. La primera predicción apenas distingue entre las tres clases, mientras que la segunda asigna una probabilidad muy alta a la respuesta correcta. A la inversa, cuando la clase de mayor probabilidad es incorrecta, la pérdida también varía según cuán baja haya sido la probabilidad de la clase correcta. Por este motivo, el entrenamiento normalmente minimiza la entropía cruzada, mientras que la evaluación también comprueba métricas independientes, como la exactitud, según el objetivo de la tarea.

¿Por qué deben pasarse los logits directamente a la función de pérdida de entrenamiento?

Las funciones de pérdida combinadas de muchos frameworks de aprendizaje profundo reciben logits, no probabilidades softmax, como entrada. Por ejemplo, softmax_cross_entropy_with_logits de TensorFlow, como indica su nombre, acepta logits y realiza internamente los cálculos correspondientes a softmax y la entropía cruzada. Su documentación advierte de no proporcionar salidas a las que ya se haya aplicado softmax. www.tensorflow.org

Si incumple esta regla aplicando softmax al final del modelo y pasando después el resultado a una función de pérdida pensada para logits, las probabilidades pueden interpretarse nuevamente como logits en lugar de recibir la única aplicación de softmax prevista. Esto cambia el significado de la pérdida y sus gradientes, haciendo que la configuración de entrenamiento sea incorrecta. Si una pérdida «incluye softmax internamente» o «acepta probabilidades ya convertidas» debe verificarse en el contrato de entrada de la API, no solo en el nombre de la función.

El propósito de la inferencia o la visualización es distinto. Después del entrenamiento, puede aplicar softmax a los logits cuando desee mostrar probabilidades de clase o realizar posprocesamiento basado en probabilidades. La clave no es que softmax nunca deba utilizarse, sino que debe aplicarse exactamente una vez en la etapa de entrada que espera la pérdida de entrenamiento.

¿Por qué es importante la estabilidad numérica?

La fórmula de softmax contiene exponenciales y logaritmos. Si los logits son extremadamente grandes o pequeños, calcular ezie^{z_i} puede superar el rango representable de un ordenador, creando un riesgo de desbordamiento o subdesbordamiento. Calcular primero las probabilidades y luego aplicar los logaritmos por separado puede ser vulnerable a estos problemas.

Las funciones de pérdida combinadas y las implementaciones de la familia log_softmax suelen usar métodos estables para calcular logjezj\log\sum_j e^{z_j}. La documentación de PyTorch también explica que log_softmax tiene mejores propiedades numéricas que calcular softmax y el logaritmo por separado. docs.pytorch.org

La propiedad de desplazamiento constante descrita anteriormente también puede utilizarse para la estabilización. Restar el valor máximo m=maxjzjm=\max_j z_j de cada logit no cambia el resultado de softmax.

softmax(z)i=ezimjezjm\operatorname{softmax}(z)_i= \frac{e^{z_i-m}}{\sum_j e^{z_j-m}}

Esto hace que el mayor término exponencial sea e0=1e^0=1, reduciendo la necesidad de manejar números innecesariamente grandes. Sin embargo, en código de producción normalmente es preferible utilizar una pérdida combinada basada en logits proporcionada por el framework o una operación log-softmax estable, en lugar de implementar los componentes por separado.

¿Deben ser las etiquetas vectores one-hot o enteros?

La representación de las etiquetas está vinculada al contrato de entrada de la función de pérdida. Los formatos habituales incluyen etiquetas one-hot o de probabilidad, y etiquetas enteras dispersas.

Formato de etiquetaEjemplo cuando la primera clase es correcta de tresCaracterísticas
Etiqueta one-hot[1, 0, 0]Un vector con la misma longitud que el número de clases; solo la posición correcta es 1.
Etiqueta de probabilidad[0.8, 0.1, 0.1]Una distribución objetivo cuyos elementos son no negativos y suman 1.
Etiqueta entera dispersa0Almacena únicamente el índice de la clase correcta.

Las etiquetas one-hot corresponden directamente a la fórmula básica de entropía cruzada. Las etiquetas enteras dispersas pueden almacenar la misma información de forma más compacta, lo que puede resultar útil cuando hay muchas clases. Sin embargo, los dos formatos tienen formas de tensor y tipos de datos distintos, por lo que debe utilizar el formato requerido por una función de pérdida concreta.

La documentación de TensorFlow para la entropía cruzada softmax basada en logits explica que los vectores de etiquetas deben ser distribuciones de probabilidad válidas y distingue formatos de etiqueta relacionados para la clasificación mutuamente excluyente. www.tensorflow.org Por ejemplo, pasar un único entero directamente a una función de pérdida one-hot, o pasar un vector one-hot a una función para etiquetas enteras dispersas, puede no calcular la cantidad prevista.

Las etiquetas de probabilidad relajan la suposición de que exactamente una clase debe tener un valor de 1. Sin embargo, esto no significa lo mismo que un problema multietiqueta en el que varias clases pueden ser verdaderas de manera independiente. En la clasificación con softmax, las etiquetas de probabilidad siguen representando una distribución cuyos elementos suman 1.

¿En qué se diferencian la clasificación binaria, multiclase y multietiqueta?

Las funciones de salida y las pérdidas no deben elegirse únicamente observando el número de clases. Primero determine si los eventos objetivo pueden ocurrir al mismo tiempo. La siguiente distinción resulta útil en la práctica.

Estructura del problemaEjemploRepresentación de salida típicaPérdida típica
Clasificación multiclase mutuamente excluyenteUno entre gato, perro o aveSoftmax en todas las clasesEntropía cruzada softmax
Clasificación binariaVerdadero/falso, aprobar/rechazarUn sigmoide o softmax de dos clasesEntropía cruzada binaria o entropía cruzada softmax
Clasificación multietiquetaUna foto contiene tanto una persona como una bicicletaSigmoide por claseEntropía cruzada binaria por clase

En la clasificación multiclase, es natural que las probabilidades de clase sumen 1. Si aumenta la probabilidad de que una imagen sea un gato, la probabilidad de que la misma imagen sea un perro o un ave debe disminuir relativamente. La documentación de TensorFlow también distingue el uso de la entropía cruzada softmax cuando las etiquetas son mutuamente excluyentes de las situaciones con varias etiquetas independientes, que requieren una configuración diferente. www.tensorflow.org

En la clasificación multietiqueta, cada salida se parece más a una pregunta independiente: «¿Hay una persona?», «¿Hay una bicicleta?» y «¿Hay un árbol?» pueden responderse afirmativamente a la vez. Si softmax obliga a que el total sea 1, aumentar la probabilidad de una etiqueta fuerza a reducir las probabilidades de otras etiquetas, lo que puede no ajustarse a la estructura del problema. Aplicar sigmoide a cada clase permite manejar la probabilidad de cada elemento de forma independiente.

La clasificación binaria puede resultar especialmente confusa porque ambos enfoques parecen posibles. Aplicar sigmoide a una salida representa directamente la probabilidad de la clase positiva. Aplicar softmax a dos logits representa las clases positiva y negativa como una distribución de dos clases que suma 1. Sea cual sea el enfoque elegido, la codificación de etiquetas y la función de pérdida deben coincidir con ese formato de salida.

¿Minimizar la entropía cruzada significa ajustar distribuciones?

Cuando tanto el objetivo yy como la predicción pp son distribuciones de probabilidad válidas, la entropía cruzada puede expresarse mediante su relación con la entropía y la divergencia KL de la siguiente manera.

H(y,p)=H(y)+DKL(yp)H(y,p)=H(y)+D_{\mathrm{KL}}(y\Vert p)

Aquí, H(y)H(y) es la entropía que representa la incertidumbre de la propia distribución real, y DKL(yp)D_{\mathrm{KL}}(y\Vert p) es la divergencia KL que representa la diferencia entre la distribución real yy y la distribución predicha pp. Si la distribución objetivo yy de los datos de entrenamiento es fija, H(y)H(y) no cambia con los parámetros del modelo. Por tanto, aparte de esa constante, reducir la entropía cruzada puede interpretarse como reducir la divergencia KL entre yy y pp.

Esta interpretación muestra por qué la entropía cruzada se usa ampliamente como objetivo de aprendizaje para distribuciones de probabilidad. El modelo recibe presión no solo para situar la clase correcta en primer lugar, sino también para distribuir las probabilidades de forma próxima a la distribución objetivo observada.

Sin embargo, esta ecuación tiene supuestos. Tanto yy como pp deben ser distribuciones de probabilidad: sus componentes deben estar en el intervalo apropiado y sumar 1. Los logits en sí mismos no son distribuciones de probabilidad, por lo que no se sustituyen directamente en esta relación. Los logits se conectan con los cálculos de distribución de probabilidad mediante softmax o una pérdida combinada basada en logits.

¿Cuáles son los errores y conceptos erróneos frecuentes?

El primero es el concepto erróneo de que los logits son probabilidades. La clase con el mayor logit también tiene la mayor probabilidad softmax, pero los valores de logit no pueden interpretarse como porcentajes. La diferencia de probabilidad a la que se traduce una diferencia de logits como 2 frente a 1 se determina solo después de aplicar softmax junto con todos los demás logits.

El segundo es el concepto erróneo de que el entrenamiento de clasificación solo funciona si se añade softmax al final del modelo. Si utiliza una pérdida de entropía cruzada combinada que acepta logits, es habitual no añadir explícitamente softmax final durante el entrenamiento. Esto permite el cálculo interno y la estabilidad numérica. www.tensorflow.orgdocs.pytorch.org

El tercero es el concepto erróneo de que la entropía cruzada softmax es adecuada para cualquier problema de clasificación. Esta combinación de pérdida es natural cuando las clases son mutuamente excluyentes. Si varias etiquetas correctas pueden coexistir en una muestra, softmax, que restringe la probabilidad total de las clases a 1, puede no representar adecuadamente el significado de los datos.

El cuarto es el concepto erróneo de que la entropía cruzada y la exactitud son la misma métrica. La exactitud generalmente observa solo la única clase de mayor probabilidad, mientras que la entropía cruzada refleja toda la probabilidad asignada a la respuesta correcta. Por tanto, dos modelos con la misma exactitud pueden tener valores de entropía cruzada distintos. Esta es también una razón por la que la pérdida de entrenamiento puede disminuir sin que la exactitud aumente de forma monótona en cada paso.

El quinto es el error de determinar si un modelo es bueno o malo basándose únicamente en un valor de pérdida aislado. Los valores de entropía cruzada se ven afectados por el número de clases, la dificultad de la tarea, el formato de las etiquetas y el método de agregación. Es más adecuado considerar los cambios con la misma tarea y configuración, la pérdida en los datos de validación y métricas de evaluación independientes apropiadas para la tarea.

¿Qué debe comprobar antes de configurar el modelo?

Antes de aplicar softmax y la entropía cruzada, es útil comprobar las siguientes preguntas en orden.

  1. ¿Cada muestra tiene exactamente una clase correcta? Si es así, la clasificación multiclase basada en softmax es una posibilidad. Si varias etiquetas pueden ser verdaderas simultáneamente, considere primero el sigmoide por clase y la pérdida binaria.
  2. ¿La salida final del modelo son logits o ya son probabilidades? Los logits son puntuaciones sin procesar y sin restricciones, mientras que las probabilidades son valores normalizados. Si la pérdida combinada espera logits, no aplique softmax por adelantado.
  3. ¿El formato de etiqueta coincide con la función de pérdida? Compruebe si acepta vectores one-hot o de probabilidad, o índices enteros. Además del formato, compruebe la dimensión del lote y la posición de la dimensión de clase.
  4. ¿Ha distinguido los propósitos del entrenamiento y la inferencia? Durante el entrenamiento, calcule con una pérdida estable basada en logits. Durante la inferencia, use softmax cuando necesite mostrar probabilidades o aplicar reglas basadas en probabilidades.
  5. ¿Interpreta por separado la pérdida y las métricas de evaluación? La entropía cruzada es un objetivo de entrenamiento que refleja la calidad de las predicciones de probabilidad, mientras que la exactitud mide si la elección final coincide con el objetivo. Interprételas conjuntamente según la tarea.

Esta lista de verificación no está limitada a una biblioteca en particular. Sin embargo, incluso cuando los nombres reales de las API son similares, pueden diferir en si esperan logits, probabilidades o etiquetas enteras como entradas. Inmediatamente antes de implementar, consulte la documentación oficial de la función que utilice para confirmar la forma de entrada y si incluye una función de activación interna.

Conclusión: Comprenda la conversión de probabilidades y el cálculo de pérdida según sus funciones

Softmax convierte múltiples logits en una distribución de probabilidad que suma 1, representando la probabilidad relativa de clases mutuamente excluyentes. La entropía cruzada calcula como pérdida la diferencia entre esa distribución predicha y la distribución objetivo, asignando una penalización mayor a las predicciones que dan una baja probabilidad a la respuesta correcta. Para un objetivo one-hot, la pérdida se simplifica a logpt-\log p_t, lo que deja claro el objetivo de aprendizaje de aumentar la probabilidad de la clase correcta.

En la práctica, softmax y la entropía cruzada a menudo no se calculan por separado. En su lugar, se utiliza una función de pérdida combinada que acepta logits. Esto conserva el objetivo matemático y permite un cálculo numéricamente más estable. Sin embargo, esta combinación es más natural cuando la estructura del problema es «clasificación multiclase con exactamente una respuesta correcta». Al seleccionar salidas y pérdidas, la clave es comprobar si las etiquetas son mutuamente excluyentes y qué entrada espera la función de pérdida antes de considerar el número de clases.

Preguntas frecuentes

¿Deben usarse siempre juntos softmax y la entropía cruzada?

No siempre. Se usan habitualmente juntos en tareas de clasificación que seleccionan una clase entre varias clases mutuamente excluyentes. Sin embargo, para problemas multietiqueta en los que varios elementos pueden ser verdaderos al mismo tiempo, normalmente se usan sigmoide por clase y entropía cruzada binaria.

¿Debo evitar incluir softmax directamente en la capa final del modelo durante el entrenamiento?

Depende de la función de pérdida que utilice. Si usa una función combinada de entropía cruzada que espera logits, debe pasar los logits sin aplicar softmax antes. La función realiza internamente los cálculos necesarios.

¿Qué significa que la entropía cruzada sea 0?

Para un objetivo one-hot, la pérdida es 0 cuando a la clase correcta se le asigna una probabilidad de 1. En modelos calculados con logits finitos, la probabilidad normalmente se acercará mucho a 1, en lugar de ser exactamente 1.

¿Puede ser alta la exactitud mientras la entropía cruzada también es alta?

Sí. La exactitud comprueba si la clase con la mayor probabilidad predicha es correcta, mientras que la entropía cruzada también refleja la magnitud de la probabilidad asignada a la clase correcta. Incluso en una predicción correcta, la pérdida puede ser relativamente alta si la probabilidad de la clase correcta es baja.

¿Cuál es la diferencia entre etiquetas enteras dispersas y etiquetas one-hot?

Una etiqueta entera dispersa almacena únicamente el índice de la clase correcta, mientras que una etiqueta one-hot es un vector con un 1 en la posición correcta y 0 en todas las demás. Para la misma tarea de clasificación, elija el formato que requiera la función de pérdida que utilice.