Mengacu pada catatan kursus Stanford tentang Jaringan Syaraf Konvolusional untuk Pengenalan Visual , sebuah paragraf mengatakan:
"Sayangnya, unit ReLU bisa rapuh selama pelatihan dan bisa" mati ". Misalnya, gradien besar yang mengalir melalui neuron ReLU dapat menyebabkan bobot diperbarui sedemikian rupa sehingga neuron tidak akan pernah diaktifkan pada titik data apa pun lagi. Jika ini terjadi, maka gradien yang mengalir melalui unit selamanya akan menjadi nol sejak saat itu. Yaitu, unit ReLU dapat mati secara ireversibel selama pelatihan karena mereka dapat terlempar dari bermacam-macam data. Misalnya, Anda mungkin menemukan bahwa sebanyak 40 % dari jaringan Anda bisa "mati" (yaitu neuron yang tidak pernah diaktifkan di seluruh dataset pelatihan) jika tingkat pembelajaran ditetapkan terlalu tinggi. Dengan pengaturan yang tepat dari tingkat pembelajaran ini jarang menjadi masalah. "
Apa arti sekarat neuron di sini?
Bisakah Anda memberikan penjelasan intuitif dalam istilah yang lebih sederhana.
sumber
Jawaban:
ReLU "mati" selalu menampilkan nilai yang sama (nol seperti yang terjadi, tetapi itu tidak penting) untuk input apa pun. Mungkin ini dapat dicapai dengan mempelajari istilah bias negatif yang besar untuk bobotnya.
Pada gilirannya, itu berarti bahwa tidak ada peran dalam membedakan antara input. Untuk klasifikasi, Anda dapat memvisualisasikan ini sebagai bidang keputusan di luar semua data input yang mungkin.
Setelah ReLU berakhir dalam keadaan ini, tidak mungkin untuk pulih, karena gradien fungsi pada 0 juga 0, sehingga pembelajaran gradient descent tidak akan mengubah bobot. "Leaky" ReLU dengan gradien positif kecil untuk input negatif (
y=0.01x
ketika x <0 katakan) adalah salah satu upaya untuk mengatasi masalah ini dan memberikan peluang untuk pulih.Neuron sigmoid dan tanh dapat mengalami masalah yang sama dengan nilainya yang jenuh, tetapi selalu ada setidaknya gradien kecil yang memungkinkan mereka pulih dalam jangka panjang.
sumber
Mari kita tinjau bagaimana ReLU (Rectified Linear Unit) terlihat seperti:
Input ke penyearah untuk beberapa input adalah untuk bobot , dan aktivasi dari lapisan sebelumnya untuk input tertentu . Fungsi neuron rectifier adalahxn
Dengan asumsi ukuran kesalahan yang sangat sederhana
penyearah hanya memiliki 2 nilai gradien yang mungkin untuk delta algoritma backpropagation: (jika kita menggunakan ukuran kesalahan yang tepat, maka angka 1 akan menjadi sesuatu yang lain, tetapi angka 0 akan tetap sama) dan untuk bobot tertentu :
Satu pertanyaan yang terlintas dalam pikiran adalah bagaimana sebenarnya ReLU bekerja "sama sekali" dengan gradien 0 di sisi kiri. Bagaimana jika, untuk input , bobot saat ini meletakkan ReLU di sisi datar kiri sementara itu secara optimal harus di sisi kanan untuk input khusus ini? Gradiennya 0 dan beratnya tidak akan diperbarui, bahkan sedikit pun, jadi di mana "belajar" dalam kasus ini?= xn
Inti dari jawabannya terletak pada kenyataan bahwa Stochastic Gradient Descent tidak hanya akan mempertimbangkan satu input , tetapi banyak dari mereka, dan harapannya adalah bahwa tidak semua input akan menempatkan ReLU di sisi yang rata, sehingga gradien akan menjadi tidak -zero untuk beberapa input (mungkin + ve atau -ve sekalipun). Jika setidaknya satu input memiliki ReLU kami di sisi yang curam, maka ReLU masih hidup karena masih ada pembelajaran yang sedang berlangsung dan bobot semakin diperbarui untuk neuron ini. Jika semua input menempatkan ReLU pada sisi yang rata, tidak ada harapan bahwa bobot berubah sama sekali dan neuron mati .xn x∗
ReLU mungkin hidup lalu mati karena langkah gradien untuk beberapa bets input yang mendorong bobot ke nilai yang lebih kecil, membuat untuk semua input. Tingkat pembelajaran yang besar memperbesar masalah ini.zn<0
Seperti yang disebutkan @Neil Slater, perbaikannya adalah memodifikasi sisi datar untuk memiliki gradien kecil, sehingga menjadi seperti di bawah ini, yang disebut LeakyReLU.ReLU=max(0.1x,x)
sumber
What if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?
, jika input negatif, gradien akan menjadi 0? apa yang optimal untuk kasus ini? bisakah Anda membantu memahaminya?Neuron ReLU menghasilkan nol dan memiliki turunan nol untuk semua input negatif. Jadi, jika bobot dalam jaringan Anda selalu mengarah ke input negatif ke dalam neuron ReLU, neuron itu secara efektif tidak berkontribusi pada pelatihan jaringan. Secara matematis, kontribusi gradien untuk pembaruan berat yang berasal dari neuron itu selalu nol (lihat Lampiran Matematika untuk beberapa detail).
Berapa kemungkinan bahwa bobot Anda akan menghasilkan angka negatif untuk semua input ke neuron yang diberikan? Sulit untuk menjawab ini secara umum, tetapi salah satu cara di mana ini bisa terjadi adalah ketika Anda membuat pembaruan bobot yang terlalu besar. Ingat bahwa jaringan saraf biasanya dilatih dengan meminimalkan fungsi kehilangan sehubungan dengan bobot menggunakan gradient descent. Yaitu, bobot jaringan saraf adalah "variabel" dari fungsi (kerugian tergantung pada dataset, tetapi hanya secara implisit: biasanya jumlah atas setiap contoh pelatihan, dan masing-masing contoh secara efektif adalah konstanta). Karena gradien dari fungsi apa pun selalu menunjuk ke arah peningkatan paling curam, yang harus kita lakukan adalah menghitung gradienL(W) L L sehubungan dengan bobot dan bergerak ke arah yang berlawanan sedikit, lalu bilas dan ulangi. Dengan begitu, kita berakhir di minimum (lokal) dari . Oleh karena itu, jika input Anda berada pada skala yang kira-kira sama, langkah besar ke arah gradien dapat memberi Anda bobot yang memberikan input serupa yang akhirnya bisa menjadi negatif.W L
Secara umum, apa yang terjadi tergantung pada bagaimana informasi mengalir melalui jaringan. Anda dapat membayangkan bahwa seiring berjalannya pelatihan, nilai-nilai yang dihasilkan neuron dapat melayang dan memungkinkan bobot untuk membunuh semua aliran data melalui beberapa di antaranya. (Kadang-kadang, mereka dapat meninggalkan konfigurasi yang tidak menguntungkan ini karena pembaruan berat sebelumnya di jaringan!). Saya mengeksplorasi ide ini dalam sebuah posting blog tentang inisialisasi bobot - yang juga dapat berkontribusi pada masalah ini - dan hubungannya dengan aliran data. Saya pikir poin saya di sini dapat diilustrasikan oleh plot dari artikel itu:
Plot menampilkan aktivasi dalam Perceptron Multi-Layer 5-lapisan dengan aktivasi ReLU setelah satu kali melewati jaringan dengan berbagai strategi inisialisasi. Anda dapat melihat bahwa tergantung pada konfigurasi berat, output jaringan Anda dapat terhenti.
Lampiran Matematika
Secara matematis jika adalah fungsi kehilangan jaringan Anda, adalah output dari neuron di lapisan ke- , adalah neuron ReLU, dan adalah input linear ke dalam layer , kemudian dengan rantai aturan turunan dari kerugian sehubungan dengan berat yang menghubungkan -th dan - lapisan adalahL x(i)j j i f(s)=max(0,s) s(i)j (i+1) i (i+1)
Istilah pertama di sebelah kanan dapat dihitung secara rekursif. Istilah kedua di sebelah kanan adalah satu-satunya tempat yang secara langsung melibatkan bobot dan dapat dipecah menjadiw(i)jk
Dari sini Anda dapat melihat bahwa jika output selalu negatif, bobot yang mengarah ke neuron tidak diperbarui, dan neuron tidak berkontribusi untuk pembelajaran.
sumber
Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative.
Bagaimana bobot menjadi negatif jika input dinormalisasi?Untuk lebih spesifik dalam bahasa, sedangkan gradien lokal ReLU (yaitu ) melipatgandakan gradien yang mengalir kembali karena propagasi balik, hasil dari gradien yang diperbarui bisa berupa angka negatif yang besar (jika gradien yang mengalir- kembali adalah angka negatif besar).1
Besar gradien diperbarui negatif seperti menghasilkan negatif yang besar ketika tingkat belajar yang relatif besar, maka akan menekan update yang akan terjadi di neuron ini, karena hampir tidak mungkin untuk memasang angka positif yang besar untuk mengimbangi angka negatif besar dibawa oleh yang " rusak " .w iwi wi
sumber
"Dying ReLU" mengacu pada neuron yang menghasilkan 0 untuk data Anda di set pelatihan. Ini terjadi karena jumlah input berat * dalam neuron (juga disebut aktivasi ) menjadi <= 0 untuk semua pola input. Ini menyebabkan ReLU untuk menghasilkan 0. Karena turunan dari ReLU adalah 0 dalam hal ini, tidak ada pembaruan berat yang dibuat dan neuron terjebak pada keluaran 0.
Hal yang perlu diperhatikan:
sumber