J'expérimente un peu les auto-encodeurs, et avec tensorflow j'ai créé un modèle qui essaie de reconstruire l'ensemble de données MNIST.
Mon réseau est très simple: X, e1, e2, d1, Y, où e1 et e2 sont des couches de codage, d2 et Y sont des couches de décodage (et Y est la sortie reconstruite).
X a 784 unités, e1 a 100, e2 a 50, d1 a encore 100 et Y 784 à nouveau.
J'utilise sigmoids comme fonctions d'activation pour les couches e1, e2, d1 et Y. Les entrées sont en [0,1] et devraient donc être les sorties.
Eh bien, j'ai essayé d'utiliser l'entropie croisée comme fonction de perte, mais la sortie était toujours un blob, et j'ai remarqué que les poids de X à e1 convergeraient toujours vers une matrice à valeur nulle.
D'un autre côté, l'utilisation d'erreurs quadratiques moyennes comme fonction de perte produirait un résultat décent, et je suis maintenant en mesure de reconstruire les entrées.
Pourquoi est-ce si? J'ai pensé que je pouvais interpréter les valeurs comme des probabilités, et donc utiliser l'entropie croisée, mais évidemment je fais quelque chose de mal.