Apakah ada metode standar dan diterima untuk memilih jumlah lapisan, dan jumlah node di setiap lapisan, dalam jaringan saraf umpan maju? Saya tertarik dengan cara otomatis membangun jaringan saraf.
model-selection
neural-networks
Rob Hyndman
sumber
sumber
Jawaban:
Saya menyadari bahwa pertanyaan ini telah dijawab, tetapi saya tidak berpikir bahwa jawaban yang ada benar-benar melibatkan pertanyaan di luar menunjuk ke tautan yang umumnya terkait dengan masalah pokok pertanyaan. Secara khusus, tautan tersebut menjelaskan satu teknik untuk konfigurasi jaringan terprogram, tetapi itu bukan " [a] metode standar dan diterima " untuk konfigurasi jaringan.
Dengan mengikuti seperangkat aturan yang jelas, seseorang dapat secara terprogram mengatur arsitektur jaringan yang kompeten (yaitu jumlah dan jenis lapisan neuron dan jumlah neuron yang terdiri dari setiap lapisan). Mengikuti skema ini, ini akan memberi Anda arsitektur yang kompeten tetapi mungkin tidak optimal.
Tetapi begitu jaringan ini diinisialisasi, Anda dapat menyesuaikan konfigurasi selama pelatihan dengan menggunakan beberapa algoritma tambahan; satu keluarga dari karya-karya ini dengan memangkas node berdasarkan nilai vektor bobot (kecil) setelah sejumlah periode pelatihan - dengan kata lain, menghilangkan node yang tidak perlu / redundan (lebih lanjut tentang ini di bawah).
Jadi setiap NN memiliki tiga jenis lapisan: input , tersembunyi , dan output .
Oleh karena itu, membuat arsitektur NN berarti memberikan nilai untuk jumlah lapisan dari setiap jenis dan jumlah node di setiap lapisan ini.
Lapisan Input
Sederhana - setiap NN memiliki persis salah satunya - tidak ada pengecualian yang saya ketahui.
Sehubungan dengan jumlah neuron yang terdiri dari lapisan ini, parameter ini sepenuhnya dan unik ditentukan setelah Anda mengetahui bentuk data pelatihan Anda. Secara khusus, jumlah neuron yang terdiri dari lapisan itu sama dengan jumlah fitur (kolom) dalam data Anda . Beberapa konfigurasi NN menambahkan satu node tambahan untuk istilah bias.
Lapisan Keluaran
Seperti layer Input, setiap NN memiliki tepat satu layer output. Menentukan ukurannya (jumlah neuron) sederhana; itu sepenuhnya ditentukan oleh konfigurasi model yang dipilih.
Apakah NN Anda akan berjalan dalam Mode Mesin atau Mode Regresi (konvensi ML tentang penggunaan istilah yang juga digunakan dalam statistik tetapi menetapkan makna yang berbeda untuk itu sangat membingungkan). Mode mesin: mengembalikan label kelas (misalnya, "Akun Premium" / "Akun Dasar"). Mode Regresi mengembalikan nilai (misalnya, harga).
Jika NN adalah sebuah regressor, maka layer output memiliki satu node.
Jika NN adalah classifier, maka ia juga memiliki satu simpul kecuali jika softmax digunakan dalam hal ini lapisan keluaran memiliki satu simpul per label kelas dalam model Anda.
Lapisan Tersembunyi
Jadi beberapa aturan itu mengatur jumlah layer dan ukuran (neuron / layer) untuk layer input dan output. Yang meninggalkan lapisan tersembunyi.
Berapa banyak lapisan tersembunyi? Nah jika data Anda terpisah secara linear (yang sering Anda ketahui saat Anda mulai mengkode NN) maka Anda tidak memerlukan lapisan tersembunyi sama sekali. Tentu saja, Anda juga tidak perlu NN untuk menyelesaikan data Anda, tetapi masih akan melakukan pekerjaan.
Di luar itu, seperti yang mungkin Anda ketahui, ada segunung komentar tentang pertanyaan konfigurasi lapisan tersembunyi di NN (lihat FAQ NN yang sangat teliti dan mendalam untuk ringkasan yang luar biasa dari komentar itu). Salah satu masalah dalam subjek ini di mana ada konsensus adalah perbedaan kinerja dari menambahkan lapisan tersembunyi tambahan: situasi di mana kinerja meningkat dengan lapisan tersembunyi kedua (atau ketiga, dll.) Sangat sedikit. Satu lapisan tersembunyi sudah cukup untuk sebagian besar masalah.
Jadi bagaimana dengan ukuran lapisan tersembunyi - berapa banyak neuron? Ada beberapa aturan yang diturunkan secara empiris, di antaranya, yang paling sering diandalkan adalah ' ukuran optimal dari lapisan tersembunyi biasanya antara ukuran input dan ukuran lapisan output '. Jeff Heaton, penulis Pengantar Neural Networks di Jawa menawarkan beberapa lagi.
Singkatnya, untuk sebagian besar masalah, orang mungkin bisa mendapatkan kinerja yang layak (bahkan tanpa langkah optimasi kedua) dengan mengatur konfigurasi lapisan tersembunyi hanya dengan menggunakan dua aturan: (i) jumlah lapisan tersembunyi sama dengan satu; dan (ii) jumlah neuron di lapisan itu adalah rata-rata dari neuron di lapisan input dan output.
Optimalisasi Konfigurasi Jaringan
Pemangkasanmenjelaskan serangkaian teknik untuk memangkas ukuran jaringan (bukan node) untuk meningkatkan kinerja komputasi dan kadang-kadang kinerja resolusi. Inti dari teknik ini adalah menghapus node dari jaringan selama pelatihan dengan mengidentifikasi simpul-simpul yang, jika dihapus dari jaringan, tidak akan secara nyata mempengaruhi kinerja jaringan (yaitu, resolusi data). (Bahkan tanpa menggunakan teknik pemangkasan formal, Anda bisa mendapatkan gambaran kasar node mana yang tidak penting dengan melihat matriks bobot Anda setelah pelatihan; lihat bobotnya sangat dekat dengan nol - itu adalah simpul di kedua ujung bobot yang sering dihapus selama pemangkasan.) Jelas, jika Anda menggunakan algoritma pemangkasan selama pelatihan kemudian mulai dengan konfigurasi jaringan yang lebih cenderung memiliki kelebihan (yaitu, 'prunable') node - dengan kata lain,
Dengan kata lain, dengan menerapkan algoritma pemangkasan ke jaringan Anda selama pelatihan, Anda dapat mendekati konfigurasi jaringan yang optimal; apakah Anda dapat melakukannya dalam satu "muka" (seperti algoritma berbasis-genetika) saya tidak tahu, meskipun saya tahu bahwa untuk saat ini, optimasi dua langkah ini lebih umum.
sumber
Jawaban @ doug telah bekerja untuk saya. Ada satu aturan tambahan yang membantu untuk masalah pembelajaran yang diawasi. Anda biasanya dapat mencegah pemasangan berlebihan jika Anda mempertahankan jumlah neuron Anda di bawah ini:
Lainnya merekomendasikan pengaturan ke nilai antara 5 dan 10, tetapi saya menemukan nilai 2 akan sering bekerja tanpa overfitting. Anda dapat menganggap alpha sebagai faktor percabangan yang efektif atau jumlah bobot bukan-nol untuk setiap neuron. Lapisan dropout akan menurunkan faktor percabangan "efektif" dari faktor percabangan rata-rata aktual untuk jaringan Anda.a l p h a
Seperti yang dijelaskan oleh teks NN Design yang luar biasa ini , Anda ingin membatasi jumlah parameter gratis dalam model Anda ( derajat atau jumlah bobot bukan nol) hingga sebagian kecil dari derajat kebebasan dalam data Anda. Derajat kebebasan dalam data Anda adalah jumlah sampel * derajat kebebasan (dimensi) dalam setiap sampel atau (dengan asumsi mereka semua independen). Jadi adalah cara untuk menunjukkan seberapa umum model yang Anda inginkan, atau seberapa banyak Anda ingin mencegah overfitting.Ns∗ ( Nsaya+ NHai) α
Untuk prosedur otomatis Anda akan mulai dengan alfa 2 (dua kali lebih banyak derajat kebebasan dalam data pelatihan Anda sebagai model Anda) dan bekerja hingga 10 jika kesalahan (kerugian) untuk dataset pelatihan Anda secara signifikan lebih kecil daripada untuk dataset uji Anda.
sumber
N_h
(jumlah rata-rata neuron tersembunyi per lapisan) solusi untuk iniN_s = (N_i + N_o) * N_h ^ N_hidden_layers
. Tetapi saya masih tidak akan menggunakan formula ini. Ini hanya untuk masalah yang sangat mendasar (masalah mainan) ketika Anda tidak berencana untuk menerapkan pendekatan regularisasi lainnya.Dari Pengantar Neural Networks for Java (edisi kedua) oleh Jeff Heaton - pratinjau tersedia secara gratis di Google Buku dan sebelumnya di situs web penulis :
Saya juga suka cuplikan berikut dari jawaban yang saya temukan di researchgate.net , yang menyampaikan banyak hal hanya dalam beberapa kata:
sumber
Saya sedang mengerjakan studi empiris tentang hal ini pada saat ini (menyetujui simulasi abad prosesor pada fasilitas HPC kami!). Saran saya adalah menggunakan jaringan "besar" dan regularisasi, jika Anda menggunakan regularisasi maka arsitektur jaringan menjadi kurang penting (asalkan itu cukup besar untuk mewakili fungsi dasar yang ingin kita tangkap), tetapi Anda perlu menyelaraskan regularisasi tersebut. parameter dengan benar.
Salah satu masalah dengan pemilihan arsitektur adalah bahwa itu adalah kontrol diskrit, daripada kontinu, dari kompleksitas model, dan karena itu dapat menjadi sedikit instrumen tumpul, terutama ketika kompleksitas ideal rendah.
Namun, ini semua tunduk pada teorema "tidak ada makan siang gratis", sementara regularisasi efektif dalam banyak kasus, akan selalu ada kasus di mana pemilihan arsitektur bekerja lebih baik, dan satu-satunya cara untuk mengetahui apakah itu benar dari masalah yang dihadapi. adalah mencoba pendekatan dan validasi silang.
Jika saya membangun pembangun jaringan saraf otomatis, saya akan menggunakan pendekatan Bayesian Hybrid Monte Carlo (HMC) berbasis sampel Radford, dan menggunakan jaringan besar dan berintegrasi pada bobot daripada mengoptimalkan bobot satu jaringan. Namun itu mahal secara komputasional dan sedikit "seni hitam", tetapi hasil yang dicapai Prof. Neal menunjukkan bahwa itu sepadan!
sumber
Sejauh yang saya tahu tidak ada cara untuk memilih secara otomatis jumlah lapisan dan neuron di setiap lapisan. Tetapi ada jaringan yang dapat membangun topologi mereka secara otomatis, seperti EANN (Jaringan Syaraf Tiruan Evolusi, yang menggunakan Algoritma Genetika untuk mengembangkan topologi).
Ada beberapa pendekatan, yang kurang lebih modern yang tampaknya memberikan hasil yang baik adalah NEAT (Neuro Evolution of Augmented Topologies) .
sumber
Ref:
1 Tuan, Timotius. Resep jaringan saraf yang praktis di C ++. Morgan Kaufmann, 1993.
[2] http://www.iitbhu.ac.in/faculty/min/rajesh-rai/NMEICT-Slope/lecture/c14/l1.html
sumber
Cara otomatis membangun jaringan saraf menggunakan pencarian parameter hiper global:
Lapisan input dan output adalah ukuran tetap.
Apa yang bisa bervariasi:
Beberapa metode dapat digunakan untuk masalah optimasi diskrit ini , dengan jaringan keluar dari kesalahan sampel sebagai fungsi biaya.
sumber
Maaf saya belum bisa memposting komentar, jadi tolong tahan dengan saya. Ngomong-ngomong, aku menabrak utas diskusi ini yang mengingatkanku pada sebuah makalah yang baru saja kulihat. Saya pikir mungkin menarik bagi orang-orang yang berpartisipasi di sini:
sumber
Saya telah mendaftarkan banyak cara pembelajaran topologi dalam tesis master saya, bab 3 . Kategori besar adalah:
sumber
Saya ingin menyarankan metode yang kurang umum tetapi sangat efektif .
Pada dasarnya, Anda dapat memanfaatkan sekumpulan algoritma yang disebut "algoritma genetika" yang mencoba sebagian kecil dari opsi potensial (jumlah acak layer dan node per layer). Kemudian memperlakukan populasi pilihan ini sebagai "orang tua" yang menciptakan anak-anak dengan menggabungkan / bermutasi satu atau lebih dari orang tua seperti organisme berevolusi. Anak-anak terbaik dan beberapa anak ok acak disimpan di setiap generasi dan dari generasi ke generasi, yang terkuat bertahan.
Untuk ~ 100 atau lebih sedikit parameter (seperti pilihan jumlah lapisan, jenis lapisan, dan jumlah neuron per lapisan), metode ini sangat efektif. Gunakan dengan membuat sejumlah arsitektur jaringan potensial untuk setiap generasi dan melatihnya sebagian hingga kurva pembelajaran dapat diperkirakan (100-10k mini-batch biasanya tergantung pada banyak parameter). Setelah beberapa generasi, Anda mungkin ingin mempertimbangkan titik di mana kereta dan validasi mulai memiliki tingkat kesalahan yang sangat berbeda (overfitting) sebagai fungsi tujuan Anda untuk memilih anak-anak. Sebaiknya gunakan subset data Anda yang sangat kecil (10-20%) hingga Anda memilih model akhir untuk mencapai kesimpulan lebih cepat. Juga, gunakan satu seed untuk inisialisasi jaringan Anda untuk membandingkan hasilnya dengan benar.
10-50 generasi harus menghasilkan hasil yang bagus untuk jaringan berukuran layak.
sumber
Jumlah Lapisan Tersembunyi dan apa yang dapat mereka raih:
0 - Hanya mampu mewakili fungsi atau keputusan linier yang dapat dipisahkan.
1 - Dapat memperkirakan fungsi apa pun yang berisi pemetaan terus menerus dari satu ruang terbatas ke yang lain.
2 - Dapat mewakili batas keputusan arbitrer untuk akurasi sewenang-wenang dengan fungsi aktivasi rasional dan dapat memperkirakan pemetaan yang mulus untuk akurasi apa pun.
Lebih dari 2 - Lapisan tambahan dapat mempelajari representasi kompleks (semacam rekayasa fitur otomatis) untuk lapisan lapisan.
sumber