Estoy experimentando un poco de autoencoders, y con tensorflow creé un modelo que intenta reconstruir el conjunto de datos MNIST.
Mi red es muy simple: X, e1, e2, d1, Y, donde e1 y e2 son capas de codificación, d2 e Y son capas de decodificación (e Y es la salida reconstruida).
X tiene 784 unidades, e1 tiene 100, e2 tiene 50, d1 tiene 100 nuevamente e Y 784 nuevamente.
Estoy usando sigmoides como funciones de activación para las capas e1, e2, d1 e Y. Las entradas están en [0,1] y también deberían ser las salidas.
Bueno, intenté usar la entropía cruzada como función de pérdida, pero el resultado siempre fue un blob, y noté que los pesos de X a e1 siempre convergerían en una matriz de valor cero.
Por otro lado, el uso de errores cuadráticos medios como función de pérdida produciría un resultado decente, y ahora puedo reconstruir las entradas.
¿Por qué es así? Pensé que podía interpretar los valores como probabilidades y, por lo tanto, usar entropía cruzada, pero obviamente estoy haciendo algo mal.
fuente
Respuestas:
Creo que la mejor respuesta a esto es que la función de pérdida de entropía cruzada simplemente no es adecuada para esta tarea en particular.
Al adoptar este enfoque, básicamente está diciendo que los datos verdaderos de MNIST son binarios, y sus intensidades de píxeles representan la probabilidad de que cada píxel esté 'activado'. Pero sabemos que este no es realmente el caso. La incorrección de esta suposición implícita nos está causando problemas.
También podemos ver la función de costo y ver por qué podría ser inapropiado. Digamos que nuestro valor de píxel objetivo es 0.8. Si trazamos la pérdida de MSE y la pérdida de entropía cruzada- [ registro ( objetivo )( predicción ) + ( 1 - objetivo ) log( 1 - predicción ) ] (normalizando esto para que su mínimo sea cero), obtenemos:
Podemos ver que la pérdida de entropía cruzada es asimétrica. ¿Por qué querríamos esto? ¿Es realmente peor predecir 0.9 para este 0.8 píxeles que predecir 0.7? Yo diría que es mejor, si acaso.
Probablemente podríamos entrar en más detalles y descubrir por qué esto conduce a los blobs específicos que está viendo. Me arriesgaría a adivinar que se debe a que las intensidades de píxeles son superiores a 0,5 en promedio en la región donde está viendo la burbuja. Pero, en general, este es un caso de los supuestos de modelado implícito que ha hecho que son inapropiados para los datos.
¡Espero que ayude!
fuente