Ketika saya mulai dengan jaringan saraf tiruan (NN) saya pikir saya harus berjuang overfitting sebagai masalah utama. Tetapi dalam prakteknya saya bahkan tidak bisa mendapatkan NN saya untuk melewati penghalang tingkat kesalahan 20%. Saya bahkan tidak bisa mengalahkan skor saya di hutan acak!
Saya mencari saran yang sangat umum atau tidak umum tentang apa yang harus dilakukan untuk membuat NN mulai menangkap tren dalam data.
Untuk mengimplementasikan NN, saya menggunakan Theano Stacked Auto Encoder dengan kode dari tutorial yang sangat bagus (tingkat kesalahan kurang dari 5%) untuk mengklasifikasikan dataset MNIST. Ini adalah multilayer perceptron, dengan lapisan softmax di atas dengan masing-masing disembunyikan kemudian dilatih sebelumnya sebagai autoencoder (dijelaskan sepenuhnya pada tutorial , bab 8). Ada ~ 50 fitur input dan ~ 10 kelas output. NN memiliki neuron sigmoid dan semua data dinormalisasi menjadi [0,1]. Saya mencoba banyak konfigurasi berbeda: jumlah lapisan tersembunyi dan neuron di dalamnya (100-> 100-> 100, 60-> 60-> 60, 60-> 30-> 15, dll.), Pembelajaran yang berbeda dan pra-pelatihan harga, dll.
Dan hal terbaik yang bisa saya dapatkan adalah tingkat kesalahan 20% pada set validasi dan tingkat kesalahan 40% pada set tes.
Di sisi lain, ketika saya mencoba menggunakan Random Forest (dari scikit-learn) saya dengan mudah mendapatkan tingkat kesalahan 12% pada set validasi dan 25% (!) Pada set tes.
Bagaimana mungkin NN dalam saya dengan pra-pelatihan berperilaku begitu buruk? Apa yang harus saya coba?
Anda mungkin tertarik membaca makalah berikut oleh para peneliti dari Microsoft Research:
Mereka memiliki masalah yang sama seperti Anda:
Untuk mengatasi masalah tersebut, mereka menggunakan arsitektur lewati. Dengan itu, mereka melatih jaringan yang sangat dalam (1202 lapisan) dan mencapai hasil terbaik dalam tantangan ILSVRC 2015.
sumber