Ada sejumlah pertanyaan untuk diajukan:
- apakah Anda memiliki jumlah neuron yang tepat di setiap lapisan
- apakah Anda menggunakan jenis fungsi transfer yang sesuai?
- apakah Anda menggunakan jenis algoritma pembelajaran yang sesuai
- apakah Anda memiliki ukuran sampel yang cukup besar
- dapatkah Anda mengonfirmasi bahwa sampel Anda memiliki jenis hubungan yang tepat satu sama lain agar informatif? (tidak berlebihan, dari dimensi yang relevan, dll ...)
Apa yang bisa Anda berikan di jalan ephemeris? Bisakah Anda memberi tahu kami sesuatu tentang sifat data?
Anda bisa membuat pohon jaringan saraf dengan gradien boost.
Anda bertanya apa yang terjadi jika Anda berhenti lebih awal.
Anda bisa mencobanya sendiri. Jalankan 300x di mana Anda mulai dengan bobot yang diinisialisasi secara acak, dan kemudian berhenti pada jumlah iterasi yang ditentukan, katakanlah 100. Pada titik itu hitung kesalahan ensembel Anda, kesalahan subset pelatihan, dan kesalahan set tes Anda. Ulang. Setelah Anda memiliki 300 nilai untuk memberi tahu Anda apa kesalahannya, Anda bisa mendapatkan gagasan tentang distribusi kesalahan Anda dengan diberikan 100 iterasi pembelajaran. Jika Anda suka, Anda dapat mencicipi distribusi itu di beberapa nilai pembelajaran lainnya. Saya menyarankan 200, 500, dan 1000 iterasi. Ini akan memberi Anda gambaran bagaimana SNR Anda berubah seiring waktu. Sebidang SNR vs iterasi dapat memberi Anda gambaran tentang "tebing" atau "cukup baik". Terkadang ada tebing di mana kesalahan runtuh. Terkadang kesalahan dapat diterima pada saat itu.
Dibutuhkan data "yang relatif sederhana" atau keberuntungan "cukup bagus" bagi sistem Anda untuk secara konsisten berkumpul di bawah 100 iterasi. Keduanya bukan tentang pengulangan atau generalisasi.
Mengapa Anda berpikir dalam hal bobot konvergen dan tidak salah berada di bawah ambang tertentu. Pernahkah Anda mendengar tentang paradoks pemilihan? ( tautan ) Ketika Anda memiliki interaksi siklik dalam sistem Anda (seperti umpan balik di Neural Networks) maka Anda dapat memiliki paradoks pemungutan suara - perubahan yang digabungkan. Saya tidak tahu apakah bobot saja merupakan indikator yang cukup untuk konvergensi jaringan.
Anda bisa menganggap bobot sebagai ruang. Ini memiliki lebih dari 3 dimensi, tetapi masih berupa ruang. Dalam "centroid" ruang itu adalah wilayah "paling cocok" Anda. Jauh dari centroid kurang pas. Anda dapat menganggap pengaturan bobot Anda saat ini sebagai satu titik di ruang itu.
Sekarang Anda tidak tahu di mana "yang baik" sebenarnya. Apa yang Anda miliki adalah "kemiringan" lokal. Anda dapat melakukan gradient descent ke arah lokal "lebih baik" mengingat titik Anda saat ini. Itu tidak memberi tahu Anda "universal" lebih baik, tetapi lokal lebih baik daripada tidak sama sekali.
Jadi Anda mulai iterasi, berjalan menuruni bukit menuju ke lembah penghianatan itu. Anda beralih sampai Anda pikir Anda sudah selesai. Mungkin nilai bobot Anda besar. Mungkin mereka memantul di semua tempat. Mungkin perhitungannya "terlalu lama". Anda ingin dilakukan.
Jadi, bagaimana Anda tahu di mana Anda berada "cukup baik"?
Berikut ini adalah tes cepat yang dapat Anda lakukan:
Ambil 30 himpunan bagian acak data yang seragam (seperti masing-masing beberapa persen dari data) dan latih kembali jaringannya. Seharusnya lebih cepat. Amati berapa lama waktu yang mereka butuhkan untuk bertemu dan membandingkannya dengan sejarah konvergensi perangkat besar. Uji kesalahan jaringan untuk seluruh data pada himpunan bagian ini dan lihat bagaimana perbandingan kesalahan dibandingkan dengan kesalahan besar Anda. Sekarang benjol ukuran subset hingga mungkin 5% dari data Anda dan ulangi. Lihat apa yang ini ajarkan kepada Anda.
Ini adalah variasi pada optimasi kerumunan partikel (lihat referensi) yang dimodelkan tentang bagaimana lebah madu mengambil keputusan berdasarkan kepramukaan.
Anda bertanya apa yang terjadi jika bobot tidak bertemu.
Neural Networks adalah satu alat. Mereka bukan satu-satunya alat. Ada yang lain. Saya akan melihat menggunakan salah satu dari mereka.
Saya bekerja dalam hal kriteria informasi, jadi saya melihat bobot (jumlah parameter) dan kesalahan. Anda dapat mencoba salah satunya.
Ada beberapa jenis preprocessing yang bisa bermanfaat. Pusat dan Skala. Putar menggunakan komponen utama. Jika Anda melihat nilai eigen dalam komponen utama Anda, Anda dapat menggunakan aturan plot skree untuk memperkirakan dimensi data Anda. Mengurangi dimensi dapat meningkatkan konvergensi. Jika Anda mengetahui sesuatu tentang 'fisika dasar' maka Anda dapat menghaluskan atau memfilter data untuk menghilangkan noise. Terkadang konvergensi adalah tentang noise dalam sistem.
Saya menemukan ide penginderaan terkompresi menjadi menarik. Ini dapat memungkinkan sub-sampling radikal dari beberapa sistem tanpa kehilangan generalisasi. Saya akan melihat beberapa statistik bootstrap sampel ulang dan distribusi data Anda untuk menentukan apakah dan pada tingkat apa sub-sampling set pelatihan menjadi representatif. Ini memberi Anda beberapa ukuran "kesehatan" data Anda.
Kadang-kadang itu adalah hal yang baik bahwa mereka tidak bertemu
Pernahkah Anda mendengar tentang paradoks pemilihan? Anda mungkin menganggapnya sebagai saudara sepupu berhitung lebih tinggi dari kebuntuan dua arah. Itu adalah sebuah loop. Dalam paradoks pemilihan 2-orang, orang pertama menginginkan kandidat "A" sedangkan yang kedua menginginkan kandidat "B" (atau bukan-A atau semacamnya). Bagian yang penting adalah Anda bisa menganggapnya sebagai satu lingkaran.
Loop penting dalam jaringan saraf. Umpan balik. Pengulangan. Itu membuat perceptron mampu menyelesaikan masalah seperti XOR. Itu membuat loop, dan kadang-kadang loop dapat bertindak seperti paradoks pemungutan suara, di mana mereka akan terus mengubah bobot jika Anda memiliki iterasi tak terbatas. Mereka tidak dimaksudkan untuk bertemu karena bukan berat individu yang penting tetapi interaksi dari bobot dalam loop.
catatan:
Menggunakan hanya 500 iterasi bisa menjadi masalah. Saya memiliki NN di mana 10.000 iterasi hampir tidak cukup. Jumlah iterasi menjadi "cukup" tergantung, seperti yang telah saya sebutkan, pada data, NN-topologi, fungsi transfer-simpul, fungsi pembelajaran / pelatihan, dan bahkan perangkat keras komputer. Anda harus memiliki pemahaman yang baik tentang bagaimana mereka semua berinteraksi dengan jumlah iterasi Anda sebelum mengatakan bahwa ada iterasi "cukup" atau "terlalu banyak". Pertimbangan lain seperti waktu, anggaran, dan apa yang ingin Anda lakukan dengan NN ketika Anda selesai pelatihan juga harus dipertimbangkan.
Chen, RB, Chang, SP, Wang, W., & Wong, WK, (2011, September). Desain Eksperimental yang Optimal melalui Metode Optimalisasi Kerawanan Partikel (pracetak), Diperoleh 25 Maret 2012, dari http://www.math.ntu.edu.tw/~mathlib/preprint/2011-03.pdf