Saya mencoba untuk melatih jaringan saraf yang mendalam untuk klasifikasi, menggunakan propagasi balik. Secara khusus, saya menggunakan jaringan saraf convolutional untuk klasifikasi gambar, menggunakan perpustakaan Tensor Flow. Selama pelatihan, saya mengalami beberapa perilaku aneh, dan saya hanya ingin tahu apakah ini tipikal, atau apakah saya mungkin melakukan sesuatu yang salah.
Jadi, jaringan saraf convolutional saya memiliki 8 lapisan (5 convolutional, 3 sepenuhnya terhubung). Semua bobot dan bias diinisialisasi dengan angka acak kecil. Saya kemudian menetapkan ukuran langkah, dan melanjutkan dengan pelatihan dengan bets-mini, menggunakan Adam Optimizer dari Tensor Flow.
Perilaku aneh yang saya bicarakan adalah bahwa selama sekitar 10 putaran pertama melalui data pelatihan saya, kerugian pelatihan tidak, secara umum, berkurang. Bobot sedang diperbarui, tetapi kehilangan pelatihan tetap sekitar pada nilai yang sama, kadang-kadang naik dan kadang-kadang turun di antara mini-batch. Tetap seperti ini untuk sementara waktu, dan saya selalu mendapat kesan bahwa kerugian tidak akan pernah berkurang.
Kemudian, tiba-tiba, kehilangan latihan berkurang secara dramatis. Misalnya, dalam sekitar 10 loop melalui data pelatihan, akurasi pelatihan meningkat dari sekitar 20% menjadi sekitar 80%. Sejak saat itu dan seterusnya, semuanya berakhir dengan baik. Hal yang sama terjadi setiap kali saya menjalankan pipa pelatihan dari awal, dan di bawah ini adalah grafik yang menggambarkan satu contoh proses.
Jadi, yang saya bertanya-tanya, adalah apakah ini perilaku normal dengan melatih jaringan saraf yang dalam, di mana dibutuhkan waktu untuk "menendang". Atau mungkinkah ada sesuatu yang saya lakukan salah yang menyebabkan keterlambatan ini?
Terima kasih banyak!
Jawaban:
Fakta bahwa algoritma membutuhkan waktu untuk "kick-in" tidak terlalu mengejutkan.
Secara umum, fungsi target yang akan dioptimalkan balik jaringan saraf yang sangat multi-modal. Dengan demikian, kecuali jika Anda memiliki semacam nilai awal yang cerdas untuk masalah Anda, tidak ada alasan untuk percaya bahwa Anda akan mulai pada turunan yang curam. Dengan demikian, algoritma pengoptimalan Anda akan hampir secara acak berkeliaran sampai menemukan lembah yang cukup curam untuk mulai turun ke bawah. Setelah ini ditemukan, Anda harus mengharapkan sebagian besar algoritma berbasis gradien untuk segera mulai mempersempit ke mode tertentu yang paling dekat dengannya.
sumber