Saya bereksperimen sedikit autoencoder, dan dengan tensorflow saya membuat model yang mencoba merekonstruksi dataset MNIST.
Jaringan saya sangat sederhana: X, e1, e2, d1, Y, di mana e1 dan e2 adalah lapisan pengkodean, d2 dan Y adalah lapisan decoding (dan Y adalah output yang direkonstruksi).
X memiliki 784 unit, e1 memiliki 100, e2 memiliki 50, d1 memiliki 100 lagi dan Y 784 lagi.
Saya menggunakan sigmoids sebagai fungsi aktivasi untuk layer e1, e2, d1, dan Y. Input ada di [0,1] dan seharusnya juga output.
Yah, saya mencoba menggunakan cross entropy sebagai fungsi kerugian, tetapi output selalu gumpalan, dan saya perhatikan bahwa bobot dari X ke e1 akan selalu menyatu ke matriks bernilai nol.
Di sisi lain, menggunakan rata-rata kesalahan kuadrat sebagai fungsi kerugian, akan menghasilkan hasil yang layak, dan saya sekarang dapat merekonstruksi input.
Kenapa begitu? Saya pikir saya bisa menafsirkan nilai-nilai sebagai probabilitas, dan oleh karena itu menggunakan cross entropy, tetapi jelas saya melakukan sesuatu yang salah.