Ich experimentiere ein bisschen mit Autoencodern und habe mit Tensorflow ein Modell erstellt, das versucht, den MNIST-Datensatz zu rekonstruieren.
Mein Netzwerk ist sehr einfach: X, e1, e2, d1, Y, wobei e1 und e2 Codierschichten sind, d2 und Y Decodierschichten sind (und Y die rekonstruierte Ausgabe ist).
X hat 784 Einheiten, e1 hat 100, e2 hat 50, d1 hat wieder 100 und Y 784 wieder.
Ich verwende Sigmoide als Aktivierungsfunktionen für die Ebenen e1, e2, d1 und Y. Die Eingänge befinden sich in [0,1] und sollten auch die Ausgänge sein.
Nun, ich habe versucht, die Kreuzentropie als Verlustfunktion zu verwenden, aber die Ausgabe war immer ein Blob, und ich bemerkte, dass die Gewichte von X bis e1 immer zu einer Matrix mit dem Wert Null konvergieren würden.
Andererseits würde die Verwendung von mittleren quadratischen Fehlern als Verlustfunktion ein anständiges Ergebnis ergeben, und ich kann jetzt die Eingaben rekonstruieren.
Warum ist das so? Ich dachte, ich könnte die Werte als Wahrscheinlichkeiten interpretieren und daher Kreuzentropie verwenden, aber offensichtlich mache ich etwas falsch.