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.
sumber
Jawaban:
Saya pikir jawaban terbaik untuk ini adalah bahwa fungsi kehilangan lintas-entropi tidak cocok untuk tugas khusus ini.
Dalam mengambil pendekatan ini, Anda pada dasarnya mengatakan bahwa data MNIST yang sebenarnya adalah biner, dan intensitas piksel Anda menunjukkan probabilitas bahwa setiap piksel dalam keadaan 'aktif'. Tapi kita tahu sebenarnya ini bukan masalahnya. Kekeliruan dari asumsi implisit ini kemudian menyebabkan masalah bagi kami.
Kita dapat melihat bahwa kehilangan lintas-entropi adalah asimetris. Mengapa kita menginginkan ini? Apakah benar-benar lebih buruk untuk memprediksi 0,9 untuk 0,8 pixel ini daripada untuk memprediksi 0,7? Saya akan mengatakan itu mungkin lebih baik, jika ada.
Kami mungkin bisa masuk ke detail lebih lanjut dan mencari tahu mengapa ini mengarah ke gumpalan spesifik yang Anda lihat. Saya akan menebak bahwa itu karena intensitas piksel di atas 0,5 rata-rata di wilayah tempat Anda melihat gumpalan. Tetapi secara umum ini adalah kasus asumsi pemodelan tersirat yang Anda buat tidak sesuai untuk data.
Semoga itu bisa membantu!
sumber