Jika kita memiliki 10 vektor eigen maka kita dapat memiliki 10 node neural pada input layer, jika kita memiliki 5 kelas output maka kita dapat memiliki 5 node di lapisan output, tetapi apa kriteria pemilihan hidden layer dalam sebuah MLP dan berapa neural. node dalam 1 lapisan tersembunyi?
machine-learning
neural-network
deep-learning
perceptron
Abhishek kumar
sumber
sumber
Jawaban:
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:
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:
RoT berdasarkan komponen utama:
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.
sumber
Sangat sulit untuk memilih jumlah neuron di lapisan tersembunyi, dan untuk memilih jumlah lapisan tersembunyi di jaringan saraf Anda.
Biasanya, untuk sebagian besar aplikasi, satu lapisan tersembunyi sudah cukup. Selain itu, jumlah neuron di lapisan tersembunyi itu harus berada di antara jumlah masukan (10 dalam contoh Anda) dan jumlah keluaran (5 dalam contoh Anda).
Tetapi cara terbaik untuk memilih jumlah neuron dan lapisan tersembunyi adalah eksperimen. Latih beberapa jaringan saraf dengan jumlah lapisan tersembunyi dan neuron tersembunyi yang berbeda, dan ukur kinerja jaringan tersebut menggunakan validasi silang . Anda dapat tetap menggunakan nomor yang menghasilkan jaringan berkinerja terbaik.
sumber
Untuk mengotomatiskan pemilihan jumlah lapisan terbaik dan jumlah neuron terbaik untuk setiap lapisan, Anda dapat menggunakan pengoptimalan genetik .
Potongan kuncinya adalah:
Anda juga bisa mempertimbangkan:
sumber
Baru-baru ini ada pekerjaan teoritis tentang https://arxiv.org/abs/1809.09953 ini . Dengan asumsi Anda menggunakan RELU MLP, semua lapisan tersembunyi memiliki jumlah node yang sama dan fungsi kerugian serta fungsi sebenarnya yang Anda perkirakan dengan jaringan saraf tiruan mematuhi beberapa properti teknis (di makalah), Anda dapat memilih kedalaman Anda untuk pesan $ \ log (n) $ dan lebar lapisan tersembunyi Anda sesuai urutan $ n ^ {d / (2 (\ beta + d))} \ log ^ 2 (n) $. Di sini $ n $ adalah ukuran sampel Anda, $ d $ adalah dimensi vektor masukan Anda, dan $ \ beta $ adalah parameter kelancaran untuk fungsi Anda yang sebenarnya. Karena $ \ beta $ tidak diketahui, Anda mungkin ingin memperlakukannya sebagai hyperparameter.
Dengan melakukan ini, Anda dapat menjamin bahwa dengan probabilitas yang menyatu menjadi $ 1 $ sebagai fungsi ukuran sampel, kesalahan perkiraan Anda menyatu menjadi $ 0 $ sebagai fungsi ukuran sampel. Mereka memberi nilai. Perhatikan bahwa ini tidak dijamin menjadi arsitektur 'terbaik', tetapi setidaknya dapat memberi Anda tempat yang baik untuk memulai. Lebih jauh, pengalaman saya sendiri menunjukkan bahwa hal-hal seperti putus sekolah masih dapat membantu dalam praktiknya.
sumber