Pertanyaan yang sangat bagus, karena belum ada jawaban pasti untuk pertanyaan ini. Ini adalah bidang penelitian aktif.
Pada akhirnya, arsitektur jaringan Anda terkait dengan dimensi data Anda. Karena jaringan saraf adalah aproksimasi universal, selama jaringan Anda cukup besar, ia memiliki kemampuan untuk menyesuaikan data Anda.
Satu-satunya cara untuk benar-benar mengetahui arsitektur mana yang paling berhasil adalah dengan mencoba semuanya, dan kemudian memilih yang terbaik. Tetapi tentu saja, dengan jaringan saraf, itu cukup sulit karena setiap model membutuhkan waktu untuk dilatih. Apa yang dilakukan beberapa orang adalah pertama-tama melatih model yang "terlalu besar" dengan sengaja, dan kemudian memangkasnya dengan menghilangkan bobot yang tidak berkontribusi banyak pada jaringan.
Bagaimana jika jaringan saya "terlalu besar"
Jika jaringan Anda terlalu besar, itu bisa jadi pakaian yang berlebihan atau kesulitan untuk berkumpul. Secara intuitif, yang terjadi adalah jaringan Anda mencoba menjelaskan data Anda dengan cara yang lebih rumit dari yang seharusnya. Ini seperti mencoba menjawab pertanyaan yang bisa dijawab dengan satu kalimat dengan esai 10 halaman. Mungkin sulit untuk menyusun jawaban yang begitu panjang, dan mungkin ada banyak fakta yang tidak perlu dilontarkan. ( Lihat pertanyaan ini )
Bagaimana jika jaringan saya "terlalu kecil"
Di sisi lain, jika jaringan Anda terlalu kecil, itu akan kurang sesuai dengan data Anda dan karenanya. Itu seperti menjawab dengan satu kalimat ketika Anda seharusnya menulis esai 10 halaman. Sebagus jawaban Anda, Anda akan kehilangan beberapa fakta yang relevan.
Memperkirakan ukuran jaringan
Jika Anda mengetahui dimensi data Anda, Anda dapat mengetahui apakah jaringan Anda cukup besar. Untuk memperkirakan dimensi data Anda, Anda bisa mencoba menghitung peringkatnya. Ini adalah ide inti dalam cara orang mencoba memperkirakan ukuran jaringan.
Namun, itu tidak sesederhana itu. Memang, jika jaringan Anda perlu 64-dimensi, apakah Anda membangun satu lapisan tersembunyi berukuran 64 atau dua lapis ukuran 8? Di sini, saya akan memberi Anda beberapa intuisi tentang apa yang akan terjadi dalam kedua kasus tersebut.
Lebih dalam
Masuk lebih dalam berarti menambahkan lebih banyak lapisan tersembunyi. Apa yang dilakukannya adalah memungkinkan jaringan untuk menghitung fitur yang lebih kompleks. Dalam Convolutional Neural Networks, misalnya, telah sering diperlihatkan bahwa beberapa layer pertama mewakili fitur "level rendah" seperti pinggiran, dan layer terakhir mewakili fitur "level tinggi" seperti wajah, bagian tubuh, dll.
Anda biasanya perlu menggali lebih dalam jika data Anda sangat tidak terstruktur (seperti gambar) dan perlu diproses sedikit sebelum informasi yang berguna dapat diambil darinya.
Menjadi lebih luas
Melangkah lebih dalam berarti menciptakan fitur yang lebih kompleks, dan menjadi "lebih luas" berarti menciptakan lebih banyak fitur ini. Mungkin saja masalah Anda dapat dijelaskan dengan fitur yang sangat sederhana tetapi harus ada banyak di antaranya. Biasanya, layer menjadi lebih sempit menjelang akhir jaringan karena alasan sederhana bahwa fitur kompleks membawa lebih banyak informasi daripada yang sederhana, dan karena itu Anda tidak memerlukan banyak.
Jawaban Singkat: Ini sangat terkait dengan dimensi data Anda dan jenis aplikasi.
Memilih jumlah layer yang tepat hanya dapat dicapai dengan latihan. Belum ada jawaban umum untuk pertanyaan ini . Dengan memilih arsitektur jaringan, Anda membatasi ruang kemungkinan Anda (ruang hipotesis) ke serangkaian operasi tensor tertentu, memetakan data input ke data output. Dalam DeepNN setiap lapisan hanya dapat mengakses informasi yang ada di output dari lapisan sebelumnya. Jika satu lapisan menjatuhkan beberapa informasi yang relevan dengan masalah yang dihadapi, informasi ini tidak akan pernah dapat dipulihkan oleh lapisan selanjutnya. Ini biasanya disebut sebagai " Kemacetan Informasi ".
Informasi Bottleneck adalah pedang bermata dua:
1) Jika Anda menggunakan beberapa lapisan / neuron, maka model hanya akan mempelajari beberapa representasi / fitur berguna dari data Anda dan kehilangan beberapa yang penting, karena kapasitas lapisan tengah sangat terbatas ( underfitting ).
2) Jika Anda menggunakan banyak lapisan / neuron, maka model akan mempelajari terlalu banyak representasi / fitur yang spesifik untuk data pelatihan dan tidak menggeneralisasi ke data di dunia nyata dan di luar set pelatihan Anda ( overfitting) ).
Tautan yang bermanfaat untuk contoh dan lebih banyak temuan:
[1] https: //livebook.manning.com#! / Book / deep-learning-with-python / chapter-3 / point-1130-232-232-0
[2] https://www.quantamagazine.org/new-theory-cracks-open-the-black-box-of-deep-learning-20170921/
sumber
Bekerja dengan jaringan saraf sejak dua tahun lalu, ini adalah masalah yang selalu saya miliki setiap kali saya tidak ingin memodelkan sistem baru. Pendekatan terbaik yang saya temukan adalah sebagai berikut:
Pendekatan umum adalah mencoba arsitektur yang berbeda, membandingkan hasil dan mengambil konfigurasi terbaik. Pengalaman memberi Anda lebih banyak intuisi dalam tebakan arsitektur pertama.
sumber
Menambah jawaban sebelumnya, ada pendekatan di mana topologi jaringan saraf muncul secara endogen, sebagai bagian dari pelatihan. Yang paling menonjol, Anda memiliki Neuroevolution of Augmenting Topologies (NEAT) di mana Anda mulai dengan jaringan dasar tanpa lapisan tersembunyi dan kemudian menggunakan algoritma genetika untuk "memperumit" struktur jaringan. NEAT diimplementasikan dalam banyak kerangka kerja ML. Berikut ini adalah artikel yang cukup dapat diakses tentang implementasi untuk belajar Mario: CrAIg: Menggunakan Jaringan Saraf untuk belajar Mario
sumber