26 votos

Función de pérdida autoencoder vs variational-autoencoder o pérdida MSE vs binary-cross-entropy-loss

Cuando tenemos entradas de valor real (por ejemplo, flotantes entre 0 y 1 como representación normalizada de valores en escala de grises de 0 a 256) en nuestro vector de etiquetas, siempre he pensado que utilizamos MSE(R2-loss) si queremos medir la distancia/error entre la entrada y la salida o, en general, entre la entrada y la etiqueta de la red. Por otro lado, siempre he pensado que la entropía cruzada binaria sólo se utiliza cuando intentamos predecir probabilidades y las entradas de la etiqueta de la verdad sobre el terreno son probabilidades reales.

Ahora cuando se trabaja con el conjunto de datos mnist cargado a través de tensorflow así:

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

Cada entrada es un float32 y oscila entre 0 y 1.

El flujo tensorial tutorial para el autocodificador utiliza R2-loss/MSE-loss para medir la pérdida de reconstrucción.

Mientras que el tensorflow tutorial para el autoencoder variacional utiliza la entropía cruzada binaria para medir la pérdida de reconstrucción.

¿Puede alguien decirme por qué, basándose en el mismo conjunto de datos con los mismos valores (son todos valores numéricos que en efecto representan valores de píxel) utilizan R2-loss/MSE-loss para el autoencoder y Binary-Cross-Entropy loss para el autoencoder variacional.

Creo que no hace falta decir que ambas funciones de pérdida se aplican a salidas sigmoidales.

24voto

user1696584 Puntos 1

No creo que haya algún tipo de razón profunda y significativa en juego aquí - es un ejemplo de escaparate que se ejecuta en MNIST, es bastante tolerante a los errores.


Optimización para MSE significa que sus intensidades de salida generadas son simétricamente cerca a las intensidades de entrada. Una intensidad superior a la de entrenamiento se penaliza en la misma medida que una intensidad inferior de igual valor.


Pérdida de entropía cruzada es asimétrica.

Si su la intensidad real es alta por ejemplo, 0,8, la generación de un píxel con una intensidad de 0,9 se penaliza más que la generación de un píxel con una intensidad de 0,7.

Por el contrario, si es bajo por ejemplo, 0,3, la predicción de una intensidad de 0,4 se penaliza menos que una intensidad prevista de 0,2.

Ya lo habrás adivinado: la pérdida de entropía cruzada es sesgada hacia el 0,5 siempre que la verdad sobre el terreno no sea binaria. Para una verdad básica de 0,5, la pérdida normalizada por píxel es igual a 2*MSE.

Es evidente que esto es un error. El resultado final es que estás entrenando a la red para que siempre genere imágenes que son más borroso que las entradas. Estás penalizar activamente cualquier resultado que mejore la nitidez de la salida más que los que lo empeoran ¡!


MSE tampoco es inmune a este comportamiento, pero al menos es imparcial y no sesgado en la dirección completamente equivocada .

Sin embargo, antes de salir corriendo a escribir una función de pérdida con el sesgo opuesto, hay que tener en cuenta que alejar los resultados de 0,5 significará que las imágenes descodificadas tendrán bordes muy duros y pixelados.

Eso es - o al menos yo muy fuertemente El componente adversarial es esencialmente una función de pérdida "inteligente" entrenable para el autoencoder (posiblemente variacional).

9voto

Jan Kukacka Puntos 1027

Este debate sugiere que la entropía cruzada binaria se utiliza en el caso VAE principalmente para un mejor comportamiento de optimización. Otra razón por la que funciona bien es que el conjunto de datos MNIST sigue aproximadamente la distribución Bernoulli multivariante: los valores de los píxeles se aproximan al cero o al uno y la binarización no lo cambia mucho. Para una explicación más detallada, véase Utilización de una VAE de Bernoulli en observaciones con valores reales .

7voto

user279492 Puntos 6

Depende de cómo se asuma el modelo para la probabilidad. En otras palabras, en los autocodificadores variacionales se busca minimizar la ELBO (límite inferior empírico), que contiene $KL(q||p)$ que es gestionado por el codificador y un segundo término denominado error de reconstrucción $E_{q}[log p(x|z)]$ gestionado por el descodificador y requiere muestreo, aquí es donde la elección del modelo de $p(x|z)$ entra en juego. Si suponemos que sigue una distribución normal, acabaremos con un MSE minimización ya que $p(x|z)$ puede reformularse como $p(x|\hat{x}) \sim \mathcal{N}(\hat{x},\sigma)$ si se asume una distribución multinoully se utilizará la entropía cruzada.

Sólo una nota extraída del libro de Goodfellow: Muchos autores utilizan el término "entropía cruzada" para identificar específicamente la log-verosimilitud negativa de una distribución Bernoulli o softmax, pero es un término erróneo. Cualquier pérdida consistente en una log-verosimilitud negativa es una entropía cruzada entre la distribución empírica definida por el conjunto de entrenamiento y la distribución de probabilidad definida por el modelo. Por ejemplo, el error cuadrático medio es la entre la distribución empírica y un modelo gaussiano.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X