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.