La entropía cruzada binaria es la función que mide cuánto se equivoca un clasificador de dos clases. Cuando una red termina en una neurona sigmoide, esa neurona devuelve una probabilidad entre 0 y 1, y la entropía cruzada binaria compara esa probabilidad con la etiqueta real, que solo puede valer 0 o 1. El resultado es un número que el entrenamiento intenta reducir. Entender su fórmula, de dónde sale y por qué encaja tan bien con la sigmoide aclara buena parte de cómo aprende una red a decir «sí» o «no». La misma explicación está disponible en inglés.

Fórmula clave $\mathcal{L} = -[y\log(\hat{y}) + (1-y)\log(1-\hat{y})]$

Puntos clave

  • La entropía cruzada binaria es la función de pérdida por defecto cuando la salida es una probabilidad de una sola clase: L = −[y·log(ŷ) + (1−y)·log(1−ŷ)].
  • Solo uno de los dos términos está activo en cada ejemplo, porque la etiqueta y vale 0 o 1 y anula al otro sumando.
  • Nace de la máxima verosimilitud: minimizar esta pérdida equivale a maximizar la probabilidad que la red asigna a los datos reales.
  • Castiga con dureza los errores seguros. Predecir 0,01 cuando la respuesta era 1 cuesta 4,6, casi cuarenta veces más que un fallo tibio de 0,5.
  • Combinada con la sigmoide, su derivada respecto a la entrada se reduce a ŷ − y, un gradiente limpio que hace muy estable el entrenamiento.

¿Qué es la entropía cruzada binaria?

La entropía cruzada binaria, también llamada log loss, es la función de pérdida que se usa cuando un modelo debe decidir entre dos opciones: spam o no spam, tumor o tejido sano, clic o no clic. La red produce una única probabilidad ŷ (la probabilidad de que la clase sea 1), y disponemos de la etiqueta verdadera y, que vale 1 si el ejemplo pertenece a esa clase y 0 si no.

La idea es medir la sorpresa. Si la etiqueta es 1 y la red predice 0,99, casi no hay sorpresa y la pérdida es minúscula. Si la etiqueta es 1 y la red predice 0,02, la sorpresa es enorme y la pérdida se dispara. Esa asimetría procede de la teoría de la información: el logaritmo mide los bits necesarios para corregir una predicción equivocada, como recoge la entrada de entropía cruzada en Wikipedia[1]. Es el caso particular, con dos clases, de la entropía cruzada general que estudiamos en el mapa de las matemáticas de las redes neuronales.

Fórmula y relación con la sigmoide

La fórmula para un solo ejemplo es:

$$\mathcal{L} = -[y\log(\hat{y}) + (1-y)\log(1-\hat{y})]$$

El truco está en que $y$ solo vale 0 o 1, así que en cada ejemplo un término desaparece. Si $y=1$, la pérdida queda en $-\log(\hat{y})$. Si $y=0$, queda en $-\log(1-\hat{y})$. Es una forma compacta de escribir dos casos en una sola línea.

El valor $\hat{y}$ casi siempre viene de una neurona sigmoide, $\hat{y} = \sigma(z) = \frac{1}{1+e^{-z}}$, donde $z = \mathbf{W}x+b$ es la suma ponderada de la última capa. La sigmoide garantiza que $\hat{y}$ esté entre 0 y 1, justo el rango que el logaritmo necesita para no romperse. Por eso este par, sigmoide más entropía cruzada binaria, es la salida estándar de cualquier clasificador de dos clases, tal como documenta la propia referencia de PyTorch para BCELoss[2]. Puedes repasar la neurona de salida en la función sigmoide.

Interpretación como verosimilitud logarítmica

¿De dónde sale esta fórmula tan concreta? No es un invento arbitrario: aparece sola cuando aplicamos la máxima verosimilitud. Modelamos cada etiqueta como una moneda trucada (una distribución de Bernoulli) cuya probabilidad de salir 1 es $\hat{y}$. La probabilidad de observar la etiqueta real $y$ es entonces $\hat{y}^{y}(1-\hat{y})^{1-y}$.

Entrenar consiste en elegir los pesos que hacen máxima esa probabilidad sobre todos los datos. Como multiplicar muchas probabilidades pequeñas lleva a números diminutos e inestables, tomamos el logaritmo, que convierte el producto en suma, y cambiamos el signo para tener algo que minimizar. Al aplicar $\log$ a $\hat{y}^{y}(1-\hat{y})^{1-y}$ aparece exactamente $y\log(\hat{y}) + (1-y)\log(1-\hat{y})$. Minimizar la entropía cruzada binaria es, por tanto, lo mismo que maximizar la verosimilitud. Como resume el libro de referencia de Goodfellow, Bengio y Courville, «la mayoría de las redes neuronales modernas se entrenan mediante máxima verosimilitud», y puedes ver el detalle del logaritmo en exponencial y logaritmo natural en deep learning.

Derivada y por qué se combina con la sigmoide

Aquí está la parte elegante. Para entrenar necesitamos el gradiente de la pérdida respecto a $z$, la entrada de la sigmoide. Si derivamos la pérdida solo respecto a $\hat{y}$, el resultado es incómodo: $\frac{\partial \mathcal{L}}{\partial \hat{y}} = -\frac{y}{\hat{y}} + \frac{1-y}{1-\hat{y}}$, con un denominador que explota cuando $\hat{y}$ se acerca a 0 o a 1.

