Debugging jaringan saraf biasanya melibatkan tweaking hyperparameters, memvisualisasikan filter yang dipelajari, dan merencanakan metrik penting. Bisakah Anda membagikan hyperparameter apa yang telah Anda gunakan?
- Apa ukuran batch Anda?
- Berapa tingkat belajar Anda?
- Apa jenis dari autoencoder yang Anda gunakan?
- Sudahkah Anda mencoba menggunakan Denoising Autoencoder? (Nilai korupsi apa yang sudah Anda coba?)
- Berapa banyak layer tersembunyi dan ukuran apa?
- Apa dimensi gambar input Anda?
Menganalisis log pelatihan juga berguna. Plot grafik kehilangan rekonstruksi Anda (sumbu Y) sebagai fungsi zaman (sumbu X). Apakah kehilangan rekonstruksi Anda menyatu atau menyimpang?
Berikut ini adalah contoh dari autoencoder untuk klasifikasi gender manusia yang berbeda, dihentikan setelah 1500 zaman, memiliki hiperparameter disetel (dalam hal ini pengurangan dalam tingkat pembelajaran), dan memulai kembali dengan bobot yang sama yang menyimpang dan akhirnya bertemu.
Inilah yang konvergen: (kami menginginkan ini)
Vanilla "tidak dibatasi" dapat mengalami masalah di mana mereka hanya belajar pemetaan identitas. Itulah salah satu alasan mengapa komunitas telah menciptakan rasa Denoising, Jarang, dan Kontraktif.
Bisakah Anda memposting sebagian kecil dari data Anda di sini? Saya lebih dari bersedia menunjukkan hasil dari salah satu autoencoder saya.
Di samping catatan: Anda mungkin ingin bertanya pada diri sendiri mengapa Anda menggunakan gambar grafik di tempat pertama ketika grafik tersebut dapat dengan mudah direpresentasikan sebagai vektor data. Yaitu,
[0, 13, 15, 11, 2, 9, 6, 5]
Jika Anda dapat merumuskan kembali masalah seperti di atas, Anda pada dasarnya membuat kehidupan pembuat enkoder Anda lebih mudah. Pertama-tama tidak perlu mempelajari cara melihat gambar sebelum dapat mencoba mempelajari distribusi pembuatan.
Jawaban tindak lanjut (diberikan data.)
Berikut adalah filter dari 1000 unit tersembunyi, single layer Denoising Autoencoder. Perhatikan bahwa beberapa filter tampaknya acak. Itu karena saya berhenti berlatih begitu awal dan jaringan tidak punya waktu untuk mempelajari filter itu.
Berikut adalah hiperparameter yang saya latih:
batch_size = 4
epochs = 100
pretrain_learning_rate = 0.01
finetune_learning_rate = 0.01
corruption_level = 0.2
Saya berhenti pra-pelatihan setelah zaman ke-58 karena filternya cukup bagus untuk dikirim di sini. Jika saya jadi Anda, saya akan melatih Autoencoder 3-layer Stacked Denoising penuh dengan arsitektur 1000x1000x1000 untuk memulai.
Berikut adalah hasil dari langkah fine-tuning:
validation error 24.15 percent
test error 24.15 percent
Jadi pada pandangan pertama, tampaknya lebih baik daripada kebetulan, namun, ketika kita melihat pemecahan data antara kedua label kita melihat bahwa ia memiliki persen yang sama persis (75,85% menguntungkan dan 24,15% tidak menguntungkan). Jadi itu berarti jaringan telah belajar untuk hanya merespons "menguntungkan", terlepas dari sinyal. Saya mungkin akan melatih ini untuk waktu yang lebih lama dengan jaring yang lebih besar untuk melihat apa yang terjadi. Juga, sepertinya data ini dihasilkan dari beberapa jenis dataset keuangan yang mendasarinya. Saya akan merekomendasikan agar Anda melihat ke dalam Jaringan Syaraf Berulang setelah memformulasi ulang masalah Anda ke dalam vektor seperti yang dijelaskan di atas. RNNs dapat membantu menangkap beberapa dependensi temporal yang ditemukan dalam data deret waktu seperti ini. Semoga ini membantu.