Cara mengatur jumlah neuron dan lapisan dalam jaringan saraf

26

Saya seorang pemula untuk jaringan saraf dan mengalami kesulitan memahami dua konsep:

  1. Bagaimana seseorang memutuskan jumlah lapisan tengah yang dimiliki jaringan saraf? 1 vs 10 atau apa pun.
  2. Bagaimana cara menentukan jumlah neuron di setiap lapisan tengah? Apakah disarankan memiliki jumlah neuron yang sama di setiap lapisan tengah atau apakah itu berbeda dengan aplikasi?
Snaggletooth
sumber

Jawaban:

19

Pertimbangan jumlah neuron untuk setiap lapisan dan jumlah lapisan dalam jaringan yang terhubung sepenuhnya tergantung pada ruang fitur masalah. Untuk menggambarkan apa yang terjadi dalam kasus dua dimensi untuk menggambarkan, saya menggunakan ruang 2-d. Saya telah menggunakan gambar dari karya seorang ilmuwan . Untuk memahami jaring lain seperti CNNsaya sarankan Anda lihat di sini .

Misalkan Anda hanya memiliki satu neuron, dalam hal ini setelah mempelajari parameter jaringan Anda akan memiliki batas keputusan linier yang dapat memisahkan ruang untuk dua kelas individu.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Misalkan Anda diminta untuk memisahkan data berikut. Anda akan memerlukan d1yang menentukan batas keputusan atas dan entah bagaimana melakukan ANDoperasi untuk menentukan apakah data input berada di sisi kiri atau di sisi kanan. Line d2sedang melakukan ANDoperasi lain yang menyelidiki apakah data input lebih dari d2atau tidak. Dalam hal d1ini mencoba memahami apakah input berada di sisi kiri garis untuk mengklasifikasikan input sebagai lingkaran , juga d2berusaha mencari tahu apakah input berada di sisi kanan garis untuk mengklasifikasikan input sebagai lingkaran . Sekarang kita membutuhkan yang lainANDoperasi untuk membungkus hasil dari dua garis yang dibangun setelah melatih parameter mereka. Jika input berada di sisi kiri d1dan di sisi kanan d2, itu harus diklasifikasikan sebagai lingkaran .

masukkan deskripsi gambar di sini

Sekarang anggaplah Anda memiliki masalah berikut dan Anda diminta untuk memisahkan kelas. Dalam hal ini pembenarannya persis seperti di atas.

masukkan deskripsi gambar di sini

Untuk data berikut:

masukkan deskripsi gambar di sini

batas keputusan tidak cembung dan lebih kompleks dari batas sebelumnya. Pertama, Anda harus memiliki sub-net yang menemukan lingkaran dalam. Maka Anda harus memiliki sub-net lain yang menemukan batas keputusan persegi panjang dalam yang memutuskan input yang berada di dalam persegi panjang tidak lingkaran dan jika mereka di luar, mereka adalah lingkaran. Setelah ini, Anda harus menyelesaikan hasilnya dan mengatakan jika data input berada di dalam persegi panjang yang lebih besar dan di luar persegi panjang dalam, itu harus diklasifikasikan sebagai lingkaran . Anda memerlukan ANDoperasi lain untuk tujuan ini. Jaringannya akan seperti ini:

masukkan deskripsi gambar di sini


Misalkan Anda diminta untuk menemukan batas keputusan yang dilingkari berikut ini .

masukkan deskripsi gambar di sini

Dalam hal ini jaringan Anda akan seperti jaringan berikut yang disebut tetapi dengan lebih banyak neuron di lapisan tersembunyi pertama.

masukkan deskripsi gambar di sini

Media
sumber
11

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.

Valentin Calomme
sumber
Anda dapat menggunakan konsep dimensi intrinsik untuk mengetahui jumlah dimensi yang relevan untuk masalah Anda. Dimensi intrinsik mencoba menjawab berapa banyak variabel yang diperlukan untuk sepenuhnya menggambarkan sinyal dan ini terkait dengan jumlah variabel dalam sumber acak dari sinyal itu.
Pedro Henrique Monforte
8

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/

moh
sumber
4

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:

  1. Cari masalah serupa yang juga dimodelkan dengan jaringan umpan-maju dan pelajari arsitekturnya.
  2. Mulailah dengan konfigurasi itu, latih kumpulan data dan evaluasi set tes.
  3. Lakukan pemangkasan dalam arsitektur Anda dan bandingkan hasil dalam kumpulan data dengan hasil sebelumnya. Jika keakuratan model Anda tidak terpengaruh, maka Anda dapat menyimpulkan bahwa model asli terlalu cocok dengan data.
  4. Jika tidak, coba tambahkan lebih banyak derajat kebebasan (yaitu lebih banyak lapisan).

Pendekatan umum adalah mencoba arsitektur yang berbeda, membandingkan hasil dan mengambil konfigurasi terbaik. Pengalaman memberi Anda lebih banyak intuisi dalam tebakan arsitektur pertama.

Federico Caccia
sumber
1

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

Frederic Schneider
sumber