La magia ocurre al aplicar la regla de la cadena con la derivada de la sigmoide, que es $\sigma'(z) = \hat{y}(1-\hat{y})$. Ese factor cancela justo los denominadores problemáticos, y todo se reduce a:

$$\frac{\partial \mathcal{L}}{\partial z} = \hat{y}-y$$

El gradiente $\hat{y}-y$ solo sale tan limpio cuando la sigmoide y la entropía cruzada binaria se derivan juntas. Si evalúas la sigmoide y el logaritmo por separado puedes toparte con $\log(0)$ y perder precisión, así que en la práctica conviene usar la versión fusionada que ofrecen las bibliotecas.

Ver la derivación

Partimos de $\mathcal{L} = -[y\log(\hat{y}) + (1-y)\log(1-\hat{y})]$ con $\hat{y} = \sigma(z)$. Derivando respecto a $\hat{y}$ se obtiene $\frac{\partial \mathcal{L}}{\partial \hat{y}} = -\frac{y}{\hat{y}} + \frac{1-y}{1-\hat{y}} = \frac{\hat{y}-y}{\hat{y}(1-\hat{y})}$. La regla de la cadena añade el factor $\frac{\partial \hat{y}}{\partial z} = \sigma'(z) = \hat{y}(1-\hat{y})$. Al multiplicar, el $\hat{y}(1-\hat{y})$ del numerador y del denominador se cancela y queda $\frac{\partial \mathcal{L}}{\partial z} = \hat{y}-y$.

El gradiente es simplemente la diferencia entre lo que la red predijo y lo que debía predecir. No hay divisiones peligrosas ni términos que se disparen. Por eso las bibliotecas serias fusionan las dos operaciones en una sola función estable, como BCEWithLogitsLoss, en lugar de encadenar sigmoide y logaritmo por separado. Este resultado limpio es la razón práctica de que la entropía cruzada binaria haya desplazado casi por completo al error cuadrático medio en los clasificadores.

Ejemplo numérico

Veamos tres predicciones para entender la escala de los castigos. Supongamos que la etiqueta correcta es $y=1$ en los tres casos.

  • La red predice $\hat{y} = 0{,}9$ (acierto seguro): $\mathcal{L} = -\log(0{,}9) \approx 0{,}105$.
  • La red predice $\hat{y} = 0{,}5$ (duda total): $\mathcal{L} = -\log(0{,}5) \approx 0{,}693$.
  • La red predice $\hat{y} = 0{,}1$ (fallo seguro): $\mathcal{L} = -\log(0{,}1) \approx 2{,}303$.

El contraste es enorme: equivocarse con confianza cuesta unas veintidós veces más que acertar con confianza (2,303 frente a 0,105). Esa forma de castigar es lo que empuja a la red a calibrar bien sus probabilidades, no solo a acertar la clase.

Cuando la etiqueta es $y=0$ la cuenta se invierte. Si la red predice $\hat{y} = 0{,}2$, el término activo es $-\log(1-0{,}2) = -\log(0{,}8) \approx 0{,}223$. Para un lote de varios ejemplos, la pérdida final es la media de todas estas cantidades. Si nuestro lote tuviera esos cuatro valores (0,105, 0,693, 2,303 y 0,223), la pérdida media sería aproximadamente 0,831, el número que el descenso de gradiente intenta reducir en cada paso con tasa de aprendizaje $\eta$.

Preguntas frecuentes

¿Cuál es la diferencia entre entropía cruzada binaria y categórica?

La binaria se usa cuando hay dos clases y una sola probabilidad de salida procedente de una sigmoide. La categórica se usa cuando hay tres clases o más, con una softmax que produce una probabilidad por clase. La binaria es el caso particular de la categórica con dos opciones, y ambas comparten la misma idea de logaritmo negativo.

¿Por qué no usar el error cuadrático medio para clasificar?

Porque con la sigmoide el error cuadrático produce una superficie de pérdida casi plana en las zonas donde la red se equivoca mucho, lo que frena el aprendizaje. La entropía cruzada binaria mantiene un gradiente fuerte precisamente ahí, $\hat{y}-y$, así que corrige los errores grandes con rapidez.

¿Qué pasa si la predicción es exactamente 0 o 1?

El logaritmo de 0 es menos infinito, así que la pérdida se rompería. Las bibliotecas lo evitan recortando ŷ a un rango como [1e−7, 1 − 1e−7] o, mejor, calculando la pérdida directamente desde z con una versión numéricamente estable que nunca evalúa log(0).

Conclusión

La entropía cruzada binaria no es una fórmula caprichosa, sino la traducción directa de una pregunta sencilla: ¿qué probabilidad daba la red a la respuesta correcta? Sale de la máxima verosimilitud, encaja de forma natural con la sigmoide y regala un gradiente tan simple como $\hat{y}-y$. Con esas tres piezas tienes el motor de casi cualquier clasificador de dos clases. El siguiente paso natural es ver cómo se generaliza a muchas clases en la función softmax.

Fuentes

  1. entropía cruzada en Wikipedia
  2. referencia de PyTorch para BCELoss
  3. Deep Learning (Goodfellow, Bengio y Courville)
  4. Neural Networks and Deep Learning (Michael Nielsen)

Ruta: Funciones de pérdida en redes neuronales