berapa banyak lapisan tersembunyi ?
model dengan nol lapisan tersembunyi akan menyelesaikan data yang dapat dipisahkan secara linier . Jadi, kecuali jika Anda sudah mengetahui bahwa data Anda tidak dapat dipisahkan secara linier, tidak ada salahnya untuk memverifikasi ini - mengapa menggunakan model yang lebih kompleks daripada yang diminta oleh tugas? Jika dapat dipisahkan secara linier maka teknik yang lebih sederhana akan berhasil, tetapi Perceptron akan melakukan pekerjaan itu juga.
Dengan asumsi data Anda memang memerlukan pemisahan dengan teknik non-linier, maka selalu mulai dengan satu lapisan tersembunyi . Hampir pasti hanya itu yang Anda butuhkan. Jika data Anda dapat dipisahkan menggunakan MLP, MLP tersebut mungkin hanya membutuhkan satu lapisan tersembunyi. Ada justifikasi teoritis untuk ini, tetapi alasan saya murni empiris: Banyak masalah klasifikasi / regresi yang sulit diselesaikan menggunakan MLP lapisan tersembunyi tunggal, namun saya tidak ingat pernah bertemu dengan beberapa MLP lapisan tersembunyi yang digunakan untuk berhasil memodelkan data- -baik di papan buletin ML, Buku Teks ML, makalah akademis, dll. Tentu saja, semua itu ada, tetapi keadaan yang membenarkan penggunaannya secara empiris cukup jarang.
Berapa banyak node di lapisan tersembunyi?
Dari literatur akademik MLP. pengalaman saya sendiri, dll., Saya telah mengumpulkan dan sering mengandalkan beberapa aturan praktis ( RoT ), dan yang juga saya temukan sebagai panduan yang andal (yaitu, panduan itu akurat, dan bahkan jika tidak, itu biasanya jelas apa yang harus dilakukan selanjutnya):
RoT berdasarkan peningkatan konvergensi:
Saat Anda memulai pembuatan model, lakukan kesalahan di sisi lebih banyak node di lapisan tersembunyi.
Mengapa? Pertama, beberapa node tambahan di lapisan tersembunyi kemungkinan besar tidak membahayakan - MLP Anda akan tetap bertemu. Di sisi lain, terlalu sedikit node di lapisan tersembunyi dapat mencegah konvergensi. Anggap saja seperti ini, node tambahan memberikan beberapa kapasitas berlebih - bobot tambahan untuk menyimpan / melepaskan sinyal ke jaringan selama iterasi (pelatihan, atau pembuatan model). Kedua, jika Anda memulai dengan node tambahan di lapisan tersembunyi Anda, maka mudah untuk memangkasnya nanti (selama proses iterasi). Ini biasa terjadi dan ada teknik diagnostik untuk membantu Anda (mis., Diagram Hinton, yang hanya merupakan gambaran visual dari matriks bobot, 'peta panas' dari nilai bobot,).
RoT berdasarkan ukuran lapisan masukan dan ukuran lapisan keluaran:
Aturan praktisnya adalah ukuran lapisan [tersembunyi] ini berada di antara ukuran lapisan masukan ... dan ukuran lapisan keluaran ....
Untuk menghitung jumlah node tersembunyi kami menggunakan aturan umum: (Jumlah input + output) x 2/3
RoT berdasarkan komponen utama:
Biasanya, kami menentukan node tersembunyi sebanyak dimensi [komponen utama] yang diperlukan untuk menangkap 70-90% varian dari kumpulan data masukan .
Namun penulis FAQ NN menyebut Aturan ini "tidak masuk akal" (secara harfiah) karena mereka: mengabaikan jumlah contoh pelatihan, gangguan dalam target (nilai variabel respons), dan kompleksitas ruang fitur.
Dalam pandangannya (dan bagi saya selalu tampak bahwa dia tahu apa yang dia bicarakan), pilih jumlah neuron di lapisan tersembunyi berdasarkan apakah MLP Anda menyertakan beberapa bentuk regularisasi, atau penghentian awal .
Satu-satunya teknik yang valid untuk mengoptimalkan jumlah neuron di Hidden Layer:
Selama pembuatan model Anda, uji secara obsesif; pengujian akan mengungkapkan tanda tangan dari arsitektur jaringan yang "salah". Misalnya, jika Anda memulai dengan MLP yang memiliki lapisan tersembunyi yang terdiri dari sejumlah kecil node (yang akan Anda tingkatkan secara bertahap sesuai kebutuhan, berdasarkan hasil pengujian) kesalahan pelatihan dan generalisasi Anda akan menjadi tinggi yang disebabkan oleh bias dan underfitting.
Kemudian tingkatkan jumlah node di lapisan tersembunyi, satu per satu, hingga kesalahan generalisasi mulai meningkat, kali ini karena overfitting dan varians yang tinggi.
Dalam praktiknya, saya melakukannya dengan cara ini:
input layer : ukuran data vactor saya (jumlah fitur dalam model saya) +1 untuk node bias dan tentu saja tidak termasuk variabel respon
lapisan keluaran : soley ditentukan oleh model saya: regresi (satu node) versus klasifikasi (jumlah node yang setara dengan jumlah kelas, dengan asumsi softmax)
lapisan tersembunyi : untuk memulai , satu lapisan tersembunyidengan jumlah node yang sama dengan ukuran lapisan masukan. Ukuran "ideal" lebih cenderung lebih kecil (yaitu, beberapa jumlah node antara nomor di lapisan masukan dan nomor di lapisan keluaran) daripada lebih besar - sekali lagi, ini hanya pengamatan empiris, dan massal pengamatan ini adalah pengalaman saya sendiri. Jika proyek membenarkan waktu tambahan yang diperlukan, maka saya mulai dengan satu lapisan tersembunyi yang terdiri dari sejumlah kecil node, lalu (seperti yang saya jelaskan di atas) saya menambahkan node ke Hidden Layer, satu per satu, sambil menghitung generalisasi kesalahan, kesalahan pelatihan, bias, dan varians. Ketika kesalahan generalisasi telah menurun dan sebelum mulai meningkat lagi, jumlah node pada saat itu adalah pilihan saya. Lihat gambar di bawah.