Pertanyaan ini agak luas untuk forum ini. Saya pikir akan lebih baik untuk berkonsultasi dengan buku teks yang membahas jaringan saraf, seperti Uskup Neural Networks for Pattern Recognition atau Hagan Neural Network Design .
Node bias dalam jaringan saraf adalah node yang selalu 'on'. Artinya, nilainya diatur ke tanpa memperhatikan data dalam pola yang diberikan. Ini analog dengan intersep dalam model regresi, dan melayani fungsi yang sama. Jika jaringan saraf tidak memiliki simpul bias dalam lapisan yang diberikan, itu tidak akan dapat menghasilkan output di lapisan berikutnya yang berbeda dari (pada skala linier, atau nilai yang sesuai dengan transformasi ketika melewati fungsi aktivasi) ketika nilai fitur adalah .0 0 01000
Pertimbangkan contoh sederhana: Anda memiliki perceptron umpan maju dengan 2 simpul input dan , dan 1 simpul keluaran . dan adalah fitur biner dan ditetapkan pada tingkat referensi mereka, . 2 itu dengan bobot apa pun yang Anda suka, dan , jumlah produk dan berikan melalui fungsi aktivasi apa pun yang Anda inginkan. Tanpa simpul bias, hanya satu nilai output yang mungkin, yang mungkin menghasilkan kecocokan yang sangat buruk. Misalnya, menggunakan fungsi aktivasi logistik, harusx 2 y x 1 x 2 x 1 = x 2 = 0 0 w 1 w 2 y .5x1x2yx1x2x1=x2=00w1w2y.5, yang akan mengerikan untuk mengklasifikasikan peristiwa langka.
Node bias memberikan fleksibilitas yang cukup besar untuk model jaringan saraf. Dalam contoh yang diberikan di atas, satu-satunya proporsi yang diprediksi mungkin tanpa simpul bias adalah , tetapi dengan simpul bias, setiap proporsi dalam dapat cocok untuk pola di mana . Untuk setiap lapisan, , di mana simpul bias ditambahkan, simpul bias akan menambahkan parameter tambahan / bobot untuk diperkirakan (di mana adalah jumlah node di lapisan( 0 , 1 ) x 1 = x 2 = 0 j N j + 1 N j + 1 j + 150%(0,1)x1=x2=0jNj+1Nj+1j+1). Lebih banyak parameter yang harus dipasang berarti perlu waktu lebih lama secara proporsional bagi jaringan saraf untuk dilatih. Ini juga meningkatkan kemungkinan overfitting, jika Anda tidak memiliki lebih banyak data daripada bobot untuk dipelajari.
Dengan pemahaman ini, kami dapat menjawab pertanyaan eksplisit Anda:
Bias node ditambahkan untuk meningkatkan fleksibilitas model agar sesuai dengan data. Secara khusus, ini memungkinkan jaringan untuk mencocokkan data ketika semua fitur input sama dengan , dan sangat mungkin mengurangi bias dari nilai yang dipasang di tempat lain di ruang data. 0
Biasanya, satu simpul bias ditambahkan untuk lapisan input dan setiap lapisan tersembunyi dalam jaringan feedforward. Anda tidak akan pernah menambahkan dua atau lebih ke lapisan yang diberikan, tetapi Anda mungkin menambahkan nol. Jumlah total ditentukan oleh struktur jaringan Anda, meskipun pertimbangan lain bisa berlaku. (Saya kurang jelas tentang bagaimana node bias ditambahkan ke struktur jaringan saraf selain dari feedforward.)
Sebagian besar ini telah dibahas, tetapi harus eksplisit: Anda tidak akan pernah menambahkan node bias ke lapisan output; itu tidak masuk akal.
Apakah CNN berbeda dalam hal ini? karena ketika saya menambahkan bias ke lapisan konv saya, kinerja (akurasi) menurun! dan ketika saya menghapusnya, itu benar-benar lebih tinggi!
Rika
@ Hussein, bukan yang saya tahu, tetapi Anda bisa mengajukan pertanyaan baru. Saya tidak terlalu ahli di sana.
gung - Reinstate Monica
Apakah saya masih memerlukan node bias jika input saya tidak pernah masuk ke 0?
alec_djinn
1
@ alec_djinn, ya. Hampir bisa dipastikan model akan bias tanpa mereka, bahkan jika Anda tidak pernah memiliki 0 untuk nilai input. Dengan analogi, mungkin membantu untuk membaca: Kapan
gung - Reinstate Monica
1
@krupeshAnadkat, "Node bias dalam jaringan saraf adalah node yang selalu 'on'. Artinya, nilainya diatur ke 1 tanpa memperhatikan data dalam pola yang diberikan." Jadi Anda dapat terhubung jika suka, selalu ubah nilai yang dihasilkan dari simpul kembali ke sebelum Anda mengalikannya dengan bobot, karena simpul bias adalah simpul yang nilainya selalu 1 . 1
gung - Reinstate Monica
2
Sederhana, jawaban singkat:
Untuk menggeser fungsi input / menjadi lebih fleksibel tentang fungsi yang dipelajari.
Node bias tunggal per lapisan.
Tambahkan mereka ke semua layer tersembunyi dan layer input - dengan beberapa catatan kaki
Dalam beberapa percobaan dalam tesis master saya (misalnya halaman 59), saya menemukan bahwa bias mungkin penting untuk lapisan pertama, tetapi terutama pada lapisan yang sepenuhnya terhubung pada akhirnya tampaknya tidak memainkan peran besar. Karenanya seseorang dapat memilikinya pada beberapa lapisan pertama dan bukan pada yang terakhir. Cukup latih jaringan, plot distribusi bobot node bias dan pangkas jika bobotnya tampaknya terlalu dekat dengan nol.
Ini mungkin sangat tergantung pada arsitektur jaringan / dataset.
akankah simpul bias memiliki panah yang menghubungkannya dari lapisan sebelumnya? atau hanya berkontribusi ke lapisan berikutnya dengan mengalikan nilainya "1" dengan bobot dalam jumlah tertimbang yang diteruskan ke aktivasi. Jawaban untuk ini akan menghemat berjam-jam, tolong lakukan bantuan
krupesh Anadkat
1
Bias hanyalah angka yang ditambahkan ke aktivasi lapisan berikutnya. Salah satu cara untuk memvisualisasikannya adalah dengan memiliki 1nilai konstan pada lapisan sebelumnya dan satu berat (satu nilai bias) untuk masing-masing lapisan neuron berikutnya.
Martin Thoma
2
Dalam konteks jaringan saraf, Normalisasi Batch saat ini merupakan standar emas untuk membuat "node bias" yang pintar. Alih-alih menjepit nilai bias neuron, Anda malah menyesuaikan kovarians dari input neuron. Jadi dalam CNN, Anda akan menerapkan normalisasi batch hanya antara lapisan konvolusional dan lapisan berikutnya yang terhubung penuh (katakanlah, ReLus). Secara teori, semua lapisan yang terhubung sepenuhnya dapat mengambil manfaat dari Normalisasi Batch tetapi dalam praktiknya menjadi sangat mahal untuk diterapkan karena setiap normalisasi bets membawa parameternya sendiri.
Mengenai alasan itu, sebagian besar jawaban sudah menjelaskan bahwa, khususnya, neuron rentan terhadap gradien jenuh ketika input mendorong aktivasi ke ekstrem. Dalam kasus ReLu ini akan didorong ke kiri, memberikan gradien 0. Secara umum, ketika Anda melatih model, Anda pertama-tama menormalkan input ke jaringan saraf. Batch Normalisasi adalah cara menormalkan input di dalam jaringan saraf, antar lapisan.
Jawaban:
Node bias dalam jaringan saraf adalah node yang selalu 'on'. Artinya, nilainya diatur ke tanpa memperhatikan data dalam pola yang diberikan. Ini analog dengan intersep dalam model regresi, dan melayani fungsi yang sama. Jika jaringan saraf tidak memiliki simpul bias dalam lapisan yang diberikan, itu tidak akan dapat menghasilkan output di lapisan berikutnya yang berbeda dari (pada skala linier, atau nilai yang sesuai dengan transformasi ketika melewati fungsi aktivasi) ketika nilai fitur adalah .0 0 01 0 0 0
Pertimbangkan contoh sederhana: Anda memiliki perceptron umpan maju dengan 2 simpul input dan , dan 1 simpul keluaran . dan adalah fitur biner dan ditetapkan pada tingkat referensi mereka, . 2 itu dengan bobot apa pun yang Anda suka, dan , jumlah produk dan berikan melalui fungsi aktivasi apa pun yang Anda inginkan. Tanpa simpul bias, hanya satu nilai output yang mungkin, yang mungkin menghasilkan kecocokan yang sangat buruk. Misalnya, menggunakan fungsi aktivasi logistik, harusx 2 y x 1 x 2 x 1 = x 2 = 0 0 w 1 w 2 y .5x1 x2 y x1 x2 x1=x2=0 0 w1 w2 y .5 , yang akan mengerikan untuk mengklasifikasikan peristiwa langka.
Node bias memberikan fleksibilitas yang cukup besar untuk model jaringan saraf. Dalam contoh yang diberikan di atas, satu-satunya proporsi yang diprediksi mungkin tanpa simpul bias adalah , tetapi dengan simpul bias, setiap proporsi dalam dapat cocok untuk pola di mana . Untuk setiap lapisan, , di mana simpul bias ditambahkan, simpul bias akan menambahkan parameter tambahan / bobot untuk diperkirakan (di mana adalah jumlah node di lapisan( 0 , 1 ) x 1 = x 2 = 0 j N j + 1 N j + 1 j + 150% (0,1) x1=x2=0 j Nj+1 Nj+1 j+1 ). Lebih banyak parameter yang harus dipasang berarti perlu waktu lebih lama secara proporsional bagi jaringan saraf untuk dilatih. Ini juga meningkatkan kemungkinan overfitting, jika Anda tidak memiliki lebih banyak data daripada bobot untuk dipelajari.
Dengan pemahaman ini, kami dapat menjawab pertanyaan eksplisit Anda:
sumber
Sederhana, jawaban singkat:
Dalam beberapa percobaan dalam tesis master saya (misalnya halaman 59), saya menemukan bahwa bias mungkin penting untuk lapisan pertama, tetapi terutama pada lapisan yang sepenuhnya terhubung pada akhirnya tampaknya tidak memainkan peran besar. Karenanya seseorang dapat memilikinya pada beberapa lapisan pertama dan bukan pada yang terakhir. Cukup latih jaringan, plot distribusi bobot node bias dan pangkas jika bobotnya tampaknya terlalu dekat dengan nol.
Ini mungkin sangat tergantung pada arsitektur jaringan / dataset.
sumber
1
nilai konstan pada lapisan sebelumnya dan satu berat (satu nilai bias) untuk masing-masing lapisan neuron berikutnya.Dalam konteks jaringan saraf, Normalisasi Batch saat ini merupakan standar emas untuk membuat "node bias" yang pintar. Alih-alih menjepit nilai bias neuron, Anda malah menyesuaikan kovarians dari input neuron. Jadi dalam CNN, Anda akan menerapkan normalisasi batch hanya antara lapisan konvolusional dan lapisan berikutnya yang terhubung penuh (katakanlah, ReLus). Secara teori, semua lapisan yang terhubung sepenuhnya dapat mengambil manfaat dari Normalisasi Batch tetapi dalam praktiknya menjadi sangat mahal untuk diterapkan karena setiap normalisasi bets membawa parameternya sendiri.
Mengenai alasan itu, sebagian besar jawaban sudah menjelaskan bahwa, khususnya, neuron rentan terhadap gradien jenuh ketika input mendorong aktivasi ke ekstrem. Dalam kasus ReLu ini akan didorong ke kiri, memberikan gradien 0. Secara umum, ketika Anda melatih model, Anda pertama-tama menormalkan input ke jaringan saraf. Batch Normalisasi adalah cara menormalkan input di dalam jaringan saraf, antar lapisan.
sumber